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
|
@@ -20,12 +20,25 @@
|
|
|
20
20
|
// injected runner (`this.exec(...)`): bin/main-thread-lint.js's bare-launch rule reads a bare
|
|
21
21
|
// `execFile(` as a new, unledgered main-thread spawn site, and this WP does not own the exemption
|
|
22
22
|
// ledger. Behavior is identical — one async execFile with a fixed argv and a 3 s timeout.
|
|
23
|
+
//
|
|
24
|
+
// WP-0 M-6 (docs/hub-local-cpu-memory-burn-2026-10-31.html §1.1-§1.2, §7 M-6, Q-7): `cpuByCategory`
|
|
25
|
+
// — cores used per process category over the interval since the previous sample — rides along in the
|
|
26
|
+
// same row. It is MEASUREMENT ONLY: one extra async `ps` snapshot per tick, the same never-throws
|
|
27
|
+
// contract as every other read here, and `null` (never a fabricated number) on the first sample or a
|
|
28
|
+
// failed probe. The classification and the delta arithmetic are pure and live in
|
|
29
|
+
// lib/host-cpu-categories.js; this file owns the launch, the previous-snapshot map and the field.
|
|
30
|
+
// Gated by CTM_PERF_ATTRIBUTION (on by default in source; `=0` skips the launch AND the field).
|
|
23
31
|
|
|
24
32
|
const os = require('node:os');
|
|
25
33
|
const fs = require('node:fs');
|
|
26
34
|
const childProcess = require('node:child_process');
|
|
27
35
|
const { promisify } = require('node:util');
|
|
28
36
|
|
|
37
|
+
const {
|
|
38
|
+
parsePsOutput, snapshotCpuMap, cpuByCategoryDelta, withUnattributed, PS_ARGS, PS_TIMEOUT_MS, PS_MAX_BUFFER,
|
|
39
|
+
} = require('./host-cpu-categories');
|
|
40
|
+
const { boolFlag } = require('./env-flags');
|
|
41
|
+
|
|
29
42
|
const DEFAULT_RETENTION_MS = 24 * 60 * 60 * 1000;
|
|
30
43
|
const DEFAULT_HISTORY_LIMIT = 1440;
|
|
31
44
|
|
|
@@ -37,6 +50,14 @@ const NVIDIA_SMI_ARGS = Object.freeze([
|
|
|
37
50
|
]);
|
|
38
51
|
const NVIDIA_SMI_TIMEOUT_MS = 3000;
|
|
39
52
|
|
|
53
|
+
// WP-1 (docs/lid-closed-pool-host-always-on-2026-10-25.html §6/§8): the two darwin probes behind the
|
|
54
|
+
// Machines card's Power fact row. `kern.sleeptime` / `kern.waketime` are the kernel's own last sleep
|
|
55
|
+
// and wake timevals (both `{ sec = 0 }` until the box has slept since boot); `pmset -g ps`'s first
|
|
56
|
+
// line names the active power source. Same async, 3 s-bounded shape as the nvidia-smi probe.
|
|
57
|
+
const POWER_PROBE_TIMEOUT_MS = 3000;
|
|
58
|
+
const SYSCTL_SLEEP_ARGS = Object.freeze(['-n', 'kern.sleeptime', 'kern.waketime']);
|
|
59
|
+
const PMSET_PS_ARGS = Object.freeze(['-g', 'ps']);
|
|
60
|
+
|
|
40
61
|
const BYTES_PER_MIB = 1024 * 1024;
|
|
41
62
|
const BYTES_PER_KIB = 1024;
|
|
42
63
|
|
|
@@ -94,6 +115,45 @@ function parseNvidiaSmi(stdout) {
|
|
|
94
115
|
};
|
|
95
116
|
}
|
|
96
117
|
|
|
118
|
+
/**
|
|
119
|
+
* §6/§8 WP-1: one `sysctl -n kern.sleeptime kern.waketime` line — a C timeval plus a ctime suffix,
|
|
120
|
+
* e.g. `{ sec = 1792970037, usec = 158373 } Sun Oct 25 16:13:57 2026` → epoch ms. `sec = 0` is the
|
|
121
|
+
* kernel's "never slept since boot", which is NOT the epoch — it is `null`. Anything that does not
|
|
122
|
+
* match the timeval shape is also `null`, never a fabricated number.
|
|
123
|
+
*/
|
|
124
|
+
function parseSysctlTimeval(line) {
|
|
125
|
+
const match = /\{\s*sec\s*=\s*(\d+),\s*usec\s*=\s*(\d+)\s*\}/.exec(String(line == null ? '' : line));
|
|
126
|
+
if (!match) return null;
|
|
127
|
+
const sec = Number(match[1]);
|
|
128
|
+
const usec = Number(match[2]);
|
|
129
|
+
if (!Number.isFinite(sec) || !Number.isFinite(usec) || sec === 0) return null;
|
|
130
|
+
return sec * 1000 + Math.floor(usec / 1000);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* §6/§8 WP-1: the two lines `sysctl -n kern.sleeptime kern.waketime` prints (sleeptime first,
|
|
135
|
+
* waketime second). A missing/blank line → that field `null`; a non-string → both `null`.
|
|
136
|
+
*/
|
|
137
|
+
function parseSleepWake(stdout) {
|
|
138
|
+
if (typeof stdout !== 'string') return { lastSleepAt: null, lastWakeAt: null };
|
|
139
|
+
const lines = stdout.split('\n');
|
|
140
|
+
return {
|
|
141
|
+
lastSleepAt: parseSysctlTimeval(lines[0]),
|
|
142
|
+
lastWakeAt: parseSysctlTimeval(lines[1]),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* §6/§8 WP-1: the first line of `pmset -g ps` names the active source — `'AC Power'` → true,
|
|
148
|
+
* `'Battery Power'` → false, anything else (a missing read, an unexpected locale) → `null`.
|
|
149
|
+
*/
|
|
150
|
+
function parsePmsetPs(stdout) {
|
|
151
|
+
const first = String(stdout == null ? '' : stdout).split('\n')[0] || '';
|
|
152
|
+
if (first.indexOf('AC Power') !== -1) return true;
|
|
153
|
+
if (first.indexOf('Battery Power') !== -1) return false;
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
|
|
97
157
|
/** Cumulative cpu times, summed over cores — the delta between two calls is the util numerator. */
|
|
98
158
|
function cpuTimes(cpuList) {
|
|
99
159
|
let idle = 0;
|
|
@@ -117,18 +177,29 @@ function createHostStats({
|
|
|
117
177
|
statfs = (p) => fs.promises.statfs(p),
|
|
118
178
|
readFile = (p) => fs.promises.readFile(p, 'utf8'),
|
|
119
179
|
execFile = promisify(childProcess.execFile),
|
|
180
|
+
// WP-0 M-6: its own injectable runner, deliberately NOT the shared `execFile` above — the ps
|
|
181
|
+
// snapshot is a different probe with its own argv/timeout/maxBuffer, and reusing `execFile` would
|
|
182
|
+
// make the existing nvidia-smi/power fixtures count an extra launch per tick.
|
|
183
|
+
runPs = promisify(childProcess.execFile),
|
|
120
184
|
diskPath = os.homedir(),
|
|
121
185
|
nvidiaSmiPath = '/usr/bin/nvidia-smi',
|
|
186
|
+
sysctlPath = '/usr/sbin/sysctl',
|
|
187
|
+
pmsetPath = '/usr/bin/pmset',
|
|
122
188
|
countTasks = () => ({ running: 0, needsYou: 0, idle: 0, workers: 0 }),
|
|
123
189
|
lastCreateAt = () => 0,
|
|
124
190
|
retentionMs = DEFAULT_RETENTION_MS,
|
|
125
191
|
} = {}) {
|
|
126
192
|
// Method-position calls only (see the header): the lint's bare-launch rule scans for a bare
|
|
127
193
|
// `execFile(`, not an injected runner reached through its owning bag.
|
|
128
|
-
const io = { statfs, readFile, execFile };
|
|
194
|
+
const io = { statfs, readFile, execFile, runPs };
|
|
129
195
|
|
|
130
196
|
let lastCpu = null;
|
|
131
197
|
let latestSample = null;
|
|
198
|
+
// WP-0 M-6: the previous ps snapshot (pid → cumulative cpuMs) and the sample instant it was taken
|
|
199
|
+
// at, so the next tick can report the delta over exactly that interval. Bounded by the live process
|
|
200
|
+
// count (~1,000 rows on the hub); a pid that exits is simply absent from the next snapshot.
|
|
201
|
+
let lastPsMap = null;
|
|
202
|
+
let lastPsAt = 0;
|
|
132
203
|
// nvidia-smi presence is probed ONCE per process: the boot image of a box does not change under it.
|
|
133
204
|
let nvidiaSmiAvailability = null;
|
|
134
205
|
|
|
@@ -225,6 +296,32 @@ function createHostStats({
|
|
|
225
296
|
}
|
|
226
297
|
}
|
|
227
298
|
|
|
299
|
+
// WP-1 §6/§8: darwin-only. The kernel's own sleep/wake timevals and pmset's active power source,
|
|
300
|
+
// read concurrently. Each read is guarded on its own (a common wrapper that never rejects), so a
|
|
301
|
+
// pmset that times out or a missing binary costs only its own field — the sysctl numbers survive,
|
|
302
|
+
// and vice versa. A rejected or synchronously-throwing probe is a NULL field, never a wrong number.
|
|
303
|
+
async function _power() {
|
|
304
|
+
if (platform !== 'darwin') return null; // expected: power facts are darwin-only by design
|
|
305
|
+
async function read(cmdPath, args) {
|
|
306
|
+
try {
|
|
307
|
+
const { stdout } = await io.execFile(cmdPath, [...args], { timeout: POWER_PROBE_TIMEOUT_MS });
|
|
308
|
+
return { ok: true, stdout };
|
|
309
|
+
} catch {
|
|
310
|
+
return { ok: false, stdout: '' }; // expected: the probe timed out, or the binary is absent
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
const [sleep, ps] = await Promise.all([
|
|
314
|
+
read(sysctlPath, SYSCTL_SLEEP_ARGS),
|
|
315
|
+
read(pmsetPath, PMSET_PS_ARGS),
|
|
316
|
+
]);
|
|
317
|
+
const times = sleep.ok ? parseSleepWake(sleep.stdout) : { lastSleepAt: null, lastWakeAt: null };
|
|
318
|
+
return {
|
|
319
|
+
onAC: ps.ok ? parsePmsetPs(ps.stdout) : null,
|
|
320
|
+
lastSleepAt: times.lastSleepAt,
|
|
321
|
+
lastWakeAt: times.lastWakeAt,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
|
|
228
325
|
// D-10: the sampler's own process tree rss, in bytes.
|
|
229
326
|
function _ctmRssBytes(snapshot) {
|
|
230
327
|
const rssMB = snapshot && snapshot.processTree ? Number(snapshot.processTree.rssMB) : NaN;
|
|
@@ -256,16 +353,49 @@ function createHostStats({
|
|
|
256
353
|
}
|
|
257
354
|
}
|
|
258
355
|
|
|
356
|
+
/**
|
|
357
|
+
* WP-0 M-6 (§1.1-§1.2): one async `ps` snapshot per tick → cores per process category over the
|
|
358
|
+
* interval since the previous sample.
|
|
359
|
+
*
|
|
360
|
+
* Returns:
|
|
361
|
+
* * `undefined` when CTM_PERF_ATTRIBUTION is off — the caller omits the FIELD entirely (§7: "no
|
|
362
|
+
* cpuByCategory field"), and no process is launched;
|
|
363
|
+
* * `null` on the FIRST sample (no previous snapshot, so no interval — never a fabricated 0) and
|
|
364
|
+
* on any probe failure / non-positive interval;
|
|
365
|
+
* * otherwise `{ [category]: cores }` from the pure classifier.
|
|
366
|
+
*
|
|
367
|
+
* A failed probe leaves lastPsMap/lastPsAt untouched, so the next successful sample spans the two
|
|
368
|
+
* intervals — the delta stays truthful rather than restarting at 0.
|
|
369
|
+
*/
|
|
370
|
+
async function _cpuByCategory(at) {
|
|
371
|
+
if (!boolFlag('CTM_PERF_ATTRIBUTION', true)) return undefined; // expected: attribution disabled by flag
|
|
372
|
+
try {
|
|
373
|
+
const { stdout } = await io.runPs('ps', [...PS_ARGS], { timeout: PS_TIMEOUT_MS, maxBuffer: PS_MAX_BUFFER });
|
|
374
|
+
const rows = parsePsOutput(stdout);
|
|
375
|
+
const current = snapshotCpuMap(rows);
|
|
376
|
+
const previous = lastPsMap;
|
|
377
|
+
const previousAt = lastPsAt;
|
|
378
|
+
lastPsMap = current;
|
|
379
|
+
lastPsAt = at;
|
|
380
|
+
if (!previous || !(Number(previousAt) > 0) || !(at - previousAt > 0)) return null; // first sample
|
|
381
|
+
return cpuByCategoryDelta(previous, rows, at - previousAt, { selfPid: process.pid });
|
|
382
|
+
} catch {
|
|
383
|
+
return null; // expected: ps absent, timed out, or unusable output — the column degrades to null
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
259
387
|
/**
|
|
260
388
|
* One sample per resource tick. Never throws and never rejects: every sub-read is guarded and a
|
|
261
389
|
* failed one contributes `null` (or the all-zero task bucket) to the sample.
|
|
262
390
|
*/
|
|
263
391
|
async function record(resourceSnapshot) {
|
|
264
392
|
const at = now();
|
|
265
|
-
const [memory, disk, gpu] = await Promise.all([
|
|
393
|
+
const [memory, disk, gpu, power, cpuByCategory] = await Promise.all([
|
|
266
394
|
_memory(resourceSnapshot),
|
|
267
395
|
_disk(),
|
|
268
396
|
_gpu(),
|
|
397
|
+
_power(),
|
|
398
|
+
_cpuByCategory(at),
|
|
269
399
|
]);
|
|
270
400
|
const load = _load();
|
|
271
401
|
const sample = {
|
|
@@ -281,10 +411,14 @@ function createHostStats({
|
|
|
281
411
|
diskFreeBytes: disk.diskFreeBytes,
|
|
282
412
|
diskTotalBytes: disk.diskTotalBytes,
|
|
283
413
|
gpu,
|
|
414
|
+
power,
|
|
284
415
|
ctmRssBytes: _ctmRssBytes(resourceSnapshot),
|
|
285
416
|
tasks: _tasks(),
|
|
286
417
|
lastUsedAt: _lastUsedAt(),
|
|
287
418
|
};
|
|
419
|
+
// WP-0 M-6: the field exists only while attribution is on, so a disabled box's rows are byte-for-
|
|
420
|
+
// byte the shape they had before this WP ("no cpuByCategory field").
|
|
421
|
+
if (cpuByCategory !== undefined) sample.cpuByCategory = withUnattributed(cpuByCategory, sample.cpuPct, sample.cores);
|
|
288
422
|
// Memory FIRST, then the write: a reader that pairs latest() with history() (lib/api/host-stats.js
|
|
289
423
|
// does, and asserts latest.at >= samples[last].at) must never see a stored row newer than the
|
|
290
424
|
// in-memory sample beside it. record()'s row is committed before this await resolves, so setting
|
|
@@ -325,4 +459,17 @@ function createHostStats({
|
|
|
325
459
|
return { record, latest, history };
|
|
326
460
|
}
|
|
327
461
|
|
|
328
|
-
module.exports = {
|
|
462
|
+
module.exports = {
|
|
463
|
+
createHostStats,
|
|
464
|
+
parseMeminfo,
|
|
465
|
+
parseNvidiaSmi,
|
|
466
|
+
parseSysctlTimeval,
|
|
467
|
+
parseSleepWake,
|
|
468
|
+
parsePmsetPs,
|
|
469
|
+
cpuTimes,
|
|
470
|
+
NVIDIA_SMI_ARGS,
|
|
471
|
+
POWER_PROBE_TIMEOUT_MS,
|
|
472
|
+
SYSCTL_SLEEP_ARGS,
|
|
473
|
+
PMSET_PS_ARGS,
|
|
474
|
+
DEFAULT_RETENTION_MS,
|
|
475
|
+
};
|