pi-daddy 0.28.0 → 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 +99 -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 +134 -28
- 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 +73 -73
- 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 +25 -11
- package/extensions/session-report.ts +60 -11
- package/extensions/session.ts +58 -34
- 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 +4 -211
- 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 -155
- 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/activity-timeline.d.ts +0 -109
- package/dist/activity-timeline.d.ts.map +0 -1
- package/dist/activity-timeline.js +0 -208
- package/dist/activity-timeline.js.map +0 -1
- 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 -54
- package/dist/dashboard-cli.d.ts.map +0 -1
- package/dist/dashboard-cli.js +0 -367
- package/dist/dashboard-cli.js.map +0 -1
- package/dist/dashboard-display-controls.d.ts +0 -15
- package/dist/dashboard-display-controls.d.ts.map +0 -1
- package/dist/dashboard-display-controls.js +0 -34
- package/dist/dashboard-display-controls.js.map +0 -1
- package/dist/dashboard-handshake.d.ts +0 -42
- package/dist/dashboard-handshake.d.ts.map +0 -1
- package/dist/dashboard-handshake.js +0 -147
- 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 -154
- 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 -313
- 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/activity-timeline.ts +0 -133
- 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 -340
- package/src/dashboard-display-controls.ts +0 -21
- package/src/dashboard-handshake.ts +0 -199
- 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 -154
- package/src/delegate.ts +0 -348
- 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
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **The lock helper: a separate program, and the parent's side of its pipes.**
|
|
3
|
+
*
|
|
4
|
+
* Split out of `workspace-lease.ts` because `test/file-size.test.ts` refused that file — at 405 lines on the
|
|
5
|
+
* ADR-0035 branch when PR #14 merged into it, and at 435 here once R-152's guards landed. Both branches take
|
|
6
|
+
* the same seam so they converge rather than diverge, and the cap has never been raised: `delegate.ts` was
|
|
7
|
+
* split at 413 the same way (rule: when a guard fails, obey it).
|
|
8
|
+
*
|
|
9
|
+
* The seam is not arbitrary. Everything here concerns the process that HOLDS the kernel lock — the source it
|
|
10
|
+
* runs, the readiness token it prints, and the parent-side handles that keep it referenced.
|
|
11
|
+
* `workspace-lease.ts` keeps the lease lifecycle that talks to it.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export const LEASE_READY = "PI_DADDY_LEASE_READY";
|
|
15
|
+
// The lock holder also owns crash cleanup for the governed child. If the parent dies, stdin closes;
|
|
16
|
+
// the helper signals the attached process, or closes the herdr tab, before releasing flock. A raw
|
|
17
|
+
// descendant deliberately detached by bash remains ADR-0012's OS-containment boundary, not a lease
|
|
18
|
+
// guarantee. The process branch SIGTERMs, escalates to SIGKILL at +500ms, and releases at +750ms
|
|
19
|
+
// WITHOUT confirming death (R-101). The herdr branch retries `tab close` a BOUNDED number of times
|
|
20
|
+
// and then releases anyway, leaving a marker file: an unreleasable lock strands a worktree forever
|
|
21
|
+
// with no in-product recovery, which is strictly worse than a recorded failure to close (R-102).
|
|
22
|
+
//
|
|
23
|
+
// **Each attempt is bounded in WALL CLOCK, not just in count (R-146).** `execFile` with no `timeout`
|
|
24
|
+
// never calls back if `herdr` accepts the close and does not answer, so the retry counter never
|
|
25
|
+
// decrements, `giveUp` never runs and no marker is written — the lock is held forever. That was masked
|
|
26
|
+
// while the parent could not exit, because the operator saw a hung `pi` instead; measured with a `herdr`
|
|
27
|
+
// that sleeps, the parent then exited in 82ms and left a silent strand, which is R-102's rejected outcome
|
|
28
|
+
// reached quietly. A bound on retries is not a bound on time.
|
|
29
|
+
export const HELPER_SOURCE = `
|
|
30
|
+
import { execFile } from "node:child_process";
|
|
31
|
+
import { writeFileSync } from "node:fs";
|
|
32
|
+
let clean=false, target=null, buffered="";
|
|
33
|
+
process.stdout.write(${JSON.stringify(`${LEASE_READY}:`)}+process.pid+"\\n");
|
|
34
|
+
process.stdin.setEncoding("utf8");
|
|
35
|
+
process.stdin.on("data",chunk=>{buffered+=chunk;
|
|
36
|
+
for(;
|
|
37
|
+
;
|
|
38
|
+
){const i=buffered.indexOf("\\n");
|
|
39
|
+
if(i<0)break;
|
|
40
|
+
const line=buffered.slice(0,i);
|
|
41
|
+
buffered=buffered.slice(i+1);
|
|
42
|
+
try{const value=JSON.parse(line);
|
|
43
|
+
if(value.release)clean=true;
|
|
44
|
+
else if(value.process_pid)target={process_pid:value.process_pid};
|
|
45
|
+
else if(value.herdr_tab)target={herdr_tab:value.herdr_tab};
|
|
46
|
+
}catch{}}});
|
|
47
|
+
process.stdin.on("end",()=>{if(clean||!target)return process.exit(0);
|
|
48
|
+
if(target.process_pid){try{process.kill(target.process_pid,"SIGTERM")}catch{return process.exit(0)}setTimeout(()=>{try{process.kill(target.process_pid,"SIGKILL")}catch{}},500);
|
|
49
|
+
return setTimeout(()=>process.exit(0),750);
|
|
50
|
+
}let left=Number(process.env.PI_DADDY_LEASE_CLOSE_ATTEMPTS||10);
|
|
51
|
+
const giveUp=last=>{
|
|
52
|
+
try{
|
|
53
|
+
if(process.env.PI_DADDY_LEASE_MARKER)writeFileSync(process.env.PI_DADDY_LEASE_MARKER,
|
|
54
|
+
JSON.stringify({reason:last&&(last.killed||last.signal==="SIGKILL")?"herdr-close-timeout":"herdr-close-failed",herdr_tab:target.herdr_tab})+"\\n")
|
|
55
|
+
}catch{}
|
|
56
|
+
process.exit(0)};
|
|
57
|
+
const close=()=>execFile("herdr",["tab","close",target.herdr_tab],
|
|
58
|
+
{timeout:Number(process.env.PI_DADDY_LEASE_CLOSE_TIMEOUT_MS||15000),killSignal:"SIGKILL"},
|
|
59
|
+
error=>{if(!error)return process.exit(0);
|
|
60
|
+
if(--left<=0)return giveUp(error);
|
|
61
|
+
setTimeout(close,1000)});
|
|
62
|
+
close();
|
|
63
|
+
});
|
|
64
|
+
process.stdin.resume();`;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* `unref` the parent's end of one of the helper's pipes.
|
|
68
|
+
*
|
|
69
|
+
* A spawned pipe is a `net.Socket`, which has `unref`; `ChildProcess.stdin` is typed `Writable`, which does
|
|
70
|
+
* not. Hence the narrow cast. The optional call is **defensive, not load-bearing** — the holder is spawned at
|
|
71
|
+
* exactly one site with three pipes, so none of these is ever `null`, and an earlier version of this comment
|
|
72
|
+
* claimed otherwise by citing a `stdio: "ignore"` caller that does not exist.
|
|
73
|
+
*
|
|
74
|
+
* Only `stdout` and `stderr` are unref'ed. `stdin` was too, until a line-by-line reversion showed the suite
|
|
75
|
+
* stayed green without it — an unforced line inside the fix that exists to be forced, which is exactly the
|
|
76
|
+
* shape R-122 was about.
|
|
77
|
+
*/
|
|
78
|
+
export const unrefStream = (stream: unknown): void => {
|
|
79
|
+
(stream as { unref?: () => void } | null)?.unref?.();
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The bounds on the helper's `herdr tab close` attempts live here, with the attempts they bound — moved out of
|
|
84
|
+
* `workspace-lease.ts` when the line ceiling refused it at 402 lines, once both this branch's ADR-0035 work and
|
|
85
|
+
* `main`'s R-152 guards had landed in it. Third time that guard has fired on this file and third time the
|
|
86
|
+
* answer was a seam rather than a bigger cap.
|
|
87
|
+
*/
|
|
88
|
+
/**
|
|
89
|
+
* **A bound that is not a bound throws, and it throws a `RangeError` (R-146, R-152).**
|
|
90
|
+
*
|
|
91
|
+
* Both ends fail, in opposite directions and both silently:
|
|
92
|
+
*
|
|
93
|
+
* - `0` reads as "no limit" and Node agrees — `execFile` treats `timeout: 0` as *no* timeout (measured: the
|
|
94
|
+
* callback for a 3s sleep arrives at 3004ms with no error), reinstating the unbounded hang the bound exists
|
|
95
|
+
* to prevent. Negatives behave identically.
|
|
96
|
+
* - anything above `2^31 - 1` truncates: `setTimeout` warns `TimeoutOverflowWarning … set to 1`, so
|
|
97
|
+
* `Number.MAX_SAFE_INTEGER` — the plausible "effectively no limit" sentinel, given the argument about `0`
|
|
98
|
+
* — SIGKILLs every `herdr tab close` after 1ms, before herdr can act. Measured: callback at 3ms.
|
|
99
|
+
*
|
|
100
|
+
* **Not a `GovernanceRefusal`.** It was one, carrying `WORKSPACE_LEASE_STALE`, which everywhere else in this
|
|
101
|
+
* package means *the lease went stale or was lost* — so an ADR-0034 controller switching on codes (the reason
|
|
102
|
+
* codes exist, R-103) would classify a permanent caller bug as transient and retry a call that can never
|
|
103
|
+
* succeed. A refusal is a governance outcome that gets ledgered; a bad argument is neither.
|
|
104
|
+
*
|
|
105
|
+
* Checked for read leases too, which the first version did not: it sat below the read-lease early return, so a
|
|
106
|
+
* controller smoke-testing its configuration against a read lease got a false all-clear.
|
|
107
|
+
*/
|
|
108
|
+
export const assertCloseBounds = (input: { herdrCloseTimeoutMs?: number; herdrCloseAttempts?: number }): void => {
|
|
109
|
+
const MAX_TIMER = 2_147_483_647;
|
|
110
|
+
for (const [name, value, ceiling] of [
|
|
111
|
+
["herdrCloseTimeoutMs", input.herdrCloseTimeoutMs, MAX_TIMER],
|
|
112
|
+
["herdrCloseAttempts", input.herdrCloseAttempts, Number.MAX_SAFE_INTEGER],
|
|
113
|
+
] as const) {
|
|
114
|
+
if (value === undefined) continue;
|
|
115
|
+
if (!Number.isInteger(value) || value < 1 || value > ceiling) {
|
|
116
|
+
throw new RangeError(
|
|
117
|
+
`${name} must be a whole number between 1 and ${ceiling}, not ${String(value)}. Zero and negatives ` +
|
|
118
|
+
`are not "no limit" but no bound at all, a value past ${MAX_TIMER} truncates to 1ms, and a ` +
|
|
119
|
+
`fractional count is not a count — this bound exists so a hung herdr cannot hold the writer lock ` +
|
|
120
|
+
`forever (R-146).`,
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The lease's RECORD: what a workspace lease writes down about who holds it and how they let it go.
|
|
3
|
+
*
|
|
4
|
+
* Split from `./workspace-lease.ts` to stay under the 400-line module ceiling, along the seam this
|
|
5
|
+
* review round kept finding defects on — absent vs unreadable metadata, a swallowed handover write, a
|
|
6
|
+
* successor's token — all of which are about what the record SAYS rather than about the kernel lock.
|
|
7
|
+
*/
|
|
8
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
9
|
+
import { readFile, rename, writeFile } from "node:fs/promises";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import type { ValidatedWorkspace, WorkspaceAccess } from "../kernel/workspace.ts";
|
|
12
|
+
|
|
13
|
+
export interface LeaseMetadata {
|
|
14
|
+
version: 1;
|
|
15
|
+
state: "active" | "released";
|
|
16
|
+
token: string;
|
|
17
|
+
owner_id: string;
|
|
18
|
+
workspace_id: string;
|
|
19
|
+
root: string;
|
|
20
|
+
pid: number;
|
|
21
|
+
acquired_at: string;
|
|
22
|
+
released_at?: string;
|
|
23
|
+
release_reason?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface WorkspaceLease {
|
|
27
|
+
workspace: ValidatedWorkspace;
|
|
28
|
+
access: WorkspaceAccess;
|
|
29
|
+
ownerId: string;
|
|
30
|
+
/**
|
|
31
|
+
* `true` only when the kernel lock was free but metadata said the prior owner never released.
|
|
32
|
+
* `"unknown"` when the prior owner's record could not be read at all — that is not evidence of a
|
|
33
|
+
* clean handover and must not be recorded as one (R-100).
|
|
34
|
+
*/
|
|
35
|
+
recovered: boolean | "unknown";
|
|
36
|
+
/** Attach the governed resource so parent death cleans it before the kernel lock is released. */
|
|
37
|
+
attachProcess(pid: number): void;
|
|
38
|
+
attachHerdrTab(tabId: string): void;
|
|
39
|
+
/** Resolves only when the kernel-lock helper exits before explicit release. */
|
|
40
|
+
lost: Promise<Error>;
|
|
41
|
+
/**
|
|
42
|
+
* NEVER throws. A cleanup function that can throw destroys its caller's return value — a completed
|
|
43
|
+
* child's entire output was discarded this way (R-99) — so the outcome is a VALUE the caller records:
|
|
44
|
+
* `"released"` the kernel lock was handed back and the handover recorded;
|
|
45
|
+
* `"released-unrecorded"` the lock was handed back but the record failed, so the NEXT owner will
|
|
46
|
+
* report a recovery that did not happen unless this is ledgered;
|
|
47
|
+
* `"lost"` the helper was already gone, so this owner never released anything.
|
|
48
|
+
*/
|
|
49
|
+
release(reason?: string): Promise<LeaseReleaseOutcome>;
|
|
50
|
+
/**
|
|
51
|
+
* Record that this lease is being kept deliberately, WITHOUT releasing the kernel lock.
|
|
52
|
+
*
|
|
53
|
+
* Needed because a retained lease never calls `release()`, so the metadata stays `state: "active"` and
|
|
54
|
+
* whoever acquires next reports `recovered: true` — blaming a crash on a known-good path.
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* Record that the lease is being KEPT rather than handed back, and answer what actually happened — the
|
|
58
|
+
* caller ledgers this word (R-152). It is not always `retained`: a helper that has already died makes the
|
|
59
|
+
* fact `lost`, and a lease already settled by `release()` keeps the outcome it had.
|
|
60
|
+
*/
|
|
61
|
+
markRetained(reason?: string): Promise<LeaseReleaseOutcome>;
|
|
62
|
+
/** Reads the give-up marker the helper leaves when it could not close a herdr writer tab. */
|
|
63
|
+
readCloseFailure(): Promise<{ reason: string; herdr_tab?: string } | null>;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* What a release actually did. Six members rather than three, because the first version conflated facts
|
|
68
|
+
* that call for different responses — and one of them is an alarm:
|
|
69
|
+
* `released` the lock went back and THIS owner wrote its own handover;
|
|
70
|
+
* `released-unrecorded` the lock went back and the record does not say so, so the next owner will report
|
|
71
|
+
* a recovery that never happened unless the caller ledgers this. **The alarm.**
|
|
72
|
+
* `released-superseded` the lock went back and a successor already owns the metadata, so we correctly
|
|
73
|
+
* declined to overwrite it. Healthy, and previously indistinguishable from the
|
|
74
|
+
* alarm above;
|
|
75
|
+
* `not-held` a read lease, which never took a kernel lock — recording it as `released`
|
|
76
|
+
* overstated how many handovers the kernel performed, which is R-105 on the
|
|
77
|
+
* release side of the same defect;
|
|
78
|
+
* `lost` the helper was already gone; this owner released nothing.
|
|
79
|
+
*/
|
|
80
|
+
export type LeaseReleaseOutcome =
|
|
81
|
+
| "released"
|
|
82
|
+
| "released-unrecorded"
|
|
83
|
+
| "released-superseded"
|
|
84
|
+
| "not-held"
|
|
85
|
+
| "lost"
|
|
86
|
+
/**
|
|
87
|
+
* The lease was RETAINED and is therefore already settled — `release()` after `markRetained()` answers
|
|
88
|
+
* this instead of running the clean handshake (R-146). It was previously expressible only as the
|
|
89
|
+
* `| "retained"` bolted onto two signatures, which is why `release()` could not say it and claimed
|
|
90
|
+
* `released` instead: a clean handover for a lease kept precisely because a pane would not close.
|
|
91
|
+
*/
|
|
92
|
+
| "retained";
|
|
93
|
+
|
|
94
|
+
export function leasePaths(leaseDir: string, root: string) {
|
|
95
|
+
// Canonical root, never caller-chosen workspace ID: aliases for one worktree must contend.
|
|
96
|
+
const key = createHash("sha256").update(root, "utf8").digest("hex");
|
|
97
|
+
return {
|
|
98
|
+
lock: join(leaseDir, `${key}.lock`),
|
|
99
|
+
metadata: join(leaseDir, `${key}.json`),
|
|
100
|
+
marker: join(leaseDir, `${key}.close-failed.json`),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export async function atomicMetadata(path: string, value: LeaseMetadata): Promise<void> {
|
|
105
|
+
const temp = `${path}.${process.pid}.${randomUUID()}.tmp`;
|
|
106
|
+
await writeFile(temp, `${JSON.stringify(value, null, 2)}\n`, { encoding: "utf8", flag: "wx", mode: 0o600 });
|
|
107
|
+
await rename(temp, path);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* `null` means no prior owner was recorded. `"malformed"` means a record exists and cannot be read,
|
|
112
|
+
* which is strictly LESS evidence than a readable "active" one and must never read as a clean handover
|
|
113
|
+
* (R-100). Absent and unreadable are different facts; conflating them silently erases a real recovery.
|
|
114
|
+
*/
|
|
115
|
+
export async function readMetadata(path: string): Promise<LeaseMetadata | null | "malformed"> {
|
|
116
|
+
let raw: string;
|
|
117
|
+
try {
|
|
118
|
+
raw = await readFile(path, "utf8");
|
|
119
|
+
} catch (error) {
|
|
120
|
+
return (error as NodeJS.ErrnoException)?.code === "ENOENT" ? null : "malformed";
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
const value = JSON.parse(raw) as Partial<LeaseMetadata>;
|
|
124
|
+
if (value?.version !== 1) return "malformed";
|
|
125
|
+
if (value.state !== "active" && value.state !== "released") return "malformed";
|
|
126
|
+
if (typeof value.token !== "string" || !value.token) return "malformed";
|
|
127
|
+
return value as LeaseMetadata;
|
|
128
|
+
} catch {
|
|
129
|
+
return "malformed";
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The v3 runtime-event half of the ledger: workspace leases and child lifecycle, with
|
|
3
|
+
* their builders. Split out of `./ledger.ts` only to stay under the 400-line module ceiling this
|
|
4
|
+
* project enforces mechanically; `./ledger.ts` re-exports everything here, so "the ledger module"
|
|
5
|
+
* remains one import.
|
|
6
|
+
*/
|
|
7
|
+
import { LEDGER_VERSION, type LedgerEventBase, type GrantRecord } from "./ledger.ts";
|
|
8
|
+
import type { ExecutorKind } from "../kernel/delegate-types.ts";
|
|
9
|
+
import type { CorrelationMetadata } from "../kernel/correlation.ts";
|
|
10
|
+
import type { StructuredRefusal } from "../kernel/refusals.ts";
|
|
11
|
+
import { assertExecutionId } from "../kernel/execution-id.ts";
|
|
12
|
+
import { assertLedgerV3Wire } from "./ledger-v3-validation.ts";
|
|
13
|
+
|
|
14
|
+
export const WORKSPACE_ACCESSES = ["read", "write"] as const;
|
|
15
|
+
export type WorkspaceAccess = (typeof WORKSPACE_ACCESSES)[number];
|
|
16
|
+
|
|
17
|
+
export const WORKSPACE_RECOVERY_VALUES = [false, true, "unknown"] as const;
|
|
18
|
+
export type WorkspaceRecovery = (typeof WORKSPACE_RECOVERY_VALUES)[number];
|
|
19
|
+
|
|
20
|
+
export const CHILD_LIFECYCLE_STATES = ["starting", "running", "completed", "failed"] as const;
|
|
21
|
+
export type ChildLifecycleState = (typeof CHILD_LIFECYCLE_STATES)[number];
|
|
22
|
+
|
|
23
|
+
/** The complete Node signal vocabulary accepted by a v3 child-lifecycle event. */
|
|
24
|
+
export const CHILD_PROCESS_SIGNALS = [
|
|
25
|
+
"SIGABRT",
|
|
26
|
+
"SIGALRM",
|
|
27
|
+
"SIGBUS",
|
|
28
|
+
"SIGCHLD",
|
|
29
|
+
"SIGCONT",
|
|
30
|
+
"SIGFPE",
|
|
31
|
+
"SIGHUP",
|
|
32
|
+
"SIGILL",
|
|
33
|
+
"SIGINT",
|
|
34
|
+
"SIGIO",
|
|
35
|
+
"SIGIOT",
|
|
36
|
+
"SIGKILL",
|
|
37
|
+
"SIGPIPE",
|
|
38
|
+
"SIGPOLL",
|
|
39
|
+
"SIGPROF",
|
|
40
|
+
"SIGPWR",
|
|
41
|
+
"SIGQUIT",
|
|
42
|
+
"SIGSEGV",
|
|
43
|
+
"SIGSTKFLT",
|
|
44
|
+
"SIGSTOP",
|
|
45
|
+
"SIGSYS",
|
|
46
|
+
"SIGTERM",
|
|
47
|
+
"SIGTRAP",
|
|
48
|
+
"SIGTSTP",
|
|
49
|
+
"SIGTTIN",
|
|
50
|
+
"SIGTTOU",
|
|
51
|
+
"SIGUNUSED",
|
|
52
|
+
"SIGURG",
|
|
53
|
+
"SIGUSR1",
|
|
54
|
+
"SIGUSR2",
|
|
55
|
+
"SIGVTALRM",
|
|
56
|
+
"SIGWINCH",
|
|
57
|
+
"SIGXCPU",
|
|
58
|
+
"SIGXFSZ",
|
|
59
|
+
"SIGBREAK",
|
|
60
|
+
"SIGLOST",
|
|
61
|
+
"SIGINFO",
|
|
62
|
+
] as const satisfies readonly NodeJS.Signals[];
|
|
63
|
+
export type ChildProcessSignal = (typeof CHILD_PROCESS_SIGNALS)[number];
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* `released` is a handover this owner performed. FOUR members were added by the 0.18.0 review pass, and
|
|
67
|
+
* they were not all previously recorded the same way — `uncontended` was recorded as an *acquisition*, and
|
|
68
|
+
* `lost` was recorded as nothing at all, because the old `release()` threw before the append ran:
|
|
69
|
+
* `lost` the kernel lock went away under a live governed writer — NOT the same fact as a user
|
|
70
|
+
* cancelling, which is what it used to be indistinguishable from (R-103);
|
|
71
|
+
* `retained` the lease was deliberately kept because a herdr writer tab would not close, so the
|
|
72
|
+
* successor's `recovered: true` would otherwise blame a healthy path (R-104);
|
|
73
|
+
* `uncontended` a read lease took no kernel lock at all, so counting it as an acquisition
|
|
74
|
+
* overstated how many exclusions the kernel actually performed (R-105).
|
|
75
|
+
*/
|
|
76
|
+
export const WORKSPACE_LEASE_OUTCOMES = [
|
|
77
|
+
"acquired",
|
|
78
|
+
"uncontended",
|
|
79
|
+
"refused",
|
|
80
|
+
"released",
|
|
81
|
+
"released-unrecorded",
|
|
82
|
+
"lost",
|
|
83
|
+
"retained",
|
|
84
|
+
"timeout",
|
|
85
|
+
"recovered",
|
|
86
|
+
] as const;
|
|
87
|
+
export type WorkspaceLeaseOutcome = (typeof WORKSPACE_LEASE_OUTCOMES)[number];
|
|
88
|
+
|
|
89
|
+
export interface WorkspaceLeaseEvent extends LedgerEventBase {
|
|
90
|
+
ledgerVersion: typeof LEDGER_VERSION;
|
|
91
|
+
event: "workspace_lease";
|
|
92
|
+
executionId: string;
|
|
93
|
+
parentExecutionId: string | null;
|
|
94
|
+
childId: string;
|
|
95
|
+
workspaceId: string;
|
|
96
|
+
root: string;
|
|
97
|
+
access: WorkspaceAccess;
|
|
98
|
+
outcome: WorkspaceLeaseOutcome;
|
|
99
|
+
/** `"unknown"` when the prior owner's record was unreadable — not evidence of a clean handover. */
|
|
100
|
+
recovered?: WorkspaceRecovery;
|
|
101
|
+
releaseReason?: string;
|
|
102
|
+
refusal?: StructuredRefusal;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface ChildLifecycleEvent extends LedgerEventBase {
|
|
106
|
+
ledgerVersion: typeof LEDGER_VERSION;
|
|
107
|
+
event: "child_lifecycle";
|
|
108
|
+
executionId: string;
|
|
109
|
+
parentExecutionId: string | null;
|
|
110
|
+
childId: string;
|
|
111
|
+
state: ChildLifecycleState;
|
|
112
|
+
executor: ExecutorKind;
|
|
113
|
+
/** Bound after which a non-terminal start is known to be incomplete. */
|
|
114
|
+
deadlineAt?: string;
|
|
115
|
+
/** Herdr runtime identity is observational and never an enforcement boundary. */
|
|
116
|
+
herdrPaneId?: string;
|
|
117
|
+
herdrAgentName?: string;
|
|
118
|
+
exitCode?: number | null;
|
|
119
|
+
signal?: ChildProcessSignal | null;
|
|
120
|
+
timedOut?: true;
|
|
121
|
+
aborted?: true;
|
|
122
|
+
truncated?: true;
|
|
123
|
+
reason?: string;
|
|
124
|
+
/** The inactivity bound (ms) that governed this child beside the `deadlineAt` ceiling (PR 3e). */
|
|
125
|
+
idleTimeoutMs?: number;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export type CapabilityDecisionEvent = GrantRecord & {
|
|
129
|
+
ledgerVersion: typeof LEDGER_VERSION;
|
|
130
|
+
event: "capability_decision";
|
|
131
|
+
executionId: string;
|
|
132
|
+
parentExecutionId: string | null;
|
|
133
|
+
taskDigest: string;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export type RuntimeLedgerEvent = CapabilityDecisionEvent | WorkspaceLeaseEvent | ChildLifecycleEvent;
|
|
137
|
+
|
|
138
|
+
export function buildWorkspaceLeaseEvent(args: {
|
|
139
|
+
executionId: string;
|
|
140
|
+
parentExecutionId: string | null;
|
|
141
|
+
childId: string;
|
|
142
|
+
workspaceId: string;
|
|
143
|
+
root: string;
|
|
144
|
+
access: WorkspaceAccess;
|
|
145
|
+
outcome: WorkspaceLeaseOutcome;
|
|
146
|
+
recovered?: WorkspaceRecovery;
|
|
147
|
+
releaseReason?: string;
|
|
148
|
+
refusal?: StructuredRefusal;
|
|
149
|
+
correlation?: CorrelationMetadata;
|
|
150
|
+
now: Date;
|
|
151
|
+
}): WorkspaceLeaseEvent {
|
|
152
|
+
assertEventIdentity(args);
|
|
153
|
+
return assertLedgerV3Wire({
|
|
154
|
+
ledgerVersion: LEDGER_VERSION,
|
|
155
|
+
event: "workspace_lease",
|
|
156
|
+
ts: args.now.toISOString(),
|
|
157
|
+
executionId: args.executionId,
|
|
158
|
+
parentExecutionId: args.parentExecutionId,
|
|
159
|
+
childId: args.childId,
|
|
160
|
+
workspaceId: args.workspaceId,
|
|
161
|
+
root: args.root,
|
|
162
|
+
access: args.access,
|
|
163
|
+
outcome: args.outcome,
|
|
164
|
+
// `!== undefined`, not truthiness. `recovered: false` — a POSITIVE assertion that the predecessor
|
|
165
|
+
// handed over cleanly — was dropped while the truthy `"unknown"` survived, so absence meant both
|
|
166
|
+
// "clean" and "never supplied". R-100's whole argument is that absence of evidence is not evidence,
|
|
167
|
+
// and this was the one line discarding the evidence.
|
|
168
|
+
...(args.recovered !== undefined ? { recovered: args.recovered } : {}),
|
|
169
|
+
...(args.releaseReason ? { releaseReason: args.releaseReason } : {}),
|
|
170
|
+
...(args.refusal ? { refusal: structuredClone(args.refusal) } : {}),
|
|
171
|
+
...(args.correlation ? { correlation: structuredClone(args.correlation) } : {}),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export function buildChildLifecycleEvent(args: {
|
|
176
|
+
executionId: string;
|
|
177
|
+
parentExecutionId: string | null;
|
|
178
|
+
childId: string;
|
|
179
|
+
state: ChildLifecycleState;
|
|
180
|
+
executor: ExecutorKind;
|
|
181
|
+
deadlineAt?: string;
|
|
182
|
+
idleTimeoutMs?: number;
|
|
183
|
+
herdrPaneId?: string;
|
|
184
|
+
herdrAgentName?: string;
|
|
185
|
+
exitCode?: number | null;
|
|
186
|
+
signal?: ChildProcessSignal | null;
|
|
187
|
+
timedOut?: boolean;
|
|
188
|
+
aborted?: boolean;
|
|
189
|
+
truncated?: boolean;
|
|
190
|
+
reason?: string;
|
|
191
|
+
correlation?: CorrelationMetadata;
|
|
192
|
+
now: Date;
|
|
193
|
+
}): ChildLifecycleEvent {
|
|
194
|
+
assertEventIdentity(args);
|
|
195
|
+
return assertLedgerV3Wire({
|
|
196
|
+
ledgerVersion: LEDGER_VERSION,
|
|
197
|
+
event: "child_lifecycle",
|
|
198
|
+
ts: args.now.toISOString(),
|
|
199
|
+
executionId: args.executionId,
|
|
200
|
+
parentExecutionId: args.parentExecutionId,
|
|
201
|
+
childId: args.childId,
|
|
202
|
+
state: args.state,
|
|
203
|
+
executor: args.executor,
|
|
204
|
+
...(args.deadlineAt ? { deadlineAt: args.deadlineAt } : {}),
|
|
205
|
+
...(args.idleTimeoutMs !== undefined ? { idleTimeoutMs: args.idleTimeoutMs } : {}),
|
|
206
|
+
...(args.herdrPaneId ? { herdrPaneId: args.herdrPaneId } : {}),
|
|
207
|
+
...(args.herdrAgentName ? { herdrAgentName: args.herdrAgentName } : {}),
|
|
208
|
+
...(args.exitCode !== undefined ? { exitCode: args.exitCode } : {}),
|
|
209
|
+
...(args.signal !== undefined ? { signal: args.signal } : {}),
|
|
210
|
+
...(args.timedOut ? { timedOut: true } : {}),
|
|
211
|
+
...(args.aborted ? { aborted: true } : {}),
|
|
212
|
+
...(args.truncated ? { truncated: true } : {}),
|
|
213
|
+
...(args.reason ? { reason: args.reason } : {}),
|
|
214
|
+
...(args.correlation ? { correlation: structuredClone(args.correlation) } : {}),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function assertEventIdentity(args: { executionId: string; parentExecutionId: string | null }): void {
|
|
219
|
+
assertExecutionId(args.executionId);
|
|
220
|
+
if (args.parentExecutionId !== null) assertExecutionId(args.parentExecutionId, "parentExecutionId");
|
|
221
|
+
if (args.parentExecutionId === args.executionId) throw new TypeError("an execution cannot be its own parent");
|
|
222
|
+
}
|