@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
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Regression for final-integrated-verdict finding #3: the v7 (`wakeups`) →
|
|
2
|
+
// v9 (`triggers`) migration must preserve a deadline wakeup's `fire_at`
|
|
3
|
+
// exactly, not just its `trigger_type`/`node_id`. Drives the real migration
|
|
4
|
+
// steps (`MIGRATIONS[6]` = appendWakeupsTable/v7, `MIGRATIONS[8]` =
|
|
5
|
+
// migrateWakeupsToTriggers/v9) directly against a bare `DatabaseSync`, seeding
|
|
6
|
+
// a v7-shaped `wakeups` row by hand — see `src/core/canvas/db.ts`.
|
|
7
|
+
import { test, before, after } from 'node:test';
|
|
8
|
+
import assert from 'node:assert/strict';
|
|
9
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
10
|
+
import { tmpdir } from 'node:os';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
13
|
+
import { MIGRATIONS } from '../canvas/db.js';
|
|
14
|
+
let home;
|
|
15
|
+
before(() => {
|
|
16
|
+
home = mkdtempSync(join(tmpdir(), 'crtr-trigger-migration-'));
|
|
17
|
+
});
|
|
18
|
+
after(() => {
|
|
19
|
+
rmSync(home, { recursive: true, force: true });
|
|
20
|
+
});
|
|
21
|
+
test('v7->v9 migration preserves a deadline wakeup\'s fire_at exactly', () => {
|
|
22
|
+
const db = new DatabaseSync(join(home, 'migration.db'));
|
|
23
|
+
try {
|
|
24
|
+
db.exec('PRAGMA foreign_keys = ON;');
|
|
25
|
+
// v1 — nodes/edges baseline (MIGRATIONS[0]); triggers.node_id's FK needs a
|
|
26
|
+
// real nodes row to reference.
|
|
27
|
+
MIGRATIONS[0](db);
|
|
28
|
+
const created = new Date().toISOString();
|
|
29
|
+
db.prepare(`INSERT INTO nodes (node_id, name, kind, cwd, created) VALUES (?, ?, ?, ?, ?)`).run('target-node', 'target-node', 'general', '/tmp/work', created);
|
|
30
|
+
// v7 — the wakeups table (MIGRATIONS[6]).
|
|
31
|
+
MIGRATIONS[6](db);
|
|
32
|
+
const fireAt = '2026-01-01T12:34:56.000Z';
|
|
33
|
+
db.prepare(`INSERT INTO wakeups (wakeup_id, node_id, owner_id, fire_at, kind, recur, payload, created)
|
|
34
|
+
VALUES (?, ?, ?, ?, 'deadline', NULL, ?, ?)`).run('wk-1', 'target-node', 'target-node', fireAt, JSON.stringify({ body: 'time is up', timeout: true, label: 'deadline' }), created);
|
|
35
|
+
// v9 — generalize wakeups into triggers (MIGRATIONS[8]).
|
|
36
|
+
MIGRATIONS[8](db);
|
|
37
|
+
const row = db.prepare('SELECT * FROM triggers WHERE trigger_id = ?').get('wk-1');
|
|
38
|
+
assert.ok(row, 'migrated trigger row should exist under the preserved wakeup_id');
|
|
39
|
+
assert.equal(row['trigger_type'], 'until');
|
|
40
|
+
assert.equal(row['action_mode'], 'deadline_message');
|
|
41
|
+
// The literal required assertion (verdict finding #3): fire_at must survive
|
|
42
|
+
// the migration byte-for-byte, not just the trigger_type/action_mode shape.
|
|
43
|
+
assert.equal(row['fire_at'], fireAt);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
db.close();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// Run with: node --import tsx/esm --test src/core/__tests__/wake-bearings.test.ts
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// Trigger-origin self-knowledge (the <crtr-wake> provenance block). Regression
|
|
4
4
|
// guard for the observed gap: a node woken or BORN by a scheduled TIMER could
|
|
5
|
-
// not tell it came from a timer — a
|
|
5
|
+
// not tell it came from a timer — a fired trigger arrived indistinguishable
|
|
6
6
|
// from an ordinary refresh/message (the Invariant B/D anti-goal). These lock:
|
|
7
|
-
// • buildWakeBearings renders the right decision-first block per
|
|
8
|
-
// cadence, and never crashes when the armer was reaped (no resolved
|
|
9
|
-
//
|
|
7
|
+
// • buildWakeBearings renders the right decision-first block per trigger
|
|
8
|
+
// kind / cadence, and never crashes when the armer was reaped (no resolved
|
|
9
|
+
// name);
|
|
10
|
+
// • the fresh-revive kickoff carries that block (so a scheduled alarm is
|
|
10
11
|
// distinguishable from a generic context-refresh), placed AFTER the kickoff
|
|
11
12
|
// sentinel (goal-capture keys on it) and BEFORE the roadmap/disk bearings;
|
|
12
13
|
// • an ordinary fresh revive (no wakeReason) carries NO block.
|
|
@@ -47,9 +48,9 @@ after(() => {
|
|
|
47
48
|
delete process.env['CRTR_HOME'];
|
|
48
49
|
});
|
|
49
50
|
// --- buildWakeBearings: one per kind / cadence variant ----------------------
|
|
50
|
-
test('
|
|
51
|
+
test('node_birth one-shot: names a deferred birth + the armer, and says it does not recur', () => {
|
|
51
52
|
const o = {
|
|
52
|
-
kind: '
|
|
53
|
+
kind: 'node_birth',
|
|
53
54
|
ownerId: 'arm-1',
|
|
54
55
|
ownerName: 'release-orch',
|
|
55
56
|
armedAt: ARMED,
|
|
@@ -64,9 +65,9 @@ test('spawn one-shot: names a deferred birth + the armer, and says it does not r
|
|
|
64
65
|
assert.match(b, /only run, not a recurring job/);
|
|
65
66
|
assert.match(b, /Your task follows\./);
|
|
66
67
|
});
|
|
67
|
-
test('
|
|
68
|
+
test('node_birth cron: surfaces the cadence + frames it as one run of a standing job', () => {
|
|
68
69
|
const o = {
|
|
69
|
-
kind: '
|
|
70
|
+
kind: 'node_birth',
|
|
70
71
|
ownerId: 'arm-1',
|
|
71
72
|
ownerName: 'nightly',
|
|
72
73
|
armedAt: ARMED,
|
|
@@ -79,9 +80,9 @@ test('spawn cron: surfaces the cadence + frames it as one run of a standing job'
|
|
|
79
80
|
assert.match(b, /one run of a standing job, not a one-off/);
|
|
80
81
|
assert.match(b, /inherit nothing from prior runs but this task/);
|
|
81
82
|
});
|
|
82
|
-
test('
|
|
83
|
+
test('node_birth interval cron: renders the every-N cadence', () => {
|
|
83
84
|
const o = {
|
|
84
|
-
kind: '
|
|
85
|
+
kind: 'node_birth',
|
|
85
86
|
ownerId: 'arm-1',
|
|
86
87
|
ownerName: 'poller',
|
|
87
88
|
armedAt: ARMED,
|
|
@@ -89,9 +90,9 @@ test('spawn interval cron: renders the every-N cadence', () => {
|
|
|
89
90
|
};
|
|
90
91
|
assert.match(buildWakeBearings(o), /firing every 6h/);
|
|
91
92
|
});
|
|
92
|
-
test('
|
|
93
|
+
test('node_birth with a reaped armer: renders the bare id, no name, never crashes', () => {
|
|
93
94
|
const o = {
|
|
94
|
-
kind: '
|
|
95
|
+
kind: 'node_birth',
|
|
95
96
|
ownerId: 'gone-9',
|
|
96
97
|
ownerName: undefined, // armer no longer exists → no resolved name
|
|
97
98
|
armedAt: ARMED,
|
|
@@ -101,20 +102,21 @@ test('spawn with a reaped armer: renders the bare id, no name, never crashes', (
|
|
|
101
102
|
assert.match(b, /armed by node gone-9 \(now gone\)/); // bare id, flagged reaped
|
|
102
103
|
assert.doesNotMatch(b, /\("/); // never an empty/dangling name
|
|
103
104
|
});
|
|
104
|
-
test('
|
|
105
|
-
const o = { kind: '
|
|
105
|
+
test('fresh_revive one-shot: frames a timed re-check, NOT a new request', () => {
|
|
106
|
+
const o = { kind: 'fresh_revive', ownerId: 'n1', ownerName: 'n1', armedAt: ARMED, recur: null };
|
|
106
107
|
const b = buildWakeBearings(o);
|
|
107
108
|
assert.match(b, /a scheduled alarm fired/);
|
|
108
109
|
assert.match(b, /a timer, NOT a new message or request/);
|
|
109
110
|
assert.match(b, /timed re-check, not a new task/);
|
|
110
111
|
assert.match(b, /re-read your roadmap/);
|
|
111
|
-
// No armer attribution on bare (could be `--node`-armed by another),
|
|
112
|
+
// No armer attribution on a bare revive (could be `--node`-armed by another),
|
|
113
|
+
// no ISO.
|
|
112
114
|
assert.doesNotMatch(b, /you set/);
|
|
113
115
|
assert.doesNotMatch(b, new RegExp(ARMED));
|
|
114
116
|
});
|
|
115
|
-
test('
|
|
117
|
+
test('fresh_revive recurring: frames one tick of a standing re-check + the cadence', () => {
|
|
116
118
|
const o = {
|
|
117
|
-
kind: '
|
|
119
|
+
kind: 'fresh_revive',
|
|
118
120
|
ownerId: 'n1',
|
|
119
121
|
ownerName: 'n1',
|
|
120
122
|
armedAt: ARMED,
|
|
@@ -124,12 +126,12 @@ test('bare recurring: frames one tick of a standing re-check + the cadence', ()
|
|
|
124
126
|
assert.match(b, /recurring scheduled alarm fired \(every 6h\)/);
|
|
125
127
|
assert.match(b, /one tick of a standing re-check/);
|
|
126
128
|
});
|
|
127
|
-
// --- the
|
|
128
|
-
test('a
|
|
129
|
+
// --- the fresh-revive kickoff seam -------------------------------------
|
|
130
|
+
test('a fresh_revive trigger makes the fresh-revive kickoff distinguishable from a refresh', () => {
|
|
129
131
|
const id = 'b1';
|
|
130
132
|
const meta = createNode(node(id));
|
|
131
133
|
const wakeReason = {
|
|
132
|
-
kind: '
|
|
134
|
+
kind: 'fresh_revive',
|
|
133
135
|
ownerId: id,
|
|
134
136
|
ownerName: id,
|
|
135
137
|
armedAt: ARMED,
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
// Run with: node --import tsx/esm --test src/core/__tests__/wake-origin.test.ts
|
|
2
2
|
//
|
|
3
|
-
// HEADLESS RETARGET (foundation-spec §C.16 + §E).
|
|
4
|
-
// the DAEMON FIRING seams (the other half of the regression — wake-bearings.
|
|
5
|
-
// covers the pure block in isolation). The observed gap: a
|
|
6
|
-
//
|
|
7
|
-
//
|
|
3
|
+
// HEADLESS RETARGET (foundation-spec §C.16 + §E). Trigger-origin self-knowledge
|
|
4
|
+
// at the DAEMON FIRING seams (the other half of the regression — wake-bearings.
|
|
5
|
+
// test.ts covers the pure block in isolation). The observed gap: a node woken
|
|
6
|
+
// or born by a scheduled trigger arrived indistinguishable from an ordinary
|
|
7
|
+
// message/spawn (Invariant D). Both seams are driven model-only — ZERO tmux,
|
|
8
|
+
// ZERO boot:
|
|
8
9
|
//
|
|
9
|
-
// (1) BUG LOCKED — a node woken or BORN by a TIMER must, by construction, learn
|
|
10
|
-
// CLOCK (not an event) caused it:
|
|
11
|
-
// (distinct from a plain `node msg`), and a
|
|
12
|
-
// <crtr-wake> birth block (armer + cadence) to the
|
|
13
|
-
// ordinary `node new` carries none.
|
|
10
|
+
// (1) BUG LOCKED — a node woken or BORN by a TIMER must, by construction, learn
|
|
11
|
+
// a CLOCK (not an event) caused it: an inbox_message trigger rides a
|
|
12
|
+
// ⏰-marked inbox label (distinct from a plain `node msg`), and a node_birth
|
|
13
|
+
// trigger prepends the <crtr-wake> birth block (armer + cadence) to the
|
|
14
|
+
// newborn's kickoff while an ordinary `node new` carries none.
|
|
14
15
|
//
|
|
15
|
-
// (2) WHY MODEL-LEVEL, NOT TMUX CHROME — the
|
|
16
|
-
// (superviseTick's third pass → appendInbox; readInboxSince reads it
|
|
17
|
-
// The spawn-birth seam (spawn.ts) assembles the kickoff as
|
|
16
|
+
// (2) WHY MODEL-LEVEL, NOT TMUX CHROME — the inbox_message seam is pure data
|
|
17
|
+
// layer (superviseTick's third pass → appendInbox; readInboxSince reads it
|
|
18
|
+
// back). The spawn-birth seam (spawn.ts) assembles the kickoff as
|
|
18
19
|
// `${buildWakeBearings(wakeOrigin)}\n\n${idBlock}${prompt}` ONLY when a
|
|
19
20
|
// wakeOrigin is present; `node new` passes none → no block. The load-bearing
|
|
20
|
-
// fact is the PURE rendering of buildWakeBearings for a
|
|
21
|
-
// absence without one) — reading it off a real booted pi's prompt
|
|
22
|
-
// tmux/SDK overhead for a string a pure call already returns.
|
|
21
|
+
// fact is the PURE rendering of buildWakeBearings for a node_birth origin
|
|
22
|
+
// (and its absence without one) — reading it off a real booted pi's prompt
|
|
23
|
+
// was pure tmux/SDK overhead for a string a pure call already returns.
|
|
23
24
|
//
|
|
24
25
|
// (3) HOW THE DRIVE STILL FAILS IF THE BUG REGRESSES — drop the ⏰ label marker
|
|
25
|
-
// and the
|
|
26
|
-
// and the spawn assert goes RED (the block / armer / cadence
|
|
26
|
+
// and the inbox_message assert goes RED; drop the node_birth <crtr-wake>
|
|
27
|
+
// rendering and the spawn assert goes RED (the block / armer / cadence
|
|
28
|
+
// vanish).
|
|
27
29
|
import { test, before, after, beforeEach } from 'node:test';
|
|
28
30
|
import assert from 'node:assert/strict';
|
|
29
31
|
import { mkdtempSync, rmSync } from 'node:fs';
|
|
30
32
|
import { tmpdir } from 'node:os';
|
|
31
33
|
import { join } from 'node:path';
|
|
32
|
-
import { createNode } from '../canvas/
|
|
33
|
-
import { armWake } from '../canvas/wakeups.js';
|
|
34
|
-
import { closeDb } from '../canvas/db.js';
|
|
34
|
+
import { createNode, armTrigger, closeDb } from '../canvas/index.js';
|
|
35
35
|
import { readInboxSince } from '../feed/inbox.js';
|
|
36
36
|
import { superviseTick } from '../../daemon/crtrd.js';
|
|
37
37
|
import { buildWakeBearings } from '../runtime/bearings.js';
|
|
@@ -62,16 +62,18 @@ after(() => {
|
|
|
62
62
|
rmSync(home, { recursive: true, force: true });
|
|
63
63
|
delete process.env['CRTR_HOME'];
|
|
64
64
|
});
|
|
65
|
-
// ---
|
|
66
|
-
test('a
|
|
65
|
+
// --- inbox_message seam (the daemon's third pass → inbox) -------------------
|
|
66
|
+
test('a due inbox_message trigger delivers a ⏰-marked inbox label, distinct from a plain message', async () => {
|
|
67
67
|
const armer = createNode(node('armer'));
|
|
68
68
|
const target = createNode(node('tgt')); // no tmux placement → pass 1 skips it
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
armTrigger({
|
|
70
|
+
trigger_id: 'trg-noted-1',
|
|
71
71
|
node_id: target.node_id,
|
|
72
72
|
owner_id: armer.node_id,
|
|
73
|
+
action: 'msg',
|
|
74
|
+
action_mode: 'inbox_message',
|
|
75
|
+
trigger_type: 'at',
|
|
73
76
|
fire_at: new Date(Date.now() - 1000).toISOString(),
|
|
74
|
-
kind: 'noted',
|
|
75
77
|
recur: null,
|
|
76
78
|
payload: { body: 'CI should be green by now — check it', label: 'check CI' },
|
|
77
79
|
});
|
|
@@ -79,22 +81,23 @@ test('a noted scheduled wake delivers a ⏰-marked inbox label, distinct from a
|
|
|
79
81
|
await superviseTick(Date.now());
|
|
80
82
|
closeDb();
|
|
81
83
|
const entries = readInboxSince(target.node_id);
|
|
82
|
-
assert.equal(entries.length, 1, 'the
|
|
84
|
+
assert.equal(entries.length, 1, 'the due trigger delivered exactly one inbox entry');
|
|
83
85
|
// Invariant D: the timer signal rides the VISIBLE label (digests never surface
|
|
84
86
|
// arbitrary data keys), so this is distinguishable from a plain `node msg`.
|
|
85
87
|
assert.equal(entries[0].label, '⏰ scheduled wake — check CI');
|
|
86
88
|
assert.notEqual(entries[0].label, 'check CI', 'a plain message would carry the bare label');
|
|
87
89
|
});
|
|
88
|
-
// ---
|
|
89
|
-
test('a
|
|
90
|
+
// --- node_birth seam (the headline; spawn.ts kickoff assembly) --------------
|
|
91
|
+
test('a node_birth trigger renders a <crtr-wake> birth block (armer + cadence); a plain node new renders none', async () => {
|
|
90
92
|
const armer = createNode(node('armer'));
|
|
91
93
|
// The spawn-birth seam (spawn.ts): the newborn's pi kickoff is
|
|
92
94
|
// `${buildWakeBearings(wakeOrigin)}\n\n${idBlock}${prompt}`
|
|
93
95
|
// when a wakeOrigin is present, and just `${idBlock}${prompt}` (no block)
|
|
94
|
-
// when it is not. The daemon's third pass builds the WakeOrigin from the
|
|
95
|
-
// recurring
|
|
96
|
+
// when it is not. The daemon's third pass builds the WakeOrigin from the
|
|
97
|
+
// fired recurring node_birth trigger row via wakeOriginFrom; here we assert
|
|
98
|
+
// the block it yields.
|
|
96
99
|
const origin = {
|
|
97
|
-
kind: '
|
|
100
|
+
kind: 'node_birth',
|
|
98
101
|
ownerId: armer.node_id,
|
|
99
102
|
ownerName: 'armer',
|
|
100
103
|
armedAt: new Date(Date.now() - 1000).toISOString(),
|
|
@@ -110,5 +113,5 @@ test('a spawn scheduled wake renders a <crtr-wake> birth block (armer + cadence)
|
|
|
110
113
|
// prepends nothing — no <crtr-wake> in the newborn's kickoff.
|
|
111
114
|
const wakeBlock = (o) => (o !== undefined ? `${buildWakeBearings(o)}\n\n` : '');
|
|
112
115
|
assert.equal(wakeBlock(undefined), '', 'node new (no wakeOrigin) prepends no wake block');
|
|
113
|
-
assert.match(wakeBlock(origin), /<crtr-wake>/, 'a
|
|
116
|
+
assert.match(wakeBlock(origin), /<crtr-wake>/, 'a node_birth trigger prepends the block');
|
|
114
117
|
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Run with: node --import tsx/esm --test src/core/__tests__/yield-ensures-daemon.test.ts
|
|
2
|
+
//
|
|
3
|
+
// Regression: `crtr node yield` timed out into "broker gone" instead of reviving
|
|
4
|
+
// in the same pane (observed 2026-06-18). The yield arms intent='refresh' and
|
|
5
|
+
// the broker shuts down expecting the DAEMON to relaunch it — but requestYield
|
|
6
|
+
// never ensured the daemon was running, unlike the spawn/recycle paths. With a
|
|
7
|
+
// dead daemon, the broker exited and nothing revived it; the viewer redialed its
|
|
8
|
+
// view.sock for ~30s and reported "broker gone". This locks in that requestYield
|
|
9
|
+
// ensures the supervisor before arming the refresh.
|
|
10
|
+
import { test, before, beforeEach, after } from 'node:test';
|
|
11
|
+
import assert from 'node:assert/strict';
|
|
12
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
13
|
+
import { tmpdir } from 'node:os';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { createNode, getNode } from '../canvas/canvas.js';
|
|
16
|
+
import { closeDb } from '../canvas/db.js';
|
|
17
|
+
import { requestYield } from '../runtime/promote.js';
|
|
18
|
+
let home;
|
|
19
|
+
function mkOrchestrator(id) {
|
|
20
|
+
const meta = {
|
|
21
|
+
node_id: id,
|
|
22
|
+
name: id,
|
|
23
|
+
created: new Date().toISOString(),
|
|
24
|
+
cwd: '/tmp/work',
|
|
25
|
+
kind: 'general',
|
|
26
|
+
mode: 'orchestrator', // already an orchestrator → yield skips the promote path
|
|
27
|
+
lifecycle: 'terminal',
|
|
28
|
+
status: 'active', // LIVE, so transition('yield') is legal
|
|
29
|
+
};
|
|
30
|
+
createNode(meta);
|
|
31
|
+
}
|
|
32
|
+
before(() => {
|
|
33
|
+
home = mkdtempSync(join(tmpdir(), 'crtr-yield-ensure-'));
|
|
34
|
+
process.env['CRTR_HOME'] = home;
|
|
35
|
+
});
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
closeDb();
|
|
38
|
+
rmSync(home, { recursive: true, force: true });
|
|
39
|
+
});
|
|
40
|
+
after(() => {
|
|
41
|
+
closeDb();
|
|
42
|
+
rmSync(home, { recursive: true, force: true });
|
|
43
|
+
delete process.env['CRTR_HOME'];
|
|
44
|
+
});
|
|
45
|
+
test('requestYield ensures the daemon before arming intent=refresh', () => {
|
|
46
|
+
mkOrchestrator('n1');
|
|
47
|
+
let ensured = 0;
|
|
48
|
+
const res = requestYield('n1', {}, { ensure: () => { ensured += 1; } });
|
|
49
|
+
// The supervisor that performs the refresh-revive must have been ensured...
|
|
50
|
+
assert.equal(ensured, 1, 'requestYield must ensure the daemon is running');
|
|
51
|
+
// ...and the yield must still arm the refresh.
|
|
52
|
+
assert.equal(res.willRefresh, true);
|
|
53
|
+
assert.equal(getNode('n1')?.intent, 'refresh');
|
|
54
|
+
});
|
package/dist/core/artifact.d.ts
CHANGED
|
@@ -1,37 +1,6 @@
|
|
|
1
|
-
export type ArtifactKind = 'plans' | 'specs';
|
|
2
1
|
export declare function mangleCwd(cwd?: string): string;
|
|
3
|
-
export declare function
|
|
4
|
-
/** Per-cwd interactions root, mirroring artifactsRoot construction.
|
|
5
|
-
* `~/.crouter/<mangled-cwd>/interactions/`. */
|
|
2
|
+
export declare function workspaceRoot(cwd?: string): string;
|
|
6
3
|
export declare function interactionsRoot(cwd?: string): string;
|
|
7
|
-
/** Directory for one interaction. `id` is sanitized like an artifact name. */
|
|
8
4
|
export declare function interactionDir(id: string, cwd?: string): string;
|
|
9
5
|
export declare function sanitizeName(raw: string): string;
|
|
10
|
-
export declare function
|
|
11
|
-
/** Lines above this threshold trigger an oversize advisory in follow_up. */
|
|
12
|
-
export declare const OVERSIZE_WARN_LINES = 200;
|
|
13
|
-
export interface SaveArtifactResult {
|
|
14
|
-
path: string;
|
|
15
|
-
oversize: boolean;
|
|
16
|
-
lineCount: number;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Atomically write an artifact. Prepends a minimal frontmatter block when
|
|
20
|
-
* `meta` is non-empty so readers can extract structured fields without
|
|
21
|
-
* parsing the full body. Returns the written path and oversize status.
|
|
22
|
-
*/
|
|
23
|
-
export declare function saveArtifact(kind: ArtifactKind, name: string, body: string, meta?: Record<string, string>): SaveArtifactResult;
|
|
24
|
-
export interface ArtifactRecord {
|
|
25
|
-
name: string;
|
|
26
|
-
path: string;
|
|
27
|
-
body: string;
|
|
28
|
-
/** Present only in plan artifacts; null if not set. */
|
|
29
|
-
spec: string | null;
|
|
30
|
-
}
|
|
31
|
-
export declare function readArtifact(kind: ArtifactKind, name: string): ArtifactRecord;
|
|
32
|
-
export interface ArtifactListItem {
|
|
33
|
-
name: string;
|
|
34
|
-
path: string;
|
|
35
|
-
updated_at: string;
|
|
36
|
-
}
|
|
37
|
-
export declare function listArtifacts(kind: ArtifactKind): ArtifactListItem[];
|
|
6
|
+
export declare function migrateLegacyWorkspaceDirs(): void;
|
package/dist/core/artifact.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
// Core
|
|
1
|
+
// Core per-cwd workspace primitives for human interaction artifacts.
|
|
2
2
|
// No commander, no spawn, no output helpers — pure data logic only.
|
|
3
|
-
// Old registerArtifactCommand (commander-based) is removed; callers ported to JSON I/O.
|
|
4
3
|
import { homedir } from 'node:os';
|
|
5
|
-
import { join
|
|
6
|
-
import {
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { renameSync } from 'node:fs';
|
|
7
6
|
import { CRTR_DIR_NAME } from '../types.js';
|
|
8
|
-
import { ensureDir,
|
|
9
|
-
import {
|
|
7
|
+
import { ensureDir, listDirs, pathExists, removePath } from './fs-utils.js';
|
|
8
|
+
import { usage } from './errors.js';
|
|
10
9
|
export function mangleCwd(cwd = process.cwd()) {
|
|
11
10
|
return cwd.replace(/\//g, '-');
|
|
12
11
|
}
|
|
13
|
-
export function
|
|
14
|
-
return join(homedir(), CRTR_DIR_NAME, mangleCwd(cwd)
|
|
12
|
+
export function workspaceRoot(cwd) {
|
|
13
|
+
return join(homedir(), CRTR_DIR_NAME, 'workspaces', mangleCwd(cwd));
|
|
15
14
|
}
|
|
16
|
-
/** Per-cwd interactions root, mirroring artifactsRoot construction.
|
|
17
|
-
* `~/.crouter/<mangled-cwd>/interactions/`. */
|
|
18
15
|
export function interactionsRoot(cwd) {
|
|
19
|
-
return join(
|
|
16
|
+
return join(workspaceRoot(cwd), 'interactions');
|
|
20
17
|
}
|
|
21
|
-
/** Directory for one interaction. `id` is sanitized like an artifact name. */
|
|
22
18
|
export function interactionDir(id, cwd) {
|
|
23
19
|
return join(interactionsRoot(cwd), sanitizeName(id));
|
|
24
20
|
}
|
|
@@ -34,84 +30,28 @@ export function sanitizeName(raw) {
|
|
|
34
30
|
}
|
|
35
31
|
return trimmed;
|
|
36
32
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*/
|
|
47
|
-
export function saveArtifact(kind, name, body, meta = {}) {
|
|
48
|
-
const filePath = artifactPath(kind, name);
|
|
49
|
-
ensureDir(dirname(filePath));
|
|
50
|
-
const metaKeys = Object.keys(meta);
|
|
51
|
-
let content;
|
|
52
|
-
if (metaKeys.length > 0) {
|
|
53
|
-
const fm = '---\n' + metaKeys.map((k) => `${k}: ${meta[k]}`).join('\n') + '\n---\n';
|
|
54
|
-
content = fm + body;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
content = body;
|
|
58
|
-
}
|
|
59
|
-
const finalContent = content.endsWith('\n') ? content : content + '\n';
|
|
60
|
-
writeFileSync(filePath, finalContent, 'utf8');
|
|
61
|
-
const lineCount = finalContent.split('\n').length - 1;
|
|
62
|
-
return { path: filePath, oversize: lineCount > OVERSIZE_WARN_LINES, lineCount };
|
|
63
|
-
}
|
|
64
|
-
const FRONTMATTER_BLOCK_RE = /^---\s*\r?\n([\s\S]*?)\r?\n---\s*\r?\n?/;
|
|
65
|
-
function parseArtifactFrontmatter(source) {
|
|
66
|
-
const match = source.match(FRONTMATTER_BLOCK_RE);
|
|
67
|
-
if (!match)
|
|
68
|
-
return { fields: {}, body: source };
|
|
69
|
-
const raw = match[1];
|
|
70
|
-
const body = source.slice(match[0].length);
|
|
71
|
-
const fields = {};
|
|
72
|
-
for (const line of raw.split(/\r?\n/)) {
|
|
73
|
-
const colon = line.indexOf(':');
|
|
74
|
-
if (colon === -1)
|
|
33
|
+
const LEGACY_WORKSPACE_DIR_RE = /^-[A-Za-z0-9].*/;
|
|
34
|
+
export function migrateLegacyWorkspaceDirs() {
|
|
35
|
+
const dataHome = join(homedir(), CRTR_DIR_NAME);
|
|
36
|
+
const workspaceHome = join(dataHome, 'workspaces');
|
|
37
|
+
if (!pathExists(dataHome))
|
|
38
|
+
return;
|
|
39
|
+
ensureDir(workspaceHome);
|
|
40
|
+
for (const entry of listDirs(dataHome)) {
|
|
41
|
+
if (entry === 'workspaces' || !LEGACY_WORKSPACE_DIR_RE.test(entry))
|
|
75
42
|
continue;
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
export function readArtifact(kind, name) {
|
|
84
|
-
const filePath = artifactPath(kind, name);
|
|
85
|
-
if (!pathExists(filePath)) {
|
|
86
|
-
throw notFound(`${kind.slice(0, -1)} not found: ${name} (looked at ${filePath})`);
|
|
87
|
-
}
|
|
88
|
-
const raw = readText(filePath);
|
|
89
|
-
const { fields, body } = parseArtifactFrontmatter(raw);
|
|
90
|
-
const specField = fields['spec'];
|
|
91
|
-
return {
|
|
92
|
-
name,
|
|
93
|
-
path: filePath,
|
|
94
|
-
body,
|
|
95
|
-
spec: specField !== undefined ? specField : null,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
export function listArtifacts(kind) {
|
|
99
|
-
const root = artifactsRoot(kind);
|
|
100
|
-
if (!pathExists(root))
|
|
101
|
-
return [];
|
|
102
|
-
const files = walkFiles(root, (n) => n.endsWith('.md'));
|
|
103
|
-
const items = files.map((abs) => {
|
|
104
|
-
const name = abs.substring(root.length + 1).replace(/\.md$/, '');
|
|
105
|
-
let updated_at = '';
|
|
43
|
+
const source = join(dataHome, entry);
|
|
44
|
+
const target = join(workspaceHome, entry);
|
|
45
|
+
if (pathExists(target)) {
|
|
46
|
+
removePath(source);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
106
49
|
try {
|
|
107
|
-
|
|
50
|
+
renameSync(source, target);
|
|
108
51
|
}
|
|
109
52
|
catch {
|
|
110
|
-
|
|
53
|
+
// Leave the source in place only if the rename truly failed.
|
|
54
|
+
// The next startup will retry the same hard-cut move.
|
|
111
55
|
}
|
|
112
|
-
|
|
113
|
-
});
|
|
114
|
-
// Sort ascending by name (stable key for pagination cursor).
|
|
115
|
-
items.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0));
|
|
116
|
-
return items;
|
|
56
|
+
}
|
|
117
57
|
}
|
package/dist/core/bootstrap.js
CHANGED
|
@@ -4,6 +4,7 @@ import { findProjectScopeRoot, resetScopeCache, userScopeRoot } from './scope.js
|
|
|
4
4
|
import { ensureDir, pathExists, removePath, nowIso } from './fs-utils.js';
|
|
5
5
|
import { readConfig, readState, updateConfig, updateState, ensureScopeInitialized } from './config.js';
|
|
6
6
|
import { clone } from './git.js';
|
|
7
|
+
import { migrateLegacyWorkspaceDirs } from './artifact.js';
|
|
7
8
|
import { readMarketplaceManifest } from './manifest.js';
|
|
8
9
|
import { CRTR_DIR_NAME } from '../types.js';
|
|
9
10
|
export const OFFICIAL_MARKETPLACE_NAME = 'crouter-official-marketplace';
|
|
@@ -76,6 +77,7 @@ export function ensureProjectScope(argv) {
|
|
|
76
77
|
return;
|
|
77
78
|
if (shouldSkipForArgv(argv))
|
|
78
79
|
return;
|
|
80
|
+
migrateLegacyWorkspaceDirs();
|
|
79
81
|
// Already inside a project scope (here or in an ancestor) — nothing to do.
|
|
80
82
|
if (findProjectScopeRoot() !== null)
|
|
81
83
|
return;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** The kernel's per-boot identity + a wall-clock fallback estimate. */
|
|
2
|
+
export interface BootIdentity {
|
|
3
|
+
/** `/proc/sys/kernel/random/boot_id` (a fresh UUID per kernel boot), or null
|
|
4
|
+
* when unreadable (non-Linux). Exact when present. */
|
|
5
|
+
bootId: string | null;
|
|
6
|
+
/** Best-effort wall-clock estimate of when the current boot started. Fallback
|
|
7
|
+
* discriminator only, used when `bootId` is null on either side. */
|
|
8
|
+
bootEpochMs: number;
|
|
9
|
+
}
|
|
10
|
+
/** Identity of the CURRENT OS boot. `now` is injectable for tests. */
|
|
11
|
+
export declare function currentBootIdentity(now?: number): BootIdentity;
|
|
12
|
+
/** Pure decision core: does `current` belong to a DIFFERENT boot than the
|
|
13
|
+
* persisted `known`? `known === null` (no history — a fresh install, or the
|
|
14
|
+
* first run of a build that added this marker) is never a boot change: there
|
|
15
|
+
* is nothing to contradict it, and treating "no history" as a change could
|
|
16
|
+
* clear genuinely live pids that predate this feature.
|
|
17
|
+
*
|
|
18
|
+
* When BOTH sides carry a kernel `boot_id`, that exact identity decides it — no
|
|
19
|
+
* wall-clock window, so a real quick reboot/recreate (a short-lived prior boot
|
|
20
|
+
* whose start is <60s away) is still detected. Only when a `boot_id` is missing
|
|
21
|
+
* on either side (non-Linux dev) does it fall back to the epoch-drift window.
|
|
22
|
+
* Unit-testable without real uptime/fs. */
|
|
23
|
+
export declare function bootChanged(current: BootIdentity, known: BootIdentity | null): boolean;
|
|
24
|
+
export interface BootReconcileResult {
|
|
25
|
+
/** True when a boot change was detected (and, therefore, pids were cleared). */
|
|
26
|
+
changed: boolean;
|
|
27
|
+
/** node_ids whose stale `pi_pid` was cleared. */
|
|
28
|
+
cleared: string[];
|
|
29
|
+
}
|
|
30
|
+
/** Idempotent and safe to call from every revive entry point (daemon startup,
|
|
31
|
+
* reviveNode): compares the current boot's identity against the last one
|
|
32
|
+
* recorded, and if they differ, clears `pi_pid` on every node that has one —
|
|
33
|
+
* regardless of status, since reviveNode's double-launch guard reads `pi_pid`
|
|
34
|
+
* unconditionally, not just on active/idle rows. The first caller after a
|
|
35
|
+
* genuine boot change does the sweep and persists the new marker; every call
|
|
36
|
+
* after that (in this process or another) reads a matching marker and no-ops.
|
|
37
|
+
*
|
|
38
|
+
* SINGLE-WRITER: the whole read-marker + sweep + write-marker runs in one
|
|
39
|
+
* `BEGIN IMMEDIATE` transaction. A concurrent caller (a manual revive racing
|
|
40
|
+
* daemon startup, in a separate process) blocks on the SQLite write lock until
|
|
41
|
+
* this commits, then reads the already-updated marker and no-ops — so it can
|
|
42
|
+
* never `clearPid` a broker pid the first caller's revive just recorded, which
|
|
43
|
+
* would otherwise hide a live broker behind `pi_pid=NULL` and risk a second
|
|
44
|
+
* broker on the same session.
|
|
45
|
+
*
|
|
46
|
+
* `current` defaults to the real identity; tests inject a synthetic one against
|
|
47
|
+
* an isolated CRTR_HOME to simulate a boot change without a real reboot. */
|
|
48
|
+
export declare function reconcileBootLiveness(current?: BootIdentity): BootReconcileResult;
|