@crouton-kit/crouter 0.3.33 → 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 +2 -2
- package/dist/build-root.js +3 -6
- package/dist/builtin-memory/crouter-development/marketplaces.md +6 -6
- package/dist/builtin-memory/crouter-development/plugins.md +13 -13
- package/dist/builtin-memory/internal/examples/imessage-assistant.md +3 -3
- package/dist/builtin-memory/internal/nodes-and-canvas.md +4 -4
- package/dist/builtin-personas/developer/PERSONA.md +1 -1
- package/dist/builtin-personas/orchestration-kernel.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/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.js +826 -754
- package/dist/clients/attach/auth-pickers.js +2 -2
- package/dist/clients/attach/canvas-panels.js +1 -1
- package/dist/clients/attach/chat-view.d.ts +3 -2
- package/dist/clients/attach/chat-view.js +30 -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.js +1 -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.js +1 -1
- package/dist/clients/attach/graph-overlay.js +3 -3
- package/dist/clients/attach/input-controller.js +1 -1
- package/dist/clients/attach/pickers.js +1 -1
- package/dist/clients/attach/slash-commands.js +5 -6
- package/dist/clients/attach/titled-editor.d.ts +4 -0
- package/dist/clients/attach/titled-editor.js +13 -1
- package/dist/clients/attach/view-socket.js +1 -1
- package/dist/clients/web/__tests__/source-cache.test.js +5 -5
- package/dist/clients/web/server.js +29 -5
- package/dist/clients/web/source-cache.js +3 -3
- package/dist/clients/web/web-cmd.js +7 -7
- package/dist/commands/canvas-issue.js +1 -1
- package/dist/commands/canvas-prune.js +24 -2
- package/dist/commands/canvas-snapshot.js +3 -0
- package/dist/commands/canvas-tmux-spread.js +3 -3
- package/dist/commands/human.js +1 -1
- package/dist/commands/memory/lint.js +15 -8
- package/dist/commands/memory/origin.d.ts +1 -0
- package/dist/commands/memory/origin.js +88 -0
- package/dist/commands/memory/shared.d.ts +8 -0
- package/dist/commands/memory/shared.js +22 -1
- package/dist/commands/memory/write.js +17 -12
- package/dist/commands/memory.js +4 -3
- package/dist/commands/node-context.js +4 -4
- package/dist/commands/node-snapshot.js +4 -1
- package/dist/commands/node.d.ts +2 -2
- package/dist/commands/node.js +814 -606
- 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 +8 -24
- package/dist/commands/pkg/plugin-manage.d.ts +5 -1
- package/dist/commands/pkg/plugin-manage.js +245 -171
- package/dist/commands/pkg/plugin.js +6 -6
- package/dist/commands/pkg.js +5 -5
- package/dist/commands/revive.js +5 -3
- package/dist/commands/search/answer.js +1 -1
- package/dist/commands/search/contents.js +1 -1
- package/dist/commands/search/web.js +2 -2
- package/dist/commands/search.js +1 -1
- package/dist/commands/surface.d.ts +2 -0
- package/dist/commands/surface.js +43 -0
- package/dist/commands/sys/promptstudio.js +1 -1
- package/dist/commands/sys/settings.js +2 -2
- 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/sysprompt.js +3 -0
- package/dist/commands/sys.js +3 -2
- package/dist/commands/view-cycle.js +5 -5
- package/dist/commands/view-list.js +3 -3
- package/dist/commands/view-new.js +5 -5
- 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-sdk-wiring.test.js +6 -27
- package/dist/core/__tests__/daemon-boot.test.js +22 -0
- package/dist/core/__tests__/fixtures/fake-engine.js +1 -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__/hearth-bootstrap.test.js +136 -0
- package/dist/core/__tests__/helpers/harness.js +1 -1
- 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 +124 -0
- 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__/revive.test.js +64 -21
- 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/canvas/boot.d.ts +48 -0
- package/dist/core/canvas/boot.js +157 -0
- package/dist/core/canvas/canvas.d.ts +27 -1
- package/dist/core/canvas/canvas.js +86 -5
- package/dist/core/canvas/db.js +86 -1
- package/dist/core/canvas/index.d.ts +1 -1
- package/dist/core/canvas/index.js +1 -1
- package/dist/core/canvas/nav-model.js +1 -1
- package/dist/core/canvas/pid.d.ts +6 -0
- package/dist/core/canvas/pid.js +13 -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 +128 -46
- package/dist/core/command.js +13 -4
- package/dist/core/hearth/__tests__/model-auth-guest.test.js +151 -0
- package/dist/core/hearth/config.d.ts +1 -0
- package/dist/core/hearth/config.js +36 -0
- package/dist/core/hearth/guest-env.d.ts +7 -0
- package/dist/core/hearth/guest-env.js +17 -1
- 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 +13 -6
- package/dist/core/hearth/providers/blaxel-bootstrap.d.ts +2 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.js +127 -19
- package/dist/core/hearth/providers/blaxel-home.d.ts +8 -4
- package/dist/core/hearth/providers/blaxel-home.js +85 -75
- package/dist/core/hearth/providers/blaxel.d.ts +5 -0
- package/dist/core/hearth/providers/blaxel.js +86 -12
- package/dist/core/hearth/providers/types.d.ts +6 -1
- package/dist/core/hearth/registry.js +2 -1
- package/dist/core/hearth/types.d.ts +35 -0
- package/dist/core/help.d.ts +16 -0
- package/dist/core/help.js +2 -0
- package/dist/core/memory-resolver.d.ts +8 -8
- package/dist/core/memory-resolver.js +58 -26
- 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/bearings.d.ts +11 -10
- package/dist/core/runtime/bearings.js +8 -8
- package/dist/core/runtime/broker-protocol.d.ts +2 -2
- package/dist/core/runtime/broker-protocol.js +2 -2
- package/dist/core/runtime/close.js +2 -2
- package/dist/core/runtime/kickoff.js +1 -1
- package/dist/core/runtime/launch.d.ts +9 -3
- package/dist/core/runtime/launch.js +17 -9
- package/dist/core/runtime/lifecycle.js +7 -7
- package/dist/core/runtime/model-swap.js +1 -1
- package/dist/core/runtime/placement.d.ts +5 -5
- package/dist/core/runtime/placement.js +10 -10
- package/dist/core/runtime/recycle.js +7 -7
- package/dist/core/runtime/reset.d.ts +1 -1
- package/dist/core/runtime/reset.js +3 -3
- 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 +15 -8
- package/dist/core/runtime/revive.js +52 -16
- package/dist/core/runtime/spawn.d.ts +1 -1
- package/dist/core/runtime/spawn.js +7 -7
- package/dist/core/runtime/stop-guard.js +5 -5
- package/dist/core/runtime/surface-bg.js +1 -1
- package/dist/core/runtime/tmux.d.ts +1 -1
- package/dist/core/runtime/tmux.js +4 -4
- package/dist/core/scope.d.ts +9 -0
- package/dist/core/scope.js +37 -15
- package/dist/core/substrate/on-read.js +23 -21
- package/dist/core/substrate/render.js +3 -3
- package/dist/core/view/loader.js +2 -2
- 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.js +222 -103
- 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.js +133 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.js +170 -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.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/wake.d.ts +80 -0
- package/dist/hearth/control-plane/wake.js +312 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.js +2 -2
- package/dist/hearth/wake-proxy/home.d.ts +2 -8
- package/dist/hearth/wake-proxy/home.js +48 -12
- package/dist/pi-extensions/canvas-doc-substrate.js +28 -2
- package/dist/pi-extensions/canvas-nav.js +1 -1
- package/dist/prompts/view.js +7 -8
- package/dist/types.js +4 -4
- package/dist/web-client/assets/{index-D36PNBj4.js → index-BRKxe-hy.js} +2 -2
- package/dist/web-client/index.html +1 -1
- package/package.json +12 -8
- package/scripts/postinstall.mjs +8 -0
- package/dist/clients/attach/__tests__/action-parity.test.js +0 -48
- package/dist/clients/attach/__tests__/autocomplete-and-bash-mode.test.js +0 -96
- package/dist/clients/attach/__tests__/bash-bang-routing.test.js +0 -58
- package/dist/clients/attach/__tests__/bundle-pi-tui-dedup.test.js +0 -56
- 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 -60
- 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__/artifact-paths.test.js +0 -44
- package/dist/core/__tests__/draw-style.test.js +0 -258
- package/dist/core/__tests__/editor-label.test.js +0 -26
- package/dist/core/__tests__/fault-marker.test.js +0 -112
- package/dist/core/__tests__/fault-retry-rewind.test.d.ts +0 -1
- package/dist/core/__tests__/fault-retry-rewind.test.js +0 -123
- package/dist/core/__tests__/frame-decoder-perf.test.d.ts +0 -1
- package/dist/core/__tests__/frame-decoder-perf.test.js +0 -224
- package/dist/core/__tests__/keystone.test.d.ts +0 -1
- package/dist/core/__tests__/keystone.test.js +0 -185
- package/dist/core/__tests__/listing-completeness.test.d.ts +0 -1
- package/dist/core/__tests__/listing-completeness.test.js +0 -31
- package/dist/core/__tests__/memory-resolver.test.d.ts +0 -1
- package/dist/core/__tests__/memory-resolver.test.js +0 -119
- package/dist/core/__tests__/memory.test.d.ts +0 -1
- package/dist/core/__tests__/memory.test.js +0 -60
- package/dist/core/__tests__/model-ladders.test.d.ts +0 -1
- package/dist/core/__tests__/model-ladders.test.js +0 -160
- package/dist/core/__tests__/node-env.test.d.ts +0 -1
- package/dist/core/__tests__/node-env.test.js +0 -26
- package/dist/core/__tests__/pane-column.test.d.ts +0 -1
- package/dist/core/__tests__/pane-column.test.js +0 -153
- package/dist/core/__tests__/persona-compose.test.d.ts +0 -1
- package/dist/core/__tests__/persona-compose.test.js +0 -53
- package/dist/core/__tests__/persona-subkind.test.d.ts +0 -1
- package/dist/core/__tests__/persona-subkind.test.js +0 -65
- package/dist/core/__tests__/persona.test.d.ts +0 -1
- package/dist/core/__tests__/persona.test.js +0 -107
- package/dist/core/__tests__/unknown-path.test.d.ts +0 -1
- 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/hearth/wake-proxy/__tests__/source-bridge-gate.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/source-bridge-gate.test.js +0 -455
- /package/dist/clients/attach/__tests__/{action-parity.test.d.ts → crtr-output-coverage.test.d.ts} +0 -0
- /package/dist/clients/attach/__tests__/{autocomplete-and-bash-mode.test.d.ts → crtr-output-render.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/bash-bang-routing.test.d.ts → core/__tests__/boot.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/bundle-pi-tui-dedup.test.d.ts → core/__tests__/hearth-bootstrap.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/clipboard-image.test.d.ts → core/__tests__/preview-registry-sync.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/editor-newline.test.d.ts → core/__tests__/prune-to-limit.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/git-info.test.d.ts → core/__tests__/trigger-migration.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/onrequest-wired.test.d.ts → core/hearth/__tests__/model-auth-guest.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/reconnect-giveup.test.d.ts → daemon/__tests__/predicate-eval.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/slash-quit-copy.test.d.ts → hearth/control-plane/__tests__/node-message.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/titled-editor.test.d.ts → hearth/control-plane/__tests__/rate-limit-recurrence.test.d.ts} +0 -0
- /package/dist/{commands/memory/__tests__/lint-schema.test.d.ts → hearth/control-plane/__tests__/relay-security.test.d.ts} +0 -0
- /package/dist/{core/__tests__/argv-parser.test.d.ts → hearth/control-plane/__tests__/scheduler-scan-loop.test.d.ts} +0 -0
- /package/dist/{core/__tests__/artifact-paths.test.d.ts → hearth/control-plane/__tests__/trigger-delivery.test.d.ts} +0 -0
- /package/dist/{core/__tests__/draw-style.test.d.ts → hearth/control-plane/__tests__/webhook-ingress.test.d.ts} +0 -0
- /package/dist/{core/__tests__/editor-label.test.d.ts → hearth/control-plane/main.d.ts} +0 -0
- /package/dist/{core/__tests__/fault-marker.test.d.ts → hearth/control-plane/types.js} +0 -0
|
@@ -9,36 +9,47 @@
|
|
|
9
9
|
// auto-reconnect), and a node with no viewer is brought on screen by the next
|
|
10
10
|
// `focus`.
|
|
11
11
|
//
|
|
12
|
-
// resume=true → `pi --session <path
|
|
13
|
-
//
|
|
14
|
-
//
|
|
12
|
+
// resume=true → `pi --session <path>` — wakes the saved conversation by its
|
|
13
|
+
// absolute session-file path (cwd-immune), but only when that
|
|
14
|
+
// file actually exists on disk; otherwise falls through to a
|
|
15
|
+
// fresh launch (see resumeArgs).
|
|
15
16
|
// resume=false → fresh pi invocation — the node re-reads its roadmap/context dir.
|
|
16
17
|
//
|
|
17
18
|
// reviveNode remains the ONLY sanctioned launcher of the node engine.
|
|
19
|
+
import { existsSync } from 'node:fs';
|
|
18
20
|
import { getNode, updateNode, clearPid, fullName, cancelDeadlinesFor, } from '../canvas/index.js';
|
|
19
21
|
import { transition } from './lifecycle.js';
|
|
20
22
|
import { buildPiArgv } from './launch.js';
|
|
21
23
|
import { buildReviveKickoff, drainBearings } from './kickoff.js';
|
|
22
24
|
import { headlessBrokerHost } from './host.js';
|
|
23
25
|
import { isPidAlive } from '../canvas/pid.js';
|
|
26
|
+
import { reconcileBootLiveness } from '../canvas/boot.js';
|
|
24
27
|
import { clearFault } from './fault.js';
|
|
25
28
|
import { clearInjectedDocs } from '../substrate/injected-store.js';
|
|
26
29
|
// ---------------------------------------------------------------------------
|
|
27
30
|
// resumeArgs — which session source a revive resumes from
|
|
28
31
|
// ---------------------------------------------------------------------------
|
|
29
|
-
/** Pick the `--session` source for a revive. resume=true
|
|
30
|
-
* session-file path (immune to cwd; pi opens it directly)
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
32
|
+
/** Pick the `--session` source for a revive. resume=true resumes by the
|
|
33
|
+
* absolute session-file path (immune to cwd; pi opens it directly) — but ONLY
|
|
34
|
+
* when that file actually exists on disk. A node's `pi_session_file` can be
|
|
35
|
+
* recorded in meta with nothing ever written there (e.g. its first-boot engine
|
|
36
|
+
* died before session_start ever ran), and `headlessBrokerHost.launch`'s
|
|
37
|
+
* preflight (host.ts) fatally rejects handing pi a `--session` for a missing
|
|
38
|
+
* path OR a bare id — either would crash the revive and strand the node dead
|
|
39
|
+
* with nothing to recover it. So when there is no real `.jsonl` to resume,
|
|
40
|
+
* this selects NEITHER source: the caller then falls through to a fresh
|
|
41
|
+
* (`--fresh`-equivalent) launch, which is always safe. resume=false (a
|
|
42
|
+
* refresh-yield) also selects neither — the node re-reads its roadmap fresh.
|
|
43
|
+
* Pure so the decision is unit-testable without tmux or a real filesystem
|
|
44
|
+
* fixture beyond a temp file. */
|
|
35
45
|
export function resumeArgs(meta, resume) {
|
|
36
46
|
if (!resume)
|
|
37
47
|
return {};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
resumeSessionPath:
|
|
41
|
-
}
|
|
48
|
+
const path = meta.pi_session_file;
|
|
49
|
+
if (path != null && path !== '' && existsSync(path)) {
|
|
50
|
+
return { resumeSessionPath: path };
|
|
51
|
+
}
|
|
52
|
+
return {};
|
|
42
53
|
}
|
|
43
54
|
// ---------------------------------------------------------------------------
|
|
44
55
|
// reviveNode
|
|
@@ -62,6 +73,15 @@ export function reviveNode(nodeId, opts) {
|
|
|
62
73
|
updateNode(nodeId, { host_kind: 'broker' });
|
|
63
74
|
meta.host_kind = 'broker';
|
|
64
75
|
}
|
|
76
|
+
// A durable-row / ephemeral-pid boot change (a sandbox/VM destroy+recreate,
|
|
77
|
+
// or a host reboot) invalidates every `pi_pid` recorded before it — the OS
|
|
78
|
+
// process table reset, so a small stale pid can coincidentally collide with
|
|
79
|
+
// an unrelated process on the new boot and fool the double-launch guard
|
|
80
|
+
// right below into believing a dead broker is still alive. Idempotent and
|
|
81
|
+
// cheap once reconciled (a single small file read) except the one time it
|
|
82
|
+
// actually matters, so it's safe to call on every revive regardless of
|
|
83
|
+
// entry point (daemon tick, or a direct/manual `canvas revive`).
|
|
84
|
+
reconcileBootLiveness();
|
|
65
85
|
// Double-revive guard: the broker's isAlive IS isPidAlive(pi_pid), so a node
|
|
66
86
|
// whose broker pid is still running was already revived by another path —
|
|
67
87
|
// re-launching would put a SECOND broker on the same session file. No-op.
|
|
@@ -78,10 +98,26 @@ export function reviveNode(nodeId, opts) {
|
|
|
78
98
|
// launches with the incremented count.
|
|
79
99
|
meta.cycles = (meta.cycles ?? 0) + 1;
|
|
80
100
|
updateNode(nodeId, { cycles: meta.cycles });
|
|
81
|
-
// Decide whether to wake the saved pi conversation or start fresh.
|
|
82
|
-
// absolute session-file path (cwd-immune)
|
|
101
|
+
// Decide whether to wake the saved pi conversation or start fresh. resumeArgs
|
|
102
|
+
// resumes ONLY by the absolute session-file path (cwd-immune) and ONLY when
|
|
103
|
+
// that .jsonl actually exists; there is no bare-id fallback (the broker
|
|
104
|
+
// preflight rejects a bare `--session`). Anything else is a fresh launch.
|
|
83
105
|
const resume = resumeArgs(meta, opts.resume);
|
|
84
|
-
const resuming = resume.resumeSessionPath !== undefined
|
|
106
|
+
const resuming = resume.resumeSessionPath !== undefined;
|
|
107
|
+
// A fresh (non-resuming) launch starts a NEW pi session — the old session
|
|
108
|
+
// identity is dead. Clear it from meta NOW, before launch, so the recorded
|
|
109
|
+
// state matches what we're about to do. This is load-bearing for boot-failure
|
|
110
|
+
// classification: if this fresh broker dies BEFORE session_start (recording
|
|
111
|
+
// no new pid and no new session), the daemon's pid-null branch keys on
|
|
112
|
+
// pi_session_id — a leftover stale id would be misread as a "stranded
|
|
113
|
+
// relaunch" and retried forever instead of surfaced via transition('crash') +
|
|
114
|
+
// surfaceBootFailure. Clearing it makes the failure show as pid=NULL +
|
|
115
|
+
// session=NULL → boot failure, the correct terminal outcome.
|
|
116
|
+
if (!resuming && (meta.pi_session_id != null || meta.pi_session_file != null)) {
|
|
117
|
+
updateNode(nodeId, { pi_session_id: null, pi_session_file: null });
|
|
118
|
+
meta.pi_session_id = null;
|
|
119
|
+
meta.pi_session_file = null;
|
|
120
|
+
}
|
|
85
121
|
// A fresh revive (no resume) gets a kickoff prompt so it re-reads its roadmap
|
|
86
122
|
// and continues; resuming a saved conversation needs none. drainBearings is the
|
|
87
123
|
// one-shot consuming step (yield note + feed cursor + persona ack); the builder
|
|
@@ -7,7 +7,7 @@ export interface BootRootOpts {
|
|
|
7
7
|
/** Optional starter prompt (bare `crtr` requires none). */
|
|
8
8
|
prompt?: string;
|
|
9
9
|
}
|
|
10
|
-
/** Create the front-door root: launch its broker engine, then exec `crtr attach`
|
|
10
|
+
/** Create the front-door root: launch its broker engine, then exec `crtr surface attach`
|
|
11
11
|
* inline so THIS terminal becomes the broker's controller-viewer. Does not
|
|
12
12
|
* return — it process.exit()s when the inline attach exits (detach leaves the
|
|
13
13
|
* resident broker running, to be reconnected later). */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// (resolve), launch (pi argv), and tmux (placement).
|
|
4
4
|
//
|
|
5
5
|
// bootRoot — the user-opened front door (bare `crtr`). Resident; launches the
|
|
6
|
-
// root's broker engine, then execs `crtr attach` inline so THIS
|
|
6
|
+
// root's broker engine, then execs `crtr surface attach` inline so THIS
|
|
7
7
|
// terminal becomes the broker's controller-viewer.
|
|
8
8
|
// spawnChild — a node spawned by a live node (`crtr node new`). A managed,
|
|
9
9
|
// terminal background worker by default; with `root`, an
|
|
@@ -42,12 +42,12 @@ function launchBrokerOrCrash(nodeId, inv, opts) {
|
|
|
42
42
|
throw new Error(`[broker] refusing to launch ${nodeId}: ${error.message}`);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
/** Create the front-door root: launch its broker engine, then exec `crtr attach`
|
|
45
|
+
/** Create the front-door root: launch its broker engine, then exec `crtr surface attach`
|
|
46
46
|
* inline so THIS terminal becomes the broker's controller-viewer. Does not
|
|
47
47
|
* return — it process.exit()s when the inline attach exits (detach leaves the
|
|
48
48
|
* resident broker running, to be reconnected later). */
|
|
49
49
|
export async function bootRoot(opts) {
|
|
50
|
-
// crtr is tmux-only: the front door execs `crtr attach` inline in THIS pane to
|
|
50
|
+
// crtr is tmux-only: the front door execs `crtr surface attach` inline in THIS pane to
|
|
51
51
|
// become the root's controller-viewer, so there must be a tmux pane to anchor
|
|
52
52
|
// on. Outside tmux there is no viewer surface — throw with a friendly message
|
|
53
53
|
// rather than boot a root nobody can see.
|
|
@@ -101,7 +101,7 @@ export async function bootRoot(opts) {
|
|
|
101
101
|
// pane lives in the focuses table (below).
|
|
102
102
|
const here = currentTmux();
|
|
103
103
|
// The FOREGROUND front-door terminal is the root's one viewer: record its pane
|
|
104
|
-
// as the node's viewer focus row so focus/nav can find it. The `crtr attach`
|
|
104
|
+
// as the node's viewer focus row so focus/nav can find it. The `crtr surface attach`
|
|
105
105
|
// exec below makes the terminal a controller-viewer of the broker; detaching
|
|
106
106
|
// leaves the resident broker running.
|
|
107
107
|
if (here !== null) {
|
|
@@ -113,7 +113,7 @@ export async function bootRoot(opts) {
|
|
|
113
113
|
const inv = buildPiArgv(meta, { prompt: opts.prompt });
|
|
114
114
|
// Broker is the only host: the root runs as a detached broker engine (so its
|
|
115
115
|
// first refresh/revive doesn't strand this terminal — the daemon revives the
|
|
116
|
-
// broker and the viewer reconnects), and THIS terminal execs `crtr attach`
|
|
116
|
+
// broker and the viewer reconnects), and THIS terminal execs `crtr surface attach`
|
|
117
117
|
// inline to become its controller-viewer. The host sets CRTR_FRONT_DOOR.
|
|
118
118
|
inv.env = { ...inv.env, CRTR_SUBTREE: rootOfSpine(meta.node_id) };
|
|
119
119
|
const placed = launchBrokerOrCrash(meta.node_id, inv, {
|
|
@@ -140,7 +140,7 @@ export async function bootRoot(opts) {
|
|
|
140
140
|
throw new Error(`the front-door root broker ${meta.node_id} never bound its view socket — cannot attach.`);
|
|
141
141
|
}
|
|
142
142
|
const attachEnv = { ...process.env, ...viewerSplitEnv() };
|
|
143
|
-
const r = spawnSync('crtr', ['attach', 'to', meta.node_id], { stdio: 'inherit', env: attachEnv });
|
|
143
|
+
const r = spawnSync('crtr', ['surface', 'attach', 'to', meta.node_id], { stdio: 'inherit', env: attachEnv });
|
|
144
144
|
process.exit(r.status ?? 0);
|
|
145
145
|
}
|
|
146
146
|
/** pi's sessions root, VENDORED from pi `config.getSessionsDir()` (= `<agentDir>/
|
|
@@ -314,7 +314,7 @@ export async function spawnChild(opts) {
|
|
|
314
314
|
inv.env = { ...inv.env, CRTR_SUBTREE: rootOfSpine(meta.node_id) };
|
|
315
315
|
// Broker is the only host: launch the detached broker ENGINE. A managed child
|
|
316
316
|
// gets NO viewer — spawning it returns once the engine is launched and a human
|
|
317
|
-
// opens a viewer on demand via `crtr node focus` /
|
|
317
|
+
// opens a viewer on demand via `crtr node focus` / surface attach. A --root gets
|
|
318
318
|
// one foreground viewer below.
|
|
319
319
|
const placed = launchBrokerOrCrash(meta.node_id, inv, {
|
|
320
320
|
cwd: meta.cwd,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// Also fine.
|
|
17
17
|
// • otherwise → a TERMINAL node with nothing live to wait for and no
|
|
18
18
|
// final pushed. Re-prompt it to finish or escalate.
|
|
19
|
-
import { hasActiveLiveSubscription,
|
|
19
|
+
import { hasActiveLiveSubscription, hasPendingSelfTrigger, getNode } from '../canvas/index.js';
|
|
20
20
|
export const STALL_REPROMPT = "You've stopped but you're not waiting on anyone and haven't finished. " +
|
|
21
21
|
'Run `crtr push final "<result>"` if the work is done, or `crtr human ask` if you are blocked or need the user.';
|
|
22
22
|
/** Decide what to do when a node stops. Pure given the canvas + this turn's
|
|
@@ -40,10 +40,10 @@ export function evaluateStop(nodeId, signals) {
|
|
|
40
40
|
if (node !== null && node.lifecycle === 'resident') {
|
|
41
41
|
return { action: 'allow', reason: 'dormant' };
|
|
42
42
|
}
|
|
43
|
-
// A terminal node with a pending self-scheduled
|
|
44
|
-
// waiting on the clock: the daemon's
|
|
45
|
-
// fires, so it should idle-release rather than busy-wait holding pi/window.
|
|
46
|
-
if (
|
|
43
|
+
// A terminal node with a pending self-scheduled trigger is legitimately
|
|
44
|
+
// waiting on the clock: the daemon's trigger sweep resumes it when the
|
|
45
|
+
// trigger fires, so it should idle-release rather than busy-wait holding pi/window.
|
|
46
|
+
if (hasPendingSelfTrigger(nodeId))
|
|
47
47
|
return { action: 'allow', reason: 'scheduled' };
|
|
48
48
|
// A terminal node holding something live to wake it is legitimately awaiting.
|
|
49
49
|
if (hasActiveLiveSubscription(nodeId))
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// door (which never otherwise loads pi). We only READ the process-global symbol;
|
|
18
18
|
// any process that needs styling (the attach viewer, a node's broker) has already
|
|
19
19
|
// called `initTheme()` and populated it. Where the symbol is absent (the front
|
|
20
|
-
// door, before it execs into the themed `crtr attach`), the tmux helpers return
|
|
20
|
+
// door, before it execs into the themed `crtr surface attach`), the tmux helpers return
|
|
21
21
|
// no style args and the chrome stays at its default — the viewer re-themes it.
|
|
22
22
|
const THEME_SYMBOL = Symbol.for('@earendil-works/pi-coding-agent:theme');
|
|
23
23
|
/** The live pi Theme if a process has already run `initTheme()`, else undefined.
|
|
@@ -120,7 +120,7 @@ export declare function paneLocation(pane: string): {
|
|
|
120
120
|
export declare function paneExists(pane: string): boolean;
|
|
121
121
|
/** Does this pane exist AND have its command still RUNNING (`#{pane_dead}` = 0)?
|
|
122
122
|
* Distinguishes a pane genuinely hosting a live process from a remain-on-exit
|
|
123
|
-
* corpse frozen after exit (`pane_dead` = 1). Node viewer panes run `crtr attach`
|
|
123
|
+
* corpse frozen after exit (`pane_dead` = 1). Node viewer panes run `crtr surface attach`
|
|
124
124
|
* as the pane command, so pane-running ⟹ a live viewer occupies it. */
|
|
125
125
|
export declare function paneRunning(pane: string): boolean;
|
|
126
126
|
/** Every live pane id on the server (`list-panes -a`), as a Set for membership
|
|
@@ -247,7 +247,7 @@ export function paneExists(pane) {
|
|
|
247
247
|
}
|
|
248
248
|
/** Does this pane exist AND have its command still RUNNING (`#{pane_dead}` = 0)?
|
|
249
249
|
* Distinguishes a pane genuinely hosting a live process from a remain-on-exit
|
|
250
|
-
* corpse frozen after exit (`pane_dead` = 1). Node viewer panes run `crtr attach`
|
|
250
|
+
* corpse frozen after exit (`pane_dead` = 1). Node viewer panes run `crtr surface attach`
|
|
251
251
|
* as the pane command, so pane-running ⟹ a live viewer occupies it. */
|
|
252
252
|
export function paneRunning(pane) {
|
|
253
253
|
const r = tmux(['display-message', '-p', '-t', pane, '#{pane_id}\t#{pane_dead}']);
|
|
@@ -501,7 +501,7 @@ export function installNavBindings() {
|
|
|
501
501
|
// is claimed, and bare Alt pairs are a minefield in real configs (e.g. Alt+,/.
|
|
502
502
|
// and Alt+]/.[ commonly bound to window/pane nav). The bracket lives in the
|
|
503
503
|
// private table, so it also sidesteps the M-[ vs CSI-introducer ambiguity that
|
|
504
|
-
// dogs installNavBindings' Alt+[. Each key shells
|
|
504
|
+
// dogs installNavBindings' Alt+[. Each key shells surface-view cycle, passing the
|
|
505
505
|
// active pane; cycle reads the pane's @crtr_view tag and respawns it on the
|
|
506
506
|
// next/prev view. Output discarded so the keypress never pops a results view.
|
|
507
507
|
// Installed at root boot alongside the node nav + Alt+C menu.
|
|
@@ -523,11 +523,11 @@ export function installViewNavBindings() {
|
|
|
523
523
|
]).ok;
|
|
524
524
|
const next = tmux([
|
|
525
525
|
'bind-key', '-T', 'crtr-view', ']', 'run-shell',
|
|
526
|
-
`crtr view cycle --dir next --pane '#{pane_id}' >/dev/null 2>&1`,
|
|
526
|
+
`crtr surface view cycle --dir next --pane '#{pane_id}' >/dev/null 2>&1`,
|
|
527
527
|
]).ok;
|
|
528
528
|
const prev = tmux([
|
|
529
529
|
'bind-key', '-T', 'crtr-view', '[', 'run-shell',
|
|
530
|
-
`crtr view cycle --dir prev --pane '#{pane_id}' >/dev/null 2>&1`,
|
|
530
|
+
`crtr surface view cycle --dir prev --pane '#{pane_id}' >/dev/null 2>&1`,
|
|
531
531
|
]).ok;
|
|
532
532
|
return enter && next && prev;
|
|
533
533
|
}
|
package/dist/core/scope.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import type { InstalledPlugin, Scope } from '../types.js';
|
|
2
2
|
export declare function builtinViewsRoot(): string;
|
|
3
3
|
export declare function builtinMemoryRoot(): string;
|
|
4
|
+
export declare function builtinPiPackagesDir(): string;
|
|
5
|
+
export declare function builtinPiPackageDir(name: string): string;
|
|
4
6
|
export declare function userScopeRoot(): string;
|
|
5
7
|
export declare function findProjectScopeRoot(startDir?: string): string | null;
|
|
8
|
+
/** Every project scope root visible from `startDir`, nearest first. Each
|
|
9
|
+
* ancestor directory with a `.crouter/` contributes memory/preferences to the
|
|
10
|
+
* current workspace; the nearest root still wins for writes and duplicate doc
|
|
11
|
+
* names. The user-global `~/.crouter/` is excluded because it is the separate
|
|
12
|
+
* user scope, not a project ancestor. */
|
|
13
|
+
export declare function findProjectScopeRoots(startDir?: string): string[];
|
|
6
14
|
export declare function projectScopeRoot(startDir?: string): string | null;
|
|
15
|
+
export declare function projectScopeRoots(startDir?: string): string[];
|
|
7
16
|
export declare function scopeRoot(scope: Scope): string | null;
|
|
8
17
|
export declare function requireScopeRoot(scope: Scope): string;
|
|
9
18
|
export declare function ensureProjectScopeRoot(startDir?: string): string;
|
package/dist/core/scope.js
CHANGED
|
@@ -24,38 +24,60 @@ export function builtinMemoryRoot() {
|
|
|
24
24
|
const pkgDir = dirname(coreDir); // src/ or dist/
|
|
25
25
|
return join(pkgDir, 'builtin-memory');
|
|
26
26
|
}
|
|
27
|
+
export function builtinPiPackagesDir() {
|
|
28
|
+
const thisFile = fileURLToPath(import.meta.url);
|
|
29
|
+
const coreDir = dirname(thisFile);
|
|
30
|
+
const pkgDir = dirname(coreDir); // src/ or dist/
|
|
31
|
+
return join(pkgDir, 'builtin-pi-packages');
|
|
32
|
+
}
|
|
33
|
+
export function builtinPiPackageDir(name) {
|
|
34
|
+
return join(builtinPiPackagesDir(), name);
|
|
35
|
+
}
|
|
27
36
|
export function userScopeRoot() {
|
|
28
37
|
return join(homedir(), CRTR_DIR_NAME);
|
|
29
38
|
}
|
|
39
|
+
function isProjectScopeDir(candidate, userRoot) {
|
|
40
|
+
if (candidate === userRoot || !existsSync(candidate))
|
|
41
|
+
return false;
|
|
42
|
+
try {
|
|
43
|
+
return statSync(candidate).isDirectory();
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
30
49
|
export function findProjectScopeRoot(startDir = process.cwd()) {
|
|
31
50
|
if (cachedProjectRoot !== undefined)
|
|
32
51
|
return cachedProjectRoot;
|
|
52
|
+
const roots = findProjectScopeRoots(startDir);
|
|
53
|
+
cachedProjectRoot = roots[0] ?? null;
|
|
54
|
+
return cachedProjectRoot;
|
|
55
|
+
}
|
|
56
|
+
/** Every project scope root visible from `startDir`, nearest first. Each
|
|
57
|
+
* ancestor directory with a `.crouter/` contributes memory/preferences to the
|
|
58
|
+
* current workspace; the nearest root still wins for writes and duplicate doc
|
|
59
|
+
* names. The user-global `~/.crouter/` is excluded because it is the separate
|
|
60
|
+
* user scope, not a project ancestor. */
|
|
61
|
+
export function findProjectScopeRoots(startDir = process.cwd()) {
|
|
62
|
+
const roots = [];
|
|
33
63
|
const userRoot = userScopeRoot();
|
|
34
64
|
let dir = resolve(startDir);
|
|
35
65
|
while (true) {
|
|
36
66
|
const candidate = join(dir, CRTR_DIR_NAME);
|
|
37
|
-
if (candidate
|
|
38
|
-
|
|
39
|
-
if (statSync(candidate).isDirectory()) {
|
|
40
|
-
cachedProjectRoot = candidate;
|
|
41
|
-
return candidate;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
/* fall through */
|
|
46
|
-
}
|
|
47
|
-
}
|
|
67
|
+
if (isProjectScopeDir(candidate, userRoot))
|
|
68
|
+
roots.push(candidate);
|
|
48
69
|
const parent = dirname(dir);
|
|
49
|
-
if (parent === dir)
|
|
50
|
-
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
70
|
+
if (parent === dir)
|
|
71
|
+
return roots;
|
|
53
72
|
dir = parent;
|
|
54
73
|
}
|
|
55
74
|
}
|
|
56
75
|
export function projectScopeRoot(startDir) {
|
|
57
76
|
return findProjectScopeRoot(startDir);
|
|
58
77
|
}
|
|
78
|
+
export function projectScopeRoots(startDir) {
|
|
79
|
+
return findProjectScopeRoots(startDir);
|
|
80
|
+
}
|
|
59
81
|
export function scopeRoot(scope) {
|
|
60
82
|
// The builtin scope has no scope-root dir: its only content is memory
|
|
61
83
|
// (builtinMemoryRoot) and views (builtinViewsRoot), both hard special cases.
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
// surface (design §4/§6; Stream A native rules):
|
|
8
8
|
//
|
|
9
9
|
// • POSITIONAL — walk the read file's ancestor dirs; any doc living in an
|
|
10
|
-
// ancestor
|
|
11
|
-
// beside/under its own scope dir is read), UNLESS it carries an
|
|
12
|
-
// read-trigger (see D5 below). This mirrors nested-context's
|
|
13
|
-
// ancestor walk, but keyed on `.crouter/memory/`.
|
|
10
|
+
// ancestor PROJECT `.crouter/memory/` surfaces (a doc surfaces when a file
|
|
11
|
+
// beside/under its own project scope dir is read), UNLESS it carries an
|
|
12
|
+
// explicit read-trigger (see D5 below). This mirrors nested-context's
|
|
13
|
+
// `.claude/rules` ancestor walk, but keyed on `.crouter/memory/`. The
|
|
14
|
+
// user-global `~/.crouter/memory/` store is NOT positional; user docs only
|
|
15
|
+
// fire on reads through explicit `applies-to` / `read-when` triggers.
|
|
14
16
|
// • applies-to GLOB — any RESOLVED substrate doc (user/project/builtin scope)
|
|
15
17
|
// whose `appliesTo` glob matches the read file path surfaces, regardless of
|
|
16
18
|
// where the read file sits relative to the doc.
|
|
@@ -35,8 +37,8 @@
|
|
|
35
37
|
// parse → gatePasses(doc, assembleNodeSubject(nodeId)) → render
|
|
36
38
|
// (content → body, preview → previewLine, name → bare tag, none → skip).
|
|
37
39
|
// The result is the faithful envelope (verdict n1):
|
|
38
|
-
// <auto-loaded-context
|
|
39
|
-
// <
|
|
40
|
+
// <auto-loaded-context>
|
|
41
|
+
// <memory kind="…" name="…" src="…">…body/preview…</memory>
|
|
40
42
|
// </auto-loaded-context>
|
|
41
43
|
// Returns '' when nothing surfaces.
|
|
42
44
|
//
|
|
@@ -141,27 +143,28 @@ function safeWalkMd(dir) {
|
|
|
141
143
|
function hasExplicitTrigger(doc) {
|
|
142
144
|
return (doc.appliesTo !== undefined && doc.appliesTo.length > 0) || doc.readWhen !== undefined;
|
|
143
145
|
}
|
|
144
|
-
/** POSITIONAL trigger: every substrate doc in an ancestor dir's
|
|
146
|
+
/** POSITIONAL trigger: every substrate doc in an ancestor PROJECT dir's
|
|
145
147
|
* `.crouter/memory/`, walking from the read file up to $HOME (or the
|
|
146
|
-
* filesystem root for a read outside $HOME), skipping junk ancestors.
|
|
148
|
+
* filesystem root for a read outside $HOME), skipping junk ancestors. The
|
|
149
|
+
* user-global `~/.crouter/memory/` store is deliberately skipped: otherwise
|
|
150
|
+
* every file read under $HOME would surface unrelated user-wide preferences. */
|
|
147
151
|
function positionalCandidates(absReadFile) {
|
|
148
152
|
const out = [];
|
|
149
153
|
const seenDocPaths = new Set();
|
|
150
|
-
const home = homedir();
|
|
154
|
+
const home = realpathOrSelf(homedir());
|
|
151
155
|
const fsRoot = parse(absReadFile).root;
|
|
152
156
|
let dir = dirname(absReadFile);
|
|
153
157
|
let depth = 0;
|
|
154
158
|
while (true) {
|
|
155
|
-
if (!isJunkAncestor(dir)) {
|
|
159
|
+
if (dir !== home && !isJunkAncestor(dir)) {
|
|
156
160
|
const memDir = join(dir, CRTR_DIR_NAME, 'memory');
|
|
157
161
|
if (pathExists(memDir)) {
|
|
158
|
-
const scope = dir === home ? 'user' : 'project';
|
|
159
162
|
for (const file of safeWalkMd(memDir)) {
|
|
160
163
|
const real = realpathOrSelf(file);
|
|
161
164
|
if (seenDocPaths.has(real))
|
|
162
165
|
continue;
|
|
163
166
|
seenDocPaths.add(real);
|
|
164
|
-
const doc = loadPositionalDoc(file, memDir,
|
|
167
|
+
const doc = loadPositionalDoc(file, memDir, 'project');
|
|
165
168
|
// D5: a doc with an explicit read-trigger (applies-to/read-when) does
|
|
166
169
|
// NOT fire positionally — it surfaces only via that trigger.
|
|
167
170
|
if (doc && !hasExplicitTrigger(doc))
|
|
@@ -276,10 +279,10 @@ function readWhenCandidates(readFileFm, taken) {
|
|
|
276
279
|
// ---------------------------------------------------------------------------
|
|
277
280
|
// Per-doc envelope render.
|
|
278
281
|
// ---------------------------------------------------------------------------
|
|
279
|
-
/** One
|
|
280
|
-
* that rung is `none`. `content` → full body; `preview` → the routing
|
|
281
|
-
* `name` → a bare self-closed tag (the `name=` attribute IS the surface). */
|
|
282
|
-
function renderDocEnvelope(doc
|
|
282
|
+
/** One memory as a `<memory …>` element at its fileReadVisibility rung, or null
|
|
283
|
+
* when that rung is `none`. `content` → full body; `preview` → the routing
|
|
284
|
+
* line; `name` → a bare self-closed tag (the `name=` attribute IS the surface). */
|
|
285
|
+
function renderDocEnvelope(doc) {
|
|
283
286
|
const rung = doc.fileReadVisibility;
|
|
284
287
|
if (rung === 'none')
|
|
285
288
|
return null;
|
|
@@ -289,9 +292,8 @@ function renderDocEnvelope(doc, absReadFile) {
|
|
|
289
292
|
else if (rung === 'preview')
|
|
290
293
|
body = previewLine(doc);
|
|
291
294
|
// 'name' → body stays '' (the tag's name attribute is the whole surface).
|
|
292
|
-
const attrs = `kind="${attr(doc.kind)}" name="${attr(doc.name)}"
|
|
293
|
-
|
|
294
|
-
return body === '' ? `<doc ${attrs} />` : `<doc ${attrs}>\n${body}\n</doc>`;
|
|
295
|
+
const attrs = `kind="${attr(doc.kind)}" name="${attr(doc.name)}" src="${attr(disp(doc.path))}"`;
|
|
296
|
+
return body === '' ? `<memory ${attrs} />` : `<memory ${attrs}>\n${body}\n</memory>`;
|
|
295
297
|
}
|
|
296
298
|
// ---------------------------------------------------------------------------
|
|
297
299
|
// Public entry point.
|
|
@@ -366,7 +368,7 @@ export function renderOnReadDocs(nodeId, readFilePath, seen = new Set()) {
|
|
|
366
368
|
const doc = rung === c.doc.fileReadVisibility && displayName(c.doc.name) === c.doc.name
|
|
367
369
|
? c.doc
|
|
368
370
|
: { ...c.doc, fileReadVisibility: rung, name: displayName(c.doc.name) };
|
|
369
|
-
block = renderDocEnvelope(doc
|
|
371
|
+
block = renderDocEnvelope(doc);
|
|
370
372
|
}
|
|
371
373
|
catch {
|
|
372
374
|
continue; // a single bad doc never breaks the read
|
|
@@ -378,5 +380,5 @@ export function renderOnReadDocs(nodeId, readFilePath, seen = new Set()) {
|
|
|
378
380
|
}
|
|
379
381
|
if (rendered.length === 0)
|
|
380
382
|
return '';
|
|
381
|
-
return `<auto-loaded-context
|
|
383
|
+
return `<auto-loaded-context>\n${rendered.join('\n')}\n</auto-loaded-context>`;
|
|
382
384
|
}
|
|
@@ -285,9 +285,9 @@ const PREFERENCES_INTRO = 'Preferences are how the user wants you to behave —
|
|
|
285
285
|
READ_LEGEND.replace('%s', 'preference');
|
|
286
286
|
const PREFERENCES_OUTRO = 'If the user corrects you in a way that contradicts a preference, update the preference.';
|
|
287
287
|
const KNOWLEDGE_INTRO = 'Knowledge documents are what you consult — playbooks and techniques for how to do things, and ' +
|
|
288
|
-
'references on the user, projects, and this node. They are aggregated from your
|
|
289
|
-
'
|
|
290
|
-
"node-local (this node's `context/memory/`). To read one, run `crtr memory read <name>`. " +
|
|
288
|
+
'references on the user, projects, and this node. They are aggregated from your memory stores: ' +
|
|
289
|
+
'user-global (`~/.crouter/memory/`), every ancestor project store (`<dir>/.crouter/memory/`) ' +
|
|
290
|
+
"from the cwd upward, and node-local (this node's `context/memory/`). To read one, run `crtr memory read <name>`. " +
|
|
291
291
|
'Each doc exists to prevent a specific mistake you would make without it, so when your task ' +
|
|
292
292
|
'matches one — by its name or its `# read when:` line — read it before you act; consulting it ' +
|
|
293
293
|
'only after the work is done forfeits the entire reason it exists. ' +
|
package/dist/core/view/loader.js
CHANGED
|
@@ -161,7 +161,7 @@ export function requireTui(r) {
|
|
|
161
161
|
throw new InputError({
|
|
162
162
|
error: 'view_web_only',
|
|
163
163
|
message: `'${r.id}' is web-only — it ships no tui.mjs presenter`,
|
|
164
|
-
next:
|
|
164
|
+
next: 'Open it in the browser through the surface web server.',
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
}
|
|
@@ -171,7 +171,7 @@ export function requireWeb(r) {
|
|
|
171
171
|
throw new InputError({
|
|
172
172
|
error: 'view_tui_only',
|
|
173
173
|
message: `'${r.id}' is tui-only — it ships no web.jsx presenter`,
|
|
174
|
-
next:
|
|
174
|
+
next: 'Open it in a tmux pane with the surface view run leaf.',
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
}
|
package/dist/core/wake.d.ts
CHANGED
|
@@ -67,9 +67,9 @@ export declare function parseCadence(every: string, opts: ParseOpts): CadenceRes
|
|
|
67
67
|
* - {"cron":"0 9 * * *","tz":"America/…"} -> ``cron `0 9 * * *` (America/…)``
|
|
68
68
|
* - null / undefined / unparseable -> `none`
|
|
69
69
|
*
|
|
70
|
-
* The ONE cadence-display helper, shared by the `node
|
|
70
|
+
* The ONE cadence-display helper, shared by the `node triggers` CLI surface
|
|
71
71
|
* (list/guidance) and the <crtr-wake> wake-provenance block (bearings.ts), so
|
|
72
|
-
* the cadence an agent reads in its wake block matches `crtr node
|
|
72
|
+
* the cadence an agent reads in its wake block matches `crtr node triggers`
|
|
73
73
|
* exactly. Cadence only — never an instance count.
|
|
74
74
|
*/
|
|
75
75
|
export declare function cadenceDisplay(recur: string | null | undefined): string;
|
package/dist/core/wake.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
// Time grammar + recurrence evaluation for scheduled
|
|
1
|
+
// Time grammar + recurrence evaluation for scheduled triggers.
|
|
2
2
|
//
|
|
3
|
-
// This is the ONE place that owns
|
|
4
|
-
// (`node
|
|
5
|
-
// from here, so there is no duplicated cron usage
|
|
6
|
-
// inverted dependency:
|
|
3
|
+
// This is the ONE place that owns trigger time logic. Both the CLI surface
|
|
4
|
+
// (`node new --at/--every/--when`, `node msg --at/--every/--when`) and the
|
|
5
|
+
// daemon's firing pass import from here, so there is no duplicated cron usage
|
|
6
|
+
// and no surface<->daemon inverted dependency:
|
|
7
7
|
// - parseWhen / parseCadence — arm-time grammar (surface, T7)
|
|
8
8
|
// - nextSlotAfter — per-tick advance / coalescing (daemon, T4)
|
|
9
9
|
//
|
|
@@ -250,9 +250,9 @@ export function parseCadence(every, opts) {
|
|
|
250
250
|
* - {"cron":"0 9 * * *","tz":"America/…"} -> ``cron `0 9 * * *` (America/…)``
|
|
251
251
|
* - null / undefined / unparseable -> `none`
|
|
252
252
|
*
|
|
253
|
-
* The ONE cadence-display helper, shared by the `node
|
|
253
|
+
* The ONE cadence-display helper, shared by the `node triggers` CLI surface
|
|
254
254
|
* (list/guidance) and the <crtr-wake> wake-provenance block (bearings.ts), so
|
|
255
|
-
* the cadence an agent reads in its wake block matches `crtr node
|
|
255
|
+
* the cadence an agent reads in its wake block matches `crtr node triggers`
|
|
256
256
|
* exactly. Cadence only — never an instance count.
|
|
257
257
|
*/
|
|
258
258
|
export function cadenceDisplay(recur) {
|