pi-daddy 0.27.4 → 0.32.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/CHANGELOG.md +108 -124
- package/README.md +18 -896
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/contracts/ledger-record/v1/README.md +44 -0
- package/contracts/ledger-record/v1/fixtures/child-lifecycle.json +45 -0
- package/contracts/ledger-record/v1/fixtures/ledger-record.jsonl +3 -0
- package/contracts/ledger-record/v1/governance-event.schema.json +747 -0
- package/contracts/ledger-record/v1/record.schema.json +91 -0
- package/dist/cli.d.ts +6 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +108 -103
- package/dist/cli.js.map +1 -1
- package/dist/executors/activity-session.d.ts +12 -0
- package/dist/executors/activity-session.d.ts.map +1 -0
- package/dist/executors/activity-session.js +43 -0
- package/dist/executors/activity-session.js.map +1 -0
- package/dist/executors/executor.d.ts +39 -0
- package/dist/executors/executor.d.ts.map +1 -0
- package/dist/executors/executor.js +95 -0
- package/dist/executors/executor.js.map +1 -0
- package/dist/executors/herdr-cli.d.ts +78 -0
- package/dist/executors/herdr-cli.d.ts.map +1 -0
- package/dist/executors/herdr-cli.js +114 -0
- package/dist/executors/herdr-cli.js.map +1 -0
- package/dist/executors/herdr-name.d.ts.map +1 -0
- package/dist/executors/herdr-name.js.map +1 -0
- package/dist/executors/herdr-pi-lifecycle.d.ts.map +1 -0
- package/dist/executors/herdr-pi-lifecycle.js +22 -0
- package/dist/executors/herdr-pi-lifecycle.js.map +1 -0
- package/dist/executors/herdr-poll.d.ts +140 -0
- package/dist/executors/herdr-poll.d.ts.map +1 -0
- package/dist/executors/herdr-poll.js +252 -0
- package/dist/executors/herdr-poll.js.map +1 -0
- package/dist/executors/herdr-stage.d.ts +40 -0
- package/dist/executors/herdr-stage.d.ts.map +1 -0
- package/dist/executors/herdr-stage.js +54 -0
- package/dist/executors/herdr-stage.js.map +1 -0
- package/dist/executors/herdr-start.d.ts.map +1 -0
- package/dist/executors/herdr-start.js.map +1 -0
- package/dist/executors/native-session-target.d.ts +9 -0
- package/dist/executors/native-session-target.d.ts.map +1 -0
- package/dist/executors/native-session-target.js +30 -0
- package/dist/executors/native-session-target.js.map +1 -0
- package/dist/executors/pane-reaper.d.ts +111 -0
- package/dist/executors/pane-reaper.d.ts.map +1 -0
- package/dist/executors/pane-reaper.js +242 -0
- package/dist/executors/pane-reaper.js.map +1 -0
- package/dist/executors/process-activity.d.ts +3 -0
- package/dist/executors/process-activity.d.ts.map +1 -0
- package/dist/executors/process-activity.js +59 -0
- package/dist/executors/process-activity.js.map +1 -0
- package/dist/executors/run-herdr.d.ts +122 -0
- package/dist/executors/run-herdr.d.ts.map +1 -0
- package/dist/executors/run-herdr.js +341 -0
- package/dist/executors/run-herdr.js.map +1 -0
- package/dist/executors/vendor/herdr-pi-lifecycle.d.ts.map +1 -0
- package/dist/executors/vendor/herdr-pi-lifecycle.js.map +1 -0
- package/dist/governance/approval-prompt.d.ts +119 -0
- package/dist/governance/approval-prompt.d.ts.map +1 -0
- package/dist/governance/approval-prompt.js +133 -0
- package/dist/governance/approval-prompt.js.map +1 -0
- package/dist/governance/approval-store.d.ts +149 -0
- package/dist/governance/approval-store.d.ts.map +1 -0
- package/dist/governance/approval-store.js +309 -0
- package/dist/governance/approval-store.js.map +1 -0
- package/dist/governance/execution-retention.d.ts +90 -0
- package/dist/governance/execution-retention.d.ts.map +1 -0
- package/dist/governance/execution-retention.js +317 -0
- package/dist/governance/execution-retention.js.map +1 -0
- package/dist/governance/file-lock.d.ts.map +1 -0
- package/dist/governance/file-lock.js +205 -0
- package/dist/governance/file-lock.js.map +1 -0
- package/dist/governance/finalization.d.ts.map +1 -0
- package/dist/governance/finalization.js.map +1 -0
- package/dist/governance/grant-store.d.ts +96 -0
- package/dist/governance/grant-store.d.ts.map +1 -0
- package/dist/governance/grant-store.js +186 -0
- package/dist/governance/grant-store.js.map +1 -0
- package/dist/governance/init.d.ts +129 -0
- package/dist/governance/init.d.ts.map +1 -0
- package/dist/governance/init.js +360 -0
- package/dist/governance/init.js.map +1 -0
- package/dist/governance/lease-helper.d.ts.map +1 -0
- package/dist/governance/lease-helper.js +121 -0
- package/dist/governance/lease-helper.js.map +1 -0
- package/dist/governance/lease-record.d.ts +90 -0
- package/dist/governance/lease-record.d.ts.map +1 -0
- package/dist/governance/lease-record.js.map +1 -0
- package/dist/governance/ledger-events.d.ts +111 -0
- package/dist/governance/ledger-events.d.ts.map +1 -0
- package/dist/governance/ledger-events.js +129 -0
- package/dist/governance/ledger-events.js.map +1 -0
- package/dist/governance/ledger-report.d.ts +134 -0
- package/dist/governance/ledger-report.d.ts.map +1 -0
- package/dist/governance/ledger-report.js +294 -0
- package/dist/governance/ledger-report.js.map +1 -0
- package/dist/governance/ledger-v3-validation.d.ts +21 -0
- package/dist/governance/ledger-v3-validation.d.ts.map +1 -0
- package/dist/governance/ledger-v3-validation.js +353 -0
- package/dist/governance/ledger-v3-validation.js.map +1 -0
- package/dist/governance/ledger.d.ts +258 -0
- package/dist/governance/ledger.d.ts.map +1 -0
- package/dist/governance/ledger.js +201 -0
- package/dist/governance/ledger.js.map +1 -0
- package/dist/governance/native-session.d.ts +59 -0
- package/dist/governance/native-session.d.ts.map +1 -0
- package/dist/governance/native-session.js +208 -0
- package/dist/governance/native-session.js.map +1 -0
- package/dist/governance/record.d.ts +65 -0
- package/dist/governance/record.d.ts.map +1 -0
- package/dist/governance/record.js +259 -0
- package/dist/governance/record.js.map +1 -0
- package/dist/governance/retention-contract.d.ts.map +1 -0
- package/dist/governance/retention-contract.js +187 -0
- package/dist/governance/retention-contract.js.map +1 -0
- package/dist/governance/retention-json.d.ts.map +1 -0
- package/dist/governance/retention-json.js.map +1 -0
- package/dist/governance/workspace-lease.d.ts +40 -0
- package/dist/governance/workspace-lease.d.ts.map +1 -0
- package/dist/governance/workspace-lease.js +357 -0
- package/dist/governance/workspace-lease.js.map +1 -0
- package/dist/index.d.ts +59 -42
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -42
- package/dist/index.js.map +1 -1
- package/dist/kernel/approval.d.ts +241 -0
- package/dist/kernel/approval.d.ts.map +1 -0
- package/dist/kernel/approval.js +270 -0
- package/dist/kernel/approval.js.map +1 -0
- package/dist/kernel/capabilities.d.ts +136 -0
- package/dist/kernel/capabilities.d.ts.map +1 -0
- package/dist/kernel/capabilities.js +199 -0
- package/dist/kernel/capabilities.js.map +1 -0
- package/dist/kernel/catalog.d.ts +98 -0
- package/dist/kernel/catalog.d.ts.map +1 -0
- package/dist/kernel/catalog.js +280 -0
- package/dist/kernel/catalog.js.map +1 -0
- package/dist/kernel/chain.d.ts.map +1 -0
- package/dist/kernel/chain.js.map +1 -0
- package/dist/kernel/correlation.d.ts.map +1 -0
- package/dist/kernel/correlation.js +267 -0
- package/dist/kernel/correlation.js.map +1 -0
- package/dist/kernel/definitions.d.ts.map +1 -0
- package/dist/kernel/definitions.js +164 -0
- package/dist/kernel/definitions.js.map +1 -0
- package/dist/kernel/delegate-types.d.ts +160 -0
- package/dist/kernel/delegate-types.d.ts.map +1 -0
- package/dist/kernel/delegate-types.js +9 -0
- package/dist/kernel/delegate-types.js.map +1 -0
- package/dist/kernel/delegate.d.ts.map +1 -0
- package/dist/kernel/delegate.js +314 -0
- package/dist/kernel/delegate.js.map +1 -0
- package/dist/kernel/delegation-approval.d.ts.map +1 -0
- package/dist/kernel/delegation-approval.js +93 -0
- package/dist/kernel/delegation-approval.js.map +1 -0
- package/dist/kernel/env-names.d.ts +51 -0
- package/dist/kernel/env-names.d.ts.map +1 -0
- package/dist/kernel/env-names.js +112 -0
- package/dist/kernel/env-names.js.map +1 -0
- package/dist/kernel/execution-id.d.ts.map +1 -0
- package/dist/kernel/execution-id.js.map +1 -0
- package/dist/kernel/fanout.d.ts.map +1 -0
- package/dist/kernel/fanout.js +93 -0
- package/dist/kernel/fanout.js.map +1 -0
- package/dist/kernel/grant-env.d.ts +118 -0
- package/dist/kernel/grant-env.d.ts.map +1 -0
- package/dist/kernel/grant-env.js +104 -0
- package/dist/kernel/grant-env.js.map +1 -0
- package/dist/kernel/ledger-identifiers.d.ts.map +1 -0
- package/dist/kernel/ledger-identifiers.js.map +1 -0
- package/dist/kernel/model-preflight.d.ts +13 -0
- package/dist/kernel/model-preflight.d.ts.map +1 -0
- package/dist/kernel/model-preflight.js +30 -0
- package/dist/kernel/model-preflight.js.map +1 -0
- package/dist/kernel/pi-tools.d.ts.map +1 -0
- package/dist/kernel/pi-tools.js +29 -0
- package/dist/kernel/pi-tools.js.map +1 -0
- package/dist/kernel/progress.d.ts.map +1 -0
- package/dist/kernel/progress.js.map +1 -0
- package/dist/kernel/project-paths.d.ts +43 -0
- package/dist/kernel/project-paths.d.ts.map +1 -0
- package/dist/kernel/project-paths.js +81 -0
- package/dist/kernel/project-paths.js.map +1 -0
- package/dist/kernel/propagation.d.ts +195 -0
- package/dist/kernel/propagation.d.ts.map +1 -0
- package/dist/kernel/propagation.js +275 -0
- package/dist/kernel/propagation.js.map +1 -0
- package/dist/kernel/refusals.d.ts +16 -0
- package/dist/kernel/refusals.d.ts.map +1 -0
- package/dist/kernel/refusals.js +53 -0
- package/dist/kernel/refusals.js.map +1 -0
- package/dist/kernel/resolve.d.ts.map +1 -0
- package/dist/kernel/resolve.js +201 -0
- package/dist/kernel/resolve.js.map +1 -0
- package/dist/kernel/routing-authority.d.ts.map +1 -0
- package/dist/kernel/routing-authority.js.map +1 -0
- package/dist/kernel/run-child.d.ts +111 -0
- package/dist/kernel/run-child.d.ts.map +1 -0
- package/dist/kernel/run-child.js +324 -0
- package/dist/kernel/run-child.js.map +1 -0
- package/dist/kernel/skill-packages.d.ts +116 -0
- package/dist/kernel/skill-packages.d.ts.map +1 -0
- package/dist/kernel/skill-packages.js +300 -0
- package/dist/kernel/skill-packages.js.map +1 -0
- package/dist/kernel/skill-resources.d.ts.map +1 -0
- package/dist/kernel/skill-resources.js +56 -0
- package/dist/kernel/skill-resources.js.map +1 -0
- package/dist/kernel/spawn.d.ts.map +1 -0
- package/dist/kernel/spawn.js.map +1 -0
- package/dist/kernel/workspace.d.ts +51 -0
- package/dist/kernel/workspace.d.ts.map +1 -0
- package/dist/kernel/workspace.js +223 -0
- package/dist/kernel/workspace.js.map +1 -0
- package/dist/products/activity-timeline.d.ts +126 -0
- package/dist/products/activity-timeline.d.ts.map +1 -0
- package/dist/products/activity-timeline.js +542 -0
- package/dist/products/activity-timeline.js.map +1 -0
- package/dist/products/dashboard-cli.d.ts +26 -0
- package/dist/products/dashboard-cli.d.ts.map +1 -0
- package/dist/products/dashboard-cli.js +224 -0
- package/dist/products/dashboard-cli.js.map +1 -0
- package/dist/products/dashboard-display-controls.d.ts +17 -0
- package/dist/products/dashboard-display-controls.d.ts.map +1 -0
- package/dist/products/dashboard-display-controls.js +38 -0
- package/dist/products/dashboard-display-controls.js.map +1 -0
- package/dist/products/dashboard-handshake.d.ts +42 -0
- package/dist/products/dashboard-handshake.d.ts.map +1 -0
- package/dist/products/dashboard-handshake.js +158 -0
- package/dist/products/dashboard-handshake.js.map +1 -0
- package/dist/products/dashboard-herdr.d.ts +55 -0
- package/dist/products/dashboard-herdr.d.ts.map +1 -0
- package/dist/products/dashboard-herdr.js +324 -0
- package/dist/products/dashboard-herdr.js.map +1 -0
- package/dist/products/dashboard-projection.d.ts +62 -0
- package/dist/products/dashboard-projection.d.ts.map +1 -0
- package/dist/products/dashboard-projection.js +305 -0
- package/dist/products/dashboard-projection.js.map +1 -0
- package/dist/products/dashboard-render.d.ts.map +1 -0
- package/dist/products/dashboard-render.js +208 -0
- package/dist/products/dashboard-render.js.map +1 -0
- package/extensions/activity-timeline.ts +196 -0
- package/extensions/approval-banking.ts +3 -3
- package/extensions/approvals.ts +18 -12
- package/extensions/chain-approval-facts.ts +9 -6
- package/extensions/chain-ledger.ts +4 -4
- package/extensions/chain-plan.ts +6 -6
- package/extensions/correlation-shape.ts +42 -33
- package/extensions/delegate-chain.ts +93 -45
- package/extensions/delegation-authority.ts +7 -3
- package/extensions/delegation-ledger.ts +2 -2
- package/extensions/delegation-native.ts +24 -7
- package/extensions/delegation.ts +91 -80
- package/extensions/execute-child.ts +440 -293
- package/extensions/execution-occurrence.ts +2 -2
- package/extensions/executor-session.ts +5 -5
- package/extensions/fanout-outcome.ts +8 -6
- package/extensions/grant-store-refusal.ts +24 -12
- package/extensions/grants-command.ts +41 -33
- package/extensions/grants-connected-command.ts +29 -15
- package/extensions/grants.ts +78 -77
- package/extensions/init-command.ts +18 -12
- package/extensions/reload-environment.ts +12 -5
- package/extensions/run-delegation.ts +29 -19
- package/extensions/session-environment.ts +31 -14
- package/extensions/session-report.ts +60 -10
- package/extensions/session.ts +76 -66
- package/extensions/spawn-summary.ts +5 -5
- package/extensions/stored-grant-session.ts +5 -5
- package/extensions/tripwire.ts +1 -1
- package/extensions/workspace-runtime.ts +26 -24
- package/herdr-plugin/herdr-plugin.toml +1 -1
- package/package.json +5 -212
- package/src/cli.ts +136 -89
- package/src/executors/activity-session.ts +54 -0
- package/src/executors/executor.ts +123 -0
- package/src/executors/herdr-cli.ts +132 -0
- package/src/executors/herdr-pi-lifecycle.ts +21 -0
- package/src/executors/herdr-poll.ts +305 -0
- package/src/executors/herdr-stage.ts +55 -0
- package/src/executors/native-session-target.ts +31 -0
- package/src/executors/pane-reaper.ts +270 -0
- package/src/executors/process-activity.ts +54 -0
- package/src/executors/run-herdr.ts +426 -0
- package/src/governance/approval-prompt.ts +225 -0
- package/src/governance/approval-store.ts +385 -0
- package/src/governance/execution-retention.ts +372 -0
- package/src/governance/file-lock.ts +210 -0
- package/src/governance/finalization.ts +82 -0
- package/src/governance/grant-store.ts +235 -0
- package/src/governance/init.ts +447 -0
- package/src/governance/lease-helper.ts +124 -0
- package/src/governance/lease-record.ts +131 -0
- package/src/governance/ledger-events.ts +222 -0
- package/src/governance/ledger-report.ts +396 -0
- package/src/governance/ledger-v3-validation.ts +384 -0
- package/src/governance/ledger.ts +419 -0
- package/src/governance/native-session.ts +264 -0
- package/src/governance/record.ts +294 -0
- package/src/governance/retention-contract.ts +201 -0
- package/src/governance/retention-json.ts +24 -0
- package/src/governance/workspace-lease.ts +429 -0
- package/src/index.ts +82 -92
- package/src/kernel/approval.ts +406 -0
- package/src/kernel/capabilities.ts +216 -0
- package/src/kernel/catalog.ts +313 -0
- package/src/kernel/correlation.ts +351 -0
- package/src/kernel/definitions.ts +215 -0
- package/src/kernel/delegate-types.ts +162 -0
- package/src/kernel/delegate.ts +370 -0
- package/src/kernel/delegation-approval.ts +126 -0
- package/src/kernel/env-names.ts +119 -0
- package/src/kernel/fanout.ts +106 -0
- package/src/kernel/grant-env.ts +174 -0
- package/src/kernel/model-preflight.ts +44 -0
- package/src/kernel/pi-tools.ts +32 -0
- package/src/kernel/project-paths.ts +97 -0
- package/src/kernel/propagation.ts +341 -0
- package/src/kernel/refusals.ts +64 -0
- package/src/kernel/resolve.ts +258 -0
- package/src/kernel/run-child.ts +418 -0
- package/src/kernel/skill-packages.ts +329 -0
- package/src/kernel/skill-resources.ts +64 -0
- package/src/kernel/workspace.ts +336 -0
- package/src/products/activity-timeline.ts +679 -0
- package/src/products/dashboard-cli.ts +250 -0
- package/src/products/dashboard-display-controls.ts +44 -0
- package/src/products/dashboard-handshake.ts +222 -0
- package/src/products/dashboard-herdr.ts +427 -0
- package/src/products/dashboard-projection.ts +389 -0
- package/src/products/dashboard-render.ts +260 -0
- package/PRODUCT-GUIDE.md +0 -136
- package/REQUIREMENTS.md +0 -41
- package/contracts/daily-view/v1/README.md +0 -114
- package/contracts/daily-view/v1/fixtures/view.json +0 -525
- package/contracts/daily-view/v1/fixtures/view.txt +0 -75
- package/contracts/daily-view/v1/fixtures/work.jsonl +0 -17
- package/contracts/daily-view/v1/p03/README.md +0 -26
- package/contracts/daily-view/v1/p03/fixtures/retained-executions.json +0 -241
- package/contracts/daily-view/v1/p03/projection.schema.json +0 -194
- package/contracts/daily-view/v1/p03/provenance.json +0 -21
- package/contracts/dashboard-host/v1/README.md +0 -176
- package/contracts/debrief/v1/README.md +0 -146
- package/contracts/debrief/v1/intervention/README.md +0 -32
- package/contracts/debrief/v1/intervention/fixtures/artifact-3ee11136beb864f518252e5024dae9197421fbf97b6e981d3243c782b5c44bd0.txt +0 -1
- package/contracts/debrief/v1/intervention/fixtures/artifact-58905d872dd3c54a9705f67b05fa82edbad7af6476ae8993faf1a7b9fadfb905.txt +0 -1
- package/contracts/debrief/v1/intervention/fixtures/assessment.json +0 -29
- package/contracts/debrief/v1/intervention/fixtures/blind-view.json +0 -20
- package/contracts/debrief/v1/intervention/fixtures/choice.json +0 -7
- package/contracts/debrief/v1/intervention/fixtures/manifest.json +0 -57
- package/contracts/debrief/v1/intervention/fixtures/reveal.json +0 -39
- package/contracts/debrief/v1/provenance.json +0 -89
- package/contracts/debrief/v1/work-capture/README.md +0 -38
- package/contracts/debrief/v1/work-capture/fixtures/batch.json +0 -17
- package/contracts/debrief/v1/work-capture/fixtures/cases.json +0 -184
- package/contracts/debrief/v1/work-capture/fixtures/review.json +0 -184
- package/contracts/debrief/v1/work-capture/review-request.schema.json +0 -41
- package/contracts/debrief/v1/work-capture/work-case.schema.json +0 -190
- package/contracts/debrief/v2/README.md +0 -71
- package/contracts/debrief/v2/input-pin.json +0 -66
- package/contracts/debrief/v2/intervention-upstream.md +0 -40
- package/contracts/debrief/v2/work-signals-upstream.md +0 -22
- package/contracts/dispatch-control/v1/README.md +0 -109
- package/contracts/dispatch-control/v1/request.schema.json +0 -19
- package/contracts/effect-profile/v1/README.md +0 -124
- package/contracts/execution-retention/v1/README.md +0 -109
- package/contracts/execution-retention/v2/README.md +0 -148
- package/contracts/execution-retention/v2/fixtures/interrupted-native-bytes.json +0 -91
- package/contracts/execution-retention/v2/fixtures/missing-native-session.json +0 -91
- package/contracts/execution-retention/v2/fixtures/native-file-unknown-branch.json +0 -91
- package/contracts/execution-retention/v2/fixtures/native-id-without-bytes.json +0 -91
- package/contracts/execution-retention/v2/fixtures/native-live-branch.json +0 -90
- package/contracts/execution-retention/v2/fixtures/replaced-native-session.json +0 -92
- package/contracts/execution-retention/v2/fixtures/result-82c620cdfeb8ca6b858cf653d7f5e2eedca5315d6244216d60e8b36f03223d6a.bin +0 -1
- package/contracts/execution-retention/v2/fixtures/session-2ec1f134bc739984434f7fca689e1c3d1c39fce2dcadae709e9b6faedfcc4ac7.bin +0 -3
- package/contracts/execution-retention/v2/fixtures/session-9bdb4bd16a901da31580acf056bda525225259e15ec409e0410480109011772f.bin +0 -3
- package/contracts/execution-retention/v2/manifest.schema.json +0 -858
- package/contracts/experiment/v1/README.md +0 -164
- package/contracts/factory-order/v1/README.md +0 -151
- package/contracts/factory-order/v1/adoption-pin.json +0 -8
- package/contracts/intent-control/v1/README.md +0 -135
- package/contracts/intent-control/v1/request.schema.json +0 -1096
- package/contracts/intent-control/v2/README.md +0 -34
- package/contracts/intent-control/v2/request.schema.json +0 -1070
- package/contracts/ledger/v2/README.md +0 -59
- package/contracts/ledger/v2/fixtures/capability-decision.json +0 -95
- package/contracts/ledger/v2/fixtures/check-receipt.json +0 -40
- package/contracts/ledger/v2/fixtures/child-lifecycle.json +0 -42
- package/contracts/ledger/v2/fixtures/workspace-lease.json +0 -41
- package/contracts/ledger/v2/ledger-event.schema.json +0 -633
- package/contracts/ledger/v3/README.md +0 -36
- package/contracts/ledger/v3/fixtures/check-receipt.json +0 -41
- package/contracts/ledger/v3/fixtures/child-lifecycle.json +0 -44
- package/contracts/ledger/v3/fixtures/workflow-fact.json +0 -40
- package/contracts/ledger/v3/ledger-event.schema.json +0 -955
- package/contracts/ledger/v4/README.md +0 -241
- package/contracts/ledger/v4/fixtures/layout-options.json +0 -428
- package/contracts/ledger/v4/fixtures/work-acceptance.json +0 -57
- package/contracts/ledger/v4/fixtures/work-occurrence.json +0 -44
- package/contracts/ledger/v4/fixtures/work-revision.json +0 -26
- package/contracts/ledger/v4/fixtures/work-snapshot.json +0 -73
- package/contracts/ledger/v4/ledger-event.schema.json +0 -162
- package/contracts/ordinary-control/v1/README.md +0 -59
- package/contracts/producer-ipc/v1/README.md +0 -137
- package/dist/approval-prompt.d.ts +0 -119
- package/dist/approval-prompt.d.ts.map +0 -1
- package/dist/approval-prompt.js +0 -133
- package/dist/approval-prompt.js.map +0 -1
- package/dist/approval-store.d.ts +0 -149
- package/dist/approval-store.d.ts.map +0 -1
- package/dist/approval-store.js +0 -314
- package/dist/approval-store.js.map +0 -1
- package/dist/approval.d.ts +0 -241
- package/dist/approval.d.ts.map +0 -1
- package/dist/approval.js +0 -268
- package/dist/approval.js.map +0 -1
- package/dist/capabilities.d.ts +0 -136
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js +0 -203
- package/dist/capabilities.js.map +0 -1
- package/dist/catalog.d.ts +0 -98
- package/dist/catalog.d.ts.map +0 -1
- package/dist/catalog.js +0 -273
- package/dist/catalog.js.map +0 -1
- package/dist/chain.d.ts.map +0 -1
- package/dist/chain.js.map +0 -1
- package/dist/check-runner.d.ts +0 -66
- package/dist/check-runner.d.ts.map +0 -1
- package/dist/check-runner.js +0 -275
- package/dist/check-runner.js.map +0 -1
- package/dist/control-journal.d.ts +0 -20
- package/dist/control-journal.d.ts.map +0 -1
- package/dist/control-journal.js +0 -73
- package/dist/control-journal.js.map +0 -1
- package/dist/correlation.d.ts.map +0 -1
- package/dist/correlation.js +0 -231
- package/dist/correlation.js.map +0 -1
- package/dist/daily-dashboard-host.d.ts +0 -136
- package/dist/daily-dashboard-host.d.ts.map +0 -1
- package/dist/daily-dashboard-host.js +0 -164
- package/dist/daily-dashboard-host.js.map +0 -1
- package/dist/daily-panel.d.ts +0 -36
- package/dist/daily-panel.d.ts.map +0 -1
- package/dist/daily-panel.js +0 -84
- package/dist/daily-panel.js.map +0 -1
- package/dist/daily-view-input.d.ts +0 -44
- package/dist/daily-view-input.d.ts.map +0 -1
- package/dist/daily-view-input.js +0 -68
- package/dist/daily-view-input.js.map +0 -1
- package/dist/daily-view-render.d.ts +0 -5
- package/dist/daily-view-render.d.ts.map +0 -1
- package/dist/daily-view-render.js +0 -42
- package/dist/daily-view-render.js.map +0 -1
- package/dist/daily-view.d.ts +0 -77
- package/dist/daily-view.d.ts.map +0 -1
- package/dist/daily-view.js +0 -176
- package/dist/daily-view.js.map +0 -1
- package/dist/dashboard-cli.d.ts +0 -48
- package/dist/dashboard-cli.d.ts.map +0 -1
- package/dist/dashboard-cli.js +0 -331
- package/dist/dashboard-cli.js.map +0 -1
- package/dist/dashboard-display-controls.d.ts +0 -10
- package/dist/dashboard-display-controls.d.ts.map +0 -1
- package/dist/dashboard-display-controls.js +0 -25
- package/dist/dashboard-display-controls.js.map +0 -1
- package/dist/dashboard-handshake.d.ts +0 -37
- package/dist/dashboard-handshake.d.ts.map +0 -1
- package/dist/dashboard-handshake.js +0 -136
- package/dist/dashboard-handshake.js.map +0 -1
- package/dist/dashboard-harness.d.ts +0 -22
- package/dist/dashboard-harness.d.ts.map +0 -1
- package/dist/dashboard-harness.js +0 -89
- package/dist/dashboard-harness.js.map +0 -1
- package/dist/dashboard-herdr.d.ts +0 -55
- package/dist/dashboard-herdr.d.ts.map +0 -1
- package/dist/dashboard-herdr.js +0 -293
- package/dist/dashboard-herdr.js.map +0 -1
- package/dist/dashboard-host-contract.d.ts +0 -127
- package/dist/dashboard-host-contract.d.ts.map +0 -1
- package/dist/dashboard-host-contract.js +0 -14
- package/dist/dashboard-host-contract.js.map +0 -1
- package/dist/dashboard-host-transport.d.ts +0 -16
- package/dist/dashboard-host-transport.d.ts.map +0 -1
- package/dist/dashboard-host-transport.js +0 -127
- package/dist/dashboard-host-transport.js.map +0 -1
- package/dist/dashboard-host.d.ts +0 -239
- package/dist/dashboard-host.d.ts.map +0 -1
- package/dist/dashboard-host.js +0 -474
- package/dist/dashboard-host.js.map +0 -1
- package/dist/dashboard-menu.d.ts +0 -16
- package/dist/dashboard-menu.d.ts.map +0 -1
- package/dist/dashboard-menu.js +0 -33
- package/dist/dashboard-menu.js.map +0 -1
- package/dist/dashboard-observation.d.ts +0 -28
- package/dist/dashboard-observation.d.ts.map +0 -1
- package/dist/dashboard-observation.js +0 -87
- package/dist/dashboard-observation.js.map +0 -1
- package/dist/dashboard-projection.d.ts +0 -73
- package/dist/dashboard-projection.d.ts.map +0 -1
- package/dist/dashboard-projection.js +0 -294
- package/dist/dashboard-projection.js.map +0 -1
- package/dist/dashboard-render.d.ts.map +0 -1
- package/dist/dashboard-render.js +0 -212
- package/dist/dashboard-render.js.map +0 -1
- package/dist/debrief-contract.d.ts +0 -65
- package/dist/debrief-contract.d.ts.map +0 -1
- package/dist/debrief-contract.js +0 -151
- package/dist/debrief-contract.js.map +0 -1
- package/dist/debrief-fixture.d.ts +0 -16
- package/dist/debrief-fixture.d.ts.map +0 -1
- package/dist/debrief-fixture.js +0 -41
- package/dist/debrief-fixture.js.map +0 -1
- package/dist/debrief-host.d.ts +0 -59
- package/dist/debrief-host.d.ts.map +0 -1
- package/dist/debrief-host.js +0 -49
- package/dist/debrief-host.js.map +0 -1
- package/dist/debrief-render.d.ts +0 -5
- package/dist/debrief-render.d.ts.map +0 -1
- package/dist/debrief-render.js +0 -65
- package/dist/debrief-render.js.map +0 -1
- package/dist/debrief.d.ts +0 -90
- package/dist/debrief.d.ts.map +0 -1
- package/dist/debrief.js +0 -263
- package/dist/debrief.js.map +0 -1
- package/dist/definitions.d.ts.map +0 -1
- package/dist/definitions.js +0 -164
- package/dist/definitions.js.map +0 -1
- package/dist/delegate-types.d.ts +0 -146
- package/dist/delegate-types.d.ts.map +0 -1
- package/dist/delegate-types.js +0 -8
- package/dist/delegate-types.js.map +0 -1
- package/dist/delegate.d.ts.map +0 -1
- package/dist/delegate.js +0 -305
- package/dist/delegate.js.map +0 -1
- package/dist/delegation-approval.d.ts.map +0 -1
- package/dist/delegation-approval.js +0 -94
- package/dist/delegation-approval.js.map +0 -1
- package/dist/dispatch-control.d.ts +0 -45
- package/dist/dispatch-control.d.ts.map +0 -1
- package/dist/dispatch-control.js +0 -76
- package/dist/dispatch-control.js.map +0 -1
- package/dist/effect-profile-runtime.d.ts +0 -40
- package/dist/effect-profile-runtime.d.ts.map +0 -1
- package/dist/effect-profile-runtime.js +0 -51
- package/dist/effect-profile-runtime.js.map +0 -1
- package/dist/effect-profile.d.ts +0 -40
- package/dist/effect-profile.d.ts.map +0 -1
- package/dist/effect-profile.js +0 -152
- package/dist/effect-profile.js.map +0 -1
- package/dist/execution-id.d.ts.map +0 -1
- package/dist/execution-id.js.map +0 -1
- package/dist/execution-retention.d.ts +0 -90
- package/dist/execution-retention.d.ts.map +0 -1
- package/dist/execution-retention.js +0 -247
- package/dist/execution-retention.js.map +0 -1
- package/dist/executor.d.ts +0 -39
- package/dist/executor.d.ts.map +0 -1
- package/dist/executor.js +0 -94
- package/dist/executor.js.map +0 -1
- package/dist/experiment-contract.d.ts +0 -56
- package/dist/experiment-contract.d.ts.map +0 -1
- package/dist/experiment-contract.js +0 -80
- package/dist/experiment-contract.js.map +0 -1
- package/dist/experiment-state.d.ts +0 -22
- package/dist/experiment-state.d.ts.map +0 -1
- package/dist/experiment-state.js +0 -79
- package/dist/experiment-state.js.map +0 -1
- package/dist/experiment-store.d.ts +0 -30
- package/dist/experiment-store.d.ts.map +0 -1
- package/dist/experiment-store.js +0 -147
- package/dist/experiment-store.js.map +0 -1
- package/dist/experiment.d.ts +0 -65
- package/dist/experiment.d.ts.map +0 -1
- package/dist/experiment.js +0 -362
- package/dist/experiment.js.map +0 -1
- package/dist/factory-contract.d.ts +0 -79
- package/dist/factory-contract.d.ts.map +0 -1
- package/dist/factory-contract.js +0 -89
- package/dist/factory-contract.js.map +0 -1
- package/dist/factory-migration.d.ts +0 -20
- package/dist/factory-migration.d.ts.map +0 -1
- package/dist/factory-migration.js +0 -55
- package/dist/factory-migration.js.map +0 -1
- package/dist/factory-order.d.ts +0 -848
- package/dist/factory-order.d.ts.map +0 -1
- package/dist/factory-order.js +0 -83
- package/dist/factory-order.js.map +0 -1
- package/dist/factory-registry.d.ts +0 -121
- package/dist/factory-registry.d.ts.map +0 -1
- package/dist/factory-registry.js +0 -133
- package/dist/factory-registry.js.map +0 -1
- package/dist/fanout.d.ts.map +0 -1
- package/dist/fanout.js +0 -93
- package/dist/fanout.js.map +0 -1
- package/dist/file-lock.d.ts.map +0 -1
- package/dist/file-lock.js +0 -201
- package/dist/file-lock.js.map +0 -1
- package/dist/finalization.d.ts.map +0 -1
- package/dist/finalization.js.map +0 -1
- package/dist/git-identity.d.ts +0 -13
- package/dist/git-identity.d.ts.map +0 -1
- package/dist/git-identity.js +0 -47
- package/dist/git-identity.js.map +0 -1
- package/dist/grant-env.d.ts +0 -75
- package/dist/grant-env.d.ts.map +0 -1
- package/dist/grant-env.js +0 -154
- package/dist/grant-env.js.map +0 -1
- package/dist/grant-store.d.ts +0 -96
- package/dist/grant-store.d.ts.map +0 -1
- package/dist/grant-store.js +0 -188
- package/dist/grant-store.js.map +0 -1
- package/dist/herdr-cli.d.ts +0 -78
- package/dist/herdr-cli.d.ts.map +0 -1
- package/dist/herdr-cli.js +0 -113
- package/dist/herdr-cli.js.map +0 -1
- package/dist/herdr-name.d.ts.map +0 -1
- package/dist/herdr-name.js.map +0 -1
- package/dist/herdr-pi-lifecycle.d.ts.map +0 -1
- package/dist/herdr-pi-lifecycle.js +0 -22
- package/dist/herdr-pi-lifecycle.js.map +0 -1
- package/dist/herdr-poll.d.ts +0 -133
- package/dist/herdr-poll.d.ts.map +0 -1
- package/dist/herdr-poll.js +0 -222
- package/dist/herdr-poll.js.map +0 -1
- package/dist/herdr-stage.d.ts +0 -40
- package/dist/herdr-stage.d.ts.map +0 -1
- package/dist/herdr-stage.js +0 -54
- package/dist/herdr-stage.js.map +0 -1
- package/dist/herdr-start.d.ts.map +0 -1
- package/dist/herdr-start.js.map +0 -1
- package/dist/init.d.ts +0 -117
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -323
- package/dist/init.js.map +0 -1
- package/dist/intent-application.d.ts +0 -17
- package/dist/intent-application.d.ts.map +0 -1
- package/dist/intent-application.js +0 -114
- package/dist/intent-application.js.map +0 -1
- package/dist/intent-control.d.ts +0 -201
- package/dist/intent-control.d.ts.map +0 -1
- package/dist/intent-control.js +0 -110
- package/dist/intent-control.js.map +0 -1
- package/dist/intent-scheduling.d.ts +0 -9
- package/dist/intent-scheduling.d.ts.map +0 -1
- package/dist/intent-scheduling.js +0 -15
- package/dist/intent-scheduling.js.map +0 -1
- package/dist/learning-connection.d.ts +0 -127
- package/dist/learning-connection.d.ts.map +0 -1
- package/dist/learning-connection.js +0 -54
- package/dist/learning-connection.js.map +0 -1
- package/dist/lease-helper.d.ts.map +0 -1
- package/dist/lease-helper.js +0 -94
- package/dist/lease-helper.js.map +0 -1
- package/dist/lease-record.d.ts +0 -90
- package/dist/lease-record.d.ts.map +0 -1
- package/dist/lease-record.js.map +0 -1
- package/dist/ledger-append.d.ts +0 -15
- package/dist/ledger-append.d.ts.map +0 -1
- package/dist/ledger-append.js +0 -94
- package/dist/ledger-append.js.map +0 -1
- package/dist/ledger-events.d.ts +0 -131
- package/dist/ledger-events.d.ts.map +0 -1
- package/dist/ledger-events.js +0 -107
- package/dist/ledger-events.js.map +0 -1
- package/dist/ledger-identifiers.d.ts.map +0 -1
- package/dist/ledger-identifiers.js.map +0 -1
- package/dist/ledger-report.d.ts +0 -134
- package/dist/ledger-report.d.ts.map +0 -1
- package/dist/ledger-report.js +0 -271
- package/dist/ledger-report.js.map +0 -1
- package/dist/ledger-v3-validation.d.ts +0 -11
- package/dist/ledger-v3-validation.d.ts.map +0 -1
- package/dist/ledger-v3-validation.js +0 -265
- package/dist/ledger-v3-validation.js.map +0 -1
- package/dist/ledger.d.ts +0 -242
- package/dist/ledger.d.ts.map +0 -1
- package/dist/ledger.js +0 -142
- package/dist/ledger.js.map +0 -1
- package/dist/measured-order.d.ts +0 -249
- package/dist/measured-order.d.ts.map +0 -1
- package/dist/measured-order.js +0 -309
- package/dist/measured-order.js.map +0 -1
- package/dist/measured-session.d.ts +0 -97
- package/dist/measured-session.d.ts.map +0 -1
- package/dist/measured-session.js +0 -134
- package/dist/measured-session.js.map +0 -1
- package/dist/model-preflight.d.ts +0 -13
- package/dist/model-preflight.d.ts.map +0 -1
- package/dist/model-preflight.js +0 -29
- package/dist/model-preflight.js.map +0 -1
- package/dist/native-session-target.d.ts +0 -9
- package/dist/native-session-target.d.ts.map +0 -1
- package/dist/native-session-target.js +0 -29
- package/dist/native-session-target.js.map +0 -1
- package/dist/native-session.d.ts +0 -59
- package/dist/native-session.d.ts.map +0 -1
- package/dist/native-session.js +0 -154
- package/dist/native-session.js.map +0 -1
- package/dist/order-schedule.d.ts +0 -37
- package/dist/order-schedule.d.ts.map +0 -1
- package/dist/order-schedule.js +0 -81
- package/dist/order-schedule.js.map +0 -1
- package/dist/ordinary-children.d.ts +0 -52
- package/dist/ordinary-children.d.ts.map +0 -1
- package/dist/ordinary-children.js +0 -93
- package/dist/ordinary-children.js.map +0 -1
- package/dist/pane-reaper.d.ts +0 -111
- package/dist/pane-reaper.d.ts.map +0 -1
- package/dist/pane-reaper.js +0 -242
- package/dist/pane-reaper.js.map +0 -1
- package/dist/pi-tools.d.ts.map +0 -1
- package/dist/pi-tools.js +0 -21
- package/dist/pi-tools.js.map +0 -1
- package/dist/producer-ipc-contract.d.ts +0 -29
- package/dist/producer-ipc-contract.d.ts.map +0 -1
- package/dist/producer-ipc-contract.js +0 -29
- package/dist/producer-ipc-contract.js.map +0 -1
- package/dist/producer-ipc.d.ts +0 -55
- package/dist/producer-ipc.d.ts.map +0 -1
- package/dist/producer-ipc.js +0 -143
- package/dist/producer-ipc.js.map +0 -1
- package/dist/product-files.d.ts +0 -6
- package/dist/product-files.d.ts.map +0 -1
- package/dist/product-files.js +0 -55
- package/dist/product-files.js.map +0 -1
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/propagation.d.ts +0 -203
- package/dist/propagation.d.ts.map +0 -1
- package/dist/propagation.js +0 -279
- package/dist/propagation.js.map +0 -1
- package/dist/refusals.d.ts +0 -16
- package/dist/refusals.d.ts.map +0 -1
- package/dist/refusals.js +0 -55
- package/dist/refusals.js.map +0 -1
- package/dist/resolve.d.ts.map +0 -1
- package/dist/resolve.js +0 -211
- package/dist/resolve.js.map +0 -1
- package/dist/resource-budget.d.ts +0 -334
- package/dist/resource-budget.d.ts.map +0 -1
- package/dist/resource-budget.js +0 -415
- package/dist/resource-budget.js.map +0 -1
- package/dist/retention-contract.d.ts.map +0 -1
- package/dist/retention-contract.js +0 -104
- package/dist/retention-contract.js.map +0 -1
- package/dist/retention-json.d.ts.map +0 -1
- package/dist/retention-json.js.map +0 -1
- package/dist/routing-authority.d.ts.map +0 -1
- package/dist/routing-authority.js.map +0 -1
- package/dist/run-child.d.ts +0 -87
- package/dist/run-child.d.ts.map +0 -1
- package/dist/run-child.js +0 -248
- package/dist/run-child.js.map +0 -1
- package/dist/run-herdr.d.ts +0 -119
- package/dist/run-herdr.d.ts.map +0 -1
- package/dist/run-herdr.js +0 -335
- package/dist/run-herdr.js.map +0 -1
- package/dist/skill-packages.d.ts +0 -116
- package/dist/skill-packages.d.ts.map +0 -1
- package/dist/skill-packages.js +0 -295
- package/dist/skill-packages.js.map +0 -1
- package/dist/skill-resources.d.ts.map +0 -1
- package/dist/skill-resources.js +0 -52
- package/dist/skill-resources.js.map +0 -1
- package/dist/spawn.d.ts.map +0 -1
- package/dist/spawn.js.map +0 -1
- package/dist/vendor/adoption.d.ts +0 -129
- package/dist/vendor/adoption.d.ts.map +0 -1
- package/dist/vendor/adoption.js +0 -102
- package/dist/vendor/adoption.js.map +0 -1
- package/dist/vendor/herdr-pi-lifecycle.d.ts.map +0 -1
- package/dist/vendor/herdr-pi-lifecycle.js.map +0 -1
- package/dist/work-command.d.ts +0 -32
- package/dist/work-command.d.ts.map +0 -1
- package/dist/work-command.js +0 -179
- package/dist/work-command.js.map +0 -1
- package/dist/work-ledger-destination.d.ts +0 -20
- package/dist/work-ledger-destination.d.ts.map +0 -1
- package/dist/work-ledger-destination.js +0 -131
- package/dist/work-ledger-destination.js.map +0 -1
- package/dist/work-ledger-json.d.ts +0 -25
- package/dist/work-ledger-json.d.ts.map +0 -1
- package/dist/work-ledger-json.js +0 -267
- package/dist/work-ledger-json.js.map +0 -1
- package/dist/work-ledger-occurrences.d.ts +0 -227
- package/dist/work-ledger-occurrences.d.ts.map +0 -1
- package/dist/work-ledger-occurrences.js +0 -115
- package/dist/work-ledger-occurrences.js.map +0 -1
- package/dist/work-ledger-projection.d.ts +0 -295
- package/dist/work-ledger-projection.d.ts.map +0 -1
- package/dist/work-ledger-projection.js +0 -237
- package/dist/work-ledger-projection.js.map +0 -1
- package/dist/work-ledger-snapshot.d.ts +0 -29
- package/dist/work-ledger-snapshot.d.ts.map +0 -1
- package/dist/work-ledger-snapshot.js +0 -267
- package/dist/work-ledger-snapshot.js.map +0 -1
- package/dist/work-ledger-types.d.ts +0 -261
- package/dist/work-ledger-types.d.ts.map +0 -1
- package/dist/work-ledger-types.js +0 -13
- package/dist/work-ledger-types.js.map +0 -1
- package/dist/work-ledger-validation.d.ts +0 -14
- package/dist/work-ledger-validation.d.ts.map +0 -1
- package/dist/work-ledger-validation.js +0 -226
- package/dist/work-ledger-validation.js.map +0 -1
- package/dist/work-ledger.d.ts +0 -43
- package/dist/work-ledger.d.ts.map +0 -1
- package/dist/work-ledger.js +0 -225
- package/dist/work-ledger.js.map +0 -1
- package/dist/work-policy-registry.d.ts +0 -133
- package/dist/work-policy-registry.d.ts.map +0 -1
- package/dist/work-policy-registry.js +0 -128
- package/dist/work-policy-registry.js.map +0 -1
- package/dist/work-run.d.ts +0 -56
- package/dist/work-run.d.ts.map +0 -1
- package/dist/work-run.js +0 -102
- package/dist/work-run.js.map +0 -1
- package/dist/work-setup.d.ts +0 -40
- package/dist/work-setup.d.ts.map +0 -1
- package/dist/work-setup.js +0 -174
- package/dist/work-setup.js.map +0 -1
- package/dist/workflow-fact-id.d.ts +0 -4
- package/dist/workflow-fact-id.d.ts.map +0 -1
- package/dist/workflow-fact-id.js +0 -14
- package/dist/workflow-fact-id.js.map +0 -1
- package/dist/workflow-facts.d.ts +0 -34
- package/dist/workflow-facts.d.ts.map +0 -1
- package/dist/workflow-facts.js +0 -43
- package/dist/workflow-facts.js.map +0 -1
- package/dist/workspace-lease.d.ts +0 -40
- package/dist/workspace-lease.d.ts.map +0 -1
- package/dist/workspace-lease.js +0 -333
- package/dist/workspace-lease.js.map +0 -1
- package/dist/workspace.d.ts +0 -57
- package/dist/workspace.d.ts.map +0 -1
- package/dist/workspace.js +0 -216
- package/dist/workspace.js.map +0 -1
- package/extensions/daily-dashboard-session.ts +0 -48
- package/extensions/daily-work-session.ts +0 -20
- package/extensions/learning-outcome-session.ts +0 -38
- package/extensions/learning-session.ts +0 -59
- package/extensions/ordinary-runtime.ts +0 -14
- package/extensions/primary-shadow.ts +0 -11
- package/extensions/work-policy-session.ts +0 -139
- package/extensions/work-run-session.ts +0 -75
- package/extensions/work-runtime.ts +0 -44
- package/extensions/work-session.ts +0 -132
- package/src/approval-prompt.ts +0 -225
- package/src/approval-store.ts +0 -386
- package/src/approval.ts +0 -399
- package/src/capabilities.ts +0 -220
- package/src/catalog.ts +0 -306
- package/src/check-runner.ts +0 -387
- package/src/control-journal.ts +0 -26
- package/src/correlation.ts +0 -320
- package/src/daily-dashboard-host.ts +0 -105
- package/src/daily-panel.ts +0 -80
- package/src/daily-view-input.ts +0 -59
- package/src/daily-view-render.ts +0 -45
- package/src/daily-view.ts +0 -160
- package/src/dashboard-cli.ts +0 -315
- package/src/dashboard-display-controls.ts +0 -18
- package/src/dashboard-handshake.ts +0 -194
- package/src/dashboard-harness.ts +0 -37
- package/src/dashboard-herdr.ts +0 -363
- package/src/dashboard-host-contract.ts +0 -50
- package/src/dashboard-host-transport.ts +0 -43
- package/src/dashboard-host.ts +0 -244
- package/src/dashboard-menu.ts +0 -28
- package/src/dashboard-observation.ts +0 -46
- package/src/dashboard-projection.ts +0 -390
- package/src/dashboard-render.ts +0 -259
- package/src/debrief-contract.ts +0 -127
- package/src/debrief-fixture.ts +0 -29
- package/src/debrief-host.ts +0 -53
- package/src/debrief-render.ts +0 -49
- package/src/debrief.ts +0 -198
- package/src/definitions.ts +0 -211
- package/src/delegate-types.ts +0 -150
- package/src/delegate.ts +0 -341
- package/src/delegation-approval.ts +0 -126
- package/src/dispatch-control.ts +0 -81
- package/src/effect-profile-runtime.ts +0 -46
- package/src/effect-profile.ts +0 -129
- package/src/execution-retention.ts +0 -230
- package/src/executor.ts +0 -123
- package/src/experiment-contract.ts +0 -66
- package/src/experiment-state.ts +0 -44
- package/src/experiment-store.ts +0 -98
- package/src/experiment.ts +0 -236
- package/src/factory-contract.ts +0 -47
- package/src/factory-migration.ts +0 -29
- package/src/factory-order.ts +0 -56
- package/src/factory-registry.ts +0 -60
- package/src/fanout.ts +0 -106
- package/src/file-lock.ts +0 -178
- package/src/finalization.ts +0 -79
- package/src/git-identity.ts +0 -56
- package/src/grant-env.ts +0 -221
- package/src/grant-store.ts +0 -235
- package/src/herdr-cli.ts +0 -125
- package/src/herdr-pi-lifecycle.ts +0 -21
- package/src/herdr-poll.ts +0 -253
- package/src/herdr-stage.ts +0 -55
- package/src/init.ts +0 -389
- package/src/intent-application.ts +0 -91
- package/src/intent-control.ts +0 -107
- package/src/intent-scheduling.ts +0 -14
- package/src/learning-connection.ts +0 -70
- package/src/lease-helper.ts +0 -97
- package/src/lease-record.ts +0 -131
- package/src/ledger-append.ts +0 -72
- package/src/ledger-events.ts +0 -226
- package/src/ledger-report.ts +0 -357
- package/src/ledger-v3-validation.ts +0 -266
- package/src/ledger.ts +0 -369
- package/src/measured-order.ts +0 -72
- package/src/measured-session.ts +0 -70
- package/src/model-preflight.ts +0 -41
- package/src/native-session-target.ts +0 -23
- package/src/native-session.ts +0 -139
- package/src/order-schedule.ts +0 -42
- package/src/ordinary-children.ts +0 -59
- package/src/pane-reaper.ts +0 -270
- package/src/pi-tools.ts +0 -25
- package/src/producer-ipc-contract.ts +0 -26
- package/src/producer-ipc.ts +0 -107
- package/src/product-files.ts +0 -34
- package/src/propagation.ts +0 -333
- package/src/refusals.ts +0 -70
- package/src/resolve.ts +0 -267
- package/src/resource-budget.ts +0 -349
- package/src/retention-contract.ts +0 -84
- package/src/retention-json.ts +0 -20
- package/src/run-child.ts +0 -303
- package/src/run-herdr.ts +0 -386
- package/src/skill-packages.ts +0 -314
- package/src/skill-resources.ts +0 -48
- package/src/vendor/adoption.ts +0 -109
- package/src/work-command.ts +0 -197
- package/src/work-ledger-destination.ts +0 -113
- package/src/work-ledger-json.ts +0 -228
- package/src/work-ledger-occurrences.ts +0 -99
- package/src/work-ledger-projection.ts +0 -262
- package/src/work-ledger-snapshot.ts +0 -246
- package/src/work-ledger-types.ts +0 -229
- package/src/work-ledger-validation.ts +0 -174
- package/src/work-ledger.ts +0 -186
- package/src/work-policy-registry.ts +0 -81
- package/src/work-run.ts +0 -79
- package/src/work-setup.ts +0 -141
- package/src/workflow-fact-id.ts +0 -16
- package/src/workflow-facts.ts +0 -65
- package/src/workspace-lease.ts +0 -363
- package/src/workspace.ts +0 -308
- /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/capability-decision.json +0 -0
- /package/contracts/{ledger/v3 → ledger-record/v1}/fixtures/workspace-lease.json +0 -0
- /package/dist/{herdr-name.d.ts → executors/herdr-name.d.ts} +0 -0
- /package/dist/{herdr-name.js → executors/herdr-name.js} +0 -0
- /package/dist/{herdr-pi-lifecycle.d.ts → executors/herdr-pi-lifecycle.d.ts} +0 -0
- /package/dist/{herdr-start.d.ts → executors/herdr-start.d.ts} +0 -0
- /package/dist/{herdr-start.js → executors/herdr-start.js} +0 -0
- /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.d.ts +0 -0
- /package/dist/{vendor → executors/vendor}/herdr-pi-lifecycle.js +0 -0
- /package/dist/{file-lock.d.ts → governance/file-lock.d.ts} +0 -0
- /package/dist/{finalization.d.ts → governance/finalization.d.ts} +0 -0
- /package/dist/{finalization.js → governance/finalization.js} +0 -0
- /package/dist/{lease-helper.d.ts → governance/lease-helper.d.ts} +0 -0
- /package/dist/{lease-record.js → governance/lease-record.js} +0 -0
- /package/dist/{retention-contract.d.ts → governance/retention-contract.d.ts} +0 -0
- /package/dist/{retention-json.d.ts → governance/retention-json.d.ts} +0 -0
- /package/dist/{retention-json.js → governance/retention-json.js} +0 -0
- /package/dist/{chain.d.ts → kernel/chain.d.ts} +0 -0
- /package/dist/{chain.js → kernel/chain.js} +0 -0
- /package/dist/{correlation.d.ts → kernel/correlation.d.ts} +0 -0
- /package/dist/{definitions.d.ts → kernel/definitions.d.ts} +0 -0
- /package/dist/{delegate.d.ts → kernel/delegate.d.ts} +0 -0
- /package/dist/{delegation-approval.d.ts → kernel/delegation-approval.d.ts} +0 -0
- /package/dist/{execution-id.d.ts → kernel/execution-id.d.ts} +0 -0
- /package/dist/{execution-id.js → kernel/execution-id.js} +0 -0
- /package/dist/{fanout.d.ts → kernel/fanout.d.ts} +0 -0
- /package/dist/{ledger-identifiers.d.ts → kernel/ledger-identifiers.d.ts} +0 -0
- /package/dist/{ledger-identifiers.js → kernel/ledger-identifiers.js} +0 -0
- /package/dist/{pi-tools.d.ts → kernel/pi-tools.d.ts} +0 -0
- /package/dist/{progress.d.ts → kernel/progress.d.ts} +0 -0
- /package/dist/{progress.js → kernel/progress.js} +0 -0
- /package/dist/{resolve.d.ts → kernel/resolve.d.ts} +0 -0
- /package/dist/{routing-authority.d.ts → kernel/routing-authority.d.ts} +0 -0
- /package/dist/{routing-authority.js → kernel/routing-authority.js} +0 -0
- /package/dist/{skill-resources.d.ts → kernel/skill-resources.d.ts} +0 -0
- /package/dist/{spawn.d.ts → kernel/spawn.d.ts} +0 -0
- /package/dist/{spawn.js → kernel/spawn.js} +0 -0
- /package/dist/{dashboard-render.d.ts → products/dashboard-render.d.ts} +0 -0
- /package/src/{herdr-name.ts → executors/herdr-name.ts} +0 -0
- /package/src/{herdr-start.ts → executors/herdr-start.ts} +0 -0
- /package/src/{vendor → executors/vendor}/herdr-pi-lifecycle.ts +0 -0
- /package/src/{chain.ts → kernel/chain.ts} +0 -0
- /package/src/{execution-id.ts → kernel/execution-id.ts} +0 -0
- /package/src/{ledger-identifiers.ts → kernel/ledger-identifiers.ts} +0 -0
- /package/src/{progress.ts → kernel/progress.ts} +0 -0
- /package/src/{routing-authority.ts → kernel/routing-authority.ts} +0 -0
- /package/src/{spawn.ts → kernel/spawn.ts} +0 -0
|
@@ -1,18 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import type { Delegation } from "../src/kernel/delegate.ts";
|
|
2
|
+
import {
|
|
3
|
+
beginExecutionRetention,
|
|
4
|
+
retentionConfigurationDigest,
|
|
5
|
+
type RetentionStatus,
|
|
6
|
+
} from "../src/governance/execution-retention.ts";
|
|
7
|
+
import { appendLedgerEvent, buildChildLifecycleEvent } from "../src/governance/ledger.ts";
|
|
8
|
+
import { hasFinalizerError } from "../src/governance/finalization.ts";
|
|
9
|
+
import { mergeChildEnv } from "../src/kernel/propagation.ts";
|
|
10
|
+
import type { Capability } from "../src/kernel/resolve.ts";
|
|
11
|
+
import {
|
|
12
|
+
DEFAULT_KILL_GRACE_MS,
|
|
13
|
+
ENV_CHILD_IDLE_TIMEOUT,
|
|
14
|
+
ENV_CHILD_TIMEOUT,
|
|
15
|
+
idleTimeoutFromEnv,
|
|
16
|
+
runChild,
|
|
17
|
+
timeoutFromEnv,
|
|
18
|
+
} from "../src/kernel/run-child.ts";
|
|
19
|
+
import { activitySessionFor } from "../src/executors/activity-session.ts";
|
|
20
|
+
import { processTreeActivity } from "../src/executors/process-activity.ts";
|
|
21
|
+
import { resolveWorkspace } from "../src/executors/herdr-cli.ts";
|
|
22
|
+
import { HerdrWriterCloseError, runHerdrPane } from "../src/executors/run-herdr.ts";
|
|
23
|
+
import { GovernanceRefusal, refusal, type StructuredRefusal } from "../src/kernel/refusals.ts";
|
|
12
24
|
import { ENV_HERDR_KEEP_PANE, type GrantsSession } from "./session.ts";
|
|
13
25
|
import { releaseDelegationWorkspace, type PreparedWorkspace } from "./workspace-runtime.ts";
|
|
14
|
-
import {
|
|
15
|
-
|
|
26
|
+
import { ActivityTimelineRecorder, ENV_ACTIVITY_PARENT_TASK } from "../src/products/activity-timeline.ts";
|
|
16
27
|
export interface DelegationOutcome {
|
|
17
28
|
ok: boolean;
|
|
18
29
|
text: string;
|
|
@@ -30,7 +41,6 @@ export interface DelegationOutcome {
|
|
|
30
41
|
/** A loud best-effort post-execution observation failure; execution ownership is still settled. */
|
|
31
42
|
control?: "failed";
|
|
32
43
|
}
|
|
33
|
-
|
|
34
44
|
/**
|
|
35
45
|
* The upstream controller's token, honoured ONLY when the child otherwise exited cleanly non-zero.
|
|
36
46
|
*
|
|
@@ -62,10 +72,11 @@ export async function appendAfterRuntimeRecord<T>(
|
|
|
62
72
|
|
|
63
73
|
/** A failed writer-tab close may be secondary to the executor error that triggered cleanup. */
|
|
64
74
|
export function isHerdrWriterCloseFailure(error: unknown): boolean {
|
|
65
|
-
return
|
|
66
|
-
|
|
75
|
+
return (
|
|
76
|
+
error instanceof HerdrWriterCloseError ||
|
|
77
|
+
hasFinalizerError(error, (value) => value instanceof HerdrWriterCloseError)
|
|
78
|
+
);
|
|
67
79
|
}
|
|
68
|
-
|
|
69
80
|
export interface ChildProgressUpdate {
|
|
70
81
|
chunk?: string;
|
|
71
82
|
snapshot?: string[];
|
|
@@ -73,7 +84,6 @@ export interface ChildProgressUpdate {
|
|
|
73
84
|
agentName?: string;
|
|
74
85
|
state?: "starting" | "running" | "completed" | "failed";
|
|
75
86
|
}
|
|
76
|
-
|
|
77
87
|
/**
|
|
78
88
|
* Execute one already-approved plan, record lifecycle, and release any workspace lease on every path
|
|
79
89
|
* EXCEPT a failed herdr writer-tab close, which deliberately retains the lease because the pane may
|
|
@@ -84,17 +94,14 @@ export interface ChildProgressUpdate {
|
|
|
84
94
|
* has already run, so failing closed there prevents nothing and used to discard completed work while
|
|
85
95
|
* blaming "ledger" (R-99). The failure is reported alongside the outcome instead of replacing it.
|
|
86
96
|
*/
|
|
87
|
-
export function executePlannedChild(input:
|
|
88
|
-
return withOrdinaryChild(input, signal => executeChildBody({ ...input, signal }));
|
|
89
|
-
}
|
|
90
|
-
async function executeChildBody(input: {
|
|
97
|
+
export async function executePlannedChild(input: {
|
|
91
98
|
session: GrantsSession;
|
|
92
99
|
plan: Delegation;
|
|
93
100
|
agent?: string;
|
|
94
101
|
childId: string;
|
|
95
102
|
executionId: string;
|
|
96
103
|
parentExecutionId: string | null;
|
|
97
|
-
toolCallId?: string;
|
|
104
|
+
toolCallId?: string;
|
|
98
105
|
cwd: string;
|
|
99
106
|
preparedWorkspace?: PreparedWorkspace;
|
|
100
107
|
signal?: AbortSignal;
|
|
@@ -102,298 +109,438 @@ async function executeChildBody(input: {
|
|
|
102
109
|
}): Promise<DelegationOutcome> {
|
|
103
110
|
const { session, plan, childId, executionId, parentExecutionId, preparedWorkspace, signal, onProgress } = input;
|
|
104
111
|
const ledgerPath = session.ledgerPath;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
correlation: plan.correlation,
|
|
120
|
-
now: startedAt,
|
|
121
|
-
}),
|
|
122
|
-
);
|
|
123
|
-
} catch (error) {
|
|
124
|
-
await releaseDelegationWorkspace({
|
|
125
|
-
prepared: preparedWorkspace, childId, executionId, parentExecutionId, reason: "ledger-failed",
|
|
126
|
-
});
|
|
127
|
-
throw error;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
const workAttempt = await beginDeclaredWorkAttempt({
|
|
131
|
-
session, plan, childId, executionId, parentExecutionId, toolCallId: input.toolCallId, declaredWork: input.declaredWork,
|
|
132
|
-
preparedWorkspace, configuredTimeoutMs, startedAt,
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
// The recorded deadline and executor timer are one fact. Waiting for the strict starting append consumes
|
|
136
|
-
// the budget; handing the child a fresh full timeout would leave it live after the dashboard truthfully
|
|
137
|
-
// marked that deadline incomplete.
|
|
138
|
-
const remainingTimeoutMs = Math.max(1, Date.parse(deadlineAt) - Date.now());
|
|
139
|
-
const terminationGraceMs = Math.min(DEFAULT_KILL_GRACE_MS, Math.max(1, Math.floor(remainingTimeoutMs / 10)));
|
|
140
|
-
const cwd = preparedWorkspace?.workspace.root ?? input.cwd;
|
|
141
|
-
const leaseAbort = new AbortController();
|
|
142
|
-
const writerLease = preparedWorkspace?.lease.access === "write" ? preparedWorkspace.lease : undefined;
|
|
143
|
-
// Tracked as a FACT, not only as an abort: "the kernel lock protecting this workspace evaporated under
|
|
144
|
-
// a live governed writer" and "the operator pressed stop" produced byte-identical reasons before, and a
|
|
145
|
-
// count of lost leases is exactly the number an operator auditing this feature needs (R-103).
|
|
146
|
-
let leaseLost = false;
|
|
147
|
-
writerLease?.lost.then(() => { leaseLost = true; leaseAbort.abort(); });
|
|
148
|
-
const executionSignal = signal
|
|
149
|
-
? AbortSignal.any([signal, leaseAbort.signal])
|
|
150
|
-
: writerLease ? leaseAbort.signal : undefined;
|
|
151
|
-
const retention = beginExecutionRetention({ executionId, parentExecutionId, childId,
|
|
152
|
-
toolCallId: input.toolCallId ?? null, executor: session.executor.kind, taskDigest: plan.taskDigest,
|
|
153
|
-
definitionDigest: plan.definitionDigest?.sha256 ?? null,
|
|
154
|
-
configurationDigest: retentionConfigurationDigest({ args: plan.args, effective: plan.effective, timeoutMs: configuredTimeoutMs }),
|
|
155
|
-
workspaceId: preparedWorkspace?.workspace.workspaceId ?? null });
|
|
156
|
-
const sessionFlag = plan.args.indexOf("--session");
|
|
157
|
-
if (sessionFlag >= 0) retention.observeSession({ source: "pi-session-file", value: plan.args[sessionFlag + 1] });
|
|
158
|
-
let releaseReason = "failed";
|
|
159
|
-
let retainWriterLease = false;
|
|
160
|
-
let terminalAttempted = false, workTerminalAttempted = false;
|
|
161
|
-
const teardownFailures: string[] = [];
|
|
162
|
-
let runtimeRecord: Promise<void> | undefined;
|
|
163
|
-
const recordRunning = (executor: "process" | "herdr", pane?: { id: string; agentName: string }): void => {
|
|
164
|
-
if (!ledgerPath) return;
|
|
165
|
-
try {
|
|
166
|
-
runtimeRecord = appendLedgerEvent(
|
|
167
|
-
{
|
|
168
|
-
path: ledgerPath,
|
|
169
|
-
strict: false,
|
|
170
|
-
onFailure: (cause) => teardownFailures.push(`child runtime identity record failed: ${String(cause)}`),
|
|
171
|
-
},
|
|
172
|
-
buildChildLifecycleEvent({
|
|
173
|
-
executionId, parentExecutionId, childId, state: "running", executor, deadlineAt,
|
|
174
|
-
...(pane ? { herdrPaneId: pane.id, herdrAgentName: pane.agentName } : {}),
|
|
175
|
-
correlation: plan.correlation, now: new Date(),
|
|
176
|
-
}),
|
|
177
|
-
);
|
|
178
|
-
} catch (error) {
|
|
179
|
-
teardownFailures.push(`child runtime identity record failed: ${String(error)}`);
|
|
112
|
+
let activityParent: string | undefined,
|
|
113
|
+
activity = new ActivityTimelineRecorder(input.cwd),
|
|
114
|
+
activityStarted = false,
|
|
115
|
+
activityFinished = false;
|
|
116
|
+
try {
|
|
117
|
+
const env = { ...process.env };
|
|
118
|
+
for (const name of [
|
|
119
|
+
"PI_DADDY_ACTIVITY_PATH",
|
|
120
|
+
"PI_DADDY_ACTIVITY_ROOT",
|
|
121
|
+
"PI_DADDY_ACTIVITY_TASK",
|
|
122
|
+
ENV_ACTIVITY_PARENT_TASK,
|
|
123
|
+
]) {
|
|
124
|
+
const value = plan.env[name];
|
|
125
|
+
if (value) env[name] = value;
|
|
180
126
|
}
|
|
181
|
-
|
|
127
|
+
activity = new ActivityTimelineRecorder(input.cwd, env);
|
|
128
|
+
activityParent = plan.env[ENV_ACTIVITY_PARENT_TASK];
|
|
129
|
+
} catch {}
|
|
182
130
|
try {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
recordRunning("herdr", { id: paneId, agentName });
|
|
205
|
-
onProgress?.({ paneId, agentName, state: "running" });
|
|
206
|
-
},
|
|
207
|
-
onTab: preparedWorkspace ? (tabId) => preparedWorkspace.lease.attachHerdrTab(tabId) : undefined,
|
|
208
|
-
onNativeTab: (tabId) => retention.native({ tabId }),
|
|
209
|
-
onSnapshot: onProgress ? (snapshot) => onProgress({ snapshot }) : undefined,
|
|
210
|
-
})
|
|
211
|
-
: await runChild({
|
|
212
|
-
command: writerLease ? "setpriv" : "pi",
|
|
213
|
-
args: writerLease ? ["--pdeathsig", "KILL", "--", "pi", ...plan.args] : plan.args,
|
|
214
|
-
env: mergeChildEnv(process.env, plan.env),
|
|
215
|
-
cwd,
|
|
216
|
-
signal: executionSignal,
|
|
217
|
-
// SIGTERM gets only grace that fits INSIDE the recorded deadline. The independent hard timer
|
|
218
|
-
// prevents a delayed soft-timeout callback from starting a fresh grace period beyond that bound.
|
|
219
|
-
timeoutMs: Math.max(1, remainingTimeoutMs - terminationGraceMs),
|
|
220
|
-
hardDeadlineAt: Date.parse(deadlineAt),
|
|
221
|
-
onOutput: onProgress ? (chunk) => onProgress({ chunk }) : undefined,
|
|
222
|
-
onObservation: (stream, bytes) => retention.capture(stream, bytes),
|
|
223
|
-
onSpawn: (pid) => {
|
|
224
|
-
// Lease attachment is a security hook and may fail the spawn. The shared reporters isolate
|
|
225
|
-
// display exceptions before they reach this callback; runChild deliberately kills on any error
|
|
226
|
-
// here, so presentation must never be added directly without that reporter boundary.
|
|
227
|
-
preparedWorkspace?.lease.attachProcess(pid);
|
|
228
|
-
retention.native({ pid });
|
|
229
|
-
recordRunning("process");
|
|
230
|
-
onProgress?.({ state: "running" });
|
|
231
|
-
},
|
|
232
|
-
});
|
|
131
|
+
await activity.childStarted(
|
|
132
|
+
executionId,
|
|
133
|
+
activityParent,
|
|
134
|
+
input.agent ?? "governed child",
|
|
135
|
+
(plan.args.at(-1) ?? "").trimStart(),
|
|
136
|
+
);
|
|
137
|
+
activityStarted = true;
|
|
138
|
+
} catch {}
|
|
139
|
+
const configuredTimeoutMs = timeoutFromEnv(process.env[ENV_CHILD_TIMEOUT]);
|
|
140
|
+
// PR 3e: the working bound is inactivity; `deadlineAt` below is the runaway ceiling. Every child gets a pi session
|
|
141
|
+
// file so the parent can see it working when its stdout is quiet (pi appends each message and tool result to it).
|
|
142
|
+
const configuredIdleMs = idleTimeoutFromEnv(process.env[ENV_CHILD_IDLE_TIMEOUT]);
|
|
143
|
+
const activitySession = await activitySessionFor(plan.args, executionId);
|
|
144
|
+
// Disposed on every path (review finding: it leaked on every throw), except when the operator keeps a Herdr pane,
|
|
145
|
+
// where the interactive pi in that pane is still alive and still appending to this file.
|
|
146
|
+
const keepPaneRequested = session.executor.kind === "herdr" && process.env[ENV_HERDR_KEEP_PANE] === "1";
|
|
147
|
+
try {
|
|
148
|
+
return await executeWithActivitySession();
|
|
149
|
+
} finally {
|
|
150
|
+
if (!keepPaneRequested) await activitySession.dispose();
|
|
151
|
+
}
|
|
233
152
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
153
|
+
async function executeWithActivitySession(): Promise<DelegationOutcome> {
|
|
154
|
+
const args = activitySession.args;
|
|
155
|
+
// The process executor adds a second signal that is live during a tool call: the child tree's CPU time and
|
|
156
|
+
// descendants (`process-activity.ts`). Herdr children are started by the daemon, so their pid is not known here.
|
|
157
|
+
let childPid: number | undefined;
|
|
158
|
+
const probe = async () => {
|
|
159
|
+
const [file, tree] = await Promise.all([
|
|
160
|
+
activitySession.probe(),
|
|
161
|
+
childPid === undefined ? undefined : processTreeActivity(childPid),
|
|
162
|
+
]);
|
|
163
|
+
return file === undefined && tree === undefined ? undefined : `${file ?? "-"}|${tree ?? "-"}`;
|
|
164
|
+
};
|
|
165
|
+
const startedAt = new Date();
|
|
166
|
+
const deadlineAt = new Date(startedAt.getTime() + configuredTimeoutMs).toISOString();
|
|
242
167
|
if (ledgerPath) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
168
|
+
try {
|
|
169
|
+
await appendLedgerEvent(
|
|
170
|
+
{ path: ledgerPath, strict: true },
|
|
171
|
+
buildChildLifecycleEvent({
|
|
172
|
+
executionId,
|
|
173
|
+
parentExecutionId,
|
|
174
|
+
childId,
|
|
175
|
+
state: "starting",
|
|
176
|
+
executor: session.executor.kind,
|
|
177
|
+
deadlineAt,
|
|
178
|
+
idleTimeoutMs: configuredIdleMs,
|
|
179
|
+
correlation: plan.correlation,
|
|
180
|
+
now: startedAt,
|
|
181
|
+
}),
|
|
182
|
+
);
|
|
183
|
+
} catch (error) {
|
|
184
|
+
await releaseDelegationWorkspace({
|
|
185
|
+
prepared: preparedWorkspace,
|
|
186
|
+
childId,
|
|
256
187
|
executionId,
|
|
257
188
|
parentExecutionId,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
189
|
+
reason: "ledger-failed",
|
|
190
|
+
});
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// The recorded deadline and executor timer are one fact. Waiting for the strict starting append consumes
|
|
195
|
+
// the budget; handing the child a fresh full timeout would leave it live after the dashboard truthfully
|
|
196
|
+
// marked that deadline incomplete.
|
|
197
|
+
const remainingTimeoutMs = Math.max(1, Date.parse(deadlineAt) - Date.now());
|
|
198
|
+
const terminationGraceMs = Math.min(DEFAULT_KILL_GRACE_MS, Math.max(1, Math.floor(remainingTimeoutMs / 10)));
|
|
199
|
+
const cwd = preparedWorkspace?.workspace.root ?? input.cwd;
|
|
200
|
+
const leaseAbort = new AbortController();
|
|
201
|
+
const writerLease = preparedWorkspace?.lease.access === "write" ? preparedWorkspace.lease : undefined;
|
|
202
|
+
// Tracked as a FACT, not only as an abort: "the kernel lock protecting this workspace evaporated under
|
|
203
|
+
// a live governed writer" and "the operator pressed stop" produced byte-identical reasons before, and a
|
|
204
|
+
// count of lost leases is exactly the number an operator auditing this feature needs (R-103).
|
|
205
|
+
let leaseLost = false;
|
|
206
|
+
writerLease?.lost.then(() => {
|
|
207
|
+
leaseLost = true;
|
|
208
|
+
leaseAbort.abort();
|
|
209
|
+
});
|
|
210
|
+
const executionSignal = signal
|
|
211
|
+
? AbortSignal.any([signal, leaseAbort.signal])
|
|
212
|
+
: writerLease
|
|
213
|
+
? leaseAbort.signal
|
|
214
|
+
: undefined;
|
|
215
|
+
const retention = beginExecutionRetention({
|
|
216
|
+
executionId,
|
|
217
|
+
parentExecutionId,
|
|
218
|
+
childId,
|
|
219
|
+
toolCallId: input.toolCallId ?? null,
|
|
220
|
+
executor: session.executor.kind,
|
|
221
|
+
taskDigest: plan.taskDigest,
|
|
222
|
+
definitionDigest: plan.definitionDigest?.sha256 ?? null,
|
|
223
|
+
configurationDigest: retentionConfigurationDigest({
|
|
224
|
+
args: plan.args,
|
|
225
|
+
effective: plan.effective,
|
|
226
|
+
timeoutMs: configuredTimeoutMs,
|
|
227
|
+
}),
|
|
228
|
+
workspaceId: preparedWorkspace?.workspace.workspaceId ?? null,
|
|
229
|
+
});
|
|
230
|
+
const sessionFlag = plan.args.indexOf("--session");
|
|
231
|
+
if (sessionFlag >= 0) retention.observeSession({ source: "pi-session-file", value: plan.args[sessionFlag + 1] });
|
|
232
|
+
let releaseReason = "failed";
|
|
233
|
+
let retainWriterLease = false;
|
|
234
|
+
let terminalAttempted = false;
|
|
235
|
+
const teardownFailures: string[] = [];
|
|
236
|
+
let runtimeRecord: Promise<void> | undefined;
|
|
237
|
+
const recordRunning = (executor: "process" | "herdr", pane?: { id: string; agentName: string }): void => {
|
|
238
|
+
if (!ledgerPath) return;
|
|
239
|
+
try {
|
|
240
|
+
runtimeRecord = appendLedgerEvent(
|
|
241
|
+
{
|
|
242
|
+
path: ledgerPath,
|
|
243
|
+
strict: false,
|
|
244
|
+
onFailure: (cause) => teardownFailures.push(`child runtime identity record failed: ${String(cause)}`),
|
|
245
|
+
},
|
|
246
|
+
buildChildLifecycleEvent({
|
|
247
|
+
executionId,
|
|
248
|
+
parentExecutionId,
|
|
249
|
+
childId,
|
|
250
|
+
state: "running",
|
|
251
|
+
executor,
|
|
252
|
+
deadlineAt,
|
|
253
|
+
idleTimeoutMs: configuredIdleMs,
|
|
254
|
+
...(pane ? { herdrPaneId: pane.id, herdrAgentName: pane.agentName } : {}),
|
|
255
|
+
correlation: plan.correlation,
|
|
256
|
+
now: new Date(),
|
|
257
|
+
}),
|
|
258
|
+
);
|
|
259
|
+
} catch (error) {
|
|
260
|
+
teardownFailures.push(`child runtime identity record failed: ${String(error)}`);
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
try {
|
|
264
|
+
const output =
|
|
265
|
+
session.executor.kind === "herdr"
|
|
266
|
+
? await runHerdrPane({
|
|
267
|
+
args: args.slice(0, -1),
|
|
268
|
+
prompt: args[args.length - 1].trimStart(),
|
|
269
|
+
env: plan.env,
|
|
270
|
+
cwd,
|
|
271
|
+
name: `${input.agent ?? "delegate"}-${childId}`,
|
|
272
|
+
workspace: resolveWorkspace(process.env),
|
|
273
|
+
signal: executionSignal,
|
|
274
|
+
timeoutMs: remainingTimeoutMs,
|
|
275
|
+
idleTimeoutMs: configuredIdleMs,
|
|
276
|
+
activityProbe: activitySession.probe, // Herdr: session file plus pane text when a display is attached
|
|
277
|
+
keepPane: writerLease ? false : process.env[ENV_HERDR_KEEP_PANE] === "1",
|
|
278
|
+
closeOnSettle: Boolean(writerLease),
|
|
279
|
+
onPane: (paneId, agentName) => {
|
|
280
|
+
retention.native({ paneId, agentName });
|
|
281
|
+
onProgress?.({ paneId, agentName, state: "starting" });
|
|
282
|
+
},
|
|
283
|
+
onObservation: (bytes) => retention.capture("paneSnapshot", bytes, true),
|
|
284
|
+
onSessionReference: (reference) => retention.observeSession(reference),
|
|
285
|
+
onRunning: (paneId, agentName) => {
|
|
286
|
+
// Record first: runHerdrPane isolates this display callback, so a renderer exception after the
|
|
287
|
+
// observation cannot suppress the authoritative running event.
|
|
288
|
+
recordRunning("herdr", { id: paneId, agentName });
|
|
289
|
+
onProgress?.({ paneId, agentName, state: "running" });
|
|
290
|
+
},
|
|
291
|
+
onTab: preparedWorkspace ? (tabId) => preparedWorkspace.lease.attachHerdrTab(tabId) : undefined,
|
|
292
|
+
onNativeTab: (tabId) => retention.native({ tabId }),
|
|
293
|
+
onSnapshot: onProgress ? (snapshot) => onProgress({ snapshot }) : undefined,
|
|
294
|
+
})
|
|
295
|
+
: await runChild({
|
|
296
|
+
command: writerLease ? "setpriv" : "pi",
|
|
297
|
+
args: writerLease ? ["--pdeathsig", "KILL", "--", "pi", ...args] : args,
|
|
298
|
+
env: mergeChildEnv(process.env, plan.env),
|
|
299
|
+
cwd,
|
|
300
|
+
signal: executionSignal,
|
|
301
|
+
// SIGTERM gets only grace that fits INSIDE the recorded deadline. The independent hard timer
|
|
302
|
+
// prevents a delayed soft-timeout callback from starting a fresh grace period beyond that bound.
|
|
303
|
+
timeoutMs: Math.max(1, remainingTimeoutMs - terminationGraceMs),
|
|
304
|
+
hardDeadlineAt: Date.parse(deadlineAt),
|
|
305
|
+
idleTimeoutMs: configuredIdleMs,
|
|
306
|
+
activityProbe: probe,
|
|
307
|
+
onOutput: onProgress ? (chunk) => onProgress({ chunk }) : undefined,
|
|
308
|
+
onObservation: (stream, bytes) => retention.capture(stream, bytes),
|
|
309
|
+
onSpawn: (pid) => {
|
|
310
|
+
childPid = pid;
|
|
311
|
+
// Lease attachment is a security hook and may fail the spawn. The shared reporters isolate
|
|
312
|
+
// display exceptions before they reach this callback; runChild deliberately kills on any error
|
|
313
|
+
// here, so presentation must never be added directly without that reporter boundary.
|
|
314
|
+
preparedWorkspace?.lease.attachProcess(pid);
|
|
315
|
+
retention.native({ pid });
|
|
316
|
+
recordRunning("process");
|
|
317
|
+
onProgress?.({ state: "running" });
|
|
318
|
+
},
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
if (sessionFlag >= 0) retention.observeSession({ source: "pi-session-file", value: plan.args[sessionFlag + 1] });
|
|
322
|
+
retention.capture("result", Buffer.from(output.text), true);
|
|
323
|
+
const childFailed = Boolean(output.spawnError || output.aborted || output.timedOut || output.code !== 0);
|
|
324
|
+
retention.finish({
|
|
325
|
+
code: output.code,
|
|
326
|
+
signal: output.signal ?? null,
|
|
327
|
+
timedOut: output.timedOut,
|
|
328
|
+
aborted: output.aborted,
|
|
329
|
+
truncated: output.truncated,
|
|
330
|
+
failed: childFailed,
|
|
331
|
+
});
|
|
332
|
+
releaseReason = output.timedOut ? "timeout" : output.aborted ? "cancelled" : childFailed ? "failed" : "completed";
|
|
333
|
+
if (activityStarted)
|
|
334
|
+
try {
|
|
335
|
+
await activity.childFinished(
|
|
336
|
+
executionId,
|
|
337
|
+
activityParent,
|
|
338
|
+
input.agent ?? "governed child",
|
|
339
|
+
output.text,
|
|
340
|
+
childFailed ? (output.aborted ? "cancelled" : "failed") : "completed",
|
|
341
|
+
);
|
|
342
|
+
activityFinished = true;
|
|
343
|
+
} catch {
|
|
344
|
+
/* observation does not control execution */
|
|
345
|
+
}
|
|
346
|
+
if (ledgerPath) {
|
|
347
|
+
terminalAttempted = true;
|
|
348
|
+
await appendAfterRuntimeRecord(runtimeRecord, () =>
|
|
349
|
+
appendLedgerEvent(
|
|
350
|
+
{
|
|
351
|
+
path: ledgerPath,
|
|
352
|
+
// NOT strict, and this line is the whole point of R-99. The child has already run: failing
|
|
353
|
+
// closed here prevents nothing and used to discard a completed child's entire output while
|
|
354
|
+
// blaming "ledger" — under `delegate_all` it discarded every sibling's work too. The docstring
|
|
355
|
+
// above, `docs/SPEC.md` and the ADR-0034 amendment all promised this; only the comment changed.
|
|
356
|
+
// `capability_decision`, which PROVISIONS, still fails closed.
|
|
357
|
+
strict: false,
|
|
358
|
+
onFailure: (cause) => teardownFailures.push(`child lifecycle record failed: ${String(cause)}`),
|
|
359
|
+
},
|
|
360
|
+
buildChildLifecycleEvent({
|
|
361
|
+
executionId,
|
|
362
|
+
parentExecutionId,
|
|
363
|
+
childId,
|
|
364
|
+
state: childFailed ? "failed" : "completed",
|
|
365
|
+
executor: session.executor.kind,
|
|
366
|
+
exitCode: output.code,
|
|
367
|
+
signal: output.signal ?? null,
|
|
368
|
+
timedOut: output.timedOut,
|
|
369
|
+
aborted: output.aborted,
|
|
370
|
+
truncated: output.truncated,
|
|
371
|
+
idleTimeoutMs: configuredIdleMs,
|
|
372
|
+
reason:
|
|
373
|
+
output.spawnError ?? (output.timedOut ? (output.idle ? "idle-timeout" : "wall-clock") : undefined),
|
|
374
|
+
correlation: plan.correlation,
|
|
375
|
+
now: new Date(),
|
|
376
|
+
}),
|
|
377
|
+
),
|
|
378
|
+
);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
const leaseWasLost = writerLease ? leaseLost : false;
|
|
382
|
+
if (childFailed) {
|
|
383
|
+
const why = output.spawnError
|
|
384
|
+
? `could not be started: ${output.spawnError}`
|
|
385
|
+
: output.aborted
|
|
386
|
+
? leaseWasLost
|
|
387
|
+
? "lost the exclusive writer lease protecting its workspace and was stopped"
|
|
388
|
+
: "was cancelled"
|
|
389
|
+
: output.timedOut
|
|
390
|
+
? output.idle
|
|
391
|
+
? `showed no activity for ${describeBound(configuredIdleMs)} and was killed ` +
|
|
392
|
+
`(${ENV_CHILD_IDLE_TIMEOUT} sets the bound in seconds)`
|
|
393
|
+
: `ran past its ${describeBound(configuredTimeoutMs)} ceiling and was killed ` +
|
|
394
|
+
`(${ENV_CHILD_TIMEOUT} sets it in seconds)`
|
|
395
|
+
: `exited with code ${output.code}`;
|
|
396
|
+
// A stable code for every execution failure. Without these an external controller could tell a
|
|
397
|
+
// policy refusal from an internal error, but not a lost writer lease from a user pressing stop
|
|
398
|
+
// (R-103), and not a missing `setpriv` from an ordinary crash (R-107).
|
|
399
|
+
const code = output.spawnError
|
|
400
|
+
? "EXECUTOR_UNAVAILABLE"
|
|
401
|
+
: leaseWasLost
|
|
402
|
+
? "WORKSPACE_LEASE_STALE"
|
|
403
|
+
: output.timedOut
|
|
404
|
+
? "CHILD_TIMED_OUT"
|
|
405
|
+
: output.aborted
|
|
406
|
+
? "CHILD_CANCELLED"
|
|
407
|
+
: "CHILD_EXIT_NONZERO";
|
|
408
|
+
const failed: DelegationOutcome = {
|
|
409
|
+
ok: false,
|
|
410
|
+
text: output.text.trim(),
|
|
411
|
+
reason: `the sub-agent ${why}`,
|
|
412
|
+
granted: plan.effective,
|
|
413
|
+
depth: plan.childDepth,
|
|
261
414
|
exitCode: output.code,
|
|
262
|
-
|
|
415
|
+
refusal: refusal(code, `the sub-agent ${why}`, { child_id: childId }),
|
|
263
416
|
timedOut: output.timedOut,
|
|
264
417
|
aborted: output.aborted,
|
|
265
418
|
truncated: output.truncated,
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
}
|
|
419
|
+
spawnFailed: Boolean(output.spawnError),
|
|
420
|
+
};
|
|
421
|
+
await teardown();
|
|
422
|
+
return withTeardownNotes(failed);
|
|
423
|
+
}
|
|
272
424
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
const why = output.spawnError
|
|
276
|
-
? `could not be started: ${output.spawnError}`
|
|
277
|
-
: output.aborted
|
|
278
|
-
? leaseWasLost
|
|
279
|
-
? "lost the exclusive writer lease protecting its workspace and was stopped"
|
|
280
|
-
: "was cancelled"
|
|
281
|
-
: output.timedOut
|
|
282
|
-
? "exceeded its time limit and was killed"
|
|
283
|
-
: `exited with code ${output.code}`;
|
|
284
|
-
// A stable code for every execution failure. Without these an external controller could tell a
|
|
285
|
-
// policy refusal from an internal error, but not a lost writer lease from a user pressing stop
|
|
286
|
-
// (R-103), and not a missing `setpriv` from an ordinary crash (R-107).
|
|
287
|
-
const code = output.spawnError
|
|
288
|
-
? "EXECUTOR_UNAVAILABLE"
|
|
289
|
-
: leaseWasLost
|
|
290
|
-
? "WORKSPACE_LEASE_STALE"
|
|
291
|
-
: output.timedOut
|
|
292
|
-
? "CHILD_TIMED_OUT"
|
|
293
|
-
: output.aborted
|
|
294
|
-
? "CHILD_CANCELLED"
|
|
295
|
-
: "CHILD_EXIT_NONZERO";
|
|
296
|
-
const failed: DelegationOutcome = {
|
|
297
|
-
ok: false,
|
|
425
|
+
const succeeded: DelegationOutcome = {
|
|
426
|
+
ok: true,
|
|
298
427
|
text: output.text.trim(),
|
|
299
|
-
reason: `the sub-agent ${why}`,
|
|
300
428
|
granted: plan.effective,
|
|
301
429
|
depth: plan.childDepth,
|
|
302
430
|
exitCode: output.code,
|
|
303
|
-
refusal: refusal(code, `the sub-agent ${why}`, { child_id: childId }),
|
|
304
|
-
timedOut: output.timedOut,
|
|
305
|
-
aborted: output.aborted,
|
|
306
431
|
truncated: output.truncated,
|
|
307
|
-
spawnFailed: Boolean(output.spawnError),
|
|
308
432
|
};
|
|
309
433
|
await teardown();
|
|
310
|
-
return withTeardownNotes(
|
|
434
|
+
return withTeardownNotes(succeeded);
|
|
435
|
+
} catch (error) {
|
|
436
|
+
if (activityStarted && !activityFinished)
|
|
437
|
+
try {
|
|
438
|
+
await activity.childFinished(
|
|
439
|
+
executionId,
|
|
440
|
+
activityParent,
|
|
441
|
+
input.agent ?? "governed child",
|
|
442
|
+
"",
|
|
443
|
+
signal?.aborted ? "cancelled" : "failed",
|
|
444
|
+
);
|
|
445
|
+
} catch {
|
|
446
|
+
/* observation does not control execution */
|
|
447
|
+
}
|
|
448
|
+
retention.finish({
|
|
449
|
+
code: null,
|
|
450
|
+
signal: null,
|
|
451
|
+
timedOut: false,
|
|
452
|
+
aborted: Boolean(signal?.aborted),
|
|
453
|
+
truncated: false,
|
|
454
|
+
failed: true,
|
|
455
|
+
});
|
|
456
|
+
retainWriterLease = Boolean(writerLease && isHerdrWriterCloseFailure(error));
|
|
457
|
+
if (ledgerPath && !terminalAttempted) {
|
|
458
|
+
// Best-effort: this records the failure, so it must not REPLACE the failure. A strict append that
|
|
459
|
+
// throws here would discard the original error — including HerdrWriterCloseError, whose whole
|
|
460
|
+
// meaning is "a lease is deliberately retained" (R-108).
|
|
461
|
+
await appendAfterRuntimeRecord(runtimeRecord, () =>
|
|
462
|
+
appendLedgerEvent(
|
|
463
|
+
{
|
|
464
|
+
path: ledgerPath,
|
|
465
|
+
strict: false,
|
|
466
|
+
onFailure: (cause) => teardownFailures.push(`child lifecycle record failed: ${String(cause)}`),
|
|
467
|
+
},
|
|
468
|
+
buildChildLifecycleEvent({
|
|
469
|
+
executionId,
|
|
470
|
+
parentExecutionId,
|
|
471
|
+
childId,
|
|
472
|
+
state: "failed",
|
|
473
|
+
executor: session.executor.kind,
|
|
474
|
+
idleTimeoutMs: configuredIdleMs,
|
|
475
|
+
reason:
|
|
476
|
+
error instanceof GovernanceRefusal
|
|
477
|
+
? error.code
|
|
478
|
+
: error instanceof Error
|
|
479
|
+
? error.name
|
|
480
|
+
: "unknown executor error",
|
|
481
|
+
correlation: plan.correlation,
|
|
482
|
+
now: new Date(),
|
|
483
|
+
}),
|
|
484
|
+
),
|
|
485
|
+
);
|
|
486
|
+
}
|
|
487
|
+
await teardown();
|
|
488
|
+
// Attached, not dropped. `withTeardownNotes` was applied on both return paths and neither throw path,
|
|
489
|
+
// so a failed lease-release record — the thing that makes the NEXT owner report a phantom crash — was
|
|
490
|
+
// collected into an array nothing read.
|
|
491
|
+
throw errorWithTeardownNotes(error, teardownFailures);
|
|
311
492
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
correlation: plan.correlation, now: new Date(),
|
|
344
|
-
}),
|
|
345
|
-
));
|
|
493
|
+
/**
|
|
494
|
+
* Surfaces a teardown failure WITHOUT discarding the result. The child already ran; telling the
|
|
495
|
+
* orchestrator "ledger write failed" and nothing else made a completed delegation indistinguishable
|
|
496
|
+
* from one that never happened, which is the one confusion this package must never create (R-99).
|
|
497
|
+
*/
|
|
498
|
+
/**
|
|
499
|
+
* Surfaces a failed best-effort RECORD without displacing the failure it was recording. A
|
|
500
|
+
* `GovernanceRefusal` keeps its `code`, so a controller switching on it still sees the real refusal
|
|
501
|
+
* rather than a ledger complaint. pi renders only `error.message` (its `createErrorToolResult` drops
|
|
502
|
+
* everything else), so the notes go INTO the message — an `AggregateError.errors` array would be invisible.
|
|
503
|
+
*/
|
|
504
|
+
function errorWithTeardownNotes(error: unknown, notes: readonly string[]): unknown {
|
|
505
|
+
if (notes.length === 0) return error;
|
|
506
|
+
if (error instanceof GovernanceRefusal) {
|
|
507
|
+
return new GovernanceRefusal({
|
|
508
|
+
code: error.code,
|
|
509
|
+
message: [error.message, ...notes].join("; "),
|
|
510
|
+
...(error.details ? { details: error.details } : {}),
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
if (error instanceof Error) return new Error([error.message, ...notes].join("; "), { cause: error });
|
|
514
|
+
return error;
|
|
515
|
+
}
|
|
516
|
+
function withTeardownNotes(outcome: DelegationOutcome): DelegationOutcome {
|
|
517
|
+
const observed = { ...outcome, retention: retention.status() };
|
|
518
|
+
if (teardownFailures.length === 0) return observed;
|
|
519
|
+
return {
|
|
520
|
+
...observed,
|
|
521
|
+
control: "failed",
|
|
522
|
+
reason: [outcome.reason, ...teardownFailures].filter(Boolean).join("; "),
|
|
523
|
+
};
|
|
346
524
|
}
|
|
347
|
-
await teardown();
|
|
348
|
-
// Attached, not dropped. `withTeardownNotes` was applied on both return paths and neither throw path,
|
|
349
|
-
// so a failed lease-release record — the thing that makes the NEXT owner report a phantom crash — was
|
|
350
|
-
// collected into an array nothing read.
|
|
351
|
-
throw errorWithTeardownNotes(error, teardownFailures);
|
|
352
|
-
}
|
|
353
525
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
code: error.code,
|
|
370
|
-
message: [error.message, ...notes].join("; "),
|
|
371
|
-
...(error.details ? { details: error.details } : {}),
|
|
372
|
-
});
|
|
526
|
+
async function teardown(): Promise<void> {
|
|
527
|
+
try {
|
|
528
|
+
await releaseDelegationWorkspace({
|
|
529
|
+
prepared: preparedWorkspace,
|
|
530
|
+
childId,
|
|
531
|
+
executionId,
|
|
532
|
+
parentExecutionId,
|
|
533
|
+
ledgerPath,
|
|
534
|
+
reason: releaseReason,
|
|
535
|
+
retain: retainWriterLease,
|
|
536
|
+
});
|
|
537
|
+
} catch (error) {
|
|
538
|
+
teardownFailures.push(`workspace lease record failed: ${String(error)}`);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
373
541
|
}
|
|
374
|
-
if (error instanceof Error) return new Error([error.message, ...notes].join("; "), { cause: error });
|
|
375
|
-
return error;
|
|
376
542
|
}
|
|
377
543
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
if (teardownFailures.length === 0) return observed;
|
|
381
|
-
return { ...observed, control: "failed", reason: [outcome.reason, ...teardownFailures].filter(Boolean).join("; ") };
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
async function teardown(): Promise<void> {
|
|
385
|
-
try {
|
|
386
|
-
await releaseDelegationWorkspace({
|
|
387
|
-
prepared: preparedWorkspace,
|
|
388
|
-
childId,
|
|
389
|
-
executionId,
|
|
390
|
-
parentExecutionId,
|
|
391
|
-
ledgerPath,
|
|
392
|
-
reason: releaseReason,
|
|
393
|
-
retain: retainWriterLease,
|
|
394
|
-
});
|
|
395
|
-
} catch (error) {
|
|
396
|
-
teardownFailures.push(`workspace lease record failed: ${String(error)}`);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
544
|
+
function describeBound(ms: number): string {
|
|
545
|
+
return ms < 60_000 ? `${Math.round(ms / 1000)} second(s)` : `${Math.round(ms / 60_000)} minute(s)`;
|
|
399
546
|
}
|