@llblab/pi-kit 0.38.4 → 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 +5 -0
- package/README.md +1 -1
- 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/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 +2 -2
- 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
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* Owns read-only normalization of session JSONL into inspector-ready turns.
|
|
5
5
|
*/
|
|
6
6
|
import { type StateReadDiagnostic } from "./state-readers.ts";
|
|
7
|
+
interface SessionEntry {
|
|
8
|
+
id?: unknown;
|
|
9
|
+
message?: unknown;
|
|
10
|
+
parentId?: unknown;
|
|
11
|
+
timestamp?: unknown;
|
|
12
|
+
type?: unknown;
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
}
|
|
7
15
|
export interface SessionEvidenceToolCall {
|
|
8
16
|
arguments?: unknown;
|
|
9
17
|
id: string;
|
|
@@ -11,7 +19,16 @@ export interface SessionEvidenceToolCall {
|
|
|
11
19
|
result?: unknown;
|
|
12
20
|
resultError?: boolean;
|
|
13
21
|
}
|
|
22
|
+
export declare const SESSION_TURN_IDENTITY: unique symbol;
|
|
23
|
+
interface SessionTurnIdentity {
|
|
24
|
+
basis: "entry" | "record";
|
|
25
|
+
entryId?: string;
|
|
26
|
+
sessionId?: string;
|
|
27
|
+
role: "assistant" | "user";
|
|
28
|
+
ordinal?: number;
|
|
29
|
+
}
|
|
14
30
|
export interface SessionEvidenceTurn {
|
|
31
|
+
[SESSION_TURN_IDENTITY]?: Readonly<SessionTurnIdentity>;
|
|
15
32
|
assistantEntryId?: string;
|
|
16
33
|
assistantText?: string;
|
|
17
34
|
error?: string;
|
|
@@ -27,7 +44,24 @@ export interface SessionEvidenceTurn {
|
|
|
27
44
|
userEntryId?: string;
|
|
28
45
|
userText?: string;
|
|
29
46
|
}
|
|
47
|
+
export declare const SESSION_EVIDENCE_CHRONOLOGY: unique symbol;
|
|
48
|
+
export interface SessionChronologyEntry {
|
|
49
|
+
ordinal: number;
|
|
50
|
+
timestamp: string;
|
|
51
|
+
identity: Readonly<SessionTurnIdentity>;
|
|
52
|
+
}
|
|
53
|
+
export type SessionChronologyReason = "source_unavailable" | "identity_unavailable" | "timestamp_unavailable" | "metadata_too_large";
|
|
54
|
+
export type SessionChronology = Readonly<{
|
|
55
|
+
basis: "recorded_branch_metadata";
|
|
56
|
+
entries: readonly Readonly<SessionChronologyEntry>[];
|
|
57
|
+
} & ({
|
|
58
|
+
state: "available";
|
|
59
|
+
} | {
|
|
60
|
+
state: "unavailable";
|
|
61
|
+
reason: SessionChronologyReason;
|
|
62
|
+
})>;
|
|
30
63
|
export interface SessionEvidence {
|
|
64
|
+
[SESSION_EVIDENCE_CHRONOLOGY]?: SessionChronology;
|
|
31
65
|
activeLeafId?: string;
|
|
32
66
|
diagnostics: StateReadDiagnostic[];
|
|
33
67
|
path: string;
|
|
@@ -59,4 +93,7 @@ export interface ActiveSessionEntryEvidenceInput {
|
|
|
59
93
|
/** Walk only the active parent chain under exact entry and byte ceilings. */
|
|
60
94
|
export declare function inspectBoundedActiveSessionEntries(input: ActiveSessionEntryEvidenceInput): ActiveSessionEntryEvidence;
|
|
61
95
|
export declare function redactSessionEvidenceValue(value: unknown, maxTextChars?: number, seen?: WeakSet<object>): unknown;
|
|
96
|
+
/** Physical last-leaf ancestry, not current model context or a claim about a live SessionManager leaf. */
|
|
97
|
+
export declare function selectLastRecordedSessionBranch(entries: SessionEntry[], path: string, diagnostics: StateReadDiagnostic[]): SessionEntry[];
|
|
62
98
|
export declare function readSessionEvidence(path: string, options?: SessionEvidenceReadOptions): SessionEvidence;
|
|
99
|
+
export {};
|
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as Limits from "./limits.js";
|
|
7
7
|
import { readJsonlFileResilient, } from "./state-readers.js";
|
|
8
|
+
// Non-JSON provenance data. The enumerable Symbol survives turn copies; it grants no source/lifecycle authority.
|
|
9
|
+
export const SESSION_TURN_IDENTITY = Symbol("session-turn-identity");
|
|
10
|
+
export const SESSION_EVIDENCE_CHRONOLOGY = Symbol("session-evidence-chronology");
|
|
8
11
|
const SENSITIVE_KEY = /(?:^|[_-])(?:api[-_]?key|authorization|cookie|credential|password|private[-_]?key|secret|secret[-_]?access[-_]?key|token)$|^(?:access|refresh|auth|api)Token$|^(?:clientSecret|privateKey|secretAccessKey)$/i;
|
|
9
12
|
function boundedJsonStringBytes(value) {
|
|
10
13
|
let bytes = Buffer.byteLength(value, "utf8") + 2;
|
|
@@ -206,7 +209,8 @@ function contentText(message, type, maxChars) {
|
|
|
206
209
|
.join("\n");
|
|
207
210
|
return boundedText(text, maxChars);
|
|
208
211
|
}
|
|
209
|
-
|
|
212
|
+
/** Physical last-leaf ancestry, not current model context or a claim about a live SessionManager leaf. */
|
|
213
|
+
export function selectLastRecordedSessionBranch(entries, path, diagnostics) {
|
|
210
214
|
const treeEntries = entries.filter((entry) => entry.type !== "session" && typeof entry.id === "string");
|
|
211
215
|
const leaf = treeEntries.at(-1);
|
|
212
216
|
if (!leaf || typeof leaf.id !== "string")
|
|
@@ -247,6 +251,31 @@ function toolCalls(message, maxTextChars, maxToolCalls) {
|
|
|
247
251
|
name: String(block.name),
|
|
248
252
|
}));
|
|
249
253
|
}
|
|
254
|
+
function sessionChronology(turns, sourceAvailable) {
|
|
255
|
+
const basis = "recorded_branch_metadata";
|
|
256
|
+
const unavailable = (reason) => Object.freeze({
|
|
257
|
+
state: "unavailable", basis, reason, entries: Object.freeze([]),
|
|
258
|
+
});
|
|
259
|
+
if (!sourceAvailable)
|
|
260
|
+
return unavailable("source_unavailable");
|
|
261
|
+
const entries = [];
|
|
262
|
+
let bytes = Buffer.byteLength(JSON.stringify({ state: "available", basis, entries: [] }));
|
|
263
|
+
for (const turn of turns) {
|
|
264
|
+
const identity = turn[SESSION_TURN_IDENTITY];
|
|
265
|
+
if (identity?.basis !== "entry")
|
|
266
|
+
return unavailable("identity_unavailable");
|
|
267
|
+
const timestamp = turn.timestamp;
|
|
268
|
+
if (typeof timestamp !== "string" || timestamp.length !== 24 || !Number.isFinite(Date.parse(timestamp)) ||
|
|
269
|
+
new Date(timestamp).toISOString() !== timestamp || redactSessionEvidenceValue(timestamp) !== timestamp)
|
|
270
|
+
return unavailable("timestamp_unavailable");
|
|
271
|
+
const entry = Object.freeze({ ordinal: turn.index, timestamp, identity });
|
|
272
|
+
bytes += Buffer.byteLength(JSON.stringify(entry)) + Number(entries.length > 0);
|
|
273
|
+
if (bytes > Limits.SESSION_EVIDENCE_MAX_BYTES)
|
|
274
|
+
return unavailable("metadata_too_large");
|
|
275
|
+
entries.push(entry);
|
|
276
|
+
}
|
|
277
|
+
return Object.freeze({ state: "available", basis, entries: Object.freeze(entries) });
|
|
278
|
+
}
|
|
250
279
|
export function readSessionEvidence(path, options = {}) {
|
|
251
280
|
const maxBytes = Math.max(1, options.maxBytes ?? Limits.SESSION_EVIDENCE_MAX_BYTES);
|
|
252
281
|
const maxTextChars = Math.max(1, options.maxTextChars ?? Limits.SESSION_EVIDENCE_TEXT_CHARS);
|
|
@@ -255,7 +284,27 @@ export function readSessionEvidence(path, options = {}) {
|
|
|
255
284
|
const read = readJsonlFileResilient(path, { maxBytes });
|
|
256
285
|
const diagnostics = [...read.diagnostics];
|
|
257
286
|
const header = read.records.find((entry) => entry.type === "session");
|
|
258
|
-
const branch =
|
|
287
|
+
const branch = selectLastRecordedSessionBranch(read.records, path, diagnostics);
|
|
288
|
+
const ordinals = new Map(branch.map(entry => [entry, 0]));
|
|
289
|
+
const idCounts = new Map(branch.map(entry => [String(entry.id), 0]));
|
|
290
|
+
let sessionHeaders = 0;
|
|
291
|
+
for (const [index, entry] of read.records.entries()) {
|
|
292
|
+
if (entry.type === "session")
|
|
293
|
+
sessionHeaders++;
|
|
294
|
+
if (ordinals.has(entry))
|
|
295
|
+
ordinals.set(entry, index + 1);
|
|
296
|
+
if (entry.type !== "session" && typeof entry.id === "string" && idCounts.has(entry.id)) {
|
|
297
|
+
idCounts.set(entry.id, idCounts.get(entry.id) + 1);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
const sessionId = sessionHeaders === 1 && typeof header?.id === "string" && header.id &&
|
|
301
|
+
redactSessionEvidenceValue(header.id, maxTextChars) === header.id ? header.id : undefined;
|
|
302
|
+
const identity = (entry, role) => {
|
|
303
|
+
const entryId = typeof entry.id === "string" ? entry.id : "";
|
|
304
|
+
const basis = sessionId && entryId && idCounts.get(entryId) === 1 && diagnostics.length === 0 &&
|
|
305
|
+
redactSessionEvidenceValue(entryId, maxTextChars) === entryId ? "entry" : "record";
|
|
306
|
+
return Object.freeze({ basis, role, ...(basis === "entry" ? { sessionId, entryId } : { ordinal: ordinals.get(entry) }) });
|
|
307
|
+
};
|
|
259
308
|
const turns = [];
|
|
260
309
|
let pendingUser;
|
|
261
310
|
let currentTurn;
|
|
@@ -267,6 +316,7 @@ export function readSessionEvidence(path, options = {}) {
|
|
|
267
316
|
if (role === "user") {
|
|
268
317
|
pendingUser = {
|
|
269
318
|
id: String(entry.id),
|
|
319
|
+
identity: identity(entry, "user"),
|
|
270
320
|
text: contentText(message, "text", maxTextChars),
|
|
271
321
|
};
|
|
272
322
|
currentTurn = undefined;
|
|
@@ -274,6 +324,7 @@ export function readSessionEvidence(path, options = {}) {
|
|
|
274
324
|
}
|
|
275
325
|
if (role === "assistant") {
|
|
276
326
|
currentTurn = {
|
|
327
|
+
[SESSION_TURN_IDENTITY]: identity(entry, "assistant"),
|
|
277
328
|
...(typeof entry.id === "string" ? { assistantEntryId: entry.id } : {}),
|
|
278
329
|
...(contentText(message, "text", maxTextChars)
|
|
279
330
|
? { assistantText: contentText(message, "text", maxTextChars) }
|
|
@@ -328,6 +379,7 @@ export function readSessionEvidence(path, options = {}) {
|
|
|
328
379
|
toolCalls: [],
|
|
329
380
|
unmatchedToolResults: 0,
|
|
330
381
|
userEntryId: pendingUser.id,
|
|
382
|
+
[SESSION_TURN_IDENTITY]: pendingUser.identity,
|
|
331
383
|
...(pendingUser.text ? { userText: pendingUser.text } : {}),
|
|
332
384
|
});
|
|
333
385
|
}
|
|
@@ -336,7 +388,7 @@ export function readSessionEvidence(path, options = {}) {
|
|
|
336
388
|
...turn,
|
|
337
389
|
index: firstVisibleIndex + index + 1,
|
|
338
390
|
}));
|
|
339
|
-
|
|
391
|
+
const evidence = {
|
|
340
392
|
...(branch.at(-1)?.id ? { activeLeafId: String(branch.at(-1)?.id) } : {}),
|
|
341
393
|
diagnostics,
|
|
342
394
|
path,
|
|
@@ -345,4 +397,8 @@ export function readSessionEvidence(path, options = {}) {
|
|
|
345
397
|
truncated: read.truncated === true || turns.length > visibleTurns.length,
|
|
346
398
|
turns: visibleTurns,
|
|
347
399
|
};
|
|
400
|
+
Object.defineProperty(evidence, SESSION_EVIDENCE_CHRONOLOGY, {
|
|
401
|
+
value: sessionChronology(turns, sessionId !== undefined && read.truncated !== true && diagnostics.length === 0),
|
|
402
|
+
});
|
|
403
|
+
return evidence;
|
|
348
404
|
}
|
|
@@ -20,6 +20,9 @@ export interface JsonlReadResult<T> {
|
|
|
20
20
|
export interface JsonlReadOptions {
|
|
21
21
|
maxBytes?: number;
|
|
22
22
|
}
|
|
23
|
-
export declare function readJsonFileResilient<T>(path: string, fallback: T
|
|
23
|
+
export declare function readJsonFileResilient<T>(path: string, fallback: T, options?: {
|
|
24
|
+
maxBytes?: number;
|
|
25
|
+
strictUtf8?: boolean;
|
|
26
|
+
}): JsonReadResult<T>;
|
|
24
27
|
export declare function readJsonlFileResilient<T>(path: string, options?: JsonlReadOptions): JsonlReadResult<T>;
|
|
25
28
|
export declare function formatStateReadDiagnostics(diagnostics: StateReadDiagnostic[], limit?: number): string[];
|
|
@@ -3,20 +3,23 @@
|
|
|
3
3
|
* Zones: file-backed actor state, JSON/JSONL diagnostics, inspect safety
|
|
4
4
|
* Owns best-effort JSON and JSONL parsing helpers for operator-facing state reads.
|
|
5
5
|
*/
|
|
6
|
-
import { closeSync, fstatSync, openSync, readFileSync, readSync, } from "node:fs";
|
|
6
|
+
import { closeSync, constants, fstatSync, openSync, readFileSync, readSync, } from "node:fs";
|
|
7
7
|
function isEnoent(error) {
|
|
8
8
|
return error.code === "ENOENT";
|
|
9
9
|
}
|
|
10
10
|
function diagnosticMessage(error) {
|
|
11
11
|
return error instanceof Error ? error.message : String(error);
|
|
12
12
|
}
|
|
13
|
-
function readTextFileCapped(path, maxBytes) {
|
|
13
|
+
function readTextFileCapped(path, maxBytes, strictUtf8 = false) {
|
|
14
14
|
if (maxBytes === undefined)
|
|
15
|
-
return readFileSync(path, "utf8");
|
|
15
|
+
return strictUtf8 ? new TextDecoder("utf-8", { fatal: true }).decode(readFileSync(path)) : readFileSync(path, "utf8");
|
|
16
16
|
const limit = Math.max(0, Math.floor(maxBytes));
|
|
17
|
-
const fd = openSync(path, "r");
|
|
17
|
+
const fd = openSync(path, strictUtf8 ? constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0) : "r");
|
|
18
18
|
try {
|
|
19
|
-
const
|
|
19
|
+
const opened = fstatSync(fd);
|
|
20
|
+
if (strictUtf8 && !opened.isFile())
|
|
21
|
+
throw new Error("bounded strict read requires a regular file");
|
|
22
|
+
const size = opened.size;
|
|
20
23
|
if (size > limit) {
|
|
21
24
|
throw Object.assign(new Error(`file exceeds bounded read limit (${size} > ${limit} bytes)`), { code: "EFBIG" });
|
|
22
25
|
}
|
|
@@ -28,17 +31,20 @@ function readTextFileCapped(path, maxBytes) {
|
|
|
28
31
|
break;
|
|
29
32
|
offset += bytesRead;
|
|
30
33
|
}
|
|
31
|
-
|
|
34
|
+
if (strictUtf8 && offset !== size)
|
|
35
|
+
throw new Error("file ended before its bounded strict read completed");
|
|
36
|
+
const observed = content.subarray(0, offset);
|
|
37
|
+
return strictUtf8 ? new TextDecoder("utf-8", { fatal: true }).decode(observed) : observed.toString("utf8");
|
|
32
38
|
}
|
|
33
39
|
finally {
|
|
34
40
|
closeSync(fd);
|
|
35
41
|
}
|
|
36
42
|
}
|
|
37
|
-
export function readJsonFileResilient(path, fallback) {
|
|
43
|
+
export function readJsonFileResilient(path, fallback, options = {}) {
|
|
38
44
|
try {
|
|
39
45
|
return {
|
|
40
46
|
diagnostics: [],
|
|
41
|
-
value: JSON.parse(
|
|
47
|
+
value: JSON.parse(readTextFileCapped(path, options.maxBytes, options.strictUtf8)),
|
|
42
48
|
};
|
|
43
49
|
}
|
|
44
50
|
catch (error) {
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extension temp-directory helpers
|
|
3
3
|
* Zones: temp directory, cleanup, runtime files
|
|
4
|
-
* Owns pi-agent tmp directory preparation and stale-entry cleanup
|
|
4
|
+
* Owns ordinary pi-agent tmp directory preparation and stale-entry cleanup; Run retirement is separate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const DEFAULT_TEMP_MAX_AGE_MS: number;
|
|
7
|
-
export declare const DEFAULT_RUN_MAX_AGE_MS: number;
|
|
8
7
|
export declare function cleanupStaleTempEntries(tempDir: string, maxAgeMs?: number, now?: number, preservedEntries?: Set<string>): Promise<number>;
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function prepareExtensionTempDir(tempDir: string, maxAgeMs?: number, runMaxAgeMs?: number): Promise<number>;
|
|
8
|
+
export declare function prepareExtensionTempDir(tempDir: string, maxAgeMs?: number): Promise<number>;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extension temp-directory helpers
|
|
3
3
|
* Zones: temp directory, cleanup, runtime files
|
|
4
|
-
* Owns pi-agent tmp directory preparation and stale-entry cleanup
|
|
4
|
+
* Owns ordinary pi-agent tmp directory preparation and stale-entry cleanup; Run retirement is separate.
|
|
5
5
|
*/
|
|
6
|
-
import { mkdir, readdir,
|
|
6
|
+
import { mkdir, readdir, rm, stat } from "node:fs/promises";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
export const DEFAULT_TEMP_MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
|
9
|
-
export const DEFAULT_RUN_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
10
9
|
export async function cleanupStaleTempEntries(tempDir, maxAgeMs = DEFAULT_TEMP_MAX_AGE_MS, now = Date.now(), preservedEntries = new Set(["runs", "delivery"])) {
|
|
11
10
|
let entries;
|
|
12
11
|
let removed = 0;
|
|
@@ -33,58 +32,7 @@ export async function cleanupStaleTempEntries(tempDir, maxAgeMs = DEFAULT_TEMP_M
|
|
|
33
32
|
}
|
|
34
33
|
return removed;
|
|
35
34
|
}
|
|
36
|
-
function
|
|
37
|
-
try {
|
|
38
|
-
process.kill(pid, 0);
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async function isRunEntryAlive(path) {
|
|
46
|
-
try {
|
|
47
|
-
const raw = await readFile(join(path, "run.json"), "utf8");
|
|
48
|
-
const meta = JSON.parse(raw);
|
|
49
|
-
const pid = Number(meta.pid || 0);
|
|
50
|
-
return pid > 0 && isPidAlive(pid);
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export async function cleanupStaleRunEntries(runsDir, maxAgeMs = DEFAULT_RUN_MAX_AGE_MS, now = Date.now()) {
|
|
57
|
-
let entries;
|
|
58
|
-
let removed = 0;
|
|
59
|
-
try {
|
|
60
|
-
entries = await readdir(runsDir, { withFileTypes: true });
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
return 0;
|
|
64
|
-
}
|
|
65
|
-
for (const entry of entries) {
|
|
66
|
-
if (!entry.isDirectory())
|
|
67
|
-
continue;
|
|
68
|
-
const path = join(runsDir, entry.name);
|
|
69
|
-
try {
|
|
70
|
-
const info = await stat(path);
|
|
71
|
-
const timestamp = Math.min(info.birthtimeMs || info.mtimeMs, info.mtimeMs);
|
|
72
|
-
if (now - timestamp <= maxAgeMs)
|
|
73
|
-
continue;
|
|
74
|
-
if (await isRunEntryAlive(path))
|
|
75
|
-
continue;
|
|
76
|
-
await rm(path, { force: true, recursive: true });
|
|
77
|
-
removed += 1;
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// Ignore temp cleanup races.
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return removed;
|
|
84
|
-
}
|
|
85
|
-
export async function prepareExtensionTempDir(tempDir, maxAgeMs = DEFAULT_TEMP_MAX_AGE_MS, runMaxAgeMs = DEFAULT_RUN_MAX_AGE_MS) {
|
|
35
|
+
export async function prepareExtensionTempDir(tempDir, maxAgeMs = DEFAULT_TEMP_MAX_AGE_MS) {
|
|
86
36
|
await mkdir(tempDir, { recursive: true });
|
|
87
|
-
|
|
88
|
-
const removedRuns = await cleanupStaleRunEntries(join(tempDir, "runs"), runMaxAgeMs);
|
|
89
|
-
return removedTemp + removedRuns;
|
|
37
|
+
return cleanupStaleTempEntries(tempDir, maxAgeMs);
|
|
90
38
|
}
|
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
* Zones: session ownership, run visibility guards, tool authorization errors
|
|
4
4
|
* Owns consistent session-mismatch diagnostics for public tool execution paths
|
|
5
5
|
*/
|
|
6
|
+
import * as RunIndex from "./runs-index.ts";
|
|
6
7
|
export interface SessionContext {
|
|
7
8
|
sessionManager?: {
|
|
8
9
|
getSessionId?: () => string;
|
|
9
10
|
};
|
|
10
11
|
}
|
|
11
12
|
export declare function getContextSessionId(ctx: unknown): string | undefined;
|
|
13
|
+
/** Optional post-launch navigation never fails or rolls back work already admitted by the launch owner. */
|
|
14
|
+
export declare function readRunFileNavigationForContext(status: object, ctx: unknown): Readonly<RunIndex.RunDirectoryNavigation>;
|
|
12
15
|
export declare function requireContextSessionId(ctx: unknown, actor: string): string;
|
|
13
16
|
export declare function sessionMismatchError(input: {
|
|
14
17
|
currentSession?: string;
|
|
@@ -4,9 +4,22 @@
|
|
|
4
4
|
* Owns consistent session-mismatch diagnostics for public tool execution paths
|
|
5
5
|
*/
|
|
6
6
|
import * as AsyncRuns from "./async-runs.js";
|
|
7
|
+
import * as RunIndex from "./runs-index.js";
|
|
7
8
|
export function getContextSessionId(ctx) {
|
|
8
9
|
return ctx?.sessionManager?.getSessionId?.();
|
|
9
10
|
}
|
|
11
|
+
/** Optional post-launch navigation never fails or rolls back work already admitted by the launch owner. */
|
|
12
|
+
export function readRunFileNavigationForContext(status, ctx) {
|
|
13
|
+
try {
|
|
14
|
+
const sessionId = getContextSessionId(ctx);
|
|
15
|
+
const directory = Object.getOwnPropertyDescriptor(status, "state_dir");
|
|
16
|
+
const navigation = RunIndex.readRunDirectoryNavigation(typeof directory?.value === "string" ? directory.value : "", status, sessionId);
|
|
17
|
+
return getContextSessionId(ctx) === sessionId ? navigation : Object.freeze({ state: "unavailable", reason: "session_changed" });
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return Object.freeze({ state: "unavailable", reason: "navigation_unavailable" });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
10
23
|
export function requireContextSessionId(ctx, actor) {
|
|
11
24
|
const sessionId = getContextSessionId(ctx);
|
|
12
25
|
if (!sessionId) {
|
|
@@ -10,6 +10,7 @@ export interface InspectToolDeps<TContext = unknown> {
|
|
|
10
10
|
getToolStatus?: (name: string) => Record<string, unknown> | undefined;
|
|
11
11
|
listRuns?: () => Array<Record<string, any>>;
|
|
12
12
|
recipeRoot?: string;
|
|
13
|
+
runStateRoot?: string;
|
|
13
14
|
registryStatus?: () => Runtime.RecipeRegistryStatus;
|
|
14
15
|
}
|
|
15
16
|
export declare function createInspectToolDefinition<TContext = unknown>(deps?: InspectToolDeps<TContext>): any;
|