@crouton-kit/crouter 0.3.32 → 0.3.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/build-root.js +4 -6
- package/dist/builtin-memory/crouter-development/marketplaces.md +8 -8
- package/dist/builtin-memory/crouter-development/personas/base-prompt.md +2 -2
- package/dist/builtin-memory/crouter-development/personas/orchestrator-prompt.md +5 -5
- package/dist/builtin-memory/crouter-development/personas.md +3 -4
- package/dist/builtin-memory/crouter-development/plugins.md +31 -31
- package/dist/builtin-memory/design.md +4 -1
- package/dist/builtin-memory/development.md +4 -1
- package/dist/builtin-memory/internal/INDEX.md +1 -1
- package/dist/builtin-memory/internal/examples/imessage-assistant.md +3 -3
- package/dist/builtin-memory/internal/nodes-and-canvas.md +9 -9
- package/dist/builtin-memory/internal/storage-tiers.md +5 -5
- package/dist/builtin-memory/planning.md +4 -1
- package/dist/builtin-memory/product.md +80 -0
- package/dist/builtin-memory/spec.md +4 -1
- package/dist/builtin-personas/advisor/PERSONA.md +10 -0
- package/dist/builtin-personas/design/PERSONA.md +2 -2
- package/dist/builtin-personas/design/orchestrator.md +3 -3
- package/dist/builtin-personas/developer/PERSONA.md +1 -1
- package/dist/builtin-personas/developer/orchestrator.md +2 -2
- package/dist/builtin-personas/explore/PERSONA.md +3 -3
- package/dist/builtin-personas/explore/orchestrator.md +4 -2
- package/dist/builtin-personas/general/PERSONA.md +1 -1
- package/dist/builtin-personas/general/orchestrator.md +1 -1
- package/dist/builtin-personas/orchestration-kernel.md +8 -15
- package/dist/builtin-personas/plan/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/orchestrator.md +2 -2
- package/dist/builtin-personas/plan/reviewers/architecture-fit/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/code-smells/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/pattern-consistency/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/requirements-coverage/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/security/PERSONA.md +1 -1
- package/dist/builtin-personas/product/PERSONA.md +18 -0
- package/dist/builtin-personas/product/orchestrator.md +14 -0
- package/dist/builtin-personas/product/teardown/PERSONA.md +13 -0
- package/dist/builtin-personas/review/PERSONA.md +1 -1
- package/dist/builtin-personas/review/orchestrator.md +1 -1
- package/dist/builtin-personas/runtime-base.md +5 -0
- package/dist/builtin-personas/spec/PERSONA.md +1 -1
- package/dist/builtin-personas/spec/orchestrator.md +2 -2
- package/dist/builtin-personas/spec/requirements/PERSONA.md +1 -1
- package/dist/builtin-personas/waiting.md +1 -1
- package/dist/builtin-pi-packages/pi-crtr-extensions/README.md +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-help-gate.test.ts +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/provider-rotation.test.ts +663 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/statusline.test.ts +52 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/claude-plugin-commands.ts +418 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crouter-help.ts +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-commands/filters.json +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-commands/index.ts +174 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-help-gate.ts +408 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/index.ts +442 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/test.ts +119 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/nested-context.ts +327 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +574 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/statusline.ts +260 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/strip-skills-docs.ts +40 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/sysprompt-window.ts +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/package.json +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/subscription-state.js +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/subscription-state.ts +479 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/LICENSE +13 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/README.md +172 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/bin.mjs +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/errors.js +57 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/index.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/log.js +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/util.js +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/visit.js +233 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/index.js +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/package.json +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/cli.d.ts +8 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/cli.mjs +201 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/composer.js +224 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/Document.js +337 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/directives.js +178 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/errors.d.ts +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/errors.js +62 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/index.d.ts +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/index.js +50 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/log.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/log.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/options.d.ts +350 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst.js +112 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/parser.js +980 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/public-api.js +107 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/tags.js +99 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/test-events.js +134 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/util.d.ts +16 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/util.js +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/visit.d.ts +102 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/visit.js +236 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/package.json +97 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/util.js +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/package-lock.json +3385 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/package.json +25 -0
- package/dist/builtin-pi-packages/pi-mode-switch/README.md +64 -0
- package/dist/builtin-pi-packages/pi-mode-switch/bin/mode +40 -0
- package/dist/builtin-pi-packages/pi-mode-switch/extensions/index.ts +422 -0
- package/dist/builtin-pi-packages/pi-mode-switch/package.json +13 -0
- package/dist/builtin-views/canvas/core.mjs +82 -1
- package/dist/builtin-views/canvas/tui.mjs +9 -5
- package/dist/builtin-views/canvas/web.jsx +3 -2
- package/dist/builtin-views/chat/core.mjs +725 -0
- package/dist/builtin-views/chat/text.mjs +101 -0
- package/dist/builtin-views/chat/tui.mjs +368 -0
- package/dist/builtin-views/chat/web.jsx +367 -0
- package/dist/builtin-views/prompt-review/core.mjs +863 -0
- package/dist/builtin-views/prompt-review/text.mjs +15 -0
- package/dist/builtin-views/prompt-review/tui.mjs +196 -0
- package/dist/builtin-views/prompt-review/web.jsx +484 -0
- package/dist/builtin-views/settings/core.mjs +397 -0
- package/dist/builtin-views/settings/text.mjs +40 -0
- package/dist/builtin-views/settings/tui.mjs +95 -0
- package/dist/builtin-views/settings/web.jsx +167 -0
- package/dist/cli.js +16 -3
- package/dist/clients/attach/__tests__/crtr-output-coverage.test.js +55 -0
- package/dist/clients/attach/__tests__/crtr-output-render.test.js +2340 -0
- package/dist/clients/attach/attach-cmd.d.ts +18 -0
- package/dist/clients/attach/attach-cmd.js +1797 -797
- package/dist/clients/attach/auth-pickers.js +2 -2
- package/dist/clients/attach/canvas-panels.js +3 -3
- package/dist/clients/attach/chat-view.d.ts +13 -2
- package/dist/clients/attach/chat-view.js +53 -10
- package/dist/clients/attach/clipboard-image.js +1 -1
- package/dist/clients/attach/clipboard-text.js +1 -1
- package/dist/clients/attach/config-load.d.ts +8 -4
- package/dist/clients/attach/config-load.js +3 -1
- package/dist/clients/attach/crtr-output-render.d.ts +48 -0
- package/dist/clients/attach/crtr-output-render.js +646 -0
- package/dist/clients/attach/extension-dialogs.d.ts +2 -3
- package/dist/clients/attach/extension-dialogs.js +8 -10
- package/dist/clients/attach/graph-overlay.js +6 -5
- package/dist/clients/attach/input-controller.d.ts +4 -3
- package/dist/clients/attach/input-controller.js +25 -4
- package/dist/clients/attach/pickers.js +1 -1
- package/dist/clients/attach/slash-commands.d.ts +7 -7
- package/dist/clients/attach/slash-commands.js +40 -17
- package/dist/clients/attach/titled-editor.d.ts +4 -0
- package/dist/clients/attach/titled-editor.js +31 -15
- package/dist/clients/attach/view-socket.d.ts +2 -1
- package/dist/clients/attach/view-socket.js +28 -9
- package/dist/clients/web/__tests__/source-cache.test.js +32 -0
- package/dist/clients/web/dev-server.js +1 -0
- package/dist/clients/web/events.js +9 -11
- package/dist/clients/web/server.d.ts +4 -3
- package/dist/clients/web/server.js +166 -35
- package/dist/clients/web/source-cache.d.ts +10 -0
- package/dist/clients/web/source-cache.js +57 -0
- package/dist/clients/web/web-cmd.js +32 -13
- package/dist/commands/__tests__/human.test.js +30 -28
- package/dist/commands/canvas-history/search.js +1 -1
- package/dist/commands/canvas-history.js +5 -8
- package/dist/commands/canvas-issue.d.ts +2 -0
- package/dist/commands/canvas-issue.js +148 -0
- package/dist/commands/canvas-prune.js +43 -2
- package/dist/commands/canvas-rebuild-index.d.ts +2 -0
- package/dist/commands/canvas-rebuild-index.js +57 -0
- package/dist/commands/canvas-snapshot.d.ts +2 -0
- package/dist/commands/canvas-snapshot.js +51 -0
- package/dist/commands/canvas-tmux-spread.d.ts +2 -0
- package/dist/commands/canvas-tmux-spread.js +188 -0
- package/dist/commands/canvas.d.ts +1 -0
- package/dist/commands/canvas.js +16 -1
- package/dist/commands/chord.js +143 -48
- package/dist/commands/daemon.js +3 -3
- package/dist/commands/human/prompts.d.ts +0 -1
- package/dist/commands/human/prompts.js +39 -54
- package/dist/commands/human/queue.d.ts +12 -1
- package/dist/commands/human/queue.js +468 -73
- package/dist/commands/human/shared.d.ts +3 -4
- package/dist/commands/human/shared.js +3 -3
- package/dist/commands/human.js +12 -11
- package/dist/commands/memory/find.js +3 -2
- package/dist/commands/memory/lint.js +15 -8
- package/dist/commands/memory/list.js +4 -3
- package/dist/commands/memory/origin.d.ts +1 -0
- package/dist/commands/memory/origin.js +88 -0
- package/dist/commands/memory/read.js +3 -3
- package/dist/commands/memory/shared.d.ts +9 -4
- package/dist/commands/memory/shared.js +28 -10
- package/dist/commands/memory/write.js +19 -14
- package/dist/commands/memory.js +6 -8
- package/dist/commands/node-context.d.ts +2 -0
- package/dist/commands/node-context.js +172 -0
- package/dist/commands/node-snapshot.d.ts +2 -0
- package/dist/commands/node-snapshot.js +126 -0
- package/dist/commands/node.d.ts +2 -2
- package/dist/commands/node.js +987 -603
- package/dist/commands/pkg/market-inspect.d.ts +2 -1
- package/dist/commands/pkg/market-inspect.js +14 -32
- package/dist/commands/pkg/market-manage.d.ts +3 -1
- package/dist/commands/pkg/market-manage.js +58 -154
- package/dist/commands/pkg/market.js +7 -7
- package/dist/commands/pkg/plugin-inspect.d.ts +2 -1
- package/dist/commands/pkg/plugin-inspect.js +13 -29
- package/dist/commands/pkg/plugin-manage.d.ts +5 -1
- package/dist/commands/pkg/plugin-manage.js +246 -172
- package/dist/commands/pkg/plugin.js +6 -6
- package/dist/commands/pkg.js +7 -7
- package/dist/commands/push.d.ts +2 -0
- package/dist/commands/push.js +79 -11
- package/dist/commands/revive.js +79 -4
- package/dist/commands/search/answer.d.ts +1 -0
- package/dist/commands/search/answer.js +50 -0
- package/dist/commands/search/contents.d.ts +1 -0
- package/dist/commands/search/contents.js +96 -0
- package/dist/commands/search/exa.d.ts +53 -0
- package/dist/commands/search/exa.js +155 -0
- package/dist/commands/search/puremd.d.ts +11 -0
- package/dist/commands/search/puremd.js +53 -0
- package/dist/commands/search/web.d.ts +1 -0
- package/dist/commands/search/web.js +65 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.js +24 -0
- package/dist/commands/surface.d.ts +2 -0
- package/dist/commands/surface.js +43 -0
- package/dist/commands/sys/__tests__/sync-import.test.js +72 -0
- package/dist/commands/sys/config.js +59 -10
- package/dist/commands/sys/doctor.js +56 -4
- package/dist/commands/sys/prompt-review.d.ts +1 -0
- package/dist/commands/sys/prompt-review.js +178 -0
- package/dist/commands/sys/promptstudio.d.ts +2 -0
- package/dist/commands/sys/promptstudio.js +65 -0
- package/dist/commands/sys/settings.d.ts +2 -0
- package/dist/commands/sys/settings.js +16 -0
- package/dist/commands/sys/setup-core.d.ts +88 -0
- package/dist/commands/sys/setup-core.js +352 -0
- package/dist/commands/sys/setup.d.ts +2 -0
- package/dist/commands/sys/setup.js +516 -0
- package/dist/commands/sys/sync.js +311 -159
- package/dist/commands/sys/sysprompt.d.ts +1 -0
- package/dist/commands/sys/sysprompt.js +89 -0
- package/dist/commands/sys.js +10 -5
- package/dist/commands/view-cycle.js +5 -5
- package/dist/commands/view-list.js +3 -3
- package/dist/commands/view-new.js +6 -6
- package/dist/commands/view-pick.js +6 -6
- package/dist/commands/view-run.js +14 -14
- package/dist/commands/view.js +3 -3
- package/dist/commands/workspace.js +10 -10
- package/dist/core/__tests__/boot.test.js +140 -0
- package/dist/core/__tests__/broker-preflight.test.js +85 -0
- package/dist/core/__tests__/broker-sdk-wiring.test.js +10 -16
- package/dist/core/__tests__/canvas.test.js +37 -1
- package/dist/core/__tests__/chat-view-reconnect.test.js +70 -0
- package/dist/core/__tests__/child-death-wake.test.js +11 -2
- package/dist/core/__tests__/close.test.js +39 -1
- package/dist/core/__tests__/connection-reconnect-resume.test.js +37 -0
- package/dist/core/__tests__/context-intro.test.js +48 -14
- package/dist/core/__tests__/daemon-boot.test.js +204 -9
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +30 -4
- package/dist/core/__tests__/fixtures/fake-engine.js +157 -18
- package/dist/core/__tests__/fixtures/fake-pi-host.js +10 -1
- package/dist/core/__tests__/full/broker-attach-limits.test.js +1 -1
- package/dist/core/__tests__/full/broker-attach-stream.test.js +1 -1
- package/dist/core/__tests__/full/broker-crash-teardown.test.js +10 -5
- package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +1 -1
- package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +1 -1
- package/dist/core/__tests__/full/broker-pane-resolution.test.js +1 -1
- package/dist/core/__tests__/full/cascade-close.test.js +31 -18
- package/dist/core/__tests__/full/detach-focus.test.js +2 -2
- package/dist/core/__tests__/full/human-new-window-regression.test.js +1 -1
- package/dist/core/__tests__/hearth-bootstrap.test.js +136 -0
- package/dist/core/__tests__/helpers/harness.d.ts +1 -1
- package/dist/core/__tests__/helpers/harness.js +3 -3
- package/dist/core/__tests__/human-stranded-deliver.test.js +38 -1
- package/dist/core/__tests__/human-surface-target.test.js +1 -1
- package/dist/core/__tests__/kickoff.test.js +18 -19
- package/dist/core/__tests__/live-mutation-verbs.test.js +10 -10
- package/dist/core/__tests__/live-mutation.test.js +8 -8
- package/dist/core/__tests__/migration.test.js +172 -13
- package/dist/core/__tests__/on-read-dedup-resume.test.js +40 -0
- package/dist/core/__tests__/preview-registry-sync.test.js +36 -0
- package/dist/core/__tests__/prune-to-limit.test.js +91 -0
- package/dist/core/__tests__/push-final-guard.test.js +7 -1
- package/dist/core/__tests__/relaunch-root.test.js +9 -9
- package/dist/core/__tests__/revive.test.js +100 -27
- package/dist/core/__tests__/spawn-root.test.js +24 -1
- package/dist/core/__tests__/stop-guard.test.js +10 -0
- package/dist/core/__tests__/stranded-relaunch.test.js +72 -0
- package/dist/core/__tests__/tmux-surface.test.js +5 -1
- package/dist/core/__tests__/trigger-migration.test.js +48 -0
- package/dist/core/__tests__/wake-bearings.test.js +23 -21
- package/dist/core/__tests__/wake-origin.test.js +36 -33
- package/dist/core/__tests__/yield-ensures-daemon.test.js +54 -0
- package/dist/core/artifact.d.ts +2 -33
- package/dist/core/artifact.js +27 -87
- package/dist/core/bootstrap.js +2 -0
- package/dist/core/canvas/boot.d.ts +48 -0
- package/dist/core/canvas/boot.js +157 -0
- package/dist/core/canvas/browse/__tests__/model.test.js +35 -1
- package/dist/core/canvas/browse/app.js +87 -17
- package/dist/core/canvas/browse/model.d.ts +10 -1
- package/dist/core/canvas/browse/model.js +37 -1
- package/dist/core/canvas/browse/render.js +35 -33
- package/dist/core/canvas/canvas.d.ts +33 -0
- package/dist/core/canvas/canvas.js +138 -8
- package/dist/core/canvas/db.js +121 -9
- package/dist/core/canvas/index.d.ts +1 -1
- package/dist/core/canvas/index.js +1 -1
- package/dist/core/canvas/labels.d.ts +6 -8
- package/dist/core/canvas/labels.js +8 -11
- package/dist/core/canvas/nav-model.d.ts +5 -4
- package/dist/core/canvas/nav-model.js +32 -18
- package/dist/core/canvas/paths.d.ts +18 -1
- package/dist/core/canvas/paths.js +31 -2
- package/dist/core/canvas/pid.d.ts +6 -0
- package/dist/core/canvas/pid.js +13 -0
- package/dist/core/canvas/render.d.ts +25 -0
- package/dist/core/canvas/render.js +96 -13
- package/dist/core/canvas/status-glyph.d.ts +35 -0
- package/dist/core/canvas/status-glyph.js +104 -0
- package/dist/core/canvas/triggers.d.ts +108 -0
- package/dist/core/canvas/triggers.js +320 -0
- package/dist/core/canvas/types.d.ts +130 -48
- package/dist/core/command.js +13 -4
- package/dist/core/config.js +114 -16
- package/dist/core/fault-classifier.d.ts +41 -0
- package/dist/core/fault-classifier.js +110 -0
- package/dist/core/feed/inbox.d.ts +15 -0
- package/dist/core/feed/inbox.js +40 -14
- package/dist/core/frontmatter.d.ts +1 -11
- package/dist/core/frontmatter.js +1 -55
- package/dist/core/hearth/__tests__/model-auth-guest.test.js +151 -0
- package/dist/core/hearth/config.d.ts +3 -0
- package/dist/core/hearth/config.js +111 -0
- package/dist/core/hearth/guest-env.d.ts +9 -0
- package/dist/core/hearth/guest-env.js +27 -0
- package/dist/core/hearth/index.d.ts +5 -0
- package/dist/core/hearth/index.js +5 -0
- package/dist/core/hearth/model-auth-guest.d.ts +8 -0
- package/dist/core/hearth/model-auth-guest.js +435 -0
- package/dist/core/hearth/provider.d.ts +28 -0
- package/dist/core/hearth/provider.js +10 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.d.ts +12 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.js +147 -0
- package/dist/core/hearth/providers/blaxel-home.d.ts +15 -0
- package/dist/core/hearth/providers/blaxel-home.js +136 -0
- package/dist/core/hearth/providers/blaxel.d.ts +31 -0
- package/dist/core/hearth/providers/blaxel.js +282 -0
- package/dist/core/hearth/providers/types.d.ts +77 -0
- package/dist/core/hearth/registry.d.ts +15 -0
- package/dist/core/hearth/registry.js +180 -0
- package/dist/core/hearth/types.d.ts +156 -0
- package/dist/core/help.d.ts +16 -0
- package/dist/core/help.js +2 -0
- package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.js +79 -0
- package/dist/core/{skill-sync → host-exports}/builtins.d.ts +21 -13
- package/dist/core/host-exports/builtins.js +68 -0
- package/dist/core/{skill-sync → host-exports}/export.d.ts +9 -6
- package/dist/core/{skill-sync → host-exports}/export.js +37 -14
- package/dist/core/io.js +1 -1
- package/dist/core/log.d.ts +9 -0
- package/dist/core/log.js +113 -0
- package/dist/core/memory-resolver.d.ts +13 -13
- package/dist/core/memory-resolver.js +70 -51
- package/dist/core/personas/index.d.ts +4 -4
- package/dist/core/personas/index.js +2 -2
- package/dist/core/personas/loader.d.ts +51 -0
- package/dist/core/personas/loader.js +54 -50
- package/dist/core/personas/resolve.d.ts +43 -27
- package/dist/core/personas/resolve.js +336 -94
- package/dist/core/preview-registry.d.ts +25 -0
- package/dist/core/preview-registry.js +2047 -0
- package/dist/core/resolver.d.ts +1 -0
- package/dist/core/resolver.js +23 -16
- package/dist/core/runtime/auth-reload.d.ts +7 -0
- package/dist/core/runtime/auth-reload.js +69 -0
- package/dist/core/runtime/bearings.d.ts +46 -25
- package/dist/core/runtime/bearings.js +313 -52
- package/dist/core/runtime/branded-host.d.ts +4 -2
- package/dist/core/runtime/branded-host.js +66 -4
- package/dist/core/runtime/broker-protocol.d.ts +40 -5
- package/dist/core/runtime/broker-protocol.js +2 -2
- package/dist/core/runtime/broker.js +343 -18
- package/dist/core/runtime/close.js +39 -31
- package/dist/core/runtime/connectivity.d.ts +12 -0
- package/dist/core/runtime/connectivity.js +73 -0
- package/dist/core/runtime/fault-recovery-nudge.d.ts +2 -0
- package/dist/core/runtime/fault-recovery-nudge.js +2 -0
- package/dist/core/runtime/fault-recovery.d.ts +23 -0
- package/dist/core/runtime/fault-recovery.js +74 -0
- package/dist/core/runtime/fault.d.ts +25 -0
- package/dist/core/runtime/fault.js +176 -0
- package/dist/core/runtime/front-door.d.ts +1 -1
- package/dist/core/runtime/front-door.js +2 -2
- package/dist/core/runtime/host.d.ts +10 -0
- package/dist/core/runtime/host.js +71 -9
- package/dist/core/runtime/kickoff.js +32 -46
- package/dist/core/runtime/launch.d.ts +41 -21
- package/dist/core/runtime/launch.js +165 -52
- package/dist/core/runtime/lifecycle.js +7 -7
- package/dist/core/runtime/model-swap.d.ts +18 -0
- package/dist/core/runtime/model-swap.js +95 -0
- package/dist/core/runtime/naming.d.ts +7 -0
- package/dist/core/runtime/naming.js +61 -9
- package/dist/core/runtime/nodes.js +6 -1
- package/dist/core/runtime/persona.js +16 -17
- package/dist/core/runtime/placement.d.ts +41 -36
- package/dist/core/runtime/placement.js +159 -74
- package/dist/core/runtime/promote.d.ts +2 -0
- package/dist/core/runtime/promote.js +23 -3
- package/dist/core/runtime/recycle.js +13 -11
- package/dist/core/runtime/reset.d.ts +6 -3
- package/dist/core/runtime/reset.js +5 -5
- package/dist/core/runtime/revive-all.d.ts +5 -2
- package/dist/core/runtime/revive-all.js +5 -2
- package/dist/core/runtime/revive.d.ts +19 -8
- package/dist/core/runtime/revive.js +79 -25
- package/dist/core/runtime/roadmap.d.ts +1 -1
- package/dist/core/runtime/roadmap.js +1 -1
- package/dist/core/runtime/spawn.d.ts +3 -3
- package/dist/core/runtime/spawn.js +37 -13
- package/dist/core/runtime/stop-guard.js +11 -6
- package/dist/core/runtime/surface-bg.js +1 -1
- package/dist/core/runtime/tmux-chrome.d.ts +1 -1
- package/dist/core/runtime/tmux-chrome.js +1 -1
- package/dist/core/runtime/tmux.d.ts +30 -7
- package/dist/core/runtime/tmux.js +138 -84
- package/dist/core/runtime/view-socket-client.d.ts +46 -0
- package/dist/core/runtime/view-socket-client.js +203 -0
- package/dist/core/scope.d.ts +9 -0
- package/dist/core/scope.js +37 -15
- package/dist/core/substrate/index.d.ts +1 -1
- package/dist/core/substrate/index.js +1 -1
- package/dist/core/substrate/on-read.js +39 -25
- package/dist/core/substrate/render.d.ts +10 -13
- package/dist/core/substrate/render.js +56 -51
- package/dist/core/tui/host.js +83 -18
- package/dist/core/view/__tests__/transport-cache.test.js +62 -0
- package/dist/core/view/contract.d.ts +20 -0
- package/dist/core/view/loader.js +2 -2
- package/dist/core/view/stream-local.d.ts +3 -0
- package/dist/core/view/stream-local.js +184 -0
- package/dist/core/view/transport-cache.d.ts +8 -0
- package/dist/core/view/transport-cache.js +38 -0
- package/dist/core/view/transport-local.js +4 -0
- package/dist/core/view/transport.d.ts +7 -1
- package/dist/core/wake.d.ts +2 -2
- package/dist/core/wake.js +7 -7
- package/dist/daemon/__tests__/predicate-eval.test.js +109 -0
- package/dist/daemon/crtrd.d.ts +3 -19
- package/dist/daemon/crtrd.js +360 -280
- package/dist/daemon/manage.d.ts +18 -1
- package/dist/daemon/manage.js +54 -9
- package/dist/daemon/predicate-eval.d.ts +52 -0
- package/dist/daemon/predicate-eval.js +248 -0
- package/dist/hearth/control-plane/__tests__/node-message.test.js +60 -0
- package/dist/hearth/control-plane/__tests__/rate-limit-recurrence.test.js +49 -0
- package/dist/hearth/control-plane/__tests__/relay-security.test.js +314 -0
- package/dist/hearth/control-plane/__tests__/scheduler-scan-loop.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/scheduler-scan-loop.test.js +133 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.js +170 -0
- package/dist/hearth/control-plane/__tests__/webhook-ingress.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/webhook-ingress.test.js +167 -0
- package/dist/hearth/control-plane/config.d.ts +21 -0
- package/dist/hearth/control-plane/config.js +77 -0
- package/dist/hearth/control-plane/db.d.ts +30 -0
- package/dist/hearth/control-plane/db.js +534 -0
- package/dist/hearth/control-plane/ingress/rate-limit.d.ts +24 -0
- package/dist/hearth/control-plane/ingress/rate-limit.js +100 -0
- package/dist/hearth/control-plane/ingress/route-store.d.ts +31 -0
- package/dist/hearth/control-plane/ingress/route-store.js +61 -0
- package/dist/hearth/control-plane/ingress/webhook-delivery-store.d.ts +41 -0
- package/dist/hearth/control-plane/ingress/webhook-delivery-store.js +69 -0
- package/dist/hearth/control-plane/ingress/webhook-route.d.ts +55 -0
- package/dist/hearth/control-plane/ingress/webhook-route.js +285 -0
- package/dist/hearth/control-plane/main.d.ts +1 -0
- package/dist/hearth/control-plane/main.js +88 -0
- package/dist/hearth/control-plane/node-message.d.ts +31 -0
- package/dist/hearth/control-plane/node-message.js +98 -0
- package/dist/hearth/control-plane/register.d.ts +15 -0
- package/dist/hearth/control-plane/register.js +34 -0
- package/dist/hearth/control-plane/registry.d.ts +17 -0
- package/dist/hearth/control-plane/registry.js +161 -0
- package/dist/hearth/control-plane/relay.d.ts +40 -0
- package/dist/hearth/control-plane/relay.js +642 -0
- package/dist/hearth/control-plane/scheduler/fire-store.d.ts +36 -0
- package/dist/hearth/control-plane/scheduler/fire-store.js +73 -0
- package/dist/hearth/control-plane/scheduler/recurrence.d.ts +7 -0
- package/dist/hearth/control-plane/scheduler/recurrence.js +58 -0
- package/dist/hearth/control-plane/scheduler/scan-loop.d.ts +38 -0
- package/dist/hearth/control-plane/scheduler/scan-loop.js +138 -0
- package/dist/hearth/control-plane/scheduler/schedule-store.d.ts +32 -0
- package/dist/hearth/control-plane/scheduler/schedule-store.js +66 -0
- package/dist/hearth/control-plane/secrets.d.ts +17 -0
- package/dist/hearth/control-plane/secrets.js +113 -0
- package/dist/hearth/control-plane/server.d.ts +27 -0
- package/dist/hearth/control-plane/server.js +346 -0
- package/dist/hearth/control-plane/session.d.ts +68 -0
- package/dist/hearth/control-plane/session.js +273 -0
- package/dist/hearth/control-plane/triggers/acl.d.ts +14 -0
- package/dist/hearth/control-plane/triggers/acl.js +52 -0
- package/dist/hearth/control-plane/triggers/audit-store.d.ts +38 -0
- package/dist/hearth/control-plane/triggers/audit-store.js +79 -0
- package/dist/hearth/control-plane/triggers/deliver.d.ts +43 -0
- package/dist/hearth/control-plane/triggers/deliver.js +76 -0
- package/dist/hearth/control-plane/triggers/envelope.d.ts +29 -0
- package/dist/hearth/control-plane/triggers/envelope.js +38 -0
- package/dist/hearth/control-plane/types.d.ts +66 -0
- package/dist/hearth/control-plane/types.js +1 -0
- package/dist/hearth/control-plane/wake.d.ts +80 -0
- package/dist/hearth/control-plane/wake.js +312 -0
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.js +289 -0
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.js +34 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.js +203 -0
- package/dist/hearth/wake-proxy/__tests__/hardening.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/hardening.test.js +59 -0
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.js +372 -0
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.js +258 -0
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.js +437 -0
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.js +15 -0
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.js +141 -0
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.js +143 -0
- package/dist/hearth/wake-proxy/anthropic-oauth.d.ts +58 -0
- package/dist/hearth/wake-proxy/anthropic-oauth.js +189 -0
- package/dist/hearth/wake-proxy/auth.d.ts +22 -0
- package/dist/hearth/wake-proxy/auth.js +128 -0
- package/dist/hearth/wake-proxy/config.d.ts +2 -0
- package/dist/hearth/wake-proxy/config.js +151 -0
- package/dist/hearth/wake-proxy/guest-source.d.ts +14 -0
- package/dist/hearth/wake-proxy/guest-source.js +130 -0
- package/dist/hearth/wake-proxy/hearth-status.d.ts +44 -0
- package/dist/hearth/wake-proxy/hearth-status.js +267 -0
- package/dist/hearth/wake-proxy/home.d.ts +61 -0
- package/dist/hearth/wake-proxy/home.js +333 -0
- package/dist/hearth/wake-proxy/main.d.ts +1 -0
- package/dist/hearth/wake-proxy/main.js +134 -0
- package/dist/hearth/wake-proxy/model-auth.d.ts +13 -0
- package/dist/hearth/wake-proxy/model-auth.js +345 -0
- package/dist/hearth/wake-proxy/proxy.d.ts +35 -0
- package/dist/hearth/wake-proxy/proxy.js +716 -0
- package/dist/hearth/wake-proxy/public-source-gate.d.ts +9 -0
- package/dist/hearth/wake-proxy/public-source-gate.js +409 -0
- package/dist/hearth/wake-proxy/redact.d.ts +1 -0
- package/dist/hearth/wake-proxy/redact.js +17 -0
- package/dist/hearth/wake-proxy/server.d.ts +11 -0
- package/dist/hearth/wake-proxy/server.js +142 -0
- package/dist/hearth/wake-proxy/state.d.ts +18 -0
- package/dist/hearth/wake-proxy/state.js +342 -0
- package/dist/hearth/wake-proxy/types.d.ts +76 -0
- package/dist/hearth/wake-proxy/types.js +1 -0
- package/dist/index.js +3 -2
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +6 -5
- package/dist/pi-extensions/canvas-context-intro.js +7 -7
- package/dist/pi-extensions/canvas-doc-substrate.js +47 -24
- package/dist/pi-extensions/canvas-nav.js +16 -9
- package/dist/pi-extensions/canvas-stophook.d.ts +1 -1
- package/dist/pi-extensions/canvas-stophook.js +78 -11
- package/dist/prompts/view.js +7 -8
- package/dist/types.d.ts +39 -20
- package/dist/types.js +38 -13
- package/dist/web/runtime.js +141 -42
- package/dist/web/transport-http.js +7 -5
- package/dist/web/transport-stream.d.ts +3 -0
- package/dist/web/transport-stream.js +204 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff +0 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff +0 -0
- package/dist/web-client/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2 +0 -0
- package/dist/web-client/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2 +0 -0
- package/dist/web-client/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2 +0 -0
- package/dist/web-client/assets/index-BRKxe-hy.js +80 -0
- package/dist/web-client/assets/index-BZUxTkv5.css +2 -0
- package/dist/web-client/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2 +0 -0
- package/dist/web-client/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2 +0 -0
- package/dist/web-client/index.html +3 -2
- package/package.json +37 -11
- package/scripts/postinstall.mjs +8 -0
- package/dist/clients/attach/__tests__/action-parity.test.js +0 -48
- package/dist/clients/attach/__tests__/clipboard-image.test.js +0 -76
- package/dist/clients/attach/__tests__/editor-newline.test.js +0 -82
- package/dist/clients/attach/__tests__/git-info.test.js +0 -31
- package/dist/clients/attach/__tests__/onrequest-wired.test.js +0 -20
- package/dist/clients/attach/__tests__/reconnect-giveup.test.js +0 -30
- package/dist/clients/attach/__tests__/slash-quit-copy.test.js +0 -42
- package/dist/clients/attach/__tests__/titled-editor.test.js +0 -39
- package/dist/commands/memory/__tests__/lint-schema.test.js +0 -52
- package/dist/core/__tests__/argv-parser.test.js +0 -217
- package/dist/core/__tests__/draw-style.test.js +0 -258
- package/dist/core/__tests__/error-stall-recycle.test.js +0 -141
- package/dist/core/__tests__/frame-decoder-perf.test.js +0 -224
- package/dist/core/__tests__/keystone.test.js +0 -185
- package/dist/core/__tests__/listing-completeness.test.js +0 -31
- package/dist/core/__tests__/memory-resolver.test.js +0 -108
- package/dist/core/__tests__/memory.test.js +0 -60
- package/dist/core/__tests__/pane-column.test.js +0 -153
- package/dist/core/__tests__/persona-compose.test.js +0 -53
- package/dist/core/__tests__/persona-subkind.test.js +0 -65
- package/dist/core/__tests__/persona.test.js +0 -107
- package/dist/core/__tests__/unknown-path.test.js +0 -58
- package/dist/core/canvas/wakeups.d.ts +0 -76
- package/dist/core/canvas/wakeups.js +0 -185
- package/dist/core/skill-sync/__tests__/dry-run-wrote-count.test.js +0 -57
- package/dist/core/skill-sync/builtins.js +0 -112
- package/dist/core/skill-sync/claude-plugins.d.ts +0 -23
- package/dist/core/skill-sync/claude-plugins.js +0 -71
- package/dist/core/skill-sync/engine.d.ts +0 -42
- package/dist/core/skill-sync/engine.js +0 -633
- package/dist/core/skill-sync/manifest.d.ts +0 -64
- package/dist/core/skill-sync/manifest.js +0 -181
- package/dist/core/skill-sync/profile.d.ts +0 -76
- package/dist/core/skill-sync/profile.js +0 -173
- package/dist/core/skill-sync/snapshot.d.ts +0 -57
- package/dist/core/skill-sync/snapshot.js +0 -120
- package/dist/pi-extensions/canvas-commands.d.ts +0 -37
- package/dist/pi-extensions/canvas-commands.js +0 -113
- package/dist/pi-extensions/canvas-resume.d.ts +0 -21
- package/dist/pi-extensions/canvas-resume.js +0 -83
- package/dist/pi-extensions/canvas-view.d.ts +0 -21
- package/dist/pi-extensions/canvas-view.js +0 -76
- package/dist/web-client/assets/index-BUvQb4hR.css +0 -2
- package/dist/web-client/assets/index-ClLQXYAE.js +0 -10
- /package/dist/clients/attach/__tests__/{action-parity.test.d.ts → crtr-output-coverage.test.d.ts} +0 -0
- /package/dist/clients/attach/__tests__/{clipboard-image.test.d.ts → crtr-output-render.test.d.ts} +0 -0
- /package/dist/clients/{attach/__tests__/editor-newline.test.d.ts → web/__tests__/source-cache.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/git-info.test.d.ts → commands/sys/__tests__/sync-import.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/onrequest-wired.test.d.ts → core/__tests__/boot.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/reconnect-giveup.test.d.ts → core/__tests__/broker-preflight.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/slash-quit-copy.test.d.ts → core/__tests__/chat-view-reconnect.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/titled-editor.test.d.ts → core/__tests__/connection-reconnect-resume.test.d.ts} +0 -0
- /package/dist/{commands/memory/__tests__/lint-schema.test.d.ts → core/__tests__/hearth-bootstrap.test.d.ts} +0 -0
- /package/dist/core/__tests__/{argv-parser.test.d.ts → preview-registry-sync.test.d.ts} +0 -0
- /package/dist/core/__tests__/{draw-style.test.d.ts → prune-to-limit.test.d.ts} +0 -0
- /package/dist/core/__tests__/{error-stall-recycle.test.d.ts → stranded-relaunch.test.d.ts} +0 -0
- /package/dist/core/__tests__/{frame-decoder-perf.test.d.ts → trigger-migration.test.d.ts} +0 -0
- /package/dist/core/__tests__/{keystone.test.d.ts → yield-ensures-daemon.test.d.ts} +0 -0
- /package/dist/core/{__tests__/listing-completeness.test.d.ts → hearth/__tests__/model-auth-guest.test.d.ts} +0 -0
- /package/dist/core/{__tests__/memory-resolver.test.d.ts → hearth/providers/types.js} +0 -0
- /package/dist/core/{__tests__/memory.test.d.ts → hearth/types.js} +0 -0
- /package/dist/core/{__tests__/pane-column.test.d.ts → host-exports/__tests__/export-prunes-boot-skill.test.d.ts} +0 -0
- /package/dist/core/{__tests__/persona-compose.test.d.ts → view/__tests__/transport-cache.test.d.ts} +0 -0
- /package/dist/{core/__tests__/persona-subkind.test.d.ts → daemon/__tests__/predicate-eval.test.d.ts} +0 -0
- /package/dist/{core/__tests__/persona.test.d.ts → hearth/control-plane/__tests__/node-message.test.d.ts} +0 -0
- /package/dist/{core/__tests__/unknown-path.test.d.ts → hearth/control-plane/__tests__/rate-limit-recurrence.test.d.ts} +0 -0
- /package/dist/{core/skill-sync/__tests__/dry-run-wrote-count.test.d.ts → hearth/control-plane/__tests__/relay-security.test.d.ts} +0 -0
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
import { truncateToVisualLines } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { Box, Text, truncateToWidth, visibleWidth } from '@earendil-works/pi-tui';
|
|
3
|
+
import { HELP_ICON, iconForPath, suppressOutputForPath, summarizePath, } from '../../core/preview-registry.js';
|
|
4
|
+
// Hard cap on a collapsed crtr card's total rendered lines (rule 12,
|
|
5
|
+
// inline-ui-placement): help synthesis or a normal truncated result never
|
|
6
|
+
// shows more than this many lines total, blank spacer + status + body +
|
|
7
|
+
// expand hint included. PREVIEW_BODY_BUDGET reserves the 3 fixed/possible
|
|
8
|
+
// non-body lines (leading blank, status line, one-line expand hint — shown
|
|
9
|
+
// unconditionally for help, conditionally for a normal truncated result) so
|
|
10
|
+
// blank(1) + status(1) + body(<=budget) + hint(<=1) never exceeds the cap.
|
|
11
|
+
const PREVIEW_MAX_LINES = 20;
|
|
12
|
+
const PREVIEW_BODY_BUDGET = PREVIEW_MAX_LINES - 3;
|
|
13
|
+
const HEREDOC_OPEN = /<<-?\s*(["']?)([A-Za-z_][A-Za-z0-9_]*)\1/g;
|
|
14
|
+
const CRTR_IN_COMMAND_POSITION = /(?:^|[\n;&|()]\s*)(?:[A-Za-z_][A-Za-z0-9_]*=\S+\s+)*(?:[^\s;&|()]+\/)?(?:crtr|crouter)(?=\s|$)/;
|
|
15
|
+
export const CRTR_OUTPUT_CUSTOM_TYPE = 'crtr-output';
|
|
16
|
+
export function stripHeredocBodies(command) {
|
|
17
|
+
const lines = command.split('\n');
|
|
18
|
+
const out = [];
|
|
19
|
+
let i = 0;
|
|
20
|
+
while (i < lines.length) {
|
|
21
|
+
const line = lines[i];
|
|
22
|
+
out.push(line);
|
|
23
|
+
i++;
|
|
24
|
+
const delims = [];
|
|
25
|
+
HEREDOC_OPEN.lastIndex = 0;
|
|
26
|
+
let match;
|
|
27
|
+
while ((match = HEREDOC_OPEN.exec(line)) !== null)
|
|
28
|
+
delims.push(match[2]);
|
|
29
|
+
for (const delim of delims) {
|
|
30
|
+
while (i < lines.length) {
|
|
31
|
+
const probe = lines[i].replace(/^\t+/, '');
|
|
32
|
+
i++;
|
|
33
|
+
if (probe === delim)
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return out.join('\n');
|
|
39
|
+
}
|
|
40
|
+
export function isCrtrBashCommand(command) {
|
|
41
|
+
return typeof command === 'string' && CRTR_IN_COMMAND_POSITION.test(stripHeredocBodies(command));
|
|
42
|
+
}
|
|
43
|
+
/** Pull the crtr/crouter invocation's own argv tokens out of a full shell
|
|
44
|
+
* command string: drop everything before the matched binary token, then cut
|
|
45
|
+
* at the next shell-level terminator so a chained `&& echo done` or piped
|
|
46
|
+
* `| cat` doesn't leak into the "argv". Tokenized with quote-awareness (see
|
|
47
|
+
* tokenizeShellSegment) so a quoted argument that merely *contains* `-h` (a
|
|
48
|
+
* prompt string, a literal flag mentioned in prose) is one opaque token, not
|
|
49
|
+
* split into a bare `-h` — still not a real shell parse (no backslash escapes,
|
|
50
|
+
* no `$()`), but adequate for viewer-only chrome (worst case: a stale/empty
|
|
51
|
+
* lookup, never a wrong agent result). */
|
|
52
|
+
function extractCrtrInvocationTokens(command) {
|
|
53
|
+
const stripped = stripHeredocBodies(command);
|
|
54
|
+
const match = CRTR_IN_COMMAND_POSITION.exec(stripped);
|
|
55
|
+
if (match === null)
|
|
56
|
+
return undefined;
|
|
57
|
+
const tail = stripped.slice(match.index + match[0].length);
|
|
58
|
+
const stopAt = tail.search(/[\n;&|)]/);
|
|
59
|
+
const segment = (stopAt === -1 ? tail : tail.slice(0, stopAt)).trim();
|
|
60
|
+
return segment === '' ? [] : dropRedirectTail(tokenizeShellSegment(segment));
|
|
61
|
+
}
|
|
62
|
+
/** A crtr invocation's own argv never includes a shell redirect (`>`, `>>`,
|
|
63
|
+
* `<`, `<<`, with an optional leading fd digit and/or trailing `&fd`
|
|
64
|
+
* duplication, e.g. `2>&1`, `&>`, `1>`) — that's plumbing on the OUTER bash
|
|
65
|
+
* call, not part of crtr's own path/args. The terminator scan above already
|
|
66
|
+
* cuts the segment on a bare `&`, which coincidentally lands mid-redirect
|
|
67
|
+
* for something like `-h 2>&1` (segment becomes `-h 2>`, leaving a dangling
|
|
68
|
+
* `2>` token) — rather than special-case that scan, this drops the first
|
|
69
|
+
* token that STARTS WITH a redirect operator (and everything after it, since
|
|
70
|
+
* nothing past a redirect is ever crtr's own arg). Matching on the prefix
|
|
71
|
+
* (not the whole token) is what catches an operator glued to its target with
|
|
72
|
+
* no separating space, e.g. `2>/tmp/log` / `>/tmp/log` — bash treats those as
|
|
73
|
+
* operator+word regardless of spacing, but this whitespace tokenizer keeps
|
|
74
|
+
* them as one token, so a full-string match would miss them. */
|
|
75
|
+
const REDIRECT_TOKEN = /^(?:\d*|&)(?:>>|<<|>|<)/;
|
|
76
|
+
function dropRedirectTail(tokens) {
|
|
77
|
+
const redirectIdx = tokens.findIndex((t) => REDIRECT_TOKEN.test(t));
|
|
78
|
+
return redirectIdx === -1 ? tokens : tokens.slice(0, redirectIdx);
|
|
79
|
+
}
|
|
80
|
+
/** Split a shell command segment into tokens, treating a single- or
|
|
81
|
+
* double-quoted span as one opaque token (quote characters stripped, no
|
|
82
|
+
* escape handling) instead of letting whitespace inside it create extra
|
|
83
|
+
* tokens. This is what keeps `-h` embedded in a quoted prompt string (e.g.
|
|
84
|
+
* `node new "write about -h flags"`) from ever being mistaken for a real
|
|
85
|
+
* `-h` token by isCrtrHelpInvocation below. */
|
|
86
|
+
function tokenizeShellSegment(segment) {
|
|
87
|
+
const tokens = [];
|
|
88
|
+
let current = '';
|
|
89
|
+
let inToken = false;
|
|
90
|
+
let quote = null;
|
|
91
|
+
for (const ch of segment) {
|
|
92
|
+
if (quote !== null) {
|
|
93
|
+
if (ch === quote)
|
|
94
|
+
quote = null;
|
|
95
|
+
else
|
|
96
|
+
current += ch;
|
|
97
|
+
inToken = true;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (ch === '"' || ch === "'") {
|
|
101
|
+
quote = ch;
|
|
102
|
+
inToken = true;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (/\s/.test(ch)) {
|
|
106
|
+
if (inToken) {
|
|
107
|
+
tokens.push(current);
|
|
108
|
+
current = '';
|
|
109
|
+
inToken = false;
|
|
110
|
+
}
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
current += ch;
|
|
114
|
+
inToken = true;
|
|
115
|
+
}
|
|
116
|
+
if (inToken)
|
|
117
|
+
tokens.push(current);
|
|
118
|
+
return tokens;
|
|
119
|
+
}
|
|
120
|
+
/** True when a crtr bash invocation's OWN argv carries a bare -h/--help
|
|
121
|
+
* token — the dispatcher renders the leaf's schema, not a result, so it is
|
|
122
|
+
* never useful to preview like a normal command's output (see
|
|
123
|
+
* src/core/help.ts renderLeafArgv: schema text, not agent-facing result
|
|
124
|
+
* text). Checked against extractCrtrInvocationTokens' tokens (scoped to the
|
|
125
|
+
* crtr segment only, quote-aware), never the raw command string — a `-h`
|
|
126
|
+
* appearing before the crtr segment (`echo -h && crtr canvas snapshot`),
|
|
127
|
+
* after it (`crtr canvas snapshot && echo --help`), or inside a quoted
|
|
128
|
+
* argument (`crtr node new "write about -h flags"`) must never count. This is
|
|
129
|
+
* structural (every leaf's -h has the same shape), so it needs no per-leaf
|
|
130
|
+
* metadata — unlike suppressOutput below, which is command-owned. */
|
|
131
|
+
export function isCrtrHelpInvocation(command) {
|
|
132
|
+
if (typeof command !== 'string')
|
|
133
|
+
return false;
|
|
134
|
+
const tokens = extractCrtrInvocationTokens(command);
|
|
135
|
+
return tokens !== undefined && tokens.some((t) => t === '-h' || t === '--help');
|
|
136
|
+
}
|
|
137
|
+
export function commandPreviewMeta(command) {
|
|
138
|
+
const tokens = extractCrtrInvocationTokens(command);
|
|
139
|
+
const isHelp = tokens !== undefined && tokens.some((t) => t === '-h' || t === '--help');
|
|
140
|
+
return {
|
|
141
|
+
isHelp,
|
|
142
|
+
suppressOutput: tokens !== undefined && tokens.length > 0 && suppressOutputForPath(tokens),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function commandFromArgs(args) {
|
|
146
|
+
if (!args || typeof args !== 'object')
|
|
147
|
+
return '';
|
|
148
|
+
const command = args.command;
|
|
149
|
+
return typeof command === 'string' ? command : '';
|
|
150
|
+
}
|
|
151
|
+
function resultText(result) {
|
|
152
|
+
return (result.content ?? [])
|
|
153
|
+
.filter((part) => part?.type === 'text' || typeof part?.text === 'string')
|
|
154
|
+
.map((part) => part.text ?? '')
|
|
155
|
+
.join('\n')
|
|
156
|
+
.trimEnd();
|
|
157
|
+
}
|
|
158
|
+
function lineStyle(line, theme) {
|
|
159
|
+
const trimmed = line.trim();
|
|
160
|
+
if (trimmed === '')
|
|
161
|
+
return '';
|
|
162
|
+
if (/^<\/?(?:command|subcommand|runtime-state|crtr-[^>\s]+|error)(?:\s|>|$)/.test(trimmed)) {
|
|
163
|
+
const color = trimmed.startsWith('<error') ? 'error' : 'accent';
|
|
164
|
+
return theme.fg(color, theme.bold(line));
|
|
165
|
+
}
|
|
166
|
+
if (/^(Input|Output|Effects|Branches|Output \(|Effects$)/.test(trimmed)) {
|
|
167
|
+
return theme.fg('toolTitle', theme.bold(line));
|
|
168
|
+
}
|
|
169
|
+
if (/^(Spawned|Created|Updated|Wrote|Deleted|Promoted|Demoted|Closed|Revived|Recycled)\b/.test(trimmed)) {
|
|
170
|
+
return theme.fg('success', line);
|
|
171
|
+
}
|
|
172
|
+
if (/^(crtr:|Command exited|Command timed out|Command aborted|unknown subcommand|error\b)/i.test(trimmed)) {
|
|
173
|
+
return theme.fg('error', line);
|
|
174
|
+
}
|
|
175
|
+
if (/^(warning|warn|blocked|attention)\b/i.test(trimmed) || trimmed.includes('⚠')) {
|
|
176
|
+
return theme.fg('warning', line);
|
|
177
|
+
}
|
|
178
|
+
if (/^[●✓]/.test(trimmed))
|
|
179
|
+
return theme.fg('success', line);
|
|
180
|
+
if (/^[○◌]/.test(trimmed))
|
|
181
|
+
return theme.fg('muted', line);
|
|
182
|
+
if (/^[✗⊘]/.test(trimmed))
|
|
183
|
+
return theme.fg('error', line);
|
|
184
|
+
if (/^[├└│]/.test(trimmed))
|
|
185
|
+
return theme.fg('toolOutput', line);
|
|
186
|
+
if (/^\s*-\s+/.test(line)) {
|
|
187
|
+
const idx = line.indexOf('-');
|
|
188
|
+
return `${line.slice(0, idx)}${theme.fg('muted', '-')}${theme.fg('toolOutput', line.slice(idx + 1))}`;
|
|
189
|
+
}
|
|
190
|
+
return theme.fg('toolOutput', line);
|
|
191
|
+
}
|
|
192
|
+
export function renderCrtrOutputText(text, theme) {
|
|
193
|
+
const body = text || '(no output)';
|
|
194
|
+
return body.split('\n').map((line) => lineStyle(line, theme)).join('\n');
|
|
195
|
+
}
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
// Help preview synthesis
|
|
198
|
+
// ---------------------------------------------------------------------------
|
|
199
|
+
//
|
|
200
|
+
// A collapsed `-h` card must never just parrot the call header (the command
|
|
201
|
+
// path, already shown by renderCall) or bottom out in a bare "(schema — ctrl+o
|
|
202
|
+
// to expand)" with zero information. Instead it synthesizes a short,
|
|
203
|
+
// human-useful slice straight out of the command's own rendered help text —
|
|
204
|
+
// still the command's own words (rule 12: previews are command-owned content,
|
|
205
|
+
// not generic renderer chrome), just the compact slice of it. Parsed directly
|
|
206
|
+
// off the exact shapes renderRoot/renderBranch/renderLeafArgv produce
|
|
207
|
+
// (src/core/help.ts) — text-only parsing (no import of help.ts/command.ts:
|
|
208
|
+
// this file must stay bundle-safe, see preview-registry.ts's header) so it is
|
|
209
|
+
// necessarily best-effort, not a real re-parse.
|
|
210
|
+
/** A slash-command echo message's body is `$ crtr <argv>\n\n<schema>`
|
|
211
|
+
* (see isHelpFromCrtrOutputContent below); strip that echo line + its
|
|
212
|
+
* blank-line separator so synthesis always sees the bare schema, same as
|
|
213
|
+
* the bash-card path where `text` already IS the bare schema. */
|
|
214
|
+
function stripCrtrEchoPrefix(text) {
|
|
215
|
+
if (!text.startsWith('$ '))
|
|
216
|
+
return text;
|
|
217
|
+
const nlIdx = text.indexOf('\n');
|
|
218
|
+
if (nlIdx === -1)
|
|
219
|
+
return '';
|
|
220
|
+
const rest = text.slice(nlIdx + 1);
|
|
221
|
+
return rest.startsWith('\n') ? rest.slice(1) : rest;
|
|
222
|
+
}
|
|
223
|
+
/** renderRoot emits one `<command name="X">` block per subtree with NO
|
|
224
|
+
* description attribute; renderBranch emits exactly one `<command
|
|
225
|
+
* name="X" description="Y">` block (always WITH the attribute) for the
|
|
226
|
+
* branch itself. Leaf help (renderLeafArgv) never emits a `<command>` tag at
|
|
227
|
+
* all. That structural difference is enough to tell all three apart from
|
|
228
|
+
* the rendered text alone, with no shared type import. */
|
|
229
|
+
function classifyHelpText(text) {
|
|
230
|
+
const tag = /<command name="[^"]*"([^>]*)>/.exec(text);
|
|
231
|
+
if (tag === null)
|
|
232
|
+
return 'leaf';
|
|
233
|
+
return /\bdescription="/.test(tag[1]) ? 'branch' : 'root';
|
|
234
|
+
}
|
|
235
|
+
/** Root help: a tagline, then one `<command name="X">\n<concept line>` block
|
|
236
|
+
* per subtree (see renderRoot). Preview = tagline + `name — concept` per
|
|
237
|
+
* subtree, in source order — the same information density as the root -h's
|
|
238
|
+
* own orientation line, just one row per subtree instead of the full
|
|
239
|
+
* useWhen/subcommand-listing/state detail. */
|
|
240
|
+
function synthesizeRootPreview(text) {
|
|
241
|
+
const firstTagIdx = text.indexOf('<command name="');
|
|
242
|
+
const tagline = (firstTagIdx === -1 ? text : text.slice(0, firstTagIdx)).trim();
|
|
243
|
+
const commands = [];
|
|
244
|
+
const re = /<command name="([^"]*)">\n([^\n]*)/g;
|
|
245
|
+
let m;
|
|
246
|
+
while ((m = re.exec(text)) !== null)
|
|
247
|
+
commands.push(`${m[1]} \u2014 ${m[2]}`);
|
|
248
|
+
return [tagline, ...(commands.length > 0 ? ['', ...commands] : [])].join('\n');
|
|
249
|
+
}
|
|
250
|
+
/** Branch help: one `<command name="X" description="Y">` block, then one
|
|
251
|
+
* self-closing `<subcommand name="..." description="..." whenToUse="..."/>`
|
|
252
|
+
* per child (see renderBranch). Preview = `name — description` for the
|
|
253
|
+
* branch itself, then the same for each subcommand — dropping whenToUse
|
|
254
|
+
* (already the longest field) and any dynamicState/model prose, which is
|
|
255
|
+
* exactly the detail ctrl+o exists to reveal. */
|
|
256
|
+
function synthesizeBranchPreview(text) {
|
|
257
|
+
const head = /^<command name="([^"]*)" description="([^"]*)">/.exec(text);
|
|
258
|
+
const name = head?.[1] ?? '';
|
|
259
|
+
const description = head?.[2] ?? '';
|
|
260
|
+
const subs = [];
|
|
261
|
+
const re = /<subcommand name="([^"]*)" description="([^"]*)"[^>]*\/>/g;
|
|
262
|
+
let m;
|
|
263
|
+
while ((m = re.exec(text)) !== null)
|
|
264
|
+
subs.push(`${m[1]} \u2014 ${m[2]}`);
|
|
265
|
+
return [`${name} \u2014 ${description}`, ...(subs.length > 0 ? ['', ...subs] : [])].join('\n');
|
|
266
|
+
}
|
|
267
|
+
/** Leaf help: `name: summary.` first line, then an `Input`-headed param block
|
|
268
|
+
* (each row ` LABEL description...`, or one un-indented note line when the
|
|
269
|
+
* leaf takes no params — see renderLeafArgv/paramLabel). Preview = the
|
|
270
|
+
* summary line verbatim (already concise) plus a compact param-name roll-call
|
|
271
|
+
* (or the note line) — never the per-param descriptions, Output, or
|
|
272
|
+
* Effects sections, which is exactly the schema detail ctrl+o reveals. */
|
|
273
|
+
function synthesizeLeafPreview(text) {
|
|
274
|
+
const lines = text.split('\n');
|
|
275
|
+
const out = [lines[0] ?? ''];
|
|
276
|
+
const inputIdx = lines.indexOf('Input');
|
|
277
|
+
if (inputIdx === -1)
|
|
278
|
+
return out.join('\n');
|
|
279
|
+
const outputIdx = lines.findIndex((l) => l.startsWith('Output ('));
|
|
280
|
+
const end = outputIdx === -1 ? lines.length : outputIdx;
|
|
281
|
+
const block = lines.slice(inputIdx + 1, end).filter((l) => l.trim() !== '');
|
|
282
|
+
const paramNames = block.map((l) => /^\s{2}(\S+)/.exec(l)?.[1]);
|
|
283
|
+
if (block.length > 0 && paramNames.every((n) => n !== undefined)) {
|
|
284
|
+
out.push('', `Params: ${paramNames.join(', ')}`);
|
|
285
|
+
}
|
|
286
|
+
else if (block.length > 0) {
|
|
287
|
+
// No param rows (renderLeafArgv's inputNote path) — the note is itself
|
|
288
|
+
// already a one-line summary, e.g. "No input parameters."
|
|
289
|
+
out.push('', block[0]);
|
|
290
|
+
}
|
|
291
|
+
return out.join('\n');
|
|
292
|
+
}
|
|
293
|
+
/** Synthesize a collapsed-preview body for any `-h` schema text, dispatching
|
|
294
|
+
* on classifyHelpText. This is the ONLY place that turns raw help text into
|
|
295
|
+
* preview prose — both the bash-card path (CrtrResultComponent) and the
|
|
296
|
+
* slash-command echo path (CrtrOutputMessageComponent, via
|
|
297
|
+
* stripCrtrEchoPrefix) route through it, so the two surfaces read the same
|
|
298
|
+
* way. */
|
|
299
|
+
function synthesizeHelpPreviewText(rawText) {
|
|
300
|
+
const text = stripCrtrEchoPrefix(rawText);
|
|
301
|
+
const kind = classifyHelpText(text);
|
|
302
|
+
if (kind === 'root')
|
|
303
|
+
return synthesizeRootPreview(text);
|
|
304
|
+
if (kind === 'branch')
|
|
305
|
+
return synthesizeBranchPreview(text);
|
|
306
|
+
return synthesizeLeafPreview(text);
|
|
307
|
+
}
|
|
308
|
+
/** Style one summarizer-produced SummaryLine for terminal rendering: an
|
|
309
|
+
* empty text stays blank (no color codes to wrap nothing in), otherwise the
|
|
310
|
+
* tone maps straight to a theme color name \u2014 'plain' is the same
|
|
311
|
+
* 'toolOutput' color the generic renderer's default line style uses,
|
|
312
|
+
* everything else (success/error/warning/muted/accent) is already a real
|
|
313
|
+
* theme color name used elsewhere in this file. */
|
|
314
|
+
function renderSummaryLine(line, theme) {
|
|
315
|
+
if (line.text === '')
|
|
316
|
+
return '';
|
|
317
|
+
const color = line.tone === undefined || line.tone === 'plain' ? 'toolOutput' : line.tone;
|
|
318
|
+
return theme.fg(color, line.text);
|
|
319
|
+
}
|
|
320
|
+
/** Only ever rendered for a running or failed call (see statusLines below): a
|
|
321
|
+
* SUCCESSFUL call shows no body status line at all, so the success/help
|
|
322
|
+
* branches would be dead here. */
|
|
323
|
+
function statusLine(options, theme) {
|
|
324
|
+
return options.isPartial ? theme.fg('warning', '⟳ crtr running') : theme.fg('error', '✗ crtr failed');
|
|
325
|
+
}
|
|
326
|
+
const DEFAULT_PREVIEW_STATE = { isHelp: false, suppressOutput: false };
|
|
327
|
+
function clampRenderedLines(lines, width) {
|
|
328
|
+
if (width <= 0)
|
|
329
|
+
return lines.map(() => '');
|
|
330
|
+
return lines.map((line) => truncateToWidth(line, width, '…'));
|
|
331
|
+
}
|
|
332
|
+
const PI_TRUNCATION_MARKER = /^\[Showing lines \d+-\d+ of \d+ \([^)]+ limit\)\. Full output: .+\]$/;
|
|
333
|
+
function isPiTruncationMarker(line) {
|
|
334
|
+
return PI_TRUNCATION_MARKER.test(line.trim());
|
|
335
|
+
}
|
|
336
|
+
function splitGenericTableRow(line) {
|
|
337
|
+
const trimmed = line.trim();
|
|
338
|
+
if (!trimmed.includes('|'))
|
|
339
|
+
return null;
|
|
340
|
+
// GFM permits omitting either outer pipe (`name | version`, `--- | ---`);
|
|
341
|
+
// only strip the ones actually present rather than requiring both.
|
|
342
|
+
const body = trimmed.replace(/^\|/, '').replace(/\|$/, '');
|
|
343
|
+
const cells = [];
|
|
344
|
+
let current = '';
|
|
345
|
+
let i = 0;
|
|
346
|
+
while (i < body.length) {
|
|
347
|
+
const ch = body[i];
|
|
348
|
+
if (ch === '\\' && body[i + 1] === '|') {
|
|
349
|
+
current += '|';
|
|
350
|
+
i += 2;
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
if (ch === '|') {
|
|
354
|
+
cells.push(current.trim());
|
|
355
|
+
current = '';
|
|
356
|
+
i++;
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
current += ch;
|
|
360
|
+
i++;
|
|
361
|
+
}
|
|
362
|
+
cells.push(current.trim());
|
|
363
|
+
return cells.length >= 2 ? cells : null;
|
|
364
|
+
}
|
|
365
|
+
function isTableSeparator(cells) {
|
|
366
|
+
return cells.every((cell) => /^:?-{3,}:?$/.test(cell));
|
|
367
|
+
}
|
|
368
|
+
function hasEdgePipe(line) {
|
|
369
|
+
const trimmed = line.trim();
|
|
370
|
+
return trimmed.startsWith('|') || trimmed.endsWith('|');
|
|
371
|
+
}
|
|
372
|
+
function readGenericTableBlock(lines, start) {
|
|
373
|
+
const first = splitGenericTableRow(lines[start]);
|
|
374
|
+
if (first === null)
|
|
375
|
+
return null;
|
|
376
|
+
const rows = [first];
|
|
377
|
+
let next = start + 1;
|
|
378
|
+
while (next < lines.length) {
|
|
379
|
+
const cells = splitGenericTableRow(lines[next]);
|
|
380
|
+
if (cells === null || cells.length !== first.length)
|
|
381
|
+
break;
|
|
382
|
+
rows.push(cells);
|
|
383
|
+
next++;
|
|
384
|
+
}
|
|
385
|
+
// A single matched row with no edge pipe at all (e.g. prose that happens
|
|
386
|
+
// to contain one literal `|`, `warning: use x | y`) is too weak a signal
|
|
387
|
+
// to treat as a table — a real GFM row omitting both edges only reads as
|
|
388
|
+
// one when it's part of a multi-row block (header+separator, or several
|
|
389
|
+
// consecutive same-shaped rows).
|
|
390
|
+
if (rows.length === 1 && !hasEdgePipe(lines[start]))
|
|
391
|
+
return null;
|
|
392
|
+
const separatorIndex = rows.findIndex(isTableSeparator);
|
|
393
|
+
if (separatorIndex === 1) {
|
|
394
|
+
return { next, rows: [rows[0], ...rows.slice(2)], headerRows: 1 };
|
|
395
|
+
}
|
|
396
|
+
if (separatorIndex !== -1) {
|
|
397
|
+
return { next, rows: rows.filter((_, i) => i !== separatorIndex), headerRows: 0 };
|
|
398
|
+
}
|
|
399
|
+
return { next, rows, headerRows: 0 };
|
|
400
|
+
}
|
|
401
|
+
function sum(nums) {
|
|
402
|
+
return nums.reduce((acc, n) => acc + n, 0);
|
|
403
|
+
}
|
|
404
|
+
function tableColumnWidths(rows, width) {
|
|
405
|
+
const columnCount = rows[0]?.length ?? 0;
|
|
406
|
+
if (columnCount === 0)
|
|
407
|
+
return [];
|
|
408
|
+
const separatorWidth = Math.max(0, columnCount - 1) * 2;
|
|
409
|
+
const available = Math.max(columnCount, width - separatorWidth);
|
|
410
|
+
const minWidth = available >= columnCount * 3 ? 3 : 1;
|
|
411
|
+
const widths = Array.from({ length: columnCount }, (_, col) => Math.max(1, ...rows.map((row) => visibleWidth(row[col] ?? ''))));
|
|
412
|
+
while (sum(widths) > available) {
|
|
413
|
+
let widest = -1;
|
|
414
|
+
for (let i = 0; i < widths.length; i++) {
|
|
415
|
+
if (widths[i] > minWidth && (widest === -1 || widths[i] > widths[widest]))
|
|
416
|
+
widest = i;
|
|
417
|
+
}
|
|
418
|
+
if (widest === -1)
|
|
419
|
+
break;
|
|
420
|
+
widths[widest] = widths[widest] - 1;
|
|
421
|
+
}
|
|
422
|
+
return widths;
|
|
423
|
+
}
|
|
424
|
+
function padToVisibleWidth(text, width) {
|
|
425
|
+
const missing = width - visibleWidth(text);
|
|
426
|
+
return missing > 0 ? `${text}${' '.repeat(missing)}` : text;
|
|
427
|
+
}
|
|
428
|
+
function formatGenericTableRow(cells, widths) {
|
|
429
|
+
return cells
|
|
430
|
+
.map((cell, i) => padToVisibleWidth(truncateToWidth(cell, widths[i] ?? 1, '…'), widths[i] ?? 1))
|
|
431
|
+
.join(' ')
|
|
432
|
+
.trimEnd();
|
|
433
|
+
}
|
|
434
|
+
function collectGenericPreviewLines(text, lineBudget, width) {
|
|
435
|
+
const sourceLines = (text || '(no output)').split('\n');
|
|
436
|
+
const lines = [];
|
|
437
|
+
let skippedCount = 0;
|
|
438
|
+
const push = (line) => {
|
|
439
|
+
if (lines.length < lineBudget)
|
|
440
|
+
lines.push(line);
|
|
441
|
+
else
|
|
442
|
+
skippedCount++;
|
|
443
|
+
};
|
|
444
|
+
let i = 0;
|
|
445
|
+
while (i < sourceLines.length) {
|
|
446
|
+
const table = readGenericTableBlock(sourceLines, i);
|
|
447
|
+
if (table !== null) {
|
|
448
|
+
const widths = tableColumnWidths(table.rows, width);
|
|
449
|
+
for (let rowIndex = 0; rowIndex < table.rows.length; rowIndex++) {
|
|
450
|
+
push({
|
|
451
|
+
text: formatGenericTableRow(table.rows[rowIndex], widths),
|
|
452
|
+
tone: rowIndex < table.headerRows ? 'accent' : undefined,
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
i = table.next;
|
|
456
|
+
continue;
|
|
457
|
+
}
|
|
458
|
+
const textLine = sourceLines[i];
|
|
459
|
+
push({
|
|
460
|
+
text: truncateToWidth(textLine, width, '…'),
|
|
461
|
+
tone: isPiTruncationMarker(textLine) ? 'muted' : undefined,
|
|
462
|
+
});
|
|
463
|
+
i++;
|
|
464
|
+
}
|
|
465
|
+
return { lines, skippedCount };
|
|
466
|
+
}
|
|
467
|
+
function renderGenericPreview(text, lineBudget, width, theme) {
|
|
468
|
+
const preview = collectGenericPreviewLines(text, lineBudget, width);
|
|
469
|
+
return {
|
|
470
|
+
skippedCount: preview.skippedCount,
|
|
471
|
+
lines: preview.lines.map((line) => {
|
|
472
|
+
if (line.tone !== undefined)
|
|
473
|
+
return renderSummaryLine(line, theme);
|
|
474
|
+
return lineStyle(line.text, theme);
|
|
475
|
+
}),
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
class CrtrResultComponent {
|
|
479
|
+
text;
|
|
480
|
+
options;
|
|
481
|
+
context;
|
|
482
|
+
theme;
|
|
483
|
+
command;
|
|
484
|
+
staticPreview;
|
|
485
|
+
constructor(text, options, context, theme,
|
|
486
|
+
/** Source command for the preview lookup (the bash-call path). Omit (or
|
|
487
|
+
* pass a static preview below) for a path with no per-leaf lookup, e.g.
|
|
488
|
+
* CrtrOutputMessageComponent. */
|
|
489
|
+
command, staticPreview = DEFAULT_PREVIEW_STATE) {
|
|
490
|
+
this.text = text;
|
|
491
|
+
this.options = options;
|
|
492
|
+
this.context = context;
|
|
493
|
+
this.theme = theme;
|
|
494
|
+
this.command = command;
|
|
495
|
+
this.staticPreview = staticPreview;
|
|
496
|
+
}
|
|
497
|
+
/** Both isHelp and suppressOutput are synchronous structural lookups (see
|
|
498
|
+
* commandPreviewMeta), so this never needs to invalidate/upgrade a later
|
|
499
|
+
* paint — the first render already has the final answer. */
|
|
500
|
+
currentPreview() {
|
|
501
|
+
if (this.command === undefined)
|
|
502
|
+
return this.staticPreview;
|
|
503
|
+
return commandPreviewMeta(this.command);
|
|
504
|
+
}
|
|
505
|
+
render(width) {
|
|
506
|
+
const preview = this.currentPreview();
|
|
507
|
+
const isPartial = Boolean(this.options.isPartial);
|
|
508
|
+
const isError = Boolean(this.context.isError);
|
|
509
|
+
const isRunningOrFailed = isPartial || isError;
|
|
510
|
+
// The body carries a status line ONLY while running or failed (⟳ running /
|
|
511
|
+
// ✗ failed) — the states the call header never shows and where the detail
|
|
512
|
+
// matters. A SUCCESSFUL call (help or normal) gets NO body status: the
|
|
513
|
+
// header already named the command (<icon> crtr <path> / <icon> crtr help) and the
|
|
514
|
+
// output speaks for itself, so a "✓ crtr done" line is pure noise.
|
|
515
|
+
const statusLines = isRunningOrFailed ? [statusLine(this.options, this.theme)] : [];
|
|
516
|
+
if (this.options.expanded) {
|
|
517
|
+
// Expanded = raw truth (never redirect-/-h-stripped, never
|
|
518
|
+
// synthesized): the exact command as invoked, plus the exact output,
|
|
519
|
+
// still lineStyle-colored for readability but otherwise unmodified.
|
|
520
|
+
const styled = renderCrtrOutputText(this.text, this.theme);
|
|
521
|
+
const commandLine = this.command !== undefined
|
|
522
|
+
? [this.theme.fg('muted', `$ ${this.command}`), '']
|
|
523
|
+
: [];
|
|
524
|
+
return clampRenderedLines(['', ...statusLines, ...commandLine, ...styled.split('\n')], width);
|
|
525
|
+
}
|
|
526
|
+
// Collapse order (rule 12, inline-ui-placement): help schema synthesis,
|
|
527
|
+
// then a command-owned computed summary (summarizePath — memory read,
|
|
528
|
+
// memory lint, ...), then a bare suppressOutput hint, then generic
|
|
529
|
+
// truncation. A still-RUNNING command is always shown raw — there is
|
|
530
|
+
// nothing to summarize yet. A FAILED command still tries the
|
|
531
|
+
// command-owned summarizer first: a real `crtr memory lint` failure
|
|
532
|
+
// (findings) IS command-owned computed content the same as its 0-findings
|
|
533
|
+
// success shape, not noise to suppress — only when the summarizer
|
|
534
|
+
// recognizes neither shape (returns null) does the raw failed output show.
|
|
535
|
+
// suppressOutput stays success-only (checked below): a failure is exactly
|
|
536
|
+
// when a suppressed leaf's raw output becomes diagnostically important.
|
|
537
|
+
if (!isPartial) {
|
|
538
|
+
if (preview.isHelp) {
|
|
539
|
+
// A collapsed -h card gets a synthesized preview of the schema (rule
|
|
540
|
+
// 12), never the header's own path repeated and never the raw schema
|
|
541
|
+
// dump — see synthesizeHelpPreviewText. A -h invocation is never
|
|
542
|
+
// partial-or-failed in practice (the dispatcher renders the schema
|
|
543
|
+
// unconditionally), so statusLines is effectively always [] here and
|
|
544
|
+
// the body is JUST the preview content, no repeated help label.
|
|
545
|
+
const styled = renderCrtrOutputText(synthesizeHelpPreviewText(this.text), this.theme);
|
|
546
|
+
const truncated = truncateToVisualLines(styled, PREVIEW_BODY_BUDGET, width);
|
|
547
|
+
const lines = truncated.visualLines ?? [];
|
|
548
|
+
const hint = this.theme.fg('muted', '(schema — ctrl+o to expand)');
|
|
549
|
+
return clampRenderedLines(['', ...statusLines, ...lines, hint], width);
|
|
550
|
+
}
|
|
551
|
+
const tokens = this.command !== undefined ? extractCrtrInvocationTokens(this.command) : undefined;
|
|
552
|
+
const summary = tokens !== undefined ? summarizePath(tokens, this.text) : null;
|
|
553
|
+
if (summary !== null) {
|
|
554
|
+
// A command-owned computed summary (e.g. memory read's frontmatter
|
|
555
|
+
// glance, memory lint's PASS/findings line) — never the raw payload.
|
|
556
|
+
const summaryLines = summary.map((line) => renderSummaryLine(line, this.theme));
|
|
557
|
+
const truncated = truncateToVisualLines(summaryLines.join('\n'), PREVIEW_BODY_BUDGET, width);
|
|
558
|
+
const lines = truncated.visualLines ?? [];
|
|
559
|
+
const hint = this.theme.fg('muted', '(ctrl+o to expand)');
|
|
560
|
+
return clampRenderedLines(['', ...statusLines, ...lines, hint], width);
|
|
561
|
+
}
|
|
562
|
+
if (!isError && preview.suppressOutput) {
|
|
563
|
+
// suppressOutput leaves (command-owned, e.g. canvas snapshot) stay a
|
|
564
|
+
// bare hint — the payload is a machine-readable dump with no useful
|
|
565
|
+
// human slice to synthesize, unlike help text's structured shape.
|
|
566
|
+
// Success-only: a failed run of a suppressed leaf still shows the raw
|
|
567
|
+
// output below, since that is exactly when the detail matters.
|
|
568
|
+
const hint = this.theme.fg('muted', '(suppressed — ctrl+o to expand)');
|
|
569
|
+
return clampRenderedLines(['', ...statusLines, hint], width);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
const generic = renderGenericPreview(this.text, PREVIEW_BODY_BUDGET, width, this.theme);
|
|
573
|
+
if (generic.skippedCount > 0) {
|
|
574
|
+
const hint = this.theme.fg('muted', `… (${generic.skippedCount} more lines, ctrl+o to expand)`);
|
|
575
|
+
return clampRenderedLines(['', ...statusLines, ...generic.lines, hint], width);
|
|
576
|
+
}
|
|
577
|
+
return clampRenderedLines(['', ...statusLines, ...generic.lines], width);
|
|
578
|
+
}
|
|
579
|
+
invalidate() {
|
|
580
|
+
this.context.invalidate?.();
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
/** First-line convention from crtr-commands/index.ts's pi.sendMessage:
|
|
584
|
+
* `$ crtr <argv>\n\n<output>`. Help-only here, never suppressOutput: this
|
|
585
|
+
* path renders a slash-command's own static `$ crtr ...` echo, not a live
|
|
586
|
+
* bash-call result keyed to a real leaf path, so there is no per-leaf
|
|
587
|
+
* suppressOutput lookup to make. */
|
|
588
|
+
function isHelpFromCrtrOutputContent(content) {
|
|
589
|
+
const firstLine = content.split('\n', 1)[0];
|
|
590
|
+
return firstLine.startsWith('$ ') && isCrtrHelpInvocation(firstLine.slice(2));
|
|
591
|
+
}
|
|
592
|
+
export class CrtrOutputMessageComponent extends Box {
|
|
593
|
+
content;
|
|
594
|
+
theme;
|
|
595
|
+
body;
|
|
596
|
+
expanded;
|
|
597
|
+
constructor(content, expanded, theme) {
|
|
598
|
+
super(1, 1, (text) => theme.bg('customMessageBg', text));
|
|
599
|
+
this.content = content;
|
|
600
|
+
this.theme = theme;
|
|
601
|
+
this.expanded = expanded;
|
|
602
|
+
const preview = { isHelp: isHelpFromCrtrOutputContent(content), suppressOutput: false };
|
|
603
|
+
this.body = new CrtrResultComponent(content, { expanded }, {}, theme, undefined, preview);
|
|
604
|
+
this.addChild(this.body);
|
|
605
|
+
}
|
|
606
|
+
setExpanded(expanded) {
|
|
607
|
+
if (this.expanded === expanded)
|
|
608
|
+
return;
|
|
609
|
+
this.expanded = expanded;
|
|
610
|
+
const preview = { isHelp: isHelpFromCrtrOutputContent(this.content), suppressOutput: false };
|
|
611
|
+
this.body = new CrtrResultComponent(this.content, { expanded }, {}, this.theme, undefined, preview);
|
|
612
|
+
this.clear();
|
|
613
|
+
this.addChild(this.body);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
export function createCrtrBashToolDefinition(args) {
|
|
617
|
+
const command = commandFromArgs(args);
|
|
618
|
+
if (!isCrtrBashCommand(command))
|
|
619
|
+
return undefined;
|
|
620
|
+
return {
|
|
621
|
+
name: 'bash',
|
|
622
|
+
label: 'bash',
|
|
623
|
+
description: 'Render crtr bash output with crtr-specific chrome in the attach viewer.',
|
|
624
|
+
parameters: {},
|
|
625
|
+
renderCall(callArgs, theme) {
|
|
626
|
+
const currentCommand = commandFromArgs(callArgs) || command;
|
|
627
|
+
// Semantic card, not a bash echo: the header names what the invocation
|
|
628
|
+
// IS (help schema vs. a crtr command), and the body previews only the
|
|
629
|
+
// crtr segment's own path/args (extractCrtrInvocationTokens, -h/--help
|
|
630
|
+
// stripped) — no leading `$`, no raw shell chrome (chained `&&`/`|`
|
|
631
|
+
// siblings, env-var prefixes) leaking through.
|
|
632
|
+
const tokens = extractCrtrInvocationTokens(currentCommand);
|
|
633
|
+
const isHelp = tokens !== undefined && tokens.some((t) => t === '-h' || t === '--help');
|
|
634
|
+
const pathTokens = (tokens ?? []).filter((t) => t !== '-h' && t !== '--help');
|
|
635
|
+
const path = pathTokens.join(' ');
|
|
636
|
+
const icon = isHelp ? HELP_ICON : iconForPath(pathTokens);
|
|
637
|
+
const prefix = isHelp ? `${icon} crtr help` : `${icon} crtr`;
|
|
638
|
+
const styledPrefix = theme.fg('accent', theme.bold(prefix));
|
|
639
|
+
const styledPath = path ? ` ${theme.fg('toolTitle', theme.bold(path))}` : '';
|
|
640
|
+
return new Text(`${styledPrefix}${styledPath}`, 0, 0);
|
|
641
|
+
},
|
|
642
|
+
renderResult(result, options, theme, context) {
|
|
643
|
+
return new CrtrResultComponent(resultText(result), options, context, theme, command);
|
|
644
|
+
},
|
|
645
|
+
};
|
|
646
|
+
}
|
|
@@ -6,9 +6,8 @@ import type { RpcExtensionUIRequest, RpcExtensionUIResponse } from '../../core/r
|
|
|
6
6
|
export interface DialogHandle {
|
|
7
7
|
dismiss(): void;
|
|
8
8
|
}
|
|
9
|
-
/** The 4 user-blocking dialog methods.
|
|
10
|
-
*
|
|
11
|
-
* set_editor_text) the broker never forwards as a request. */
|
|
9
|
+
/** The 4 user-blocking dialog methods. Other RpcExtensionUIRequest methods are
|
|
10
|
+
* non-blocking display ops; callers handle them before rendering a dialog. */
|
|
12
11
|
export declare function isBlockingDialog(req: RpcExtensionUIRequest): boolean;
|
|
13
12
|
/**
|
|
14
13
|
* Render a blocking extension dialog as a focused overlay over `tui`, and resolve
|