create-walle 0.10.0 → 0.10.2
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 +88 -41
- package/lib/owner-write-safety.js +135 -0
- package/lib/public-runtime.js +13 -5
- package/lib/release-schema.json +3 -2
- package/lib/runtime-closure-policy.json +7 -5
- package/package.json +10 -4
- package/template/bin/deps-doctor.js +1 -1
- package/template/bin/node-bin.sh +11 -0
- package/template/coding-task-manager/api-prompts.js +10 -22
- package/template/coding-task-manager/bin/capture-codex-rollout-records.js +417 -0
- package/template/coding-task-manager/bin/census-codex-lead-history.js +325 -0
- package/template/coding-task-manager/bin/claude-hook.js +7 -3
- package/template/coding-task-manager/bin/claude-table-parity.js +307 -0
- package/template/coding-task-manager/bin/conversation-storage-auto-migration-lib.js +16 -1
- package/template/coding-task-manager/bin/conversation-storage-generation-evidence.js +9 -2
- package/template/coding-task-manager/bin/conversation-storage-service-entry-lib.js +16 -1
- package/template/coding-task-manager/bin/conversation-storage-walle-owner.js +247 -0
- package/template/coding-task-manager/bin/ctm-machine-pair.js +160 -0
- package/template/coding-task-manager/bin/lead-wait-census.js +1348 -0
- package/template/coding-task-manager/bin/repair-foreign-clone.js +564 -0
- package/template/coding-task-manager/bin/repair-resume-echo-titles.js +248 -0
- package/template/coding-task-manager/bin/seam-replay-codex.js +301 -0
- package/template/coding-task-manager/bin/write-lock-bench.js +111 -0
- package/template/coding-task-manager/db.js +705 -286
- package/template/coding-task-manager/git-utils.js +44 -0
- package/template/coding-task-manager/lib/adopted-host-redial.js +4 -0
- package/template/coding-task-manager/lib/agent-presets.js +15 -0
- package/template/coding-task-manager/lib/agent-title-apply.js +88 -0
- package/template/coding-task-manager/lib/agent-title-backfill-read.js +92 -0
- package/template/coding-task-manager/lib/api/host-stats.js +98 -0
- package/template/coding-task-manager/lib/api/ingress.js +35 -12
- package/template/coding-task-manager/lib/api/machine-pairing.js +285 -0
- package/template/coding-task-manager/lib/api/machine-pool.js +307 -0
- package/template/coding-task-manager/lib/api/machines.js +461 -0
- package/template/coding-task-manager/lib/api/misc-ops.js +20 -5
- package/template/coding-task-manager/lib/api/providers.js +53 -6
- package/template/coding-task-manager/lib/api/resume-from-store.js +25 -0
- package/template/coding-task-manager/lib/api/sessions.js +160 -8
- package/template/coding-task-manager/lib/api/transcript-history.js +17 -4
- package/template/coding-task-manager/lib/api/worktrees.js +38 -37
- package/template/coding-task-manager/lib/approval-drift.js +16 -1
- package/template/coding-task-manager/lib/approval-logical-frame.js +5 -1
- package/template/coding-task-manager/lib/approval-scope.js +68 -4
- package/template/coding-task-manager/lib/auth-context.js +32 -2
- package/template/coding-task-manager/lib/auth-rate-limit.js +41 -1
- package/template/coding-task-manager/lib/auth-rules.js +186 -45
- package/template/coding-task-manager/lib/broadcast-serialize.js +2 -1
- package/template/coding-task-manager/lib/browser-session-broker.js +9 -1
- package/template/coding-task-manager/lib/browser-use-adapter.js +33 -2
- package/template/coding-task-manager/lib/claude-markdown-ansi.js +27 -85
- package/template/coding-task-manager/lib/claude-session-title.js +6 -30
- package/template/coding-task-manager/lib/claude-table-layout.js +322 -0
- package/template/coding-task-manager/lib/client-diag-handler.js +25 -0
- package/template/coding-task-manager/lib/codex-config-guard.js +33 -3
- package/template/coding-task-manager/lib/codex-harness-qualification.js +12 -0
- package/template/coding-task-manager/lib/codex-history-terminal-renderer.js +33 -33
- package/template/coding-task-manager/lib/codex-launch-health.js +29 -2
- package/template/coding-task-manager/lib/codex-link-preparation.js +9 -8
- package/template/coding-task-manager/lib/codex-local-links.js +267 -0
- package/template/coding-task-manager/lib/codex-markdown-lists.js +160 -0
- package/template/coding-task-manager/lib/codex-native-history-prefix.js +4 -0
- package/template/coding-task-manager/lib/codex-paths.js +2 -1
- package/template/coding-task-manager/lib/codex-source-handoff.js +186 -0
- package/template/coding-task-manager/lib/coding-agent-models.js +21 -30
- package/template/coding-task-manager/lib/coding-session-model-adapters.js +27 -2
- package/template/coding-task-manager/lib/coding-session-model-projection.js +5 -0
- package/template/coding-task-manager/lib/coding-session-model-runtime.js +1 -2
- package/template/coding-task-manager/lib/coding-session-model-state.js +10 -0
- package/template/coding-task-manager/lib/coding-session-model-sync-state.js +0 -1
- package/template/coding-task-manager/lib/conversation-import/cursor-guard-owner.js +10 -0
- package/template/coding-task-manager/lib/create/resolve-launch-params.js +8 -1
- package/template/coding-task-manager/lib/ctm-boot-lifecycle.js +17 -1
- package/template/coding-task-manager/lib/db-domain-tables.js +7 -0
- package/template/coding-task-manager/lib/db-domains.js +21 -2
- package/template/coding-task-manager/lib/db-owner-op-registry.js +7 -0
- package/template/coding-task-manager/lib/db-owner-worker-client.js +22 -0
- package/template/coding-task-manager/lib/db-schema-source-files.js +1 -0
- package/template/coding-task-manager/lib/feature-manifest.js +1 -3
- package/template/coding-task-manager/lib/fs-watcher.js +3 -2
- package/template/coding-task-manager/lib/harness-history-transition.js +41 -14
- package/template/coding-task-manager/lib/headless-inflight-ops.js +203 -0
- package/template/coding-task-manager/lib/headless-missing-reply.js +42 -0
- package/template/coding-task-manager/lib/headless-term-service.js +60 -23
- package/template/coding-task-manager/lib/history-transition-read-op.js +179 -23
- package/template/coding-task-manager/lib/host-control-dial.js +167 -0
- package/template/coding-task-manager/lib/host-handoff-orchestrator.js +16 -2
- package/template/coding-task-manager/lib/host-handoff.js +51 -13
- package/template/coding-task-manager/lib/host-health-ledger.js +164 -12
- package/template/coding-task-manager/lib/host-self-truth-watchdog.js +4 -0
- package/template/coding-task-manager/lib/host-stats.js +328 -0
- package/template/coding-task-manager/lib/host-threadpool-evacuation.js +160 -0
- package/template/coding-task-manager/lib/host-threadpool-monitor.js +14 -1
- package/template/coding-task-manager/lib/hosted-input-dispatch.js +203 -0
- package/template/coding-task-manager/lib/hosted-sync-worker.js +113 -5
- package/template/coding-task-manager/lib/instance-id-ownership-manifest.js +4 -0
- package/template/coding-task-manager/lib/instance-manifest-runtime.js +3 -0
- package/template/coding-task-manager/lib/instance-manifest.js +13 -1
- package/template/coding-task-manager/lib/instance-sync-status.js +15 -0
- package/template/coding-task-manager/lib/kernel/diag-log.js +12 -0
- package/template/coding-task-manager/lib/launch-model-override.js +160 -1
- package/template/coding-task-manager/lib/launch-plan-worker.js +59 -2
- package/template/coding-task-manager/lib/lead-model-observer.js +17 -2
- package/template/coding-task-manager/lib/lead-model-switch-runtime.js +57 -4
- package/template/coding-task-manager/lib/lead-model-switch.js +11 -2
- package/template/coding-task-manager/lib/lead-model-transition-runtime.js +42 -4
- package/template/coding-task-manager/lib/lead-model-transition-store.js +61 -3
- package/template/coding-task-manager/lib/legacy-draft-cancellation-recovery.js +111 -0
- package/template/coding-task-manager/lib/login-tripwire.js +18 -0
- package/template/coding-task-manager/lib/machine-pairing.js +238 -0
- package/template/coding-task-manager/lib/machine-pool.js +409 -0
- package/template/coding-task-manager/lib/machine-registry.js +749 -0
- package/template/coding-task-manager/lib/machine-self.js +66 -0
- package/template/coding-task-manager/lib/main-thread-lint-exemptions.json +56 -4
- package/template/coding-task-manager/lib/media-journal-control-reader.js +473 -0
- package/template/coding-task-manager/lib/media-journal.js +84 -27
- package/template/coding-task-manager/lib/media-store-options.js +43 -15
- package/template/coding-task-manager/lib/migrations/v56-host-samples-and-machine-pool.js +76 -0
- package/template/coding-task-manager/lib/mirror-feed-sanitize.js +12 -3
- package/template/coding-task-manager/lib/model-execution-recipe-metadata.js +16 -3
- package/template/coding-task-manager/lib/model-proxy/anthropic-face.js +4 -0
- package/template/coding-task-manager/lib/model-proxy/chat-response-translators.js +3 -0
- package/template/coding-task-manager/lib/model-proxy/collaboration-codec.js +94 -0
- package/template/coding-task-manager/lib/model-proxy/handoff.js +494 -0
- package/template/coding-task-manager/lib/model-proxy/lead-worker-picks.js +25 -0
- package/template/coding-task-manager/lib/model-proxy/native-lead-listener.js +61 -7
- package/template/coding-task-manager/lib/model-proxy/proxy-cli.js +200 -0
- package/template/coding-task-manager/lib/model-proxy/proxy-instance-record.js +257 -0
- package/template/coding-task-manager/lib/model-proxy/responses-face.js +24 -2
- package/template/coding-task-manager/lib/model-proxy/stream-accounting.js +205 -0
- package/template/coding-task-manager/lib/model-proxy/tokens.js +78 -0
- package/template/coding-task-manager/lib/model-proxy/upstream-outcome.js +9 -0
- package/template/coding-task-manager/lib/native-history-control.js +62 -14
- package/template/coding-task-manager/lib/native-lead-settings-client.js +2 -1
- package/template/coding-task-manager/lib/native-lead-tls.js +18 -4
- package/template/coding-task-manager/lib/oauth-proxy-supervisor.js +628 -64
- package/template/coding-task-manager/lib/owner-action-manifest-data.json +14 -0
- package/template/coding-task-manager/lib/painted-row-recorder.js +9 -1
- package/template/coding-task-manager/lib/prompt-admission-trace.js +69 -0
- package/template/coding-task-manager/lib/prompt-submission-contract.js +21 -1
- package/template/coding-task-manager/lib/provider-login-broker.js +192 -9
- package/template/coding-task-manager/lib/provider-login-capture.js +153 -0
- package/template/coding-task-manager/lib/queue-draft-status-overlay.js +36 -0
- package/template/coding-task-manager/lib/raw-codex-history-window.js +5 -3
- package/template/coding-task-manager/lib/raw-history-block.js +3 -1
- package/template/coding-task-manager/lib/read-pool-client.js +36 -24
- package/template/coding-task-manager/lib/read-pool-op-registry.js +10 -1
- package/template/coding-task-manager/lib/read-pool-telemetry.js +14 -5
- package/template/coding-task-manager/lib/recent-catalog-query.js +26 -0
- package/template/coding-task-manager/lib/recent-session-catalog-response.js +9 -0
- package/template/coding-task-manager/lib/remote-command-context.js +12 -0
- package/template/coding-task-manager/lib/remote-command-runtime.js +18 -5
- package/template/coding-task-manager/lib/remote-machine-catalog.js +1062 -0
- package/template/coding-task-manager/lib/remote-machine-create.js +693 -0
- package/template/coding-task-manager/lib/remote-machine-link.js +939 -0
- package/template/coding-task-manager/lib/remote-machine-proxy.js +520 -0
- package/template/coding-task-manager/lib/remote-session-forward.js +306 -0
- package/template/coding-task-manager/lib/remote-submission-status.js +6 -0
- package/template/coding-task-manager/lib/restart-outcome-truth.js +20 -3
- package/template/coding-task-manager/lib/restart-preflight.js +9 -2
- package/template/coding-task-manager/lib/restore-backoff-gate.js +10 -2
- package/template/coding-task-manager/lib/restore-prepare-retry.js +12 -5
- package/template/coding-task-manager/lib/restore-resume-batch.js +22 -1
- package/template/coding-task-manager/lib/resume-blocked-wire.js +62 -1
- package/template/coding-task-manager/lib/resume-cwd.js +13 -0
- package/template/coding-task-manager/lib/resume-from-store.js +12 -1
- package/template/coding-task-manager/lib/resume-origin-facts.js +38 -1
- package/template/coding-task-manager/lib/resume-preflight.js +21 -16
- package/template/coding-task-manager/lib/review-repo-admission.js +39 -6
- package/template/coding-task-manager/lib/review-repo-registry.js +17 -0
- package/template/coding-task-manager/lib/root-delivery-runtime.js +72 -15
- package/template/coding-task-manager/lib/root-delivery-selection.js +37 -1
- package/template/coding-task-manager/lib/root-prompt-admission.js +43 -11
- package/template/coding-task-manager/lib/root-prompt-flow.js +175 -38
- package/template/coding-task-manager/lib/scrollback-archive-store.js +7 -4
- package/template/coding-task-manager/lib/server-memory-sampler-runtime.js +10 -0
- package/template/coding-task-manager/lib/server-memory-sampler.js +41 -2
- package/template/coding-task-manager/lib/session-analysis-memory.js +2 -0
- package/template/coding-task-manager/lib/session-create/codex-native-provider-gate.js +218 -0
- package/template/coding-task-manager/lib/session-create/codex-resume-exit-classify.js +52 -0
- package/template/coding-task-manager/lib/session-create/delegate-worker.js +95 -6
- package/template/coding-task-manager/lib/session-create/identity.js +20 -1
- package/template/coding-task-manager/lib/session-create/prepared.js +69 -1
- package/template/coding-task-manager/lib/session-create/provider-launch-context.js +77 -0
- package/template/coding-task-manager/lib/session-create/provider-process.js +38 -39
- package/template/coding-task-manager/lib/session-create/response.js +30 -12
- package/template/coding-task-manager/lib/session-create/transcript.js +13 -4
- package/template/coding-task-manager/lib/session-create/worker-continuation.js +43 -1
- package/template/coding-task-manager/lib/session-create/worker-notices.js +94 -5
- package/template/coding-task-manager/lib/session-create/worker-observability.js +99 -7
- package/template/coding-task-manager/lib/session-create/worker-stop.js +11 -3
- package/template/coding-task-manager/lib/session-create/worker-wait-watcher.js +315 -0
- package/template/coding-task-manager/lib/session-geometry-authority-handler.js +10 -1
- package/template/coding-task-manager/lib/session-host-manager.js +152 -206
- package/template/coding-task-manager/lib/session-jobs.js +17 -9
- package/template/coding-task-manager/lib/session-lifecycle.js +20 -50
- package/template/coding-task-manager/lib/session-model-action-preconditions.js +68 -3
- package/template/coding-task-manager/lib/session-resource-sampler.js +67 -9
- package/template/coding-task-manager/lib/session-standup.js +67 -4
- package/template/coding-task-manager/lib/session-status-ledger.js +42 -3
- package/template/coding-task-manager/lib/session-status-runtime.js +45 -1
- package/template/coding-task-manager/lib/session-status.js +2 -2
- package/template/coding-task-manager/lib/session-title-mirror.js +25 -57
- package/template/coding-task-manager/lib/session-transcript-trash.js +8 -1
- package/template/coding-task-manager/lib/startup-pointer-write.js +57 -0
- package/template/coding-task-manager/lib/state-sync/painted-frame-field.js +11 -0
- package/template/coding-task-manager/lib/storage/coding-session-model-store.js +21 -22
- package/template/coding-task-manager/lib/surviving-owner-bootstrap.js +7 -2
- package/template/coding-task-manager/lib/surviving-owner-recovery.js +2 -1
- package/template/coding-task-manager/lib/terminal-draft-http-status.js +25 -0
- package/template/coding-task-manager/lib/transcript-archiver.js +229 -229
- package/template/coding-task-manager/lib/transcript-frame-cache.js +12 -2
- package/template/coding-task-manager/lib/transcript-guard-job.js +55 -4
- package/template/coding-task-manager/lib/transcript-link.js +77 -0
- package/template/coding-task-manager/lib/transcript-manifest-store.js +8 -4
- package/template/coding-task-manager/lib/transcript-source.js +8 -3
- package/template/coding-task-manager/lib/transcript-store.js +40 -0
- package/template/coding-task-manager/lib/tunnel-lane-governor.js +6 -3
- package/template/coding-task-manager/lib/typing-interaction-trace.js +136 -2
- package/template/coding-task-manager/lib/typing-worker-stages.js +208 -1
- package/template/coding-task-manager/lib/usage-ledger/claude-parse.js +53 -2
- package/template/coding-task-manager/lib/usage-ledger/ingest.js +13 -4
- package/template/coding-task-manager/lib/usage-ledger/read.js +14 -0
- package/template/coding-task-manager/lib/usage-ledger/schema.js +49 -1
- package/template/coding-task-manager/lib/usage-ledger/store.js +337 -6
- package/template/coding-task-manager/lib/usage-ledger/task-read.js +123 -5
- package/template/coding-task-manager/lib/visible-revision-watchdog.js +8 -12
- package/template/coding-task-manager/lib/wake-skip-reasons.js +46 -0
- package/template/coding-task-manager/lib/walle-supervisor.js +98 -14
- package/template/coding-task-manager/lib/worker-failure-classify.js +13 -1
- package/template/coding-task-manager/lib/ws/input.js +1 -0
- package/template/coding-task-manager/lib/ws/state-sync.js +19 -2
- package/template/coding-task-manager/lib/ws/terminal-attach.js +32 -1
- package/template/coding-task-manager/lib/ws-router.js +68 -1
- package/template/coding-task-manager/lib/ws-send-admission.js +22 -4
- package/template/coding-task-manager/oauth-proxy.js +99 -55
- package/template/coding-task-manager/package-lock.json +24 -0
- package/template/coding-task-manager/package.json +3 -0
- package/template/coding-task-manager/protocol/message-table.json +0 -10
- package/template/coding-task-manager/protocol/messages.js +0 -10
- package/template/coding-task-manager/protocol/ws-schema.json +0 -20
- package/template/coding-task-manager/protocol/ws-schema.md +0 -2
- package/template/coding-task-manager/providers/codex-mcp-extract.js +121 -19
- package/template/coding-task-manager/providers/codex-mcp.js +14 -5
- package/template/coding-task-manager/public/css/app.css +279 -2
- package/template/coding-task-manager/public/css/reviews.css +4 -0
- package/template/coding-task-manager/public/index.html +297 -240
- package/template/coding-task-manager/public/js/app/machines-page.js +1252 -0
- package/template/coding-task-manager/public/js/app/models-tab.js +546 -36
- package/template/coding-task-manager/public/js/app/worktrees-panel.js +7 -5
- package/template/coding-task-manager/public/js/background-work.js +13 -7
- package/template/coding-task-manager/public/js/client-health-core.js +81 -0
- package/template/coding-task-manager/public/js/client-health-main.js +61 -0
- package/template/coding-task-manager/public/js/coding-session-model-presentation.js +44 -4
- package/template/coding-task-manager/public/js/core/session-commands.js +676 -0
- package/template/coding-task-manager/public/js/core/session-selectors.js +5 -1
- package/template/coding-task-manager/public/js/history-app-seam.js +26 -2
- package/template/coding-task-manager/public/js/history-painted-rows.js +17 -2
- package/template/coding-task-manager/public/js/history-reader-park.js +13 -1
- package/template/coding-task-manager/public/js/history-scroller.js +187 -9
- package/template/coding-task-manager/public/js/history-transcript-pages.js +5 -5
- package/template/coding-task-manager/public/js/machine-pool-shared.js +436 -0
- package/template/coding-task-manager/public/js/private-state-scope.js +31 -3
- package/template/coding-task-manager/public/js/prompt-submission-client.js +173 -4
- package/template/coding-task-manager/public/js/prompt-submission-tray.js +281 -0
- package/template/coding-task-manager/public/js/protocol.js +0 -10
- package/template/coding-task-manager/public/js/queue-panel-submission-reconcile.js +174 -1
- package/template/coding-task-manager/public/js/reviews.js +7 -3
- package/template/coding-task-manager/public/js/root-draft-lifetime.js +139 -2
- package/template/coding-task-manager/public/js/root-queue-builder-lifetime.js +16 -0
- package/template/coding-task-manager/public/js/row-join.js +18 -3
- package/template/coding-task-manager/public/js/session-model-picker.js +1 -1
- package/template/coding-task-manager/public/js/session-search-utils.js +46 -19
- package/template/coding-task-manager/public/js/session-usage-view.js +1 -0
- package/template/coding-task-manager/public/js/state-sync-client.js +4 -0
- package/template/coding-task-manager/public/js/terminal/runtime-02.js +16 -7
- package/template/coding-task-manager/public/js/terminal/runtime-03.js +41 -0
- package/template/coding-task-manager/public/js/terminal/runtime-04.js +41 -4
- package/template/coding-task-manager/public/js/terminal/runtime-12.js +52 -2
- package/template/coding-task-manager/public/js/terminal/runtime-16.js +12 -12
- package/template/coding-task-manager/public/js/terminal/runtime-18.js +14 -0
- package/template/coding-task-manager/public/js/terminal/runtime-19.js +8 -4
- package/template/coding-task-manager/public/js/terminal/runtime-20.js +210 -73
- package/template/coding-task-manager/public/js/terminal/runtime-21.js +19 -6
- package/template/coding-task-manager/public/js/terminal/runtime-22.js +86 -0
- package/template/coding-task-manager/public/js/terminal-history-viewport.js +1 -3
- package/template/coding-task-manager/public/js/terminal-wheel.js +39 -2
- package/template/coding-task-manager/public/js/walle/chat-conversation.js +11 -3
- package/template/coding-task-manager/public/js/walle-session.js +30 -7
- package/template/coding-task-manager/public/m/app.css +226 -8
- package/template/coding-task-manager/public/m/app.js +502 -9
- package/template/coding-task-manager/public/m/index.html +38 -1
- package/template/coding-task-manager/public/m/machines.js +1313 -0
- package/template/coding-task-manager/public/m/pool-failover.js +391 -0
- package/template/coding-task-manager/public/m/private-queue-actions.js +26 -7
- package/template/coding-task-manager/public/m/sw.js +5 -0
- package/template/coding-task-manager/queue-engine.js +13 -0
- package/template/coding-task-manager/server/approvals.js +5 -6
- package/template/coding-task-manager/server/boot.js +136 -17
- package/template/coding-task-manager/server.js +964 -425
- package/template/coding-task-manager/session-integrity.js +7 -9
- package/template/coding-task-manager/workers/db-owner-worker.js +53 -7
- package/template/coding-task-manager/workers/read-pool-worker.js +17 -6
- package/template/coding-task-manager/workers/session-host-pool-process.js +18 -4
- package/template/coding-task-manager/workers/session-host-process.js +14 -3
- package/template/coding-task-manager/workers/transcript-archive-worker.js +1 -1
- package/template/coding-task-manager/workers/worktree-worker.js +34 -0
- package/template/package-lock.json +2 -2
- package/template/package.json +1 -1
- package/template/scripts/conversation-storage-v2-migration.js +78 -11
- package/template/shared/conversation-storage-v2-contract.js +42 -6
- package/template/shared/fixtures/worker-status-payloads.json +392 -0
- package/template/shared/git-remote-key.js +83 -0
- package/template/shared/host-identity.js +98 -2
- package/template/shared/owner-write-safety.js +135 -0
- package/template/shared/public-runtime.js +13 -5
- package/template/shared/release-schema.json +3 -2
- package/template/shared/report-citations.js +14 -0
- package/template/shared/sqlite-write-lock.js +361 -223
- package/template/shared/storage/contract.js +35 -3
- package/template/wall-e/agent.js +21 -0
- package/template/wall-e/api-walle.js +5 -0
- package/template/wall-e/bin/brain-purge-legacy-ctm.js +3 -2
- package/template/wall-e/bin/walle-mcp-stdio.js +12 -6
- package/template/wall-e/brain/helper-rules-schema.js +129 -0
- package/template/wall-e/brain/migrations.js +51 -22
- package/template/wall-e/brain/model-deployment-facts.js +31 -1
- package/template/wall-e/brain/owner-call-whitelist.js +16 -0
- package/template/wall-e/brain/schema-ensures.js +22 -0
- package/template/wall-e/brain.js +1 -1
- package/template/wall-e/coding/host-capabilities.js +2 -2
- package/template/wall-e/coding/journal-dispatcher.js +51 -0
- package/template/wall-e/coding/session-journal.js +28 -40
- package/template/wall-e/coding-orchestrator.js +23 -26
- package/template/wall-e/fly.toml +1 -1
- package/template/wall-e/http/auth.js +18 -1
- package/template/wall-e/http/blog-views-api.js +318 -0
- package/template/wall-e/http/helper-rules-api.js +321 -0
- package/template/wall-e/http/model-proxy-providers.js +3 -1
- package/template/wall-e/http/telemetry-api.js +12 -0
- package/template/wall-e/lib/blog-view-policy.js +88 -0
- package/template/wall-e/lib/blog-view-store.js +169 -0
- package/template/wall-e/lib/client-config-lock.js +2 -1
- package/template/wall-e/lib/coding-journal-writer-child-client.js +67 -18
- package/template/wall-e/lib/error-kinds.js +10 -1
- package/template/wall-e/lib/feature-manifest.js +1 -1
- package/template/wall-e/lib/helper-rules/cell-state.js +123 -0
- package/template/wall-e/lib/helper-rules/evaluate.js +357 -0
- package/template/wall-e/lib/helper-rules/explore-rubric.md +12 -0
- package/template/wall-e/lib/helper-rules/grade.js +277 -0
- package/template/wall-e/lib/helper-rules/label.js +247 -0
- package/template/wall-e/lib/helper-rules/lead-call-hook.js +522 -0
- package/template/wall-e/lib/helper-rules/store.js +667 -0
- package/template/wall-e/lib/mcp-integration.js +5 -6
- package/template/wall-e/lib/runtime-worker-pool.js +1 -0
- package/template/wall-e/lib/scheduler-worker-jobs.js +6 -0
- package/template/wall-e/lib/telemetry-db-schema.js +37 -0
- package/template/wall-e/lib/telemetry-process-client.js +76 -1
- package/template/wall-e/llm/default-fallback.js +4 -0
- package/template/wall-e/llm/model-catalog.js +13 -4
- package/template/wall-e/llm/model-roles.js +6 -0
- package/template/wall-e/llm/portkey-http.js +150 -0
- package/template/wall-e/llm/portkey-sync.js +15 -145
- package/template/wall-e/llm/worker-mcp-routing.js +61 -0
- package/template/wall-e/llm/worker-route.js +43 -1
- package/template/wall-e/loops/brain-custom-writes.js +45 -0
- package/template/wall-e/mcp-protocol-contract.js +41 -1
- package/template/wall-e/mcp-server.js +13 -2
- package/template/wall-e/mcp-worker-schemas.js +20 -2
- package/template/wall-e/memory/ctm-context-client.js +25 -5
- package/template/wall-e/shared/release-schema.json +3 -2
- package/template/wall-e/shared/sqlite-write-lock.js +361 -223
- package/template/wall-e/shared/storage/contract.js +35 -3
- package/template/wall-e/skills/_templates/delegate-worker/VERSION +1 -1
- package/template/wall-e/skills/_templates/delegate-worker/released-sha256.json +6 -0
- package/template/wall-e/skills/_templates/delegate-worker/templates/claude/SKILL.md +7 -2
- package/template/wall-e/skills/_templates/delegate-worker/templates/codex/SKILL.md +7 -2
- package/template/wall-e/tools/local-tools.js +12 -5
- package/template/wall-e/workers/brain-owner-worker.js +9 -0
- package/template/wall-e/workers/coding-journal-writer-child.js +8 -1
- package/template/wall-e/workers/telemetry-worker.js +8 -0
- package/template/coding-task-manager/lib/giant-freeze-park.js +0 -31
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
const fs = require('node:fs');
|
|
17
17
|
const path = require('node:path');
|
|
18
|
+
const { classifyUserProvenance } = require('../../shared/conversation-provenance');
|
|
18
19
|
const { createReadPoolBreaker } = require('../lib/readpool-breaker');
|
|
19
20
|
const { offthreadFallback } = require('../lib/resume-admission');
|
|
20
21
|
|
|
@@ -36,6 +37,39 @@ function semverCompare(a, b) {
|
|
|
36
37
|
return 0;
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
// WP-3 (design doc §5 D-7): a tier-3 AI title is generated only from a first message
|
|
41
|
+
// shared/conversation-provenance.js rates `human`. The harness/provider envelopes that also
|
|
42
|
+
// persist as role="user" (<local-command-caveat>, <task-notification>, "# AGENTS.md
|
|
43
|
+
// instructions for", a compaction summary, …) are skipped instead, so the name falls back to
|
|
44
|
+
// the agent title or the default label. One predicate, two callers: this module's background
|
|
45
|
+
// job and server.js's /api/sessions/generate-titles route.
|
|
46
|
+
function isHumanPromptCandidate(provider, firstMessage) {
|
|
47
|
+
const text = String(firstMessage || '');
|
|
48
|
+
if (!text) return false;
|
|
49
|
+
// The classifier's only provider-dependent rule is openai-only, and agent_sessions.provider
|
|
50
|
+
// is durably 'claude' | 'openai' (transcript-store maps codex -> openai) — same normalization
|
|
51
|
+
// as lib/migrations/v25-conversation-provenance.js.
|
|
52
|
+
const normalized = String(provider || '').toLowerCase() === 'openai' ? 'openai' : 'claude';
|
|
53
|
+
return classifyUserProvenance({ provider: normalized, text }).provenance === 'human';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Boilerplate stripping for the title prompt itself — this is cleaning text, not classifying a
|
|
57
|
+
// row (eligibility is isHumanPromptCandidate's verdict). Only the `This session is being
|
|
58
|
+
// continued…` (compaction) line was dropped against the classifier: an eligible row can never
|
|
59
|
+
// start with it. The resume forms below are not in the classifier's envelope table, and a
|
|
60
|
+
// `[Request interrupted …]` prefix only matches the classifier when the whole message is the
|
|
61
|
+
// marker, so they still need stripping here.
|
|
62
|
+
function cleanFirstMessage(msg) {
|
|
63
|
+
if (!msg) return '';
|
|
64
|
+
return msg
|
|
65
|
+
.replace(/^Continue the conversation[^\n]*\n*/i, '')
|
|
66
|
+
.replace(/^Resume:?\s*/i, '')
|
|
67
|
+
.replace(/^Summary:?\s*\n?/i, '')
|
|
68
|
+
.replace(/^The summary below covers[^\n]*\n*/i, '')
|
|
69
|
+
.replace(/^\[(?:Request interrupted|Tool use|Error|Retrying)[^\]]*\]\s*/g, '')
|
|
70
|
+
.trim();
|
|
71
|
+
}
|
|
72
|
+
|
|
39
73
|
function createBootJobs(deps) {
|
|
40
74
|
const {
|
|
41
75
|
installRoot, // path.join(__dirname, '..') from server.js — package.json lives here
|
|
@@ -68,6 +102,10 @@ function createBootJobs(deps) {
|
|
|
68
102
|
|
|
69
103
|
async function checkForUpdates(source = 'scheduled') {
|
|
70
104
|
updateState.currentVersion = getCurrentVersion();
|
|
105
|
+
// CTM_DISABLE_UPDATE_CHECKS=1 (dev.sh, the render harness) disables the check for EVERY caller,
|
|
106
|
+
// including GET /api/updates/check?refresh=1 the page sends after load -- not only server.js's
|
|
107
|
+
// timers -- so an isolated instance never reads the public registry (B19).
|
|
108
|
+
if (env.CTM_DISABLE_UPDATE_CHECKS === '1') return updateState;
|
|
71
109
|
trackUpdateTelemetry(telemetry, 'check_started', {
|
|
72
110
|
source,
|
|
73
111
|
currentVersion: updateState.currentVersion,
|
|
@@ -166,11 +204,100 @@ function createBootJobs(deps) {
|
|
|
166
204
|
});
|
|
167
205
|
}
|
|
168
206
|
|
|
207
|
+
// --- WP-6: one-shot agent-title backfill (design doc session-name-agent-title-precedence
|
|
208
|
+
// §§1e/6/8) ---
|
|
209
|
+
// Every row CTM already had a transcript for, but never an agent name for, gets one read of its
|
|
210
|
+
// transcript tail (≤64 KiB, off the main thread, in the read pool) and one apply through
|
|
211
|
+
// lib/agent-title-apply.js on the db-owner. Once per DB: the settings marker is written only
|
|
212
|
+
// after a COMPLETE walk, so a run cut short by an unavailable pool resumes on the next boot
|
|
213
|
+
// (already-named rows have left the candidate set by then, so the retry is cheap, not a redo).
|
|
214
|
+
// Never blocks boot: it runs from the 'auto-title' scheduler job, behind the same
|
|
215
|
+
// _canRunStartupMaintenance admission every other maintenance job uses.
|
|
216
|
+
const AGENT_TITLE_BACKFILL_MARKER = 'agent_title_backfill_v1';
|
|
217
|
+
const AGENT_TITLE_BACKFILL_TIMEOUT_MS = 30000;
|
|
218
|
+
const AGENT_TITLE_BACKFILL_PAGE_ROWS = 20;
|
|
219
|
+
// 40 pages = 800 rows in one boot's walk — 5× the §1c candidate census (164). Past that the run
|
|
220
|
+
// leaves the marker unset and the remainder waits for the next boot rather than holding the job.
|
|
221
|
+
const AGENT_TITLE_BACKFILL_MAX_PAGES = 40;
|
|
222
|
+
// Deliberately NOT env-tunable (no new flag for a one-shot walk): unlike the auto-title job
|
|
223
|
+
// above, this runs at most once per DB, so a dropped run costs one boot, not a steady state.
|
|
224
|
+
const _agentTitleBackfillBreaker = createReadPoolBreaker({ degradeAfter: 3, cooldownMs: 60000 });
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @returns {Promise<{skipped?: string, scanned?: number, applied?: number, pages?: number,
|
|
228
|
+
* marker?: string, error?: string}>} never throws — the caller is a title-generation job.
|
|
229
|
+
*/
|
|
230
|
+
async function runAgentTitleBackfill() {
|
|
231
|
+
// Dependency-injected seams (this module is require()-able standalone — see the header). A
|
|
232
|
+
// harness that stubs dbModule/offthreadRead without the backfill surface simply skips.
|
|
233
|
+
if (typeof offthreadRead !== 'function' || typeof dbModule?.getSetting !== 'function'
|
|
234
|
+
|| typeof dbModule?.setSetting !== 'function'
|
|
235
|
+
|| typeof dbModule?.applyAgentTitleBackfillRows !== 'function') {
|
|
236
|
+
return { skipped: 'no_seam' };
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
const marker = String(dbModule.getSetting(AGENT_TITLE_BACKFILL_MARKER, '') || '');
|
|
240
|
+
if (marker) return { skipped: 'done', marker };
|
|
241
|
+
const skipIds = [];
|
|
242
|
+
let scanned = 0;
|
|
243
|
+
let applied = 0;
|
|
244
|
+
let pages = 0;
|
|
245
|
+
let complete = false;
|
|
246
|
+
while (pages < AGENT_TITLE_BACKFILL_MAX_PAGES) {
|
|
247
|
+
const page = await offthreadRead({
|
|
248
|
+
breaker: _agentTitleBackfillBreaker,
|
|
249
|
+
op: 'backfillAgentTitles',
|
|
250
|
+
payload: { dbPath: dbModule.getDbPath(), limit: AGENT_TITLE_BACKFILL_PAGE_ROWS, skipIds },
|
|
251
|
+
timeoutMs: AGENT_TITLE_BACKFILL_TIMEOUT_MS,
|
|
252
|
+
onSuccess: (res) => (res && Array.isArray(res.rows) ? {
|
|
253
|
+
rows: res.rows,
|
|
254
|
+
scanned: Number(res.scanned) || res.rows.length,
|
|
255
|
+
scannedIds: Array.isArray(res.scannedIds) ? res.scannedIds : [],
|
|
256
|
+
} : null),
|
|
257
|
+
onFail: () => null,
|
|
258
|
+
});
|
|
259
|
+
if (!page) return { skipped: 'read_pool_unavailable', scanned, applied, pages };
|
|
260
|
+
pages += 1;
|
|
261
|
+
scanned += page.scanned;
|
|
262
|
+
if (page.rows.length) {
|
|
263
|
+
const outcome = await detachOwnerMutation(
|
|
264
|
+
'agent-title-backfill',
|
|
265
|
+
() => dbModule.applyAgentTitleBackfillRows(page.rows),
|
|
266
|
+
);
|
|
267
|
+
applied += Number(outcome?.applied) || 0;
|
|
268
|
+
}
|
|
269
|
+
for (const id of page.scannedIds) skipIds.push(id);
|
|
270
|
+
// A short page is the end of the walk; a page that scanned nothing cannot advance it.
|
|
271
|
+
if (page.scanned < AGENT_TITLE_BACKFILL_PAGE_ROWS) { complete = true; break; }
|
|
272
|
+
if (!page.scannedIds.length) break;
|
|
273
|
+
}
|
|
274
|
+
if (!complete) return { skipped: 'page_cap', scanned, applied, pages };
|
|
275
|
+
// '<ISO time>:<applied>/<scanned>' — the marker's value is also the run's receipt.
|
|
276
|
+
const value = `${new Date().toISOString()}:${applied}/${scanned}`;
|
|
277
|
+
await detachOwnerMutation(
|
|
278
|
+
'agent-title-backfill-marker',
|
|
279
|
+
() => dbModule.setSetting(AGENT_TITLE_BACKFILL_MARKER, value),
|
|
280
|
+
);
|
|
281
|
+
logger.log(`[agent-title-backfill] scanned=${scanned} applied=${applied} pages=${pages}`);
|
|
282
|
+
return { scanned, applied, pages, marker: value };
|
|
283
|
+
} catch (error) {
|
|
284
|
+
// REPORT: the marker stays unset, so the next boot's job run retries the walk.
|
|
285
|
+
logger.warn('[agent-title-backfill] failed:', error.message);
|
|
286
|
+
return { skipped: 'failed', error: error.message };
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
169
290
|
async function runAutoTitleGeneration() {
|
|
170
291
|
try {
|
|
171
292
|
if (Date.now() < _autoTitleDisabledUntil) return; // Backoff after auth failure
|
|
172
293
|
// WP-2 (D-1): no CTM-side credential preflight — a credential-less setup
|
|
173
294
|
// fails callClaudeAsync below and the catch block's 1-hour backoff applies.
|
|
295
|
+
// WP-6: the one-shot agent-title backfill rides this job — it is this module's only
|
|
296
|
+
// scheduler-registered body (lib/session-jobs.js 'auto-title', gated by
|
|
297
|
+
// _canRunStartupMaintenance), so it inherits the existing background/maintenance admission
|
|
298
|
+
// instead of competing with boot or the interactive lane. The settings marker makes every
|
|
299
|
+
// later run a no-op, and a failure here never fails the title generation below.
|
|
300
|
+
await runAgentTitleBackfill();
|
|
174
301
|
|
|
175
302
|
// Find sessions needing titles: have messages but no title in sessions table.
|
|
176
303
|
// Runs on the read-pool worker (see _autoTitleCandidatesOffThread) to keep the
|
|
@@ -179,23 +306,13 @@ function createBootJobs(deps) {
|
|
|
179
306
|
|
|
180
307
|
if (needTitles.length === 0) return;
|
|
181
308
|
|
|
182
|
-
// Filter out CTM internal sessions
|
|
183
|
-
|
|
309
|
+
// Filter out CTM internal sessions, and any first message that is harness/provider
|
|
310
|
+
// boilerplate rather than a human prompt (D-7) — a wrapper text titled by the LLM is the
|
|
311
|
+
// bug this tier used to have.
|
|
312
|
+
const eligible = needTitles.filter(s => !isCtmInternalSession(s.first_message)
|
|
313
|
+
&& isHumanPromptCandidate(s.provider, s.first_message));
|
|
184
314
|
if (eligible.length === 0) return;
|
|
185
315
|
|
|
186
|
-
// Strip resume/continuation boilerplate from first messages
|
|
187
|
-
function cleanFirstMessage(msg) {
|
|
188
|
-
if (!msg) return '';
|
|
189
|
-
return msg
|
|
190
|
-
.replace(/^This session is being continued from a previous conversation[^\n]*\n*/i, '')
|
|
191
|
-
.replace(/^Continue the conversation[^\n]*\n*/i, '')
|
|
192
|
-
.replace(/^Resume:?\s*/i, '')
|
|
193
|
-
.replace(/^Summary:?\s*\n?/i, '')
|
|
194
|
-
.replace(/^The summary below covers[^\n]*\n*/i, '')
|
|
195
|
-
.replace(/^\[(?:Request interrupted|Tool use|Error|Retrying)[^\]]*\]\s*/g, '')
|
|
196
|
-
.trim();
|
|
197
|
-
}
|
|
198
|
-
|
|
199
316
|
const prompt = `Generate short, descriptive titles (max 60 chars) for these Claude Code sessions.
|
|
200
317
|
Each session has an ID and the user's first message. Create a title that summarizes what the user was working on.
|
|
201
318
|
|
|
@@ -220,7 +337,7 @@ Return ONLY a JSON array of objects with "id" and "title" fields. No markdown fe
|
|
|
220
337
|
let generated = 0;
|
|
221
338
|
for (const t of titles) {
|
|
222
339
|
if (t.id && t.title) {
|
|
223
|
-
await detachOwnerMutation('auto-generated-session-title', () => dbModule.setSessionTitleNew(t.id, t.title, false));
|
|
340
|
+
await detachOwnerMutation('auto-generated-session-title', () => dbModule.setSessionTitleNew(t.id, t.title, false, { source: 'ai_title', status: 'generated' }));
|
|
224
341
|
generated++;
|
|
225
342
|
}
|
|
226
343
|
}
|
|
@@ -259,8 +376,10 @@ Return ONLY a JSON array of objects with "id" and "title" fields. No markdown fe
|
|
|
259
376
|
updateStateIsStale,
|
|
260
377
|
refreshUpdateState,
|
|
261
378
|
runAutoTitleGeneration,
|
|
379
|
+
runAgentTitleBackfill, // WP-6: also exposed so a resume/repair path can re-walk on demand
|
|
380
|
+
AGENT_TITLE_BACKFILL_MARKER,
|
|
262
381
|
healStartupTaskSessionIds,
|
|
263
382
|
};
|
|
264
383
|
}
|
|
265
384
|
|
|
266
|
-
module.exports = { createBootJobs, readPackageVersion, semverCompare };
|
|
385
|
+
module.exports = { createBootJobs, readPackageVersion, semverCompare, isHumanPromptCandidate, cleanFirstMessage };
|