@llblab/pi-kit 0.38.3 → 0.39.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 +10 -0
- package/README.md +2 -2
- package/node_modules/@llblab/pi-actors/AGENTS.md +108 -20
- package/node_modules/@llblab/pi-actors/BACKLOG.md +207 -4
- package/node_modules/@llblab/pi-actors/CHANGELOG.md +13 -0
- package/node_modules/@llblab/pi-actors/README.md +31 -1
- package/node_modules/@llblab/pi-actors/dist/index.js +1 -1
- package/node_modules/@llblab/pi-actors/dist/lib/async-runs.d.ts +37 -0
- package/node_modules/@llblab/pi-actors/dist/lib/async-runs.js +131 -62
- package/node_modules/@llblab/pi-actors/dist/lib/automatic-review-runtime.d.ts +2 -0
- package/node_modules/@llblab/pi-actors/dist/lib/automatic-review-runtime.js +3 -2
- package/node_modules/@llblab/pi-actors/dist/lib/command-templates.d.ts +37 -0
- package/node_modules/@llblab/pi-actors/dist/lib/command-templates.js +263 -129
- package/node_modules/@llblab/pi-actors/dist/lib/execution-files.d.ts +32 -0
- package/node_modules/@llblab/pi-actors/dist/lib/execution-files.js +128 -0
- package/node_modules/@llblab/pi-actors/dist/lib/execution-output.js +5 -4
- package/node_modules/@llblab/pi-actors/dist/lib/execution-sessions.d.ts +19 -1
- package/node_modules/@llblab/pi-actors/dist/lib/execution-sessions.js +62 -26
- package/node_modules/@llblab/pi-actors/dist/lib/execution.d.ts +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/execution.js +6 -1
- package/node_modules/@llblab/pi-actors/dist/lib/extension-runtime.d.ts +9 -2
- package/node_modules/@llblab/pi-actors/dist/lib/extension-runtime.js +92 -14
- package/node_modules/@llblab/pi-actors/dist/lib/file-state.js +21 -2
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-command.js +2 -2
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-overlay.d.ts +25 -7
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-overlay.js +562 -262
- package/node_modules/@llblab/pi-actors/dist/lib/inspector.d.ts +20 -10
- package/node_modules/@llblab/pi-actors/dist/lib/inspector.js +80 -91
- package/node_modules/@llblab/pi-actors/dist/lib/limits.d.ts +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/limits.js +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/observability.d.ts +15 -1
- package/node_modules/@llblab/pi-actors/dist/lib/observability.js +216 -99
- package/node_modules/@llblab/pi-actors/dist/lib/pi.d.ts +5 -4
- package/node_modules/@llblab/pi-actors/dist/lib/pi.js +64 -10
- package/node_modules/@llblab/pi-actors/dist/lib/recipe-projection.d.ts +18 -0
- package/node_modules/@llblab/pi-actors/dist/lib/recipe-projection.js +220 -0
- package/node_modules/@llblab/pi-actors/dist/lib/recipes-context.d.ts +2 -0
- package/node_modules/@llblab/pi-actors/dist/lib/recipes-context.js +30 -6
- package/node_modules/@llblab/pi-actors/dist/lib/registry.js +270 -36
- package/node_modules/@llblab/pi-actors/dist/lib/run-delivery.d.ts +213 -5
- package/node_modules/@llblab/pi-actors/dist/lib/run-delivery.js +1909 -40
- package/node_modules/@llblab/pi-actors/dist/lib/run-supervision.d.ts +107 -0
- package/node_modules/@llblab/pi-actors/dist/lib/run-supervision.js +412 -0
- package/node_modules/@llblab/pi-actors/dist/lib/run-ui-runtime.d.ts +9 -2
- package/node_modules/@llblab/pi-actors/dist/lib/run-ui-runtime.js +283 -60
- package/node_modules/@llblab/pi-actors/dist/lib/runs-artifacts.d.ts +26 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-artifacts.js +68 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-exports.d.ts +451 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-exports.js +2315 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-index.d.ts +97 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-context-index.js +368 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-control-delivery.js +46 -7
- package/node_modules/@llblab/pi-actors/dist/lib/runs-control.d.ts +78 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-control.js +334 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-controls.js +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-descendant-launches.d.ts +80 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-descendant-launches.js +287 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-execution-evidence.d.ts +110 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-execution-evidence.js +282 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-index.d.ts +66 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-index.js +349 -13
- package/node_modules/@llblab/pi-actors/dist/lib/runs-native-launches.d.ts +73 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-native-launches.js +227 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-outcomes.d.ts +141 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-outcomes.js +292 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-ownership.d.ts +10 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-ownership.js +36 -4
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process-windows-mi.d.ts +46 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process-windows-mi.js +114 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process.d.ts +34 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-process.js +158 -26
- package/node_modules/@llblab/pi-actors/dist/lib/runs-results.d.ts +116 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-results.js +518 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-retention.d.ts +15 -2
- package/node_modules/@llblab/pi-actors/dist/lib/runs-retention.js +148 -9
- package/node_modules/@llblab/pi-actors/dist/lib/runs-session-exports.d.ts +95 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-session-exports.js +470 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-snapshot.d.ts +58 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-snapshot.js +92 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-start.d.ts +2 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-start.js +44 -3
- package/node_modules/@llblab/pi-actors/dist/lib/runs-status.d.ts +15 -1
- package/node_modules/@llblab/pi-actors/dist/lib/runs-status.js +337 -13
- package/node_modules/@llblab/pi-actors/dist/lib/runs-supervision.d.ts +105 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-supervision.js +501 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-trace.d.ts +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/runs-trace.js +14 -3
- package/node_modules/@llblab/pi-actors/dist/lib/runtime.js +22 -3
- package/node_modules/@llblab/pi-actors/dist/lib/session-evidence.d.ts +37 -0
- package/node_modules/@llblab/pi-actors/dist/lib/session-evidence.js +59 -3
- package/node_modules/@llblab/pi-actors/dist/lib/state-readers.d.ts +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/state-readers.js +14 -8
- package/node_modules/@llblab/pi-actors/dist/lib/temp.d.ts +2 -4
- package/node_modules/@llblab/pi-actors/dist/lib/temp.js +4 -56
- package/node_modules/@llblab/pi-actors/dist/lib/tools-access.d.ts +3 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-access.js +13 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-inspect.d.ts +1 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-inspect.js +110 -43
- package/node_modules/@llblab/pi-actors/dist/lib/tools-local.d.ts +3 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-local.js +18 -6
- package/node_modules/@llblab/pi-actors/dist/lib/tools-message.d.ts +4 -1
- package/node_modules/@llblab/pi-actors/dist/lib/tools-message.js +126 -31
- package/node_modules/@llblab/pi-actors/dist/lib/tools-response.d.ts +31 -3
- package/node_modules/@llblab/pi-actors/dist/lib/tools-response.js +311 -47
- package/node_modules/@llblab/pi-actors/dist/lib/tools-spawn.d.ts +3 -0
- package/node_modules/@llblab/pi-actors/dist/lib/tools-spawn.js +29 -7
- package/node_modules/@llblab/pi-actors/dist/lib/trace-projection.d.ts +20 -0
- package/node_modules/@llblab/pi-actors/dist/lib/trace-projection.js +192 -43
- package/node_modules/@llblab/pi-actors/dist/scripts/async-runner.mjs +272 -194
- package/node_modules/@llblab/pi-actors/dist/scripts/conformance.mjs +14 -2
- package/node_modules/@llblab/pi-actors/dist/skills/actors/SKILL.md +46 -2
- package/node_modules/@llblab/pi-actors/dist/skills/actors/references/diagnostics.md +40 -0
- package/node_modules/@llblab/pi-actors/dist/skills/actors/references/runs.md +55 -1
- package/node_modules/@llblab/pi-actors/docs/README.md +9 -1
- package/node_modules/@llblab/pi-actors/docs/actor-inspector.md +84 -15
- package/node_modules/@llblab/pi-actors/docs/agent-experience.md +216 -0
- package/node_modules/@llblab/pi-actors/docs/async-runs.md +18 -2
- package/node_modules/@llblab/pi-actors/docs/composition-transport.md +103 -0
- package/node_modules/@llblab/pi-actors/docs/coordinator-delivery.md +204 -4
- package/node_modules/@llblab/pi-actors/docs/inspection.md +38 -2
- package/node_modules/@llblab/pi-actors/docs/output-projection-map.md +130 -0
- package/node_modules/@llblab/pi-actors/docs/releasing.md +19 -2
- package/node_modules/@llblab/pi-actors/docs/run-supervision.md +1622 -0
- package/node_modules/@llblab/pi-actors/docs/template-recipes.md +4 -0
- package/node_modules/@llblab/pi-actors/docs/windows-process-observation.md +248 -0
- package/node_modules/@llblab/pi-actors/index.ts +1 -1
- package/node_modules/@llblab/pi-actors/lib/async-runs.ts +164 -73
- package/node_modules/@llblab/pi-actors/lib/automatic-review-runtime.ts +4 -2
- package/node_modules/@llblab/pi-actors/lib/command-templates.ts +287 -138
- package/node_modules/@llblab/pi-actors/lib/execution-files.ts +118 -0
- package/node_modules/@llblab/pi-actors/lib/execution-output.ts +4 -4
- package/node_modules/@llblab/pi-actors/lib/execution-sessions.ts +57 -27
- package/node_modules/@llblab/pi-actors/lib/execution.ts +8 -0
- package/node_modules/@llblab/pi-actors/lib/extension-runtime.ts +102 -12
- package/node_modules/@llblab/pi-actors/lib/file-state.ts +16 -2
- package/node_modules/@llblab/pi-actors/lib/inspector-command.ts +2 -2
- package/node_modules/@llblab/pi-actors/lib/inspector-overlay.ts +524 -261
- package/node_modules/@llblab/pi-actors/lib/inspector.ts +101 -130
- package/node_modules/@llblab/pi-actors/lib/limits.ts +1 -0
- package/node_modules/@llblab/pi-actors/lib/observability.ts +235 -116
- package/node_modules/@llblab/pi-actors/lib/pi.ts +59 -11
- package/node_modules/@llblab/pi-actors/lib/recipe-projection.ts +232 -0
- package/node_modules/@llblab/pi-actors/lib/recipes-context.ts +27 -6
- package/node_modules/@llblab/pi-actors/lib/registry.ts +266 -36
- package/node_modules/@llblab/pi-actors/lib/run-delivery.ts +1737 -49
- package/node_modules/@llblab/pi-actors/lib/run-supervision.ts +411 -0
- package/node_modules/@llblab/pi-actors/lib/run-ui-runtime.ts +237 -73
- package/node_modules/@llblab/pi-actors/lib/runs-artifacts.ts +73 -1
- package/node_modules/@llblab/pi-actors/lib/runs-context-exports.ts +1871 -0
- package/node_modules/@llblab/pi-actors/lib/runs-context-index.ts +372 -0
- package/node_modules/@llblab/pi-actors/lib/runs-control-delivery.ts +36 -18
- package/node_modules/@llblab/pi-actors/lib/runs-control.ts +297 -1
- package/node_modules/@llblab/pi-actors/lib/runs-controls.ts +3 -1
- package/node_modules/@llblab/pi-actors/lib/runs-descendant-launches.ts +338 -0
- package/node_modules/@llblab/pi-actors/lib/runs-execution-evidence.ts +302 -0
- package/node_modules/@llblab/pi-actors/lib/runs-index.ts +345 -17
- package/node_modules/@llblab/pi-actors/lib/runs-native-launches.ts +270 -0
- package/node_modules/@llblab/pi-actors/lib/runs-outcomes.ts +377 -0
- package/node_modules/@llblab/pi-actors/lib/runs-ownership.ts +37 -4
- package/node_modules/@llblab/pi-actors/lib/runs-process-windows-mi.ts +113 -0
- package/node_modules/@llblab/pi-actors/lib/runs-process.ts +210 -34
- package/node_modules/@llblab/pi-actors/lib/runs-results.ts +601 -0
- package/node_modules/@llblab/pi-actors/lib/runs-retention.ts +134 -10
- package/node_modules/@llblab/pi-actors/lib/runs-session-exports.ts +406 -0
- package/node_modules/@llblab/pi-actors/lib/runs-snapshot.ts +143 -0
- package/node_modules/@llblab/pi-actors/lib/runs-start.ts +44 -2
- package/node_modules/@llblab/pi-actors/lib/runs-status.ts +252 -10
- package/node_modules/@llblab/pi-actors/lib/runs-supervision.ts +394 -0
- package/node_modules/@llblab/pi-actors/lib/runs-trace.ts +14 -3
- package/node_modules/@llblab/pi-actors/lib/runtime.ts +22 -3
- package/node_modules/@llblab/pi-actors/lib/session-evidence.ts +76 -4
- package/node_modules/@llblab/pi-actors/lib/state-readers.ts +16 -7
- package/node_modules/@llblab/pi-actors/lib/temp.ts +3 -56
- package/node_modules/@llblab/pi-actors/lib/tools-access.ts +13 -0
- package/node_modules/@llblab/pi-actors/lib/tools-inspect.ts +110 -51
- package/node_modules/@llblab/pi-actors/lib/tools-local.ts +37 -24
- package/node_modules/@llblab/pi-actors/lib/tools-message.ts +120 -37
- package/node_modules/@llblab/pi-actors/lib/tools-response.ts +273 -50
- package/node_modules/@llblab/pi-actors/lib/tools-spawn.ts +31 -10
- package/node_modules/@llblab/pi-actors/lib/trace-projection.ts +165 -42
- package/node_modules/@llblab/pi-actors/package.json +10 -6
- package/node_modules/@llblab/pi-actors/scripts/async-runner.mjs +272 -194
- package/node_modules/@llblab/pi-actors/scripts/conformance.mjs +14 -2
- package/node_modules/@llblab/pi-actors/skills/actors/SKILL.md +46 -2
- package/node_modules/@llblab/pi-actors/skills/actors/references/diagnostics.md +40 -0
- package/node_modules/@llblab/pi-actors/skills/actors/references/runs.md +55 -1
- package/node_modules/@llblab/pi-codex-usage/AGENTS.md +2 -2
- package/node_modules/@llblab/pi-codex-usage/CHANGELOG.md +6 -0
- package/node_modules/@llblab/pi-codex-usage/README.md +9 -5
- package/node_modules/@llblab/pi-codex-usage/lib/query.ts +229 -50
- package/node_modules/@llblab/pi-codex-usage/lib/usage.ts +9 -1
- package/node_modules/@llblab/pi-codex-usage/package.json +1 -1
- package/node_modules/yaml/LICENSE +13 -0
- package/node_modules/yaml/README.md +172 -0
- package/node_modules/yaml/bin.mjs +11 -0
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/node_modules/yaml/browser/dist/errors.js +57 -0
- package/node_modules/yaml/browser/dist/index.js +17 -0
- package/node_modules/yaml/browser/dist/log.js +11 -0
- package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/node_modules/yaml/browser/dist/util.js +11 -0
- package/node_modules/yaml/browser/dist/visit.js +233 -0
- package/node_modules/yaml/browser/index.js +5 -0
- package/node_modules/yaml/browser/package.json +3 -0
- package/node_modules/yaml/dist/cli.d.ts +8 -0
- package/node_modules/yaml/dist/cli.mjs +201 -0
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/node_modules/yaml/dist/compose/composer.js +224 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/node_modules/yaml/dist/doc/Document.js +337 -0
- package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/node_modules/yaml/dist/doc/directives.js +178 -0
- package/node_modules/yaml/dist/errors.d.ts +21 -0
- package/node_modules/yaml/dist/errors.js +62 -0
- package/node_modules/yaml/dist/index.d.ts +25 -0
- package/node_modules/yaml/dist/index.js +50 -0
- package/node_modules/yaml/dist/log.d.ts +3 -0
- package/node_modules/yaml/dist/log.js +19 -0
- package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/node_modules/yaml/dist/options.d.ts +350 -0
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/node_modules/yaml/dist/parse/cst.js +112 -0
- package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/node_modules/yaml/dist/parse/parser.js +980 -0
- package/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/node_modules/yaml/dist/public-api.js +107 -0
- package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/node_modules/yaml/dist/schema/tags.js +99 -0
- package/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/node_modules/yaml/dist/test-events.js +134 -0
- package/node_modules/yaml/dist/util.d.ts +16 -0
- package/node_modules/yaml/dist/util.js +28 -0
- package/node_modules/yaml/dist/visit.d.ts +102 -0
- package/node_modules/yaml/dist/visit.js +236 -0
- package/node_modules/yaml/package.json +97 -0
- package/node_modules/yaml/util.js +2 -0
- package/package.json +3 -3
- package/node_modules/@llblab/pi-actors/banner.jpg +0 -0
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-actions.d.ts +0 -16
- package/node_modules/@llblab/pi-actors/dist/lib/inspector-actions.js +0 -57
- package/node_modules/@llblab/pi-actors/lib/inspector-actions.ts +0 -79
|
@@ -5,36 +5,57 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as fs from "node:fs";
|
|
7
7
|
import * as path from "node:path";
|
|
8
|
+
import { observeExecutionFileReference } from "./execution-files.js";
|
|
8
9
|
import * as SessionEvidence from "./session-evidence.js";
|
|
10
|
+
import * as Limits from "./limits.js";
|
|
9
11
|
import { readJsonFileResilient } from "./state-readers.js";
|
|
10
|
-
|
|
11
|
-
if (path.isAbsolute(sessionFile))
|
|
12
|
-
return undefined;
|
|
13
|
-
const sessionsRoot = path.resolve(stateDir, "sessions");
|
|
14
|
-
const resolved = path.resolve(stateDir, sessionFile);
|
|
15
|
-
if (!resolved.startsWith(`${sessionsRoot}${path.sep}`))
|
|
16
|
-
return undefined;
|
|
17
|
-
try {
|
|
18
|
-
const canonicalRoot = fs.realpathSync(sessionsRoot);
|
|
19
|
-
const canonicalFile = fs.realpathSync(resolved);
|
|
20
|
-
return canonicalFile.startsWith(`${canonicalRoot}${path.sep}`)
|
|
21
|
-
? canonicalFile
|
|
22
|
-
: undefined;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
12
|
+
export const EXECUTION_CHRONOLOGY = Symbol("execution-session-chronology");
|
|
28
13
|
export function readExecutionTurns(stateDir) {
|
|
29
|
-
const
|
|
14
|
+
const read = readJsonFileResilient(path.join(stateDir, "execution.json"), {});
|
|
15
|
+
const execution = read.value;
|
|
16
|
+
const basis = "recorded_execution_metadata";
|
|
17
|
+
let reason = read.diagnostics.length ? "source_unavailable" : undefined;
|
|
18
|
+
const metadata = [];
|
|
19
|
+
let metadataBytes = Buffer.byteLength(JSON.stringify({ state: "available", basis, entries: [] }));
|
|
20
|
+
const refuse = (next) => { reason ??= next; metadata.length = 0; };
|
|
21
|
+
const collect = (commandId, sessionFile, frame) => {
|
|
22
|
+
if (reason)
|
|
23
|
+
return;
|
|
24
|
+
if (!frame || frame.state !== "available") {
|
|
25
|
+
refuse(frame?.state === "unavailable" ? frame.reason : "source_unavailable");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (SessionEvidence.redactSessionEvidenceValue(commandId) !== commandId || SessionEvidence.redactSessionEvidenceValue(sessionFile) !== sessionFile) {
|
|
29
|
+
refuse("namespace_unavailable");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
for (const item of frame.entries) {
|
|
33
|
+
const entry = Object.freeze({ ...item, commandId, sessionFile, sessionOrdinal: item.ordinal, ordinal: metadata.length + 1 });
|
|
34
|
+
metadataBytes += Buffer.byteLength(JSON.stringify(entry)) + Number(metadata.length > 0);
|
|
35
|
+
if (metadataBytes > Limits.SESSION_EVIDENCE_MAX_BYTES) {
|
|
36
|
+
refuse("metadata_too_large");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
metadata.push(entry);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
30
42
|
const commands = Array.isArray(execution.commands)
|
|
31
43
|
? execution.commands
|
|
32
44
|
: [];
|
|
45
|
+
if ((execution.commands !== undefined && !Array.isArray(execution.commands)) || commands.some((command) => !command || typeof command !== "object" || Array.isArray(command) ||
|
|
46
|
+
(command.session_files !== undefined && (!Array.isArray(command.session_files) || command.session_files.some((file) => typeof file !== "string")))))
|
|
47
|
+
refuse("source_unavailable");
|
|
33
48
|
const recordedFiles = new Set(commands.flatMap((command) => (Array.isArray(command.session_files) ? command.session_files : []).filter((file) => typeof file === "string")));
|
|
34
49
|
let discoveredCommands = [];
|
|
35
50
|
try {
|
|
36
|
-
const
|
|
37
|
-
|
|
51
|
+
const state = path.resolve(stateDir);
|
|
52
|
+
const sessionsDir = path.join(state, "sessions");
|
|
53
|
+
const root = fs.lstatSync(state);
|
|
54
|
+
const rootObserved = root.isDirectory() && !root.isSymbolicLink();
|
|
55
|
+
const namespace = fs.lstatSync(sessionsDir, { throwIfNoEntry: false });
|
|
56
|
+
if (!rootObserved || (namespace && (!namespace.isDirectory() || namespace.isSymbolicLink())))
|
|
57
|
+
refuse("source_unavailable");
|
|
58
|
+
discoveredCommands = rootObserved && namespace?.isDirectory() && !namespace.isSymbolicLink() ? fs
|
|
38
59
|
.readdirSync(sessionsDir, { withFileTypes: true })
|
|
39
60
|
.filter((entry) => entry.isDirectory())
|
|
40
61
|
.flatMap((entry) => {
|
|
@@ -48,19 +69,30 @@ export function readExecutionTurns(stateDir) {
|
|
|
48
69
|
return files.length > 0
|
|
49
70
|
? [{ id: entry.name, session_files: files, stage: "subagent" }]
|
|
50
71
|
: [];
|
|
51
|
-
});
|
|
72
|
+
}) : [];
|
|
52
73
|
}
|
|
53
74
|
catch {
|
|
75
|
+
refuse("source_unavailable");
|
|
54
76
|
discoveredCommands = [];
|
|
55
77
|
}
|
|
56
|
-
|
|
78
|
+
const turns = [...commands, ...discoveredCommands]
|
|
57
79
|
.flatMap((command) => (Array.isArray(command.session_files) ? command.session_files : [])
|
|
58
80
|
.filter((file) => typeof file === "string")
|
|
59
81
|
.flatMap((file) => {
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
82
|
+
const reference = observeExecutionFileReference(stateDir, { kind: "session", path: file });
|
|
83
|
+
if (reference.availability !== "available") {
|
|
84
|
+
refuse("source_unavailable");
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
const session = SessionEvidence.readSessionEvidence(reference.local_path);
|
|
88
|
+
if (!reference.unchanged()) {
|
|
89
|
+
refuse("source_changed");
|
|
62
90
|
return [];
|
|
63
|
-
|
|
91
|
+
}
|
|
92
|
+
if (typeof command.id !== "string" || !command.id)
|
|
93
|
+
refuse("namespace_unavailable");
|
|
94
|
+
else
|
|
95
|
+
collect(command.id, file, session[SessionEvidence.SESSION_EVIDENCE_CHRONOLOGY]);
|
|
64
96
|
return session.turns.map((turn) => ({
|
|
65
97
|
...turn,
|
|
66
98
|
commandId: String(command.id ?? "unknown"),
|
|
@@ -82,4 +114,8 @@ export function readExecutionTurns(stateDir) {
|
|
|
82
114
|
}));
|
|
83
115
|
}))
|
|
84
116
|
.map((turn, index) => ({ ...turn, index: index + 1 }));
|
|
117
|
+
Object.defineProperty(turns, EXECUTION_CHRONOLOGY, { value: Object.freeze(reason
|
|
118
|
+
? { state: "unavailable", basis, reason, entries: Object.freeze([]) }
|
|
119
|
+
: { state: "available", basis, entries: Object.freeze(metadata) }) });
|
|
120
|
+
return turns;
|
|
85
121
|
}
|
|
@@ -96,4 +96,7 @@ export interface RegisteredToolExecutionResult {
|
|
|
96
96
|
}
|
|
97
97
|
export type RegisteredToolExec = (command: string, args: string[], options?: ToolExecOptions) => Promise<ToolExecResult>;
|
|
98
98
|
export declare function applyOutputAcceptancePolicy(result: ToolExecResult, output: string | undefined): Promise<ToolExecResult>;
|
|
99
|
-
export declare function executeRegisteredTool(cfg: RegisteredTool, params: Record<string, unknown>, exec: RegisteredToolExec, cwd: string, signal?: AbortSignal
|
|
99
|
+
export declare function executeRegisteredTool(cfg: RegisteredTool, params: Record<string, unknown>, exec: RegisteredToolExec, cwd: string, signal?: AbortSignal, kernel?: {
|
|
100
|
+
readonly onPrimaryCommandSelected?: (result: Readonly<ToolExecResult>) => void | Promise<void>;
|
|
101
|
+
readonly onFinalResponseSelected?: (text: string, upstreamTruncated: boolean) => void | Promise<void>;
|
|
102
|
+
}): Promise<RegisteredToolExecutionResult>;
|
|
@@ -674,7 +674,7 @@ function getCaptureDetails(result) {
|
|
|
674
674
|
...(result.stderrTruncated ? { stderrTruncated: true } : {}),
|
|
675
675
|
};
|
|
676
676
|
}
|
|
677
|
-
export async function executeRegisteredTool(cfg, params, exec, cwd, signal) {
|
|
677
|
+
export async function executeRegisteredTool(cfg, params, exec, cwd, signal, kernel) {
|
|
678
678
|
const executed = await executeTemplateSteps(cfg, Schema.normalizeRuntimeValues(params, cfg.argTypes), exec, cwd, signal);
|
|
679
679
|
const command = formatCommandDetail(executed.commands);
|
|
680
680
|
const result = executed.result;
|
|
@@ -700,6 +700,11 @@ export async function executeRegisteredTool(cfg, params, exec, cwd, signal) {
|
|
|
700
700
|
},
|
|
701
701
|
});
|
|
702
702
|
}
|
|
703
|
+
// Only the plain successful leaf is admitted initially; compositions/acceptance policies are separate contracts.
|
|
704
|
+
if (typeof cfg.template === "string" && executed.commands.length === 1 && !executed.failures.length) {
|
|
705
|
+
await kernel?.onPrimaryCommandSelected?.(result);
|
|
706
|
+
}
|
|
707
|
+
await kernel?.onFinalResponseSelected?.(result.stdout, result.stdoutTruncated === true || executed.branches.some(branch => branch.status !== "done" && (branch.stderrTruncated === true || branch.stderrBytes > Buffer.byteLength(branch.stderr ?? ""))));
|
|
703
708
|
const formatted = formatOutput(cfg.name, "stdout", result.stdout);
|
|
704
709
|
const templateWarnings = CommandTemplates.getCommandTemplateWarnings(createTemplateConfig(cfg));
|
|
705
710
|
return {
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as Pi from "./pi.ts";
|
|
7
7
|
import * as RecipesReferences from "./recipes-references.ts";
|
|
8
|
+
import * as RunUiRuntime from "./run-ui-runtime.ts";
|
|
9
|
+
import { type RunSupervisionOwnerSnapshotReading } from "./runs-supervision.ts";
|
|
10
|
+
import type { RunSupervisionControllerPorts } from "./run-supervision.ts";
|
|
11
|
+
import type { AsyncRunStartOptions } from "./async-runs.ts";
|
|
8
12
|
export interface ActorExtensionRuntime {
|
|
9
13
|
beforeAgentStart(systemPrompt: string, skills: RecipesReferences.ActiveSkillRecipeSource[], ctx: Pi.ExtensionContext): {
|
|
10
14
|
systemPrompt: string;
|
|
@@ -17,7 +21,10 @@ export interface ActorExtensionRuntime {
|
|
|
17
21
|
onTurnEnd(event: Pi.TurnEndEvent, ctx: Pi.ExtensionContext): Pi.TurnEndEventResult | undefined;
|
|
18
22
|
onContext(messages: unknown[], ctx: Pi.ExtensionContext): unknown[];
|
|
19
23
|
onSessionShutdown(reason: string, ctx: Pi.ExtensionContext): void;
|
|
20
|
-
onSessionStart(ctx: Pi.ExtensionContext): Promise<void>;
|
|
24
|
+
onSessionStart(ctx: Pi.ExtensionContext, event?: Pi.SessionStartEvent): Promise<void>;
|
|
21
25
|
registerCoreTools(): void;
|
|
26
|
+
/** Private kernel observation only; no public tool route or reconstructed origin. */
|
|
27
|
+
observeRunSnapshot(expected: unknown, capturedAt: unknown, stateDir?: string): Readonly<RunSupervisionOwnerSnapshotReading>;
|
|
28
|
+
getRunAdmissionObserver(ctx: Pi.ExtensionContext): AsyncRunStartOptions["onSupervisionClockCaptured"];
|
|
22
29
|
}
|
|
23
|
-
export declare function createActorExtensionRuntime(pi: Pi.ExtensionAPI): ActorExtensionRuntime;
|
|
30
|
+
export declare function createActorExtensionRuntime(pi: Pi.ExtensionAPI, supervisionPorts?: Omit<RunSupervisionControllerPorts, "readCurrent">, completionStreamSessionAdmission?: RunUiRuntime.RunUiRuntimeDeps["completionStreamSessionAdmission"], captureCompletionBatch?: RunUiRuntime.RunUiRuntimeDeps["captureCompletionBatch"]): ActorExtensionRuntime;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Zones: extension session lifecycle, host tool adaptation, runtime service composition
|
|
4
4
|
* Owns low-level Pi lifecycle effects and tool wrapping without owning event registration.
|
|
5
5
|
*/
|
|
6
|
+
import { join } from "node:path";
|
|
6
7
|
import * as AutomaticReviewRuntime from "./automatic-review-runtime.js";
|
|
7
8
|
import * as CommandTemplates from "./command-templates.js";
|
|
8
9
|
import * as Paths from "./paths.js";
|
|
@@ -13,14 +14,38 @@ import * as RecipesReferences from "./recipes-references.js";
|
|
|
13
14
|
import * as RunUiRuntime from "./run-ui-runtime.js";
|
|
14
15
|
import * as Runtime from "./runtime.js";
|
|
15
16
|
import * as Temp from "./temp.js";
|
|
17
|
+
import * as RunRetention from "./runs-retention.js";
|
|
16
18
|
import * as Tools from "./tools.js";
|
|
17
19
|
import * as ToolsResponse from "./tools-response.js";
|
|
18
|
-
|
|
20
|
+
import { createRunSupervisionOwner, } from "./runs-supervision.js";
|
|
21
|
+
export function createActorExtensionRuntime(pi, supervisionPorts, completionStreamSessionAdmission, captureCompletionBatch) {
|
|
19
22
|
let activeRunContext;
|
|
20
23
|
let activeRunOwnerId;
|
|
21
|
-
|
|
24
|
+
let sessionStartTicket;
|
|
25
|
+
let parentSession;
|
|
26
|
+
const parentSessionsByContext = new WeakMap();
|
|
27
|
+
const seenParentManagers = new WeakSet();
|
|
22
28
|
const recipeResolutionContextsBySession = new Map();
|
|
23
29
|
const getRunOwnerId = Pi.getSessionId;
|
|
30
|
+
let supervision;
|
|
31
|
+
const closeSupervision = () => {
|
|
32
|
+
const scope = supervision;
|
|
33
|
+
supervision = undefined;
|
|
34
|
+
scope?.owner.close();
|
|
35
|
+
};
|
|
36
|
+
const getRunAdmissionObserver = (ctx) => {
|
|
37
|
+
if (!supervisionPorts)
|
|
38
|
+
return undefined;
|
|
39
|
+
const scope = supervision;
|
|
40
|
+
const sessionManager = ctx.sessionManager;
|
|
41
|
+
const ownerId = sessionManager.getSessionId();
|
|
42
|
+
return capture => {
|
|
43
|
+
if (!scope || supervision !== scope || !scope.ready || scope.sessionManager !== sessionManager || scope.ownerId !== ownerId || capture.identity.ownerId !== ownerId) {
|
|
44
|
+
throw new Error("Run supervision coordinator admission is unavailable or changed.");
|
|
45
|
+
}
|
|
46
|
+
scope.owner.onSupervisionClockCaptured(capture);
|
|
47
|
+
};
|
|
48
|
+
};
|
|
24
49
|
const getRecipeResolutionContext = (ctx) => {
|
|
25
50
|
const sessionId = getRunOwnerId(ctx);
|
|
26
51
|
const resolutionContext = recipeResolutionContextsBySession.get(sessionId);
|
|
@@ -33,6 +58,7 @@ export function createActorExtensionRuntime(pi) {
|
|
|
33
58
|
getActiveContext: () => activeRunContext,
|
|
34
59
|
getRunOwnerId,
|
|
35
60
|
getThinkingLevel: () => pi.getThinkingLevel(),
|
|
61
|
+
getRunAdmissionObserver,
|
|
36
62
|
});
|
|
37
63
|
let recipeReload;
|
|
38
64
|
let runUiRuntime;
|
|
@@ -40,13 +66,17 @@ export function createActorExtensionRuntime(pi) {
|
|
|
40
66
|
const ownerId = activeRunOwnerId;
|
|
41
67
|
activeRunContext = undefined;
|
|
42
68
|
activeRunOwnerId = undefined;
|
|
69
|
+
sessionStartTicket = undefined;
|
|
43
70
|
runUiRuntime?.close();
|
|
44
71
|
automaticReview.close();
|
|
45
72
|
recipeReload?.close();
|
|
46
73
|
if (ownerId)
|
|
47
74
|
recipeResolutionContextsBySession.delete(ownerId);
|
|
48
75
|
};
|
|
76
|
+
RunUiRuntime.registerRunCompletionRenderer(pi);
|
|
49
77
|
runUiRuntime = RunUiRuntime.createRunUiRuntime({
|
|
78
|
+
completionStreamSessionAdmission,
|
|
79
|
+
captureCompletionBatch,
|
|
50
80
|
getActiveContext: () => activeRunContext,
|
|
51
81
|
onCallbackError: closeActiveSessionRuntimes,
|
|
52
82
|
onRunEvent: automaticReview.schedule,
|
|
@@ -67,6 +97,7 @@ export function createActorExtensionRuntime(pi) {
|
|
|
67
97
|
...ctx,
|
|
68
98
|
recipeResolutionContext: getRecipeResolutionContext(ctx),
|
|
69
99
|
getThinkingLevel: () => pi.getThinkingLevel(),
|
|
100
|
+
onSupervisionClockCaptured: getRunAdmissionObserver(ctx),
|
|
70
101
|
};
|
|
71
102
|
}
|
|
72
103
|
try {
|
|
@@ -112,7 +143,13 @@ export function createActorExtensionRuntime(pi) {
|
|
|
112
143
|
return skillPaths.length > 0 ? { skillPaths } : undefined;
|
|
113
144
|
},
|
|
114
145
|
getRunOwnerId,
|
|
146
|
+
getRunAdmissionObserver,
|
|
147
|
+
observeRunSnapshot(expected, capturedAt, stateDir) {
|
|
148
|
+
return supervision?.owner.observeSnapshot(expected, capturedAt, stateDir) ?? Object.freeze({ state: "unavailable", reason: "origin_not_retained" });
|
|
149
|
+
},
|
|
115
150
|
onAgentSettled(ctx) {
|
|
151
|
+
if ((completionStreamSessionAdmission || captureCompletionBatch) && !runUiRuntime.isCurrentSessionContext(ctx))
|
|
152
|
+
return;
|
|
116
153
|
if (!activeRunOwnerId || getRunOwnerId(ctx) !== activeRunOwnerId)
|
|
117
154
|
return;
|
|
118
155
|
if (!runUiRuntime.flushCompletionBatch(ctx))
|
|
@@ -125,29 +162,70 @@ export function createActorExtensionRuntime(pi) {
|
|
|
125
162
|
return runUiRuntime.projectContext(messages, ctx);
|
|
126
163
|
},
|
|
127
164
|
onSessionShutdown(reason, ctx) {
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (
|
|
133
|
-
|
|
134
|
-
|
|
165
|
+
const scope = parentSession;
|
|
166
|
+
if (!scope?.shutdownAdmitted)
|
|
167
|
+
return;
|
|
168
|
+
const known = parentSessionsByContext.get(ctx);
|
|
169
|
+
if (known && known !== scope)
|
|
170
|
+
return;
|
|
171
|
+
if (!known) {
|
|
172
|
+
try {
|
|
173
|
+
if (ctx.sessionManager !== scope.sessionManager || scope.sessionManager.getSessionId() !== scope.ownerId)
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return; /* Unknown invalidated wrappers cannot identify this lifetime. */
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (parentSession !== scope)
|
|
181
|
+
return;
|
|
182
|
+
// Consume before cleanup/teardown: stale or reentrant callbacks cannot stop a replacement.
|
|
183
|
+
scope.shutdownAdmitted = false;
|
|
184
|
+
parentSessionsByContext.set(ctx, scope);
|
|
185
|
+
closeSupervision();
|
|
186
|
+
if (parentSession !== scope)
|
|
187
|
+
return;
|
|
188
|
+
closeActiveSessionRuntimes();
|
|
189
|
+
if (parentSession !== scope)
|
|
190
|
+
return;
|
|
191
|
+
recipeResolutionContextsBySession.delete(scope.ownerId);
|
|
192
|
+
runUiRuntime.shutdown(reason, scope.ownerId, ctx);
|
|
135
193
|
},
|
|
136
|
-
async onSessionStart(ctx) {
|
|
137
|
-
const
|
|
194
|
+
async onSessionStart(ctx, event) {
|
|
195
|
+
const ticket = {};
|
|
196
|
+
sessionStartTicket = ticket;
|
|
197
|
+
parentSession = undefined;
|
|
198
|
+
const sessionManager = ctx.sessionManager;
|
|
199
|
+
const sessionId = sessionManager.getSessionId();
|
|
200
|
+
if (sessionStartTicket !== ticket)
|
|
201
|
+
return;
|
|
202
|
+
const scopeBinding = { ownerId: sessionId, sessionManager,
|
|
203
|
+
shutdownAdmitted: !seenParentManagers.has(sessionManager) && !parentSessionsByContext.has(ctx) };
|
|
204
|
+
seenParentManagers.add(sessionManager);
|
|
205
|
+
if (!parentSessionsByContext.has(ctx))
|
|
206
|
+
parentSessionsByContext.set(ctx, scopeBinding);
|
|
207
|
+
parentSession = scopeBinding;
|
|
208
|
+
closeSupervision();
|
|
138
209
|
recipeResolutionContextsBySession.set(sessionId, RecipeResolution.createEmptyRecipeResolutionContext(sessionId, ctx.cwd));
|
|
139
210
|
ctx.ui.setWidget("zz-pi-actors-comms", undefined);
|
|
140
211
|
activeRunContext = ctx;
|
|
141
212
|
activeRunOwnerId = sessionId;
|
|
142
|
-
runOwnerIdsByContext.set(ctx, sessionId);
|
|
143
213
|
runUiRuntime.close();
|
|
144
214
|
automaticReview.close();
|
|
145
215
|
recipeReload.close();
|
|
216
|
+
const scope = supervisionPorts ? {
|
|
217
|
+
context: ctx, ownerId: sessionId, owner: createRunSupervisionOwner(supervisionPorts),
|
|
218
|
+
ready: false, sessionManager,
|
|
219
|
+
} : undefined;
|
|
220
|
+
supervision = scope;
|
|
146
221
|
await Temp.prepareExtensionTempDir(Paths.EXTENSION_RUNTIME_PATHS.tempDir);
|
|
147
|
-
|
|
222
|
+
await RunRetention.cleanupStaleRunEntries(join(Paths.EXTENSION_RUNTIME_PATHS.tempDir, "runs"));
|
|
223
|
+
if (sessionStartTicket !== ticket || activeRunContext !== ctx || activeRunOwnerId !== sessionId || supervision !== scope)
|
|
148
224
|
return;
|
|
225
|
+
if (scope)
|
|
226
|
+
scope.ready = true;
|
|
149
227
|
automaticReview.start(ctx);
|
|
150
|
-
runUiRuntime.start(ctx, sessionId);
|
|
228
|
+
runUiRuntime.start(ctx, sessionId, event);
|
|
151
229
|
recipeReload.watch(ctx);
|
|
152
230
|
},
|
|
153
231
|
registerCoreTools() {
|
|
@@ -266,11 +266,24 @@ export function acquireFileMutationLock(path, options = {}) {
|
|
|
266
266
|
}
|
|
267
267
|
export function withFileMutationLock(path, mutate, options = {}) {
|
|
268
268
|
const release = acquireFileMutationLock(path, options);
|
|
269
|
+
let mutationFailed = false, mutationFailure;
|
|
269
270
|
try {
|
|
270
271
|
return mutate();
|
|
271
272
|
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
mutationFailed = true;
|
|
275
|
+
mutationFailure = error;
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
272
278
|
finally {
|
|
273
|
-
|
|
279
|
+
try {
|
|
280
|
+
release();
|
|
281
|
+
}
|
|
282
|
+
catch (releaseError) {
|
|
283
|
+
if (mutationFailed)
|
|
284
|
+
throw new AggregateError([mutationFailure, releaseError], "File mutation callback and lock release failed; effects may already exist.", { cause: mutationFailure });
|
|
285
|
+
throw releaseError;
|
|
286
|
+
}
|
|
274
287
|
}
|
|
275
288
|
}
|
|
276
289
|
function replaceFileWithRetry(source, target) {
|
|
@@ -280,7 +293,13 @@ function replaceFileWithRetry(source, target) {
|
|
|
280
293
|
return;
|
|
281
294
|
}
|
|
282
295
|
catch (error) {
|
|
283
|
-
|
|
296
|
+
let code;
|
|
297
|
+
try {
|
|
298
|
+
code = error?.code;
|
|
299
|
+
}
|
|
300
|
+
catch (observationError) {
|
|
301
|
+
throw new AggregateError([error, observationError], "File replacement failed and retry-code inspection also failed; effects may already exist.", { cause: error });
|
|
302
|
+
}
|
|
284
303
|
if ((code !== "EPERM" && code !== "EBUSY") || attempt >= 19)
|
|
285
304
|
throw error;
|
|
286
305
|
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 50);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Owns host-facing Inspector launch wiring without owning Inspector state or actions.
|
|
5
5
|
*/
|
|
6
6
|
import * as AsyncRuns from "./async-runs.js";
|
|
7
|
-
import * as
|
|
7
|
+
import * as Inspector from "./inspector.js";
|
|
8
8
|
import * as InspectorOverlay from "./inspector-overlay.js";
|
|
9
9
|
import * as Paths from "./paths.js";
|
|
10
10
|
export function registerActorInspectorCommand(pi, getRunOwnerId) {
|
|
@@ -14,7 +14,7 @@ export function registerActorInspectorCommand(pi, getRunOwnerId) {
|
|
|
14
14
|
ctx.ui.setWidget("zz-pi-actors-comms", undefined);
|
|
15
15
|
await ctx.ui.custom((tui, theme, _keybindings, done) => new InspectorOverlay.ActorInspectorOverlay({
|
|
16
16
|
done,
|
|
17
|
-
killRun: (run, runInstanceId) =>
|
|
17
|
+
killRun: (run, runInstanceId) => Inspector.killOwnedRunFromInspector(getRunOwnerId(ctx), run, Paths.EXTENSION_RUNTIME_PATHS.runStateRoot, runInstanceId, {
|
|
18
18
|
getRunStatus: AsyncRuns.getRunStatus,
|
|
19
19
|
killRun: AsyncRuns.killRun,
|
|
20
20
|
}),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Zones: owned actor selection, Recipe/Trace/Control tabs, safe Run Kill confirmation
|
|
4
4
|
* Owns manual kernel navigation; evidence parsing and lifecycle mutation stay in ports.
|
|
5
5
|
*/
|
|
6
|
-
import type
|
|
6
|
+
import { type Theme } from "@earendil-works/pi-coding-agent";
|
|
7
7
|
import { type TUI } from "@earendil-works/pi-tui";
|
|
8
8
|
import * as ActorInspector from "./inspector.ts";
|
|
9
9
|
import * as TraceProjection from "./trace-projection.ts";
|
|
@@ -37,12 +37,20 @@ export declare class ActorInspectorOverlay {
|
|
|
37
37
|
private documentScroll;
|
|
38
38
|
private detailScroll;
|
|
39
39
|
private feedback?;
|
|
40
|
+
private feedbackFromAction;
|
|
41
|
+
private feedbackScroll;
|
|
42
|
+
private feedbackPageRows;
|
|
43
|
+
private inspectorFrame?;
|
|
40
44
|
private focus;
|
|
41
45
|
private killConfirmation?;
|
|
42
46
|
private killDialogChoice;
|
|
47
|
+
private killDialogScroll;
|
|
48
|
+
private killDialogPageRows;
|
|
43
49
|
private rowIndex;
|
|
44
50
|
private runCache?;
|
|
45
51
|
private selectedTraceId?;
|
|
52
|
+
private controlCache?;
|
|
53
|
+
private controlSelection?;
|
|
46
54
|
private runIndex;
|
|
47
55
|
private selectorIndex;
|
|
48
56
|
private selectorMode?;
|
|
@@ -55,6 +63,7 @@ export declare class ActorInspectorOverlay {
|
|
|
55
63
|
invalidate(): void;
|
|
56
64
|
handleInput(data: string): void;
|
|
57
65
|
render(width: number): string[];
|
|
66
|
+
private renderInspector;
|
|
58
67
|
private get tab();
|
|
59
68
|
private runs;
|
|
60
69
|
private contentViewportRows;
|
|
@@ -71,25 +80,34 @@ export declare class ActorInspectorOverlay {
|
|
|
71
80
|
private renderRunControl;
|
|
72
81
|
private renderTabs;
|
|
73
82
|
private renderContent;
|
|
83
|
+
private modalUnderlay;
|
|
84
|
+
private compositePopup;
|
|
85
|
+
private popupLayout;
|
|
86
|
+
private renderFeedbackPopup;
|
|
87
|
+
private closureWarning;
|
|
74
88
|
private renderSelector;
|
|
75
89
|
private runSelectorOptions;
|
|
76
90
|
private renderMenuBox;
|
|
91
|
+
private traceTableLine;
|
|
77
92
|
private renderTraceList;
|
|
78
93
|
private renderTraceDetail;
|
|
94
|
+
private agentDetailSegments;
|
|
95
|
+
private metadataText;
|
|
96
|
+
private agentDetailProjection;
|
|
79
97
|
private controlDocument;
|
|
98
|
+
private controlObservation;
|
|
99
|
+
private selectedControl;
|
|
100
|
+
private openControlList;
|
|
101
|
+
private handleControlInput;
|
|
102
|
+
private renderControlContent;
|
|
80
103
|
private allTraceItems;
|
|
81
104
|
private traceSources;
|
|
82
105
|
private traceSource;
|
|
83
106
|
private traceItems;
|
|
84
107
|
private readRunMeta;
|
|
85
108
|
private documentProjection;
|
|
86
|
-
private inlineDocumentValue;
|
|
87
|
-
private labeledDocumentLines;
|
|
88
|
-
private labeledScalarLines;
|
|
89
|
-
private document;
|
|
90
109
|
private wrapDocument;
|
|
91
|
-
private
|
|
92
|
-
private visiblePrefix;
|
|
110
|
+
private keyHints;
|
|
93
111
|
private renderKeyHints;
|
|
94
112
|
private statusColor;
|
|
95
113
|
private footerBorder;
|