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
|
@@ -41,6 +41,30 @@
|
|
|
41
41
|
return error;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
// D-7/§6.4 (AC-4b): the muted status block above the PE list — one line per member whose status is
|
|
45
|
+
// not `ok` (`''` when all answered). Local to this module (the Recent pane's copy is a different surface).
|
|
46
|
+
function fleetStatusBlocks(machines, escape) {
|
|
47
|
+
const blocks = [];
|
|
48
|
+
for (const machine of Array.isArray(machines) ? machines : []) {
|
|
49
|
+
if (!machine || machine.status === 'ok') continue;
|
|
50
|
+
const name = escape(String(machine.machine_name || machine.machine_id || ''));
|
|
51
|
+
if (machine.status === 'stale') blocks.push(`${name}: showing its list from ${fleetAgeText(machine.as_of)} ago`);
|
|
52
|
+
else if (machine.status === 'timeout') blocks.push(`${name} didn't answer in time — its sessions are missing`);
|
|
53
|
+
else if (machine.status === 'error') blocks.push(`${name} returned an error — its sessions are missing`);
|
|
54
|
+
else blocks.push(`${name} is unreachable — its sessions are missing`);
|
|
55
|
+
}
|
|
56
|
+
return blocks.length ? `<div class="pe-fleet-status" role="status">${blocks.map((block) => `<div>${block}</div>`).join('')}</div>` : '';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** `<age>` bucket for §6.4's stale line; `asOf` is the envelope's epoch-ms `as_of`. */
|
|
60
|
+
function fleetAgeText(asOf, now = Date.now()) {
|
|
61
|
+
const seconds = Math.floor((Number(now) - Number(asOf)) / 1000);
|
|
62
|
+
if (!Number.isFinite(seconds) || seconds < 60) return 'just now';
|
|
63
|
+
if (seconds < 3600) return `${Math.floor(seconds / 60)}m`;
|
|
64
|
+
if (seconds < 86400) return `${Math.floor(seconds / 3600)}h`;
|
|
65
|
+
return `${Math.floor(seconds / 86400)}d`;
|
|
66
|
+
}
|
|
67
|
+
|
|
44
68
|
function cancelBody(response, owner, reportFailure) {
|
|
45
69
|
try {
|
|
46
70
|
if (response && response.body && response.body.locked) return true;
|
|
@@ -462,24 +486,32 @@
|
|
|
462
486
|
if (!(await verifyActionContext(context))) return false;
|
|
463
487
|
const list = context.targets['pe-conv-list'];
|
|
464
488
|
if (doc.getElementById('pe-conv-list') !== list) return false;
|
|
465
|
-
const
|
|
489
|
+
const escape = formatters.escape;
|
|
490
|
+
const timeAgo = formatters.timeAgo;
|
|
491
|
+
// AC-4b/D-6 exception: without `scope=fleet` the route answers a bare array; with it, the
|
|
492
|
+
// `{ conversations, machines, partial }` envelope. One code path accepts both.
|
|
493
|
+
const convs = Array.isArray(data) ? data : (Array.isArray(data?.conversations) ? data.conversations : []);
|
|
494
|
+
const statusHtml = fleetStatusBlocks(data && data.machines, escape);
|
|
495
|
+
const clickArg = (value) => escape(String(value || '')).replace(/'/g, ''');
|
|
466
496
|
if (!convs.length) {
|
|
467
|
-
const emptyHtml = '<div class="pe-empty-state"><h3>No Conversations Imported</h3><p>Click "Import All Sessions" to copy session conversations into the database.</p></div>';
|
|
497
|
+
const emptyHtml = statusHtml + '<div class="pe-empty-state"><h3>No Conversations Imported</h3><p>Click "Import All Sessions" to copy session conversations into the database.</p></div>';
|
|
468
498
|
if (!(await verifyActionContext(context)) || doc.getElementById('pe-conv-list') !== list
|
|
469
499
|
|| !claimPanePublication(context, 'pe-conv-list')) return false;
|
|
470
500
|
list.innerHTML = emptyHtml;
|
|
471
501
|
return true;
|
|
472
502
|
}
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
|
|
503
|
+
const html = statusHtml + convs.map(c => {
|
|
504
|
+
// S-17/D-12: a fleet-stamped row shows its ◈ machine chip and its view is read on that box.
|
|
505
|
+
const chip = typeof machineChipHtml === 'function' ? machineChipHtml(c) : '';
|
|
506
|
+
return `<div class="prompt-item" style="border-left-color:var(--green)" onclick="PE.viewConversation('${clickArg(c.session_id)}', '${clickArg(c.machine)}')">
|
|
476
507
|
<div class="prompt-title">${escape(c.title || c.first_message?.slice(0, 60) || c.session_id.slice(0, 8))}</div>
|
|
477
|
-
<div class="prompt-meta"
|
|
508
|
+
<div class="prompt-meta">${chip}
|
|
478
509
|
<span style="color:var(--accent)">${escape(c.project_path?.replace(/^\/Users\/[^/]+\//, '~/') || '')}</span>
|
|
479
510
|
<span>${c.user_msg_count} user / ${c.assistant_msg_count} assistant msgs</span>
|
|
480
511
|
<span>${c.git_branch || ''}</span><span>${timeAgo(c.imported_at)}</span>
|
|
481
512
|
</div>
|
|
482
|
-
</div
|
|
513
|
+
</div>`;
|
|
514
|
+
}).join('');
|
|
483
515
|
if (!(await verifyActionContext(context)) || doc.getElementById('pe-conv-list') !== list
|
|
484
516
|
|| !claimPanePublication(context, 'pe-conv-list')) return false;
|
|
485
517
|
list.innerHTML = html;
|
|
@@ -146,7 +146,11 @@
|
|
|
146
146
|
typeof host.agentOf !== 'function' || typeof host.repopulate !== 'function') return null;
|
|
147
147
|
const session = host.session(sessionId);
|
|
148
148
|
const agent = session && host.agentOf(session);
|
|
149
|
-
|
|
149
|
+
// OpenCode joins the owner-scoped contexts with WP-2: its Lead tab is a real private read/write
|
|
150
|
+
// surface (the options GET and the launch-model POST). A tab before its first prompt carries no
|
|
151
|
+
// owner tuple, which the descriptor below already models as one of its stable non-'known' kinds.
|
|
152
|
+
if (!session || (requestedAgent && requestedAgent !== agent)
|
|
153
|
+
|| (agent !== 'claude' && agent !== 'codex' && agent !== 'opencode' && agent !== 'dsh')) return null;
|
|
150
154
|
const lease = access.capture();
|
|
151
155
|
if (!lease || access.isCurrent(lease) !== true) return null;
|
|
152
156
|
const hostVersion = options.getHostVersion();
|
|
@@ -655,7 +659,7 @@
|
|
|
655
659
|
if (!plainRecord(owner)) return null;
|
|
656
660
|
if (Object.keys(owner).length !== OWNER_KEYS.length) return null;
|
|
657
661
|
for (const key of OWNER_KEYS) if (!Object.prototype.hasOwnProperty.call(owner, key)) return null;
|
|
658
|
-
if (owner.agentType !== 'claude' && owner.agentType !== 'codex') return null;
|
|
662
|
+
if (owner.agentType !== 'claude' && owner.agentType !== 'codex' && owner.agentType !== 'dsh') return null;
|
|
659
663
|
if (!actionOwnerText(owner.ctmSessionId) || !actionOwnerText(owner.providerSessionId)) return null;
|
|
660
664
|
if (!actionRevision(owner.processGeneration)) return null;
|
|
661
665
|
return {
|
|
@@ -2592,17 +2592,16 @@ function _sendSessionSearchText(s) {
|
|
|
2592
2592
|
s?.cwd,
|
|
2593
2593
|
s?.branch,
|
|
2594
2594
|
s?.provider,
|
|
2595
|
-
s?.model,
|
|
2595
|
+
s?.model, s?.machineName, // fleet WP-5: typing a machine name finds its sessions
|
|
2596
2596
|
s?.pid ? String(s.pid) : '',
|
|
2597
2597
|
].filter(Boolean).join(' ').toLowerCase();
|
|
2598
2598
|
}
|
|
2599
2599
|
|
|
2600
2600
|
function _sendSessionIcon(s) {
|
|
2601
2601
|
const cmd = String(s?.cmd || s?.agent || s?.label || s?.title || '').toLowerCase();
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
return '💻';
|
|
2602
|
+
// WP-2 (S-10, D-4): the robot glyph follows the one command-word decision.
|
|
2603
|
+
const t = window.CtmAgentCommand.detectAgentType(cmd);
|
|
2604
|
+
return (t === 'claude' || t === 'walle') ? '🤖' : '💻';
|
|
2606
2605
|
}
|
|
2607
2606
|
|
|
2608
2607
|
function _appendSendSessionEmpty(container, title, body, icon) {
|
|
@@ -2643,7 +2642,7 @@ function _buildSendSessionItem(s, onSend) {
|
|
|
2643
2642
|
send();
|
|
2644
2643
|
}
|
|
2645
2644
|
});
|
|
2646
|
-
item.append(icon, label, meta);
|
|
2645
|
+
item.append(...[icon, label, (typeof machineSessionChipNode === 'function' && machineSessionChipNode(s, s?.id)) || null, meta].filter(Boolean)); // fleet WP-5: ◈ chip for a box session
|
|
2647
2646
|
return item;
|
|
2648
2647
|
}
|
|
2649
2648
|
|
|
@@ -3036,7 +3035,8 @@ async function loadConversations(parentContext = null) {
|
|
|
3036
3035
|
if (!(await lifetime.verifyActionContext(action))
|
|
3037
3036
|
|| document.getElementById('pe-conv-search') !== searchInput) return false;
|
|
3038
3037
|
const search = searchInput ? (searchInput.value || '') : '';
|
|
3039
|
-
|
|
3038
|
+
// S-16/D-11: PE "Search conversations" always asks fleet-wide; without `scope` the bare local array.
|
|
3039
|
+
const requestUrl = makeApiPath(`/conversations?limit=100${search ? '&search=' + encodeURIComponent(search) : ''}&scope=fleet`);
|
|
3040
3040
|
if (!(await lifetime.verifyActionContext(action)) || document.getElementById('pe-conv-list') !== list) return false;
|
|
3041
3041
|
list.innerHTML = '<div class="pe-empty ctm-load-pending" role="status">Loading conversations...</div>';
|
|
3042
3042
|
|
|
@@ -3082,8 +3082,9 @@ async function importConversations() {
|
|
|
3082
3082
|
return true;
|
|
3083
3083
|
}
|
|
3084
3084
|
|
|
3085
|
-
async function viewConversation(sessionId) {
|
|
3086
|
-
|
|
3085
|
+
async function viewConversation(sessionId, machine = '') {
|
|
3086
|
+
// S-16/AC-4c: a fleet-stamped row is read on the box that owns it (`&machine=`; API() adds `?token=`).
|
|
3087
|
+
const res = await fetch(API(`/conversations/${sessionId}`) + (machine ? '&machine=' + encodeURIComponent(machine) : ''));
|
|
3087
3088
|
const conv = await res.json();
|
|
3088
3089
|
if (conv.error) { toast(conv.error, { type: 'error' }); return; }
|
|
3089
3090
|
const messages = JSON.parse(conv.messages || '[]');
|
|
@@ -5160,7 +5161,7 @@ function init() {
|
|
|
5160
5161
|
peState.activeSessions = [];
|
|
5161
5162
|
for (const [id, s] of state.sessions) {
|
|
5162
5163
|
const meta = s.meta || {};
|
|
5163
|
-
peState.activeSessions.push({ id, label: meta.label || id.slice(0, 8), pid: meta.pid || '', cmd: meta.cmd || 'claude', cwd: meta.cwd || '' });
|
|
5164
|
+
peState.activeSessions.push({ id, label: meta.label || id.slice(0, 8), pid: meta.pid || '', cmd: meta.cmd || 'claude', cwd: meta.cwd || '', machine: meta.machine || '', machineName: meta.machineName || '', machineHealth: meta.machineHealth || '' }); // fleet WP-5: box sessions carry their machine
|
|
5164
5165
|
}
|
|
5165
5166
|
}
|
|
5166
5167
|
}, 2000);
|
|
@@ -150,6 +150,11 @@ const MESSAGE_TABLE = {
|
|
|
150
150
|
"family": "general",
|
|
151
151
|
"envelope": "required"
|
|
152
152
|
},
|
|
153
|
+
"create-accepted": {
|
|
154
|
+
"direction": "s2c",
|
|
155
|
+
"family": "general",
|
|
156
|
+
"envelope": "required"
|
|
157
|
+
},
|
|
153
158
|
"created": {
|
|
154
159
|
"direction": "s2c",
|
|
155
160
|
"family": "general",
|
|
@@ -220,6 +225,11 @@ const MESSAGE_TABLE = {
|
|
|
220
225
|
"family": "general",
|
|
221
226
|
"envelope": "required"
|
|
222
227
|
},
|
|
228
|
+
"host-dead": {
|
|
229
|
+
"direction": "s2c",
|
|
230
|
+
"family": "general",
|
|
231
|
+
"envelope": "required"
|
|
232
|
+
},
|
|
223
233
|
"image-deliver-now": {
|
|
224
234
|
"direction": "c2s",
|
|
225
235
|
"family": "general",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
function buildSegments(facts) {
|
|
13
13
|
const walle = facts.walle || null;
|
|
14
14
|
const ctm = facts.ctm || {};
|
|
15
|
+
const hostDead = facts.hostDead || null;
|
|
15
16
|
const segments = [];
|
|
16
17
|
const keys = [];
|
|
17
18
|
|
|
@@ -44,6 +45,27 @@
|
|
|
44
45
|
keys.push('protocol:1');
|
|
45
46
|
}
|
|
46
47
|
|
|
48
|
+
// WP-2 (docs/external-causality-kill-session-loss-2026-10-27.html §5 D-5, §6, §8 WP-2): an
|
|
49
|
+
// adopted host that died is a fact like any other -- one segment, one fingerprint, dismissed
|
|
50
|
+
// by the same rule. While sessions are still lost the segment carries its OWN 'resume' action
|
|
51
|
+
// (POST /api/sessions/resume-deferred); once the drain resumed them all (remaining === 0) the
|
|
52
|
+
// segment is informational and carries no button.
|
|
53
|
+
const advisoryCount = segments.length; // every pushed segment above is a restart/advisory fact
|
|
54
|
+
let resumePending = false;
|
|
55
|
+
if (hostDead && hostDead.hostId) {
|
|
56
|
+
const total = Math.max(0, Number(hostDead.sessionCount) || 0);
|
|
57
|
+
const remainingRaw = Number(hostDead.remaining);
|
|
58
|
+
const remaining = Number.isFinite(remainingRaw) ? Math.max(0, remainingRaw) : total;
|
|
59
|
+
keys.push(`host-dead:${String(hostDead.fingerprint || `${hostDead.hostId}|${hostDead.at || ''}`)}`);
|
|
60
|
+
const sessions = (n) => `${n} session${n === 1 ? '' : 's'}`;
|
|
61
|
+
if (remaining > 0) {
|
|
62
|
+
segments.push(`${sessions(total)} lost with their host. Resume ${sessions(remaining)}`);
|
|
63
|
+
resumePending = true;
|
|
64
|
+
} else {
|
|
65
|
+
segments.push(`${sessions(total)} lost with their host, ${total} resumed`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
47
69
|
// One action group for every advisory fact (2026-09-16 rev 2): a split button whose
|
|
48
70
|
// default "Restart" restarts CTM + Wall-E and whose menu offers "Restart CTM" /
|
|
49
71
|
// "Restart Wall-E". After a CTM restart the server's stale-client advisory
|
|
@@ -51,8 +73,14 @@
|
|
|
51
73
|
// former per-fact "Reload now" is subsumed. The ONE exception is the blocking protocol
|
|
52
74
|
// mismatch: that tab never auto-reloads and a server restart cannot fix it (the tab's
|
|
53
75
|
// own JS is the stale side), so it gets a plain 'reload' instead of the restart group.
|
|
76
|
+
//
|
|
77
|
+
// The host-death segment owns 'resume' only, so a banner whose only fact is a fully-drained
|
|
78
|
+
// host death shows text with NO button (advisoryCount === 0).
|
|
54
79
|
const blocking = ctm.protocolIncompatible === true;
|
|
55
|
-
const actions =
|
|
80
|
+
const actions = [];
|
|
81
|
+
if (blocking) actions.push('reload');
|
|
82
|
+
else if (advisoryCount > 0) actions.push('restart');
|
|
83
|
+
if (resumePending) actions.push('resume');
|
|
56
84
|
|
|
57
85
|
return { segments, keys, actions, blocking };
|
|
58
86
|
}
|