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,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// WP-12 (coding-task-manager/docs/nightly-linux-host-portability-2026-10-27.html §9.4, S-29): the pids an
|
|
4
|
+
// orphan can be re-parented to. The kernel hands an orphan to its nearest living CHILD SUBREAPER ancestor
|
|
5
|
+
// and only falls back to pid 1 without one (prctl(2) PR_SET_CHILD_SUBREAPER). On Linux the `systemd
|
|
6
|
+
// --user` manager is a subreaper for everything in the user's session -- measured on the DGX Spark: this
|
|
7
|
+
// shell's ancestry ends bash -> claude -> CTM -> systemd 2177, and an orphaned proxy, fake Wall-E and
|
|
8
|
+
// spawn-helper all showed ppid 2177, never 1. So `ppid === 1` misses every orphan there.
|
|
9
|
+
//
|
|
10
|
+
// Another process's subreaper flag cannot be read, but an orphan of one of OUR descendants can only go to
|
|
11
|
+
// pid 1 or to one of our own ancestors (gascity #8058's argument), so the set is pid 1 plus each of this
|
|
12
|
+
// process's ancestors that is a `systemd` (the user manager; KiroCrew #10601, jstack #363 use the same
|
|
13
|
+
// test). On every other platform it is exactly {1}: macOS launchd is pid 1.
|
|
14
|
+
|
|
15
|
+
const fs = require('node:fs');
|
|
16
|
+
|
|
17
|
+
const MAX_ANCESTRY_STEPS = 64;
|
|
18
|
+
|
|
19
|
+
function _statusField(status, field) {
|
|
20
|
+
const m = new RegExp(`^${field}:\\s+(\\d+)`, 'm').exec(status);
|
|
21
|
+
return m ? Number(m[1]) : null;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @param {{ platform?: string, pid?: number, readFileSync?: Function }} [opts]
|
|
26
|
+
* @returns {Set<number>} always contains 1; on Linux also every `systemd` ancestor of `pid`.
|
|
27
|
+
*/
|
|
28
|
+
function orphanParentPids({ platform = process.platform, pid = process.pid, readFileSync = fs.readFileSync } = {}) {
|
|
29
|
+
const parents = new Set([1]);
|
|
30
|
+
if (platform !== 'linux') return parents;
|
|
31
|
+
let current = pid;
|
|
32
|
+
const seen = new Set();
|
|
33
|
+
for (let step = 0; step < MAX_ANCESTRY_STEPS; step += 1) {
|
|
34
|
+
let status;
|
|
35
|
+
try {
|
|
36
|
+
status = String(readFileSync(`/proc/${current}/status`, 'utf8'));
|
|
37
|
+
} catch {
|
|
38
|
+
break; // expected: the ancestor exited mid-walk or /proc is unreadable -- what was found stands
|
|
39
|
+
}
|
|
40
|
+
const ppid = _statusField(status, 'PPid');
|
|
41
|
+
if (!Number.isSafeInteger(ppid) || ppid <= 1 || seen.has(ppid)) break;
|
|
42
|
+
seen.add(ppid);
|
|
43
|
+
let comm = '';
|
|
44
|
+
try {
|
|
45
|
+
comm = String(readFileSync(`/proc/${ppid}/comm`, 'utf8')).trim();
|
|
46
|
+
} catch {
|
|
47
|
+
break; // expected: the parent exited between the two reads
|
|
48
|
+
}
|
|
49
|
+
if (comm === 'systemd') parents.add(ppid);
|
|
50
|
+
current = ppid;
|
|
51
|
+
}
|
|
52
|
+
return parents;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
module.exports = { orphanParentPids, MAX_ANCESTRY_STEPS };
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
|
|
10
10
|
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
|
|
11
11
|
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
|
|
12
|
-
51, 52, 53, 54, 55, 56
|
|
12
|
+
51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61
|
|
13
13
|
]
|
|
14
14
|
},
|
|
15
15
|
"walle": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
|
|
26
26
|
81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
|
|
27
27
|
97, 98, 99, 100,
|
|
28
|
-
101
|
|
28
|
+
101, 102, 103, 104, 105
|
|
29
29
|
]
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -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'] },
|
|
@@ -15,6 +15,7 @@ const DEFAULT_SERVICES = ['iMessage', 'SMS', 'RCS'];
|
|
|
15
15
|
const AdapterBase = require('./adapter-base');
|
|
16
16
|
const { decodeAttributedBodyText } = require('../lib/imessage/typedstream-text');
|
|
17
17
|
const { editedCurrentText } = require('../lib/imessage/bplist-min');
|
|
18
|
+
const { boolFlag } = require('../lib/env-flags');
|
|
18
19
|
|
|
19
20
|
function normalizeServices(services) {
|
|
20
21
|
const requested = Array.isArray(services) ? services : [];
|
|
@@ -217,6 +218,16 @@ class IMessageAdapter extends AdapterBase {
|
|
|
217
218
|
}
|
|
218
219
|
}
|
|
219
220
|
|
|
221
|
+
// D-5/S-21 (shared-memory WP-2, Q-2): this adapter is OFF on a `role:'box'` machine — the box
|
|
222
|
+
// shares the hub's Apple ID (3/3 probed guids matched), so both Macs would ingest the same
|
|
223
|
+
// chat.db and double-extract it. A machine with a DIFFERENT Apple ID opts in with
|
|
224
|
+
// WALLE_IMESSAGE_INGEST=1. Ingest itself is host-local and never duplicates rows (deterministic
|
|
225
|
+
// ids), so a role we cannot read keeps today's behaviour: the adapter stays active.
|
|
226
|
+
function imessageIngestEnabled(placement) {
|
|
227
|
+
if (!placement || placement.role !== 'box') return true;
|
|
228
|
+
return boolFlag('WALLE_IMESSAGE_INGEST', false);
|
|
229
|
+
}
|
|
230
|
+
|
|
220
231
|
// D-18: service-alert-store's addServiceAlert() is async and needs a kvStore
|
|
221
232
|
// ({getKv,setKv}) rather than a single call, so this is the "tiny helper"
|
|
222
233
|
// the WP-1 brief calls for -- shared by agent.js and lib/scheduler-worker-jobs.js
|
|
@@ -248,5 +259,6 @@ function buildHealthReporter(kvStore, { addServiceAlert, fdaGuidance } = {}) {
|
|
|
248
259
|
module.exports = IMessageAdapter;
|
|
249
260
|
module.exports.IMessageAdapter = IMessageAdapter;
|
|
250
261
|
module.exports.buildHealthReporter = buildHealthReporter;
|
|
262
|
+
module.exports.imessageIngestEnabled = imessageIngestEnabled;
|
|
251
263
|
module.exports.normalizeServices = normalizeServices;
|
|
252
264
|
module.exports.DEFAULT_SERVICES = DEFAULT_SERVICES;
|
package/template/wall-e/agent.js
CHANGED
|
@@ -103,6 +103,8 @@ const {
|
|
|
103
103
|
// interval engine) is gone with it — on-demand skill execution in skill-planner
|
|
104
104
|
// is untouched.
|
|
105
105
|
const { runDueJobs, recoverLostRuns } = require('./jobs/job-runner');
|
|
106
|
+
// shared-memory WP-2 (D-5/S-17/S-19): the derivation-home gate for `placement: 'home'` jobs.
|
|
107
|
+
const { runIfHome } = require('./lib/derivation-home');
|
|
106
108
|
const { getIncidentLog } = require('./lib/incident-log');
|
|
107
109
|
const { ProcessErrorReporter } = require('./lib/process-error-reporter');
|
|
108
110
|
const errorSink = require('./lib/error-sink');
|
|
@@ -526,8 +528,8 @@ async function main() {
|
|
|
526
528
|
// When CTM is unreachable the bridge fails closed to the local rules (no hang).
|
|
527
529
|
try {
|
|
528
530
|
const { configure: configurePermissions } = require('./tools/permission-checker');
|
|
529
|
-
const
|
|
530
|
-
configurePermissions({ ctmUrl:
|
|
531
|
+
const { resolveApiBaseUrl } = require('./memory/ctm-context-client'); // R-7: one resolver; WALLE_CTM_API=0 = bridge off
|
|
532
|
+
configurePermissions({ ctmUrl: resolveApiBaseUrl(process.env) || null, ctmToken: process.env.CTM_TOKEN });
|
|
531
533
|
} catch (e) { console.warn('[wall-e] permission bridge configure failed:', e.message); }
|
|
532
534
|
|
|
533
535
|
let eventLoopWatchdog = null;
|
|
@@ -1279,6 +1281,7 @@ async function main() {
|
|
|
1279
1281
|
// preserved.
|
|
1280
1282
|
scheduler.register({
|
|
1281
1283
|
name: 'ingest',
|
|
1284
|
+
placement: 'any', // D-5(a): host-local ingest runs where the data lives (the iMessage adapter gates itself, S-21)
|
|
1282
1285
|
// WP-1b (E-6 follow-up): derived from enabled poll adapters' manifests
|
|
1283
1286
|
// (adapters/registry.js:ingestNetworkClass) — local-only dev still
|
|
1284
1287
|
// ingests local sources (imessage) while enabled Slack keeps it external.
|
|
@@ -1303,6 +1306,7 @@ async function main() {
|
|
|
1303
1306
|
// projection; it is the only way coding-session text reaches the brain (D-11a).
|
|
1304
1307
|
scheduler.register({
|
|
1305
1308
|
name: 'conversation-subscriber',
|
|
1309
|
+
placement: 'any', // D-11a: pulls CTM's own conversation feed — host-local
|
|
1306
1310
|
networkClass: 'local',
|
|
1307
1311
|
run: () => require('./memory/conversation-subscriber').runConversationSubscriberOnce({ brain }),
|
|
1308
1312
|
intervalMs: clampInterval(config.intervals?.conversation_subscriber_ms, 30 * 1000),
|
|
@@ -1316,8 +1320,9 @@ async function main() {
|
|
|
1316
1320
|
|
|
1317
1321
|
scheduler.register({
|
|
1318
1322
|
name: 'memory-consolidation',
|
|
1323
|
+
placement: 'home', // D-5(c)/S-17: derives from replicated walle-coding rows — derivation home only
|
|
1319
1324
|
networkClass: 'local', // WP-6: decisions are the deterministic defaultDecision (no model call); FTS search + loopback CTM reads only
|
|
1320
|
-
run: () => require('./memory/consolidation').runMemoryConsolidation({ brain }),
|
|
1325
|
+
run: () => runIfHome('memory-consolidation', () => require('./memory/consolidation').runMemoryConsolidation({ brain })),
|
|
1321
1326
|
intervalMs: clampInterval(config.intervals?.memory_consolidation_ms, 60 * 60 * 1000),
|
|
1322
1327
|
pool: 'maintenance',
|
|
1323
1328
|
lane: 2,
|
|
@@ -1350,6 +1355,7 @@ async function main() {
|
|
|
1350
1355
|
|
|
1351
1356
|
scheduler.register({
|
|
1352
1357
|
name: 'think',
|
|
1358
|
+
placement: 'any', // D-5(d): extraction of locally ingested pending memories runs everywhere (think gates only its derived steps, S-18/S-20)
|
|
1353
1359
|
networkClass: 'llm',
|
|
1354
1360
|
// WP-7: think's model calls stop 15 s before the job request deadline. A worker run reads that deadline
|
|
1355
1361
|
// from its runtime execution context; this in-process run (no worker pool) is bounded by the same constant.
|
|
@@ -1375,6 +1381,7 @@ async function main() {
|
|
|
1375
1381
|
|
|
1376
1382
|
scheduler.register({
|
|
1377
1383
|
name: 'jobs',
|
|
1384
|
+
placement: 'any', // D-5(c)/S-16: the engine gates derived action_kinds itself; builtin jobs run everywhere
|
|
1378
1385
|
networkClass: 'llm',
|
|
1379
1386
|
// surface-redesign WP-3 §5: ONE scheduler job over the jobs/job_runs
|
|
1380
1387
|
// records, replacing the `tasks` and `skills` registrations. runDueJobs
|
|
@@ -1406,8 +1413,9 @@ async function main() {
|
|
|
1406
1413
|
|
|
1407
1414
|
scheduler.register({
|
|
1408
1415
|
name: 'reflect',
|
|
1416
|
+
placement: 'home', // D-5(c)/S-19: rewrites entities from every node's rows (LWW churn) — derivation home only
|
|
1409
1417
|
networkClass: 'llm',
|
|
1410
|
-
run: () => reflect.runOnce(),
|
|
1418
|
+
run: () => runIfHome('reflect', () => reflect.runOnce()),
|
|
1411
1419
|
intervalMs: clampInterval(config.intervals?.reflect_ms, 3600000),
|
|
1412
1420
|
pool: 'llm_background',
|
|
1413
1421
|
lane: 2,
|
|
@@ -1427,6 +1435,7 @@ async function main() {
|
|
|
1427
1435
|
|
|
1428
1436
|
scheduler.register({
|
|
1429
1437
|
name: 'backfill',
|
|
1438
|
+
placement: 'any', // host-local backfill over this node's own rows (embeddings are derived per node, id-stable)
|
|
1430
1439
|
// E-6: calls embeddings.batchComputeEmbeddings, which routes to whatever
|
|
1431
1440
|
// embedding provider is configured — MAY hit a remote provider, not
|
|
1432
1441
|
// guaranteed local-Ollama.
|
|
@@ -1463,6 +1472,7 @@ async function main() {
|
|
|
1463
1472
|
// is idempotent (skips if today's already exists) and createBackup is now non-blocking.
|
|
1464
1473
|
scheduler.register({
|
|
1465
1474
|
name: 'daily-backup',
|
|
1475
|
+
placement: 'any', // local sqlite file copy only — every node backs up its own brain file
|
|
1466
1476
|
networkClass: 'local', // local sqlite file copy only
|
|
1467
1477
|
run: async () => {
|
|
1468
1478
|
const r = await brain.ensureDailyBackup();
|
|
@@ -1496,6 +1506,7 @@ async function main() {
|
|
|
1496
1506
|
let walOverThresholdStreak = 0;
|
|
1497
1507
|
scheduler.register({
|
|
1498
1508
|
name: 'wal-checkpoint',
|
|
1509
|
+
placement: 'any', // host-local WAL hygiene for this node's own file
|
|
1499
1510
|
networkClass: 'local', // local sqlite WAL checkpoint/planner-optimize only
|
|
1500
1511
|
worker: false,
|
|
1501
1512
|
workerHeavy: false,
|
|
@@ -1599,6 +1610,7 @@ async function main() {
|
|
|
1599
1610
|
// short brain-owner op (WP-6: the writer is never held for the whole sweep), age-gated + batched. See the 2026-05-31 audit.
|
|
1600
1611
|
scheduler.register({
|
|
1601
1612
|
name: 'brain-retention',
|
|
1613
|
+
placement: 'any', // local table pruning only — each node prunes its own file
|
|
1602
1614
|
networkClass: 'local', // local table pruning only
|
|
1603
1615
|
run: async () => await brain.brainRetentionJob(require('./loops/brain-write').brainWrite),
|
|
1604
1616
|
intervalMs: 24 * 60 * 60 * 1000,
|
|
@@ -1616,12 +1628,62 @@ async function main() {
|
|
|
1616
1628
|
onError: (err) => console.error('[brain-retention] Error:', err.message),
|
|
1617
1629
|
});
|
|
1618
1630
|
|
|
1631
|
+
// shared-memory WP-0 §6.3: give every pre-existing replicated row a v2 clock, one bounded
|
|
1632
|
+
// owner page (2,000 rows) per tick; a no-op once the kv cursor says done. Never boot work.
|
|
1633
|
+
scheduler.register({
|
|
1634
|
+
name: 'brain-clock-seed',
|
|
1635
|
+
placement: 'any', // WP-0 (S-71): this node's own pre-existing rows need their v2 clock locally
|
|
1636
|
+
networkClass: 'local',
|
|
1637
|
+
worker: false,
|
|
1638
|
+
workerHeavy: false,
|
|
1639
|
+
executionClass: 'constant-time-control',
|
|
1640
|
+
run: async () => {
|
|
1641
|
+
const state = require('./brain/brain-sync-store').clockSeedState(brain.getDb());
|
|
1642
|
+
if (state && state.done) return { skipped: true, reason: 'done' };
|
|
1643
|
+
return require('./loops/brain-write').brainWrite('brainSyncClockSeed', { limit: 2000 });
|
|
1644
|
+
},
|
|
1645
|
+
intervalMs: 5000,
|
|
1646
|
+
pool: 'maintenance',
|
|
1647
|
+
lane: 2,
|
|
1648
|
+
priority: 11,
|
|
1649
|
+
startDelayMs: 60000,
|
|
1650
|
+
onError: (err) => console.error('[brain-clock-seed] Error:', err.message),
|
|
1651
|
+
});
|
|
1652
|
+
|
|
1653
|
+
// shared-memory WP-4 §6.7: drive the join import one bounded page per tick, only while a join
|
|
1654
|
+
// is in flight (verifying/importing). A no-op otherwise — a machine that never joins pays
|
|
1655
|
+
// nothing but the kv read. Same owner-routed seam as brain-clock-seed: the job's handle is
|
|
1656
|
+
// read-only, so the page (four replicated tables + their clock rows, sentinel on) runs on the
|
|
1657
|
+
// owner's write connection. The kv cursor makes a killed import resume without duplicates.
|
|
1658
|
+
scheduler.register({
|
|
1659
|
+
name: 'brain-join-import',
|
|
1660
|
+
placement: 'any', // the imported rows land on THIS member's own brain
|
|
1661
|
+
networkClass: 'local',
|
|
1662
|
+
worker: false,
|
|
1663
|
+
workerHeavy: false,
|
|
1664
|
+
executionClass: 'constant-time-control',
|
|
1665
|
+
run: async () => {
|
|
1666
|
+
const state = require('./brain/brain-join').joinStatus(brain.getDb());
|
|
1667
|
+
if (!state || state.state === 'none' || state.state === 'done' || state.state === 'failed') {
|
|
1668
|
+
return { skipped: true, reason: (state && state.state) || 'none' };
|
|
1669
|
+
}
|
|
1670
|
+
return require('./loops/brain-write').brainWrite('brainSyncV2JoinStep', { limit: 5000 });
|
|
1671
|
+
},
|
|
1672
|
+
intervalMs: 2000,
|
|
1673
|
+
pool: 'maintenance',
|
|
1674
|
+
lane: 2,
|
|
1675
|
+
priority: 11,
|
|
1676
|
+
startDelayMs: 75000,
|
|
1677
|
+
onError: (err) => console.error('[brain-join-import] Error:', err.message),
|
|
1678
|
+
});
|
|
1679
|
+
|
|
1619
1680
|
// Model facts sync daemon fallback. LiteLLM supplies broad provider context-
|
|
1620
1681
|
// window/cost FACTS into model_facts ONLY — model-facts-registry-separation-
|
|
1621
1682
|
// session-owned-window WP-3 replaced the old pricing-sync skill (which
|
|
1622
1683
|
// wrote straight into model_registry route rows) in place.
|
|
1623
1684
|
scheduler.register({
|
|
1624
1685
|
name: 'model-facts-sync',
|
|
1686
|
+
placement: 'any', // D-19: the facts catalog is shared, the write is idempotent per node
|
|
1625
1687
|
networkClass: 'external', // fetches the LiteLLM facts catalog
|
|
1626
1688
|
run: async () => {
|
|
1627
1689
|
const sync = require('./skills/_bundled/model-facts-sync/run');
|
|
@@ -1657,6 +1719,7 @@ async function main() {
|
|
|
1657
1719
|
// write through the brain owner.
|
|
1658
1720
|
scheduler.register({
|
|
1659
1721
|
name: 'connections',
|
|
1722
|
+
placement: 'any', // D-12: probes THIS machine's credential surface and writes its own record
|
|
1660
1723
|
networkClass: 'external', // Slack auth.test + the gateway /_status
|
|
1661
1724
|
run: () => runConnectionProbe(),
|
|
1662
1725
|
intervalMs: 300000, // 5 min (D-12)
|
|
@@ -1678,6 +1741,7 @@ async function main() {
|
|
|
1678
1741
|
// dry-run so operators can inspect candidate counts before enabling it.
|
|
1679
1742
|
scheduler.register({
|
|
1680
1743
|
name: 'telemetry:cleanup',
|
|
1744
|
+
placement: 'any', // local telemetry-DB row deletes/redactions on this node's own store
|
|
1681
1745
|
networkClass: 'local', // local telemetry-DB row deletes/redactions only, no outbound sends
|
|
1682
1746
|
run: async () => {
|
|
1683
1747
|
const { runTelemetryCleanup, isTelemetryCleanupLive } = require('./api-walle');
|
|
@@ -1712,6 +1776,7 @@ async function main() {
|
|
|
1712
1776
|
// Weekly coding-agent benchmark suite (Phase 5)
|
|
1713
1777
|
scheduler.register({
|
|
1714
1778
|
name: 'agent-benchmark',
|
|
1779
|
+
placement: 'any', // opt-in per-machine evaluation (heavyEvalJobsEnabled), writes only its own results
|
|
1715
1780
|
networkClass: 'llm',
|
|
1716
1781
|
run: async () => {
|
|
1717
1782
|
const { runAgentBenchmarkSuite, detectRegressions, resolveModelName } = require('./runtime/evaluation/agent-runner');
|
|
@@ -1762,6 +1827,7 @@ async function main() {
|
|
|
1762
1827
|
// Weekly full evaluation loop (Phase 8: benchmarks + regressions + mining + promotions + aggregation)
|
|
1763
1828
|
scheduler.register({
|
|
1764
1829
|
name: 'weekly-eval-loop',
|
|
1830
|
+
placement: 'any', // opt-in per-machine evaluation loop (Sundays, heavyEvalJobsEnabled)
|
|
1765
1831
|
networkClass: 'llm',
|
|
1766
1832
|
run: async () => {
|
|
1767
1833
|
const { run: runWeeklyEval } = require('./runtime/evaluation/weekly-eval-loop');
|
|
@@ -1797,6 +1863,7 @@ async function main() {
|
|
|
1797
1863
|
// is no day-of-week gate because the evaluator owns its own timing.
|
|
1798
1864
|
scheduler.register({
|
|
1799
1865
|
name: 'helper-rules-probe',
|
|
1866
|
+
placement: 'any', // local sqlite read + one owner-path write on this node's own outcome stream
|
|
1800
1867
|
networkClass: 'local', // local sqlite read + one owner-path write, no provider call
|
|
1801
1868
|
run: async () => runRuntimeJob(
|
|
1802
1869
|
'helper-rules-probe',
|
|
@@ -37,7 +37,7 @@ const { handleSkillsApi } = require('./http/skills-api');
|
|
|
37
37
|
const { handleSlackApi } = require('./http/slack-api');
|
|
38
38
|
const { handleSystemApi } = require('./http/system-api');
|
|
39
39
|
const { handleTelemetryApi } = require('./http/telemetry-api');
|
|
40
|
-
const { handleModelProxyProvidersFeed } = require('./http/model-proxy-providers');
|
|
40
|
+
const { handleModelProxyProvidersFeed, handleDelegateDefaultsFeed, handleProviderExport } = require('./http/model-proxy-providers');
|
|
41
41
|
const {
|
|
42
42
|
jsonResponse,
|
|
43
43
|
parseLimit,
|
|
@@ -2334,6 +2334,26 @@ function routeWalleApi(req, res, url, routeHandlers = {}) {
|
|
|
2334
2334
|
errorStatus: apiReadErrorStatus,
|
|
2335
2335
|
});
|
|
2336
2336
|
if (providerFeedHandled !== false) return providerFeedHandled;
|
|
2337
|
+
// WP-1 (docs/remote-box-model-access-2026-10-26.html §6.1): the box's own /delegate defaults, so
|
|
2338
|
+
// the hub can say whether the box can reach the route its pick names. Same loopback guard and the
|
|
2339
|
+
// same dispatch site as the provider feed above.
|
|
2340
|
+
const delegateDefaultsHandled = handleDelegateDefaultsFeed(req, res, url, {
|
|
2341
|
+
isLoopbackRequest: ctmTransportSecurity?.isLoopbackRequest,
|
|
2342
|
+
brainAvailable: !!brain,
|
|
2343
|
+
errorStatus: apiReadErrorStatus,
|
|
2344
|
+
});
|
|
2345
|
+
if (delegateDefaultsHandled !== false) return delegateDefaultsHandled;
|
|
2346
|
+
// WP-5 (docs/remote-box-model-access-2026-10-26.html §5.1 R-5/R-6, §6.4): the hub's CTM reads
|
|
2347
|
+
// ONE route WITH its key here, to copy it onto a paired box on an explicit click. Same loopback
|
|
2348
|
+
// guard and the same dispatch site as the two leaves above — it is the only route that returns a
|
|
2349
|
+
// credential, and loopback is what confines it to this host.
|
|
2350
|
+
const providerExportHandled = handleProviderExport(req, res, url, {
|
|
2351
|
+
readBrain,
|
|
2352
|
+
isLoopbackRequest: ctmTransportSecurity?.isLoopbackRequest,
|
|
2353
|
+
brainAvailable: !!brain,
|
|
2354
|
+
errorStatus: apiReadErrorStatus,
|
|
2355
|
+
});
|
|
2356
|
+
if (providerExportHandled !== false) return providerExportHandled;
|
|
2337
2357
|
if (url.pathname === '/api/wall-e/background/completion' && req.method === 'POST') {
|
|
2338
2358
|
if (!brain || !ensureBrainInit()) return jsonResponse(res, { error: 'Brain module not available' }, 503), true;
|
|
2339
2359
|
return handleBackgroundCompletionApi(req, res, url, { brain });
|
|
@@ -1953,7 +1953,7 @@ function printHelp() {
|
|
|
1953
1953
|
node wall-e/bin/train-gemma-e4b-tooluse.js validate-dataset --output-dir /tmp/run
|
|
1954
1954
|
node wall-e/bin/train-gemma-e4b-tooluse.js dry-run-train --output-dir /tmp/run --base-model /path/to/base
|
|
1955
1955
|
node wall-e/bin/train-gemma-e4b-tooluse.js train --output-dir /tmp/run --base-model /path/to/base --iters 600 --max-seq-length 8192
|
|
1956
|
-
node wall-e/bin/train-gemma-e4b-tooluse.js train --backend cuda --remote-host
|
|
1956
|
+
node wall-e/bin/train-gemma-e4b-tooluse.js train --backend cuda --remote-host dgx-spark --preset best-practice --output-dir /tmp/run --base-model /path/to/base --remote-base-model ~/models/gemma-4-E4B-it
|
|
1957
1957
|
node wall-e/bin/train-gemma-e4b-tooluse.js register-candidate --output-dir /tmp/run --alias gemma-e4b-tooluse-v1
|
|
1958
1958
|
|
|
1959
1959
|
Dataset export options:
|
|
@@ -2049,7 +2049,7 @@ Backend / DGX Spark (CUDA) options:
|
|
|
2049
2049
|
--backend mlx|cuda mlx = local Metal (default); cuda = PyTorch/PEFT/bitsandbytes
|
|
2050
2050
|
--load-in-4bit true|false NF4 QLoRA on the CUDA path (default true)
|
|
2051
2051
|
--remote-host user@host run the CUDA launcher on the Spark over ssh/rsync
|
|
2052
|
-
(e.g.
|
|
2052
|
+
(e.g. dgx-spark, an alias naming the login); omit for a local CUDA box
|
|
2053
2053
|
--remote-root path remote run root (default ~/walle-training)
|
|
2054
2054
|
--remote-base-model path remote-side base model path on the Spark
|
|
2055
2055
|
--remote-python path remote venv python (default ~/.cuda-train-env/bin/python3)
|
|
@@ -48,9 +48,9 @@ const TOOL_PROXY_TIMEOUTS_MS = Object.freeze({
|
|
|
48
48
|
walle_lookup_context: 60000, walle_context_hint: 60000,
|
|
49
49
|
walle_postflight_check: 60000, walle_search_sessions: 60000,
|
|
50
50
|
walle_get_session: 60000, walle_context_pack: 90000,
|
|
51
|
-
ask_walle: 240000, walle_worker_wait: 545000,
|
|
51
|
+
ask_walle: 240000, walle_worker_wait: 545000, walle_landing_wait: 545000, // WP-4 §6.4: the landing wait polls up to 540000 ms; its proxy deadline outlasts it.
|
|
52
52
|
walle_imessage_search: 10000, walle_imessage_read_chat: 10000,
|
|
53
|
-
walle_imessage_list_chats: 10000,
|
|
53
|
+
walle_imessage_list_chats: 10000, hub_exec: 125000, // hub bridge §6.4: exec 120000 + the client's 2 s grace (memory/hub-bridge-client.js) + 2 s HTTP grace = 124000; 125000 outlasts it.
|
|
54
54
|
walle_delegate_implementation: LAUNCH_TOOL_PROXY_TIMEOUT_MS, walle_resume_worker: LAUNCH_TOOL_PROXY_TIMEOUT_MS, // R-3: the daemon's own CTM deadline is 30000 (mcp-server.js, delegate + resume) + 5000
|
|
55
55
|
});
|
|
56
56
|
|
|
@@ -170,9 +170,9 @@ function _localControlPlaneEnabled() {
|
|
|
170
170
|
async function _localControlResponseOne(message) {
|
|
171
171
|
// WP-4 §6.4: the caller harness's `explore` cell lives in the daemon (this process owns no
|
|
172
172
|
// brain): read-only endpoint, existing breaker machinery, 1500 ms bound, fail-open 'on'.
|
|
173
|
-
const options = message
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
const options = await require('../memory/hub-bridge-client').controlPlaneOptions(message, { // R-1/R-2/WP-2/WP-3: this file is at a frozen ceiling, so the gate, the hub context and the list_changed timer live in hub-bridge-client.js
|
|
174
|
+
writeMessage, leadGuidance: () => fetchExploreCellState({ agent: leadAgentFromClientInfo(message.params?.clientInfo), requestFn: (path) => _executeDaemonRequest(() => httpJsonGet({ host: process.env.WALLE_HOST || '127.0.0.1', port: _wallePort(), path })) }).then((explore) => ({ explore })),
|
|
175
|
+
});
|
|
176
176
|
let control = handleProtocolMessage(message, options);
|
|
177
177
|
if (!control.handled) {
|
|
178
178
|
control = require('../mcp-contract').handleControlMessage(message, options);
|