@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,65 +0,0 @@
|
|
|
1
|
-
// Run: node --import tsx/esm --test src/core/__tests__/persona-subkind.test.ts
|
|
2
|
-
//
|
|
3
|
-
// Scoped persona sub-personas: a kind has specialist reviewer personas at
|
|
4
|
-
// `<kind>/reviewers/<name>/PERSONA.md`, enumerated by `subPersonasFor(kind)` and
|
|
5
|
-
// rendered into that kind's composed prompt (and nowhere else) by `resolve`.
|
|
6
|
-
// Visibility = membership (the sub-persona's `availableTo`, default = its
|
|
7
|
-
// top-level ancestor kind): only `plan` sees the `plan/reviewers/*` menu; the
|
|
8
|
-
// `reviewers/` grouping dir is transparent so the kind string keeps it; the
|
|
9
|
-
// sub-personas never pollute the global `availableKinds()` list; and a
|
|
10
|
-
// sub-persona itself boots as a real composed persona with the terminal finish
|
|
11
|
-
// contract.
|
|
12
|
-
import { test } from 'node:test';
|
|
13
|
-
import assert from 'node:assert/strict';
|
|
14
|
-
import { resolve } from '../personas/resolve.js';
|
|
15
|
-
import { subPersonasFor, availableKinds } from '../personas/loader.js';
|
|
16
|
-
const PLAN_REVIEWER_KINDS = [
|
|
17
|
-
'plan/reviewers/architecture-fit',
|
|
18
|
-
'plan/reviewers/code-smells',
|
|
19
|
-
'plan/reviewers/pattern-consistency',
|
|
20
|
-
'plan/reviewers/requirements-coverage',
|
|
21
|
-
'plan/reviewers/security',
|
|
22
|
-
];
|
|
23
|
-
const MENU_HEADER = 'Sub-personas you may spawn';
|
|
24
|
-
test('subPersonasFor("plan") returns the five reviewers sorted, each with a non-empty whenToUse', () => {
|
|
25
|
-
const subs = subPersonasFor('plan');
|
|
26
|
-
assert.deepEqual(subs.map((s) => s.kind), PLAN_REVIEWER_KINDS, 'the five plan reviewer kind strings in sorted order — the transparent reviewers/ dir keeps the full kind path');
|
|
27
|
-
for (const s of subs) {
|
|
28
|
-
assert.ok(s.whenToUse.length > 0, `${s.kind} carries a non-empty whenToUse`);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
test('availability is membership: a kind with no available sub-personas yields []', () => {
|
|
32
|
-
assert.deepEqual(subPersonasFor('explore'), [], 'no sub-persona is availableTo explore');
|
|
33
|
-
assert.deepEqual(subPersonasFor('plan/reviewers/security'), [], 'the five reviewers default availableTo:[plan] — none are available to a reviewer kind');
|
|
34
|
-
});
|
|
35
|
-
test('availableKinds() contains no plan/reviewers/* — sub-personas never pollute the global list', () => {
|
|
36
|
-
const kinds = availableKinds();
|
|
37
|
-
for (const k of PLAN_REVIEWER_KINDS) {
|
|
38
|
-
assert.ok(!kinds.includes(k), `${k} must not appear in availableKinds()`);
|
|
39
|
-
}
|
|
40
|
-
assert.ok(!kinds.some((k) => k.includes('reviewers')), 'no kind contains "reviewers"');
|
|
41
|
-
});
|
|
42
|
-
test('resolve(plan, orchestrator) renders the menu with all five reviewer strings', () => {
|
|
43
|
-
const p = resolve('plan', 'orchestrator', { lifecycle: 'terminal', hasManager: true });
|
|
44
|
-
assert.match(p.systemPrompt, new RegExp(MENU_HEADER), 'the menu header is present');
|
|
45
|
-
for (const k of PLAN_REVIEWER_KINDS) {
|
|
46
|
-
assert.ok(p.systemPrompt.includes(k), `menu lists ${k}`);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
test('resolve(plan, base) ALSO renders the menu (render-for-both decision)', () => {
|
|
50
|
-
const p = resolve('plan', 'base', { lifecycle: 'terminal', hasManager: true });
|
|
51
|
-
assert.match(p.systemPrompt, new RegExp(MENU_HEADER), 'a base plan node sees the roster too');
|
|
52
|
-
for (const k of PLAN_REVIEWER_KINDS) {
|
|
53
|
-
assert.ok(p.systemPrompt.includes(k), `menu lists ${k}`);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
test('resolve(general, orchestrator) does NOT render the menu (visibility = membership)', () => {
|
|
57
|
-
const p = resolve('general', 'orchestrator', { lifecycle: 'terminal', hasManager: true });
|
|
58
|
-
assert.doesNotMatch(p.systemPrompt, new RegExp(MENU_HEADER), 'general owns no roster, so no menu');
|
|
59
|
-
});
|
|
60
|
-
test('a reviewer sub-kind boots as a real composed persona with the terminal finish contract and no menu', () => {
|
|
61
|
-
const p = resolve('plan/reviewers/security', 'base', { lifecycle: 'terminal', hasManager: true });
|
|
62
|
-
assert.ok(p.systemPrompt.includes('concrete exploit path'), 'the security-reviewer lens expertise is present');
|
|
63
|
-
assert.match(p.systemPrompt, /owe a final result and you reap when done/i, 'the terminal finish contract composed in — it boots as a real persona');
|
|
64
|
-
assert.doesNotMatch(p.systemPrompt, new RegExp(MENU_HEADER), 'a sub-kind owns no roster of its own — it renders no menu');
|
|
65
|
-
});
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// Run: node --import tsx/esm --test src/core/__tests__/persona.test.ts
|
|
2
|
-
//
|
|
3
|
-
// The persona-transition mechanism: the two-axis model (mode × lifecycle) is
|
|
4
|
-
// switchable independently, and `personaDrift` detects when a node's live
|
|
5
|
-
// {mode,lifecycle} has diverged from the `persona_ack` it was last given
|
|
6
|
-
// guidance for (the central injector then delivers + commits).
|
|
7
|
-
import { test, before, after, beforeEach } 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 { spawnNode } from '../runtime/nodes.js';
|
|
13
|
-
import { promote } from '../runtime/promote.js';
|
|
14
|
-
import { getNode, updateNode } from '../canvas/canvas.js';
|
|
15
|
-
import { closeDb } from '../canvas/db.js';
|
|
16
|
-
import { personaDrift, commitPersonaAck, transitionGuidance, } from '../runtime/persona.js';
|
|
17
|
-
let home;
|
|
18
|
-
before(() => {
|
|
19
|
-
home = mkdtempSync(join(tmpdir(), 'crtr-persona-'));
|
|
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
|
-
// Birth: a fresh node is born acked to its own persona — no spurious drift.
|
|
33
|
-
// ---------------------------------------------------------------------------
|
|
34
|
-
test('a freshly spawned node has no persona drift (born acked to its own persona)', () => {
|
|
35
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
36
|
-
assert.deepEqual(meta.persona_ack, { mode: 'base', lifecycle: 'terminal' });
|
|
37
|
-
assert.equal(personaDrift(meta.node_id), null, 'no drift at birth');
|
|
38
|
-
});
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Fix 1: promote keeps lifecycle by default; --resident flips it.
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
test('promote flips mode→orchestrator and KEEPS lifecycle terminal by default', () => {
|
|
43
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
44
|
-
const res = promote(meta.node_id);
|
|
45
|
-
assert.equal(res.meta.mode, 'orchestrator');
|
|
46
|
-
assert.equal(res.meta.lifecycle, 'terminal', 'lifecycle is NOT forced to resident');
|
|
47
|
-
});
|
|
48
|
-
test('promote with resident:true ALSO flips lifecycle→resident', () => {
|
|
49
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
50
|
-
const res = promote(meta.node_id, { resident: true });
|
|
51
|
-
assert.equal(res.meta.mode, 'orchestrator');
|
|
52
|
-
assert.equal(res.meta.lifecycle, 'resident', 'resident flag flips lifecycle');
|
|
53
|
-
});
|
|
54
|
-
test('promote no longer returns a guidance field (injector is the single source)', () => {
|
|
55
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
56
|
-
const res = promote(meta.node_id);
|
|
57
|
-
assert.equal('guidance' in res, false, 'promote() returns facts only');
|
|
58
|
-
});
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
// personaDrift detect + commit.
|
|
61
|
-
// ---------------------------------------------------------------------------
|
|
62
|
-
test('personaDrift detects base→orchestrator after promote, then clears on commit', () => {
|
|
63
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
64
|
-
promote(meta.node_id); // mode→orchestrator, lifecycle stays terminal
|
|
65
|
-
const drift = personaDrift(meta.node_id);
|
|
66
|
-
assert.ok(drift !== null, 'a transition is detected');
|
|
67
|
-
assert.deepEqual(drift?.from, { mode: 'base', lifecycle: 'terminal' });
|
|
68
|
-
assert.deepEqual(drift?.to, { mode: 'orchestrator', lifecycle: 'terminal' });
|
|
69
|
-
assert.ok((drift?.guidance ?? '').length > 0, 'guidance is built');
|
|
70
|
-
// Caller commits the ack after delivery — drift then clears (idempotent).
|
|
71
|
-
commitPersonaAck(meta.node_id, drift.to);
|
|
72
|
-
assert.equal(personaDrift(meta.node_id), null, 'no drift after the ack is committed');
|
|
73
|
-
assert.deepEqual(getNode(meta.node_id)?.persona_ack, { mode: 'orchestrator', lifecycle: 'terminal' });
|
|
74
|
-
});
|
|
75
|
-
test('personaDrift detects a lifecycle-only flip (terminal→resident)', () => {
|
|
76
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
77
|
-
// Flip only the lifecycle axis — mode unchanged.
|
|
78
|
-
updateNode(meta.node_id, { lifecycle: 'resident' });
|
|
79
|
-
const drift = personaDrift(meta.node_id);
|
|
80
|
-
assert.ok(drift !== null);
|
|
81
|
-
assert.deepEqual(drift?.from, { mode: 'base', lifecycle: 'terminal' });
|
|
82
|
-
assert.deepEqual(drift?.to, { mode: 'base', lifecycle: 'resident' });
|
|
83
|
-
assert.match(drift?.guidance ?? '', /resident/i, 'guidance describes the resident state');
|
|
84
|
-
});
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
// transitionGuidance: each lifecycle case + both-axes concatenation.
|
|
87
|
-
// ---------------------------------------------------------------------------
|
|
88
|
-
test('transitionGuidance terminal→resident says it is never forced to submit a final', () => {
|
|
89
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
90
|
-
const g = transitionGuidance(meta.node_id, { mode: 'base', lifecycle: 'terminal' }, { mode: 'base', lifecycle: 'resident' });
|
|
91
|
-
assert.match(g, /resident/i);
|
|
92
|
-
assert.match(g, /never/i);
|
|
93
|
-
assert.doesNotMatch(g, /orchestrator/i, 'a lifecycle-only change carries no mode section');
|
|
94
|
-
});
|
|
95
|
-
test('transitionGuidance resident→terminal says it owes a final up the spine', () => {
|
|
96
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'resident' });
|
|
97
|
-
const g = transitionGuidance(meta.node_id, { mode: 'base', lifecycle: 'resident' }, { mode: 'base', lifecycle: 'terminal' });
|
|
98
|
-
assert.match(g, /terminal/i);
|
|
99
|
-
assert.match(g, /push final/i);
|
|
100
|
-
});
|
|
101
|
-
test('transitionGuidance concatenates BOTH sections when both axes change', () => {
|
|
102
|
-
const meta = spawnNode({ kind: 'general', cwd: '/tmp/work', parent: null, lifecycle: 'terminal' });
|
|
103
|
-
promote(meta.node_id); // ensure roadmap/memory seeded for the orchestrator section
|
|
104
|
-
const g = transitionGuidance(meta.node_id, { mode: 'base', lifecycle: 'terminal' }, { mode: 'orchestrator', lifecycle: 'resident' });
|
|
105
|
-
assert.match(g, /orchestrator/i, 'carries the mode (base→orchestrator) section');
|
|
106
|
-
assert.match(g, /resident/i, 'carries the lifecycle (terminal→resident) section');
|
|
107
|
-
});
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
// Regression tests for unknown-subcommand error recovery hints.
|
|
2
|
-
// Run with: node --import tsx/esm --test src/core/__tests__/unknown-path.test.ts
|
|
3
|
-
//
|
|
4
|
-
// The `next` road sign must name a command that actually exists: the FULL path
|
|
5
|
-
// to the deepest matched node, not just its local name. A prior bug emitted
|
|
6
|
-
// `crtr find -h` (dropping the `skill` parent) when `crtr skill find bogus` was
|
|
7
|
-
// invoked, sending the caller to a nonexistent top-level command.
|
|
8
|
-
import { test, describe } from 'node:test';
|
|
9
|
-
import assert from 'node:assert/strict';
|
|
10
|
-
import { defineRoot, defineBranch, defineLeaf, walk, unknownPathError } from '../command.js';
|
|
11
|
-
const leaf = defineLeaf({
|
|
12
|
-
name: 'search',
|
|
13
|
-
description: 'search',
|
|
14
|
-
whenToUse: 'x',
|
|
15
|
-
help: { name: 'search', summary: 'search', output: [], outputKind: 'object', effects: ['None. Read-only.'] },
|
|
16
|
-
run: async () => ({}),
|
|
17
|
-
});
|
|
18
|
-
const findBranch = defineBranch({
|
|
19
|
-
name: 'find',
|
|
20
|
-
description: 'find',
|
|
21
|
-
whenToUse: 'x',
|
|
22
|
-
help: { name: 'find', summary: 'find' },
|
|
23
|
-
children: [leaf],
|
|
24
|
-
});
|
|
25
|
-
const skillBranch = defineBranch({
|
|
26
|
-
name: 'skill',
|
|
27
|
-
description: 'skill',
|
|
28
|
-
whenToUse: 'x',
|
|
29
|
-
help: { name: 'skill', summary: 'skill' },
|
|
30
|
-
rootEntry: { concept: 'skill', desc: 'skill', useWhen: 'x' },
|
|
31
|
-
children: [findBranch],
|
|
32
|
-
});
|
|
33
|
-
const root = defineRoot({
|
|
34
|
-
tagline: 'test runtime',
|
|
35
|
-
globals: [],
|
|
36
|
-
subtrees: [skillBranch],
|
|
37
|
-
});
|
|
38
|
-
function nextHint(...tokens) {
|
|
39
|
-
const { node, path, remaining } = walk(root, tokens);
|
|
40
|
-
const err = unknownPathError(node, path, remaining[0]);
|
|
41
|
-
return err.details.next;
|
|
42
|
-
}
|
|
43
|
-
describe('unknown-path error: recovery hint names the full valid path', () => {
|
|
44
|
-
test('root-level unknown points at `crtr -h`', () => {
|
|
45
|
-
assert.match(nextHint('bogus'), /Run `crtr -h`/);
|
|
46
|
-
});
|
|
47
|
-
test('one-level unknown points at `crtr skill -h`', () => {
|
|
48
|
-
assert.match(nextHint('skill', 'bogus'), /Run `crtr skill -h`/);
|
|
49
|
-
});
|
|
50
|
-
test('two-level unknown points at `crtr skill find -h`, not `crtr find -h`', () => {
|
|
51
|
-
const hint = nextHint('skill', 'find', 'bogus');
|
|
52
|
-
assert.match(hint, /Run `crtr skill find -h`/);
|
|
53
|
-
assert.doesNotMatch(hint, /Run `crtr find -h`/);
|
|
54
|
-
});
|
|
55
|
-
test('valid children of the matched node are listed', () => {
|
|
56
|
-
assert.match(nextHint('skill', 'find', 'bogus'), /Valid children: search\./);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type { ArmWakeSpec, Wakeup } from './types.js';
|
|
2
|
-
/** A thrown integrity-backstop error from armWake. `code` is the AC-N3 code the
|
|
3
|
-
* command surface (the ONLY sanctioned caller of armWake) maps to a rendered
|
|
4
|
-
* error block — armWake carries integrity backstops only (empty body / recur-on-
|
|
5
|
-
* deadline / unknown kind); target-resolvability + recoverable-state + the
|
|
6
|
-
* per-owner cap live in the surface (Min-6), so a non-surface armer could insert
|
|
7
|
-
* a dangling wake — every armer MUST route through the surface. */
|
|
8
|
-
export declare class WakeArmError extends Error {
|
|
9
|
-
readonly code: string;
|
|
10
|
-
constructor(code: string, message: string);
|
|
11
|
-
}
|
|
12
|
-
/** Which wakes a listWakes call returns. Distinguished by which key is present
|
|
13
|
-
* (mirrors listNodes' filter shape):
|
|
14
|
-
* - { node } — wakes anchored to this node (node_id = ?).
|
|
15
|
-
* - { owner } — wakes this node ARMED (owner_id = ?); the per-owner cap count.
|
|
16
|
-
* - { subtree } — wakes anchored to any node in this id set (node_id IN (…)).
|
|
17
|
-
* - { due } — wakes whose fire_at <= this ISO instant.
|
|
18
|
-
* - { canvas } — every wake on the canvas. */
|
|
19
|
-
export type WakeScope = {
|
|
20
|
-
node: string;
|
|
21
|
-
} | {
|
|
22
|
-
owner: string;
|
|
23
|
-
} | {
|
|
24
|
-
subtree: string[];
|
|
25
|
-
} | {
|
|
26
|
-
due: string;
|
|
27
|
-
} | {
|
|
28
|
-
canvas: true;
|
|
29
|
-
};
|
|
30
|
-
/** INSERT one wakeup row from the pinned spec, returning its (caller-supplied)
|
|
31
|
-
* `wakeup_id`. JSON.stringifies the typed `payload` union into the TEXT column
|
|
32
|
-
* and stamps `created`.
|
|
33
|
-
*
|
|
34
|
-
* Deadline upsert (design Q3, "≤1 deadline per node"): for `kind === 'deadline'`
|
|
35
|
-
* the node's existing deadline is canceled first, then the new one inserted — the
|
|
36
|
-
* partial unique index `idx_wakeups_deadline` is the schema-level backstop.
|
|
37
|
-
*
|
|
38
|
-
* Integrity backstops (throw WakeArmError; the surface maps the code to AC-N3):
|
|
39
|
-
* - empty/whitespace note `body` for `noted`/`deadline` → `empty_note`.
|
|
40
|
-
* - non-NULL `recur` on a `deadline` → `deadline_cannot_recur`.
|
|
41
|
-
* - unknown `kind` → `bad_kind`.
|
|
42
|
-
* NO target-resolvability / recoverable-state / cap backstop here (Min-6). */
|
|
43
|
-
export declare function armWake(spec: ArmWakeSpec): string;
|
|
44
|
-
/** UPDATE the next fire time — recurrence advancement (the daemon settles a
|
|
45
|
-
* recurring row to its next slot BEFORE enacting, crash-safe; design D4). */
|
|
46
|
-
export declare function advanceWake(wakeup_id: string, nextFireIso: string): void;
|
|
47
|
-
/** DELETE one wakeup by id — one-shot consumption (the daemon settles a one-shot
|
|
48
|
-
* row BEFORE enacting, crash-safe; design D4). */
|
|
49
|
-
export declare function consumeWake(wakeup_id: string): void;
|
|
50
|
-
/** DELETE one wakeup by id — the explicit user/surface cancel. Idempotent:
|
|
51
|
-
* 0 rows ⇒ no error (AC-C2). */
|
|
52
|
-
export declare function cancelWake(wakeup_id: string): void;
|
|
53
|
-
/** DELETE every wake anchored to this node AND every detached wake it ARMED —
|
|
54
|
-
* deliberate close/reap (ruling A). Hooked at transition('cancel'). */
|
|
55
|
-
export declare function cancelWakesFor(node_id: string): void;
|
|
56
|
-
/** DELETE this node's one-shot self-alarms (recur IS NULL); node-anchored crons
|
|
57
|
-
* SURVIVE — finalize is the instance finishing, not a teardown of standing
|
|
58
|
-
* schedules (design Q1). Hooked at transition('finalize'). */
|
|
59
|
-
export declare function cancelSelfAlarms(node_id: string): void;
|
|
60
|
-
/** DELETE this node's pending deadline(s) — cancel-on-wake (design §6.4).
|
|
61
|
-
* Hooked at reviveNode, so the deadline always belongs to the dormancy left. */
|
|
62
|
-
export declare function cancelDeadlinesFor(node_id: string): void;
|
|
63
|
-
/** The daemon's per-tick due query: every row whose fire_at has arrived, in
|
|
64
|
-
* fire_at order, with `payload` parsed into the typed union. Returns exactly ONE
|
|
65
|
-
* row per recurring wake regardless of missed slots — coalescing is structural
|
|
66
|
-
* (AC-E2). */
|
|
67
|
-
export declare function dueWakes(nowIso: string): Wakeup[];
|
|
68
|
-
/** List wakes for a scope (node / owner / subtree / due / canvas), `payload`
|
|
69
|
-
* parsed as in dueWakes. The subtree variant binds the id set with `?`
|
|
70
|
-
* placeholders (mirroring listNodes — the codebase's one safe dynamic-IN spot);
|
|
71
|
-
* ids are NEVER string-concatenated (Min-10). */
|
|
72
|
-
export declare function listWakes(scope: WakeScope): Wakeup[];
|
|
73
|
-
/** True if the node has ANY pending self-anchored wake (of any kind). Consumed by
|
|
74
|
-
* the stop-guard self-wake seam so a no-child poll node releases dormant after
|
|
75
|
-
* arming instead of being nagged to finish (AC-X3/AC-R1). */
|
|
76
|
-
export declare function hasPendingSelfWake(node_id: string): boolean;
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
// wakeups.ts — the WAKEUPS table data-access layer (canvas.db, migration v7).
|
|
2
|
-
//
|
|
3
|
-
// One-module-per-table (the focuses.ts precedent): ALL SQL that touches the
|
|
4
|
-
// `wakeups` table lives HERE and nowhere else — never appended to canvas.ts,
|
|
5
|
-
// which keeps the node/edge model. A WAKEUP is one durable row = "do <kind> at
|
|
6
|
-
// fire_at [every recur]", carrying a fire time, a kind, an optional payload, an
|
|
7
|
-
// optional recurrence cadence, a nullable TARGET node_id, and the owner_id of
|
|
8
|
-
// the node that ARMED it.
|
|
9
|
-
//
|
|
10
|
-
// Two anchors, two reap rules (design D1/D2):
|
|
11
|
-
// - node_id → the revive target AND the node-anchored cancel anchor; it
|
|
12
|
-
// carries the `ON DELETE CASCADE` FK, so a pruned node's node-anchored wakes
|
|
13
|
-
// are reaped FOR FREE in pruneNodes' same `DELETE FROM nodes` (canvas.ts is
|
|
14
|
-
// UNTOUCHED — the cascade does it; there is no pruneNodes wakeups code).
|
|
15
|
-
// NULL = canvas-detached (a deferred spawn / spawn-cron).
|
|
16
|
-
// - owner_id → the armer; a PLAIN indexed column with NO FK, so a crashed-
|
|
17
|
-
// then-pruned armer's detached cron is NOT cascade-dropped (Invariant E).
|
|
18
|
-
// Reaped only by the explicit cancelWakesFor DELETE on deliberate close.
|
|
19
|
-
//
|
|
20
|
-
// Each function is a single-statement query mirroring the canvas.ts atomic-setter
|
|
21
|
-
// pattern (setStatus/setIntent/setPresence) — no read-modify-write, serialized by
|
|
22
|
-
// WAL. The data-access layer OWNS payload serialization: armWake JSON.stringifies
|
|
23
|
-
// the typed per-kind union on write; dueWakes/listWakes JSON.parse it back on read
|
|
24
|
-
// (Maj-1), so callers consume `payload.body` / `payload as SpawnChildOpts` directly.
|
|
25
|
-
//
|
|
26
|
-
// `wakeup_id` is CALLER-SUPPLIED (the command surface mints `wk-${newNodeId()}`):
|
|
27
|
-
// the canvas layer never imports newNodeId from runtime/nodes.ts — that would
|
|
28
|
-
// force a canvas → runtime → canvas import cycle (Min-1).
|
|
29
|
-
import { openDb } from './db.js';
|
|
30
|
-
/** A thrown integrity-backstop error from armWake. `code` is the AC-N3 code the
|
|
31
|
-
* command surface (the ONLY sanctioned caller of armWake) maps to a rendered
|
|
32
|
-
* error block — armWake carries integrity backstops only (empty body / recur-on-
|
|
33
|
-
* deadline / unknown kind); target-resolvability + recoverable-state + the
|
|
34
|
-
* per-owner cap live in the surface (Min-6), so a non-surface armer could insert
|
|
35
|
-
* a dangling wake — every armer MUST route through the surface. */
|
|
36
|
-
export class WakeArmError extends Error {
|
|
37
|
-
code;
|
|
38
|
-
constructor(code, message) {
|
|
39
|
-
super(message);
|
|
40
|
-
this.code = code;
|
|
41
|
-
this.name = 'WakeArmError';
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/** Hydrate a raw row into a Wakeup, JSON.parsing `payload` back into the typed
|
|
45
|
-
* per-kind union (NULL column → null). */
|
|
46
|
-
function wakeupFrom(r) {
|
|
47
|
-
const raw = r['payload'];
|
|
48
|
-
return {
|
|
49
|
-
wakeup_id: r['wakeup_id'],
|
|
50
|
-
node_id: r['node_id'] ?? null,
|
|
51
|
-
owner_id: r['owner_id'],
|
|
52
|
-
fire_at: r['fire_at'],
|
|
53
|
-
kind: r['kind'],
|
|
54
|
-
recur: r['recur'] ?? null,
|
|
55
|
-
payload: raw == null ? null : JSON.parse(raw),
|
|
56
|
-
created: r['created'],
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
// ---------------------------------------------------------------------------
|
|
60
|
-
// Writes — each a single-statement INSERT/UPDATE/DELETE.
|
|
61
|
-
// ---------------------------------------------------------------------------
|
|
62
|
-
/** INSERT one wakeup row from the pinned spec, returning its (caller-supplied)
|
|
63
|
-
* `wakeup_id`. JSON.stringifies the typed `payload` union into the TEXT column
|
|
64
|
-
* and stamps `created`.
|
|
65
|
-
*
|
|
66
|
-
* Deadline upsert (design Q3, "≤1 deadline per node"): for `kind === 'deadline'`
|
|
67
|
-
* the node's existing deadline is canceled first, then the new one inserted — the
|
|
68
|
-
* partial unique index `idx_wakeups_deadline` is the schema-level backstop.
|
|
69
|
-
*
|
|
70
|
-
* Integrity backstops (throw WakeArmError; the surface maps the code to AC-N3):
|
|
71
|
-
* - empty/whitespace note `body` for `noted`/`deadline` → `empty_note`.
|
|
72
|
-
* - non-NULL `recur` on a `deadline` → `deadline_cannot_recur`.
|
|
73
|
-
* - unknown `kind` → `bad_kind`.
|
|
74
|
-
* NO target-resolvability / recoverable-state / cap backstop here (Min-6). */
|
|
75
|
-
export function armWake(spec) {
|
|
76
|
-
const { kind } = spec;
|
|
77
|
-
if (kind !== 'bare' && kind !== 'noted' && kind !== 'deadline' && kind !== 'spawn') {
|
|
78
|
-
throw new WakeArmError('bad_kind', `unknown wake kind: ${String(kind)}`);
|
|
79
|
-
}
|
|
80
|
-
if (kind === 'noted' || kind === 'deadline') {
|
|
81
|
-
const body = spec.payload?.body;
|
|
82
|
-
if (typeof body !== 'string' || body.trim() === '') {
|
|
83
|
-
throw new WakeArmError('empty_note', `a ${kind} wake requires a non-empty note body.`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (kind === 'deadline' && spec.recur != null) {
|
|
87
|
-
throw new WakeArmError('deadline_cannot_recur', 'a deadline wake cannot recur.');
|
|
88
|
-
}
|
|
89
|
-
// Deadline upsert: clear the node's existing deadline before inserting the new one.
|
|
90
|
-
if (kind === 'deadline' && spec.node_id != null) {
|
|
91
|
-
cancelDeadlinesFor(spec.node_id);
|
|
92
|
-
}
|
|
93
|
-
const payloadText = spec.payload == null ? null : JSON.stringify(spec.payload);
|
|
94
|
-
openDb()
|
|
95
|
-
.prepare(`INSERT INTO wakeups (wakeup_id, node_id, owner_id, fire_at, kind, recur, payload, created)
|
|
96
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
97
|
-
.run(spec.wakeup_id, spec.node_id ?? null, spec.owner_id, spec.fire_at, kind, spec.recur ?? null, payloadText, new Date().toISOString());
|
|
98
|
-
return spec.wakeup_id;
|
|
99
|
-
}
|
|
100
|
-
/** UPDATE the next fire time — recurrence advancement (the daemon settles a
|
|
101
|
-
* recurring row to its next slot BEFORE enacting, crash-safe; design D4). */
|
|
102
|
-
export function advanceWake(wakeup_id, nextFireIso) {
|
|
103
|
-
openDb().prepare('UPDATE wakeups SET fire_at = ? WHERE wakeup_id = ?').run(nextFireIso, wakeup_id);
|
|
104
|
-
}
|
|
105
|
-
/** DELETE one wakeup by id — one-shot consumption (the daemon settles a one-shot
|
|
106
|
-
* row BEFORE enacting, crash-safe; design D4). */
|
|
107
|
-
export function consumeWake(wakeup_id) {
|
|
108
|
-
openDb().prepare('DELETE FROM wakeups WHERE wakeup_id = ?').run(wakeup_id);
|
|
109
|
-
}
|
|
110
|
-
/** DELETE one wakeup by id — the explicit user/surface cancel. Idempotent:
|
|
111
|
-
* 0 rows ⇒ no error (AC-C2). */
|
|
112
|
-
export function cancelWake(wakeup_id) {
|
|
113
|
-
openDb().prepare('DELETE FROM wakeups WHERE wakeup_id = ?').run(wakeup_id);
|
|
114
|
-
}
|
|
115
|
-
/** DELETE every wake anchored to this node AND every detached wake it ARMED —
|
|
116
|
-
* deliberate close/reap (ruling A). Hooked at transition('cancel'). */
|
|
117
|
-
export function cancelWakesFor(node_id) {
|
|
118
|
-
openDb()
|
|
119
|
-
.prepare('DELETE FROM wakeups WHERE node_id = ? OR owner_id = ?')
|
|
120
|
-
.run(node_id, node_id);
|
|
121
|
-
}
|
|
122
|
-
/** DELETE this node's one-shot self-alarms (recur IS NULL); node-anchored crons
|
|
123
|
-
* SURVIVE — finalize is the instance finishing, not a teardown of standing
|
|
124
|
-
* schedules (design Q1). Hooked at transition('finalize'). */
|
|
125
|
-
export function cancelSelfAlarms(node_id) {
|
|
126
|
-
openDb().prepare('DELETE FROM wakeups WHERE node_id = ? AND recur IS NULL').run(node_id);
|
|
127
|
-
}
|
|
128
|
-
/** DELETE this node's pending deadline(s) — cancel-on-wake (design §6.4).
|
|
129
|
-
* Hooked at reviveNode, so the deadline always belongs to the dormancy left. */
|
|
130
|
-
export function cancelDeadlinesFor(node_id) {
|
|
131
|
-
openDb().prepare("DELETE FROM wakeups WHERE node_id = ? AND kind = 'deadline'").run(node_id);
|
|
132
|
-
}
|
|
133
|
-
// ---------------------------------------------------------------------------
|
|
134
|
-
// Reads.
|
|
135
|
-
// ---------------------------------------------------------------------------
|
|
136
|
-
/** The daemon's per-tick due query: every row whose fire_at has arrived, in
|
|
137
|
-
* fire_at order, with `payload` parsed into the typed union. Returns exactly ONE
|
|
138
|
-
* row per recurring wake regardless of missed slots — coalescing is structural
|
|
139
|
-
* (AC-E2). */
|
|
140
|
-
export function dueWakes(nowIso) {
|
|
141
|
-
return openDb()
|
|
142
|
-
.prepare('SELECT * FROM wakeups WHERE fire_at <= ? ORDER BY fire_at')
|
|
143
|
-
.all(nowIso).map(wakeupFrom);
|
|
144
|
-
}
|
|
145
|
-
/** List wakes for a scope (node / owner / subtree / due / canvas), `payload`
|
|
146
|
-
* parsed as in dueWakes. The subtree variant binds the id set with `?`
|
|
147
|
-
* placeholders (mirroring listNodes — the codebase's one safe dynamic-IN spot);
|
|
148
|
-
* ids are NEVER string-concatenated (Min-10). */
|
|
149
|
-
export function listWakes(scope) {
|
|
150
|
-
const db = openDb();
|
|
151
|
-
let rows;
|
|
152
|
-
if ('node' in scope) {
|
|
153
|
-
rows = db
|
|
154
|
-
.prepare('SELECT * FROM wakeups WHERE node_id = ? ORDER BY fire_at')
|
|
155
|
-
.all(scope.node);
|
|
156
|
-
}
|
|
157
|
-
else if ('owner' in scope) {
|
|
158
|
-
rows = db
|
|
159
|
-
.prepare('SELECT * FROM wakeups WHERE owner_id = ? ORDER BY fire_at')
|
|
160
|
-
.all(scope.owner);
|
|
161
|
-
}
|
|
162
|
-
else if ('subtree' in scope) {
|
|
163
|
-
if (scope.subtree.length === 0)
|
|
164
|
-
return [];
|
|
165
|
-
const placeholders = scope.subtree.map(() => '?').join(',');
|
|
166
|
-
rows = db
|
|
167
|
-
.prepare(`SELECT * FROM wakeups WHERE node_id IN (${placeholders}) ORDER BY fire_at`)
|
|
168
|
-
.all(...scope.subtree);
|
|
169
|
-
}
|
|
170
|
-
else if ('due' in scope) {
|
|
171
|
-
rows = db
|
|
172
|
-
.prepare('SELECT * FROM wakeups WHERE fire_at <= ? ORDER BY fire_at')
|
|
173
|
-
.all(scope.due);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
rows = db.prepare('SELECT * FROM wakeups ORDER BY fire_at').all();
|
|
177
|
-
}
|
|
178
|
-
return rows.map(wakeupFrom);
|
|
179
|
-
}
|
|
180
|
-
/** True if the node has ANY pending self-anchored wake (of any kind). Consumed by
|
|
181
|
-
* the stop-guard self-wake seam so a no-child poll node releases dormant after
|
|
182
|
-
* arming instead of being nagged to finish (AC-X3/AC-R1). */
|
|
183
|
-
export function hasPendingSelfWake(node_id) {
|
|
184
|
-
return (openDb().prepare('SELECT 1 FROM wakeups WHERE node_id = ? LIMIT 1').get(node_id) !== undefined);
|
|
185
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// Regression test for the `--dry-run` `wrote` count (found by P8 integration).
|
|
2
|
-
//
|
|
3
|
-
// Bug: under `--dry-run`, reconcilePair returned `wrote: counts.writes` — the
|
|
4
|
-
// WOULD-BE endpoint write total — even though nothing is written to disk. That
|
|
5
|
-
// contradicts the `sys sync -h` contract ("wrote … 0 under --dry-run") and the
|
|
6
|
-
// rendered "DRY RUN (nothing written)" header, which together promise 0. The
|
|
7
|
-
// fix makes `wrote` reflect ACTUAL writes (0 under dry-run) while still using
|
|
8
|
-
// the would-be counts internally to decide synced-vs-noop.
|
|
9
|
-
//
|
|
10
|
-
// This test FAILS on the pre-fix code (wrote === number of files that WOULD be
|
|
11
|
-
// written, e.g. 2 for a one-sided bootstrap) and PASSES on the current code.
|
|
12
|
-
//
|
|
13
|
-
// Run: node --import tsx/esm --test src/core/skill-sync/__tests__/dry-run-wrote-count.test.ts
|
|
14
|
-
import { test, before, after } from 'node:test';
|
|
15
|
-
import assert from 'node:assert/strict';
|
|
16
|
-
import { mkdtempSync, rmSync, mkdirSync, writeFileSync, existsSync } from 'node:fs';
|
|
17
|
-
import { tmpdir, homedir } from 'node:os';
|
|
18
|
-
import { join } from 'node:path';
|
|
19
|
-
import { reconcilePair } from '../engine.js';
|
|
20
|
-
import { DEFAULT_PROFILE } from '../profile.js';
|
|
21
|
-
// The engine resolves user-scope endpoints + the snapshot store off homedir(),
|
|
22
|
-
// which reads $HOME at call time — so isolating $HOME isolates everything.
|
|
23
|
-
let home;
|
|
24
|
-
let prevHome;
|
|
25
|
-
const PAIR = {
|
|
26
|
-
id: 'dryrun-regression',
|
|
27
|
-
crtr: { scope: 'user', name: 'dr' },
|
|
28
|
-
claude: { scope: 'user', name: 'dr' },
|
|
29
|
-
};
|
|
30
|
-
before(() => {
|
|
31
|
-
prevHome = process.env.HOME;
|
|
32
|
-
home = mkdtempSync(join(tmpdir(), 'crtr-sync-dryrun-'));
|
|
33
|
-
process.env.HOME = home;
|
|
34
|
-
// One-sided bootstrap: only the crtr side exists. A real sync here would
|
|
35
|
-
// materialize the Claude side + write the snapshot (2 endpoint files written).
|
|
36
|
-
const crtrDir = join(home, '.crouter', 'memory', 'dr');
|
|
37
|
-
mkdirSync(crtrDir, { recursive: true });
|
|
38
|
-
writeFileSync(join(crtrDir, 'SKILL.md'), '---\nkind: knowledge\nwhen-and-why-to-read: "When the regression applies, this doc should be read."\n---\n# DR\nbody\n', 'utf8');
|
|
39
|
-
});
|
|
40
|
-
after(() => {
|
|
41
|
-
if (prevHome === undefined)
|
|
42
|
-
delete process.env.HOME;
|
|
43
|
-
else
|
|
44
|
-
process.env.HOME = prevHome;
|
|
45
|
-
rmSync(home, { recursive: true, force: true });
|
|
46
|
-
assert.equal(homedir(), prevHome ?? homedir()); // sanity: $HOME restored
|
|
47
|
-
});
|
|
48
|
-
test('--dry-run reports wrote === 0 and writes nothing to disk', () => {
|
|
49
|
-
const res = reconcilePair(PAIR, DEFAULT_PROFILE, { dryRun: true });
|
|
50
|
-
// Status still reflects that a real run WOULD sync this pair...
|
|
51
|
-
assert.equal(res.status, 'synced', 'dry-run should still classify the pending change as synced');
|
|
52
|
-
// ...but the `wrote` count is ACTUAL writes — zero under --dry-run.
|
|
53
|
-
assert.equal(res.wrote, 0, 'dry-run must report wrote === 0 (contract: 0 under --dry-run)');
|
|
54
|
-
// And nothing was actually written: no Claude bundle, no snapshot.
|
|
55
|
-
assert.ok(!existsSync(join(home, '.claude', 'skills', 'dr', 'SKILL.md')), 'dry-run must not materialize the Claude endpoint');
|
|
56
|
-
assert.ok(!existsSync(join(home, '.crouter', 'skill-sync', 'snapshots', PAIR.id)), 'dry-run must not write the snapshot base');
|
|
57
|
-
});
|