@crouton-kit/crouter 0.3.33 → 0.3.35
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 +427 -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 +843 -743
- 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 +19 -9
- package/dist/core/__tests__/flagship-lifecycle.test.js +4 -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 +2 -2
- 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 +17 -3
- 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 +17 -11
- package/dist/core/__tests__/live-mutation.test.js +15 -10
- 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 -3
- package/dist/core/hearth/guest-env.d.ts +7 -0
- package/dist/core/hearth/guest-env.js +17 -1
- package/dist/core/hearth/index.d.ts +0 -1
- package/dist/core/hearth/index.js +0 -1
- package/dist/core/hearth/model-auth-guest.d.ts +8 -0
- package/dist/core/hearth/model-auth-guest.js +430 -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/types.d.ts +35 -1
- 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/{wake-proxy/proxy.js → control-plane/relay.js} +201 -275
- 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/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-DUThOUzU.css +2 -0
- package/dist/web-client/assets/index-IAJVtuVe.js +80 -0
- package/dist/web-client/index.html +2 -2
- package/package.json +12 -9
- 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.d.ts +0 -1
- package/dist/core/__tests__/editor-label.test.js +0 -26
- package/dist/core/__tests__/fault-marker.test.d.ts +0 -1
- 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/core/hearth/registry.d.ts +0 -15
- package/dist/core/hearth/registry.js +0 -179
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.js +0 -289
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.js +0 -34
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.js +0 -203
- package/dist/hearth/wake-proxy/__tests__/hardening.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/hardening.test.js +0 -59
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.js +0 -372
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.js +0 -258
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.js +0 -437
- 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/hearth/wake-proxy/__tests__/static-asset-allowlist.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.js +0 -15
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.js +0 -141
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.d.ts +0 -1
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.js +0 -143
- package/dist/hearth/wake-proxy/anthropic-oauth.d.ts +0 -58
- package/dist/hearth/wake-proxy/anthropic-oauth.js +0 -189
- package/dist/hearth/wake-proxy/auth.d.ts +0 -22
- package/dist/hearth/wake-proxy/auth.js +0 -128
- package/dist/hearth/wake-proxy/config.d.ts +0 -2
- package/dist/hearth/wake-proxy/config.js +0 -151
- package/dist/hearth/wake-proxy/guest-source.d.ts +0 -14
- package/dist/hearth/wake-proxy/guest-source.js +0 -130
- package/dist/hearth/wake-proxy/hearth-status.d.ts +0 -44
- package/dist/hearth/wake-proxy/hearth-status.js +0 -267
- package/dist/hearth/wake-proxy/home.d.ts +0 -67
- package/dist/hearth/wake-proxy/home.js +0 -297
- package/dist/hearth/wake-proxy/main.js +0 -134
- package/dist/hearth/wake-proxy/model-auth.d.ts +0 -13
- package/dist/hearth/wake-proxy/model-auth.js +0 -345
- package/dist/hearth/wake-proxy/proxy.d.ts +0 -35
- package/dist/hearth/wake-proxy/public-source-gate.d.ts +0 -9
- package/dist/hearth/wake-proxy/public-source-gate.js +0 -409
- package/dist/hearth/wake-proxy/redact.d.ts +0 -1
- package/dist/hearth/wake-proxy/redact.js +0 -17
- package/dist/hearth/wake-proxy/server.d.ts +0 -11
- package/dist/hearth/wake-proxy/server.js +0 -142
- package/dist/hearth/wake-proxy/state.d.ts +0 -18
- package/dist/hearth/wake-proxy/state.js +0 -342
- package/dist/hearth/wake-proxy/types.d.ts +0 -76
- package/dist/web-client/assets/index-BZUxTkv5.css +0 -2
- package/dist/web-client/assets/index-D36PNBj4.js +0 -80
- /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/hearth/{wake-proxy → control-plane}/main.d.ts +0 -0
- /package/dist/hearth/{wake-proxy → control-plane}/types.js +0 -0
|
@@ -1,126 +1,136 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
1
|
import { general } from '../../errors.js';
|
|
3
2
|
import { nowIso } from '../../fs-utils.js';
|
|
4
|
-
import { getHome, updateHome } from '../registry.js';
|
|
5
3
|
import { guestEnv } from '../guest-env.js';
|
|
6
4
|
import { buildBootstrapScript } from './blaxel-bootstrap.js';
|
|
7
5
|
import { BlaxelMachineProvider } from './blaxel.js';
|
|
8
|
-
function readCrtrVersion() {
|
|
9
|
-
const file = new URL('../../../../package.json', import.meta.url);
|
|
10
|
-
const pkg = JSON.parse(readFileSync(file, 'utf8'));
|
|
11
|
-
if (typeof pkg.version !== 'string' || pkg.version.trim() === '') {
|
|
12
|
-
throw general('missing crtr package version', { packageJson: file.pathname });
|
|
13
|
-
}
|
|
14
|
-
return pkg.version;
|
|
15
|
-
}
|
|
16
6
|
function stableRouteName(home) {
|
|
17
|
-
return
|
|
18
|
-
}
|
|
19
|
-
function homeStorage(home, config) {
|
|
20
|
-
return {
|
|
21
|
-
kind: 'volume',
|
|
22
|
-
durability: 'durable-volume',
|
|
23
|
-
longTermContract: true,
|
|
24
|
-
ownerMachineId: home.machineId,
|
|
25
|
-
guestHome: config.guestHome,
|
|
26
|
-
volumeId: home.homeStorage.volumeId,
|
|
27
|
-
mountPath: config.guestHome,
|
|
28
|
-
};
|
|
7
|
+
return `${home.providerSandboxId}-web`;
|
|
29
8
|
}
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
providerName: 'blaxel',
|
|
34
|
-
homeStorage: homeStorage(home, config),
|
|
35
|
-
webRoute: route,
|
|
36
|
-
state: 'running',
|
|
37
|
-
createdAt: timestamps.createdAt ?? home.createdAt,
|
|
38
|
-
updatedAt: timestamps.updatedAt,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
function ensureReadyHome(home, tenantId) {
|
|
42
|
-
if (home === null) {
|
|
43
|
-
throw general(`no home for tenant ${tenantId} — run the existing provision/bootstrap flow`, { tenantId });
|
|
9
|
+
function ensureReadyHome(input) {
|
|
10
|
+
if (input.providerName !== 'blaxel') {
|
|
11
|
+
throw general(`unsupported Hearth home provider ${input.providerName}`, { providerName: input.providerName });
|
|
44
12
|
}
|
|
45
|
-
if (typeof
|
|
46
|
-
throw general(`home ${
|
|
13
|
+
if (typeof input.providerSandboxId !== 'string' || input.providerSandboxId === '') {
|
|
14
|
+
throw general(`home ${input.homeId} is missing providerSandboxId`, { homeId: input.homeId });
|
|
47
15
|
}
|
|
48
|
-
if (typeof
|
|
49
|
-
throw general(`home ${
|
|
16
|
+
if (typeof input.providerVolumeId !== 'string' || input.providerVolumeId === '') {
|
|
17
|
+
throw general(`home ${input.homeId} is missing providerVolumeId`, { homeId: input.homeId });
|
|
50
18
|
}
|
|
51
|
-
if (typeof
|
|
52
|
-
throw general(`home ${
|
|
19
|
+
if (typeof input.homeAgentTarget !== 'string' || input.homeAgentTarget === '') {
|
|
20
|
+
throw general(`home ${input.homeId} is missing homeAgentTarget`, { homeId: input.homeId });
|
|
53
21
|
}
|
|
54
|
-
if (typeof
|
|
55
|
-
throw general(`home ${
|
|
22
|
+
if (typeof input.relayToken !== 'string' || input.relayToken === '') {
|
|
23
|
+
throw general(`home ${input.homeId} is missing resolved relayToken`, { homeId: input.homeId });
|
|
56
24
|
}
|
|
57
|
-
return
|
|
25
|
+
return input;
|
|
58
26
|
}
|
|
59
27
|
function isRunningMachine(machine) {
|
|
60
28
|
return machine !== null && machine.state !== 'terminated';
|
|
61
29
|
}
|
|
30
|
+
function previewEndpoint(route, fallback) {
|
|
31
|
+
return route.concreteUrl ?? route.url ?? fallback ?? null;
|
|
32
|
+
}
|
|
33
|
+
function refreshedPointers(home, provider, route, status, machine) {
|
|
34
|
+
return {
|
|
35
|
+
providerName: 'blaxel',
|
|
36
|
+
providerSandboxId: home.providerSandboxId,
|
|
37
|
+
providerVolumeId: home.providerVolumeId,
|
|
38
|
+
previewEndpoint: route === null ? (home.previewEndpoint ?? null) : previewEndpoint(route, home.previewEndpoint),
|
|
39
|
+
route,
|
|
40
|
+
homeAgentTarget: home.homeAgentTarget,
|
|
41
|
+
relayAuthRef: home.relayAuthRef ?? null,
|
|
42
|
+
templateVersion: provider.templateVersion,
|
|
43
|
+
status,
|
|
44
|
+
machine,
|
|
45
|
+
updatedAt: nowIso(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
62
48
|
export class BlaxelHomeBackend {
|
|
63
49
|
config;
|
|
64
50
|
provider;
|
|
65
|
-
crtrVersion;
|
|
66
51
|
constructor(config, provider) {
|
|
67
52
|
this.config = config;
|
|
68
|
-
this.provider = provider ?? new BlaxelMachineProvider();
|
|
69
|
-
this.crtrVersion = readCrtrVersion();
|
|
53
|
+
this.provider = provider ?? new BlaxelMachineProvider({ image: config.imageRef, templateVersion: config.templateVersion, volumeSizeGb: config.volumeSizeGb });
|
|
70
54
|
}
|
|
71
|
-
async wake(
|
|
72
|
-
const current = ensureReadyHome(
|
|
73
|
-
const machine = await this.getMachine(current.
|
|
74
|
-
const relayToken = current.relayToken ?? '';
|
|
75
|
-
if (relayToken === '') {
|
|
76
|
-
throw general(`home ${tenantId} is missing relayToken — run the existing provision/bootstrap flow`, { tenantId });
|
|
77
|
-
}
|
|
55
|
+
async wake(homeInput) {
|
|
56
|
+
const current = ensureReadyHome(homeInput);
|
|
57
|
+
const machine = await this.getMachine(current.providerSandboxId);
|
|
78
58
|
const bootstrapScript = buildBootstrapScript({
|
|
79
59
|
guestHome: this.config.guestHome,
|
|
80
|
-
crtrVersion: this.
|
|
81
|
-
relayToken,
|
|
60
|
+
crtrVersion: this.provider.templateVersion,
|
|
61
|
+
relayToken: current.relayToken,
|
|
82
62
|
webPort: this.config.webPort,
|
|
83
|
-
nodeId: current.
|
|
63
|
+
nodeId: current.homeAgentTarget,
|
|
84
64
|
piAuthJson: this.config.piAuthJson,
|
|
65
|
+
piPackages: this.config.piPackages,
|
|
85
66
|
isFirstProvision: false,
|
|
86
67
|
});
|
|
87
68
|
if (isRunningMachine(machine)) {
|
|
69
|
+
// Standby resume (R-SUSP-2/R-WAKE-3): the sandbox already exists — never call
|
|
70
|
+
// createMachine() here. Probing the port is enough to make Blaxel transparently restore
|
|
71
|
+
// a snapshot-paused sandbox; the broker pid inside the guest is untouched either way, and
|
|
72
|
+
// nothing on this host-side path invokes reviveNode() (that launcher is for crtr's own
|
|
73
|
+
// node engine, not a guest process — the provider layer never imports it). The exec
|
|
74
|
+
// fallback below only re-runs the idempotent in-guest bootstrap when the port still isn't
|
|
75
|
+
// answering after a snapshot-resume window; it is not a recreate.
|
|
88
76
|
try {
|
|
89
|
-
await this.provider.waitForPort(current.
|
|
77
|
+
await this.provider.waitForPort(current.providerSandboxId, this.config.webPort, { maxWaitMs: 30_000 });
|
|
90
78
|
}
|
|
91
79
|
catch {
|
|
92
|
-
await this.provider.exec(current.
|
|
93
|
-
await this.provider.waitForPort(current.
|
|
80
|
+
await this.provider.exec(current.providerSandboxId, { command: bootstrapScript, background: true, cwd: this.config.guestHome });
|
|
81
|
+
await this.provider.waitForPort(current.providerSandboxId, this.config.webPort, { maxWaitMs: 30_000 });
|
|
94
82
|
}
|
|
95
83
|
}
|
|
96
84
|
else {
|
|
97
85
|
await this.provider.createMachine({
|
|
98
|
-
tenantId,
|
|
99
|
-
name: current.
|
|
86
|
+
tenantId: current.tenantId,
|
|
87
|
+
name: current.providerSandboxId,
|
|
100
88
|
envs: guestEnv(this.config),
|
|
101
|
-
volumeMount: { volumeName: current.
|
|
89
|
+
volumeMount: { volumeName: current.providerVolumeId, path: this.config.guestHome },
|
|
102
90
|
ports: [{ target: this.config.webPort, protocol: 'HTTP' }],
|
|
103
91
|
});
|
|
104
|
-
await this.provider.exec(current.
|
|
105
|
-
await this.provider.waitForPort(current.
|
|
92
|
+
await this.provider.exec(current.providerSandboxId, { command: bootstrapScript, background: true, cwd: this.config.guestHome });
|
|
93
|
+
await this.provider.waitForPort(current.providerSandboxId, this.config.webPort, { maxWaitMs: 60_000 });
|
|
106
94
|
}
|
|
107
|
-
const route = await this.provider.publishHttpPort(current.
|
|
108
|
-
machineId: current.
|
|
95
|
+
const route = await this.provider.publishHttpPort(current.providerSandboxId, {
|
|
96
|
+
machineId: current.providerSandboxId,
|
|
109
97
|
targetPort: this.config.webPort,
|
|
110
98
|
routeName: stableRouteName(current),
|
|
111
99
|
routeId: stableRouteName(current),
|
|
112
100
|
});
|
|
113
|
-
|
|
114
|
-
updateHome(this.config.registryPath, tenantId, () => buildHomeRecord({ ...current, webRoute: route, relayToken }, this.config, route, { createdAt: current.createdAt, updatedAt }));
|
|
101
|
+
return refreshedPointers(current, this.provider, route, 'running', await this.getMachine(current.providerSandboxId));
|
|
115
102
|
}
|
|
116
|
-
async suspend(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
103
|
+
async suspend(homeInput) {
|
|
104
|
+
const current = ensureReadyHome(homeInput);
|
|
105
|
+
const machine = await this.getMachine(current.providerSandboxId);
|
|
106
|
+
// Snapshot-never-kill (P3.4): this method must never call `provider.destroy()` or
|
|
107
|
+
// `provider.createMachine()` — those are the only ways the underlying sandbox is torn down
|
|
108
|
+
// or relaunched, and neither belongs on the suspend path. Blaxel (@blaxel/core 0.2.94) has
|
|
109
|
+
// no imperative pause/standby call to invoke here; `snapshotEnabled` (set at create time in
|
|
110
|
+
// blaxel.ts) is the only discoverable seam, and it makes idle snapshot-pause a platform-
|
|
111
|
+
// managed background behavior rather than something this method triggers. So suspend() does
|
|
112
|
+
// not fabricate a 'suspended' status the way a real pause API's response would justify —
|
|
113
|
+
// doing so would tell the CP registry a snapshot happened when nothing was asked of the
|
|
114
|
+
// provider. It fails closed instead: assert the sandbox still exists (a missing/terminated
|
|
115
|
+
// sandbox cannot be "suspended", it must be re-provisioned through wake()), and return the
|
|
116
|
+
// provider's own observed status untouched so the CP can tell "confirmed paused" from
|
|
117
|
+
// "still running, waiting on Blaxel's own idle timer" rather than trusting an invented one.
|
|
118
|
+
if (machine === null) {
|
|
119
|
+
throw general(`cannot suspend home ${current.homeId}: backing sandbox ${current.providerSandboxId} is not present`, {
|
|
120
|
+
homeId: current.homeId,
|
|
121
|
+
providerSandboxId: current.providerSandboxId,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return refreshedPointers(current, this.provider, null, machine.state, machine);
|
|
121
125
|
}
|
|
122
126
|
async getMachine(machineId) {
|
|
123
127
|
const machine = await this.provider.getMachine(machineId);
|
|
124
128
|
return machine.state === 'terminated' ? null : machine;
|
|
125
129
|
}
|
|
130
|
+
/** P2.6 stdin-capable exec seam, passed through verbatim — the `HomeBackend` interface is the
|
|
131
|
+
* only door CP code uses to reach it (see `provider.ts`), so callers never import
|
|
132
|
+
* `BlaxelMachineProvider` directly. */
|
|
133
|
+
async exec(machineId, input) {
|
|
134
|
+
return this.provider.exec(machineId, input);
|
|
135
|
+
}
|
|
126
136
|
}
|
|
@@ -4,9 +4,14 @@ interface BlaxelMachineProviderOptions {
|
|
|
4
4
|
region?: string;
|
|
5
5
|
memory?: number;
|
|
6
6
|
image?: string;
|
|
7
|
+
templateVersion?: string;
|
|
8
|
+
volumeSizeGb?: number;
|
|
7
9
|
}
|
|
8
10
|
export declare class BlaxelMachineProvider implements MachineProvider {
|
|
9
11
|
readonly providerName: "blaxel";
|
|
12
|
+
readonly imageRef: string;
|
|
13
|
+
readonly templateVersion: string;
|
|
14
|
+
readonly volumeSizeGb: number;
|
|
10
15
|
private readonly config;
|
|
11
16
|
constructor(options?: BlaxelMachineProviderOptions);
|
|
12
17
|
createVolume(input: {
|
|
@@ -1,7 +1,23 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
1
3
|
import { SandboxInstance, VolumeInstance } from '@blaxel/core';
|
|
2
4
|
import { general } from '../../errors.js';
|
|
3
5
|
const TERMINATED_STATES = new Set(['TERMINATED', 'DELETING', 'DEACTIVATED', 'DEACTIVATING', 'FAILED']);
|
|
4
6
|
const PROVISIONING_STATES = new Set(['UPLOADING', 'BUILDING', 'DEPLOYING', 'BUILT']);
|
|
7
|
+
function readCrtrVersion() {
|
|
8
|
+
const file = new URL('../../../../package.json', import.meta.url);
|
|
9
|
+
const pkg = JSON.parse(readFileSync(file, 'utf8'));
|
|
10
|
+
if (typeof pkg.version !== 'string' || pkg.version.trim() === '') {
|
|
11
|
+
throw general('missing crtr package version', { packageJson: file.pathname });
|
|
12
|
+
}
|
|
13
|
+
return pkg.version;
|
|
14
|
+
}
|
|
15
|
+
function defaultImageRef(templateVersion) {
|
|
16
|
+
return `crouter-hearth-home-${templateVersion.replace(/\./g, '-')}`;
|
|
17
|
+
}
|
|
18
|
+
function shellQuote(value) {
|
|
19
|
+
return `'${value.replace(/'/g, `'"'"'`)}'`;
|
|
20
|
+
}
|
|
5
21
|
function shStatus(status) {
|
|
6
22
|
if (status === undefined || status === null || status === '')
|
|
7
23
|
return 'unknown';
|
|
@@ -44,6 +60,27 @@ function toEnvVars(envs) {
|
|
|
44
60
|
.sort(([a], [b]) => a.localeCompare(b))
|
|
45
61
|
.map(([name, value]) => ({ name, value }));
|
|
46
62
|
}
|
|
63
|
+
function resolveExecCommand(input) {
|
|
64
|
+
const hasCommand = typeof input.command === 'string';
|
|
65
|
+
const hasArgv = input.argv !== undefined;
|
|
66
|
+
if (hasCommand === hasArgv) {
|
|
67
|
+
throw general('provider exec requires exactly one of command or argv', { hasCommand, hasArgv });
|
|
68
|
+
}
|
|
69
|
+
if (hasCommand) {
|
|
70
|
+
const command = input.command?.trim() ?? '';
|
|
71
|
+
if (command === '')
|
|
72
|
+
throw general('provider exec command must not be empty');
|
|
73
|
+
return command;
|
|
74
|
+
}
|
|
75
|
+
const argv = input.argv ?? [];
|
|
76
|
+
if (argv.length === 0)
|
|
77
|
+
throw general('provider exec argv must not be empty');
|
|
78
|
+
for (const arg of argv) {
|
|
79
|
+
if (typeof arg !== 'string' || arg === '')
|
|
80
|
+
throw general('provider exec argv contains an empty argument');
|
|
81
|
+
}
|
|
82
|
+
return argv.map(shellQuote).join(' ');
|
|
83
|
+
}
|
|
47
84
|
function isMissingResourceError(error) {
|
|
48
85
|
const message = error instanceof Error ? error.message : String(error);
|
|
49
86
|
return /\b(not found|404|does not exist|missing)\b/i.test(message);
|
|
@@ -73,19 +110,29 @@ function toRouteRef(machineId, targetPort, preview, raw) {
|
|
|
73
110
|
}
|
|
74
111
|
export class BlaxelMachineProvider {
|
|
75
112
|
providerName = 'blaxel';
|
|
113
|
+
imageRef;
|
|
114
|
+
templateVersion;
|
|
115
|
+
volumeSizeGb;
|
|
76
116
|
config;
|
|
77
117
|
constructor(options = {}) {
|
|
118
|
+
const templateVersion = options.templateVersion ?? readCrtrVersion();
|
|
119
|
+
const volumeSizeGb = options.volumeSizeGb ?? 4;
|
|
120
|
+
if (!Number.isInteger(volumeSizeGb) || volumeSizeGb < 4) {
|
|
121
|
+
throw general('Blaxel Hearth home volume must be at least 4 GB', { volumeSizeGb });
|
|
122
|
+
}
|
|
123
|
+
this.imageRef = options.image ?? defaultImageRef(templateVersion);
|
|
124
|
+
this.templateVersion = templateVersion;
|
|
125
|
+
this.volumeSizeGb = volumeSizeGb;
|
|
78
126
|
this.config = {
|
|
79
127
|
region: options.region ?? 'us-west-2',
|
|
80
128
|
memory: options.memory ?? 2048,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
image: options.image ?? 'blaxel/node:latest',
|
|
129
|
+
image: this.imageRef,
|
|
130
|
+
templateVersion: this.templateVersion,
|
|
131
|
+
volumeSizeGb: this.volumeSizeGb,
|
|
85
132
|
};
|
|
86
133
|
}
|
|
87
134
|
async createVolume(input) {
|
|
88
|
-
const volume = await VolumeInstance.createIfNotExists({ name: input.name, size: 1024, region: this.config.region });
|
|
135
|
+
const volume = await VolumeInstance.createIfNotExists({ name: input.name, size: this.config.volumeSizeGb * 1024, region: this.config.region });
|
|
89
136
|
return {
|
|
90
137
|
volumeId: volume.metadata.name ?? input.name,
|
|
91
138
|
name: input.name,
|
|
@@ -101,6 +148,12 @@ export class BlaxelMachineProvider {
|
|
|
101
148
|
volumes: input.volumeMount === undefined || input.volumeMount === null ? undefined : [{ name: input.volumeMount.volumeName, mountPath: input.volumeMount.path, readOnly: false }],
|
|
102
149
|
envs: toEnvVars(input.envs),
|
|
103
150
|
ports: input.ports?.map((port) => ({ target: port.target, protocol: port.protocol })),
|
|
151
|
+
// Snapshot-never-kill (P3.4): this is the only discoverable Blaxel suspend/standby
|
|
152
|
+
// primitive (@blaxel/core 0.2.94) — there is no imperative pause()/standby() call, only
|
|
153
|
+
// this create-time runtime flag. Once set, Blaxel's platform idle timer snapshots and
|
|
154
|
+
// transparently restores the sandbox on the next request instead of tearing it down.
|
|
155
|
+
// Every Hearth home is created with this on; it is never optional per-home.
|
|
156
|
+
snapshotEnabled: true,
|
|
104
157
|
});
|
|
105
158
|
await sandbox.wait({ maxWait: 90_000, interval: 500 }).catch(() => sandbox);
|
|
106
159
|
return toMachineRef(sandbox);
|
|
@@ -122,14 +175,35 @@ export class BlaxelMachineProvider {
|
|
|
122
175
|
}
|
|
123
176
|
}
|
|
124
177
|
async exec(machineId, input) {
|
|
178
|
+
if (input.stdin !== undefined && input.background === true) {
|
|
179
|
+
throw general('provider exec stdin is not supported for background commands', { machineId });
|
|
180
|
+
}
|
|
125
181
|
const sandbox = await SandboxInstance.get(machineId);
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
182
|
+
const stdinBody = input.stdin;
|
|
183
|
+
const stdinPath = stdinBody === undefined ? null : `/tmp/crtr-hearth-exec-${randomUUID()}.stdin`;
|
|
184
|
+
if (stdinPath !== null && stdinBody !== undefined) {
|
|
185
|
+
if (stdinBody instanceof Uint8Array) {
|
|
186
|
+
await sandbox.fs.writeBinary(stdinPath, stdinBody);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
await sandbox.fs.write(stdinPath, stdinBody);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const command = stdinPath === null ? resolveExecCommand(input) : `${resolveExecCommand(input)} < ${shellQuote(stdinPath)}`;
|
|
193
|
+
let response;
|
|
194
|
+
try {
|
|
195
|
+
response = await sandbox.process.exec({
|
|
196
|
+
command,
|
|
197
|
+
env: input.env,
|
|
198
|
+
timeout: Math.ceil((input.timeoutMs ?? 55_000) / 1000),
|
|
199
|
+
workingDir: input.cwd,
|
|
200
|
+
...(input.background === true ? { waitForCompletion: false } : { waitForCompletion: true }),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
if (stdinPath !== null)
|
|
205
|
+
await sandbox.fs.rm(stdinPath).catch(() => undefined);
|
|
206
|
+
}
|
|
133
207
|
const result = record(response) ?? {};
|
|
134
208
|
return {
|
|
135
209
|
exitCode: typeof result.exitCode === 'number' ? result.exitCode : null,
|
|
@@ -7,7 +7,9 @@ export interface ExecResult {
|
|
|
7
7
|
raw?: Record<string, unknown> | null;
|
|
8
8
|
}
|
|
9
9
|
export interface ExecInput {
|
|
10
|
-
command
|
|
10
|
+
command?: string;
|
|
11
|
+
argv?: readonly string[];
|
|
12
|
+
stdin?: string | Uint8Array;
|
|
11
13
|
timeoutMs?: number;
|
|
12
14
|
background?: boolean;
|
|
13
15
|
env?: Record<string, string>;
|
|
@@ -55,6 +57,9 @@ export type DestroyOutcome = {
|
|
|
55
57
|
};
|
|
56
58
|
export interface MachineProvider {
|
|
57
59
|
readonly providerName: 'blaxel';
|
|
60
|
+
readonly imageRef: string;
|
|
61
|
+
readonly templateVersion: string;
|
|
62
|
+
readonly volumeSizeGb: number;
|
|
58
63
|
createVolume(input: {
|
|
59
64
|
name: string;
|
|
60
65
|
}): Promise<VolumeRef>;
|
|
@@ -4,6 +4,9 @@ export type SnapshotId = string;
|
|
|
4
4
|
export type RouteId = string;
|
|
5
5
|
export type RelayToken = string;
|
|
6
6
|
export type GuestNodeId = string;
|
|
7
|
+
export type HomeId = string;
|
|
8
|
+
export type UserId = string;
|
|
9
|
+
export type RelayAuthRef = string;
|
|
7
10
|
export type MachineState = 'provisioning' | 'running' | 'paused' | 'stopped' | 'suspended' | 'restoring' | 'terminating' | 'terminated' | 'unknown' | string;
|
|
8
11
|
export type RouteUrlSource = 'provider' | 'config' | 'derived' | 'unknown';
|
|
9
12
|
export interface HomeStorageRef {
|
|
@@ -88,6 +91,34 @@ export interface VerifyResult {
|
|
|
88
91
|
recreateLatencyMs?: number | null;
|
|
89
92
|
baseline?: VerifyBaseline | null;
|
|
90
93
|
}
|
|
94
|
+
export interface HomeProviderDescriptor {
|
|
95
|
+
homeId: HomeId;
|
|
96
|
+
tenantId: TenantId;
|
|
97
|
+
userId?: UserId | null;
|
|
98
|
+
providerName: 'blaxel';
|
|
99
|
+
providerSandboxId: MachineId;
|
|
100
|
+
providerVolumeId: string;
|
|
101
|
+
previewEndpoint?: string | null;
|
|
102
|
+
homeAgentTarget: GuestNodeId;
|
|
103
|
+
relayAuthRef?: RelayAuthRef | null;
|
|
104
|
+
relayToken: RelayToken;
|
|
105
|
+
status?: MachineState | null;
|
|
106
|
+
templateVersion?: string | null;
|
|
107
|
+
raw?: Record<string, unknown> | null;
|
|
108
|
+
}
|
|
109
|
+
export interface HomeProviderRefresh {
|
|
110
|
+
providerName: 'blaxel';
|
|
111
|
+
providerSandboxId: MachineId;
|
|
112
|
+
providerVolumeId: string;
|
|
113
|
+
previewEndpoint?: string | null;
|
|
114
|
+
route?: RouteRef | null;
|
|
115
|
+
homeAgentTarget: GuestNodeId;
|
|
116
|
+
relayAuthRef?: RelayAuthRef | null;
|
|
117
|
+
templateVersion: string;
|
|
118
|
+
status: MachineState;
|
|
119
|
+
machine?: MachineRef | null;
|
|
120
|
+
updatedAt: string;
|
|
121
|
+
}
|
|
91
122
|
export interface HomeRecord {
|
|
92
123
|
tenantId: TenantId;
|
|
93
124
|
providerName: string;
|
|
@@ -100,6 +131,7 @@ export interface HomeRecord {
|
|
|
100
131
|
verifyBaseline?: VerifyBaseline | null;
|
|
101
132
|
bootstrapMarker?: BootstrapMarker | null;
|
|
102
133
|
relayToken?: RelayToken | null;
|
|
134
|
+
templateVersion?: string | null;
|
|
103
135
|
warmResume?: boolean | null;
|
|
104
136
|
restoreLatencyMs?: number | null;
|
|
105
137
|
recreateLatencyMs?: number | null;
|
|
@@ -109,7 +141,6 @@ export interface HomeRecord {
|
|
|
109
141
|
}
|
|
110
142
|
export interface M0Config {
|
|
111
143
|
providerName: string;
|
|
112
|
-
registryPath: string;
|
|
113
144
|
guestUser: string;
|
|
114
145
|
guestHome: string;
|
|
115
146
|
guestCodePath: string;
|
|
@@ -118,4 +149,7 @@ export interface M0Config {
|
|
|
118
149
|
nodeKind: string;
|
|
119
150
|
piAuthJson?: string | null;
|
|
120
151
|
relayToken?: RelayToken | null;
|
|
152
|
+
imageRef?: string;
|
|
153
|
+
templateVersion?: string;
|
|
154
|
+
volumeSizeGb?: number;
|
|
121
155
|
}
|
package/dist/core/help.d.ts
CHANGED
|
@@ -152,6 +152,19 @@ export interface BranchHelp {
|
|
|
152
152
|
* renderBranch reads this; never author it by hand. */
|
|
153
153
|
listing?: ListingChild[];
|
|
154
154
|
}
|
|
155
|
+
/** Viewer-only hint about how a leaf's result should preview in the attach
|
|
156
|
+
* viewer's chat — never part of `-h` output and never reaches agent-facing
|
|
157
|
+
* stdout (see renderLeafArgv / renderResult, neither of which read this
|
|
158
|
+
* field). Declared on the leaf that owns the behavior, so the attach viewer
|
|
159
|
+
* asks the command tree instead of guessing from rendered text. */
|
|
160
|
+
export interface PreviewMeta {
|
|
161
|
+
/** When true, the attach viewer collapses this leaf's successful result to
|
|
162
|
+
* a one-line status by default (still expandable with Ctrl+O). For a
|
|
163
|
+
* command whose result is a machine-readable dump meant for a browser/tool
|
|
164
|
+
* rather than a human glance (e.g. a snapshot leaf). Never suppresses a
|
|
165
|
+
* failed run — errors always show in full. */
|
|
166
|
+
suppressOutput?: boolean;
|
|
167
|
+
}
|
|
155
168
|
export interface LeafHelp {
|
|
156
169
|
name: string;
|
|
157
170
|
summary: string;
|
|
@@ -172,6 +185,9 @@ export interface LeafHelp {
|
|
|
172
185
|
* the schema. Renderer soft-fails to omission if it returns null or throws.
|
|
173
186
|
* Mirrors BranchHelp.dynamicState. */
|
|
174
187
|
dynamicState?: () => string | null;
|
|
188
|
+
/** Attach-viewer preview hint (see PreviewMeta). Optional; omit for the
|
|
189
|
+
* default preview behaviour. */
|
|
190
|
+
preview?: PreviewMeta;
|
|
175
191
|
}
|
|
176
192
|
/** Build a self-named runtime-state element: `<tag attr="v">body</tag>`. The
|
|
177
193
|
* subtree that owns the state authors it through this, so the tag name and any
|
package/dist/core/help.js
CHANGED
|
@@ -160,6 +160,8 @@ export function renderBranch(h) {
|
|
|
160
160
|
// expansive with examples for judgment-heavy commands, concise for
|
|
161
161
|
// single-purpose ones. It does not restate "read my -h"; the
|
|
162
162
|
// capability-discovery rule in the root footer already teaches that.
|
|
163
|
+
if (lines.length > 1)
|
|
164
|
+
lines.push('');
|
|
163
165
|
lines.push(`<subcommand name="${c.name}" description="${attr(c.description)}" whenToUse="${attr(c.whenToUse)}"${subs}/>`);
|
|
164
166
|
}
|
|
165
167
|
lines.push('</command>');
|
|
@@ -6,6 +6,8 @@ import type { InstalledPlugin, Scope } from '../types.js';
|
|
|
6
6
|
* project > user > builtin. It returns the raw parsed
|
|
7
7
|
* frontmatter + body; it does NOT interpret the schema, kind, gate, or rungs —
|
|
8
8
|
* that is the schema/gate layer's job (callers filter by `frontmatter.kind`).
|
|
9
|
+
* Project resolution is a nearest-first stack of every ancestor `.crouter/`,
|
|
10
|
+
* while user and builtin remain singleton scopes.
|
|
9
11
|
*/
|
|
10
12
|
export interface MemoryDoc {
|
|
11
13
|
/** Path-derived identity: the doc's path under the scope's memory/ root, no
|
|
@@ -26,20 +28,18 @@ export interface MemoryResolutionOpts {
|
|
|
26
28
|
}
|
|
27
29
|
/** Canonical, unambiguous identifier for a memory document: `<scope>/<name>`. */
|
|
28
30
|
export declare function memoryDocId(doc: MemoryDoc): string;
|
|
29
|
-
/** All memory docs
|
|
30
|
-
*
|
|
31
|
-
* are legacy Agent Skills and are ignored; crouter memory docs are plain .md
|
|
32
|
-
* files under memory/. */
|
|
31
|
+
/** All native memory docs for a scope. Project scope is a nearest-first stack of
|
|
32
|
+
* every ancestor `.crouter/memory/`; user and builtin are singleton stores. */
|
|
33
33
|
export declare function listMemoryDocs(scope: Scope): MemoryDoc[];
|
|
34
34
|
/** All of one plugin's substrate docs, mounted under the virtual `<pluginName>/`
|
|
35
35
|
* namespace. Walks `pluginMemoryDir(plugin)` recursively for *.md, deriving each
|
|
36
36
|
* doc's name exactly as `listMemoryDocs` does (path-relative, no extension,
|
|
37
37
|
* slash-separated) then prefixing the plugin name. Builtin has no plugins. */
|
|
38
38
|
export declare function listPluginMemoryDocs(plugin: InstalledPlugin, scope: Scope): MemoryDoc[];
|
|
39
|
-
/** All memory docs across the resolved
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* caller's first-wins
|
|
39
|
+
/** All memory docs across the resolved sources, in precedence order: each
|
|
40
|
+
* ancestor project `.crouter/` from nearest to farthest, then user, then
|
|
41
|
+
* builtin. Within each source, native docs are emitted before enabled-plugin
|
|
42
|
+
* docs, so native wins on the caller's first-wins dedup. */
|
|
43
43
|
export declare function listAllMemoryDocs(scope?: Scope): MemoryDoc[];
|
|
44
44
|
/**
|
|
45
45
|
* Resolve a path-derived name to a single memory document.
|