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
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
// the ONE fingerprint definition lives in lib/session-create/identity.js; this module stamps it on a
|
|
5
5
|
// session it fully owned and compares it on the next same-id create.
|
|
6
6
|
const { createFingerprint } = require('./identity');
|
|
7
|
+
// WP-0a (docs/session-create-accept-then-complete-2026-11-01.html §6.1 D-8): the phase clock and the
|
|
8
|
+
// one `[create]` line. Every phase of this measured create is marked HERE — the provider prepare, the
|
|
9
|
+
// PTY spawn and the `created` send are inside the awaited `handleCreate` call and are the last phase
|
|
10
|
+
// (`providerMs`), so nothing else has to read the clock; `createFingerprint` reads only its nine
|
|
11
|
+
// named fields.
|
|
12
|
+
const { createPhaseClock, formatCreateLine } = require('./create-phases');
|
|
13
|
+
// The one-hop `X-CTM-Forwarded-By` accessor (never a second header reader) and the box's own load.
|
|
14
|
+
const { forwardedByOf } = require('../remote-machine-create');
|
|
15
|
+
const os = require('node:os');
|
|
7
16
|
|
|
8
17
|
// WP-2b (docs/session-model-authority-and-display-2026-10-15.html §9): the COMPLETE prepared-create
|
|
9
18
|
// orchestration, moved verbatim out of server.js's `handleCreatePrepared`. It owns one whole
|
|
@@ -41,6 +50,22 @@ const { createFingerprint } = require('./identity');
|
|
|
41
50
|
// stays the generation runtime's business).
|
|
42
51
|
const _inflightCreates = new Map();
|
|
43
52
|
|
|
53
|
+
/** WP-0a (§6.1): the hop that FORWARDED this create, or '' for a local browser create. */
|
|
54
|
+
function _forwardedBy(ws) {
|
|
55
|
+
return String(forwardedByOf({ ws }) || '');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* WP-0a (§6.1): write the one `[create]` line to the console the host injected (server.js passes the
|
|
60
|
+
* process console). A host that hands over a partial console still prints through the real one, and a
|
|
61
|
+
* console without `log` is skipped rather than thrown from the create's `finally` — telemetry may
|
|
62
|
+
* never turn a completed create into a rejection.
|
|
63
|
+
*/
|
|
64
|
+
function _logCreateLine(console_, line) {
|
|
65
|
+
const sink = console_ && typeof console_.log === 'function' ? console_ : globalThis.console;
|
|
66
|
+
if (sink && typeof sink.log === 'function') sink.log(line);
|
|
67
|
+
}
|
|
68
|
+
|
|
44
69
|
function createPreparedSessionCreate(host) {
|
|
45
70
|
const {
|
|
46
71
|
// Admission / identity
|
|
@@ -81,55 +106,127 @@ function createPreparedSessionCreate(host) {
|
|
|
81
106
|
// WP-4 (§5 D-13): admission, then the in-flight claim, then the unchanged orchestration. The
|
|
82
107
|
// claim's `finally` wraps the WHOLE body, so every exit of the orchestration releases it -- and no
|
|
83
108
|
// line of the orchestration itself had to move to make that true.
|
|
109
|
+
//
|
|
110
|
+
// WP-0a (§6.1 D-8): that same `finally` (now wrapping the ADMISSION too, so a duplicate re-answer,
|
|
111
|
+
// an in-flight refusal and an unrecognized-profile refusal are covered as well) writes exactly ONE
|
|
112
|
+
// `[create]` line per create, from the clock this handler owns — every phase, `providerMs` (the
|
|
113
|
+
// awaited `handleCreate`) included, is marked inside this module. The line is the only new output:
|
|
114
|
+
// no frame, timer, code path or return value changed.
|
|
84
115
|
async function handleCreatePrepared(ws, msg) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
let
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
code: 'create_in_progress',
|
|
113
|
-
id,
|
|
114
|
-
message: 'A create for this session is already in progress',
|
|
115
|
-
});
|
|
116
|
+
// `report` is this create's own running outcome: the phase clock, the exit word, the last typed
|
|
117
|
+
// code and the agent word. It is mutated by the orchestration below and read only by the `finally`.
|
|
118
|
+
const report = {
|
|
119
|
+
clock: createPhaseClock(),
|
|
120
|
+
outcome: 'failed', // 'created' | 'duplicate' | 'refused' | 'failed'; the last is the safe default
|
|
121
|
+
code: '-',
|
|
122
|
+
// The launch's agent, filled in by the orchestration the moment it resolves it (the same
|
|
123
|
+
// detectAgentType call it already made); a refusal before that keeps the client's own word.
|
|
124
|
+
agent: typeof msg?.agentType === 'string' && msg.agentType ? msg.agentType : '-',
|
|
125
|
+
// The last typed code this create reported (a refusal's own code, or sendPreparedError's
|
|
126
|
+
// payload.code). Kept here so the `finally` can name the exit whatever produced it.
|
|
127
|
+
noteCode(value) {
|
|
128
|
+
if (value !== undefined && value !== null && value !== '') this.code = String(value);
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
let id = '';
|
|
132
|
+
let claimedInflight = false;
|
|
133
|
+
try {
|
|
134
|
+
if (host._ownerRecovery.rejectRequest(ws, msg)) return null;
|
|
135
|
+
id = msg?.id || crypto.randomUUID();
|
|
136
|
+
const preparedMsg = { ...(msg || {}), id, _createPhaseClock: report.clock };
|
|
137
|
+
// WP-1 (§6.1 S-3): reject an unrecognized mcp_profile rather than silently defaulting -- pure input validation, deliberately AHEAD of the durable generation reservation (a typo'd profile must never depend on, or consume, store availability).
|
|
138
|
+
const _rawMcpProfile = preparedMsg.mcp_profile ?? preparedMsg.mcpProfile;
|
|
139
|
+
if (_rawMcpProfile !== undefined && _rawMcpProfile !== null && String(_rawMcpProfile).trim() !== '' && !_sessionMcpProfileSetting(preparedMsg)) {
|
|
140
|
+
if (ws?.readyState === 1) _wsSend(ws, JSON.stringify({ type: 'error', code: 'mcp_profile_invalid', message: `Unknown mcp_profile: ${JSON.stringify(_rawMcpProfile)}` }));
|
|
141
|
+
report.outcome = 'refused';
|
|
142
|
+
report.noteCode('mcp_profile_invalid');
|
|
116
143
|
return null;
|
|
117
144
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
145
|
+
// WP-4 (§5 D-12/D-13): a client-supplied id is the Idempotency-Key, and both duplicate answers
|
|
146
|
+
// are decided HERE, before any generation reservation, plan, markSpawning or markLive:
|
|
147
|
+
// - the id names a LIVE session spawned by an identical create => re-answer ONE `created`
|
|
148
|
+
// frame (same builder a fresh create uses) and return it; nothing is attached or rolled back;
|
|
149
|
+
// - an identical create is still in flight => one typed `create_in_progress` refusal.
|
|
150
|
+
// A DIFFERENT fingerprint is NOT a duplicate (D-14): it walks today's path (attach, or the
|
|
151
|
+
// generation runtime's model-switch relaunch) and leaves the other fingerprint's entry alone.
|
|
152
|
+
const fingerprint = msg?.id ? createFingerprint(preparedMsg) : '';
|
|
153
|
+
if (fingerprint) {
|
|
154
|
+
const live = getSession(id);
|
|
155
|
+
if (ws && live?.ptyProcess && live._createFingerprint === fingerprint) {
|
|
156
|
+
sendNativeSessionCreated(ws, live);
|
|
157
|
+
report.outcome = 'duplicate';
|
|
158
|
+
return live;
|
|
159
|
+
}
|
|
160
|
+
const inFlight = _inflightCreates.get(id);
|
|
161
|
+
if (inFlight && inFlight.fingerprint === fingerprint) {
|
|
162
|
+
sendPreparedError(ws, {
|
|
163
|
+
type: 'error',
|
|
164
|
+
code: 'create_in_progress',
|
|
165
|
+
id,
|
|
166
|
+
message: 'A create for this session is already in progress',
|
|
167
|
+
});
|
|
168
|
+
report.outcome = 'duplicate';
|
|
169
|
+
report.noteCode('create_in_progress');
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
if (!inFlight) { _inflightCreates.set(id, { fingerprint }); claimedInflight = true; }
|
|
173
|
+
}
|
|
174
|
+
// WP-0a (§6.1): admission (owner recovery, input validation, both idempotency answers) ends here.
|
|
175
|
+
report.clock.mark('admitMs');
|
|
176
|
+
// WP-2 (§6.2 D-2): the box says `create-accepted` ONCE, the instant admission is over and
|
|
177
|
+
// BEFORE the first slow phase. Every awaited phase from here on (the generation reservation,
|
|
178
|
+
// launch planning, the scrollback/rung/preflight work, the codex-MCP readiness await, the PTY
|
|
179
|
+
// spawn and the `created` send) is a wait the hub's phase-A timer would otherwise burn as a
|
|
180
|
+
// timeout on a loaded box, so the acceptance is the last thing said before the first of them.
|
|
181
|
+
// The three exits ABOVE return before this line and therefore never accept: the live duplicate
|
|
182
|
+
// (D-12) and the in-flight duplicate (D-13) already answer for themselves, and an unrecognized
|
|
183
|
+
// mcp_profile (WP-1) is a refusal. Same injected `_wsSend` and the same `readyState === 1` gate
|
|
184
|
+
// the mcp_profile refusal above uses; the create's own flow is otherwise untouched.
|
|
185
|
+
if (ws && ws.readyState === 1) {
|
|
186
|
+
try {
|
|
187
|
+
_wsSend(ws, JSON.stringify({
|
|
188
|
+
type: 'create-accepted',
|
|
189
|
+
id,
|
|
190
|
+
load1: Math.round(os.loadavg()[0] * 10) / 10,
|
|
191
|
+
cores: os.cpus().length,
|
|
192
|
+
at: Date.now(),
|
|
193
|
+
}));
|
|
194
|
+
} catch { /* expected: create-accepted is advisory — a socket that cannot take it is the hub's own close/timeout path, and the create proceeds */ }
|
|
195
|
+
}
|
|
196
|
+
const created = await _prepareCreateAdmitted(ws, msg, preparedMsg, id, fingerprint, report);
|
|
197
|
+
report.outcome = created ? 'created' : 'failed';
|
|
198
|
+
return created;
|
|
122
199
|
} finally {
|
|
123
|
-
if (
|
|
200
|
+
if (claimedInflight) _inflightCreates.delete(id);
|
|
201
|
+
_logCreateLine(console, formatCreateLine({
|
|
202
|
+
id,
|
|
203
|
+
agent: report.agent,
|
|
204
|
+
forwardedBy: _forwardedBy(ws),
|
|
205
|
+
outcome: report.outcome,
|
|
206
|
+
code: report.code,
|
|
207
|
+
clock: report.clock,
|
|
208
|
+
load1: Math.round(os.loadavg()[0] * 10) / 10,
|
|
209
|
+
cores: os.cpus().length,
|
|
210
|
+
}));
|
|
124
211
|
}
|
|
125
212
|
}
|
|
126
213
|
|
|
127
214
|
// The orchestration itself: byte-for-byte the body that used to be handleCreatePrepared's, from
|
|
128
215
|
// the generation reservation on, plus the one D-11 fingerprint stamp on the owned success path.
|
|
129
216
|
// Split out ONLY so the D-13 claim above can wrap every exit.
|
|
130
|
-
async function _prepareCreateAdmitted(ws, msg, preparedMsg, id, fingerprint) {
|
|
217
|
+
async function _prepareCreateAdmitted(ws, msg, preparedMsg, id, fingerprint, report) {
|
|
218
|
+
// WP-0a (§6.1 S-7): one `clock.mark(key)` after each awaited phase of this orchestration. The
|
|
219
|
+
// clock is the one carried on the prepared message, so provider-process.js and response.js mark
|
|
220
|
+
// the SAME clock across the whole create (see lib/session-create/create-phases.js).
|
|
221
|
+
const clock = report.clock;
|
|
131
222
|
const reserved = _codingSessionGenerationRuntime.revalidateReservation(await _codingSessionGenerationRuntime.reserveSessionGeneration(id));
|
|
132
|
-
|
|
223
|
+
clock.mark('reserveMs');
|
|
224
|
+
if (!reserved.ok) {
|
|
225
|
+
recordSessionDiagnostic(id, 'launch-generation-refused', { code: reserved.code, message: reserved.message });
|
|
226
|
+
report.noteCode(reserved.code);
|
|
227
|
+
if (ws?.readyState === 1) _wsSend(ws, JSON.stringify({ type: 'error', code: reserved.code, message: `Launch refused: ${reserved.message}` }));
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
133
230
|
const generation = reserved.generation;
|
|
134
231
|
// WP-15e: an explicit (non-restore) create for a blocked id is the user's resume-from-store launch; drop the block.
|
|
135
232
|
if (msg?.id && !preparedMsg._isRestore && isSessionResumeBlocked(id)) { clearSessionResumeBlocked(id); const blocked = getSession(id); if (blocked) blocked._resumeBlocked = false; }
|
|
@@ -138,12 +235,14 @@ function createPreparedSessionCreate(host) {
|
|
|
138
235
|
if (!path.isAbsolute(requestedCwd)) requestedCwd = path.join(serverConfig.HOME || '', requestedCwd);
|
|
139
236
|
try {
|
|
140
237
|
await fs.promises.mkdir(requestedCwd, { recursive: true });
|
|
238
|
+
clock.mark('mkdirMs');
|
|
141
239
|
preparedMsg.cwd = requestedCwd;
|
|
142
240
|
preparedMsg.createCwd = false;
|
|
143
241
|
if (ws?.readyState === 1) {
|
|
144
242
|
_wsSend(ws, JSON.stringify({ type: 'toast', message: `Created folder ${requestedCwd}`, level: 'success' }));
|
|
145
243
|
}
|
|
146
244
|
} catch (error) {
|
|
245
|
+
report.noteCode('launch_cwd_create_failed');
|
|
147
246
|
if (ws?.readyState === 1) {
|
|
148
247
|
_wsSend(ws, JSON.stringify({ type: 'error', code: 'launch_cwd_create_failed', message: `Could not create folder: ${error.message}` }));
|
|
149
248
|
}
|
|
@@ -151,6 +250,9 @@ function createPreparedSessionCreate(host) {
|
|
|
151
250
|
}
|
|
152
251
|
}
|
|
153
252
|
const initialAgentType = detectAgentType(preparedMsg.cmd || preparedMsg.shell || serverConfig.SHELL || '/bin/zsh');
|
|
253
|
+
// WP-0a (§6.1): the agent word for the `[create]` line, taken from the launch's own detection
|
|
254
|
+
// (never a second call site), so the line can never disagree with the plan that was built.
|
|
255
|
+
report.agent = initialAgentType || report.agent;
|
|
154
256
|
const initialResume = extractResumeTarget(initialAgentType, Array.isArray(preparedMsg.args) ? preparedMsg.args : []);
|
|
155
257
|
const launchCwd = String(preparedMsg.cwd || serverConfig.HOME || '').replace(/^~/, serverConfig.HOME);
|
|
156
258
|
// WI-6 item 5: only ever computed when the caller hasn't already supplied one — reused
|
|
@@ -172,6 +274,7 @@ function createPreparedSessionCreate(host) {
|
|
|
172
274
|
// declared 'interactive' class (no downgrade needed here, unlike the deferred
|
|
173
275
|
// auto-resume path in _startDeferredRestoreSessionNow).
|
|
174
276
|
}, { timeoutMs: 10_000 });
|
|
277
|
+
clock.mark('metaMs');
|
|
175
278
|
_cacheSessionOwnershipProjection(id, launchMetadata?.resolved || launchMetadata || null);
|
|
176
279
|
const mcpProfileSetting = _sessionMcpProfileSetting(preparedMsg); // WP-6/WP-1: '' = no setting (unrecognized already rejected above)
|
|
177
280
|
const warmPlanInputs = await _launchPlanWarmInputs({
|
|
@@ -180,6 +283,7 @@ function createPreparedSessionCreate(host) {
|
|
|
180
283
|
launchMetadata,
|
|
181
284
|
mcpProfile: mcpProfileSetting,
|
|
182
285
|
});
|
|
286
|
+
clock.mark('warmMs');
|
|
183
287
|
const prepared = await _launchPlanCoordinator.prepare(id, generation, {
|
|
184
288
|
cmd: preparedMsg.cmd || preparedMsg.shell || serverConfig.SHELL || '/bin/zsh',
|
|
185
289
|
args: Array.isArray(preparedMsg.args) ? preparedMsg.args : [],
|
|
@@ -201,6 +305,7 @@ function createPreparedSessionCreate(host) {
|
|
|
201
305
|
lane: 'interactive', // always a real launch, never launch-plan-pool maintenance
|
|
202
306
|
transcriptTrashRoot: SESSION_TRANSCRIPT_TRASH_ROOT, // WP-2 R8: findTrashedTranscript() seam
|
|
203
307
|
}, previousPlan ? { replacesPlan: previousPlan } : undefined);
|
|
308
|
+
clock.mark('planMs');
|
|
204
309
|
if (prepared?.plan) _noteLaunchPlanReadinessGeneration(prepared.plan);
|
|
205
310
|
return prepared;
|
|
206
311
|
};
|
|
@@ -223,14 +328,17 @@ function createPreparedSessionCreate(host) {
|
|
|
223
328
|
result = await launchPlanPromise;
|
|
224
329
|
}
|
|
225
330
|
} catch (error) {
|
|
331
|
+
report.noteCode(error?.code || 'launch_plan_failed');
|
|
226
332
|
sendPreparedError(ws, { type: 'error', code: error?.code || 'launch_plan_failed', message: 'Could not prepare this session launch.' });
|
|
227
333
|
return null;
|
|
228
334
|
}
|
|
229
335
|
if (result.status === 'stale') return null;
|
|
230
336
|
const rungHook = await _resolveMissingTranscriptRung(id, result.plan, initialAgentType);
|
|
337
|
+
clock.mark('rungMs');
|
|
231
338
|
if (rungHook.restored) {
|
|
232
339
|
// The archived copy is back on disk: prepare the launch again and continue natively.
|
|
233
340
|
try { result = await runLaunchPlan(result.plan); } catch (error) {
|
|
341
|
+
report.noteCode(error?.code || 'launch_plan_failed');
|
|
234
342
|
sendPreparedError(ws, { type: 'error', code: error?.code || 'launch_plan_failed', message: 'Could not prepare this session launch.' });
|
|
235
343
|
return null;
|
|
236
344
|
}
|
|
@@ -239,6 +347,7 @@ function createPreparedSessionCreate(host) {
|
|
|
239
347
|
const resumePreflight = rungHook.restored ? result.plan.resume?.preflight : (rungHook.preflight || result.plan.resume?.preflight);
|
|
240
348
|
if (result.plan.blockReason) {
|
|
241
349
|
const code = String(result.plan.blockReason.code || 'launch_blocked');
|
|
350
|
+
report.noteCode(code);
|
|
242
351
|
_launchPlanCoordinator.markBlocked(id, generation, code, result.plan);
|
|
243
352
|
const notifiedAsResumeFailure = resumePreflight?.ok === false
|
|
244
353
|
? _notifyPreparedResumePreflightFailure(id, ws, result.plan.agentType || initialAgentType, resumePreflight)
|
|
@@ -259,13 +368,16 @@ function createPreparedSessionCreate(host) {
|
|
|
259
368
|
try { await transcriptSource.copyBakToMissingLive(resumePreflight.transcriptPath); }
|
|
260
369
|
catch (error) {
|
|
261
370
|
_launchPlanCoordinator.markFailed(id, generation, 'launch_transcript_restore_failed', result.plan);
|
|
371
|
+
report.noteCode('launch_transcript_restore_failed');
|
|
262
372
|
if (ws?.readyState === 1) {
|
|
263
373
|
_wsSend(ws, JSON.stringify({ type: 'error', code: 'launch_transcript_restore_failed', message: 'Could not restore the local transcript backup.' }));
|
|
264
374
|
}
|
|
265
375
|
return null;
|
|
266
376
|
}
|
|
267
377
|
}
|
|
378
|
+
clock.mark('restoreMs');
|
|
268
379
|
await _awaitCodexMcpReadinessForPlan(id, result.plan, { source: 'create', announce: null });
|
|
380
|
+
clock.mark('codexMcpMs');
|
|
269
381
|
// The resume-ready estimate is carried on the CREATE MESSAGE (`_resumeReadyEstimate`), exactly
|
|
270
382
|
// like `_restoreSeedSnapshot` below -- never written onto `result.plan`. The plan is
|
|
271
383
|
// deep-frozen by lib/launch-plan-pool.js's deepFreezePlan(), so `result.plan.X = ...` throws a
|
|
@@ -281,6 +393,9 @@ function createPreparedSessionCreate(host) {
|
|
|
281
393
|
agentType: result.plan.agentType,
|
|
282
394
|
fileSizeBytes,
|
|
283
395
|
});
|
|
396
|
+
// WP-0a (§6.1): marked only when an estimate really ran — a fresh create has no resume and
|
|
397
|
+
// reads -1, which is exactly "this phase does not exist for this exit".
|
|
398
|
+
clock.mark('estimateMs');
|
|
284
399
|
}
|
|
285
400
|
preparedMsg._resumeReadyEstimate = resumeReadyEstimate;
|
|
286
401
|
if (needsRestoreSeedSnapshot) preparedMsg._restoreSeedSnapshot = restoreSeedSnapshot;
|
|
@@ -294,12 +409,20 @@ function createPreparedSessionCreate(host) {
|
|
|
294
409
|
_preparedLaunchPlan: result.plan,
|
|
295
410
|
_ptyStartupAttempt: startupAttempt,
|
|
296
411
|
});
|
|
412
|
+
// WP-0a (§6.1): the last phase, marked the moment the awaited call RETURNS — provider
|
|
413
|
+
// preparation, PTY spawn and the `created` send all live inside it, and both outcomes reach
|
|
414
|
+
// here: a session object or null. A call that throws never returns, so it stays -1, like every
|
|
415
|
+
// other phase whose await did not resolve (the rollback below logs its own code either way).
|
|
416
|
+
clock.mark('providerMs');
|
|
297
417
|
} catch (error) {
|
|
298
418
|
createError = error;
|
|
299
419
|
}
|
|
300
420
|
const created = getSession(id);
|
|
301
421
|
const fullyOwned = !!created && (
|
|
302
422
|
created.type === 'walle'
|
|
423
|
+
// An ACP (dsh) session has no PTY to commit: its create path registers the row only after the
|
|
424
|
+
// ACP handshake succeeded, and refuses with its own error frame otherwise.
|
|
425
|
+
|| created.transport === 'acp'
|
|
303
426
|
|| ptyStartupCommitComplete(created, startupAttempt)
|
|
304
427
|
);
|
|
305
428
|
if (createError || !fullyOwned) {
|
|
@@ -310,6 +433,7 @@ function createPreparedSessionCreate(host) {
|
|
|
310
433
|
const code = createError
|
|
311
434
|
? String(createError.code || 'session_setup_failed')
|
|
312
435
|
: 'session_setup_incomplete';
|
|
436
|
+
report.noteCode(code);
|
|
313
437
|
_launchPlanCoordinator.markFailed(id, generation, code, result.plan);
|
|
314
438
|
recordSessionDiagnostic(id, 'session-create-rollback', {
|
|
315
439
|
code,
|