@crouton-kit/crouter 0.3.32 → 0.3.34
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/README.md +10 -2
- package/dist/build-root.js +4 -6
- package/dist/builtin-memory/crouter-development/marketplaces.md +8 -8
- package/dist/builtin-memory/crouter-development/personas/base-prompt.md +2 -2
- package/dist/builtin-memory/crouter-development/personas/orchestrator-prompt.md +5 -5
- package/dist/builtin-memory/crouter-development/personas.md +3 -4
- package/dist/builtin-memory/crouter-development/plugins.md +31 -31
- package/dist/builtin-memory/design.md +4 -1
- package/dist/builtin-memory/development.md +4 -1
- package/dist/builtin-memory/internal/INDEX.md +1 -1
- package/dist/builtin-memory/internal/examples/imessage-assistant.md +3 -3
- package/dist/builtin-memory/internal/nodes-and-canvas.md +9 -9
- package/dist/builtin-memory/internal/storage-tiers.md +5 -5
- package/dist/builtin-memory/planning.md +4 -1
- package/dist/builtin-memory/product.md +80 -0
- package/dist/builtin-memory/spec.md +4 -1
- package/dist/builtin-personas/advisor/PERSONA.md +10 -0
- package/dist/builtin-personas/design/PERSONA.md +2 -2
- package/dist/builtin-personas/design/orchestrator.md +3 -3
- package/dist/builtin-personas/developer/PERSONA.md +1 -1
- package/dist/builtin-personas/developer/orchestrator.md +2 -2
- package/dist/builtin-personas/explore/PERSONA.md +3 -3
- package/dist/builtin-personas/explore/orchestrator.md +4 -2
- package/dist/builtin-personas/general/PERSONA.md +1 -1
- package/dist/builtin-personas/general/orchestrator.md +1 -1
- package/dist/builtin-personas/orchestration-kernel.md +8 -15
- package/dist/builtin-personas/plan/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/orchestrator.md +2 -2
- package/dist/builtin-personas/plan/reviewers/architecture-fit/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/code-smells/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/pattern-consistency/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/requirements-coverage/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/security/PERSONA.md +1 -1
- package/dist/builtin-personas/product/PERSONA.md +18 -0
- package/dist/builtin-personas/product/orchestrator.md +14 -0
- package/dist/builtin-personas/product/teardown/PERSONA.md +13 -0
- package/dist/builtin-personas/review/PERSONA.md +1 -1
- package/dist/builtin-personas/review/orchestrator.md +1 -1
- package/dist/builtin-personas/runtime-base.md +5 -0
- package/dist/builtin-personas/spec/PERSONA.md +1 -1
- package/dist/builtin-personas/spec/orchestrator.md +2 -2
- package/dist/builtin-personas/spec/requirements/PERSONA.md +1 -1
- package/dist/builtin-personas/waiting.md +1 -1
- package/dist/builtin-pi-packages/pi-crtr-extensions/README.md +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-help-gate.test.ts +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/provider-rotation.test.ts +663 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/statusline.test.ts +52 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/claude-plugin-commands.ts +418 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crouter-help.ts +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-commands/filters.json +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-commands/index.ts +174 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-help-gate.ts +408 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/index.ts +442 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/test.ts +119 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/nested-context.ts +327 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +574 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/statusline.ts +260 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/strip-skills-docs.ts +40 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/sysprompt-window.ts +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/package.json +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/subscription-state.js +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/subscription-state.ts +479 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/LICENSE +13 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/README.md +172 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/bin.mjs +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/errors.js +57 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/index.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/log.js +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/util.js +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/visit.js +233 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/index.js +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/package.json +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/cli.d.ts +8 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/cli.mjs +201 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/composer.js +224 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/Document.js +337 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/directives.js +178 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/errors.d.ts +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/errors.js +62 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/index.d.ts +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/index.js +50 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/log.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/log.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/options.d.ts +350 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst.js +112 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/parser.js +980 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/public-api.js +107 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/tags.js +99 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/test-events.js +134 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/util.d.ts +16 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/util.js +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/visit.d.ts +102 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/visit.js +236 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/package.json +97 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/util.js +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/package-lock.json +3385 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/package.json +25 -0
- package/dist/builtin-pi-packages/pi-mode-switch/README.md +64 -0
- package/dist/builtin-pi-packages/pi-mode-switch/bin/mode +40 -0
- package/dist/builtin-pi-packages/pi-mode-switch/extensions/index.ts +422 -0
- package/dist/builtin-pi-packages/pi-mode-switch/package.json +13 -0
- package/dist/builtin-views/canvas/core.mjs +82 -1
- package/dist/builtin-views/canvas/tui.mjs +9 -5
- package/dist/builtin-views/canvas/web.jsx +3 -2
- package/dist/builtin-views/chat/core.mjs +725 -0
- package/dist/builtin-views/chat/text.mjs +101 -0
- package/dist/builtin-views/chat/tui.mjs +368 -0
- package/dist/builtin-views/chat/web.jsx +367 -0
- package/dist/builtin-views/prompt-review/core.mjs +863 -0
- package/dist/builtin-views/prompt-review/text.mjs +15 -0
- package/dist/builtin-views/prompt-review/tui.mjs +196 -0
- package/dist/builtin-views/prompt-review/web.jsx +484 -0
- package/dist/builtin-views/settings/core.mjs +397 -0
- package/dist/builtin-views/settings/text.mjs +40 -0
- package/dist/builtin-views/settings/tui.mjs +95 -0
- package/dist/builtin-views/settings/web.jsx +167 -0
- package/dist/cli.js +16 -3
- package/dist/clients/attach/__tests__/crtr-output-coverage.test.js +55 -0
- package/dist/clients/attach/__tests__/crtr-output-render.test.js +2340 -0
- package/dist/clients/attach/attach-cmd.d.ts +18 -0
- package/dist/clients/attach/attach-cmd.js +1797 -797
- package/dist/clients/attach/auth-pickers.js +2 -2
- package/dist/clients/attach/canvas-panels.js +3 -3
- package/dist/clients/attach/chat-view.d.ts +13 -2
- package/dist/clients/attach/chat-view.js +53 -10
- package/dist/clients/attach/clipboard-image.js +1 -1
- package/dist/clients/attach/clipboard-text.js +1 -1
- package/dist/clients/attach/config-load.d.ts +8 -4
- package/dist/clients/attach/config-load.js +3 -1
- package/dist/clients/attach/crtr-output-render.d.ts +48 -0
- package/dist/clients/attach/crtr-output-render.js +646 -0
- package/dist/clients/attach/extension-dialogs.d.ts +2 -3
- package/dist/clients/attach/extension-dialogs.js +8 -10
- package/dist/clients/attach/graph-overlay.js +6 -5
- package/dist/clients/attach/input-controller.d.ts +4 -3
- package/dist/clients/attach/input-controller.js +25 -4
- package/dist/clients/attach/pickers.js +1 -1
- package/dist/clients/attach/slash-commands.d.ts +7 -7
- package/dist/clients/attach/slash-commands.js +40 -17
- package/dist/clients/attach/titled-editor.d.ts +4 -0
- package/dist/clients/attach/titled-editor.js +31 -15
- package/dist/clients/attach/view-socket.d.ts +2 -1
- package/dist/clients/attach/view-socket.js +28 -9
- package/dist/clients/web/__tests__/source-cache.test.js +32 -0
- package/dist/clients/web/dev-server.js +1 -0
- package/dist/clients/web/events.js +9 -11
- package/dist/clients/web/server.d.ts +4 -3
- package/dist/clients/web/server.js +166 -35
- package/dist/clients/web/source-cache.d.ts +10 -0
- package/dist/clients/web/source-cache.js +57 -0
- package/dist/clients/web/web-cmd.js +32 -13
- package/dist/commands/__tests__/human.test.js +30 -28
- package/dist/commands/canvas-history/search.js +1 -1
- package/dist/commands/canvas-history.js +5 -8
- package/dist/commands/canvas-issue.d.ts +2 -0
- package/dist/commands/canvas-issue.js +148 -0
- package/dist/commands/canvas-prune.js +43 -2
- package/dist/commands/canvas-rebuild-index.d.ts +2 -0
- package/dist/commands/canvas-rebuild-index.js +57 -0
- package/dist/commands/canvas-snapshot.d.ts +2 -0
- package/dist/commands/canvas-snapshot.js +51 -0
- package/dist/commands/canvas-tmux-spread.d.ts +2 -0
- package/dist/commands/canvas-tmux-spread.js +188 -0
- package/dist/commands/canvas.d.ts +1 -0
- package/dist/commands/canvas.js +16 -1
- package/dist/commands/chord.js +143 -48
- package/dist/commands/daemon.js +3 -3
- package/dist/commands/human/prompts.d.ts +0 -1
- package/dist/commands/human/prompts.js +39 -54
- package/dist/commands/human/queue.d.ts +12 -1
- package/dist/commands/human/queue.js +468 -73
- package/dist/commands/human/shared.d.ts +3 -4
- package/dist/commands/human/shared.js +3 -3
- package/dist/commands/human.js +12 -11
- package/dist/commands/memory/find.js +3 -2
- package/dist/commands/memory/lint.js +15 -8
- package/dist/commands/memory/list.js +4 -3
- package/dist/commands/memory/origin.d.ts +1 -0
- package/dist/commands/memory/origin.js +88 -0
- package/dist/commands/memory/read.js +3 -3
- package/dist/commands/memory/shared.d.ts +9 -4
- package/dist/commands/memory/shared.js +28 -10
- package/dist/commands/memory/write.js +19 -14
- package/dist/commands/memory.js +6 -8
- package/dist/commands/node-context.d.ts +2 -0
- package/dist/commands/node-context.js +172 -0
- package/dist/commands/node-snapshot.d.ts +2 -0
- package/dist/commands/node-snapshot.js +126 -0
- package/dist/commands/node.d.ts +2 -2
- package/dist/commands/node.js +987 -603
- package/dist/commands/pkg/market-inspect.d.ts +2 -1
- package/dist/commands/pkg/market-inspect.js +14 -32
- package/dist/commands/pkg/market-manage.d.ts +3 -1
- package/dist/commands/pkg/market-manage.js +58 -154
- package/dist/commands/pkg/market.js +7 -7
- package/dist/commands/pkg/plugin-inspect.d.ts +2 -1
- package/dist/commands/pkg/plugin-inspect.js +13 -29
- package/dist/commands/pkg/plugin-manage.d.ts +5 -1
- package/dist/commands/pkg/plugin-manage.js +246 -172
- package/dist/commands/pkg/plugin.js +6 -6
- package/dist/commands/pkg.js +7 -7
- package/dist/commands/push.d.ts +2 -0
- package/dist/commands/push.js +79 -11
- package/dist/commands/revive.js +79 -4
- package/dist/commands/search/answer.d.ts +1 -0
- package/dist/commands/search/answer.js +50 -0
- package/dist/commands/search/contents.d.ts +1 -0
- package/dist/commands/search/contents.js +96 -0
- package/dist/commands/search/exa.d.ts +53 -0
- package/dist/commands/search/exa.js +155 -0
- package/dist/commands/search/puremd.d.ts +11 -0
- package/dist/commands/search/puremd.js +53 -0
- package/dist/commands/search/web.d.ts +1 -0
- package/dist/commands/search/web.js +65 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.js +24 -0
- package/dist/commands/surface.d.ts +2 -0
- package/dist/commands/surface.js +43 -0
- package/dist/commands/sys/__tests__/sync-import.test.js +72 -0
- package/dist/commands/sys/config.js +59 -10
- package/dist/commands/sys/doctor.js +56 -4
- package/dist/commands/sys/prompt-review.d.ts +1 -0
- package/dist/commands/sys/prompt-review.js +178 -0
- package/dist/commands/sys/promptstudio.d.ts +2 -0
- package/dist/commands/sys/promptstudio.js +65 -0
- package/dist/commands/sys/settings.d.ts +2 -0
- package/dist/commands/sys/settings.js +16 -0
- package/dist/commands/sys/setup-core.d.ts +88 -0
- package/dist/commands/sys/setup-core.js +352 -0
- package/dist/commands/sys/setup.d.ts +2 -0
- package/dist/commands/sys/setup.js +516 -0
- package/dist/commands/sys/sync.js +311 -159
- package/dist/commands/sys/sysprompt.d.ts +1 -0
- package/dist/commands/sys/sysprompt.js +89 -0
- package/dist/commands/sys.js +10 -5
- package/dist/commands/view-cycle.js +5 -5
- package/dist/commands/view-list.js +3 -3
- package/dist/commands/view-new.js +6 -6
- package/dist/commands/view-pick.js +6 -6
- package/dist/commands/view-run.js +14 -14
- package/dist/commands/view.js +3 -3
- package/dist/commands/workspace.js +10 -10
- package/dist/core/__tests__/boot.test.js +140 -0
- package/dist/core/__tests__/broker-preflight.test.js +85 -0
- package/dist/core/__tests__/broker-sdk-wiring.test.js +10 -16
- package/dist/core/__tests__/canvas.test.js +37 -1
- package/dist/core/__tests__/chat-view-reconnect.test.js +70 -0
- package/dist/core/__tests__/child-death-wake.test.js +11 -2
- package/dist/core/__tests__/close.test.js +39 -1
- package/dist/core/__tests__/connection-reconnect-resume.test.js +37 -0
- package/dist/core/__tests__/context-intro.test.js +48 -14
- package/dist/core/__tests__/daemon-boot.test.js +204 -9
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +30 -4
- package/dist/core/__tests__/fixtures/fake-engine.js +157 -18
- package/dist/core/__tests__/fixtures/fake-pi-host.js +10 -1
- package/dist/core/__tests__/full/broker-attach-limits.test.js +1 -1
- package/dist/core/__tests__/full/broker-attach-stream.test.js +1 -1
- package/dist/core/__tests__/full/broker-crash-teardown.test.js +10 -5
- package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +1 -1
- package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +1 -1
- package/dist/core/__tests__/full/broker-pane-resolution.test.js +1 -1
- package/dist/core/__tests__/full/cascade-close.test.js +31 -18
- package/dist/core/__tests__/full/detach-focus.test.js +2 -2
- package/dist/core/__tests__/full/human-new-window-regression.test.js +1 -1
- package/dist/core/__tests__/hearth-bootstrap.test.js +136 -0
- package/dist/core/__tests__/helpers/harness.d.ts +1 -1
- package/dist/core/__tests__/helpers/harness.js +3 -3
- package/dist/core/__tests__/human-stranded-deliver.test.js +38 -1
- package/dist/core/__tests__/human-surface-target.test.js +1 -1
- package/dist/core/__tests__/kickoff.test.js +18 -19
- package/dist/core/__tests__/live-mutation-verbs.test.js +10 -10
- package/dist/core/__tests__/live-mutation.test.js +8 -8
- package/dist/core/__tests__/migration.test.js +172 -13
- package/dist/core/__tests__/on-read-dedup-resume.test.js +40 -0
- package/dist/core/__tests__/preview-registry-sync.test.js +36 -0
- package/dist/core/__tests__/prune-to-limit.test.js +91 -0
- package/dist/core/__tests__/push-final-guard.test.js +7 -1
- package/dist/core/__tests__/relaunch-root.test.js +9 -9
- package/dist/core/__tests__/revive.test.js +100 -27
- package/dist/core/__tests__/spawn-root.test.js +24 -1
- package/dist/core/__tests__/stop-guard.test.js +10 -0
- package/dist/core/__tests__/stranded-relaunch.test.js +72 -0
- package/dist/core/__tests__/tmux-surface.test.js +5 -1
- package/dist/core/__tests__/trigger-migration.test.js +48 -0
- package/dist/core/__tests__/wake-bearings.test.js +23 -21
- package/dist/core/__tests__/wake-origin.test.js +36 -33
- package/dist/core/__tests__/yield-ensures-daemon.test.js +54 -0
- package/dist/core/artifact.d.ts +2 -33
- package/dist/core/artifact.js +27 -87
- package/dist/core/bootstrap.js +2 -0
- package/dist/core/canvas/boot.d.ts +48 -0
- package/dist/core/canvas/boot.js +157 -0
- package/dist/core/canvas/browse/__tests__/model.test.js +35 -1
- package/dist/core/canvas/browse/app.js +87 -17
- package/dist/core/canvas/browse/model.d.ts +10 -1
- package/dist/core/canvas/browse/model.js +37 -1
- package/dist/core/canvas/browse/render.js +35 -33
- package/dist/core/canvas/canvas.d.ts +33 -0
- package/dist/core/canvas/canvas.js +138 -8
- package/dist/core/canvas/db.js +121 -9
- package/dist/core/canvas/index.d.ts +1 -1
- package/dist/core/canvas/index.js +1 -1
- package/dist/core/canvas/labels.d.ts +6 -8
- package/dist/core/canvas/labels.js +8 -11
- package/dist/core/canvas/nav-model.d.ts +5 -4
- package/dist/core/canvas/nav-model.js +32 -18
- package/dist/core/canvas/paths.d.ts +18 -1
- package/dist/core/canvas/paths.js +31 -2
- package/dist/core/canvas/pid.d.ts +6 -0
- package/dist/core/canvas/pid.js +13 -0
- package/dist/core/canvas/render.d.ts +25 -0
- package/dist/core/canvas/render.js +96 -13
- package/dist/core/canvas/status-glyph.d.ts +35 -0
- package/dist/core/canvas/status-glyph.js +104 -0
- package/dist/core/canvas/triggers.d.ts +108 -0
- package/dist/core/canvas/triggers.js +320 -0
- package/dist/core/canvas/types.d.ts +130 -48
- package/dist/core/command.js +13 -4
- package/dist/core/config.js +114 -16
- package/dist/core/fault-classifier.d.ts +41 -0
- package/dist/core/fault-classifier.js +110 -0
- package/dist/core/feed/inbox.d.ts +15 -0
- package/dist/core/feed/inbox.js +40 -14
- package/dist/core/frontmatter.d.ts +1 -11
- package/dist/core/frontmatter.js +1 -55
- package/dist/core/hearth/__tests__/model-auth-guest.test.js +151 -0
- package/dist/core/hearth/config.d.ts +3 -0
- package/dist/core/hearth/config.js +111 -0
- package/dist/core/hearth/guest-env.d.ts +9 -0
- package/dist/core/hearth/guest-env.js +27 -0
- package/dist/core/hearth/index.d.ts +5 -0
- package/dist/core/hearth/index.js +5 -0
- package/dist/core/hearth/model-auth-guest.d.ts +8 -0
- package/dist/core/hearth/model-auth-guest.js +435 -0
- package/dist/core/hearth/provider.d.ts +28 -0
- package/dist/core/hearth/provider.js +10 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.d.ts +12 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.js +147 -0
- package/dist/core/hearth/providers/blaxel-home.d.ts +15 -0
- package/dist/core/hearth/providers/blaxel-home.js +136 -0
- package/dist/core/hearth/providers/blaxel.d.ts +31 -0
- package/dist/core/hearth/providers/blaxel.js +282 -0
- package/dist/core/hearth/providers/types.d.ts +77 -0
- package/dist/core/hearth/registry.d.ts +15 -0
- package/dist/core/hearth/registry.js +180 -0
- package/dist/core/hearth/types.d.ts +156 -0
- package/dist/core/help.d.ts +16 -0
- package/dist/core/help.js +2 -0
- package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.js +79 -0
- package/dist/core/{skill-sync → host-exports}/builtins.d.ts +21 -13
- package/dist/core/host-exports/builtins.js +68 -0
- package/dist/core/{skill-sync → host-exports}/export.d.ts +9 -6
- package/dist/core/{skill-sync → host-exports}/export.js +37 -14
- package/dist/core/io.js +1 -1
- package/dist/core/log.d.ts +9 -0
- package/dist/core/log.js +113 -0
- package/dist/core/memory-resolver.d.ts +13 -13
- package/dist/core/memory-resolver.js +70 -51
- package/dist/core/personas/index.d.ts +4 -4
- package/dist/core/personas/index.js +2 -2
- package/dist/core/personas/loader.d.ts +51 -0
- package/dist/core/personas/loader.js +54 -50
- package/dist/core/personas/resolve.d.ts +43 -27
- package/dist/core/personas/resolve.js +336 -94
- package/dist/core/preview-registry.d.ts +25 -0
- package/dist/core/preview-registry.js +2047 -0
- package/dist/core/resolver.d.ts +1 -0
- package/dist/core/resolver.js +23 -16
- package/dist/core/runtime/auth-reload.d.ts +7 -0
- package/dist/core/runtime/auth-reload.js +69 -0
- package/dist/core/runtime/bearings.d.ts +46 -25
- package/dist/core/runtime/bearings.js +313 -52
- package/dist/core/runtime/branded-host.d.ts +4 -2
- package/dist/core/runtime/branded-host.js +66 -4
- package/dist/core/runtime/broker-protocol.d.ts +40 -5
- package/dist/core/runtime/broker-protocol.js +2 -2
- package/dist/core/runtime/broker.js +343 -18
- package/dist/core/runtime/close.js +39 -31
- package/dist/core/runtime/connectivity.d.ts +12 -0
- package/dist/core/runtime/connectivity.js +73 -0
- package/dist/core/runtime/fault-recovery-nudge.d.ts +2 -0
- package/dist/core/runtime/fault-recovery-nudge.js +2 -0
- package/dist/core/runtime/fault-recovery.d.ts +23 -0
- package/dist/core/runtime/fault-recovery.js +74 -0
- package/dist/core/runtime/fault.d.ts +25 -0
- package/dist/core/runtime/fault.js +176 -0
- package/dist/core/runtime/front-door.d.ts +1 -1
- package/dist/core/runtime/front-door.js +2 -2
- package/dist/core/runtime/host.d.ts +10 -0
- package/dist/core/runtime/host.js +71 -9
- package/dist/core/runtime/kickoff.js +32 -46
- package/dist/core/runtime/launch.d.ts +41 -21
- package/dist/core/runtime/launch.js +165 -52
- package/dist/core/runtime/lifecycle.js +7 -7
- package/dist/core/runtime/model-swap.d.ts +18 -0
- package/dist/core/runtime/model-swap.js +95 -0
- package/dist/core/runtime/naming.d.ts +7 -0
- package/dist/core/runtime/naming.js +61 -9
- package/dist/core/runtime/nodes.js +6 -1
- package/dist/core/runtime/persona.js +16 -17
- package/dist/core/runtime/placement.d.ts +41 -36
- package/dist/core/runtime/placement.js +159 -74
- package/dist/core/runtime/promote.d.ts +2 -0
- package/dist/core/runtime/promote.js +23 -3
- package/dist/core/runtime/recycle.js +13 -11
- package/dist/core/runtime/reset.d.ts +6 -3
- package/dist/core/runtime/reset.js +5 -5
- package/dist/core/runtime/revive-all.d.ts +5 -2
- package/dist/core/runtime/revive-all.js +5 -2
- package/dist/core/runtime/revive.d.ts +19 -8
- package/dist/core/runtime/revive.js +79 -25
- package/dist/core/runtime/roadmap.d.ts +1 -1
- package/dist/core/runtime/roadmap.js +1 -1
- package/dist/core/runtime/spawn.d.ts +3 -3
- package/dist/core/runtime/spawn.js +37 -13
- package/dist/core/runtime/stop-guard.js +11 -6
- package/dist/core/runtime/surface-bg.js +1 -1
- package/dist/core/runtime/tmux-chrome.d.ts +1 -1
- package/dist/core/runtime/tmux-chrome.js +1 -1
- package/dist/core/runtime/tmux.d.ts +30 -7
- package/dist/core/runtime/tmux.js +138 -84
- package/dist/core/runtime/view-socket-client.d.ts +46 -0
- package/dist/core/runtime/view-socket-client.js +203 -0
- package/dist/core/scope.d.ts +9 -0
- package/dist/core/scope.js +37 -15
- package/dist/core/substrate/index.d.ts +1 -1
- package/dist/core/substrate/index.js +1 -1
- package/dist/core/substrate/on-read.js +39 -25
- package/dist/core/substrate/render.d.ts +10 -13
- package/dist/core/substrate/render.js +56 -51
- package/dist/core/tui/host.js +83 -18
- package/dist/core/view/__tests__/transport-cache.test.js +62 -0
- package/dist/core/view/contract.d.ts +20 -0
- package/dist/core/view/loader.js +2 -2
- package/dist/core/view/stream-local.d.ts +3 -0
- package/dist/core/view/stream-local.js +184 -0
- package/dist/core/view/transport-cache.d.ts +8 -0
- package/dist/core/view/transport-cache.js +38 -0
- package/dist/core/view/transport-local.js +4 -0
- package/dist/core/view/transport.d.ts +7 -1
- package/dist/core/wake.d.ts +2 -2
- package/dist/core/wake.js +7 -7
- package/dist/daemon/__tests__/predicate-eval.test.js +109 -0
- package/dist/daemon/crtrd.d.ts +3 -19
- package/dist/daemon/crtrd.js +360 -280
- package/dist/daemon/manage.d.ts +18 -1
- package/dist/daemon/manage.js +54 -9
- package/dist/daemon/predicate-eval.d.ts +52 -0
- package/dist/daemon/predicate-eval.js +248 -0
- package/dist/hearth/control-plane/__tests__/node-message.test.js +60 -0
- package/dist/hearth/control-plane/__tests__/rate-limit-recurrence.test.js +49 -0
- package/dist/hearth/control-plane/__tests__/relay-security.test.js +314 -0
- package/dist/hearth/control-plane/__tests__/scheduler-scan-loop.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/scheduler-scan-loop.test.js +133 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.js +170 -0
- package/dist/hearth/control-plane/__tests__/webhook-ingress.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/webhook-ingress.test.js +167 -0
- package/dist/hearth/control-plane/config.d.ts +21 -0
- package/dist/hearth/control-plane/config.js +77 -0
- package/dist/hearth/control-plane/db.d.ts +30 -0
- package/dist/hearth/control-plane/db.js +534 -0
- package/dist/hearth/control-plane/ingress/rate-limit.d.ts +24 -0
- package/dist/hearth/control-plane/ingress/rate-limit.js +100 -0
- package/dist/hearth/control-plane/ingress/route-store.d.ts +31 -0
- package/dist/hearth/control-plane/ingress/route-store.js +61 -0
- package/dist/hearth/control-plane/ingress/webhook-delivery-store.d.ts +41 -0
- package/dist/hearth/control-plane/ingress/webhook-delivery-store.js +69 -0
- package/dist/hearth/control-plane/ingress/webhook-route.d.ts +55 -0
- package/dist/hearth/control-plane/ingress/webhook-route.js +285 -0
- package/dist/hearth/control-plane/main.d.ts +1 -0
- package/dist/hearth/control-plane/main.js +88 -0
- package/dist/hearth/control-plane/node-message.d.ts +31 -0
- package/dist/hearth/control-plane/node-message.js +98 -0
- package/dist/hearth/control-plane/register.d.ts +15 -0
- package/dist/hearth/control-plane/register.js +34 -0
- package/dist/hearth/control-plane/registry.d.ts +17 -0
- package/dist/hearth/control-plane/registry.js +161 -0
- package/dist/hearth/control-plane/relay.d.ts +40 -0
- package/dist/hearth/control-plane/relay.js +642 -0
- package/dist/hearth/control-plane/scheduler/fire-store.d.ts +36 -0
- package/dist/hearth/control-plane/scheduler/fire-store.js +73 -0
- package/dist/hearth/control-plane/scheduler/recurrence.d.ts +7 -0
- package/dist/hearth/control-plane/scheduler/recurrence.js +58 -0
- package/dist/hearth/control-plane/scheduler/scan-loop.d.ts +38 -0
- package/dist/hearth/control-plane/scheduler/scan-loop.js +138 -0
- package/dist/hearth/control-plane/scheduler/schedule-store.d.ts +32 -0
- package/dist/hearth/control-plane/scheduler/schedule-store.js +66 -0
- package/dist/hearth/control-plane/secrets.d.ts +17 -0
- package/dist/hearth/control-plane/secrets.js +113 -0
- package/dist/hearth/control-plane/server.d.ts +27 -0
- package/dist/hearth/control-plane/server.js +346 -0
- package/dist/hearth/control-plane/session.d.ts +68 -0
- package/dist/hearth/control-plane/session.js +273 -0
- package/dist/hearth/control-plane/triggers/acl.d.ts +14 -0
- package/dist/hearth/control-plane/triggers/acl.js +52 -0
- package/dist/hearth/control-plane/triggers/audit-store.d.ts +38 -0
- package/dist/hearth/control-plane/triggers/audit-store.js +79 -0
- package/dist/hearth/control-plane/triggers/deliver.d.ts +43 -0
- package/dist/hearth/control-plane/triggers/deliver.js +76 -0
- package/dist/hearth/control-plane/triggers/envelope.d.ts +29 -0
- package/dist/hearth/control-plane/triggers/envelope.js +38 -0
- package/dist/hearth/control-plane/types.d.ts +66 -0
- package/dist/hearth/control-plane/types.js +1 -0
- package/dist/hearth/control-plane/wake.d.ts +80 -0
- package/dist/hearth/control-plane/wake.js +312 -0
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.js +289 -0
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.js +34 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.js +203 -0
- package/dist/hearth/wake-proxy/__tests__/hardening.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/hardening.test.js +59 -0
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.js +372 -0
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.js +258 -0
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.js +437 -0
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.js +15 -0
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.js +141 -0
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.js +143 -0
- package/dist/hearth/wake-proxy/anthropic-oauth.d.ts +58 -0
- package/dist/hearth/wake-proxy/anthropic-oauth.js +189 -0
- package/dist/hearth/wake-proxy/auth.d.ts +22 -0
- package/dist/hearth/wake-proxy/auth.js +128 -0
- package/dist/hearth/wake-proxy/config.d.ts +2 -0
- package/dist/hearth/wake-proxy/config.js +151 -0
- package/dist/hearth/wake-proxy/guest-source.d.ts +14 -0
- package/dist/hearth/wake-proxy/guest-source.js +130 -0
- package/dist/hearth/wake-proxy/hearth-status.d.ts +44 -0
- package/dist/hearth/wake-proxy/hearth-status.js +267 -0
- package/dist/hearth/wake-proxy/home.d.ts +61 -0
- package/dist/hearth/wake-proxy/home.js +333 -0
- package/dist/hearth/wake-proxy/main.d.ts +1 -0
- package/dist/hearth/wake-proxy/main.js +134 -0
- package/dist/hearth/wake-proxy/model-auth.d.ts +13 -0
- package/dist/hearth/wake-proxy/model-auth.js +345 -0
- package/dist/hearth/wake-proxy/proxy.d.ts +35 -0
- package/dist/hearth/wake-proxy/proxy.js +716 -0
- package/dist/hearth/wake-proxy/public-source-gate.d.ts +9 -0
- package/dist/hearth/wake-proxy/public-source-gate.js +409 -0
- package/dist/hearth/wake-proxy/redact.d.ts +1 -0
- package/dist/hearth/wake-proxy/redact.js +17 -0
- package/dist/hearth/wake-proxy/server.d.ts +11 -0
- package/dist/hearth/wake-proxy/server.js +142 -0
- package/dist/hearth/wake-proxy/state.d.ts +18 -0
- package/dist/hearth/wake-proxy/state.js +342 -0
- package/dist/hearth/wake-proxy/types.d.ts +76 -0
- package/dist/hearth/wake-proxy/types.js +1 -0
- package/dist/index.js +3 -2
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +6 -5
- package/dist/pi-extensions/canvas-context-intro.js +7 -7
- package/dist/pi-extensions/canvas-doc-substrate.js +47 -24
- package/dist/pi-extensions/canvas-nav.js +16 -9
- package/dist/pi-extensions/canvas-stophook.d.ts +1 -1
- package/dist/pi-extensions/canvas-stophook.js +78 -11
- package/dist/prompts/view.js +7 -8
- package/dist/types.d.ts +39 -20
- package/dist/types.js +38 -13
- package/dist/web/runtime.js +141 -42
- package/dist/web/transport-http.js +7 -5
- package/dist/web/transport-stream.d.ts +3 -0
- package/dist/web/transport-stream.js +204 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff +0 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff +0 -0
- package/dist/web-client/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2 +0 -0
- package/dist/web-client/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2 +0 -0
- package/dist/web-client/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2 +0 -0
- package/dist/web-client/assets/index-BRKxe-hy.js +80 -0
- package/dist/web-client/assets/index-BZUxTkv5.css +2 -0
- package/dist/web-client/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2 +0 -0
- package/dist/web-client/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2 +0 -0
- package/dist/web-client/index.html +3 -2
- package/package.json +37 -11
- package/scripts/postinstall.mjs +8 -0
- package/dist/clients/attach/__tests__/action-parity.test.js +0 -48
- package/dist/clients/attach/__tests__/clipboard-image.test.js +0 -76
- package/dist/clients/attach/__tests__/editor-newline.test.js +0 -82
- package/dist/clients/attach/__tests__/git-info.test.js +0 -31
- package/dist/clients/attach/__tests__/onrequest-wired.test.js +0 -20
- package/dist/clients/attach/__tests__/reconnect-giveup.test.js +0 -30
- package/dist/clients/attach/__tests__/slash-quit-copy.test.js +0 -42
- package/dist/clients/attach/__tests__/titled-editor.test.js +0 -39
- package/dist/commands/memory/__tests__/lint-schema.test.js +0 -52
- package/dist/core/__tests__/argv-parser.test.js +0 -217
- package/dist/core/__tests__/draw-style.test.js +0 -258
- package/dist/core/__tests__/error-stall-recycle.test.js +0 -141
- package/dist/core/__tests__/frame-decoder-perf.test.js +0 -224
- package/dist/core/__tests__/keystone.test.js +0 -185
- package/dist/core/__tests__/listing-completeness.test.js +0 -31
- package/dist/core/__tests__/memory-resolver.test.js +0 -108
- package/dist/core/__tests__/memory.test.js +0 -60
- package/dist/core/__tests__/pane-column.test.js +0 -153
- package/dist/core/__tests__/persona-compose.test.js +0 -53
- package/dist/core/__tests__/persona-subkind.test.js +0 -65
- package/dist/core/__tests__/persona.test.js +0 -107
- package/dist/core/__tests__/unknown-path.test.js +0 -58
- package/dist/core/canvas/wakeups.d.ts +0 -76
- package/dist/core/canvas/wakeups.js +0 -185
- package/dist/core/skill-sync/__tests__/dry-run-wrote-count.test.js +0 -57
- package/dist/core/skill-sync/builtins.js +0 -112
- package/dist/core/skill-sync/claude-plugins.d.ts +0 -23
- package/dist/core/skill-sync/claude-plugins.js +0 -71
- package/dist/core/skill-sync/engine.d.ts +0 -42
- package/dist/core/skill-sync/engine.js +0 -633
- package/dist/core/skill-sync/manifest.d.ts +0 -64
- package/dist/core/skill-sync/manifest.js +0 -181
- package/dist/core/skill-sync/profile.d.ts +0 -76
- package/dist/core/skill-sync/profile.js +0 -173
- package/dist/core/skill-sync/snapshot.d.ts +0 -57
- package/dist/core/skill-sync/snapshot.js +0 -120
- package/dist/pi-extensions/canvas-commands.d.ts +0 -37
- package/dist/pi-extensions/canvas-commands.js +0 -113
- package/dist/pi-extensions/canvas-resume.d.ts +0 -21
- package/dist/pi-extensions/canvas-resume.js +0 -83
- package/dist/pi-extensions/canvas-view.d.ts +0 -21
- package/dist/pi-extensions/canvas-view.js +0 -76
- package/dist/web-client/assets/index-BUvQb4hR.css +0 -2
- package/dist/web-client/assets/index-ClLQXYAE.js +0 -10
- /package/dist/clients/attach/__tests__/{action-parity.test.d.ts → crtr-output-coverage.test.d.ts} +0 -0
- /package/dist/clients/attach/__tests__/{clipboard-image.test.d.ts → crtr-output-render.test.d.ts} +0 -0
- /package/dist/clients/{attach/__tests__/editor-newline.test.d.ts → web/__tests__/source-cache.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/git-info.test.d.ts → commands/sys/__tests__/sync-import.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/onrequest-wired.test.d.ts → core/__tests__/boot.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/reconnect-giveup.test.d.ts → core/__tests__/broker-preflight.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/slash-quit-copy.test.d.ts → core/__tests__/chat-view-reconnect.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/titled-editor.test.d.ts → core/__tests__/connection-reconnect-resume.test.d.ts} +0 -0
- /package/dist/{commands/memory/__tests__/lint-schema.test.d.ts → core/__tests__/hearth-bootstrap.test.d.ts} +0 -0
- /package/dist/core/__tests__/{argv-parser.test.d.ts → preview-registry-sync.test.d.ts} +0 -0
- /package/dist/core/__tests__/{draw-style.test.d.ts → prune-to-limit.test.d.ts} +0 -0
- /package/dist/core/__tests__/{error-stall-recycle.test.d.ts → stranded-relaunch.test.d.ts} +0 -0
- /package/dist/core/__tests__/{frame-decoder-perf.test.d.ts → trigger-migration.test.d.ts} +0 -0
- /package/dist/core/__tests__/{keystone.test.d.ts → yield-ensures-daemon.test.d.ts} +0 -0
- /package/dist/core/{__tests__/listing-completeness.test.d.ts → hearth/__tests__/model-auth-guest.test.d.ts} +0 -0
- /package/dist/core/{__tests__/memory-resolver.test.d.ts → hearth/providers/types.js} +0 -0
- /package/dist/core/{__tests__/memory.test.d.ts → hearth/types.js} +0 -0
- /package/dist/core/{__tests__/pane-column.test.d.ts → host-exports/__tests__/export-prunes-boot-skill.test.d.ts} +0 -0
- /package/dist/core/{__tests__/persona-compose.test.d.ts → view/__tests__/transport-cache.test.d.ts} +0 -0
- /package/dist/{core/__tests__/persona-subkind.test.d.ts → daemon/__tests__/predicate-eval.test.d.ts} +0 -0
- /package/dist/{core/__tests__/persona.test.d.ts → hearth/control-plane/__tests__/node-message.test.d.ts} +0 -0
- /package/dist/{core/__tests__/unknown-path.test.d.ts → hearth/control-plane/__tests__/rate-limit-recurrence.test.d.ts} +0 -0
- /package/dist/{core/skill-sync/__tests__/dry-run-wrote-count.test.d.ts → hearth/control-plane/__tests__/relay-security.test.d.ts} +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// Layout (the framing a revived node sees):
|
|
9
9
|
// <roadmap file=…>…</roadmap> its evolving plan — the source of truth
|
|
10
10
|
// <context-dir path=…>…</context-dir> what artifacts exist on disk
|
|
11
|
-
// <feed>Awaiting N nodes … digest</feed>
|
|
11
|
+
// <feed>Awaiting N nodes … digest</feed> live wait state + unread/catch-up feed
|
|
12
12
|
// <yield-message>…</yield-message> the note its prior self left on yield
|
|
13
13
|
//
|
|
14
14
|
// The roadmap (NOT the original spawn prompt) carries the goal on a refresh: its
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
// yield-message is one-shot (consumed on the next revive).
|
|
20
20
|
import { existsSync, readFileSync, writeFileSync, rmSync, mkdirSync, readdirSync, } from 'node:fs';
|
|
21
21
|
import { join } from 'node:path';
|
|
22
|
-
import { homedir } from 'node:os';
|
|
23
22
|
import { contextDir, reportsDir, getNode, subscriptionsOf, subscribersOf, } from '../canvas/index.js';
|
|
24
23
|
import { readRoadmap, roadmapPath } from './roadmap.js';
|
|
25
24
|
import { buildWakeBearings } from './bearings.js';
|
|
@@ -132,56 +131,41 @@ export function drainBearings(meta) {
|
|
|
132
131
|
// conversation is gone AND the monotonic inbox cursor has already advanced past
|
|
133
132
|
// everything drained pre-yield, so the revived node loses sight of reports its
|
|
134
133
|
// subscriptions pushed BEFORE the yield. The bodies are never lost — they persist
|
|
135
|
-
// at reports/<ts>-<kind>.md forever — but
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
/** Collapse the home-dir prefix of an absolute path to a leading `~`, so report
|
|
141
|
-
* paths render as `~/.crouter/canvas/nodes/<id>/reports/<ts>.md` instead of
|
|
142
|
-
* repeating the long absolute home prefix on every catch-up line — cheaper
|
|
143
|
-
* context, still dereferenceable by the revived node. A path NOT under the home
|
|
144
|
-
* dir (e.g. a CRTR_HOME / project-scope home elsewhere) is returned unchanged,
|
|
145
|
-
* so we never mangle a non-home path. */
|
|
146
|
-
function tildify(p) {
|
|
147
|
-
const home = homedir();
|
|
148
|
-
return p.startsWith(home) ? '~' + p.slice(home.length) : p;
|
|
134
|
+
// at reports/<ts>-<kind>.md forever — but a fresh revive needs a bounded index
|
|
135
|
+
// that says history exists and how to expand it, not every path preloaded.
|
|
136
|
+
const REPORT_HISTORY_SOURCE_CAP = 8;
|
|
137
|
+
function reportKind(filename) {
|
|
138
|
+
return filename.match(/^[0-9]{8}T[0-9]{6}-(.+)\.md$/)?.[1] ?? 'report';
|
|
149
139
|
}
|
|
150
|
-
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const lines = [];
|
|
157
|
-
let total = 0;
|
|
140
|
+
/** Condensed report-history index for each ACTIVE subscription of `nodeId` —
|
|
141
|
+
* independent of publisher liveness, so a finished worker's history still
|
|
142
|
+
* surfaces for catch-up. Each source carries only its count and newest report
|
|
143
|
+
* ref; older refs stay one command away via `canvas history show`. */
|
|
144
|
+
function reportHistorySources(nodeId) {
|
|
145
|
+
const out = [];
|
|
158
146
|
for (const sub of subscriptionsOf(nodeId).filter((s) => s.active)) {
|
|
159
|
-
if (total >= REPORT_HISTORY_TOTAL_CAP)
|
|
160
|
-
break;
|
|
161
147
|
const dir = reportsDir(sub.node_id);
|
|
162
148
|
if (!existsSync(dir))
|
|
163
149
|
continue;
|
|
164
150
|
const files = readdirSync(dir)
|
|
165
151
|
.filter((f) => f.endsWith('.md'))
|
|
166
152
|
.sort() // YYYYMMDDTHHmmss-<kind>.md — lexical sort = chronological
|
|
167
|
-
.reverse() // most recent first
|
|
168
|
-
.slice(0, REPORT_HISTORY_PER_SOURCE);
|
|
153
|
+
.reverse(); // most recent first
|
|
169
154
|
if (files.length === 0)
|
|
170
155
|
continue;
|
|
171
156
|
const pub = getNode(sub.node_id);
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
157
|
+
out.push({
|
|
158
|
+
nodeId: sub.node_id,
|
|
159
|
+
name: pub?.name ?? sub.node_id,
|
|
160
|
+
count: files.length,
|
|
161
|
+
latest: files[0],
|
|
162
|
+
});
|
|
179
163
|
}
|
|
180
|
-
return
|
|
164
|
+
return out.sort((a, b) => b.latest.localeCompare(a.latest));
|
|
181
165
|
}
|
|
182
166
|
/** Render the <feed> block PURELY: the live "awaiting" roster (a read), the
|
|
183
|
-
* already-drained unread digest (from drainBearings), and
|
|
184
|
-
*
|
|
167
|
+
* already-drained unread digest (from drainBearings), and a progressive index
|
|
168
|
+
* to on-disk report history. No cursor write. */
|
|
185
169
|
function feedBlock(nodeId, unreadDigest) {
|
|
186
170
|
// Awaiting = active subscriptions whose publisher is still live (active|idle).
|
|
187
171
|
const awaiting = subscriptionsOf(nodeId)
|
|
@@ -210,14 +194,16 @@ function feedBlock(nodeId, unreadDigest) {
|
|
|
210
194
|
}
|
|
211
195
|
// Catch-up history. The unread digest above only covers what arrived since the
|
|
212
196
|
// cursor; on a refresh-revive the cursor has already passed everything drained
|
|
213
|
-
// pre-yield, so
|
|
214
|
-
|
|
215
|
-
const history = reportHistoryLines(nodeId);
|
|
197
|
+
// pre-yield, so preserve the breadcrumb without preloading every old report.
|
|
198
|
+
const history = reportHistorySources(nodeId);
|
|
216
199
|
if (history.length > 0) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
200
|
+
const visible = history.slice(0, REPORT_HISTORY_SOURCE_CAP);
|
|
201
|
+
const hidden = history.length - visible.length;
|
|
202
|
+
const total = history.reduce((sum, h) => sum + h.count, 0);
|
|
203
|
+
lines.push('', `Report history on disk (collapsed): ${total} report${total === 1 ? '' : 's'} across ${history.length} subscribed node${history.length === 1 ? '' : 's'}. This is a catch-up index for reports your cursor already passed; read only what matters.`, ...visible.map((h) => {
|
|
204
|
+
const ref = `${h.nodeId}:reports/${h.latest}`;
|
|
205
|
+
return ` - ${h.name} (${h.nodeId}): ${h.count} report${h.count === 1 ? '' : 's'}; latest ${reportKind(h.latest)}: ${ref}`;
|
|
206
|
+
}), ...(hidden > 0 ? [` - … ${hidden} more subscribed node${hidden === 1 ? '' : 's'} with reports hidden`] : []), 'Expand: `crtr canvas history read <ref>` for one listed report; `crtr canvas history show <node-id> --type report` for that node\'s full report list; `crtr feed read --all` for cursor-independent inbox history.');
|
|
221
207
|
}
|
|
222
208
|
return `<feed>\n${lines.join('\n')}\n</feed>`;
|
|
223
209
|
}
|
|
@@ -282,7 +268,7 @@ export function buildReviveKickoff(meta, bearings, wakeReason) {
|
|
|
282
268
|
'directly with the user, so stay available and continue the conversation when they ' +
|
|
283
269
|
'write back.');
|
|
284
270
|
// Persona-transition catch-up. If the node's mode/lifecycle was changed
|
|
285
|
-
// EXTERNALLY while it was dormant (e.g. a human ran `crtr node lifecycle` /
|
|
271
|
+
// EXTERNALLY while it was dormant (e.g. a human ran `crtr node config --lifecycle` /
|
|
286
272
|
// `node promote --node` on it), it never saw the turn_end injector. drainBearings
|
|
287
273
|
// captured the guidance for its new persona and committed the ack (the second
|
|
288
274
|
// and only other delivery site); we just surface it. A clean fresh revive has
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { NodeMeta, LaunchSpec, Mode, Lifecycle } from '../canvas/index.js';
|
|
2
|
+
import type { ModelProvider, ModelStrength } from '../../types.js';
|
|
2
3
|
export declare const CANVAS_STOPHOOK_PATH: string;
|
|
3
4
|
export declare const CANVAS_INBOX_WATCHER_PATH: string;
|
|
4
5
|
export declare const CANVAS_NAV_PATH: string;
|
|
@@ -7,32 +8,46 @@ export declare const CANVAS_GOAL_CAPTURE_PATH: string;
|
|
|
7
8
|
export declare const CANVAS_PASSIVE_CONTEXT_PATH: string;
|
|
8
9
|
export declare const CANVAS_CONTEXT_INTRO_PATH: string;
|
|
9
10
|
export declare const CANVAS_DOC_SUBSTRATE_PATH: string;
|
|
10
|
-
export declare const CANVAS_COMMANDS_PATH: string;
|
|
11
|
-
export declare const CANVAS_RESUME_PATH: string;
|
|
12
|
-
export declare const CANVAS_VIEW_PATH: string;
|
|
13
11
|
/** The canvas extensions every node loads, in order: stophook (routing +
|
|
14
12
|
* telemetry + session-id capture), inbox-watcher (wake), nav (in-editor
|
|
15
13
|
* graph chrome), recap (the per-node inactivity recap card — Haiku over the
|
|
16
14
|
* conversation, shown above the manager line after 300s of no message),
|
|
17
15
|
* goal-capture (persist the first user message as the goal),
|
|
18
16
|
* passive-context (drain passive backlog as pre-text on the next message),
|
|
19
|
-
* context-intro (inject the <crtr-
|
|
20
|
-
*
|
|
21
|
-
* doc-substrate (the unified document substrate's two hooks:
|
|
22
|
-
* <memory
|
|
23
|
-
* whole-canvas picker → `crtr node focus`), view (the /view popup → `crtr
|
|
24
|
-
* view pick` / `crtr view run <name>`).
|
|
17
|
+
* context-intro (inject the <crtr-bearings> block + the <memory kind="knowledge">
|
|
18
|
+
* catalog as its own session message, once per brand-new chat),
|
|
19
|
+
* doc-substrate (the unified document substrate's two hooks: the
|
|
20
|
+
* <memory kind="preference"> block at boot, on-read context injection).
|
|
25
21
|
* All self-gate on CRTR_NODE_ID. goal-capture precedes passive-context so it
|
|
26
22
|
* reads the raw user text. */
|
|
27
23
|
export declare const CANVAS_EXTENSIONS: string[];
|
|
28
|
-
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
/** Env var naming the DEFAULT provider for an UNqualified bare strength only.
|
|
25
|
+
* `CRTR_MODEL_PROVIDER=openai` (case-insensitive) makes a bare `strong` resolve
|
|
26
|
+
* on the OpenAI ladder; anything else defaults to Anthropic. A configured
|
|
27
|
+
* defaultProvider in config.json wins over this env. */
|
|
28
|
+
export declare const OPENAI_PROVIDER_ENV = "CRTR_MODEL_PROVIDER";
|
|
29
|
+
export interface EquivalentProviderModel {
|
|
30
|
+
fromProvider: ModelProvider;
|
|
31
|
+
toProvider: ModelProvider;
|
|
32
|
+
strength: ModelStrength;
|
|
33
|
+
model: string;
|
|
34
|
+
}
|
|
35
|
+
/** Map a concrete ladder model back to its provider×strength cell, then return
|
|
36
|
+
* the other configured provider's model at the same strength. `failedProviders`
|
|
37
|
+
* is per-turn state: once a provider has produced a retryable outage error, do
|
|
38
|
+
* not bounce back to it or keep reattempting the same failed provider. */
|
|
39
|
+
export declare function equivalentOtherProviderModel(currentModel: string, failedProviders?: ReadonlySet<ModelProvider>): EquivalentProviderModel | null;
|
|
40
|
+
/** Resolve a persona/caller `model:` token to the concrete `model:thinking`
|
|
41
|
+
* spec pi gets via `--model`, in order:
|
|
42
|
+
* 1. `provider/rest` — apply strength aliases to `rest`; if `provider` is
|
|
43
|
+
* `anthropic`/`openai` AND `rest` is a strength, return that ladder cell
|
|
44
|
+
* (the word `openai` maps to the openai-codex ladder). Otherwise it is a
|
|
45
|
+
* concrete `provider/id` (incl. any `:thinking` suffix) → pass through.
|
|
46
|
+
* 2. Bare strength (incl. aliases normal/weak) → the default-provider ladder
|
|
47
|
+
* cell (config default provider, then CRTR_MODEL_PROVIDER, else anthropic).
|
|
48
|
+
* 3. Bare family alias (opus/sonnet/haiku) → the Anthropic ladder's
|
|
49
|
+
* strong/medium/light, ALWAYS anthropic (ignores the env/config default).
|
|
50
|
+
* 4. Anything else → pass through unchanged. */
|
|
36
51
|
export declare function normalizeModel(model: string): string;
|
|
37
52
|
/** Compose a node's full pi launch recipe from its persona. The system prompt
|
|
38
53
|
* is composed from FOUR inputs: kind×mode (the persona body) plus lifecycle
|
|
@@ -49,7 +64,6 @@ export declare function buildLaunchSpec(kind: string, mode: Mode, opts: {
|
|
|
49
64
|
}): {
|
|
50
65
|
launch: LaunchSpec;
|
|
51
66
|
lifecycle: 'terminal' | 'resident';
|
|
52
|
-
skills: string[];
|
|
53
67
|
};
|
|
54
68
|
export interface PiInvocation {
|
|
55
69
|
/** argv after the `pi` binary. */
|
|
@@ -63,8 +77,12 @@ export interface PiInvocation {
|
|
|
63
77
|
* — pi COPIES that conversation into a NEW session for this node, then `prompt`
|
|
64
78
|
* is delivered as the next message. One-shot at birth: the node thereafter
|
|
65
79
|
* captures its OWN pi_session_file and revives by `--session` like any other.
|
|
66
|
-
* - revive idle/done: pass `resumeSessionPath` (absolute .jsonl path
|
|
67
|
-
*
|
|
80
|
+
* - revive idle/done: pass `resumeSessionPath` (absolute .jsonl path) to
|
|
81
|
+
* `--session` (keeps conversation). `resumeSessionId` (a bare uuid) is
|
|
82
|
+
* accepted here too, but revive.ts's `resumeArgs` never produces one —
|
|
83
|
+
* `headlessBrokerHost`'s preflight (host.ts) fatally rejects a bare
|
|
84
|
+
* `--session` id before ever spawning the broker, so a real revive only
|
|
85
|
+
* ever resumes by path (or falls through to fresh when no path exists).
|
|
68
86
|
* - refresh-yield: fresh again (no resume) — the node re-reads its roadmap. */
|
|
69
87
|
export declare function buildPiArgv(meta: NodeMeta, opts?: {
|
|
70
88
|
prompt?: string;
|
|
@@ -90,7 +108,9 @@ export interface BrokerSdkConfig {
|
|
|
90
108
|
forkFrom?: string;
|
|
91
109
|
/** Resume by absolute `.jsonl` path (preferred — `SessionManager.open`). */
|
|
92
110
|
resumeSessionPath?: string;
|
|
93
|
-
/** Resume by bare session uuid
|
|
111
|
+
/** Resume by bare session uuid. Accepted by the generic builder, but no live
|
|
112
|
+
* caller sets it — revive resumes by absolute path only, and the broker
|
|
113
|
+
* preflight rejects a bare `--session`. */
|
|
94
114
|
resumeSessionId?: string;
|
|
95
115
|
/** Model spec, e.g. `anthropic/sonnet` (`--model`). */
|
|
96
116
|
model?: string;
|
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
//
|
|
3
3
|
// pi-only. No claude branch — we are a super-opinionated system. A node's
|
|
4
4
|
// LaunchSpec (persisted in meta.json) is the canonical recipe the daemon
|
|
5
|
-
// replays to revive it faithfully: `--session <
|
|
6
|
-
//
|
|
5
|
+
// replays to revive it faithfully: `--session <path>` (the saved conversation's
|
|
6
|
+
// absolute .jsonl) to wake a done/idle node, or fresh (against the context dir)
|
|
7
|
+
// for a refresh-yield.
|
|
7
8
|
// The spec is rewritten on every polymorph (base→orchestrator) so a node
|
|
8
9
|
// always comes back as its *current* self.
|
|
9
|
-
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { existsSync, mkdirSync, statSync, writeFileSync } from 'node:fs';
|
|
10
11
|
import { dirname, join } from 'node:path';
|
|
11
12
|
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { readConfig, configPath as userConfigPath } from '../config.js';
|
|
12
14
|
import { resolve as resolvePersona } from '../personas/index.js';
|
|
13
15
|
import { nodeEnv } from './nodes.js';
|
|
14
16
|
import { editorLabel } from '../canvas/index.js';
|
|
15
17
|
import { nodeDir } from '../canvas/paths.js';
|
|
18
|
+
import { defaultScopeConfig } from '../../types.js';
|
|
16
19
|
// ---------------------------------------------------------------------------
|
|
17
20
|
// The two canvas pi-extensions every node loads. They self-gate on the live
|
|
18
21
|
// {kind,mode} env, so the worker→orchestrator polymorph flips hook behavior
|
|
@@ -34,21 +37,16 @@ export const CANVAS_GOAL_CAPTURE_PATH = resolveExtension('canvas-goal-capture');
|
|
|
34
37
|
export const CANVAS_PASSIVE_CONTEXT_PATH = resolveExtension('canvas-passive-context');
|
|
35
38
|
export const CANVAS_CONTEXT_INTRO_PATH = resolveExtension('canvas-context-intro');
|
|
36
39
|
export const CANVAS_DOC_SUBSTRATE_PATH = resolveExtension('canvas-doc-substrate');
|
|
37
|
-
export const CANVAS_COMMANDS_PATH = resolveExtension('canvas-commands');
|
|
38
|
-
export const CANVAS_RESUME_PATH = resolveExtension('canvas-resume');
|
|
39
|
-
export const CANVAS_VIEW_PATH = resolveExtension('canvas-view');
|
|
40
40
|
/** The canvas extensions every node loads, in order: stophook (routing +
|
|
41
41
|
* telemetry + session-id capture), inbox-watcher (wake), nav (in-editor
|
|
42
42
|
* graph chrome), recap (the per-node inactivity recap card — Haiku over the
|
|
43
43
|
* conversation, shown above the manager line after 300s of no message),
|
|
44
44
|
* goal-capture (persist the first user message as the goal),
|
|
45
45
|
* passive-context (drain passive backlog as pre-text on the next message),
|
|
46
|
-
* context-intro (inject the <crtr-
|
|
47
|
-
*
|
|
48
|
-
* doc-substrate (the unified document substrate's two hooks:
|
|
49
|
-
* <memory
|
|
50
|
-
* whole-canvas picker → `crtr node focus`), view (the /view popup → `crtr
|
|
51
|
-
* view pick` / `crtr view run <name>`).
|
|
46
|
+
* context-intro (inject the <crtr-bearings> block + the <memory kind="knowledge">
|
|
47
|
+
* catalog as its own session message, once per brand-new chat),
|
|
48
|
+
* doc-substrate (the unified document substrate's two hooks: the
|
|
49
|
+
* <memory kind="preference"> block at boot, on-read context injection).
|
|
52
50
|
* All self-gate on CRTR_NODE_ID. goal-capture precedes passive-context so it
|
|
53
51
|
* reads the raw user text. */
|
|
54
52
|
export const CANVAS_EXTENSIONS = [
|
|
@@ -60,37 +58,141 @@ export const CANVAS_EXTENSIONS = [
|
|
|
60
58
|
CANVAS_PASSIVE_CONTEXT_PATH,
|
|
61
59
|
CANVAS_CONTEXT_INTRO_PATH,
|
|
62
60
|
CANVAS_DOC_SUBSTRATE_PATH,
|
|
63
|
-
CANVAS_COMMANDS_PATH,
|
|
64
|
-
CANVAS_RESUME_PATH,
|
|
65
|
-
CANVAS_VIEW_PATH,
|
|
66
61
|
];
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
// Two-axis model resolution: (provider × strength) → concrete `model:thinking`.
|
|
64
|
+
//
|
|
65
|
+
// A persona declares ONE `model:` field valued `provider/strength` (e.g.
|
|
66
|
+
// `openai/strong`, `anthropic/light`). The provider is a fixed per-persona
|
|
67
|
+
// property; the caller/persona thinks only in strength; the concrete model id
|
|
68
|
+
// AND the thinking level both fall out of the per-provider ladder below. The
|
|
69
|
+
// ladder itself and the default provider are user-configurable in config.json;
|
|
70
|
+
// pi accepts the `:thinking` suffix on `--model` (off,minimal,low,medium,high,
|
|
71
|
+
// xhigh — confirmed via `pi --help`), so the resolved spec is exactly the
|
|
72
|
+
// string buildPiArgv passes to `--model`; no extra launch plumbing.
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
/** Cached user config for model resolution. The launch path is hot and reads
|
|
75
|
+
* config synchronously, so cache the merged config and invalidate on mtime/size
|
|
76
|
+
* changes rather than rereading on every normalizeModel/buildLaunchSpec call. */
|
|
77
|
+
let cachedUserConfig = null;
|
|
78
|
+
function readUserConfigCached() {
|
|
79
|
+
const path = userConfigPath('user');
|
|
80
|
+
if (path === null)
|
|
81
|
+
return defaultScopeConfig();
|
|
82
|
+
try {
|
|
83
|
+
const stat = statSync(path);
|
|
84
|
+
if (cachedUserConfig !== null &&
|
|
85
|
+
cachedUserConfig.path === path &&
|
|
86
|
+
cachedUserConfig.mtimeMs === stat.mtimeMs &&
|
|
87
|
+
cachedUserConfig.size === stat.size) {
|
|
88
|
+
return cachedUserConfig.config;
|
|
89
|
+
}
|
|
90
|
+
const config = readConfig('user');
|
|
91
|
+
cachedUserConfig = { path, mtimeMs: stat.mtimeMs, size: stat.size, config };
|
|
92
|
+
return config;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (error.code === 'ENOENT') {
|
|
96
|
+
cachedUserConfig = null;
|
|
97
|
+
return defaultScopeConfig();
|
|
98
|
+
}
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const DEFAULT_MODEL_LADDERS = defaultScopeConfig().modelLadders;
|
|
103
|
+
function modelLadders() {
|
|
104
|
+
return readUserConfigCached().modelLadders ?? DEFAULT_MODEL_LADDERS;
|
|
105
|
+
}
|
|
106
|
+
function ladderFor(provider, ladders = modelLadders()) {
|
|
107
|
+
return ladders[provider];
|
|
108
|
+
}
|
|
109
|
+
/** Env var naming the DEFAULT provider for an UNqualified bare strength only.
|
|
110
|
+
* `CRTR_MODEL_PROVIDER=openai` (case-insensitive) makes a bare `strong` resolve
|
|
111
|
+
* on the OpenAI ladder; anything else defaults to Anthropic. A configured
|
|
112
|
+
* defaultProvider in config.json wins over this env. */
|
|
113
|
+
export const OPENAI_PROVIDER_ENV = 'CRTR_MODEL_PROVIDER';
|
|
114
|
+
function defaultProvider() {
|
|
115
|
+
const cfgProvider = readUserConfigCached().modelLadders.defaultProvider;
|
|
116
|
+
if (cfgProvider === 'anthropic' || cfgProvider === 'openai')
|
|
117
|
+
return cfgProvider;
|
|
118
|
+
return (process.env[OPENAI_PROVIDER_ENV] ?? '').toLowerCase() === 'openai' ? 'openai' : 'anthropic';
|
|
119
|
+
}
|
|
120
|
+
/** Strength synonyms accepted from personas/callers. */
|
|
121
|
+
const STRENGTH_ALIASES = {
|
|
122
|
+
ultra: 'ultra',
|
|
123
|
+
strong: 'strong',
|
|
124
|
+
medium: 'medium',
|
|
125
|
+
light: 'light',
|
|
126
|
+
normal: 'medium',
|
|
127
|
+
weak: 'light',
|
|
84
128
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
129
|
+
const MODEL_PROVIDER_KEYS = ['anthropic', 'openai'];
|
|
130
|
+
const MODEL_STRENGTHS = ['ultra', 'strong', 'medium', 'light'];
|
|
131
|
+
const THINKING_SUFFIXES = new Set(['off', 'minimal', 'low', 'medium', 'high', 'xhigh']);
|
|
132
|
+
function stripThinkingSuffix(spec) {
|
|
133
|
+
const i = spec.lastIndexOf(':');
|
|
134
|
+
if (i <= 0)
|
|
135
|
+
return spec;
|
|
136
|
+
return THINKING_SUFFIXES.has(spec.slice(i + 1)) ? spec.slice(0, i) : spec;
|
|
137
|
+
}
|
|
138
|
+
/** Map a concrete ladder model back to its provider×strength cell, then return
|
|
139
|
+
* the other configured provider's model at the same strength. `failedProviders`
|
|
140
|
+
* is per-turn state: once a provider has produced a retryable outage error, do
|
|
141
|
+
* not bounce back to it or keep reattempting the same failed provider. */
|
|
142
|
+
export function equivalentOtherProviderModel(currentModel, failedProviders = new Set()) {
|
|
143
|
+
const ladders = modelLadders();
|
|
144
|
+
const currentComparable = stripThinkingSuffix(normalizeModel(currentModel));
|
|
145
|
+
for (const fromProvider of MODEL_PROVIDER_KEYS) {
|
|
146
|
+
for (const strength of MODEL_STRENGTHS) {
|
|
147
|
+
if (stripThinkingSuffix(ladders[fromProvider][strength]) !== currentComparable)
|
|
148
|
+
continue;
|
|
149
|
+
if (failedProviders.has(fromProvider))
|
|
150
|
+
return null;
|
|
151
|
+
const toProvider = fromProvider === 'anthropic' ? 'openai' : 'anthropic';
|
|
152
|
+
if (failedProviders.has(toProvider))
|
|
153
|
+
return null;
|
|
154
|
+
return { fromProvider, toProvider, strength, model: ladders[toProvider][strength] };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
/** Resolve a persona/caller `model:` token to the concrete `model:thinking`
|
|
160
|
+
* spec pi gets via `--model`, in order:
|
|
161
|
+
* 1. `provider/rest` — apply strength aliases to `rest`; if `provider` is
|
|
162
|
+
* `anthropic`/`openai` AND `rest` is a strength, return that ladder cell
|
|
163
|
+
* (the word `openai` maps to the openai-codex ladder). Otherwise it is a
|
|
164
|
+
* concrete `provider/id` (incl. any `:thinking` suffix) → pass through.
|
|
165
|
+
* 2. Bare strength (incl. aliases normal/weak) → the default-provider ladder
|
|
166
|
+
* cell (config default provider, then CRTR_MODEL_PROVIDER, else anthropic).
|
|
167
|
+
* 3. Bare family alias (opus/sonnet/haiku) → the Anthropic ladder's
|
|
168
|
+
* strong/medium/light, ALWAYS anthropic (ignores the env/config default).
|
|
169
|
+
* 4. Anything else → pass through unchanged. */
|
|
89
170
|
export function normalizeModel(model) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (model
|
|
93
|
-
|
|
171
|
+
const ladders = modelLadders();
|
|
172
|
+
// 1. Qualified provider/rest.
|
|
173
|
+
if (model.includes('/')) {
|
|
174
|
+
const slash = model.indexOf('/');
|
|
175
|
+
const provider = model.slice(0, slash);
|
|
176
|
+
const rest = model.slice(slash + 1);
|
|
177
|
+
const strength = STRENGTH_ALIASES[rest];
|
|
178
|
+
if (strength !== undefined && (provider === 'anthropic' || provider === 'openai')) {
|
|
179
|
+
return ladderFor(provider, ladders)[strength];
|
|
180
|
+
}
|
|
181
|
+
// Concrete `provider/id` (optionally `...:thinking`) — pass through.
|
|
182
|
+
return model;
|
|
183
|
+
}
|
|
184
|
+
// 2. Bare strength → default-provider ladder.
|
|
185
|
+
const strength = STRENGTH_ALIASES[model];
|
|
186
|
+
if (strength !== undefined)
|
|
187
|
+
return ladderFor(defaultProvider(), ladders)[strength];
|
|
188
|
+
// 3. Bare family alias → always Anthropic.
|
|
189
|
+
if (model === 'opus')
|
|
190
|
+
return ladders.anthropic.strong;
|
|
191
|
+
if (model === 'sonnet')
|
|
192
|
+
return ladders.anthropic.medium;
|
|
193
|
+
if (model === 'haiku')
|
|
194
|
+
return ladders.anthropic.light;
|
|
195
|
+
// 4. Unknown — pass through.
|
|
94
196
|
return model;
|
|
95
197
|
}
|
|
96
198
|
// ---------------------------------------------------------------------------
|
|
@@ -105,10 +207,14 @@ export function normalizeModel(model) {
|
|
|
105
207
|
* declared extensions follow. */
|
|
106
208
|
export function buildLaunchSpec(kind, mode, opts) {
|
|
107
209
|
const p = resolvePersona(kind, mode, { lifecycle: opts.lifecycle, hasManager: opts.hasManager });
|
|
108
|
-
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
|
|
210
|
+
const cfg = readUserConfigCached();
|
|
211
|
+
// Precedence, from strongest to weakest:
|
|
212
|
+
// 1. Caller-supplied override (durable on `meta.model_override`, re-passed on
|
|
213
|
+
// every polymorph).
|
|
214
|
+
// 2. Configured persona strength for this kind.
|
|
215
|
+
// 3. The persona file's own frontmatter model.
|
|
216
|
+
// 4. Unset → pi default.
|
|
217
|
+
const chosenModel = opts.model ?? cfg.personaStrengths[kind] ?? p.model;
|
|
112
218
|
const launch = {
|
|
113
219
|
model: chosenModel !== undefined ? normalizeModel(chosenModel) : undefined,
|
|
114
220
|
tools: p.tools,
|
|
@@ -116,7 +222,7 @@ export function buildLaunchSpec(kind, mode, opts) {
|
|
|
116
222
|
systemPrompt: p.systemPrompt,
|
|
117
223
|
env: { ...(opts.extraEnv ?? {}) },
|
|
118
224
|
};
|
|
119
|
-
return { launch, lifecycle: p.lifecycle
|
|
225
|
+
return { launch, lifecycle: p.lifecycle };
|
|
120
226
|
}
|
|
121
227
|
// ---------------------------------------------------------------------------
|
|
122
228
|
// Build the pi argv to launch / revive a node
|
|
@@ -144,8 +250,12 @@ function writeSystemPromptFile(nodeId, prompt) {
|
|
|
144
250
|
* — pi COPIES that conversation into a NEW session for this node, then `prompt`
|
|
145
251
|
* is delivered as the next message. One-shot at birth: the node thereafter
|
|
146
252
|
* captures its OWN pi_session_file and revives by `--session` like any other.
|
|
147
|
-
* - revive idle/done: pass `resumeSessionPath` (absolute .jsonl path
|
|
148
|
-
*
|
|
253
|
+
* - revive idle/done: pass `resumeSessionPath` (absolute .jsonl path) to
|
|
254
|
+
* `--session` (keeps conversation). `resumeSessionId` (a bare uuid) is
|
|
255
|
+
* accepted here too, but revive.ts's `resumeArgs` never produces one —
|
|
256
|
+
* `headlessBrokerHost`'s preflight (host.ts) fatally rejects a bare
|
|
257
|
+
* `--session` id before ever spawning the broker, so a real revive only
|
|
258
|
+
* ever resumes by path (or falls through to fresh when no path exists).
|
|
149
259
|
* - refresh-yield: fresh again (no resume) — the node re-reads its roadmap. */
|
|
150
260
|
export function buildPiArgv(meta, opts = {}) {
|
|
151
261
|
const spec = meta.launch;
|
|
@@ -159,8 +269,10 @@ export function buildPiArgv(meta, opts = {}) {
|
|
|
159
269
|
// absolute FILE path when present: pi resolves a bare id cwd-relative first
|
|
160
270
|
// and shows a cross-project "Fork? [y/N]" prompt when the revive cwd differs
|
|
161
271
|
// from the session's creation cwd, whereas a path (contains `/` or ends
|
|
162
|
-
// `.jsonl`) is opened directly — immune to any cwd discrepancy.
|
|
163
|
-
//
|
|
272
|
+
// `.jsonl`) is opened directly — immune to any cwd discrepancy. In practice
|
|
273
|
+
// revive always passes the absolute path: a resume happens only when the saved
|
|
274
|
+
// `.jsonl` exists (resumeArgs), and the broker preflight rejects a bare id
|
|
275
|
+
// outright, so `resumeSessionId` is a generic builder param no live caller sets.
|
|
164
276
|
// `--fork <path|id>` is the spawn-time branch: pi copies the source session
|
|
165
277
|
// into a fresh one for this node (the source is untouched), then delivers the
|
|
166
278
|
// kickoff prompt as the next message. Mutually exclusive with `--session`
|
|
@@ -223,9 +335,10 @@ export function piInvocationToSdkConfig(inv) {
|
|
|
223
335
|
break;
|
|
224
336
|
case '--session': {
|
|
225
337
|
const v = argv[++i];
|
|
226
|
-
// A path (contains `/` or ends `.jsonl`) resumes via SessionManager.open
|
|
227
|
-
//
|
|
228
|
-
//
|
|
338
|
+
// A path (contains `/` or ends `.jsonl`) resumes via SessionManager.open.
|
|
339
|
+
// A bare uuid is classified here for completeness but is rejected by the
|
|
340
|
+
// broker preflight and never produced by revive — the live path is always
|
|
341
|
+
// the absolute path. Same classification buildPiArgv documents.
|
|
229
342
|
if (v.includes('/') || v.endsWith('.jsonl'))
|
|
230
343
|
cfg.resumeSessionPath = v;
|
|
231
344
|
else
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
// row UPDATE directly via openDb — the one sanctioned exception to "only
|
|
36
36
|
// canvas.ts touches the db" (see canvas/CLAUDE.md), exactly as db.ts's backfill
|
|
37
37
|
// is the sanctioned exception for a data migration.
|
|
38
|
-
import { openDb, getNode,
|
|
38
|
+
import { openDb, getNode, cancelTriggersFor, cancelSelfAlarms } from '../canvas/index.js';
|
|
39
39
|
const ANY = '*';
|
|
40
40
|
/** The supervised statuses — a live node the daemon watches. */
|
|
41
41
|
const LIVE = ['active', 'idle'];
|
|
@@ -88,19 +88,19 @@ export function transition(nodeId, event) {
|
|
|
88
88
|
else if (writeIntent) {
|
|
89
89
|
db.prepare('UPDATE nodes SET intent = ? WHERE node_id = ?').run(spec.intent ?? null, nodeId);
|
|
90
90
|
}
|
|
91
|
-
//
|
|
91
|
+
// Triggers cleanup — writes a DIFFERENT table (triggers) AFTER the atomic
|
|
92
92
|
// status/intent write above, so the single-(status,intent)-writer rule holds.
|
|
93
|
-
// Event-gated; exactly ONE delegated
|
|
94
|
-
//
|
|
95
|
-
// cancel →
|
|
96
|
-
//
|
|
93
|
+
// Event-gated; exactly ONE delegated triggers helper per event, never inline
|
|
94
|
+
// triggers SQL here (design §6.7 / D2 / D6, Q1/Q2):
|
|
95
|
+
// cancel → cancelTriggersFor: reap node-anchored AND owner-armed detached
|
|
96
|
+
// triggers this node armed (ruling A) — covers both cancel sites
|
|
97
97
|
// uniformly (close cascade · reapDescendants).
|
|
98
98
|
// finalize → cancelSelfAlarms: clear this node's one-shot self-alarms only;
|
|
99
99
|
// node-anchored declarative crons SURVIVE a finishing instance (Q1).
|
|
100
100
|
// crash → NOTHING. A fault is not a deliberate end-of-waiting; self-alarms
|
|
101
101
|
// and crons MUST survive instance death (D2 / Invariant E / AC-R3).
|
|
102
102
|
if (event === 'cancel')
|
|
103
|
-
|
|
103
|
+
cancelTriggersFor(nodeId);
|
|
104
104
|
else if (event === 'finalize')
|
|
105
105
|
cancelSelfAlarms(nodeId);
|
|
106
106
|
return getNode(nodeId);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type NodeMeta } from '../canvas/index.js';
|
|
2
|
+
/** True when the node's broker engine is reachable: its recorded pid is alive
|
|
3
|
+
* AND its view.sock exists. Both are required — a dead pid with a stale socket,
|
|
4
|
+
* or a live pid mid-boot before it binds the socket, is NOT a live broker. */
|
|
5
|
+
export declare function isBrokerLive(meta: NodeMeta): boolean;
|
|
6
|
+
/** Swap a LIVE node's model over its view.sock. Connects, claims controller
|
|
7
|
+
* (hello + request_control, so an attached viewer never blocks the swap), sends
|
|
8
|
+
* `set_model`, and resolves with the broker-resolved `provider/id` on its ack —
|
|
9
|
+
* read back from the row the broker just persisted (model_changed.model carries
|
|
10
|
+
* only the bare id). Rejects with the broker's message on an `error` frame (e.g.
|
|
11
|
+
* `no model matching '<spec>' in the registry`), on connect failure, or timeout. */
|
|
12
|
+
export declare function setModelLive(nodeId: string, spec: string): Promise<string>;
|
|
13
|
+
/** Persist a model choice into a DORMANT node's durable recipe — mirrors exactly
|
|
14
|
+
* what the broker's persistModelChoice writes on a live switch: `model_override`
|
|
15
|
+
* (so polymorphs preserve it via buildLaunchSpec) and `launch.model` (the recipe
|
|
16
|
+
* buildPiArgv replays on revive). `spec` must already be a concrete `provider/id`
|
|
17
|
+
* (normalizeModel maps tiers/aliases; a bare substring cannot resolve offline). */
|
|
18
|
+
export declare function persistDormantModel(nodeId: string, spec: string): void;
|