@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
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
// Phase 2 keystone — runtime authority moved into the WAL'd row.
|
|
2
|
-
//
|
|
3
|
-
// These four guard the load-bearing invariants of the split:
|
|
4
|
-
// 1. concurrency — two writers of DIFFERENT runtime fields both land (the old
|
|
5
|
-
// whole-meta read-modify-write dropped one).
|
|
6
|
-
// 2. isolation — a single-column setter never disturbs the other runtime
|
|
7
|
-
// fields (single-statement atomicity).
|
|
8
|
-
// 3. persistence — meta.json on disk holds NO runtime fields, yet getNode
|
|
9
|
-
// still returns them (hydrated from the row).
|
|
10
|
-
// 4. backfill — a v2-shaped db with runtime still in meta migrates (v3) so
|
|
11
|
-
// runtime lands in the authoritative row.
|
|
12
|
-
import { test, before, beforeEach, after } from 'node:test';
|
|
13
|
-
import assert from 'node:assert/strict';
|
|
14
|
-
import { mkdtempSync, mkdirSync, rmSync, readFileSync, writeFileSync, } from 'node:fs';
|
|
15
|
-
import { tmpdir } from 'node:os';
|
|
16
|
-
import { join } from 'node:path';
|
|
17
|
-
import { DatabaseSync } from 'node:sqlite';
|
|
18
|
-
import { createNode, getNode, setStatus, setIntent, setPresence, recordPid, clearPid, } from '../canvas/canvas.js';
|
|
19
|
-
import { openDb, closeDb, MIGRATIONS } from '../canvas/db.js';
|
|
20
|
-
import { nodeDir, nodeMetaPath, canvasDbPath, ensureHome, } from '../canvas/paths.js';
|
|
21
|
-
let home;
|
|
22
|
-
function node(id, over = {}) {
|
|
23
|
-
return {
|
|
24
|
-
node_id: id,
|
|
25
|
-
name: id,
|
|
26
|
-
created: new Date().toISOString(),
|
|
27
|
-
cwd: '/tmp/work',
|
|
28
|
-
kind: 'general',
|
|
29
|
-
mode: 'base',
|
|
30
|
-
lifecycle: 'terminal',
|
|
31
|
-
status: 'active',
|
|
32
|
-
...over,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
before(() => {
|
|
36
|
-
home = mkdtempSync(join(tmpdir(), 'crtr-keystone-'));
|
|
37
|
-
process.env['CRTR_HOME'] = home;
|
|
38
|
-
});
|
|
39
|
-
beforeEach(() => {
|
|
40
|
-
closeDb();
|
|
41
|
-
rmSync(home, { recursive: true, force: true });
|
|
42
|
-
});
|
|
43
|
-
after(() => {
|
|
44
|
-
closeDb();
|
|
45
|
-
rmSync(home, { recursive: true, force: true });
|
|
46
|
-
delete process.env['CRTR_HOME'];
|
|
47
|
-
});
|
|
48
|
-
// 1. concurrency — both interleaved writers survive.
|
|
49
|
-
test('concurrency: an interleaved setStatus and recordPid both land', () => {
|
|
50
|
-
createNode(node('a', { status: 'active', pi_pid: null }));
|
|
51
|
-
// Two writers each take a STALE snapshot, exactly as the old cross-process
|
|
52
|
-
// race did (the daemon stamping pi_pid while the node flips status).
|
|
53
|
-
const snapDaemon = getNode('a');
|
|
54
|
-
const snapNode = getNode('a');
|
|
55
|
-
assert.equal(snapDaemon?.pi_pid ?? null, null);
|
|
56
|
-
assert.equal(snapNode?.status, 'active');
|
|
57
|
-
// Interleave their writes through the atomic per-column setters.
|
|
58
|
-
recordPid('a', 4321); // writer 1 (daemon)
|
|
59
|
-
setStatus('a', 'idle'); // writer 2 (node)
|
|
60
|
-
// Under the OLD whole-meta read-modify-write, writer 2 writing back its stale
|
|
61
|
-
// snapshot (pi_pid still null) would have CLOBBERED writer 1's pid. Atomic
|
|
62
|
-
// single-column UPDATEs serialized by WAL keep BOTH.
|
|
63
|
-
const m = getNode('a');
|
|
64
|
-
assert.equal(m?.pi_pid, 4321, 'the pid write survived');
|
|
65
|
-
assert.equal(m?.status, 'idle', 'the status write survived');
|
|
66
|
-
});
|
|
67
|
-
// 2. isolation — single-column atomicity in both directions.
|
|
68
|
-
test('isolation: setPresence and setStatus/setIntent never disturb each other', () => {
|
|
69
|
-
createNode(node('a', { status: 'active', intent: 'refresh', pi_pid: 99 }));
|
|
70
|
-
setPresence('a', { tmux_session: 's', window: '@1' });
|
|
71
|
-
let m = getNode('a');
|
|
72
|
-
assert.equal(m?.status, 'active', 'status undisturbed by setPresence');
|
|
73
|
-
assert.equal(m?.intent, 'refresh', 'intent undisturbed by setPresence');
|
|
74
|
-
assert.equal(m?.pi_pid, 99, 'pi_pid undisturbed by setPresence');
|
|
75
|
-
assert.equal(m?.tmux_session, 's');
|
|
76
|
-
assert.equal(m?.window, '@1');
|
|
77
|
-
// The reverse: flipping status + intent leaves presence and pid intact.
|
|
78
|
-
setStatus('a', 'done');
|
|
79
|
-
setIntent('a', 'done');
|
|
80
|
-
m = getNode('a');
|
|
81
|
-
assert.equal(m?.status, 'done');
|
|
82
|
-
assert.equal(m?.intent, 'done');
|
|
83
|
-
assert.equal(m?.tmux_session, 's', 'tmux_session undisturbed by setStatus/setIntent');
|
|
84
|
-
assert.equal(m?.window, '@1', 'window undisturbed by setStatus/setIntent');
|
|
85
|
-
assert.equal(m?.pi_pid, 99, 'pi_pid undisturbed by setStatus/setIntent');
|
|
86
|
-
clearPid('a');
|
|
87
|
-
assert.equal(getNode('a')?.pi_pid, null, 'clearPid nulls only the pid');
|
|
88
|
-
assert.equal(getNode('a')?.tmux_session, 's', 'clearPid leaves presence intact');
|
|
89
|
-
});
|
|
90
|
-
// 3. persistence-split — meta.json has no runtime; getNode still hydrates it.
|
|
91
|
-
test('persistence-split: meta.json holds no runtime fields, getNode hydrates them', () => {
|
|
92
|
-
createNode(node('a', {
|
|
93
|
-
status: 'active',
|
|
94
|
-
intent: 'refresh',
|
|
95
|
-
pi_pid: 7,
|
|
96
|
-
tmux_session: 's',
|
|
97
|
-
window: '@1',
|
|
98
|
-
}));
|
|
99
|
-
setStatus('a', 'done');
|
|
100
|
-
setPresence('a', { tmux_session: 's2', window: '@2' });
|
|
101
|
-
const raw = JSON.parse(readFileSync(nodeMetaPath('a'), 'utf8'));
|
|
102
|
-
for (const k of ['status', 'intent', 'pi_pid', 'window', 'tmux_session']) {
|
|
103
|
-
assert.ok(!(k in raw), `meta.json must NOT contain runtime field "${k}"`);
|
|
104
|
-
}
|
|
105
|
-
// identity is still on disk
|
|
106
|
-
assert.equal(raw['kind'], 'general');
|
|
107
|
-
assert.equal(raw['node_id'], 'a');
|
|
108
|
-
// ...while the hydrated view returns runtime from the authoritative row.
|
|
109
|
-
const m = getNode('a');
|
|
110
|
-
assert.equal(m?.status, 'done');
|
|
111
|
-
assert.equal(m?.tmux_session, 's2');
|
|
112
|
-
assert.equal(m?.window, '@2');
|
|
113
|
-
assert.equal(m?.intent, 'refresh');
|
|
114
|
-
assert.equal(m?.pi_pid, 7);
|
|
115
|
-
});
|
|
116
|
-
// 4. backfill — v2-shaped db with runtime in meta migrates so runtime lands in
|
|
117
|
-
// the row.
|
|
118
|
-
test('backfill (v3): runtime in legacy meta.json is copied into the row', () => {
|
|
119
|
-
ensureHome();
|
|
120
|
-
// A legacy meta with runtime STILL on disk (pre-keystone shape).
|
|
121
|
-
mkdirSync(nodeDir('n1'), { recursive: true });
|
|
122
|
-
writeFileSync(nodeMetaPath('n1'), JSON.stringify({
|
|
123
|
-
node_id: 'n1',
|
|
124
|
-
name: 'N1',
|
|
125
|
-
created: '2020-01-01T00:00:00Z',
|
|
126
|
-
cwd: '/tmp/work',
|
|
127
|
-
kind: 'general',
|
|
128
|
-
mode: 'base',
|
|
129
|
-
lifecycle: 'terminal',
|
|
130
|
-
// legacy runtime, still living in meta.json:
|
|
131
|
-
status: 'idle',
|
|
132
|
-
intent: 'refresh',
|
|
133
|
-
pi_pid: 555,
|
|
134
|
-
window: '@9',
|
|
135
|
-
tmux_session: 'sess',
|
|
136
|
-
}, null, 2));
|
|
137
|
-
// Hand-build a v2-shaped db: all columns present, runtime seeded NULL,
|
|
138
|
-
// user_version 2 (so the runner runs ONLY v3 = backfill).
|
|
139
|
-
const raw = new DatabaseSync(canvasDbPath());
|
|
140
|
-
raw.exec(`
|
|
141
|
-
CREATE TABLE nodes (
|
|
142
|
-
node_id TEXT PRIMARY KEY,
|
|
143
|
-
name TEXT NOT NULL,
|
|
144
|
-
kind TEXT NOT NULL,
|
|
145
|
-
mode TEXT NOT NULL DEFAULT 'base',
|
|
146
|
-
lifecycle TEXT NOT NULL DEFAULT 'terminal',
|
|
147
|
-
status TEXT NOT NULL DEFAULT 'active',
|
|
148
|
-
cwd TEXT NOT NULL,
|
|
149
|
-
parent TEXT,
|
|
150
|
-
created TEXT NOT NULL,
|
|
151
|
-
intent TEXT,
|
|
152
|
-
pi_pid INTEGER,
|
|
153
|
-
"window" TEXT,
|
|
154
|
-
tmux_session TEXT
|
|
155
|
-
);
|
|
156
|
-
`);
|
|
157
|
-
raw
|
|
158
|
-
.prepare('INSERT INTO nodes (node_id, name, kind, mode, lifecycle, status, cwd, parent, created) VALUES (?,?,?,?,?,?,?,?,?)')
|
|
159
|
-
.run('n1', 'N1', 'general', 'base', 'terminal', 'idle', '/tmp/work', null, '2020-01-01T00:00:00Z');
|
|
160
|
-
raw.exec('PRAGMA user_version = 2;');
|
|
161
|
-
// Precondition: runtime columns are NULL before the backfill.
|
|
162
|
-
const before = raw
|
|
163
|
-
.prepare('SELECT intent, pi_pid, "window", tmux_session FROM nodes WHERE node_id = ?')
|
|
164
|
-
.get('n1');
|
|
165
|
-
assert.equal(before['intent'], null);
|
|
166
|
-
assert.equal(before['pi_pid'], null);
|
|
167
|
-
raw.close();
|
|
168
|
-
// openDb() runs the migration runner forward → v3 backfill copies meta→row.
|
|
169
|
-
const db = openDb();
|
|
170
|
-
assert.equal(db.prepare('PRAGMA user_version').get().user_version, MIGRATIONS.length);
|
|
171
|
-
const r = db
|
|
172
|
-
.prepare('SELECT status, intent, pi_pid, "window", tmux_session FROM nodes WHERE node_id = ?')
|
|
173
|
-
.get('n1');
|
|
174
|
-
assert.equal(r['status'], 'idle', 'status already mirrored — untouched');
|
|
175
|
-
assert.equal(r['intent'], 'refresh', 'intent backfilled from meta');
|
|
176
|
-
assert.equal(r['pi_pid'], 555, 'pi_pid backfilled from meta');
|
|
177
|
-
assert.equal(r['window'], '@9', 'window backfilled from meta');
|
|
178
|
-
assert.equal(r['tmux_session'], 'sess', 'tmux_session backfilled from meta');
|
|
179
|
-
// And the hydrated view now reflects it.
|
|
180
|
-
const m = getNode('n1');
|
|
181
|
-
assert.equal(m?.intent, 'refresh');
|
|
182
|
-
assert.equal(m?.pi_pid, 555);
|
|
183
|
-
assert.equal(m?.window, '@9');
|
|
184
|
-
assert.equal(m?.tmux_session, 'sess');
|
|
185
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// Completeness guard for the assembled parent-level listings.
|
|
2
|
-
// Run with: node --import tsx/esm --test src/core/__tests__/listing-completeness.test.ts
|
|
3
|
-
//
|
|
4
|
-
// Each non-hidden child surfaced in a branch's `help.listing` must carry a real
|
|
5
|
-
// self-description: both `description` and `whenToUse` non-empty. The listing is
|
|
6
|
-
// assembled by defineBranch from the child defs, so a blank attribute here means
|
|
7
|
-
// a child def forgot to declare its description/whenToUse. Walks the whole live
|
|
8
|
-
// command tree (buildRoot) so every shipped subtree is covered.
|
|
9
|
-
import { test } from 'node:test';
|
|
10
|
-
import assert from 'node:assert/strict';
|
|
11
|
-
import { buildRoot } from '../../build-root.js';
|
|
12
|
-
test('every non-hidden listing child declares description + whenToUse', async () => {
|
|
13
|
-
const root = await buildRoot();
|
|
14
|
-
const missing = [];
|
|
15
|
-
const walk = (branch, path) => {
|
|
16
|
-
for (const child of branch.help.listing ?? []) {
|
|
17
|
-
if (child.tier === 'hidden')
|
|
18
|
-
continue;
|
|
19
|
-
if (child.description.trim() === '' || child.whenToUse.trim() === '') {
|
|
20
|
-
missing.push(`${path} ${child.name}: empty description/whenToUse`);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
for (const child of branch.children) {
|
|
24
|
-
if (child.kind === 'branch')
|
|
25
|
-
walk(child, `${path} ${child.name}`);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
for (const subtree of root.subtrees)
|
|
29
|
-
walk(subtree, subtree.name);
|
|
30
|
-
assert.deepEqual(missing, [], `listing children missing self-description:\n${missing.join('\n')}`);
|
|
31
|
-
});
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// Regression test for the namespaced plugin-doc READ path in resolveMemoryDoc.
|
|
2
|
-
//
|
|
3
|
-
// Bug (substrate-unification cut f1b071b, fixed by 945d121): plugin memory docs
|
|
4
|
-
// mount at a virtual `<pluginName>/` namespace and ARE enumerated by
|
|
5
|
-
// listAllMemoryDocs, so `crtr memory list` advertises canonical names like
|
|
6
|
-
// `claude-capture/capture`. But findMemoryMatches (the direct-path lookup inside
|
|
7
|
-
// resolveMemoryDoc) only searched the NATIVE scopeMemoryDir, never each plugin's
|
|
8
|
-
// pluginMemoryDir — so `crtr memory read <plugin>/<leaf>` returned not_found for
|
|
9
|
-
// a name that `list` had just shown. Only the bare-leaf fallback (`read capture`)
|
|
10
|
-
// resolved. The fix taught findMemoryMatches to resolve `<plugin>/<rest>` against
|
|
11
|
-
// each enabled plugin's pluginMemoryDir, native-before-plugin precedence kept.
|
|
12
|
-
//
|
|
13
|
-
// Follow-up bug (same seat): the `<plugin>/<rest>` branch required a non-empty
|
|
14
|
-
// rest (`if (slash <= 0) continue`), so a BARE plugin name never tried the
|
|
15
|
-
// plugin-root INDEX.md — `read claude-godot-prompter` / `read ai` returned
|
|
16
|
-
// not_found even though `<plugin>/INDEX` and `<plugin>/<child>` resolved. The
|
|
17
|
-
// fix resolves a bare plugin name to `<plugin>/memory/INDEX.md`, mirroring the
|
|
18
|
-
// native bare-dir-name -> INDEX.md contract, native-before-plugin kept.
|
|
19
|
-
//
|
|
20
|
-
// This test FAILS on the pre-fix code (the fully-qualified and bare-plugin-name
|
|
21
|
-
// reads throw notFound) and PASSES on the current code.
|
|
22
|
-
//
|
|
23
|
-
// Run: node --import tsx/esm --test src/core/__tests__/memory-resolver.test.ts
|
|
24
|
-
import { test, before, after } from 'node:test';
|
|
25
|
-
import assert from 'node:assert/strict';
|
|
26
|
-
import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
27
|
-
import { tmpdir } from 'node:os';
|
|
28
|
-
import { join } from 'node:path';
|
|
29
|
-
import { resolveMemoryDoc } from '../memory-resolver.js';
|
|
30
|
-
import { resetScopeCache } from '../scope.js';
|
|
31
|
-
// Fixture: a temp PROJECT scope (a `.crouter/` dir discovered by walking up from
|
|
32
|
-
// cwd) holding both a native memory/ tree and one enabled fixture plugin whose
|
|
33
|
-
// memory/ tree mounts under the `fixplug/` namespace.
|
|
34
|
-
let projectDir;
|
|
35
|
-
let prevCwd;
|
|
36
|
-
const PLUGIN = 'fixplug';
|
|
37
|
-
function doc(name) {
|
|
38
|
-
return `---\nkind: knowledge\nwhen-and-why-to-read: fixture doc ${name}\n---\n\n# ${name}\n`;
|
|
39
|
-
}
|
|
40
|
-
before(() => {
|
|
41
|
-
prevCwd = process.cwd();
|
|
42
|
-
projectDir = mkdtempSync(join(tmpdir(), 'crtr-memres-'));
|
|
43
|
-
const scopeRoot = join(projectDir, '.crouter');
|
|
44
|
-
// Native scope docs. `fixplug/shared` is a native SHADOW of a plugin doc of
|
|
45
|
-
// the same canonical name — it must win (native-before-plugin precedence).
|
|
46
|
-
const memDir = join(scopeRoot, 'memory');
|
|
47
|
-
mkdirSync(join(memDir, PLUGIN), { recursive: true });
|
|
48
|
-
writeFileSync(join(memDir, PLUGIN, 'shared.md'), doc('native-shared'));
|
|
49
|
-
// Fixture plugin: enabled manifest + a flat substrate doc and a nested one.
|
|
50
|
-
const pluginRoot = join(scopeRoot, 'plugins', PLUGIN);
|
|
51
|
-
mkdirSync(join(pluginRoot, '.crouter-plugin'), { recursive: true });
|
|
52
|
-
writeFileSync(join(pluginRoot, '.crouter-plugin', 'plugin.json'), JSON.stringify({ name: PLUGIN, version: '0.0.0' }));
|
|
53
|
-
const pluginMem = join(pluginRoot, 'memory');
|
|
54
|
-
mkdirSync(join(pluginMem, 'area'), { recursive: true });
|
|
55
|
-
writeFileSync(join(pluginMem, 'widget.md'), doc('plugin-widget'));
|
|
56
|
-
writeFileSync(join(pluginMem, 'area', 'zone.md'), doc('plugin-zone'));
|
|
57
|
-
writeFileSync(join(pluginMem, 'shared.md'), doc('plugin-shared'));
|
|
58
|
-
// Plugin-root INDEX.md: a BARE plugin name must resolve this (mirrors the
|
|
59
|
-
// native bare-dir-name -> INDEX.md contract for the plugin mount root).
|
|
60
|
-
writeFileSync(join(pluginMem, 'INDEX.md'), doc('plugin-root-index'));
|
|
61
|
-
// Explicitly enable the plugin in config (default is enabled, but be robust).
|
|
62
|
-
writeFileSync(join(scopeRoot, 'config.json'), JSON.stringify({ plugins: { [PLUGIN]: { enabled: true } } }));
|
|
63
|
-
// Point the scope resolver at the fixture: project scope is found by walking
|
|
64
|
-
// up from cwd, so chdir into the temp dir and clear the cached project root.
|
|
65
|
-
process.chdir(projectDir);
|
|
66
|
-
resetScopeCache();
|
|
67
|
-
});
|
|
68
|
-
after(() => {
|
|
69
|
-
process.chdir(prevCwd);
|
|
70
|
-
resetScopeCache();
|
|
71
|
-
rmSync(projectDir, { recursive: true, force: true });
|
|
72
|
-
});
|
|
73
|
-
test('fully-qualified <plugin>/<leaf> resolves to the plugin substrate doc', () => {
|
|
74
|
-
// Pre-fix this threw notFound (findMemoryMatches never searched pluginMemoryDir).
|
|
75
|
-
const d = resolveMemoryDoc(`${PLUGIN}/widget`);
|
|
76
|
-
assert.equal(d.name, `${PLUGIN}/widget`);
|
|
77
|
-
assert.ok(d.path.endsWith(join('plugins', PLUGIN, 'memory', 'widget.md')));
|
|
78
|
-
});
|
|
79
|
-
test('fully-qualified multi-segment <plugin>/<a>/<b> resolves the nested doc', () => {
|
|
80
|
-
// Pre-fix this also threw notFound.
|
|
81
|
-
const d = resolveMemoryDoc(`${PLUGIN}/area/zone`);
|
|
82
|
-
assert.equal(d.name, `${PLUGIN}/area/zone`);
|
|
83
|
-
assert.ok(d.path.endsWith(join('plugins', PLUGIN, 'memory', 'area', 'zone.md')));
|
|
84
|
-
});
|
|
85
|
-
test('the bare leaf still resolves via last-segment fallback', () => {
|
|
86
|
-
// This worked even pre-fix (leaf fallback scans listAllMemoryDocs, which DID
|
|
87
|
-
// enumerate plugin docs) — the gap was the direct fully-qualified path only.
|
|
88
|
-
const d = resolveMemoryDoc('widget');
|
|
89
|
-
assert.equal(d.name, `${PLUGIN}/widget`);
|
|
90
|
-
});
|
|
91
|
-
test('bare plugin name resolves the plugin-root INDEX.md', () => {
|
|
92
|
-
// Regression: findMemoryMatches skipped the plugin branch for a bare name
|
|
93
|
-
// (`if (slash <= 0) continue`), so a bare plugin name never tried the
|
|
94
|
-
// plugin-root INDEX.md and returned not_found — even though `<plugin>/INDEX`
|
|
95
|
-
// resolved. The fix resolves the bare mount root to <plugin>/memory/INDEX.md.
|
|
96
|
-
const d = resolveMemoryDoc(PLUGIN);
|
|
97
|
-
assert.equal(d.name, PLUGIN);
|
|
98
|
-
assert.ok(d.path.endsWith(join('plugins', PLUGIN, 'memory', 'INDEX.md')));
|
|
99
|
-
});
|
|
100
|
-
test('native doc wins over a plugin doc of the same canonical name', () => {
|
|
101
|
-
// native-before-plugin precedence: findMemoryMatches checks scopeMemoryDir
|
|
102
|
-
// before pluginMemoryDir, so the native shadow at memory/fixplug/shared.md
|
|
103
|
-
// wins over the plugin's memory/shared.md.
|
|
104
|
-
const d = resolveMemoryDoc(`${PLUGIN}/shared`);
|
|
105
|
-
assert.equal(d.name, `${PLUGIN}/shared`);
|
|
106
|
-
assert.ok(d.path.endsWith(join('memory', PLUGIN, 'shared.md')));
|
|
107
|
-
assert.ok(!d.path.includes(join('plugins', PLUGIN)));
|
|
108
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// Tests for the substrate memory surface in the orchestration kernel:
|
|
2
|
-
// 1. The kernel names the three memory scopes and the document substrate flow
|
|
3
|
-
// (crtr memory write/list/find/read).
|
|
4
|
-
// 2. Promotion guidance names the three stores without re-listing their dirs.
|
|
5
|
-
//
|
|
6
|
-
// Run: node --import tsx/esm --test src/core/__tests__/memory.test.ts
|
|
7
|
-
import { test, before, beforeEach, after } from 'node:test';
|
|
8
|
-
import assert from 'node:assert/strict';
|
|
9
|
-
import { mkdtempSync, rmSync } from 'node:fs';
|
|
10
|
-
import { tmpdir } from 'node:os';
|
|
11
|
-
import { join } from 'node:path';
|
|
12
|
-
import { closeDb } from '../canvas/db.js';
|
|
13
|
-
import { spawnNode } from '../runtime/nodes.js';
|
|
14
|
-
import { promote } from '../runtime/promote.js';
|
|
15
|
-
import { personaDrift } from '../runtime/persona.js';
|
|
16
|
-
import { loadKernel } from '../personas/index.js';
|
|
17
|
-
let home;
|
|
18
|
-
before(() => {
|
|
19
|
-
home = mkdtempSync(join(tmpdir(), 'crtr-memory-'));
|
|
20
|
-
process.env['CRTR_HOME'] = home;
|
|
21
|
-
});
|
|
22
|
-
beforeEach(() => {
|
|
23
|
-
closeDb();
|
|
24
|
-
rmSync(home, { recursive: true, force: true });
|
|
25
|
-
});
|
|
26
|
-
after(() => {
|
|
27
|
-
closeDb();
|
|
28
|
-
rmSync(home, { recursive: true, force: true });
|
|
29
|
-
delete process.env['CRTR_HOME'];
|
|
30
|
-
});
|
|
31
|
-
// ---------------------------------------------------------------------------
|
|
32
|
-
// Kernel + guidance: the document substrate flow
|
|
33
|
-
// ---------------------------------------------------------------------------
|
|
34
|
-
test('the orchestration kernel names the three stores and the substrate commands', () => {
|
|
35
|
-
const kernel = loadKernel();
|
|
36
|
-
for (const store of ['user-global', 'project', 'node-local']) {
|
|
37
|
-
assert.ok(kernel.includes(store), `kernel names the ${store} store`);
|
|
38
|
-
}
|
|
39
|
-
// The substrate commands must be present.
|
|
40
|
-
assert.ok(kernel.includes('crtr memory write'), 'kernel mentions crtr memory write');
|
|
41
|
-
assert.ok(kernel.includes('crtr memory list'), 'kernel mentions crtr memory list');
|
|
42
|
-
assert.ok(kernel.includes('crtr memory find'), 'kernel mentions crtr memory find');
|
|
43
|
-
assert.ok(kernel.includes('crtr memory read'), 'kernel mentions crtr memory read');
|
|
44
|
-
// It teaches the substrate flow only — no MEMORY.md pointer-line index.
|
|
45
|
-
assert.ok(!kernel.includes('MEMORY.md'), 'kernel does not mention MEMORY.md');
|
|
46
|
-
assert.ok(!kernel.includes('pointer line'), 'kernel does not teach the pointer-line flow');
|
|
47
|
-
});
|
|
48
|
-
test('promotion guidance references the three stores; no <memory> block', () => {
|
|
49
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null });
|
|
50
|
-
promote(meta.node_id);
|
|
51
|
-
const drift = personaDrift(meta.node_id);
|
|
52
|
-
assert.ok(drift !== null, 'promotion drifts the persona');
|
|
53
|
-
const guidance = drift.guidance;
|
|
54
|
-
// It NAMES the three stores so a promoting node knows its memory scopes.
|
|
55
|
-
for (const store of ['user-global', 'project', 'node-local']) {
|
|
56
|
-
assert.ok(guidance.includes(store), `guidance names the ${store} store`);
|
|
57
|
-
}
|
|
58
|
-
// The guidance points at the substrate flow, not a <memory> block.
|
|
59
|
-
assert.ok(!guidance.includes('<memory>'), 'guidance does not point at a <memory> block');
|
|
60
|
-
});
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
// Run with: node --import tsx/esm --test src/core/__tests__/pane-column.test.ts
|
|
2
|
-
//
|
|
3
|
-
// STEP 2 of the placement/focus migration: the `pane` runtime column —
|
|
4
|
-
// LOCATION's authoritative handle (the durable tmux `%pane_id`). This step is
|
|
5
|
-
// PURELY ADDITIVE: the column exists, setPresence writes it, getNode/getRow read
|
|
6
|
-
// it back, but nothing READS it for behavior yet (population wires up in Steps
|
|
7
|
-
// 3+). Covers:
|
|
8
|
-
// - migration v5 adds `pane` to a fresh db (and a legacy v4 db migrates up)
|
|
9
|
-
// - createNode seeds pane; setPresence writes it atomically with window/session
|
|
10
|
-
// - getNode (hydrated view) + getRow (row) both read pane back
|
|
11
|
-
// - a row never given a pane reads pane=null (legacy/back-compat)
|
|
12
|
-
// - the migration is idempotent / forward-only (re-open is a no-op)
|
|
13
|
-
import { test, before, beforeEach, after } from 'node:test';
|
|
14
|
-
import assert from 'node:assert/strict';
|
|
15
|
-
import { mkdtempSync, rmSync } from 'node:fs';
|
|
16
|
-
import { tmpdir } from 'node:os';
|
|
17
|
-
import { join } from 'node:path';
|
|
18
|
-
import { DatabaseSync } from 'node:sqlite';
|
|
19
|
-
import { createNode, getNode, getRow, setPresence } from '../canvas/canvas.js';
|
|
20
|
-
import { openDb, closeDb, migrate, MIGRATIONS } from '../canvas/db.js';
|
|
21
|
-
import { canvasDbPath, ensureHome } from '../canvas/paths.js';
|
|
22
|
-
let home;
|
|
23
|
-
function node(id, over = {}) {
|
|
24
|
-
return {
|
|
25
|
-
node_id: id,
|
|
26
|
-
name: id,
|
|
27
|
-
created: new Date().toISOString(),
|
|
28
|
-
cwd: '/tmp/work',
|
|
29
|
-
kind: 'general',
|
|
30
|
-
mode: 'base',
|
|
31
|
-
lifecycle: 'terminal',
|
|
32
|
-
status: 'active',
|
|
33
|
-
...over,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function userVersion(db) {
|
|
37
|
-
return db.prepare('PRAGMA user_version').get().user_version;
|
|
38
|
-
}
|
|
39
|
-
function nodeColumns(db) {
|
|
40
|
-
return db.prepare('PRAGMA table_info(nodes)').all().map((r) => r.name);
|
|
41
|
-
}
|
|
42
|
-
before(() => {
|
|
43
|
-
home = mkdtempSync(join(tmpdir(), 'crtr-pane-'));
|
|
44
|
-
process.env['CRTR_HOME'] = home;
|
|
45
|
-
});
|
|
46
|
-
beforeEach(() => {
|
|
47
|
-
closeDb();
|
|
48
|
-
rmSync(home, { recursive: true, force: true });
|
|
49
|
-
});
|
|
50
|
-
after(() => {
|
|
51
|
-
closeDb();
|
|
52
|
-
rmSync(home, { recursive: true, force: true });
|
|
53
|
-
delete process.env['CRTR_HOME'];
|
|
54
|
-
});
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
// Migration v5 — the additive `pane` column.
|
|
57
|
-
// ---------------------------------------------------------------------------
|
|
58
|
-
test('a fresh db migrates to the latest version and has the pane column', () => {
|
|
59
|
-
const db = openDb();
|
|
60
|
-
assert.equal(userVersion(db), MIGRATIONS.length);
|
|
61
|
-
assert.ok(nodeColumns(db).includes('pane'), 'nodes.pane exists on a fresh db');
|
|
62
|
-
});
|
|
63
|
-
test('a v4 db migrates forward, adding pane=NULL without disturbing existing data', () => {
|
|
64
|
-
// Hand-build a db at exactly v4: baseline + the four v2 runtime columns +
|
|
65
|
-
// edges WITH the v4 FK shape, user_version=4 — the shape just before v5.
|
|
66
|
-
ensureHome();
|
|
67
|
-
const raw = new DatabaseSync(canvasDbPath());
|
|
68
|
-
raw.exec(`
|
|
69
|
-
CREATE TABLE nodes (
|
|
70
|
-
node_id TEXT PRIMARY KEY, name TEXT NOT NULL, kind TEXT NOT NULL,
|
|
71
|
-
mode TEXT NOT NULL DEFAULT 'base', lifecycle TEXT NOT NULL DEFAULT 'terminal',
|
|
72
|
-
status TEXT NOT NULL DEFAULT 'active', cwd TEXT NOT NULL, parent TEXT,
|
|
73
|
-
created TEXT NOT NULL,
|
|
74
|
-
intent TEXT, pi_pid INTEGER, window TEXT, tmux_session TEXT
|
|
75
|
-
);
|
|
76
|
-
CREATE TABLE edges (
|
|
77
|
-
type TEXT NOT NULL, from_id TEXT NOT NULL, to_id TEXT NOT NULL,
|
|
78
|
-
active INTEGER NOT NULL DEFAULT 1, created TEXT NOT NULL,
|
|
79
|
-
PRIMARY KEY (type, from_id, to_id),
|
|
80
|
-
FOREIGN KEY (from_id) REFERENCES nodes(node_id) ON DELETE CASCADE,
|
|
81
|
-
FOREIGN KEY (to_id) REFERENCES nodes(node_id) ON DELETE CASCADE
|
|
82
|
-
);
|
|
83
|
-
PRAGMA user_version = 4;
|
|
84
|
-
`);
|
|
85
|
-
raw
|
|
86
|
-
.prepare('INSERT INTO nodes (node_id, name, kind, status, cwd, created, window, tmux_session) VALUES (?,?,?,?,?,?,?,?)')
|
|
87
|
-
.run('legacy', 'Legacy', 'general', 'idle', '/tmp/work', '2020-01-01T00:00:00Z', '@9', 'crtr');
|
|
88
|
-
assert.equal(userVersion(raw), 4);
|
|
89
|
-
assert.ok(!nodeColumns(raw).includes('pane'), 'precondition: no pane column at v4');
|
|
90
|
-
raw.close();
|
|
91
|
-
// openDb() runs v5 forward.
|
|
92
|
-
const db = openDb();
|
|
93
|
-
assert.equal(userVersion(db), MIGRATIONS.length);
|
|
94
|
-
assert.ok(nodeColumns(db).includes('pane'), 'pane column added by v5');
|
|
95
|
-
// The pre-existing row is intact; its pane backfills NULL (additive default).
|
|
96
|
-
const row = db
|
|
97
|
-
.prepare('SELECT status, window, tmux_session, pane FROM nodes WHERE node_id = ?')
|
|
98
|
-
.get('legacy');
|
|
99
|
-
assert.equal(row['status'], 'idle', 'existing status untouched');
|
|
100
|
-
assert.equal(row['window'], '@9', 'existing window untouched');
|
|
101
|
-
assert.equal(row['tmux_session'], 'crtr', 'existing session untouched');
|
|
102
|
-
assert.equal(row['pane'], null, 'pane defaults NULL for a legacy row');
|
|
103
|
-
});
|
|
104
|
-
test('the migration is idempotent / forward-only on re-run and re-open', () => {
|
|
105
|
-
const db = openDb();
|
|
106
|
-
assert.equal(userVersion(db), MIGRATIONS.length);
|
|
107
|
-
// Re-running migrate() is a no-op — the gate skips applied steps, so the v5
|
|
108
|
-
// ALTER ADD COLUMN never fires twice (which would throw "duplicate column").
|
|
109
|
-
assert.doesNotThrow(() => migrate(db));
|
|
110
|
-
assert.equal(userVersion(db), MIGRATIONS.length);
|
|
111
|
-
// Re-opening from disk is likewise a no-op.
|
|
112
|
-
closeDb();
|
|
113
|
-
const db2 = openDb();
|
|
114
|
-
assert.equal(userVersion(db2), MIGRATIONS.length);
|
|
115
|
-
assert.ok(nodeColumns(db2).includes('pane'));
|
|
116
|
-
});
|
|
117
|
-
// ---------------------------------------------------------------------------
|
|
118
|
-
// Round-trip: pane is a RUNTIME field, authoritative in the row, read back by
|
|
119
|
-
// both the hydrated view (getNode) and the row (getRow).
|
|
120
|
-
// ---------------------------------------------------------------------------
|
|
121
|
-
test('createNode seeds pane and getNode/getRow read it back', () => {
|
|
122
|
-
createNode(node('n', { tmux_session: 'crtr', window: '@1', pane: '%5' }));
|
|
123
|
-
assert.equal(getNode('n')?.pane, '%5', 'getNode hydrates pane from the row');
|
|
124
|
-
assert.equal(getRow('n')?.pane, '%5', 'getRow returns pane on the NodeRow');
|
|
125
|
-
});
|
|
126
|
-
test('a node created without a pane reads pane=null (legacy / back-compat)', () => {
|
|
127
|
-
createNode(node('n', { tmux_session: 'crtr', window: '@1' }));
|
|
128
|
-
assert.equal(getNode('n')?.pane, null, 'no pane given → null on the hydrated view');
|
|
129
|
-
assert.equal(getRow('n')?.pane, null, 'no pane given → null on the row');
|
|
130
|
-
});
|
|
131
|
-
test('setPresence writes pane atomically alongside window + session', () => {
|
|
132
|
-
createNode(node('n'));
|
|
133
|
-
setPresence('n', { tmux_session: 'user-sess', window: '@2', pane: '%7' });
|
|
134
|
-
const m = getNode('n');
|
|
135
|
-
assert.equal(m?.pane, '%7', 'setPresence wrote the pane');
|
|
136
|
-
assert.equal(m?.window, '@2', 'setPresence wrote the window in the same statement');
|
|
137
|
-
assert.equal(m?.tmux_session, 'user-sess', 'setPresence wrote the session in the same statement');
|
|
138
|
-
});
|
|
139
|
-
test('setPresence without pane writes null (the Step-2 contract: nobody reads pane yet)', () => {
|
|
140
|
-
createNode(node('n', { pane: '%7' }));
|
|
141
|
-
assert.equal(getNode('n')?.pane, '%7');
|
|
142
|
-
// A presence write that omits pane resets it to null — fine for Step 2 because
|
|
143
|
-
// no reader depends on pane until the placement layer lands (Steps 3+).
|
|
144
|
-
setPresence('n', { tmux_session: 'crtr', window: '@3' });
|
|
145
|
-
assert.equal(getNode('n')?.pane, null, 'omitted pane → null (no half-written LOCATION)');
|
|
146
|
-
});
|
|
147
|
-
test('pane is a RUNTIME field — it never leaks into meta.json identity', () => {
|
|
148
|
-
createNode(node('n', { pane: '%5' }));
|
|
149
|
-
setPresence('n', { pane: '%9', window: '@1', tmux_session: 'crtr' });
|
|
150
|
-
// meta.json is durable identity only; the runtime pane lives in the row.
|
|
151
|
-
const onDisk = openDb().prepare('SELECT pane FROM nodes WHERE node_id = ?').get('n');
|
|
152
|
-
assert.equal(onDisk.pane, '%9', 'pane is authoritative in the row');
|
|
153
|
-
});
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// Run: node --import tsx/esm --test src/core/__tests__/persona-compose.test.ts
|
|
2
|
-
//
|
|
3
|
-
// The static system-prompt composer (core/personas/resolve.ts) varies the
|
|
4
|
-
// runtime protocol on TWO axes beyond kind×mode:
|
|
5
|
-
// • lifecycle (terminal | resident) — the "how you end" contract.
|
|
6
|
-
// • spine position (hasManager) — whether the push-up family is taught AT ALL.
|
|
7
|
-
// These assert the four corners, especially the resident+no-manager root that
|
|
8
|
-
// must never hear about `push` (final OR update).
|
|
9
|
-
import { test } from 'node:test';
|
|
10
|
-
import assert from 'node:assert/strict';
|
|
11
|
-
import { resolve } from '../personas/index.js';
|
|
12
|
-
// The lifecycle fragment is identified by its signature contract phrase, not by
|
|
13
|
-
// the raw "push final" substring — the resident fragment legitimately NAMES
|
|
14
|
-
// `push final` only to forbid it. The kind body is now lifecycle-neutral, so the
|
|
15
|
-
// only finish contract in the prompt is whichever fragment composed.
|
|
16
|
-
const TERMINAL_CONTRACT = /owe a final result and you reap when done/i;
|
|
17
|
-
const RESIDENT_CONTRACT = /never forced to submit a final result/i;
|
|
18
|
-
const PUSH_UP = /crtr push (update|urgent)/i;
|
|
19
|
-
test('terminal + has-manager (the default child worker): terminal finish + push up', () => {
|
|
20
|
-
const p = resolve('general', 'base', { lifecycle: 'terminal', hasManager: true });
|
|
21
|
-
assert.match(p.systemPrompt, TERMINAL_CONTRACT, 'a terminal node owes a final and finishes via push final');
|
|
22
|
-
assert.doesNotMatch(p.systemPrompt, RESIDENT_CONTRACT);
|
|
23
|
-
assert.match(p.systemPrompt, PUSH_UP, 'a managed node reports up via push update/urgent');
|
|
24
|
-
assert.equal(p.lifecycle, 'terminal');
|
|
25
|
-
});
|
|
26
|
-
test('resident + no-manager (the user-facing root): resident finish, and NO push-up family at all', () => {
|
|
27
|
-
const p = resolve('general', 'base', { lifecycle: 'resident', hasManager: false });
|
|
28
|
-
assert.match(p.systemPrompt, RESIDENT_CONTRACT, 'a resident root is never forced to submit');
|
|
29
|
-
assert.doesNotMatch(p.systemPrompt, TERMINAL_CONTRACT, 'it does not get the terminal finish contract');
|
|
30
|
-
assert.doesNotMatch(p.systemPrompt, PUSH_UP, 'a top-of-spine root has nobody to push up to');
|
|
31
|
-
assert.match(p.systemPrompt, /top of your spine/i, 'oriented as top-of-spine');
|
|
32
|
-
assert.match(p.systemPrompt, /dormant/i, 'told it goes dormant and wakes');
|
|
33
|
-
});
|
|
34
|
-
test('resident + has-manager (interactable sub-orchestrator): resident finish, but still push up', () => {
|
|
35
|
-
const p = resolve('general', 'base', { lifecycle: 'resident', hasManager: true });
|
|
36
|
-
assert.match(p.systemPrompt, RESIDENT_CONTRACT, 'resident is never forced to submit a final');
|
|
37
|
-
assert.doesNotMatch(p.systemPrompt, TERMINAL_CONTRACT);
|
|
38
|
-
assert.match(p.systemPrompt, PUSH_UP, 'still reports progress up to its manager');
|
|
39
|
-
});
|
|
40
|
-
test('terminal + no-manager (a terminal root): terminal finish, but no push up', () => {
|
|
41
|
-
const p = resolve('general', 'base', { lifecycle: 'terminal', hasManager: false });
|
|
42
|
-
assert.match(p.systemPrompt, TERMINAL_CONTRACT, 'terminal still finishes via push final (self-completes)');
|
|
43
|
-
assert.doesNotMatch(p.systemPrompt, PUSH_UP, 'nobody subscribes, so no report-up family');
|
|
44
|
-
});
|
|
45
|
-
test('the lifecycle-neutral base survives in every corner (delegate + human ask)', () => {
|
|
46
|
-
for (const hasManager of [true, false]) {
|
|
47
|
-
for (const lifecycle of ['terminal', 'resident']) {
|
|
48
|
-
const p = resolve('general', 'base', { lifecycle, hasManager });
|
|
49
|
-
assert.match(p.systemPrompt, /crtr node new/, `delegate verb present (${lifecycle}/${hasManager})`);
|
|
50
|
-
assert.match(p.systemPrompt, /crtr human ask/, `human-ask present (${lifecycle}/${hasManager})`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
});
|