Repository navigation
gc 0.3.0: setup openclaw, tasks ask, initiatives create/update, listen --kinds (Phase 0, GC 70fc2610) - #5
Merged
Merged
Conversation
create defaults to visibility public explicitly (the API default has changed before); update takes summary / memory_summary inline or from a file / stdin and never sends the *_updated_at stamps, which the server sets itself. --default-assignee none clears it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n comment
POST /tasks/{id}/asks with the ask as JSON from --body-file (file or
stdin). --to and --content/--content-file override the JSON. Locally
only the shape is checked (an object with a non-empty questions array);
the server validates the rest. A 404 explains that the Desk may be off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Default is unchanged (every array counts). Filtered-out items print nothing, wake nothing and are not counted in GC_LISTEN_COUNT; the cursor still advances on a poll whose items were all filtered out. The help names the OpenClaw worker set (the 9 arrays gc-worker.sh woke for). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…w overlay skills/<name>/SKILL.<agent>.md is embedded next to SKILL.md and installed for that agent under the same skill name. gc skills list shows the variants, --dir --agent <name> picks one. validate-skills.sh, the size cap and the snippet pinning cover the variants too. First version of skills/groundcontrol/SKILL.openclaw.md: gc is preinstalled (only run gc onboarding from a setup prompt), exit 3 is never relayed raw, work rules (assignment = mandate, gc tasks ask instead of a question comment, blocker first), worker runs end with GC_OK, delayed requests via exec → openclaw cron add, details in gc guide openclaw. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e plugin gc setup openclaw is idempotent (--dry-run, --json): it creates only missing crons via openclaw cron add (checked with cron list --all --json, never duplicated), repairs plugin-era messages via cron edit, installs the OpenClaw skill variant, and wires the listener: - gc-worker-spawn (≤1 profile) or gc-worker-spawn-<profile>: disabled, isolated, light context, no delivery, Telegram bound from allowFrom; model and delivery inherited from an existing spawn cron like the plugin's ensureManagedCronsOnce. The German prompt pins gc --profile <p>, carries ZEITVERSETZTE AUFTRÄGE and ends with GC_OK. - gc-journal / gc-initiative-summaries / gc-memory-summaries with gc prompts over every profile; created enabled when gc has a profile, existing ones keep their enabled state. - macOS: ai.groundcontrol.listen LaunchAgent (gc listen --once --all-profiles --kinds <worker set> --exec ~/.openclaw/bin/gc-listen-wake), reloaded only when the plist changed. Container (GC_OPENCLAW_LISTENER=entrypoint): only <config dir>/listen.enabled. Other Linux: a crontab line to add. Guard: while the plugin groundcontrol is still active nothing is set up (exit 0 with a hint). gc setup openclaw-wake is what the wake script runs: gc-worker-spawn-$GC_PROFILE, else gc-worker-spawn. gc onboarding runs the setup when openclaw is present: automatically without a TTY, after y/N on a TTY, --no-openclaw skips it; a failing setup only warns. The snippet checker now accepts leading global flags (gc --profile <p> …), and the cron prompts are pinned like the skills. Tests are hermetic: openclaw and launchctl are the test binary behind symlinks; the e2e runGc points GC_OPENCLAW_BIN nowhere. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ves create/update Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The plugin created gc-journal / gc-*-summaries without a delivery flag (announce/last). Replacing only the message kept that mode, and the gc prompt ends on a GC_OK line — the user would have received "GC_OK" on Telegram every night. Found against a real (isolated) OpenClaw 2026.10.10 gateway; the edit now passes --no-deliver as well. Refs: https://groundcontrol.makerslab.ai/tasks/70fc2610-ed81-46a9-8c47-ad049a4329a3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KWPUqjyxAUS8K14FyVdrQo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the toolkit gaps of the plugin→gc migration, Phase 0 (GC task 70fc2610, parent c680a4fa). The parity check covered plugin 0.9.17 against gc 0.2.0.
Summary
gc initiatives create|update: name, description, color, visibility (create defaults topublic), default assignee (noneclears it),--summary[-file]and--memory-summary[-file]. The nightly summary crons depend on these.gc tasks ask <task-id> --body-file -:POST /tasks/{id}/asks(Desk ask).--toand--content[-file]override the JSON.gc listen --kinds a,b: only these change kinds count and wake. The help documents the plugin's 9-kind "OpenClaw worker set". The cursor still advances when every item is filtered out.gc setup openclaw [--dry-run]is idempotent:gc-worker-spawn, or onegc-worker-spawn-<profile>per profile. Disabled, light-context,--no-deliver, bound to TelegramallowFrom[0]. The model and delivery are inherited from the old spawn cron. The prompt pinsgc --profile <p>, uses its own--cursor-fileand contains ZEITVERSETZTE AUFTRÄGE and the closing GC_OK line.gc-journal,gc-initiative-summariesandgc-memory-summarieswith gc prompts. An existing plugin cron gets the new prompt with delivery off and keeps its enabled state.ai.groundcontrol.listen, runninglisten --once --all-profiles --kinds … --exec ~/.openclaw/bin/gc-listen-wakewithStartInterval300.GC_OPENCLAW_LISTENER=entrypoint): only thelisten.enabledmarker.groundcontrolplugin is active it changes nothing, prints a hint and exits 0.gc setup openclaw-wakeis the Go wake behindgc-listen-wake. Macs have nojq, so the script calls this instead of parsing JSON itself.gc onboardingruns setup whenopenclawis present: automatically without a TTY, after a y/N prompt on a TTY.--no-openclawturns it off. A failed setup never fails the onboarding.skills/groundcontrol/SKILL.openclaw.mdis installed for OpenClaw under the same name. It covers exit 3 never shown to the user, offering setup once, thedeclinedmarker, the work rules, GC_OK and delayed requests. Details are ingc guide openclaw(server PR in MakersLab-ai/groundcontrol).Test plan
go vet ./...,go test -count=1 ./...andscripts/validate-skills.share green. New e2e tests cover initiatives, ask and--kinds. Hermetic setup tests use a fake openclaw/launchctl: fresh host, rerun, inheritance, multi-profile, repair, guard, container, dry-run, wake, and the onboarding paths.--profile gctest, own port and state; the production gateway was not touched):gc-worker-spawn-<p>×2 with the inherited model,telegram:4711and deliverynone, disabled;gc-journal(still disabled, deliverynone);gc-listen-wakewithGC_PROFILE=team-philippran the right spawn cron.announceand would have sent "GC_OK" every night.v0.3.0(goreleaser publishes the tarballs andchecksums.txt), then merge the server PR so the guide names commands that exist.🤖 Generated with Claude Code
https://claude.ai/code/session_01KWPUqjyxAUS8K14FyVdrQo