create-principles-disciple 1.144.26 → 1.145.0
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/_release/product-identity.json +2 -2
- package/codex-adapter/dist/codex-evidence-recorder.js +8 -2
- package/codex-adapter/dist/index.d.ts +2 -2
- package/codex-adapter/dist/index.js +1 -1
- package/codex-adapter/dist/ingestion/admission.js +16 -0
- package/codex-adapter/dist/ingestion/codex-version.d.ts +10 -4
- package/codex-adapter/dist/ingestion/codex-version.js +10 -4
- package/codex-adapter/dist/ingestion/explicit-owner-statement.d.ts +48 -0
- package/codex-adapter/dist/ingestion/explicit-owner-statement.js +123 -0
- package/codex-adapter/dist/ingestion/ingestion.js +50 -1
- package/codex-adapter/dist/pd-hook.js +66 -3
- package/codex-adapter/dist/worker/workspace-worker.d.ts +14 -0
- package/codex-adapter/dist/worker/workspace-worker.js +194 -11
- package/codex-adapter/package.json +2 -2
- package/console/dist/server/models/ApprovalsConsoleModel.d.ts +2 -2
- package/console/dist/server/models/ApprovalsConsoleModel.js +1 -1
- package/console/dist/server/models/ApprovalsGroupedConsoleModel.js +1 -1
- package/console/dist/server/models/PrinciplesConsoleModel.d.ts +26 -1
- package/console/dist/server/models/PrinciplesConsoleModel.js +18 -1
- package/console/dist/server/routes/activations.js +4 -4
- package/console/dist/server/routes/approvals.js +2 -2
- package/console/dist/server/routes/failed-tasks.d.ts +9 -0
- package/console/dist/server/routes/failed-tasks.js +116 -7
- package/console/dist/server/routes/principles.js +73 -1
- package/console/dist/shared/prompt-injection-contract.d.ts +1 -1
- package/console/dist/ui/api.d.ts +5 -5
- package/console/dist/ui/i18n/en.json +13 -2
- package/console/dist/ui/i18n/zh-CN.json +13 -2
- package/console/dist/ui/pages/activation/ActivationPage.js +2 -1
- package/console/dist/ui/pages/failed-tasks/FailedTasksPage.js +42 -4
- package/console/dist/ui/pages/focus/FocusPage.js +3 -3
- package/console/dist/ui/pages/principles/PrinciplesPage.js +7 -2
- package/console/dist/ui/utils/validators.d.ts +6 -2
- package/console/dist/ui/utils/validators.js +19 -4
- package/console/dist/web/assets/app.css +26 -0
- package/console/dist/web/assets/app.js +24 -24
- package/console/package.json +4 -4
- package/core/dist/host/host-installer.d.ts +3 -1
- package/core/dist/host/host-installer.d.ts.map +1 -1
- package/core/dist/host/host-installer.js.map +1 -1
- package/core/dist/runtime-v2/admission-gate.d.ts +8 -0
- package/core/dist/runtime-v2/admission-gate.d.ts.map +1 -1
- package/core/dist/runtime-v2/admission-gate.js +3 -2
- package/core/dist/runtime-v2/admission-gate.js.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.d.ts.map +1 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js +16 -1
- package/core/dist/runtime-v2/config/pd-config-defaults.js.map +1 -1
- package/core/dist/runtime-v2/context-payload.d.ts +43 -3
- package/core/dist/runtime-v2/context-payload.d.ts.map +1 -1
- package/core/dist/runtime-v2/context-payload.js +15 -1
- package/core/dist/runtime-v2/context-payload.js.map +1 -1
- package/core/dist/runtime-v2/evidence-guards.d.ts +6 -0
- package/core/dist/runtime-v2/evidence-guards.d.ts.map +1 -1
- package/core/dist/runtime-v2/evidence-guards.js +11 -0
- package/core/dist/runtime-v2/evidence-guards.js.map +1 -1
- package/core/dist/runtime-v2/evolution/evolution-types.d.ts +4 -4
- package/core/dist/runtime-v2/evolution/evolution-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/evolution/evolution-types.js +1 -1
- package/core/dist/runtime-v2/evolution/evolution-types.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js +6 -0
- package/core/dist/runtime-v2/feature-flags/feature-flag-contract.js.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.d.ts.map +1 -1
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js +8 -0
- package/core/dist/runtime-v2/feature-flags/feature-flag-lifecycle.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +5 -2
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +3 -1
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/internalization/adversarial-feedback.d.ts +3 -1
- package/core/dist/runtime-v2/internalization/adversarial-feedback.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/adversarial-feedback.js +10 -1
- package/core/dist/runtime-v2/internalization/adversarial-feedback.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-output.d.ts +11 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-output.js +10 -0
- package/core/dist/runtime-v2/internalization/evaluator-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts +3 -3
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.js +49 -5
- package/core/dist/runtime-v2/internalization/evaluator-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/evaluator-runner.js +13 -16
- package/core/dist/runtime-v2/internalization/evaluator-runner.js.map +1 -1
- package/core/dist/runtime-v2/internalization/owner-decision-review.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/owner-decision-review.js +5 -1
- package/core/dist/runtime-v2/internalization/owner-decision-review.js.map +1 -1
- package/core/dist/runtime-v2/internalization/owner-review.d.ts +2 -2
- package/core/dist/runtime-v2/internalization/owner-review.js +2 -2
- package/core/dist/runtime-v2/internalization/scribe-output.d.ts +12 -0
- package/core/dist/runtime-v2/internalization/scribe-output.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-output.js +20 -0
- package/core/dist/runtime-v2/internalization/scribe-output.js.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts +32 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js +38 -1
- package/core/dist/runtime-v2/internalization/scribe-prompt-builder.js.map +1 -1
- package/core/dist/runtime-v2/internalization-queue-read-model.d.ts +6 -0
- package/core/dist/runtime-v2/internalization-queue-read-model.d.ts.map +1 -1
- package/core/dist/runtime-v2/internalization-queue-read-model.js +8 -1
- package/core/dist/runtime-v2/internalization-queue-read-model.js.map +1 -1
- package/core/dist/runtime-v2/intervention-evidence-normalizer.d.ts.map +1 -1
- package/core/dist/runtime-v2/intervention-evidence-normalizer.js +10 -3
- package/core/dist/runtime-v2/intervention-evidence-normalizer.js.map +1 -1
- package/core/dist/runtime-v2/pain-ingress.d.ts +1 -1
- package/core/dist/runtime-v2/pain-ingress.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-bridge.d.ts +68 -2
- package/core/dist/runtime-v2/pain-signal-bridge.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-bridge.js +541 -18
- package/core/dist/runtime-v2/pain-signal-bridge.js.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js +4 -0
- package/core/dist/runtime-v2/pain-signal-runtime-factory.js.map +1 -1
- package/core/dist/runtime-v2/product-telemetry/snapshot-contract.d.ts +2 -2
- package/core/dist/runtime-v2/product-telemetry/snapshot-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/product-telemetry/snapshot-contract.js +2 -2
- package/core/dist/runtime-v2/product-telemetry/snapshot-contract.js.map +1 -1
- package/core/dist/runtime-v2/store/candidate/admission-document.d.ts +90 -0
- package/core/dist/runtime-v2/store/candidate/admission-document.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/candidate/admission-document.js +142 -0
- package/core/dist/runtime-v2/store/candidate/admission-document.js.map +1 -0
- package/core/dist/runtime-v2/store/candidate/candidate-store.d.ts +53 -0
- package/core/dist/runtime-v2/store/candidate/candidate-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/candidate/memory-candidate-store.d.ts +35 -0
- package/core/dist/runtime-v2/store/candidate/memory-candidate-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/candidate/memory-candidate-store.js +48 -0
- package/core/dist/runtime-v2/store/candidate/memory-candidate-store.js.map +1 -1
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.d.ts +44 -0
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js +136 -0
- package/core/dist/runtime-v2/store/candidate/sqlite-candidate-store.js.map +1 -1
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js.map +1 -1
- package/core/dist/runtime-v2/store/intervention-evidence-schema.js +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.d.ts +65 -0
- package/core/dist/runtime-v2/store/runtime-state-manager.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/runtime-state-manager.js +46 -0
- package/core/dist/runtime-v2/store/runtime-state-manager.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-connection.js +42 -0
- package/core/dist/runtime-v2/store/sqlite-connection.js.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-intervention-evidence-store.d.ts +1 -1
- package/core/dist/runtime-v2/store/sqlite-intervention-evidence-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/sqlite-intervention-evidence-store.js.map +1 -1
- package/core/dist/runtime-v2/store/task/sqlite-family-reopen.d.ts +19 -0
- package/core/dist/runtime-v2/store/task/sqlite-family-reopen.d.ts.map +1 -0
- package/core/dist/runtime-v2/store/task/sqlite-family-reopen.js +36 -0
- package/core/dist/runtime-v2/store/task/sqlite-family-reopen.js.map +1 -0
- package/core/dist/runtime-v2/store/task/sqlite-task-store.d.ts +23 -0
- package/core/dist/runtime-v2/store/task/sqlite-task-store.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/task/sqlite-task-store.js +50 -0
- package/core/dist/runtime-v2/store/task/sqlite-task-store.js.map +1 -1
- package/core/dist/runtime-v2/task-status.d.ts +3 -1
- package/core/dist/runtime-v2/task-status.d.ts.map +1 -1
- package/core/dist/runtime-v2/task-status.js +1 -1
- package/core/dist/runtime-v2/task-status.js.map +1 -1
- package/core/dist/runtime-v2/trajectory-schema.d.ts.map +1 -1
- package/core/dist/runtime-v2/trajectory-schema.js +11 -0
- package/core/dist/runtime-v2/trajectory-schema.js.map +1 -1
- package/core/dist/runtime-v2/types/event-types.d.ts +2 -2
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +1 -1
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/evidence-chain-contract.js +2 -2
- package/core/dist/runtime-v2/types/evidence-chain-contract.js.map +1 -1
- package/core/dist/runtime-v2/types/intervention-evidence-contract.d.ts +3 -3
- package/core/dist/runtime-v2/types/intervention-evidence-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/intervention-evidence-contract.js +1 -0
- package/core/dist/runtime-v2/types/intervention-evidence-contract.js.map +1 -1
- package/core/dist/telemetry-event.d.ts +2 -2
- package/core/dist/telemetry-event.d.ts.map +1 -1
- package/core/dist/telemetry-event.js +4 -0
- package/core/dist/telemetry-event.js.map +1 -1
- package/core/dist/trajectory-types.d.ts +2 -2
- package/core/dist/trajectory-types.d.ts.map +1 -1
- package/core/package.json +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -8
- package/dist/index.js.map +1 -1
- package/dist/installer.d.ts +42 -11
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +140 -36
- package/dist/installer.js.map +1 -1
- package/dist/installers/index.d.ts +18 -7
- package/dist/installers/index.d.ts.map +1 -1
- package/dist/installers/index.js +13 -4
- package/dist/installers/index.js.map +1 -1
- package/dist/installers/workbuddy-host-installer.d.ts +246 -0
- package/dist/installers/workbuddy-host-installer.d.ts.map +1 -0
- package/dist/installers/workbuddy-host-installer.js +1419 -0
- package/dist/installers/workbuddy-host-installer.js.map +1 -0
- package/dist/mvp-config.d.ts +24 -0
- package/dist/mvp-config.d.ts.map +1 -1
- package/dist/mvp-config.js +36 -0
- package/dist/mvp-config.js.map +1 -1
- package/dist/prompts.d.ts +13 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +45 -8
- package/dist/prompts.js.map +1 -1
- package/dist/uninstaller.d.ts +1 -1
- package/dist/uninstaller.d.ts.map +1 -1
- package/dist/uninstaller.js +29 -4
- package/dist/uninstaller.js.map +1 -1
- package/host-runtime/dist/governance-signal-admission.d.ts +63 -0
- package/host-runtime/dist/governance-signal-admission.js +322 -53
- package/host-runtime/dist/host-liveness-contract.js +7 -1
- package/host-runtime/dist/index.d.ts +1 -0
- package/host-runtime/dist/index.js +5 -1
- package/host-runtime/dist/internalization-consumer-cycle.d.ts +12 -0
- package/host-runtime/dist/internalization-consumer-cycle.js +43 -1
- package/host-runtime/dist/intervention-evidence-ingress.d.ts +1 -1
- package/host-runtime/dist/product-telemetry/service.js +1 -1
- package/host-runtime/dist/production-pain-evidence.d.ts +59 -1
- package/host-runtime/dist/production-pain-evidence.js +200 -17
- package/host-runtime/dist/prompt-activation-deliverability.js +5 -4
- package/host-runtime/dist/prompt-injection-event-evidence.d.ts +1 -1
- package/host-runtime/dist/prompt-injection-event-evidence.js +5 -1
- package/host-runtime/dist/prompt-injection-projection.d.ts +14 -5
- package/host-runtime/dist/prompt-injection-projection.js +30 -16
- package/host-runtime/dist/workbuddy-worker-status.d.ts +24 -0
- package/host-runtime/dist/workbuddy-worker-status.js +52 -0
- package/host-runtime/package.json +3 -3
- package/install-layout/dist/index.d.ts +18 -1
- package/install-layout/dist/index.js +15 -2
- package/install-layout/package.json +1 -1
- package/package.json +6 -5
- package/pd-cli/dist/commands/candidate.d.ts.map +1 -1
- package/pd-cli/dist/commands/candidate.js +44 -4
- package/pd-cli/dist/commands/candidate.js.map +1 -1
- package/pd-cli/dist/commands/codex-worker.d.ts.map +1 -1
- package/pd-cli/dist/commands/codex-worker.js +30 -1
- package/pd-cli/dist/commands/codex-worker.js.map +1 -1
- package/pd-cli/dist/commands/config-doctor.d.ts.map +1 -1
- package/pd-cli/dist/commands/config-doctor.js +19 -4
- package/pd-cli/dist/commands/config-doctor.js.map +1 -1
- package/pd-cli/dist/commands/diagnose.d.ts.map +1 -1
- package/pd-cli/dist/commands/diagnose.js +4 -1
- package/pd-cli/dist/commands/diagnose.js.map +1 -1
- package/pd-cli/dist/commands/health-codex-install.d.ts +85 -0
- package/pd-cli/dist/commands/health-codex-install.d.ts.map +1 -0
- package/pd-cli/dist/commands/health-codex-install.js +207 -0
- package/pd-cli/dist/commands/health-codex-install.js.map +1 -0
- package/pd-cli/dist/commands/health-codex.d.ts.map +1 -1
- package/pd-cli/dist/commands/health-codex.js +78 -0
- package/pd-cli/dist/commands/health-codex.js.map +1 -1
- package/pd-cli/dist/commands/pain-list.d.ts +3 -2
- package/pd-cli/dist/commands/pain-list.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-list.js +10 -10
- package/pd-cli/dist/commands/pain-list.js.map +1 -1
- package/pd-cli/dist/commands/pain-record.d.ts +2 -0
- package/pd-cli/dist/commands/pain-record.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-record.js +36 -0
- package/pd-cli/dist/commands/pain-record.js.map +1 -1
- package/pd-cli/dist/commands/pain-retry.d.ts +6 -0
- package/pd-cli/dist/commands/pain-retry.d.ts.map +1 -1
- package/pd-cli/dist/commands/pain-retry.js +152 -5
- package/pd-cli/dist/commands/pain-retry.js.map +1 -1
- package/pd-cli/dist/commands/runtime-activation.d.ts +1 -1
- package/pd-cli/dist/commands/runtime-activation.d.ts.map +1 -1
- package/pd-cli/dist/commands/runtime-activation.js +3 -3
- package/pd-cli/dist/commands/runtime-activation.js.map +1 -1
- package/pd-cli/dist/commands/workbuddy-worker.d.ts +19 -0
- package/pd-cli/dist/commands/workbuddy-worker.d.ts.map +1 -0
- package/pd-cli/dist/commands/workbuddy-worker.js +168 -0
- package/pd-cli/dist/commands/workbuddy-worker.js.map +1 -0
- package/pd-cli/dist/index.js +29 -1
- package/pd-cli/dist/index.js.map +1 -1
- package/pd-cli/dist/resolve-workspace.d.ts +14 -2
- package/pd-cli/dist/resolve-workspace.d.ts.map +1 -1
- package/pd-cli/dist/resolve-workspace.js +88 -21
- package/pd-cli/dist/resolve-workspace.js.map +1 -1
- package/pd-cli/dist/services/admission-write-gate.d.ts +24 -0
- package/pd-cli/dist/services/admission-write-gate.d.ts.map +1 -0
- package/pd-cli/dist/services/admission-write-gate.js +41 -0
- package/pd-cli/dist/services/admission-write-gate.js.map +1 -0
- package/pd-cli/dist/services/pd-config-loader.d.ts +39 -7
- package/pd-cli/dist/services/pd-config-loader.d.ts.map +1 -1
- package/pd-cli/dist/services/pd-config-loader.js +111 -18
- package/pd-cli/dist/services/pd-config-loader.js.map +1 -1
- package/pd-cli/dist/services/rulehost-pipeline-runner.d.ts +10 -0
- package/pd-cli/dist/services/rulehost-pipeline-runner.d.ts.map +1 -1
- package/pd-cli/dist/services/rulehost-pipeline-runner.js +59 -4
- package/pd-cli/dist/services/rulehost-pipeline-runner.js.map +1 -1
- package/pd-cli/package.json +4 -3
- package/plugin/dist/bundle.js +564 -509
- package/plugin/dist/governance-audit.js +1 -1
- package/plugin/dist/openclaw.plugin.json +1 -1
- package/plugin/dist/rulehost-evidence.js +1 -1
- package/plugin/openclaw.plugin.json +1 -1
- package/plugin/package.json +3 -3
- package/release-manager/dist/index.d.ts.map +1 -1
- package/release-manager/dist/index.js +84 -8
- package/release-manager/dist/index.js.map +1 -1
- package/release-manager/dist/installer.d.ts +42 -11
- package/release-manager/dist/installer.d.ts.map +1 -1
- package/release-manager/dist/installer.js +140 -36
- package/release-manager/dist/installer.js.map +1 -1
- package/release-manager/dist/installers/index.d.ts +18 -7
- package/release-manager/dist/installers/index.d.ts.map +1 -1
- package/release-manager/dist/installers/index.js +13 -4
- package/release-manager/dist/installers/index.js.map +1 -1
- package/release-manager/dist/installers/workbuddy-host-installer.d.ts +246 -0
- package/release-manager/dist/installers/workbuddy-host-installer.d.ts.map +1 -0
- package/release-manager/dist/installers/workbuddy-host-installer.js +1419 -0
- package/release-manager/dist/installers/workbuddy-host-installer.js.map +1 -0
- package/release-manager/dist/mvp-config.d.ts +24 -0
- package/release-manager/dist/mvp-config.d.ts.map +1 -1
- package/release-manager/dist/mvp-config.js +36 -0
- package/release-manager/dist/mvp-config.js.map +1 -1
- package/release-manager/dist/prompts.d.ts +13 -0
- package/release-manager/dist/prompts.d.ts.map +1 -1
- package/release-manager/dist/prompts.js +45 -8
- package/release-manager/dist/prompts.js.map +1 -1
- package/release-manager/dist/uninstaller.d.ts +1 -1
- package/release-manager/dist/uninstaller.d.ts.map +1 -1
- package/release-manager/dist/uninstaller.js +29 -4
- package/release-manager/dist/uninstaller.js.map +1 -1
- package/release-manager/package.json +5 -4
- package/workbuddy-adapter/dist/codec/index.d.ts +2 -0
- package/workbuddy-adapter/dist/codec/index.js +2 -0
- package/workbuddy-adapter/dist/codec/input-decoder.d.ts +30 -0
- package/workbuddy-adapter/dist/codec/input-decoder.js +232 -0
- package/workbuddy-adapter/dist/codec/output-encoder.d.ts +62 -0
- package/workbuddy-adapter/dist/codec/output-encoder.js +75 -0
- package/workbuddy-adapter/dist/host-adapter.d.ts +33 -0
- package/workbuddy-adapter/dist/host-adapter.js +23 -0
- package/workbuddy-adapter/dist/index.d.ts +16 -0
- package/workbuddy-adapter/dist/index.js +16 -0
- package/workbuddy-adapter/dist/pd-hook.d.ts +17 -0
- package/workbuddy-adapter/dist/pd-hook.js +505 -0
- package/workbuddy-adapter/dist/tool-semantics.d.ts +22 -0
- package/workbuddy-adapter/dist/tool-semantics.js +33 -0
- package/workbuddy-adapter/dist/workbuddy-evidence-recorder.d.ts +50 -0
- package/workbuddy-adapter/dist/workbuddy-evidence-recorder.js +238 -0
- package/workbuddy-adapter/dist/worker/workspace-worker.d.ts +41 -0
- package/workbuddy-adapter/dist/worker/workspace-worker.js +219 -0
- package/workbuddy-adapter/dist/workspace-resolution.d.ts +15 -0
- package/workbuddy-adapter/dist/workspace-resolution.js +53 -0
- package/workbuddy-adapter/package.json +62 -0
- package/workbuddy-adapter/plugin/.codebuddy-plugin/plugin.json +6 -0
- package/workbuddy-adapter/plugin/hooks/hooks.json +62 -0
- package/workbuddy-adapter/plugin/scripts/wrapper.cjs +79 -0
package/dist/installer.js
CHANGED
|
@@ -11,9 +11,9 @@ import { select } from '@inquirer/prompts';
|
|
|
11
11
|
import { logger } from './utils/logger.js';
|
|
12
12
|
import { checkOpenClawGateway, stopOpenClawGateway, restartOpenClawGateway } from './utils/env.js';
|
|
13
13
|
import { t } from './i18n.js';
|
|
14
|
-
import { generateConfigYamlContent, ExistingConfigVerifyInfraError, validateExistingConfigYamlForPreserve, getConfigYamlPath, readEnabledChannelsFromConfigYaml, getOpenClawDir, getPdDir, getPdRuntimeDir, getInstallManifestPath, getPdRuntimeBackupsDir, getPluginExtDir, getInstalledPluginDir, getInstalledLayoutPackageDir, getPdBackupsDir, getInstalledPdCliDir, getInstalledBinDir, getInstalledConsoleDir, isWindows, } from './mvp-config.js';
|
|
14
|
+
import { generateConfigYamlContent, ExistingConfigVerifyInfraError, validateExistingConfigYamlForPreserve, getConfigYamlPath, readEnabledChannelsFromConfigYaml, getOpenClawDir, getPdDir, getPdRuntimeDir, getInstallManifestPath, getPdRuntimeBackupsDir, getPluginExtDir, getInstalledPluginDir, getInstalledLayoutPackageDir, getPdBackupsDir, getInstalledPdCliDir, getInstalledBinDir, getInstalledConsoleDir, getHomeDir, isWindows, } from './mvp-config.js';
|
|
15
15
|
import { getHostInstallers } from './installers/index.js';
|
|
16
|
-
import { mergeInstallManifestWorkspaces, parseInstallManifest } from '@principles/install-layout';
|
|
16
|
+
import { INSTALL_LAYOUT_VERSION, getWorkbuddyWorkspaceDir, mergeInstallManifestWorkspaces, parseInstallManifest } from '@principles/install-layout';
|
|
17
17
|
import { detectOpenClawMainWorkspaceDivergence } from './utils/workspace-divergence.js';
|
|
18
18
|
import { applySkillLanguageSelection } from './skill-language.js';
|
|
19
19
|
import { parseReleaseAssetIdentity, parseReleaseAssetManifest, ReleaseAssetManifestError, verifyReleaseAssetManifestAsync, verifyReleaseAssetTarget, } from './update/release-asset-manifest.js';
|
|
@@ -142,6 +142,10 @@ export function mergeInstallManifestHosts(current, host) {
|
|
|
142
142
|
hosts.add('codex');
|
|
143
143
|
if (host === 'all' || host === 'openclaw')
|
|
144
144
|
hosts.add('openclaw');
|
|
145
|
+
// WorkBuddy is its own explicit target — 'all' must not attach a third host
|
|
146
|
+
// the operator never asked for (SPEC workbuddy-host-adapter §6, OD-03).
|
|
147
|
+
if (host === 'workbuddy')
|
|
148
|
+
hosts.add('workbuddy');
|
|
145
149
|
return [...hosts];
|
|
146
150
|
}
|
|
147
151
|
function resolveInstallManifestHosts(host) {
|
|
@@ -159,8 +163,13 @@ function resolveInstallManifestHosts(host) {
|
|
|
159
163
|
* PRI-624 Slice C: the install manifest records every Workspace this install
|
|
160
164
|
* serves so the Companion can discover its per-Workspace workers (SPEC §13
|
|
161
165
|
* "canonical install manifest"). Idempotent by canonical path.
|
|
166
|
+
*
|
|
167
|
+
* WorkBuddy (SPEC workbuddy-host-adapter §6): when the run targets workbuddy,
|
|
168
|
+
* the OD-07 governance workspace (~/.workbuddy/pd-workspace) is registered the
|
|
169
|
+
* same way — derived from install-layout, never hand-joined, never reused from
|
|
170
|
+
* another host's state.
|
|
162
171
|
*/
|
|
163
|
-
function resolveInstallManifestWorkspaces(workspaceDir) {
|
|
172
|
+
function resolveInstallManifestWorkspaces(workspaceDir, host) {
|
|
164
173
|
let current;
|
|
165
174
|
try {
|
|
166
175
|
current = JSON.parse(readFileSync(getInstallManifestPath(), 'utf8'));
|
|
@@ -173,7 +182,13 @@ function resolveInstallManifestWorkspaces(workspaceDir) {
|
|
|
173
182
|
if (current !== undefined && !parsed.manifest) {
|
|
174
183
|
throw new Error(parsed.error ?? 'install_manifest_malformed');
|
|
175
184
|
}
|
|
176
|
-
|
|
185
|
+
let workspaces = mergeInstallManifestWorkspaces(parsed.manifest, path.resolve(workspaceDir));
|
|
186
|
+
if (host === 'workbuddy') {
|
|
187
|
+
// Set-union via the same authority helper — order of existing entries is
|
|
188
|
+
// preserved, the governance dir is appended when absent (idempotent).
|
|
189
|
+
workspaces = mergeInstallManifestWorkspaces({ layoutVersion: parsed.manifest?.layoutVersion ?? INSTALL_LAYOUT_VERSION, mode: parsed.manifest?.mode ?? 'canonical', hosts: parsed.manifest?.hosts ?? [], workspaces }, getWorkbuddyWorkspaceDir(getHomeDir()));
|
|
190
|
+
}
|
|
191
|
+
return workspaces;
|
|
177
192
|
}
|
|
178
193
|
function writeInstallManifest(hosts, workspaces) {
|
|
179
194
|
mkdirSync(getPdDir(), { recursive: true });
|
|
@@ -1844,6 +1859,20 @@ function verifyPdCliShim() {
|
|
|
1844
1859
|
}
|
|
1845
1860
|
localError = detail;
|
|
1846
1861
|
logger.warn(`PD CLI local verification failed: ${detail}`);
|
|
1862
|
+
// First-install sequencing (WorkBuddy remediation): on a fresh home the
|
|
1863
|
+
// ~/.pd active record is written only at commit (AFTER this verify), and
|
|
1864
|
+
// host targets that deploy no OpenClaw legacy overlay (--host workbuddy)
|
|
1865
|
+
// have no fallback branch in the version report — so the version probe
|
|
1866
|
+
// legitimately reports active_record_missing here. That exact shape
|
|
1867
|
+
// proves the deployed CLI EXECUTES (entry reachable, imports resolved);
|
|
1868
|
+
// activation arrives at commit. Strict behavior is preserved whenever an
|
|
1869
|
+
// active record already exists (upgrades).
|
|
1870
|
+
const activeRecordPath = path.join(getPdDir(), 'active.json');
|
|
1871
|
+
if (!localOk && detail.includes('no active release record') && !existsSync(activeRecordPath)) {
|
|
1872
|
+
localOk = true;
|
|
1873
|
+
localError = undefined;
|
|
1874
|
+
logger.info('PD CLI executed without an activation record (first install); the record is written at commit.');
|
|
1875
|
+
}
|
|
1847
1876
|
}
|
|
1848
1877
|
const globalOk = (() => {
|
|
1849
1878
|
try {
|
|
@@ -1976,6 +2005,9 @@ function getInstalledHostRuntimeDir() {
|
|
|
1976
2005
|
function getInstalledCodexAdapterDir() {
|
|
1977
2006
|
return path.join(getPdRuntimeDir(), 'codex-adapter');
|
|
1978
2007
|
}
|
|
2008
|
+
function getInstalledWorkbuddyAdapterDir() {
|
|
2009
|
+
return path.join(getPdRuntimeDir(), 'workbuddy-adapter');
|
|
2010
|
+
}
|
|
1979
2011
|
function installBundledCore(pluginDir) {
|
|
1980
2012
|
const coreSrc = path.join(pluginDir, 'core');
|
|
1981
2013
|
const coreDest = getInstalledCoreDir();
|
|
@@ -2024,40 +2056,30 @@ function installBundledCodexAdapter(pluginDir) {
|
|
|
2024
2056
|
cpSync(codexAdapterSrc, codexAdapterDest, { recursive: true });
|
|
2025
2057
|
}
|
|
2026
2058
|
/**
|
|
2027
|
-
* PRI-711
|
|
2028
|
-
* its declared `file:../<component>`
|
|
2029
|
-
*
|
|
2030
|
-
*
|
|
2031
|
-
*
|
|
2032
|
-
*
|
|
2033
|
-
*
|
|
2034
|
-
*
|
|
2035
|
-
*
|
|
2036
|
-
* Data-driven from the deployed adapter manifest: every dependency whose ref
|
|
2037
|
-
* starts with `file:../` names a sibling runtime component directory. An
|
|
2038
|
-
* existing correct link is kept; a stale physical copy (self-contained
|
|
2039
|
-
* payloads ship materialized node_modules) or a wrong-target link is
|
|
2040
|
-
* replaced with the canonical junction/symlink, mirroring syncPdCli.
|
|
2041
|
-
* Idempotent. MUST run after installBundledCodexAdapter AND the
|
|
2042
|
-
* core/host-runtime/install-layout installs — the manifest declares all
|
|
2043
|
-
* three as file:../ siblings, and a missing sibling means a corrupted
|
|
2059
|
+
* PRI-711 (generalized for ADR-0020 host adapters): materialize node_modules
|
|
2060
|
+
* links for an INSTALLED runtime component so its declared `file:../<component>`
|
|
2061
|
+
* dependencies resolve under ESM realpath rules. Data-driven from the deployed
|
|
2062
|
+
* manifest: every dependency whose ref starts with `file:../` names a sibling
|
|
2063
|
+
* runtime component directory. An existing correct link is kept; a stale
|
|
2064
|
+
* physical copy or a wrong-target link is replaced with the canonical
|
|
2065
|
+
* junction/symlink. Idempotent. MUST run after the component AND all its
|
|
2066
|
+
* file:../ siblings are installed — a missing sibling means a corrupted
|
|
2044
2067
|
* payload or a call-order regression, which fails the install loudly.
|
|
2045
2068
|
*/
|
|
2046
|
-
|
|
2047
|
-
const
|
|
2048
|
-
const manifestPath = path.join(codexAdapterDir, 'package.json');
|
|
2069
|
+
function ensureComponentFileDependencyLinks(componentDir, componentLabel) {
|
|
2070
|
+
const manifestPath = path.join(componentDir, 'package.json');
|
|
2049
2071
|
let manifest;
|
|
2050
2072
|
try {
|
|
2051
2073
|
manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
2052
2074
|
}
|
|
2053
2075
|
catch (error) {
|
|
2054
|
-
throw new Error(`Installed
|
|
2076
|
+
throw new Error(`Installed ${componentLabel} package.json is missing or malformed (${manifestPath}): ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
2055
2077
|
}
|
|
2056
2078
|
if (!isRecord(manifest)) {
|
|
2057
|
-
throw new Error(`Installed
|
|
2079
|
+
throw new Error(`Installed ${componentLabel} package.json must contain an object (${manifestPath}).`);
|
|
2058
2080
|
}
|
|
2059
2081
|
if (manifest.dependencies !== undefined && !isRecord(manifest.dependencies)) {
|
|
2060
|
-
throw new Error(`Installed
|
|
2082
|
+
throw new Error(`Installed ${componentLabel} package.json dependencies must be an object (${manifestPath}).`);
|
|
2061
2083
|
}
|
|
2062
2084
|
const runtimeDir = getPdRuntimeDir();
|
|
2063
2085
|
for (const [name, ref] of Object.entries(manifest.dependencies ?? {})) {
|
|
@@ -2067,13 +2089,13 @@ export function ensureCodexAdapterResolution() {
|
|
|
2067
2089
|
// rc-1: the manifest is untrusted input — only accept single-path segment
|
|
2068
2090
|
// siblings so a crafted ref cannot escape the runtime dir.
|
|
2069
2091
|
if (!/^[A-Za-z0-9._-]+$/.test(siblingName) || siblingName === '.' || siblingName === '..') {
|
|
2070
|
-
throw new Error(`Installed
|
|
2092
|
+
throw new Error(`Installed ${componentLabel} declares an unsupported file dependency ref "${ref}" for ${name}.`);
|
|
2071
2093
|
}
|
|
2072
2094
|
const siblingDir = path.join(runtimeDir, siblingName);
|
|
2073
2095
|
if (!existsSync(siblingDir)) {
|
|
2074
|
-
throw new Error(
|
|
2096
|
+
throw new Error(`${componentLabel} depends on ${ref} but the sibling runtime component is missing: ${siblingDir}`);
|
|
2075
2097
|
}
|
|
2076
|
-
const linkPath = path.join(
|
|
2098
|
+
const linkPath = path.join(componentDir, 'node_modules', name);
|
|
2077
2099
|
let stat;
|
|
2078
2100
|
try {
|
|
2079
2101
|
stat = lstatSync(linkPath);
|
|
@@ -2102,6 +2124,61 @@ export function ensureCodexAdapterResolution() {
|
|
|
2102
2124
|
}
|
|
2103
2125
|
}
|
|
2104
2126
|
}
|
|
2127
|
+
/**
|
|
2128
|
+
* PRI-711: materialize node_modules links for the INSTALLED codex-adapter so
|
|
2129
|
+
* its declared `file:../<component>` dependencies resolve under ESM realpath
|
|
2130
|
+
* rules. The adapter's dist imports @principles/host-runtime and
|
|
2131
|
+
* @principles/core, and pd-cli's eager import graph (health-codex) statically
|
|
2132
|
+
* imports the adapter — without these links every pd command dies with
|
|
2133
|
+
* ERR_MODULE_NOT_FOUND at startup (observed 2026-09-09: the 1.231.2 full
|
|
2134
|
+
* update swapped in Slice-D pd-cli while the deployed adapter, laid down by
|
|
2135
|
+
* older installers, had no node_modules at all).
|
|
2136
|
+
*/
|
|
2137
|
+
export function ensureCodexAdapterResolution() {
|
|
2138
|
+
ensureComponentFileDependencyLinks(getInstalledCodexAdapterDir(), '@principles/codex-adapter');
|
|
2139
|
+
}
|
|
2140
|
+
/**
|
|
2141
|
+
* SPEC workbuddy-host-adapter §4.1/§5: the bundled @principles/workbuddy-adapter
|
|
2142
|
+
* payload installs as a runtime sibling exactly like codex-adapter, and its
|
|
2143
|
+
* `file:../<component>` dependency links are materialized the same way so the
|
|
2144
|
+
* plugin wrapper resolves core/host-runtime/install-layout under ESM realpath
|
|
2145
|
+
* rules.
|
|
2146
|
+
*
|
|
2147
|
+
* Unlike codex-adapter, the payload's ABSENCE is an observable skip, not a
|
|
2148
|
+
* failure: installer builds published before the adapter component landed (or
|
|
2149
|
+
* cut from a tree where it is not yet bundled) still deploy OpenClaw/Codex
|
|
2150
|
+
* untouched; the WorkBuddy host installer then reports
|
|
2151
|
+
* workbuddy_adapter_payload_missing for --host workbuddy (rc-9).
|
|
2152
|
+
*/
|
|
2153
|
+
export function installBundledWorkbuddyAdapter(pluginDir) {
|
|
2154
|
+
const workbuddyAdapterSrc = path.join(pluginDir, 'workbuddy-adapter');
|
|
2155
|
+
const workbuddyAdapterDest = getInstalledWorkbuddyAdapterDir();
|
|
2156
|
+
if (!existsSync(workbuddyAdapterSrc)) {
|
|
2157
|
+
logger.warn(`Bundled @principles/workbuddy-adapter not found in this installer package (${workbuddyAdapterSrc}) — the WorkBuddy host stays unavailable in this deployment. OpenClaw/Codex installation is unaffected.`);
|
|
2158
|
+
return false;
|
|
2159
|
+
}
|
|
2160
|
+
const workbuddyAdapterPkgJson = path.join(workbuddyAdapterSrc, 'package.json');
|
|
2161
|
+
const workbuddyAdapterDist = path.join(workbuddyAdapterSrc, 'dist');
|
|
2162
|
+
if (!existsSync(workbuddyAdapterPkgJson) || !existsSync(workbuddyAdapterDist)) {
|
|
2163
|
+
throw new Error('Bundled @principles/workbuddy-adapter is incomplete (missing package.json or dist). Package may be corrupted.');
|
|
2164
|
+
}
|
|
2165
|
+
rmSync(workbuddyAdapterDest, { recursive: true, force: true });
|
|
2166
|
+
cpSync(workbuddyAdapterSrc, workbuddyAdapterDest, { recursive: true });
|
|
2167
|
+
return true;
|
|
2168
|
+
}
|
|
2169
|
+
/**
|
|
2170
|
+
* Materialize the resolution links for the INSTALLED workbuddy-adapter.
|
|
2171
|
+
* Mirrors ensureCodexAdapterResolution; tolerates the component's absence
|
|
2172
|
+
* (observable skip — see installBundledWorkbuddyAdapter).
|
|
2173
|
+
*/
|
|
2174
|
+
export function ensureWorkbuddyAdapterResolution() {
|
|
2175
|
+
const workbuddyAdapterDir = getInstalledWorkbuddyAdapterDir();
|
|
2176
|
+
if (!existsSync(workbuddyAdapterDir)) {
|
|
2177
|
+
return { installed: false, skipReason: 'workbuddy_adapter_not_installed' };
|
|
2178
|
+
}
|
|
2179
|
+
ensureComponentFileDependencyLinks(workbuddyAdapterDir, '@principles/workbuddy-adapter');
|
|
2180
|
+
return { installed: true };
|
|
2181
|
+
}
|
|
2105
2182
|
const CORE_JUNCTION_PACKAGE = '@principles/core';
|
|
2106
2183
|
/** Reads a package.json `name` as untrusted input (rc-1); null when absent/malformed. */
|
|
2107
2184
|
function readPackageJsonName(manifestPath) {
|
|
@@ -2547,6 +2624,16 @@ function probeAutolaunchHealth(port, timeoutMs = 1500) {
|
|
|
2547
2624
|
* EP-04: detached + unref keeps the console running after the installer exits.
|
|
2548
2625
|
* EP-06: reuses pd-cli's handleConsoleOpen via the CLI entry — no new launcher.
|
|
2549
2626
|
*/
|
|
2627
|
+
/**
|
|
2628
|
+
* WorkBuddy remediation (review 2026-10-13 §4 P1): the auto-launched Console,
|
|
2629
|
+
* canary and manual-open instructions must manage the directory the host's
|
|
2630
|
+
* hook/worker actually read. For the WorkBuddy host that is the dedicated
|
|
2631
|
+
* governance workspace (SPEC §4.1) — NOT the project directory, which is only
|
|
2632
|
+
* the task project path. Other hosts keep the project workspace.
|
|
2633
|
+
*/
|
|
2634
|
+
export function resolveConsoleWorkspaceDir(host, projectWorkspaceDir, homeDir) {
|
|
2635
|
+
return host === 'workbuddy' ? getWorkbuddyWorkspaceDir(homeDir) : projectWorkspaceDir;
|
|
2636
|
+
}
|
|
2550
2637
|
async function autoLaunchConsole(workspaceDir) {
|
|
2551
2638
|
// Test/smoke seam (mirrors PD_SKIP_GLOBAL_SHIM): isolated installs (release
|
|
2552
2639
|
// smoke, upgrade gate) must not spawn a detached console that holds the
|
|
@@ -3228,6 +3315,14 @@ transaction) {
|
|
|
3228
3315
|
// siblings exist — the manifest declares file:../core, file:../host-runtime
|
|
3229
3316
|
// AND file:../install-layout, and install-layout lands just above.
|
|
3230
3317
|
ensureCodexAdapterResolution();
|
|
3318
|
+
// WorkBuddy third host (SPEC workbuddy-host-adapter §5 build/delivery
|
|
3319
|
+
// face): the adapter payload refreshes on every runtime deployment like
|
|
3320
|
+
// its codex sibling — updates rewrite the dir and its resolution links,
|
|
3321
|
+
// while WorkBuddy plugin registration and governance data are owned by
|
|
3322
|
+
// the host installer and preserved. Absence of the payload in older
|
|
3323
|
+
// installer builds is an observable skip, not a failure.
|
|
3324
|
+
installBundledWorkbuddyAdapter(pluginDir);
|
|
3325
|
+
ensureWorkbuddyAdapterResolution();
|
|
3231
3326
|
if (spinner)
|
|
3232
3327
|
updateProgress(spinner, stepIndex, 'Installing release-manager authority module...');
|
|
3233
3328
|
installBundledReleaseManagerPackage(pluginDir);
|
|
@@ -3331,7 +3426,12 @@ transaction) {
|
|
|
3331
3426
|
stepIndex++;
|
|
3332
3427
|
if (spinner)
|
|
3333
3428
|
updateProgress(spinner, stepIndex, 'Generating config.yaml...');
|
|
3334
|
-
|
|
3429
|
+
// Round-3 remediation P1: for the WorkBuddy host the LLM runtime profile
|
|
3430
|
+
// is GOVERNANCE state — WorkBuddyHostInstaller applies it to the
|
|
3431
|
+
// governance workspace config (the file its worker/console/hook chain
|
|
3432
|
+
// reads). Writing it here too would create a second truth. Other hosts
|
|
3433
|
+
// keep the historical project-dir profile (Fix-4 behavior, unchanged).
|
|
3434
|
+
const configYamlPath = await generateConfigYamlConfig(options.workspaceDir, options.host === 'workbuddy' ? undefined : options.runtimeProfile);
|
|
3335
3435
|
verification.features = 'passed';
|
|
3336
3436
|
stepIndex++;
|
|
3337
3437
|
if (spinner)
|
|
@@ -3411,6 +3511,7 @@ transaction) {
|
|
|
3411
3511
|
provider: options.runtimeProfile.provider,
|
|
3412
3512
|
model: options.runtimeProfile.model,
|
|
3413
3513
|
apiKeyEnv: options.runtimeProfile.apiKeyEnv,
|
|
3514
|
+
baseUrl: options.runtimeProfile.baseUrl,
|
|
3414
3515
|
}
|
|
3415
3516
|
: undefined,
|
|
3416
3517
|
});
|
|
@@ -3433,7 +3534,7 @@ transaction) {
|
|
|
3433
3534
|
if (hostFailures.length > 0) {
|
|
3434
3535
|
throw new Error(`Host installation failed: ${hostFailures.join(' | ')}`);
|
|
3435
3536
|
}
|
|
3436
|
-
writeInstallManifest(installManifestHosts, resolveInstallManifestWorkspaces(options.workspaceDir));
|
|
3537
|
+
writeInstallManifest(installManifestHosts, resolveInstallManifestWorkspaces(options.workspaceDir, options.host));
|
|
3437
3538
|
// PRI-709 P0-1: persist the metadata source after the manifest write, so
|
|
3438
3539
|
// the durable tier cannot be clobbered by the same install.
|
|
3439
3540
|
persistReleaseMetadataSource();
|
|
@@ -3504,7 +3605,10 @@ transaction) {
|
|
|
3504
3605
|
// Task 8: auto-launch console via `pd console open` (reuses PRI-300
|
|
3505
3606
|
// handleConsoleOpen — no new launcher subsystem). Opens the browser to
|
|
3506
3607
|
// /welcome for onboarding. Detached so the console survives installer exit.
|
|
3507
|
-
|
|
3608
|
+
// WorkBuddy remediation: the console manages the GOVERNANCE workspace for
|
|
3609
|
+
// this host — the directory hook/worker read — never the project dir.
|
|
3610
|
+
const consoleWorkspaceDir = resolveConsoleWorkspaceDir(activeHostTarget, options.workspaceDir, getHomeDir());
|
|
3611
|
+
const launchResult = await autoLaunchConsole(consoleWorkspaceDir);
|
|
3508
3612
|
// PRI-645: report the ACTUAL effective channels (registry default +
|
|
3509
3613
|
// sparse override). Never mask an explicit Owner disable with the
|
|
3510
3614
|
// requested channels — that would re-create ERR-042 (reporting the
|
|
@@ -3517,10 +3621,10 @@ transaction) {
|
|
|
3517
3621
|
// success=false and be guided to fix the failed host.
|
|
3518
3622
|
const nextActions = [];
|
|
3519
3623
|
if (components.cli === 'verified') {
|
|
3520
|
-
nextActions.push(`pd runtime canary --workspace "${
|
|
3624
|
+
nextActions.push(`pd runtime canary --workspace "${consoleWorkspaceDir}" --json`);
|
|
3521
3625
|
}
|
|
3522
3626
|
else if (components.cli === 'verified_local_only' && components.cliLocalPath) {
|
|
3523
|
-
nextActions.push(`"${components.cliLocalPath}" runtime canary --workspace "${
|
|
3627
|
+
nextActions.push(`"${components.cliLocalPath}" runtime canary --workspace "${consoleWorkspaceDir}" --json`);
|
|
3524
3628
|
}
|
|
3525
3629
|
if (components.console === 'configured') {
|
|
3526
3630
|
if (launchResult.consoleUrl) {
|
|
@@ -3529,7 +3633,7 @@ transaction) {
|
|
|
3529
3633
|
}
|
|
3530
3634
|
else {
|
|
3531
3635
|
// EP-03: auto-launch did not succeed — keep manual start instruction.
|
|
3532
|
-
nextActions.push(`pd console --workspace "${
|
|
3636
|
+
nextActions.push(`pd console --workspace "${consoleWorkspaceDir}" --no-auth (listens on 127.0.0.1 only)`);
|
|
3533
3637
|
}
|
|
3534
3638
|
}
|
|
3535
3639
|
if (launchResult.fallbackAction) {
|