create-walle 0.10.2 → 0.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/lib/release-schema.json +2 -2
- package/lib/runtime-closure-policy.json +8 -7
- package/package.json +1 -1
- package/template/coding-task-manager/api-prompts.js +45 -7
- package/template/coding-task-manager/bin/claude-hook.js +55 -1
- package/template/coding-task-manager/bin/ctm-relay-client.js +35 -12
- package/template/coding-task-manager/bin/land.js +2069 -0
- package/template/coding-task-manager/bin/memory-census.js +4 -2
- package/template/coding-task-manager/bin/memory-sync-verify.js +151 -0
- package/template/coding-task-manager/bin/probe-refusal-scope.js +530 -0
- package/template/coding-task-manager/db.js +156 -32
- package/template/coding-task-manager/lib/acp/acp-client.js +383 -0
- package/template/coding-task-manager/lib/acp/dsh-context-truth.js +176 -0
- package/template/coding-task-manager/lib/acp/dsh-launch-model.js +302 -0
- package/template/coding-task-manager/lib/acp/dsh-mcp-servers.js +194 -0
- package/template/coding-task-manager/lib/acp/dsh-prompt-lane.js +616 -0
- package/template/coding-task-manager/lib/acp/dsh-route-patch.js +308 -0
- package/template/coding-task-manager/lib/acp/dsh-session-runtime.js +522 -0
- package/template/coding-task-manager/lib/acp/dsh-transcript.js +395 -0
- package/template/coding-task-manager/lib/acp/dsh-usage-log.js +162 -0
- package/template/coding-task-manager/lib/acp/ndjson-stdio-transport.js +225 -0
- package/template/coding-task-manager/lib/adopted-host-redial.js +47 -11
- package/template/coding-task-manager/lib/adopted-launch-environment.js +123 -0
- package/template/coding-task-manager/lib/agent-auto-update-runtime.js +0 -3
- package/template/coding-task-manager/lib/agent-auto-update.js +26 -10
- package/template/coding-task-manager/lib/agent-bundle/build.js +657 -0
- package/template/coding-task-manager/lib/agent-bundle/codex-install.js +558 -0
- package/template/coding-task-manager/lib/agent-bundle/drift.js +120 -0
- package/template/coding-task-manager/lib/agent-bundle/gc.js +522 -0
- package/template/coding-task-manager/lib/agent-bundle/inventory.js +346 -0
- package/template/coding-task-manager/lib/agent-bundle/push.js +717 -0
- package/template/coding-task-manager/lib/agent-bundle/skill-transfer.js +724 -0
- package/template/coding-task-manager/lib/agent-bundle/spawn.js +119 -0
- package/template/coding-task-manager/lib/agent-bundle/store.js +568 -0
- package/template/coding-task-manager/lib/agent-capabilities.js +142 -12
- package/template/coding-task-manager/lib/agent-cli-cache.js +30 -5
- package/template/coding-task-manager/lib/agent-definitions.js +19 -0
- package/template/coding-task-manager/lib/agent-hooks-codex-toml.js +28 -16
- package/template/coding-task-manager/lib/agent-hooks-codex-workspace.js +9 -1
- package/template/coding-task-manager/lib/agent-hooks-installer.js +23 -8
- package/template/coding-task-manager/lib/agent-hooks-prune.js +37 -11
- package/template/coding-task-manager/lib/agent-hooks-shim.js +105 -0
- package/template/coding-task-manager/lib/agent-presets.js +84 -1
- package/template/coding-task-manager/lib/agent-upgrade-jobs.js +12 -1
- package/template/coding-task-manager/lib/agent-version-service.js +74 -11
- package/template/coding-task-manager/lib/all-sessions-query.js +6 -2
- package/template/coding-task-manager/lib/api/agent-bundles.js +436 -0
- package/template/coding-task-manager/lib/api/backup-retention.js +83 -0
- package/template/coding-task-manager/lib/api/conversation-sync-routes.js +124 -0
- package/template/coding-task-manager/lib/api/diagnostics.js +549 -69
- package/template/coding-task-manager/lib/api/fleet.js +118 -0
- package/template/coding-task-manager/lib/api/hub-bridge.js +243 -0
- package/template/coding-task-manager/lib/api/ingress.js +9 -1
- package/template/coding-task-manager/lib/api/landing.js +403 -0
- package/template/coding-task-manager/lib/api/machines.js +691 -2
- package/template/coding-task-manager/lib/api/memory-sync-routes.js +335 -0
- package/template/coding-task-manager/lib/api/misc-ops.js +8 -3
- package/template/coding-task-manager/lib/api/remote-sessions.js +1326 -0
- package/template/coding-task-manager/lib/api/session-attach.js +623 -0
- package/template/coding-task-manager/lib/api/session-messages.js +1384 -0
- package/template/coding-task-manager/lib/api/sessions.js +77 -51
- package/template/coding-task-manager/lib/api/setup-network.js +544 -16
- package/template/coding-task-manager/lib/api/setup-wizard-handlers.js +884 -0
- package/template/coding-task-manager/lib/api/setup.js +829 -10
- package/template/coding-task-manager/lib/api/walle-bridge.js +9 -1
- package/template/coding-task-manager/lib/attachment-reconciler-wiring.js +5 -2
- package/template/coding-task-manager/lib/auth-rate-limit.js +23 -0
- package/template/coding-task-manager/lib/auth-rules.js +292 -21
- package/template/coding-task-manager/lib/background-stop.js +369 -0
- package/template/coding-task-manager/lib/best-of-attempts.js +4 -1
- package/template/coding-task-manager/lib/best-of-launch-plan.js +52 -0
- package/template/coding-task-manager/lib/box-keep-awake.js +89 -0
- package/template/coding-task-manager/lib/broadcast-reason-stats.js +152 -0
- package/template/coding-task-manager/lib/broadcast-serialize.js +5 -0
- package/template/coding-task-manager/lib/build-info.js +4 -2
- package/template/coding-task-manager/lib/claude-model-truth.js +13 -2
- package/template/coding-task-manager/lib/claude-transcript-terminal-renderer.js +17 -13
- package/template/coding-task-manager/lib/client-diag-handler.js +64 -2
- package/template/coding-task-manager/lib/codex-app-server-client.js +14 -16
- package/template/coding-task-manager/lib/codex-configuration-history.js +55 -0
- package/template/coding-task-manager/lib/codex-harness-qualification.js +43 -20
- package/template/coding-task-manager/lib/codex-rollout-history.js +743 -0
- package/template/coding-task-manager/lib/coding-agent-models.js +27 -12
- package/template/coding-task-manager/lib/coding-cli-skill-installer.js +44 -14
- package/template/coding-task-manager/lib/coding-session-model-adapters.js +43 -2
- package/template/coding-task-manager/lib/coding-session-model-owner.js +1 -1
- package/template/coding-task-manager/lib/coding-session-model-public.js +7 -1
- package/template/coding-task-manager/lib/coding-session-model-runtime.js +23 -4
- package/template/coding-task-manager/lib/coding-session-model-scan.js +31 -0
- package/template/coding-task-manager/lib/coding-session-model-state.js +7 -0
- package/template/coding-task-manager/lib/conversation-freshness-diagnostics.js +280 -0
- package/template/coding-task-manager/lib/conversation-item-clock.js +261 -0
- package/template/coding-task-manager/lib/conversation-source-registry.js +5 -0
- package/template/coding-task-manager/lib/conversation-store-v2.js +44 -0
- package/template/coding-task-manager/lib/conversation-sync.js +355 -0
- package/template/coding-task-manager/lib/create/resolve-launch-params.js +96 -12
- package/template/coding-task-manager/lib/create/worker-role-profile.js +4 -4
- package/template/coding-task-manager/lib/create-intent-lease.js +51 -0
- package/template/coding-task-manager/lib/ctm-session-context-api.js +97 -6
- package/template/coding-task-manager/lib/db-domain-tables.js +1 -0
- package/template/coding-task-manager/lib/db-domains.js +1 -0
- package/template/coding-task-manager/lib/db-owner-dispatch-probe.js +32 -0
- package/template/coding-task-manager/lib/db-owner-request-counts.js +178 -0
- package/template/coding-task-manager/lib/db-owner-worker-client.js +68 -14
- package/template/coding-task-manager/lib/db-schema-source-files.js +5 -0
- package/template/coding-task-manager/lib/deferred-restore-attempt.js +6 -2
- package/template/coding-task-manager/lib/feature-manifest.js +4 -0
- package/template/coding-task-manager/lib/fleet-conversation-route.js +97 -0
- package/template/coding-task-manager/lib/fleet-fanout.js +78 -0
- package/template/coding-task-manager/lib/fleet-hub.js +762 -0
- package/template/coding-task-manager/lib/fleet-origin-follower.js +252 -0
- package/template/coding-task-manager/lib/fleet-resolver-effects.js +147 -0
- package/template/coding-task-manager/lib/fleet-resolver-tick.js +148 -0
- package/template/coding-task-manager/lib/fleet-resolver.js +454 -0
- package/template/coding-task-manager/lib/fleet-session-list-routes.js +114 -0
- package/template/coding-task-manager/lib/fleet-session-lists.js +672 -0
- package/template/coding-task-manager/lib/fleet-update.js +798 -0
- package/template/coding-task-manager/lib/fs-watcher-root-watch.js +141 -0
- package/template/coding-task-manager/lib/fs-watcher.js +58 -42
- package/template/coding-task-manager/lib/harness-history-transition.js +50 -9
- package/template/coding-task-manager/lib/headless-term-service.js +84 -8
- package/template/coding-task-manager/lib/hermetic-agent-launch-guard.js +10 -0
- package/template/coding-task-manager/lib/history-transition-read-op.js +175 -8
- package/template/coding-task-manager/lib/host-cpu-categories.js +310 -0
- package/template/coding-task-manager/lib/host-fseventsd-sampler.js +399 -0
- package/template/coding-task-manager/lib/host-handoff.js +16 -19
- package/template/coding-task-manager/lib/host-stats.js +150 -3
- package/template/coding-task-manager/lib/hosted-sync-worker.js +43 -320
- package/template/coding-task-manager/lib/hub-bridge-access.js +798 -0
- package/template/coding-task-manager/lib/hub-bridge-box.js +409 -0
- package/template/coding-task-manager/lib/hub-bridge-mcp.js +380 -0
- package/template/coding-task-manager/lib/hub-bridge-mesh.js +313 -0
- package/template/coding-task-manager/lib/hub-bridge-ops.js +721 -0
- package/template/coding-task-manager/lib/hub-bridge.js +398 -0
- package/template/coding-task-manager/lib/idle-notify.js +491 -0
- package/template/coding-task-manager/lib/instance-id-ownership-manifest.js +8 -0
- package/template/coding-task-manager/lib/instance-manifest.js +5 -1
- package/template/coding-task-manager/lib/instance-sync-status.js +18 -8
- package/template/coding-task-manager/lib/landing/agent-rule.txt +1 -0
- package/template/coding-task-manager/lib/landing/batch-runner.js +366 -0
- package/template/coding-task-manager/lib/landing/config.js +536 -0
- package/template/coding-task-manager/lib/landing/ctm-view.js +256 -0
- package/template/coding-task-manager/lib/landing/gate.js +360 -0
- package/template/coding-task-manager/lib/landing/git.js +344 -0
- package/template/coding-task-manager/lib/landing/lease.js +247 -0
- package/template/coding-task-manager/lib/landing/merge-delta.js +380 -0
- package/template/coding-task-manager/lib/landing/proof.js +223 -0
- package/template/coding-task-manager/lib/landing/queue.js +998 -0
- package/template/coding-task-manager/lib/landing/radar.js +489 -0
- package/template/coding-task-manager/lib/landing/resolve-cli.js +424 -0
- package/template/coding-task-manager/lib/landing/state.js +263 -0
- package/template/coding-task-manager/lib/landing/stop.js +49 -0
- package/template/coding-task-manager/lib/landing/sync-cli.js +475 -0
- package/template/coding-task-manager/lib/landing/sync.js +456 -0
- package/template/coding-task-manager/lib/landing/train.js +885 -0
- package/template/coding-task-manager/lib/landing/window.js +57 -0
- package/template/coding-task-manager/lib/launch-environment.js +121 -0
- package/template/coding-task-manager/lib/launch-model-override.js +36 -10
- package/template/coding-task-manager/lib/launch-plan-pool.js +2 -1
- package/template/coding-task-manager/lib/launch-plan-warm-cache.js +6 -0
- package/template/coding-task-manager/lib/lead-model-observer.js +57 -1
- package/template/coding-task-manager/lib/lead-model-options.js +160 -3
- package/template/coding-task-manager/lib/lead-model-restore-reconciliation.js +106 -24
- package/template/coding-task-manager/lib/lead-model-switch-runtime.js +352 -68
- package/template/coding-task-manager/lib/lead-model-switch.js +114 -10
- package/template/coding-task-manager/lib/lead-model-transition-runtime.js +14 -2
- package/template/coding-task-manager/lib/lead-model-transition-store.js +24 -6
- package/template/coding-task-manager/lib/lead-route-preflight.js +179 -0
- package/template/coding-task-manager/lib/lead-switch-history-mode.js +110 -0
- package/template/coding-task-manager/lib/lead-wire-agent.js +7 -0
- package/template/coding-task-manager/lib/lifecycle-wake-experiment.js +9 -2
- package/template/coding-task-manager/lib/live-defer-announce.js +45 -0
- package/template/coding-task-manager/lib/machine-registry.js +750 -5
- package/template/coding-task-manager/lib/macos-capabilities.js +32 -15
- package/template/coding-task-manager/lib/main-thread-lint-exemptions.json +433 -53
- package/template/coding-task-manager/lib/mainloop-observability.js +14 -9
- package/template/coding-task-manager/lib/media-draft-owner.js +16 -3
- package/template/coding-task-manager/lib/memory-join.js +337 -0
- package/template/coding-task-manager/lib/memory-sync-verify.js +393 -0
- package/template/coding-task-manager/lib/memory-sync.js +565 -0
- package/template/coding-task-manager/lib/migrations/v57-delegate-pref-mirror-opencode.js +68 -0
- package/template/coding-task-manager/lib/migrations/v58-subagent-launch-native-subagents.js +42 -0
- package/template/coding-task-manager/lib/migrations/v59-coding-session-model-state-dsh.js +73 -0
- package/template/coding-task-manager/lib/migrations/v60-delegate-pref-mirror-dsh.js +78 -0
- package/template/coding-task-manager/lib/migrations/v61-conversation-item-clock.js +71 -0
- package/template/coding-task-manager/lib/model-availability.js +727 -0
- package/template/coding-task-manager/lib/model-execution-recipe-metadata.js +4 -6
- package/template/coding-task-manager/lib/model-host-receipt.js +6 -3
- package/template/coding-task-manager/lib/model-id-rule.js +19 -0
- package/template/coding-task-manager/lib/model-proxy/anthropic-face.js +4 -0
- package/template/coding-task-manager/lib/model-proxy/auto-mode-review.js +110 -23
- package/template/coding-task-manager/lib/model-proxy/chat-response-translators.js +3 -0
- package/template/coding-task-manager/lib/model-proxy/generation-probe.js +60 -17
- package/template/coding-task-manager/lib/model-proxy/historical-tool-declarations.js +37 -0
- package/template/coding-task-manager/lib/model-proxy/lead-request-validation.js +1 -0
- package/template/coding-task-manager/lib/model-proxy/lead-token-admin.js +130 -0
- package/template/coding-task-manager/lib/model-proxy/refusal-scope.js +151 -0
- package/template/coding-task-manager/lib/model-proxy/request-budget-store.js +11 -2
- package/template/coding-task-manager/lib/model-proxy/tokens.js +69 -5
- package/template/coding-task-manager/lib/model-proxy/upstream-outcome.js +9 -0
- package/template/coding-task-manager/lib/native-agent-model-args.js +25 -22
- package/template/coding-task-manager/lib/native-history-control.js +6 -4
- package/template/coding-task-manager/lib/native-lead-settings-client.js +44 -4
- package/template/coding-task-manager/lib/oauth-proxy-supervisor.js +173 -36
- package/template/coding-task-manager/lib/online-backup-worker-client.js +2 -0
- package/template/coding-task-manager/lib/opencode-cli.js +480 -0
- package/template/coding-task-manager/lib/opencode-launch-model.js +471 -0
- package/template/coding-task-manager/lib/opencode-v1-plugin/model-carrier.mjs +35 -0
- package/template/coding-task-manager/lib/opencode-v2-plugin/server.js +118 -0
- package/template/coding-task-manager/lib/owner-action-manifest-data.json +1 -1
- package/template/coding-task-manager/lib/park-composer-draft.js +54 -0
- package/template/coding-task-manager/lib/park-fresh-relaunch.js +41 -10
- package/template/coding-task-manager/lib/perf-phase-trace.js +72 -0
- package/template/coding-task-manager/lib/perf-summary.js +7 -0
- package/template/coding-task-manager/lib/perf-tracker.js +63 -2
- package/template/coding-task-manager/lib/project-config.js +7 -0
- package/template/coding-task-manager/lib/prompt-purge-v2.js +52 -1
- package/template/coding-task-manager/lib/provider-login-broker.js +72 -15
- package/template/coding-task-manager/lib/provider-login-tab.js +10 -2
- package/template/coding-task-manager/lib/read-pool-client.js +89 -2
- package/template/coding-task-manager/lib/read-pool-worker-handle.js +29 -4
- package/template/coding-task-manager/lib/recent-catalog-query.js +15 -0
- package/template/coding-task-manager/lib/recent-session-catalog-response.js +67 -10
- package/template/coding-task-manager/lib/recovery-evidence.js +26 -11
- package/template/coding-task-manager/lib/relay-client.js +57 -3
- package/template/coding-task-manager/lib/relink-audit.js +34 -5
- package/template/coding-task-manager/lib/remote-machine-catalog.js +321 -26
- package/template/coding-task-manager/lib/remote-machine-create.js +576 -36
- package/template/coding-task-manager/lib/remote-machine-link.js +546 -59
- package/template/coding-task-manager/lib/remote-machine-proxy.js +143 -9
- package/template/coding-task-manager/lib/remote-session-forward.js +65 -7
- package/template/coding-task-manager/lib/remote-terminal-target.js +9 -2
- package/template/coding-task-manager/lib/restart-guard.js +18 -6
- package/template/coding-task-manager/lib/restore-seed-modes.js +87 -0
- package/template/coding-task-manager/lib/restored-scrollback-hydration-runtime.js +22 -2
- package/template/coding-task-manager/lib/resume-admission.js +17 -3
- package/template/coding-task-manager/lib/review-repo-registry.js +58 -19
- package/template/coding-task-manager/lib/root-delivery-runtime.js +2 -2
- package/template/coding-task-manager/lib/root-prompt-flow.js +1 -1
- package/template/coding-task-manager/lib/runtime-contract.js +3 -1
- package/template/coding-task-manager/lib/schema-indexes.js +1 -0
- package/template/coding-task-manager/lib/session-context-locator.js +742 -0
- package/template/coding-task-manager/lib/session-create/attachment.js +2 -2
- package/template/coding-task-manager/lib/session-create/create-phases.js +118 -0
- package/template/coding-task-manager/lib/session-create/delegate-worker.js +86 -16
- package/template/coding-task-manager/lib/session-create/dsh-session.js +930 -0
- package/template/coding-task-manager/lib/session-create/lead-route-launch.js +186 -13
- package/template/coding-task-manager/lib/session-create/native-lead-lifetime.js +55 -3
- package/template/coding-task-manager/lib/session-create/opencode-lead-provider.js +50 -0
- package/template/coding-task-manager/lib/session-create/prepared.js +162 -38
- package/template/coding-task-manager/lib/session-create/provider-process.js +160 -28
- package/template/coding-task-manager/lib/session-create/response.js +7 -7
- package/template/coding-task-manager/lib/session-create/structured-session.js +27 -0
- package/template/coding-task-manager/lib/session-create/subagent-pick-table.js +3 -1
- package/template/coding-task-manager/lib/session-create/subagent-pick.js +458 -9
- package/template/coding-task-manager/lib/session-create/transcript.js +1 -1
- package/template/coding-task-manager/lib/session-create/worker-budget-setup.js +21 -2
- package/template/coding-task-manager/lib/session-create/worker-continuation.js +7 -1
- package/template/coding-task-manager/lib/session-create/worker-launch-sandbox.js +39 -10
- package/template/coding-task-manager/lib/session-create/worker-observability.js +2 -2
- package/template/coding-task-manager/lib/session-empty.js +13 -10
- package/template/coding-task-manager/lib/session-host-manager.js +60 -0
- package/template/coding-task-manager/lib/session-jobs.js +3 -1
- package/template/coding-task-manager/lib/session-lifecycle.js +10 -4
- package/template/coding-task-manager/lib/session-model-action-preconditions.js +6 -2
- package/template/coding-task-manager/lib/session-model-intent-contract.js +11 -8
- package/template/coding-task-manager/lib/session-park.js +738 -0
- package/template/coding-task-manager/lib/session-path-grant.js +13 -4
- package/template/coding-task-manager/lib/session-status-ledger.js +106 -4
- package/template/coding-task-manager/lib/session-transport.js +17 -0
- package/template/coding-task-manager/lib/session-workspace-projection.js +54 -5
- package/template/coding-task-manager/lib/session-workspace-tracking-runtime.js +213 -1
- package/template/coding-task-manager/lib/skill-autocomplete-query.js +120 -3
- package/template/coding-task-manager/lib/skill-autocomplete.js +15 -1
- package/template/coding-task-manager/lib/sqlite-file-set.js +39 -0
- package/template/coding-task-manager/lib/standup-search-adapter.js +16 -2
- package/template/coding-task-manager/lib/state-sync/client-ledger.js +12 -0
- package/template/coding-task-manager/lib/state-sync/frame-emitter.js +319 -100
- package/template/coding-task-manager/lib/storage/coding-session-model-store.js +4 -1
- package/template/coding-task-manager/lib/storage/delegate-pref-mirror-store.js +32 -9
- package/template/coding-task-manager/lib/structured-session-boot-sweep.js +235 -0
- package/template/coding-task-manager/lib/submission-ack.js +90 -2
- package/template/coding-task-manager/lib/systemd-scope.js +115 -0
- package/template/coding-task-manager/lib/telemetry-receiver.js +39 -0
- package/template/coding-task-manager/lib/terminal-attach-geometry.js +985 -0
- package/template/coding-task-manager/lib/terminal-bootstrap.js +30 -0
- package/template/coding-task-manager/lib/terminal-draft-operation.js +357 -0
- package/template/coding-task-manager/lib/terminal-input-admission.js +17 -1
- package/template/coding-task-manager/lib/terminal-input-prepared.js +563 -0
- package/template/coding-task-manager/lib/transcript-cache-temps.js +171 -0
- package/template/coding-task-manager/lib/transcript-frame-cache.js +8 -3
- package/template/coding-task-manager/lib/transcript-source.js +36 -4
- package/template/coding-task-manager/lib/transcript-store.js +9 -0
- package/template/coding-task-manager/lib/typing-interaction-trace.js +106 -3
- package/template/coding-task-manager/lib/usage-ledger/backfill.js +40 -5
- package/template/coding-task-manager/lib/usage-ledger/client.js +4 -1
- package/template/coding-task-manager/lib/usage-ledger/dsh-parse.js +152 -0
- package/template/coding-task-manager/lib/usage-ledger/dsh-read.js +73 -0
- package/template/coding-task-manager/lib/usage-ledger/ingest.js +34 -6
- package/template/coding-task-manager/lib/usage-ledger/live.js +35 -8
- package/template/coding-task-manager/lib/usage-ledger/read.js +29 -20
- package/template/coding-task-manager/lib/usage-ledger/schema.js +61 -1
- package/template/coding-task-manager/lib/usage-ledger/task-coordinator.js +4 -2
- package/template/coding-task-manager/lib/wake-skip-reasons.js +1 -0
- package/template/coding-task-manager/lib/walle/turn.js +1 -1
- package/template/coding-task-manager/lib/walle-history-serve.js +838 -0
- package/template/coding-task-manager/lib/walle-kill-authority.js +2 -2
- package/template/coding-task-manager/lib/walle-log-rotation.js +164 -1
- package/template/coding-task-manager/lib/walle-mcp-auto-config.js +56 -2
- package/template/coding-task-manager/lib/walle-row-history.js +495 -0
- package/template/coding-task-manager/lib/walle-supervisor.js +33 -14
- package/template/coding-task-manager/lib/watch-worker-client.js +203 -0
- package/template/coding-task-manager/lib/worker-terminal-output.js +5 -2
- package/template/coding-task-manager/lib/ws/hub-bridge.js +35 -0
- package/template/coding-task-manager/lib/ws/lifecycle.js +6 -11
- package/template/coding-task-manager/lib/ws/misc.js +1 -1
- package/template/coding-task-manager/lib/ws/state-sync.js +106 -4
- package/template/coding-task-manager/lib/ws/terminal-attach.js +91 -0
- package/template/coding-task-manager/oauth-proxy.js +112 -115
- package/template/coding-task-manager/package-lock.json +10 -94
- package/template/coding-task-manager/package.json +4 -3
- package/template/coding-task-manager/protocol/message-table.json +10 -0
- package/template/coding-task-manager/protocol/messages.js +10 -0
- package/template/coding-task-manager/protocol/ws-schema.json +20 -0
- package/template/coding-task-manager/protocol/ws-schema.md +2 -0
- package/template/coding-task-manager/public/css/app.css +170 -0
- package/template/coding-task-manager/public/css/walle-session.css +4 -0
- package/template/coding-task-manager/public/index.html +473 -243
- package/template/coding-task-manager/public/js/agent-command.js +86 -0
- package/template/coding-task-manager/public/js/app/backups-panel.js +111 -5
- package/template/coding-task-manager/public/js/app/coding-agent-upgrade.js +103 -4
- package/template/coding-task-manager/public/js/app/machines-page.js +1328 -8
- package/template/coding-task-manager/public/js/app/models-tab.js +113 -38
- package/template/coding-task-manager/public/js/app/restart-banner.js +53 -0
- package/template/coding-task-manager/public/js/app/worktrees-panel.js +184 -2
- package/template/coding-task-manager/public/js/background-work.js +196 -27
- package/template/coding-task-manager/public/js/coding-session-model-presentation.js +138 -10
- package/template/coding-task-manager/public/js/core/active-session-groups.js +179 -0
- package/template/coding-task-manager/public/js/core/pending-create.js +238 -0
- package/template/coding-task-manager/public/js/core/recent-machine-source.js +228 -0
- package/template/coding-task-manager/public/js/core/session-commands.js +180 -14
- package/template/coding-task-manager/public/js/dashboard-client-function-order.json +8 -0
- package/template/coding-task-manager/public/js/document-review-links.js +9 -1
- package/template/coding-task-manager/public/js/file-resolution-client.js +52 -1
- package/template/coding-task-manager/public/js/history-app-seam.js +22 -2
- package/template/coding-task-manager/public/js/machine-pool-shared.js +558 -3
- package/template/coding-task-manager/public/js/message-renderer.js +4 -3
- package/template/coding-task-manager/public/js/model-picker.js +3 -1
- package/template/coding-task-manager/public/js/native-subagent-review.js +15 -2
- package/template/coding-task-manager/public/js/new-session-agent-grid.js +346 -0
- package/template/coding-task-manager/public/js/pasted-content.js +236 -0
- package/template/coding-task-manager/public/js/pe-private-content-lifetime.js +39 -7
- package/template/coding-task-manager/public/js/private-model-lifetime.js +6 -2
- package/template/coding-task-manager/public/js/prompts.js +11 -10
- package/template/coding-task-manager/public/js/protocol.js +10 -0
- package/template/coding-task-manager/public/js/restart-banner-policy.js +29 -1
- package/template/coding-task-manager/public/js/session-model-picker.js +447 -57
- package/template/coding-task-manager/public/js/session-search-utils.js +18 -2
- package/template/coding-task-manager/public/js/session-usage-view.js +2 -1
- package/template/coding-task-manager/public/js/session-workspace-tracking.js +51 -1
- package/template/coding-task-manager/public/js/state-sync-client.js +10 -1
- package/template/coding-task-manager/public/js/stream-view.js +6 -5
- package/template/coding-task-manager/public/js/terminal/conv-only-session.js +287 -0
- package/template/coding-task-manager/public/js/terminal/runtime-09.js +2 -0
- package/template/coding-task-manager/public/js/terminal/runtime-10.js +5 -5
- package/template/coding-task-manager/public/js/terminal/runtime-12.js +8 -1
- package/template/coding-task-manager/public/js/terminal/runtime-16.js +4 -0
- package/template/coding-task-manager/public/js/terminal/runtime-20.js +1 -1
- package/template/coding-task-manager/public/js/terminal-attachment-draft.js +67 -13
- package/template/coding-task-manager/public/js/terminal-image-orchestration.js +52 -6
- package/template/coding-task-manager/public/js/terminal-wheel.js +23 -3
- package/template/coding-task-manager/public/js/walle/chat-conversation.js +4 -4
- package/template/coding-task-manager/public/js/walle.js +6 -0
- package/template/coding-task-manager/public/js/ws/live-dispatch.js +10 -0
- package/template/coding-task-manager/public/m/app.css +140 -0
- package/template/coding-task-manager/public/m/app.js +507 -68
- package/template/coding-task-manager/public/m/index.html +17 -0
- package/template/coding-task-manager/public/m/machines.js +838 -4
- package/template/coding-task-manager/public/m/private-api.js +31 -1
- package/template/coding-task-manager/public/usage.html +1 -0
- package/template/coding-task-manager/scripts/dev-route-fixture/synthetic-route-upstream.js +104 -0
- package/template/coding-task-manager/scripts/dev-route-fixture.js +339 -0
- package/template/coding-task-manager/scripts/opencode-lead-route-probe.js +195 -0
- package/template/coding-task-manager/scripts/opencode-v2-contract-probe/fake-anthropic.js +168 -0
- package/template/coding-task-manager/scripts/opencode-v2-contract-probe/probe-plugin/server.js +95 -0
- package/template/coding-task-manager/scripts/opencode-v2-contract-probe.js +673 -0
- package/template/coding-task-manager/server.js +1950 -11679
- package/template/coding-task-manager/session-integrity.js +64 -4
- package/template/coding-task-manager/workers/db-owner-worker.js +19 -2
- package/template/coding-task-manager/workers/online-backup-worker.js +1 -0
- package/template/coding-task-manager/workers/read-pool-model-collector.js +51 -3
- package/template/coding-task-manager/workers/read-pool-worker.js +76 -6
- package/template/coding-task-manager/workers/session-host-pool-process.js +6 -6
- package/template/coding-task-manager/workers/session-host-process.js +5 -5
- package/template/coding-task-manager/workers/watch-worker.js +105 -0
- package/template/coding-task-manager/workers/worktree-worker.js +168 -33
- package/template/ctm-relay/lib/protocol.js +14 -1
- package/template/package-lock.json +2 -2
- package/template/package.json +1 -1
- package/template/shared/backup-retention.js +82 -0
- package/template/shared/conversation-admission.js +2 -0
- package/template/shared/conversation-provenance.js +3 -7
- package/template/shared/conversation-storage-v2-contract.js +5 -0
- package/template/shared/linked-worktree.js +51 -0
- package/template/shared/macos-fda-target.js +57 -0
- package/template/shared/orphan-parents.js +55 -0
- package/template/shared/release-schema.json +2 -2
- package/template/shared/storage/contract.js +3 -0
- package/template/wall-e/adapters/imessage.js +12 -0
- package/template/wall-e/agent.js +71 -4
- package/template/wall-e/api-walle.js +21 -1
- package/template/wall-e/bin/train-gemma-e4b-tooluse.js +2 -2
- package/template/wall-e/bin/walle-mcp-stdio.js +5 -5
- package/template/wall-e/brain/brain-join.js +859 -0
- package/template/wall-e/brain/brain-sync-membership.js +20 -0
- package/template/wall-e/brain/brain-sync-store.js +131 -77
- package/template/wall-e/brain/brain-sync-v2-schema.js +203 -0
- package/template/wall-e/brain/brain-sync-v2.js +578 -0
- package/template/wall-e/brain/delegate-model-prefs-store.js +13 -4
- package/template/wall-e/brain/deterministic-id.js +51 -0
- package/template/wall-e/brain/memories.js +2 -2
- package/template/wall-e/brain/migrations.js +40 -6
- package/template/wall-e/brain/model-identity-migration.js +1 -1
- package/template/wall-e/brain/owner-call-whitelist.js +23 -7
- package/template/wall-e/brain/schema.js +45 -85
- package/template/wall-e/brain.js +171 -35
- package/template/wall-e/chat.js +3 -3
- package/template/wall-e/coding/agent-shell-env.js +7 -2
- package/template/wall-e/coding/prompt-bundle.js +66 -21
- package/template/wall-e/config/main-loop-exemptions.json +2 -2
- package/template/wall-e/http/admin-api.js +37 -0
- package/template/wall-e/http/gws-api.js +4 -0
- package/template/wall-e/http/helper-rules-api.js +7 -1
- package/template/wall-e/http/model-admin.js +8 -1
- package/template/wall-e/http/model-delegate-pref-admin.js +3 -3
- package/template/wall-e/http/model-proxy-providers.js +174 -1
- package/template/wall-e/http/model-route-health.js +157 -0
- package/template/wall-e/http/sync-api.js +278 -464
- package/template/wall-e/jobs/job-runner.js +28 -1
- package/template/wall-e/lib/brain-owner-op-priority.js +9 -1
- package/template/wall-e/lib/ctm-data-dir.js +26 -0
- package/template/wall-e/lib/derivation-home.js +147 -0
- package/template/wall-e/lib/helper-rules/evaluate.js +50 -9
- package/template/wall-e/lib/helper-rules/grade.js +51 -8
- package/template/wall-e/lib/helper-rules/lead-call-hook.js +38 -5
- package/template/wall-e/lib/helper-rules/store.js +4 -2
- package/template/wall-e/lib/landing-mcp-tools.js +170 -0
- package/template/wall-e/lib/mcp-client-config.js +133 -14
- package/template/wall-e/lib/mcp-gateway-migrate.js +28 -64
- package/template/wall-e/lib/mcp-integration.js +58 -13
- package/template/wall-e/lib/parent-death.js +7 -1
- package/template/wall-e/lib/scheduler-worker-jobs.js +6 -4
- package/template/wall-e/llm/delegate-lead-prefs.js +16 -1
- package/template/wall-e/llm/delegate-vendor-default.js +12 -5
- package/template/wall-e/llm/model-roles.js +1 -1
- package/template/wall-e/llm/native-delegate-selection.js +56 -8
- package/template/wall-e/llm/worker-delegate-args.js +72 -7
- package/template/wall-e/llm/worker-mcp-routing.js +66 -17
- package/template/wall-e/loops/brain-custom-writes.js +19 -0
- package/template/wall-e/loops/ingest.js +17 -1
- package/template/wall-e/loops/think.js +19 -4
- package/template/wall-e/mcp-contract.js +222 -6
- package/template/wall-e/mcp-protocol-contract.js +40 -5
- package/template/wall-e/mcp-server.js +128 -29
- package/template/wall-e/mcp-worker-schemas.js +5 -5
- package/template/wall-e/memory/ctm-context-client.js +85 -0
- package/template/wall-e/memory/ctm-session-context.js +9 -3
- package/template/wall-e/memory/hub-bridge-client.js +388 -0
- package/template/wall-e/memory/replica-origin.js +56 -0
- package/template/wall-e/memory/session-pool.js +135 -0
- package/template/wall-e/runtime/live-capabilities.js +8 -3
- package/template/wall-e/server.js +4 -2
- package/template/wall-e/shared/release-schema.json +2 -2
- package/template/wall-e/shared/sqlite-file-set.js +39 -0
- package/template/wall-e/shared/storage/contract.js +3 -0
- package/template/wall-e/skills/_templates/delegate-worker/VERSION +1 -1
- package/template/wall-e/skills/_templates/delegate-worker/released-sha256.json +7 -1
- package/template/wall-e/skills/_templates/delegate-worker/templates/claude/SKILL.md +4 -4
- package/template/wall-e/skills/_templates/delegate-worker/templates/codex/SKILL.md +6 -6
- package/template/wall-e/skills/_templates/fleet-sync/VERSION +1 -0
- package/template/wall-e/skills/_templates/fleet-sync/released-sha256.json +16 -0
- package/template/wall-e/skills/_templates/fleet-sync/templates/claude/SKILL.md +64 -0
- package/template/wall-e/skills/_templates/fleet-sync/templates/codex/SKILL.md +64 -0
- package/template/wall-e/tools/chrome-automation.js +6 -0
- package/template/wall-e/training/setup-cuda-train-env.sh +2 -2
- package/template/wall-e/workers/brain-owner-worker.js +18 -4
- package/template/wall-e/workers/mcp-gateway-process.js +5 -5
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// One SQLite database file is really a SET: the base file plus the sidecars SQLite creates
|
|
4
|
+
// beside it — a rollback journal (`-journal`) or, in WAL mode, `-wal` + `-shm`. A write that
|
|
5
|
+
// dies partway (ENOSPC, a terminated process, a failed online backup) can strand ANY of them,
|
|
6
|
+
// and a stray sidecar is worse than useless: a `-wal` with no base, or a base with a stale
|
|
7
|
+
// `-wal`, is garbage no reader can recover.
|
|
8
|
+
//
|
|
9
|
+
// Canonical: coding-task-manager/lib/sqlite-file-set.js — byte-identical copy at
|
|
10
|
+
// wall-e/shared/sqlite-file-set.js. Two copies because a standalone Wall-E install has no CTM
|
|
11
|
+
// checkout (wall-e/agent.js loads CTM libs only as optional), so each package requires its own;
|
|
12
|
+
// tests/sqlite-file-set-parity.test.js fails the moment the two drift.
|
|
13
|
+
//
|
|
14
|
+
// Design: coding-task-manager/docs/temp-file-leaks-disk-full-2026-10-25.html §5 D-5.
|
|
15
|
+
|
|
16
|
+
/** The base name plus every sidecar of one SQLite database file, in unlink order. */
|
|
17
|
+
const SQLITE_SIDECARS = Object.freeze(['', '-journal', '-wal', '-shm']);
|
|
18
|
+
|
|
19
|
+
/** Unlink `p` and each SQLite sidecar of `p` (`-journal`, `-wal`, `-shm`).
|
|
20
|
+
* ENOENT is the normal case — a sidecar only exists while a writer holds it — and is ignored;
|
|
21
|
+
* any other failure (EACCES, EISDIR, EPERM, …) is rethrown rather than swallowed, because a
|
|
22
|
+
* file set that survived cleanup is exactly the disk leak this helper exists to prevent.
|
|
23
|
+
* Returns the number of files actually removed. */
|
|
24
|
+
function removeSqliteFileSet(p, fsModule = require('fs')) {
|
|
25
|
+
if (!p) return 0;
|
|
26
|
+
let removed = 0;
|
|
27
|
+
for (const suffix of SQLITE_SIDECARS) {
|
|
28
|
+
try {
|
|
29
|
+
fsModule.unlinkSync(`${p}${suffix}`);
|
|
30
|
+
removed += 1;
|
|
31
|
+
} catch (err) {
|
|
32
|
+
if (err && err.code === 'ENOENT') continue; // HANDLE: sidecar absent — nothing to reclaim
|
|
33
|
+
throw err; // RETHROW: a real unlink failure must not be swallowed
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return removed;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
module.exports = { SQLITE_SIDECARS, removeSqliteFileSet };
|
|
@@ -783,6 +783,9 @@ const OP_META = {
|
|
|
783
783
|
recordResumeLineage: { kind: 'write', equality: 'exact', domain: 'firehose', tables: ['session_resume_lineage'] },
|
|
784
784
|
// WP-0 change feed: the ACK is a write on the firehose file (db.js:19895).
|
|
785
785
|
ackConversationChanges: { kind: 'write', equality: 'exact', domain: 'firehose', tables: ['conversation_projection_outbox_v2', 'conversation_projection_deletes_v2'] },
|
|
786
|
+
conversationSyncVector: { kind: 'write', equality: 'exact', domain: 'firehose', tables: ['conversation_item_clock', 'conversation_vv', 'conversation_local_seq'] },
|
|
787
|
+
conversationSyncChanges: { kind: 'write', equality: 'exact', domain: 'firehose', tables: ['conversation_item_clock', 'conversation_vv', 'conversation_local_seq'] },
|
|
788
|
+
conversationSyncApply: { kind: 'write', equality: 'exact', domain: 'firehose', tables: ['conversation_text_items_v2', 'conversation_item_placement_v2', 'conversation_item_clock', 'conversation_vv'] },
|
|
786
789
|
// --- core (session identity, user content, runtime control state; latency-critical) ---
|
|
787
790
|
updateRuntimeInputEnvelope: { kind: 'write', equality: 'exact', domain: 'core', tables: ['ctm_runtime_input_envelopes'] },
|
|
788
791
|
upsertRuntimeRouteSnapshot: { kind: 'write', equality: 'exact', domain: 'core', tables: ['ctm_runtime_route_snapshots'] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
4.
|
|
1
|
+
4.10.0
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"120cc88fa7b15ca0b75cf68873cde02bf56f867331e45a545589062b87127a89": "4.6.0",
|
|
9
9
|
"14d6d156625905d0b7ed12dea1c2131edc62146f61b6f9fd187a422773d7f300": "4.4.0",
|
|
10
10
|
"24a429b3c1b3651cad34317fd74d574ddb2f4863252b60db0d6b3b76050607f5": "3.8.0",
|
|
11
|
+
"2ecdb1decba4e62cdece71d04f9cc7efb24fff090f354a8454556f4fef48ce67": "4.9.0",
|
|
11
12
|
"31e405815c6010db8a90897d69b6448dfd4c3b21cc464e5b447ab43e60f6c69e": "3.1.0",
|
|
12
13
|
"3a45ab5330bd7788c847f270e017780e247a47c9733bfda056e0712bf620c4c7": "3.2.0",
|
|
13
14
|
"3c1cbc22b9bae7b43ffb137dc4b0016f060dbb40f0af7e1781a3a529ab8cb37c": "3.9.0",
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"c5c66a11c5262014f58b127c4b7e21e0cfaf1179f2678ee6dc6a922d27362cbe": "4.2.0",
|
|
27
28
|
"c9e6f75ab694bbd66c841979fe2468db2c57177d6cfc18ea4eb97e034e5d98dc": "4.7.0",
|
|
28
29
|
"d9d6e3687ff5f626258f0b629e74829719df82bfcc25e079456bdd667e30abb8": "3.2.1",
|
|
30
|
+
"e1319535a212b2742b0f30ab8cb4da2e633731ab18178ccb140c763a41b8b659": "4.8.0",
|
|
29
31
|
"e22741fb1233863289757660b546691b7bfd70d21f3f641d82b743324c335f9c": "3.4.0",
|
|
30
32
|
"eba2b4dea2eb856fe3933be618730f75f8fc3c38c554e3a6063438bafa41d368": "4.6.0",
|
|
31
33
|
"f9f97478a323efc6a9a936c2ea4731d85b1a778cfc3a476889c6883ec0a35051": "4.3.0"
|
|
@@ -40,10 +42,13 @@
|
|
|
40
42
|
"3e5db71601f075a303a1a7442cc1fbac11a37362e60fd25b717e86b180c177cc": "4.7.0",
|
|
41
43
|
"3ea78bdc6c5cd377e01b2061f63a4586e4859159f5c771eafea7ca0e984c8969": "4.2.0",
|
|
42
44
|
"4461f6ebdf10398b6529bff84f3cd3b4145f2935fd3a5f0f1efe38ab52b2c871": "4.6.0",
|
|
45
|
+
"4539af0aa8583e4fa2c110ac0cb63c4020daf828c6f644df21b5d8121a802dd7": "4.9.0",
|
|
46
|
+
"52f3939669f3e745353e1258b8af10b3e1f5e7a4cf3c5bf28f9a7a7c1c88f678": "4.9.0",
|
|
43
47
|
"56a9df7b9a49e7a47abadfa6c026ee599bf12f6a3cc5fc9370bfdc776f46e835": "3.4.0",
|
|
44
48
|
"576083d2286162eed343150f0a28305863fb7773960f2618ddb033c6d2e1f306": "3.8.0",
|
|
45
49
|
"5f9eb74ee52154661e2d572269b121b45d5d76e42989a091fa83086ba5eef3ec": "4.6.0",
|
|
46
50
|
"60a96b080de8243321fb68c76d664d5be9cb9983c3088e64b31da8b53b8bca5b": "4.3.0",
|
|
51
|
+
"634db6600a0e3e226853bdbc4d04f1eab55c8a618b34d4882928a8f955b1face": "4.10.0",
|
|
47
52
|
"75be2666f123930e7f655ad03ed6e18b512c8349bc1cca8af7a92699616e1074": "3.2.1",
|
|
48
53
|
"7de463c9f1647140a636b5155c2291c2df207e088d109ca7db6d16d2591fd948": "3.5.0",
|
|
49
54
|
"7ed8beb72c6dba2f61ffd3361372979c7d44d3a03ed4356aa575793a01990554": "4.5.0",
|
|
@@ -58,6 +63,7 @@
|
|
|
58
63
|
"e1a85b80e419b38459a45c5d6c4884931b97b10a1e4e6a352af626f7a40dcd9d": "4.0.0",
|
|
59
64
|
"ec5795da484f31c96c1ceca74fc10431d274232b8f7124707ea07a373fc759b6": "3.9.0",
|
|
60
65
|
"efbffbadfbd8f04114c383d9b6e17812bee91f6d24c5ac39922a0fa7b3126e95": "4.1.0",
|
|
61
|
-
"f0ae3c1202b2c2e84aa18ed4da5d4e2f519b81f3517b0dc7df81f1e4190fc257": "3.2.0"
|
|
66
|
+
"f0ae3c1202b2c2e84aa18ed4da5d4e2f519b81f3517b0dc7df81f1e4190fc257": "3.2.0",
|
|
67
|
+
"ff749fae03d3521960c55b9ddaa014543c54f2f645f6c29d4ad653fc022b9615": "4.8.0"
|
|
62
68
|
}
|
|
63
69
|
}
|
|
@@ -32,7 +32,7 @@ Write a self-contained brief to a scratch path inside the worktree (never commit
|
|
|
32
32
|
- `lane: "native"` — Wall-E launched nothing; spawn the helper yourself. Call the Agent tool with `subagent_type: "general-purpose"`, `model: <result.model>` (when `result.model` is `"inherit"`, omit `model`: the helper then runs on the lead's own model), `effort: <result.effort>` only when `result.effort` is non-empty, and a prompt that says only: read the brief at `<brief path>` first, follow it, and write the report to `<report path>`. Before calling, check the Agent runtime tool's supported worker models. Use `result.model` only when it is supported; if unavailable, state that and request a supported choice instead of substituting another model. Keep the lead's model and auth unchanged. Report the model and its `source` (`session` = your session pick, `default` = your stored Claude default, `vendor` = the vendor default).
|
|
33
33
|
- `lane: "routed"` (or a worker result carrying `ctm_session_id`) — Wall-E launched a routed worker from the stored pick. Do not call it again; continue with the routed lane's wait and review steps below, and report the actual route, model, harness, and `source`.
|
|
34
34
|
- `delegate_pref_unresolvable` — the stored pick no longer resolves. Show the stored pick (`pref.model`), its `source`, and the `cause`, then stop. Offer to name a model for this task or to reset the pick in the picker, and wait for the user's word. Never fall back to another model silently.
|
|
35
|
-
- `walle_delegate_implementation` unavailable or Wall-E unreachable — say so, and tell the user their stored pick could not be read. Only after telling them, the native lane may then run without a `model` override (the CLI's own default sub-agent model); otherwise wait for the user's word. Never claim the pick was honoured.
|
|
35
|
+
- `walle_delegate_implementation` unavailable or Wall-E unreachable — say so, and tell the user their stored pick could not be read. "Unavailable" here means only that the tool is not mounted, or the call returned no JSON-RPC result (a transport error). Only in that case, after telling them, the native lane may then run without a `model` override (the CLI's own default sub-agent model); otherwise wait for the user's word. Never claim the pick was honoured. A returned error code (caller_*, worker_not_owned, delegate_pref_unresolvable, route_*, model_*) is a refusal, not unavailability: report it and wait for the user's word; never spawn a native helper because of a refusal.
|
|
36
36
|
- **Model phrase → routed lane.** Call `walle_delegate_implementation({ brief_path, cwd, model: "<phrase>", agent: "claude", worker_profile: 'implementation' })`. `agent` selects the CLI harness, never the model identity. The Wall-E MCP proxy supplies your caller identity for you; never pass an identity argument. Wall-E resolves the explicit model/route phrase against the registry and the result names the `route` and `model` actually used; report the actual route, model, and harness returned. If the user also named where it runs, pass it as `route` or write it into the phrase after `on`: an exact route id (`on <route-id>`, e.g. `"glm 5.2 fp8 on portkey-int-example-modal"`), a class (`on portkey` for any Portkey-served route, `on direct` for a vendor-direct route), a connector type (`on modal`, `on bedrock`, `on vertex`), or tenant words (`on team-test`). A qualifier inside the phrase wins over the `route` argument. The result's `chosen.reason` starts with `pinned` when the qualifier was honoured; report the actual route it chose, since a class or type may cover several routes. Do not silently choose an alternate model or a quantized variant. The result's `source` is `explicit`.
|
|
37
37
|
- If the result is `model_ambiguous`, show the candidates (or, for a phrase that named a family with several distinct models, the candidate identities) and stop. If it is `model_unknown`, `route_not_servable`, `codex_home_symlinked`, or `walle_delegate_implementation` is unavailable, say so and do not substitute a model silently or claim delegation occurred. You may offer an alternative (another route, or the native lane) and wait for the user's word.
|
|
38
38
|
- If the result is `route_unavailable`, the model is known but every one of its routes is currently unhealthy (circuit open, throttled, or not servable for this agent) — show `excluded[]`'s reasons (and `retry_after_ms` where present) and `offers[]` (variant/backup routes you could name explicitly, e.g. the fp8 tenant Modal routes when the direct route is down), then wait for the user's word before retrying on a named offer. Never silently pick an offer yourself. When `excluded[]` carries reason `route_not_found`, the word after `on` matched no route id, class, connector type or tenant token — `excluded[0].tried` lists the tiers and `offers[]` names the routes that exist; show them and wait for the user's word.
|
|
@@ -43,7 +43,7 @@ Write a self-contained brief to a scratch path inside the worktree (never commit
|
|
|
43
43
|
|
|
44
44
|
- A provisional report while the process is alive is not completion. On clean terminal `exited`, a readable `report_source:'final_result'` or `last_message` is usable evidence even without a report file; inspect it and tests/diff without claiming the report file existed. On terminal `failed`, report `failure.class` and `failure.code`. Quota holds stop retries until a trustworthy reset or a separately verified generation readiness probe; no model substitution.
|
|
45
45
|
- A 400 `brief_references_missing_paths` / `brief_placeholder_unknown` means the brief is wrong, not the worker: fix the named paths and redelegate.
|
|
46
|
-
- Caller-door refusals are identity and authority checks, not worker failures — do not retry the same call and do not work around them: `caller_unresolved` — "Delegate from inside a CTM-launched lead session; the Wall-E stdio proxy supplies your identity." `caller_unauthenticated` — "This route needs the CTM runtime bearer; call it through the Wall-E MCP tools, not directly." `worker_not_owned` — "Only the lead that created this worker can resume or wait on it; ask that lead, or delegate your own worker." When `caller_unauthenticated` carries `data.cause`, report the cause — `proxy_token_missing`: "The Wall-E MCP server for this session was started without WALL_E_API_TOKEN, so it cannot present the CTM runtime bearer. Wall-E rewrites the managed Codex [mcp_servers."wall-e"] block (env_vars)
|
|
46
|
+
- Caller-door refusals are identity and authority checks, not worker failures — do not retry the same call and do not work around them: `caller_unresolved` — "Delegate from inside a CTM-launched lead session; the Wall-E stdio proxy supplies your identity." `caller_unauthenticated` — "This route needs the CTM runtime bearer; call it through the Wall-E MCP tools, not directly." `worker_not_owned` — "Only the lead that created this worker can resume or wait on it; ask that lead, or delegate your own worker." When `caller_unauthenticated` carries `data.cause`, report the cause — `proxy_token_missing`: "The Wall-E MCP server for this session was started without WALL_E_API_TOKEN, so it cannot present the CTM runtime bearer. Wall-E rewrites the managed Codex [mcp_servers."wall-e"] block (env_vars) when Wall-E starts; restart this session so Codex respawns the MCP server with the token. Do not edit config.toml by hand." `non_loopback_daemon`: "The Wall-E daemon for this session is not on loopback, so routed delegation is unavailable from here. Tell the user and wait for their word; do not substitute a native helper." — then tell the user the session must be restarted and wait for their word; never retry the call, never edit config.toml, never switch to another lane silently.
|
|
47
47
|
|
|
48
48
|
## Lead: read-only review work
|
|
49
49
|
|
|
@@ -64,7 +64,7 @@ Give the worker these requirements in its brief:
|
|
|
64
64
|
- Implement the scoped change and run the relevant focused tests. For a regression, demonstrate the failure before the fix where practical.
|
|
65
65
|
- Resolve harness problems only inside your owned files. If a needed edit falls outside them, or a ratchet lint fails on an owned file, stop and report the file and the required change; never compact or refactor to satisfy a lint. Starting a server or proposing a fix is not completion.
|
|
66
66
|
- Return the changed files, explanation, exact test commands and outcomes, evidence artifacts, and unresolved concerns. Distinguish passed, failed, skipped, and unmeasured checks.
|
|
67
|
-
- Do not commit, merge, push, deploy, restart shared services, or run aggregate repository gates unless the lead explicitly assigns an authorized action.
|
|
67
|
+
- Do not commit, merge, push, deploy, restart shared services, or run aggregate repository gates unless the lead explicitly assigns an authorized action. A worker may run `land submit` only when its brief says so.
|
|
68
68
|
- This is a subtask, not final task sign-off. The lead owns repository-wide verification; do not independently start duplicate full-suite runs.
|
|
69
69
|
|
|
70
70
|
Use additional workers only for independent, useful subtasks with clear ownership. Avoid overlapping edits and shared browser artifact directories.
|
|
@@ -83,7 +83,7 @@ Use additional workers only for independent, useful subtasks with clear ownershi
|
|
|
83
83
|
- Personally read the final diff and relevant surrounding code. Review correctness, simplicity, security, compatibility, and whether the tests exercise the actual failure.
|
|
84
84
|
- Inspect the evidence, not just the worker's summary. A test that never reached its assertion, skipped, or only checked a stub is not proof of the intended behavior.
|
|
85
85
|
- Send concrete findings back to the same worker for correction and focused retesting — `walle_resume_worker({ ctm_session_id, message })` on the routed lane, or resume the same Agent on the native lane. Routed resume starts a new process generation on the same provider transcript with new auth. `accepted` proves process start only: poll for actual agent consumption/new generation activity and the terminal report. A recorded envelope or stale report alone is not success. Report busy, missing-transcript, and quota failures explicitly. The budget is a bounded lease that CTM renews while the worker progresses; never raise it yourself. Review the resulting changes again; retain responsibility for the final decision.
|
|
86
|
-
- Once the implementation is stable, own and run the required aggregate checks.
|
|
86
|
+
- Once the implementation is stable, own and run the required aggregate checks. To integrate, commit and run `land submit`; the queue serializes gates, so never start a second gate for the same tip. Never bypass required checks.
|
|
87
87
|
- If the user requested a commit or integration, use `tl-commit` after review and verification, honoring the requested target such as local `main`. This skill alone does not authorize commits, pushes, deployment, or service restarts.
|
|
88
88
|
- Sign off only when required work is complete and blocking findings are resolved. Report what changed, what was verified, any material limitations, and the actual integration/deployment state. Do not claim a locally committed fix is live without verifying activation.
|
|
89
89
|
- Report the `execution_profile` the result returned (route, model, harness, and the five limits with their sources) in the delegation summary.
|
|
@@ -27,10 +27,10 @@ Write a self-contained brief to a scratch path inside the worktree (never commit
|
|
|
27
27
|
## Lead: choose the lane
|
|
28
28
|
|
|
29
29
|
- **No model phrase → ask Wall-E which lane.** First call `walle_delegate_implementation({ brief_path, cwd, agent: "codex", worker_profile: 'implementation' })` WITHOUT `model` or `route`. The Wall-E MCP proxy supplies your caller identity for you; never pass an identity argument. Wall-E applies the lead's delegate pick (the session pick, then the stored default for this agent, then the vendor default) and the result names the `lane` and the `source` that decided. Branch on the result:
|
|
30
|
-
- `lane: "native"` — Wall-E launched nothing; spawn the helper yourself. Call `spawn_agent` with `model: <result.model>` (when `result.model` is `null`, omit `model`), `reasoning_effort: <result.effort>` only when `result.effort` is non-empty, `fork_turns: "none"`, a short `task_name`, and a prompt that says only: read the brief at `<brief path>` first, follow it, and write the report to `<report path>`. Then `wait_agent`. Call `spawn_agent` with `result.model` even when the `spawn_agent` tool description does not list it: Codex lists only the first 5 picker-visible models there, but `spawn_agent` accepts every model in the catalog (codex-rs/core/src/agent/child_config.rs, `MAX_SPAWN_AGENT_MODEL_OVERRIDES = 5`, `find_spawn_agent_model_name`). Only an `Unknown model` error from `spawn_agent` proves a model is unavailable; then state the refusal and request a supported choice instead of substituting another model. Keep the lead's model and auth unchanged; `fork_turns: "none"` preserves the no-parent-history briefing. Report the model and its `source` (`session` = your session pick, `default` = your stored Codex default, `vendor` = the vendor default).
|
|
30
|
+
- `lane: "native"` — Wall-E launched nothing; spawn the helper yourself. Call `spawn_agent` with `model: <result.model>` (when `result.model` is `null`, omit `model`), `reasoning_effort: <result.effort>` only when `result.effort` is non-empty, `fork_turns: "none"`, a short `task_name`, and a prompt that says only: read the brief at `<brief path>` first, follow it, and write the report to `<report path>`. Then `wait_agent`. Call `spawn_agent` with `result.model` even when the `spawn_agent` tool description does not list it: Codex lists only the first 5 picker-visible models there, but `spawn_agent` accepts every model in the catalog (codex-rs/core/src/agent/child_config.rs, `MAX_SPAWN_AGENT_MODEL_OVERRIDES = 5`, `find_spawn_agent_model_name`). Only an `Unknown model` error from `spawn_agent` proves a model is unavailable; then state the refusal and request a supported choice instead of substituting another model. Keep the lead's model and auth unchanged; `fork_turns: "none"` preserves the no-parent-history briefing. Report the model and its `source` (`session` = your session pick, `default` = your stored Codex default, `vendor` = the vendor default). If spawn_agent answers unsupported call, this session was launched with native sub-agents off because the saved pick is a routed worker; use walle_delegate_implementation and never retry the spawn.
|
|
31
31
|
- `lane: "routed"` (or a worker result carrying `ctm_session_id`) — Wall-E launched a routed worker from the stored pick. Do not call it again; continue with the routed lane's wait and review steps below, and report the actual route, model, harness, and `source`.
|
|
32
32
|
- `delegate_pref_unresolvable` — the stored pick no longer resolves. Show the stored pick (`pref.model`), its `source`, and the `cause`, then stop. Offer to name a model for this task or to reset the pick in the picker, and wait for the user's word. Never fall back to another model silently.
|
|
33
|
-
- `walle_delegate_implementation` unavailable or Wall-E unreachable — say so, and tell the user their stored pick could not be read. Only after telling them, the native lane may then run without a `model` override (the CLI's own default sub-agent model); otherwise wait for the user's word. Never claim the pick was honoured.
|
|
33
|
+
- `walle_delegate_implementation` unavailable or Wall-E unreachable — say so, and tell the user their stored pick could not be read. "Unavailable" here means only that the tool is not mounted, or the call returned no JSON-RPC result (a transport error). Only in that case, after telling them, the native lane may then run without a `model` override (the CLI's own default sub-agent model); otherwise wait for the user's word. Never claim the pick was honoured. A returned error code (caller_*, worker_not_owned, delegate_pref_unresolvable, route_*, model_*) is a refusal, not unavailability: report it and wait for the user's word; never spawn a native helper because of a refusal.
|
|
34
34
|
- **Model phrase → routed lane.** Call `walle_delegate_implementation({ brief_path, cwd, model: "<phrase>", agent: "codex", worker_profile: 'implementation' })`. `agent` selects the CLI harness, never the model identity. The Wall-E MCP proxy supplies your caller identity for you; never pass an identity argument. Wall-E resolves the explicit model/route phrase against the registry and the result names the `route` and `model` actually used; report the actual route, model, and harness returned. If the user also named where it runs, pass it as `route` or write it into the phrase after `on`: an exact route id (`on <route-id>`, e.g. `"glm 5.2 fp8 on portkey-int-example-modal"`), a class (`on portkey` for any Portkey-served route, `on direct` for a vendor-direct route), a connector type (`on modal`, `on bedrock`, `on vertex`), or tenant words (`on team-test`). A qualifier inside the phrase wins over the `route` argument. The result's `chosen.reason` starts with `pinned` when the qualifier was honoured; report the actual route it chose, since a class or type may cover several routes. Do not silently choose an alternate model or a quantized variant. The result's `source` is `explicit`.
|
|
35
35
|
- If the result is `model_ambiguous`, show the candidates (or, for a phrase that named a family with several distinct models, the candidate identities) and stop. If it is `model_unknown`, `route_not_servable`, `codex_home_symlinked`, or `walle_delegate_implementation` is unavailable, say so and do not substitute a model silently or claim delegation occurred. You may offer an alternative (another route, `agent: "codex"` → `agent: "claude"` to run the same model under the Claude harness, or the native lane) and wait for the user's word.
|
|
36
36
|
- If the result is `route_unavailable`, the model is known but every one of its routes is currently unhealthy (circuit open, throttled, or not servable for this agent) — show `excluded[]`'s reasons (and `retry_after_ms` where present) and `offers[]` (variant/backup routes you could name explicitly, e.g. the fp8 tenant Modal routes when the direct route is down), then wait for the user's word before retrying on a named offer. Never silently pick an offer yourself. When `excluded[]` carries reason `route_not_found`, the word after `on` matched no route id, class, connector type or tenant token — `excluded[0].tried` lists the tiers and `offers[]` names the routes that exist; show them and wait for the user's word.
|
|
@@ -41,13 +41,13 @@ Write a self-contained brief to a scratch path inside the worktree (never commit
|
|
|
41
41
|
|
|
42
42
|
- A provisional report while the process is alive is not completion. On clean terminal `exited`, a readable `report_source:'final_result'` or `last_message` is usable evidence even without a report file; inspect it and tests/diff without claiming the report file existed. On terminal `failed`, report `failure.class` and `failure.code`. Quota holds stop retries until a trustworthy reset or a separately verified generation readiness probe; no model substitution.
|
|
43
43
|
- A 400 `brief_references_missing_paths` / `brief_placeholder_unknown` means the brief is wrong, not the worker: fix the named paths and redelegate.
|
|
44
|
-
- Caller-door refusals are identity and authority checks, not worker failures — do not retry the same call and do not work around them: `caller_unresolved` — "Delegate from inside a CTM-launched lead session; the Wall-E stdio proxy supplies your identity." `caller_unauthenticated` — "This route needs the CTM runtime bearer; call it through the Wall-E MCP tools, not directly." `worker_not_owned` — "Only the lead that created this worker can resume or wait on it; ask that lead, or delegate your own worker." When `caller_unauthenticated` carries `data.cause`, report the cause — `proxy_token_missing`: "The Wall-E MCP server for this session was started without WALL_E_API_TOKEN, so it cannot present the CTM runtime bearer. Wall-E rewrites the managed Codex [mcp_servers."wall-e"] block (env_vars)
|
|
44
|
+
- Caller-door refusals are identity and authority checks, not worker failures — do not retry the same call and do not work around them: `caller_unresolved` — "Delegate from inside a CTM-launched lead session; the Wall-E stdio proxy supplies your identity." `caller_unauthenticated` — "This route needs the CTM runtime bearer; call it through the Wall-E MCP tools, not directly." `worker_not_owned` — "Only the lead that created this worker can resume or wait on it; ask that lead, or delegate your own worker." When `caller_unauthenticated` carries `data.cause`, report the cause — `proxy_token_missing`: "The Wall-E MCP server for this session was started without WALL_E_API_TOKEN, so it cannot present the CTM runtime bearer. Wall-E rewrites the managed Codex [mcp_servers."wall-e"] block (env_vars) when Wall-E starts; restart this session so Codex respawns the MCP server with the token. Do not edit config.toml by hand." `non_loopback_daemon`: "The Wall-E daemon for this session is not on loopback, so routed delegation is unavailable from here. Tell the user and wait for their word; do not substitute a native helper." — then tell the user the session must be restarted and wait for their word; never retry the call, never edit config.toml, never switch to another lane silently.
|
|
45
45
|
|
|
46
46
|
## Lead: read-only review work
|
|
47
47
|
|
|
48
48
|
- Census, research, spec-compliance review and code-quality review are read-only work. Ask Wall-E for a `review` worker instead of spawning a helper: call `walle_delegate_implementation({ brief_path, cwd, agent: "codex", worker_profile: 'review' })` without `model` or `route`. The brief has no `## Files owned` section (CTM refuses one with `review_brief_owns_files`); it names what to read and the questions to answer, and asks for findings with file:line evidence.
|
|
49
49
|
- `lane: "routed"`: the worker cannot change workspace files or run tests. A Codex-harness review worker runs in a read-only sandbox and ends `exited` with `report_source: 'last_message'` — read its report text from the status; a Claude-harness review worker has read tools plus its report file only and ends `report_ready`. Run tests and gates yourself.
|
|
50
|
-
- `lane: "native"`: Wall-E launched nothing; spawn a read-only helper (`spawn_agent`) for the review as before.
|
|
50
|
+
- `lane: "native"`: Wall-E launched nothing; spawn a read-only helper (`spawn_agent`) for the review as before. If spawn_agent answers unsupported call, this session was launched with native sub-agents off because the saved pick is a routed worker; use walle_delegate_implementation and never retry the spawn.
|
|
51
51
|
- Either way you own the verdict: check each claim against the code before acting on it. A review worker's lease does not renew (renewal needs file writes); resume it if it needs more, and a resume cannot change its profile.
|
|
52
52
|
|
|
53
53
|
## Lead: waiting
|
|
@@ -62,7 +62,7 @@ Give the worker these requirements in its brief:
|
|
|
62
62
|
- Implement the scoped change and run the relevant focused tests. For a regression, demonstrate the failure before the fix where practical.
|
|
63
63
|
- Resolve harness problems only inside your owned files. If a needed edit falls outside them, or a ratchet lint fails on an owned file, stop and report the file and the required change; never compact or refactor to satisfy a lint. Starting a server or proposing a fix is not completion.
|
|
64
64
|
- Return the changed files, explanation, exact test commands and outcomes, evidence artifacts, and unresolved concerns. Distinguish passed, failed, skipped, and unmeasured checks.
|
|
65
|
-
- Do not commit, merge, push, deploy, restart shared services, or run aggregate repository gates unless the lead explicitly assigns an authorized action.
|
|
65
|
+
- Do not commit, merge, push, deploy, restart shared services, or run aggregate repository gates unless the lead explicitly assigns an authorized action. A worker may run `land submit` only when its brief says so.
|
|
66
66
|
- This is a subtask, not final task sign-off. The lead owns repository-wide verification; do not independently start duplicate full-suite runs.
|
|
67
67
|
|
|
68
68
|
Use additional workers only for independent, useful subtasks with clear ownership. Avoid overlapping edits and shared browser artifact directories.
|
|
@@ -81,7 +81,7 @@ Use additional workers only for independent, useful subtasks with clear ownershi
|
|
|
81
81
|
- Personally read the final diff and relevant surrounding code. Review correctness, simplicity, security, compatibility, and whether the tests exercise the actual failure.
|
|
82
82
|
- Inspect the evidence, not just the worker's summary. A test that never reached its assertion, skipped, or only checked a stub is not proof of the intended behavior.
|
|
83
83
|
- Send concrete findings back to the same worker for correction and focused retesting — `walle_resume_worker({ ctm_session_id, message })` on the routed lane, or `send_message` to the same spawned agent on the native lane. Routed resume starts a new process generation on the same provider transcript with new auth. `accepted` proves process start only: poll for actual agent consumption/new generation activity and the terminal report. A recorded envelope or stale report alone is not success. Report busy, missing-transcript, and quota failures explicitly. The budget is a bounded lease that CTM renews while the worker progresses; never raise it yourself. Review the resulting changes again; retain responsibility for the final decision.
|
|
84
|
-
- Once the implementation is stable, own and run the required aggregate checks.
|
|
84
|
+
- Once the implementation is stable, own and run the required aggregate checks. To integrate, commit and run `land submit`; the queue serializes gates, so never start a second gate for the same tip. Never bypass required checks.
|
|
85
85
|
- If the user requested a commit or integration, use `tl-commit` after review and verification, honoring the requested target such as local `main`. This skill alone does not authorize commits, pushes, deployment, or service restarts.
|
|
86
86
|
- Sign off only when required work is complete and blocking findings are resolved. Report what changed, what was verified, any material limitations, and the actual integration/deployment state. Do not claim a locally committed fix is live without verifying activation.
|
|
87
87
|
- Report the `execution_profile` the result returned (route, model, harness, and the five limits with their sources) in the delegation summary.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.2.1
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": 1,
|
|
3
|
+
"note": "Generated by bin/delegate-skill-released-hashes.js --write. Do not edit by hand.",
|
|
4
|
+
"claude": {
|
|
5
|
+
"09cd341db1ae10190a6e5e66051de44be8e35e086179f74c5d42f5eb5f10de03": "1.1.0",
|
|
6
|
+
"25f25695f47e6d60ed0d79f3e20024708abb7bce9441289d422166520bb7bb06": "1.2.1",
|
|
7
|
+
"8ae4f7ab8b2b020f04496563600ed1701c3a985e55d2fdae38243a0a140634e4": "1.2.0",
|
|
8
|
+
"8be0424c598a25bbfea9a48d9dbf2662bd43640ede6e57e9b60e5a9833ac1b7c": "1.0.0"
|
|
9
|
+
},
|
|
10
|
+
"codex": {
|
|
11
|
+
"431f32fc0db5bcc34ef22701e8973821f7077b5127b2e439028a57c715cef2b7": "1.2.0",
|
|
12
|
+
"56a08801f83e153dfab6f374f356cb9e3f92b5135ff3047c8ab24673b7bc8778": "1.2.1",
|
|
13
|
+
"b565aaae2c997b3d118d54b83f68e3f86da095949e207e9af64fb753b5317de6": "1.0.0",
|
|
14
|
+
"b6064b483ecc364568201fb129c7802d959ff7df59efb93c8c23301e3cb5eda2": "1.1.0"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fleet-sync
|
|
3
|
+
description: Sync this machine's tools-repo main with origin in one command — pull, merge (gated) when both sides moved, push, and schedule the CTM restart for when the box is idle. Use when the user says "/fleet-sync", "sync main", "pull and push", "get latest", "push to origin", or when work just landed on local main and should reach the other boxes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Fleet sync
|
|
7
|
+
|
|
8
|
+
One command keeps this box's `main` and `origin/main` the same: `land sync`. It is the only
|
|
9
|
+
supported way to pull, merge or push `main` on any box (hub, MacBook Pro, Spark).
|
|
10
|
+
Invoke with `/fleet-sync` (`$fleet-sync` is the Codex form).
|
|
11
|
+
|
|
12
|
+
## Do
|
|
13
|
+
|
|
14
|
+
1. From the repo root (the main checkout or any worktree of it):
|
|
15
|
+
```
|
|
16
|
+
export PATH="$(dirname "$(bash bin/node-bin.sh)"):$PATH"
|
|
17
|
+
node coding-task-manager/bin/land.js sync --wait --json
|
|
18
|
+
```
|
|
19
|
+
2. Read the verdict and report it in one line, plus `origin` ahead/behind from
|
|
20
|
+
`node coding-task-manager/bin/land.js status --json` and the restart state:
|
|
21
|
+
| verdict | meaning |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `in_sync` | nothing to do |
|
|
24
|
+
| `pulled` | main fast-forwarded to origin (no gate needed) |
|
|
25
|
+
| `pushed` | this box's own commits reached origin |
|
|
26
|
+
| `published` | origin and local were merged, the merge passed the gate, and that exact commit was pushed |
|
|
27
|
+
| `publish_contended` | another box kept pushing first; report it — do not retry by hand |
|
|
28
|
+
| `conflict` / `gate_failed` | resolve it yourself, in this session — step 3 |
|
|
29
|
+
| `publish_failed` | git refused the push (auth/network); report git's message verbatim |
|
|
30
|
+
| `sync_not_configured` | this repo has no `.ctm.json#landing.publish`; say so |
|
|
31
|
+
3. On `conflict` or `gate_failed`, resolve it here; do not stop at a report. The user ran this
|
|
32
|
+
skill in this session, so this session owns the fix even if CTM also opened a
|
|
33
|
+
`fleet-sync: resolve <sha>` tab. Do not stop or kill that session; if it already committed a
|
|
34
|
+
resolution on its `sync/origin-<sha>` branch, review and use that instead of redoing it.
|
|
35
|
+
1. Run `node coding-task-manager/bin/land.js resolve <jobId> --claim --json` first, so CTM's
|
|
36
|
+
follower does not open a second resolver for this job. Then
|
|
37
|
+
`node coding-task-manager/bin/land.js inspect <jobId> --json` gives `base` (local main) and
|
|
38
|
+
`tip` (origin); read its `gateLog` for the failing check.
|
|
39
|
+
2. In a fresh worktree on a new branch from local `main` (symlink each project's `node_modules`
|
|
40
|
+
from the main checkout, run `bash bin/install-hooks.sh`): `git merge --no-ff <tip>`.
|
|
41
|
+
3. Resolve every conflict keeping BOTH sides' intent; for append-only ledgers keep every row and
|
|
42
|
+
regenerate generated files with the command `.ctm.json` names — never hand-merge a baseline.
|
|
43
|
+
Fix each gate failure at its root (a real bug gets fixed; a stale entry left by the merge
|
|
44
|
+
gets removed) and rerun the failing check until it passes.
|
|
45
|
+
4. Commit through the normal hook (never `--no-verify`), then
|
|
46
|
+
`node coding-task-manager/bin/land.js resolve <jobId> --worktree "$PWD" --wait --json`.
|
|
47
|
+
5. Run step 1 again. Repeat from 3.1 on a new `conflict`/`gate_failed`; stop after 3 rounds and
|
|
48
|
+
report what still fails.
|
|
49
|
+
4. Restart: never ask CTM to restart now. `land sync` schedules the idle restart itself; report
|
|
50
|
+
"restart pending — waits until no session is active" when main moved.
|
|
51
|
+
|
|
52
|
+
## Never
|
|
53
|
+
|
|
54
|
+
- `git pull`, `git merge origin/main`, `git push` (any form, especially `--force`), or moving `main` by hand.
|
|
55
|
+
- `--no-verify`, skipping or shortening the gate.
|
|
56
|
+
- `POST /api/restart/ctm?force=true`, `launchctl` against `com.walle.server`/`com.ctm.*`, killing CTM.
|
|
57
|
+
- Running it from the box-gate clone (`~/ws/tools-ci/...`) or pushing from a side branch.
|
|
58
|
+
- Starting any GitHub or Claude login. If push auth is missing, report `land doctor` output and stop.
|
|
59
|
+
|
|
60
|
+
## When something looks wrong
|
|
61
|
+
|
|
62
|
+
`node coding-task-manager/bin/land.js doctor --json` checks hooks, the main-branch guard, the remote,
|
|
63
|
+
and non-interactive push auth. Report its failing checks; do not fix hooks or credentials yourself
|
|
64
|
+
unless the user asks.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fleet-sync
|
|
3
|
+
description: Sync this machine's tools-repo main with origin in one command — pull, merge (gated) when both sides moved, push, and schedule the CTM restart for when the box is idle. Use when the user says "$fleet-sync", "sync main", "pull and push", "get latest", "push to origin", or when work just landed on local main and should reach the other boxes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Fleet sync
|
|
7
|
+
|
|
8
|
+
One command keeps this box's `main` and `origin/main` the same: `land sync`. It is the only
|
|
9
|
+
supported way to pull, merge or push `main` on any box (hub, MacBook Pro, Spark).
|
|
10
|
+
Invoke with `$fleet-sync` (`/fleet-sync` is the Claude Code form).
|
|
11
|
+
|
|
12
|
+
## Do
|
|
13
|
+
|
|
14
|
+
1. From the repo root (the main checkout or any worktree of it):
|
|
15
|
+
```
|
|
16
|
+
export PATH="$(dirname "$(bash bin/node-bin.sh)"):$PATH"
|
|
17
|
+
node coding-task-manager/bin/land.js sync --wait --json
|
|
18
|
+
```
|
|
19
|
+
2. Read the verdict and report it in one line, plus `origin` ahead/behind from
|
|
20
|
+
`node coding-task-manager/bin/land.js status --json` and the restart state:
|
|
21
|
+
| verdict | meaning |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `in_sync` | nothing to do |
|
|
24
|
+
| `pulled` | main fast-forwarded to origin (no gate needed) |
|
|
25
|
+
| `pushed` | this box's own commits reached origin |
|
|
26
|
+
| `published` | origin and local were merged, the merge passed the gate, and that exact commit was pushed |
|
|
27
|
+
| `publish_contended` | another box kept pushing first; report it — do not retry by hand |
|
|
28
|
+
| `conflict` / `gate_failed` | resolve it yourself, in this session — step 3 |
|
|
29
|
+
| `publish_failed` | git refused the push (auth/network); report git's message verbatim |
|
|
30
|
+
| `sync_not_configured` | this repo has no `.ctm.json#landing.publish`; say so |
|
|
31
|
+
3. On `conflict` or `gate_failed`, resolve it here; do not stop at a report. The user ran this
|
|
32
|
+
skill in this session, so this session owns the fix even if CTM also opened a
|
|
33
|
+
`fleet-sync: resolve <sha>` tab. Do not stop or kill that session; if it already committed a
|
|
34
|
+
resolution on its `sync/origin-<sha>` branch, review and use that instead of redoing it.
|
|
35
|
+
1. Run `node coding-task-manager/bin/land.js resolve <jobId> --claim --json` first, so CTM's
|
|
36
|
+
follower does not open a second resolver for this job. Then
|
|
37
|
+
`node coding-task-manager/bin/land.js inspect <jobId> --json` gives `base` (local main) and
|
|
38
|
+
`tip` (origin); read its `gateLog` for the failing check.
|
|
39
|
+
2. In a fresh worktree on a new branch from local `main` (symlink each project's `node_modules`
|
|
40
|
+
from the main checkout, run `bash bin/install-hooks.sh`): `git merge --no-ff <tip>`.
|
|
41
|
+
3. Resolve every conflict keeping BOTH sides' intent; for append-only ledgers keep every row and
|
|
42
|
+
regenerate generated files with the command `.ctm.json` names — never hand-merge a baseline.
|
|
43
|
+
Fix each gate failure at its root (a real bug gets fixed; a stale entry left by the merge
|
|
44
|
+
gets removed) and rerun the failing check until it passes.
|
|
45
|
+
4. Commit through the normal hook (never `--no-verify`), then
|
|
46
|
+
`node coding-task-manager/bin/land.js resolve <jobId> --worktree "$PWD" --wait --json`.
|
|
47
|
+
5. Run step 1 again. Repeat from 3.1 on a new `conflict`/`gate_failed`; stop after 3 rounds and
|
|
48
|
+
report what still fails.
|
|
49
|
+
4. Restart: never ask CTM to restart now. `land sync` schedules the idle restart itself; report
|
|
50
|
+
"restart pending — waits until no session is active" when main moved.
|
|
51
|
+
|
|
52
|
+
## Never
|
|
53
|
+
|
|
54
|
+
- `git pull`, `git merge origin/main`, `git push` (any form, especially `--force`), or moving `main` by hand.
|
|
55
|
+
- `--no-verify`, skipping or shortening the gate.
|
|
56
|
+
- `POST /api/restart/ctm?force=true`, `launchctl` against `com.walle.server`/`com.ctm.*`, killing CTM.
|
|
57
|
+
- Running it from the box-gate clone (`~/ws/tools-ci/...`) or pushing from a side branch.
|
|
58
|
+
- Starting any GitHub or Claude login. If push auth is missing, report `land doctor` output and stop.
|
|
59
|
+
|
|
60
|
+
## When something looks wrong
|
|
61
|
+
|
|
62
|
+
`node coding-task-manager/bin/land.js doctor --json` checks hooks, the main-branch guard, the remote,
|
|
63
|
+
and non-interactive push auth. Report its failing checks; do not fix hooks or credentials yourself
|
|
64
|
+
unless the user asks.
|
|
@@ -6,6 +6,12 @@ const CHROME_CANDIDATES = Object.freeze([
|
|
|
6
6
|
'/Applications/Chromium.app/Contents/MacOS/Chromium',
|
|
7
7
|
'/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge',
|
|
8
8
|
'/Applications/Brave Browser.app/Contents/MacOS/Brave Browser',
|
|
9
|
+
// Linux (design nightly-linux-host-portability-2026-10-27 D-7): the distro and snap layouts.
|
|
10
|
+
'/usr/bin/google-chrome-stable',
|
|
11
|
+
'/usr/bin/google-chrome',
|
|
12
|
+
'/usr/bin/chromium',
|
|
13
|
+
'/usr/bin/chromium-browser',
|
|
14
|
+
'/snap/bin/chromium',
|
|
9
15
|
]);
|
|
10
16
|
|
|
11
17
|
// Wall-E uses throwaway browser profiles. Chromium's macOS test launcher uses
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# One-time setup for the DGX Spark (CUDA/GB10) training venv.
|
|
3
|
-
# Run this ON the Spark host (e.g. `ssh
|
|
4
|
-
# from the Mac: ssh
|
|
3
|
+
# Run this ON the Spark host (e.g. `ssh dgx-spark` then run it), or
|
|
4
|
+
# from the Mac: ssh dgx-spark 'bash -s' < wall-e/training/setup-cuda-train-env.sh
|
|
5
5
|
#
|
|
6
6
|
# Creates ~/.cuda-train-env with the PyTorch/PEFT/bitsandbytes stack that
|
|
7
7
|
# cuda_qlora_launch.py needs. Idempotent: re-running upgrades in place.
|
|
@@ -259,10 +259,24 @@ const CUSTOM_BRAIN_CALLS = { agentRunShadowOperation: (args) => require('../runt
|
|
|
259
259
|
// D-7 review fix (WP-2, F1): same function loops/brain-write.js's direct (RW)
|
|
260
260
|
// path calls — see wall-e/loops/brain-custom-writes.js for what/why.
|
|
261
261
|
commitThinkExtraction: (args) => require('../loops/brain-custom-writes').commitThinkExtraction(args[0]),
|
|
262
|
-
//
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
// shared-memory WP-0 §6.3: the v2 clock seed walk, on the owner's own db handle.
|
|
263
|
+
brainSyncClockSeed: (args) => require('../loops/brain-custom-writes').brainSyncClockSeed(args[0] || {}), // shared-memory WP-0 §6.3
|
|
264
|
+
// shared-memory WP-1 §6.4: the v2 change feed and apply; the module is
|
|
265
|
+
// brain/brain-sync-v2.js (a storage module, no HTTP). WP-6/migration 104 retired the
|
|
266
|
+
// v1 outbox trio that used to sit here.
|
|
267
|
+
brainSyncV2Vector: (args) => require('../brain/brain-sync-v2').readVector(brain.getDb()),
|
|
268
|
+
brainSyncV2Changes: (args) => require('../brain/brain-sync-v2').changesSince(brain.getDb(), args[0] || {}),
|
|
269
|
+
brainSyncV2Apply: (args) => require('../brain/brain-sync-v2').applyChanges(brain.getDb(), args[0] || {}),
|
|
270
|
+
brainSyncV2MemberVector: (args) => require('../brain/brain-sync-v2').recordMemberVector(brain.getDb(), args[0] || {}),
|
|
271
|
+
brainSyncV2PruneTombstones: (args) => require('../brain/brain-sync-v2').pruneTombstones(brain.getDb(), args[0] || {}),
|
|
272
|
+
brainSyncV2Digest: (args) => require('../brain/brain-sync-v2').digest(brain.getDb(), args[0] || {}),
|
|
273
|
+
// shared-memory WP-4 §6.7: the join trio + the import job's step — all on the owner's own
|
|
274
|
+
// connection. createJoinSnapshot runs where the backup API runs; joinImportStep writes the four
|
|
275
|
+
// replicated tables with the sentinel on (see loops/brain-custom-writes.js).
|
|
276
|
+
brainSyncV2JoinSnapshot: (args) => require('../brain/brain-join').createJoinSnapshot({ db: brain.getDb(), ...(args[0] || {}) }),
|
|
277
|
+
brainSyncV2JoinImport: (args) => require('../brain/brain-join').startJoinImport(brain.getDb(), args[0] || {}),
|
|
278
|
+
brainSyncV2JoinStatus: (args) => require('../brain/brain-join').joinStatus(brain.getDb()),
|
|
279
|
+
brainSyncV2JoinStep: (args) => require('../brain/brain-join').joinImportStep(brain.getDb(), args[0] || {}),
|
|
266
280
|
backfillClassifyBatch: (args) => require('../loops/brain-custom-writes').backfillClassifyBatch(args[0]),
|
|
267
281
|
backfillEntityLinkBatch: (args) => require('../loops/brain-custom-writes').backfillEntityLinkBatch(args[0], args[1]),
|
|
268
282
|
commitEntityLinks: (args) => require('../loops/brain-custom-writes').commitEntityLinks(args[0]),
|
|
@@ -535,8 +535,8 @@ function main() {
|
|
|
535
535
|
// WALLE_MCP_GATEWAY_ORPHAN_PPID_POLL_MS is a test-only override (default
|
|
536
536
|
// 5000ms) — an adoption clears `orphanedAtMs` but NOT the OS-level ppid
|
|
537
537
|
// reparenting that already happened on the first real parent death, so
|
|
538
|
-
// the very next tick
|
|
539
|
-
// markOrphaned() again. That is exactly the "a later parent-gone
|
|
538
|
+
// the very next tick re-detects the changed ppid (1 on macOS, the subreaper on Linux) and
|
|
539
|
+
// calls markOrphaned() again. That is exactly the "a later parent-gone
|
|
540
540
|
// re-enters orphan grace" cycle the WP-3 brief asks for — a fast poll
|
|
541
541
|
// interval here just lets tests observe a re-orphan cycle without a
|
|
542
542
|
// multi-second real-time wait.
|
|
@@ -544,11 +544,11 @@ function main() {
|
|
|
544
544
|
const raw = Number(process.env.WALLE_MCP_GATEWAY_ORPHAN_PPID_POLL_MS);
|
|
545
545
|
return Number.isFinite(raw) && raw > 0 ? raw : 5000;
|
|
546
546
|
})();
|
|
547
|
-
orphanPpidPoll = setInterval(() => {
|
|
547
|
+
orphanPpidPoll = setInterval(((installPpid) => () => { // nightly-linux-host-portability WP-4b
|
|
548
548
|
let ppid;
|
|
549
549
|
try { ppid = process.ppid; } catch { return; }
|
|
550
|
-
if (ppid === 1) markOrphaned('ppid-reparented');
|
|
551
|
-
}, ppidPollMs);
|
|
550
|
+
if (ppid === 1 || ppid !== installPpid) markOrphaned('ppid-reparented');
|
|
551
|
+
})(process.ppid), ppidPollMs);
|
|
552
552
|
orphanPpidPoll.unref?.();
|
|
553
553
|
// Checks at least twice per grace window (and at least every 30s) so a
|
|
554
554
|
// short test-only grace override (WALLE_MCP_GATEWAY_ORPHAN_GRACE_MS)
|