@crouton-kit/crouter 0.3.32 → 0.3.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/build-root.js +4 -6
- package/dist/builtin-memory/crouter-development/marketplaces.md +8 -8
- package/dist/builtin-memory/crouter-development/personas/base-prompt.md +2 -2
- package/dist/builtin-memory/crouter-development/personas/orchestrator-prompt.md +5 -5
- package/dist/builtin-memory/crouter-development/personas.md +3 -4
- package/dist/builtin-memory/crouter-development/plugins.md +31 -31
- package/dist/builtin-memory/design.md +4 -1
- package/dist/builtin-memory/development.md +4 -1
- package/dist/builtin-memory/internal/INDEX.md +1 -1
- package/dist/builtin-memory/internal/examples/imessage-assistant.md +3 -3
- package/dist/builtin-memory/internal/nodes-and-canvas.md +9 -9
- package/dist/builtin-memory/internal/storage-tiers.md +5 -5
- package/dist/builtin-memory/planning.md +4 -1
- package/dist/builtin-memory/product.md +80 -0
- package/dist/builtin-memory/spec.md +4 -1
- package/dist/builtin-personas/advisor/PERSONA.md +10 -0
- package/dist/builtin-personas/design/PERSONA.md +2 -2
- package/dist/builtin-personas/design/orchestrator.md +3 -3
- package/dist/builtin-personas/developer/PERSONA.md +1 -1
- package/dist/builtin-personas/developer/orchestrator.md +2 -2
- package/dist/builtin-personas/explore/PERSONA.md +3 -3
- package/dist/builtin-personas/explore/orchestrator.md +4 -2
- package/dist/builtin-personas/general/PERSONA.md +1 -1
- package/dist/builtin-personas/general/orchestrator.md +1 -1
- package/dist/builtin-personas/orchestration-kernel.md +8 -15
- package/dist/builtin-personas/plan/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/orchestrator.md +2 -2
- package/dist/builtin-personas/plan/reviewers/architecture-fit/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/code-smells/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/pattern-consistency/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/requirements-coverage/PERSONA.md +1 -1
- package/dist/builtin-personas/plan/reviewers/security/PERSONA.md +1 -1
- package/dist/builtin-personas/product/PERSONA.md +18 -0
- package/dist/builtin-personas/product/orchestrator.md +14 -0
- package/dist/builtin-personas/product/teardown/PERSONA.md +13 -0
- package/dist/builtin-personas/review/PERSONA.md +1 -1
- package/dist/builtin-personas/review/orchestrator.md +1 -1
- package/dist/builtin-personas/runtime-base.md +5 -0
- package/dist/builtin-personas/spec/PERSONA.md +1 -1
- package/dist/builtin-personas/spec/orchestrator.md +2 -2
- package/dist/builtin-personas/spec/requirements/PERSONA.md +1 -1
- package/dist/builtin-personas/waiting.md +1 -1
- package/dist/builtin-pi-packages/pi-crtr-extensions/README.md +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/crtr-help-gate.test.ts +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/provider-rotation.test.ts +663 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/__tests__/statusline.test.ts +52 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/claude-plugin-commands.ts +418 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crouter-help.ts +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-commands/filters.json +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-commands/index.ts +174 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/crtr-help-gate.ts +408 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/index.ts +442 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/frontmatter-rules/test.ts +119 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/nested-context.ts +327 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/provider-rotation.ts +574 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/statusline.ts +260 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/strip-skills-docs.ts +40 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/extensions/sysprompt-window.ts +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/package.json +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/subscription-state.js +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/lib/subscription-state.ts +479 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/LICENSE +13 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/README.md +172 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/bin.mjs +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/composer.js +219 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/errors.js +57 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/index.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/log.js +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/parse/parser.js +975 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/util.js +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/dist/visit.js +233 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/index.js +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/browser/package.json +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/cli.d.ts +8 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/cli.mjs +201 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-node.js +112 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/composer.js +224 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/Document.js +337 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/doc/directives.js +178 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/errors.d.ts +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/errors.js +62 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/index.d.ts +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/index.js +50 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/log.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/log.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Alias.js +118 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/options.d.ts +350 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/cst.js +112 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/lexer.js +723 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/parse/parser.js +980 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/public-api.js +107 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/tags.js +99 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringify.js +132 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/test-events.js +134 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/util.d.ts +16 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/util.js +28 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/visit.d.ts +102 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/dist/visit.js +236 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/package.json +97 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/node_modules/yaml/util.js +2 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/package-lock.json +3385 -0
- package/dist/builtin-pi-packages/pi-crtr-extensions/package.json +25 -0
- package/dist/builtin-pi-packages/pi-mode-switch/README.md +64 -0
- package/dist/builtin-pi-packages/pi-mode-switch/bin/mode +40 -0
- package/dist/builtin-pi-packages/pi-mode-switch/extensions/index.ts +422 -0
- package/dist/builtin-pi-packages/pi-mode-switch/package.json +13 -0
- package/dist/builtin-views/canvas/core.mjs +82 -1
- package/dist/builtin-views/canvas/tui.mjs +9 -5
- package/dist/builtin-views/canvas/web.jsx +3 -2
- package/dist/builtin-views/chat/core.mjs +725 -0
- package/dist/builtin-views/chat/text.mjs +101 -0
- package/dist/builtin-views/chat/tui.mjs +368 -0
- package/dist/builtin-views/chat/web.jsx +367 -0
- package/dist/builtin-views/prompt-review/core.mjs +863 -0
- package/dist/builtin-views/prompt-review/text.mjs +15 -0
- package/dist/builtin-views/prompt-review/tui.mjs +196 -0
- package/dist/builtin-views/prompt-review/web.jsx +484 -0
- package/dist/builtin-views/settings/core.mjs +397 -0
- package/dist/builtin-views/settings/text.mjs +40 -0
- package/dist/builtin-views/settings/tui.mjs +95 -0
- package/dist/builtin-views/settings/web.jsx +167 -0
- package/dist/cli.js +16 -3
- package/dist/clients/attach/__tests__/crtr-output-coverage.test.js +55 -0
- package/dist/clients/attach/__tests__/crtr-output-render.test.js +2340 -0
- package/dist/clients/attach/attach-cmd.d.ts +18 -0
- package/dist/clients/attach/attach-cmd.js +1797 -797
- package/dist/clients/attach/auth-pickers.js +2 -2
- package/dist/clients/attach/canvas-panels.js +3 -3
- package/dist/clients/attach/chat-view.d.ts +13 -2
- package/dist/clients/attach/chat-view.js +53 -10
- package/dist/clients/attach/clipboard-image.js +1 -1
- package/dist/clients/attach/clipboard-text.js +1 -1
- package/dist/clients/attach/config-load.d.ts +8 -4
- package/dist/clients/attach/config-load.js +3 -1
- package/dist/clients/attach/crtr-output-render.d.ts +48 -0
- package/dist/clients/attach/crtr-output-render.js +646 -0
- package/dist/clients/attach/extension-dialogs.d.ts +2 -3
- package/dist/clients/attach/extension-dialogs.js +8 -10
- package/dist/clients/attach/graph-overlay.js +6 -5
- package/dist/clients/attach/input-controller.d.ts +4 -3
- package/dist/clients/attach/input-controller.js +25 -4
- package/dist/clients/attach/pickers.js +1 -1
- package/dist/clients/attach/slash-commands.d.ts +7 -7
- package/dist/clients/attach/slash-commands.js +40 -17
- package/dist/clients/attach/titled-editor.d.ts +4 -0
- package/dist/clients/attach/titled-editor.js +31 -15
- package/dist/clients/attach/view-socket.d.ts +2 -1
- package/dist/clients/attach/view-socket.js +28 -9
- package/dist/clients/web/__tests__/source-cache.test.js +32 -0
- package/dist/clients/web/dev-server.js +1 -0
- package/dist/clients/web/events.js +9 -11
- package/dist/clients/web/server.d.ts +4 -3
- package/dist/clients/web/server.js +166 -35
- package/dist/clients/web/source-cache.d.ts +10 -0
- package/dist/clients/web/source-cache.js +57 -0
- package/dist/clients/web/web-cmd.js +32 -13
- package/dist/commands/__tests__/human.test.js +30 -28
- package/dist/commands/canvas-history/search.js +1 -1
- package/dist/commands/canvas-history.js +5 -8
- package/dist/commands/canvas-issue.d.ts +2 -0
- package/dist/commands/canvas-issue.js +148 -0
- package/dist/commands/canvas-prune.js +43 -2
- package/dist/commands/canvas-rebuild-index.d.ts +2 -0
- package/dist/commands/canvas-rebuild-index.js +57 -0
- package/dist/commands/canvas-snapshot.d.ts +2 -0
- package/dist/commands/canvas-snapshot.js +51 -0
- package/dist/commands/canvas-tmux-spread.d.ts +2 -0
- package/dist/commands/canvas-tmux-spread.js +188 -0
- package/dist/commands/canvas.d.ts +1 -0
- package/dist/commands/canvas.js +16 -1
- package/dist/commands/chord.js +143 -48
- package/dist/commands/daemon.js +3 -3
- package/dist/commands/human/prompts.d.ts +0 -1
- package/dist/commands/human/prompts.js +39 -54
- package/dist/commands/human/queue.d.ts +12 -1
- package/dist/commands/human/queue.js +468 -73
- package/dist/commands/human/shared.d.ts +3 -4
- package/dist/commands/human/shared.js +3 -3
- package/dist/commands/human.js +12 -11
- package/dist/commands/memory/find.js +3 -2
- package/dist/commands/memory/lint.js +15 -8
- package/dist/commands/memory/list.js +4 -3
- package/dist/commands/memory/origin.d.ts +1 -0
- package/dist/commands/memory/origin.js +88 -0
- package/dist/commands/memory/read.js +3 -3
- package/dist/commands/memory/shared.d.ts +9 -4
- package/dist/commands/memory/shared.js +28 -10
- package/dist/commands/memory/write.js +19 -14
- package/dist/commands/memory.js +6 -8
- package/dist/commands/node-context.d.ts +2 -0
- package/dist/commands/node-context.js +172 -0
- package/dist/commands/node-snapshot.d.ts +2 -0
- package/dist/commands/node-snapshot.js +126 -0
- package/dist/commands/node.d.ts +2 -2
- package/dist/commands/node.js +987 -603
- package/dist/commands/pkg/market-inspect.d.ts +2 -1
- package/dist/commands/pkg/market-inspect.js +14 -32
- package/dist/commands/pkg/market-manage.d.ts +3 -1
- package/dist/commands/pkg/market-manage.js +58 -154
- package/dist/commands/pkg/market.js +7 -7
- package/dist/commands/pkg/plugin-inspect.d.ts +2 -1
- package/dist/commands/pkg/plugin-inspect.js +13 -29
- package/dist/commands/pkg/plugin-manage.d.ts +5 -1
- package/dist/commands/pkg/plugin-manage.js +246 -172
- package/dist/commands/pkg/plugin.js +6 -6
- package/dist/commands/pkg.js +7 -7
- package/dist/commands/push.d.ts +2 -0
- package/dist/commands/push.js +79 -11
- package/dist/commands/revive.js +79 -4
- package/dist/commands/search/answer.d.ts +1 -0
- package/dist/commands/search/answer.js +50 -0
- package/dist/commands/search/contents.d.ts +1 -0
- package/dist/commands/search/contents.js +96 -0
- package/dist/commands/search/exa.d.ts +53 -0
- package/dist/commands/search/exa.js +155 -0
- package/dist/commands/search/puremd.d.ts +11 -0
- package/dist/commands/search/puremd.js +53 -0
- package/dist/commands/search/web.d.ts +1 -0
- package/dist/commands/search/web.js +65 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.js +24 -0
- package/dist/commands/surface.d.ts +2 -0
- package/dist/commands/surface.js +43 -0
- package/dist/commands/sys/__tests__/sync-import.test.js +72 -0
- package/dist/commands/sys/config.js +59 -10
- package/dist/commands/sys/doctor.js +56 -4
- package/dist/commands/sys/prompt-review.d.ts +1 -0
- package/dist/commands/sys/prompt-review.js +178 -0
- package/dist/commands/sys/promptstudio.d.ts +2 -0
- package/dist/commands/sys/promptstudio.js +65 -0
- package/dist/commands/sys/settings.d.ts +2 -0
- package/dist/commands/sys/settings.js +16 -0
- package/dist/commands/sys/setup-core.d.ts +88 -0
- package/dist/commands/sys/setup-core.js +352 -0
- package/dist/commands/sys/setup.d.ts +2 -0
- package/dist/commands/sys/setup.js +516 -0
- package/dist/commands/sys/sync.js +311 -159
- package/dist/commands/sys/sysprompt.d.ts +1 -0
- package/dist/commands/sys/sysprompt.js +89 -0
- package/dist/commands/sys.js +10 -5
- package/dist/commands/view-cycle.js +5 -5
- package/dist/commands/view-list.js +3 -3
- package/dist/commands/view-new.js +6 -6
- package/dist/commands/view-pick.js +6 -6
- package/dist/commands/view-run.js +14 -14
- package/dist/commands/view.js +3 -3
- package/dist/commands/workspace.js +10 -10
- package/dist/core/__tests__/boot.test.js +140 -0
- package/dist/core/__tests__/broker-preflight.test.js +85 -0
- package/dist/core/__tests__/broker-sdk-wiring.test.js +10 -16
- package/dist/core/__tests__/canvas.test.js +37 -1
- package/dist/core/__tests__/chat-view-reconnect.test.js +70 -0
- package/dist/core/__tests__/child-death-wake.test.js +11 -2
- package/dist/core/__tests__/close.test.js +39 -1
- package/dist/core/__tests__/connection-reconnect-resume.test.js +37 -0
- package/dist/core/__tests__/context-intro.test.js +48 -14
- package/dist/core/__tests__/daemon-boot.test.js +204 -9
- package/dist/core/__tests__/fixtures/fake-engine.d.ts +30 -4
- package/dist/core/__tests__/fixtures/fake-engine.js +157 -18
- package/dist/core/__tests__/fixtures/fake-pi-host.js +10 -1
- package/dist/core/__tests__/full/broker-attach-limits.test.js +1 -1
- package/dist/core/__tests__/full/broker-attach-stream.test.js +1 -1
- package/dist/core/__tests__/full/broker-crash-teardown.test.js +10 -5
- package/dist/core/__tests__/full/broker-model-changed-broadcast.test.js +1 -1
- package/dist/core/__tests__/full/broker-navigate-tree-rewelcome.test.js +1 -1
- package/dist/core/__tests__/full/broker-pane-resolution.test.js +1 -1
- package/dist/core/__tests__/full/cascade-close.test.js +31 -18
- package/dist/core/__tests__/full/detach-focus.test.js +2 -2
- package/dist/core/__tests__/full/human-new-window-regression.test.js +1 -1
- package/dist/core/__tests__/hearth-bootstrap.test.js +136 -0
- package/dist/core/__tests__/helpers/harness.d.ts +1 -1
- package/dist/core/__tests__/helpers/harness.js +3 -3
- package/dist/core/__tests__/human-stranded-deliver.test.js +38 -1
- package/dist/core/__tests__/human-surface-target.test.js +1 -1
- package/dist/core/__tests__/kickoff.test.js +18 -19
- package/dist/core/__tests__/live-mutation-verbs.test.js +10 -10
- package/dist/core/__tests__/live-mutation.test.js +8 -8
- package/dist/core/__tests__/migration.test.js +172 -13
- package/dist/core/__tests__/on-read-dedup-resume.test.js +40 -0
- package/dist/core/__tests__/preview-registry-sync.test.js +36 -0
- package/dist/core/__tests__/prune-to-limit.test.js +91 -0
- package/dist/core/__tests__/push-final-guard.test.js +7 -1
- package/dist/core/__tests__/relaunch-root.test.js +9 -9
- package/dist/core/__tests__/revive.test.js +100 -27
- package/dist/core/__tests__/spawn-root.test.js +24 -1
- package/dist/core/__tests__/stop-guard.test.js +10 -0
- package/dist/core/__tests__/stranded-relaunch.test.js +72 -0
- package/dist/core/__tests__/tmux-surface.test.js +5 -1
- package/dist/core/__tests__/trigger-migration.test.js +48 -0
- package/dist/core/__tests__/wake-bearings.test.js +23 -21
- package/dist/core/__tests__/wake-origin.test.js +36 -33
- package/dist/core/__tests__/yield-ensures-daemon.test.js +54 -0
- package/dist/core/artifact.d.ts +2 -33
- package/dist/core/artifact.js +27 -87
- package/dist/core/bootstrap.js +2 -0
- package/dist/core/canvas/boot.d.ts +48 -0
- package/dist/core/canvas/boot.js +157 -0
- package/dist/core/canvas/browse/__tests__/model.test.js +35 -1
- package/dist/core/canvas/browse/app.js +87 -17
- package/dist/core/canvas/browse/model.d.ts +10 -1
- package/dist/core/canvas/browse/model.js +37 -1
- package/dist/core/canvas/browse/render.js +35 -33
- package/dist/core/canvas/canvas.d.ts +33 -0
- package/dist/core/canvas/canvas.js +138 -8
- package/dist/core/canvas/db.js +121 -9
- package/dist/core/canvas/index.d.ts +1 -1
- package/dist/core/canvas/index.js +1 -1
- package/dist/core/canvas/labels.d.ts +6 -8
- package/dist/core/canvas/labels.js +8 -11
- package/dist/core/canvas/nav-model.d.ts +5 -4
- package/dist/core/canvas/nav-model.js +32 -18
- package/dist/core/canvas/paths.d.ts +18 -1
- package/dist/core/canvas/paths.js +31 -2
- package/dist/core/canvas/pid.d.ts +6 -0
- package/dist/core/canvas/pid.js +13 -0
- package/dist/core/canvas/render.d.ts +25 -0
- package/dist/core/canvas/render.js +96 -13
- package/dist/core/canvas/status-glyph.d.ts +35 -0
- package/dist/core/canvas/status-glyph.js +104 -0
- package/dist/core/canvas/triggers.d.ts +108 -0
- package/dist/core/canvas/triggers.js +320 -0
- package/dist/core/canvas/types.d.ts +130 -48
- package/dist/core/command.js +13 -4
- package/dist/core/config.js +114 -16
- package/dist/core/fault-classifier.d.ts +41 -0
- package/dist/core/fault-classifier.js +110 -0
- package/dist/core/feed/inbox.d.ts +15 -0
- package/dist/core/feed/inbox.js +40 -14
- package/dist/core/frontmatter.d.ts +1 -11
- package/dist/core/frontmatter.js +1 -55
- package/dist/core/hearth/__tests__/model-auth-guest.test.js +151 -0
- package/dist/core/hearth/config.d.ts +3 -0
- package/dist/core/hearth/config.js +111 -0
- package/dist/core/hearth/guest-env.d.ts +9 -0
- package/dist/core/hearth/guest-env.js +27 -0
- package/dist/core/hearth/index.d.ts +5 -0
- package/dist/core/hearth/index.js +5 -0
- package/dist/core/hearth/model-auth-guest.d.ts +8 -0
- package/dist/core/hearth/model-auth-guest.js +435 -0
- package/dist/core/hearth/provider.d.ts +28 -0
- package/dist/core/hearth/provider.js +10 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.d.ts +12 -0
- package/dist/core/hearth/providers/blaxel-bootstrap.js +147 -0
- package/dist/core/hearth/providers/blaxel-home.d.ts +15 -0
- package/dist/core/hearth/providers/blaxel-home.js +136 -0
- package/dist/core/hearth/providers/blaxel.d.ts +31 -0
- package/dist/core/hearth/providers/blaxel.js +282 -0
- package/dist/core/hearth/providers/types.d.ts +77 -0
- package/dist/core/hearth/registry.d.ts +15 -0
- package/dist/core/hearth/registry.js +180 -0
- package/dist/core/hearth/types.d.ts +156 -0
- package/dist/core/help.d.ts +16 -0
- package/dist/core/help.js +2 -0
- package/dist/core/host-exports/__tests__/export-prunes-boot-skill.test.js +79 -0
- package/dist/core/{skill-sync → host-exports}/builtins.d.ts +21 -13
- package/dist/core/host-exports/builtins.js +68 -0
- package/dist/core/{skill-sync → host-exports}/export.d.ts +9 -6
- package/dist/core/{skill-sync → host-exports}/export.js +37 -14
- package/dist/core/io.js +1 -1
- package/dist/core/log.d.ts +9 -0
- package/dist/core/log.js +113 -0
- package/dist/core/memory-resolver.d.ts +13 -13
- package/dist/core/memory-resolver.js +70 -51
- package/dist/core/personas/index.d.ts +4 -4
- package/dist/core/personas/index.js +2 -2
- package/dist/core/personas/loader.d.ts +51 -0
- package/dist/core/personas/loader.js +54 -50
- package/dist/core/personas/resolve.d.ts +43 -27
- package/dist/core/personas/resolve.js +336 -94
- package/dist/core/preview-registry.d.ts +25 -0
- package/dist/core/preview-registry.js +2047 -0
- package/dist/core/resolver.d.ts +1 -0
- package/dist/core/resolver.js +23 -16
- package/dist/core/runtime/auth-reload.d.ts +7 -0
- package/dist/core/runtime/auth-reload.js +69 -0
- package/dist/core/runtime/bearings.d.ts +46 -25
- package/dist/core/runtime/bearings.js +313 -52
- package/dist/core/runtime/branded-host.d.ts +4 -2
- package/dist/core/runtime/branded-host.js +66 -4
- package/dist/core/runtime/broker-protocol.d.ts +40 -5
- package/dist/core/runtime/broker-protocol.js +2 -2
- package/dist/core/runtime/broker.js +343 -18
- package/dist/core/runtime/close.js +39 -31
- package/dist/core/runtime/connectivity.d.ts +12 -0
- package/dist/core/runtime/connectivity.js +73 -0
- package/dist/core/runtime/fault-recovery-nudge.d.ts +2 -0
- package/dist/core/runtime/fault-recovery-nudge.js +2 -0
- package/dist/core/runtime/fault-recovery.d.ts +23 -0
- package/dist/core/runtime/fault-recovery.js +74 -0
- package/dist/core/runtime/fault.d.ts +25 -0
- package/dist/core/runtime/fault.js +176 -0
- package/dist/core/runtime/front-door.d.ts +1 -1
- package/dist/core/runtime/front-door.js +2 -2
- package/dist/core/runtime/host.d.ts +10 -0
- package/dist/core/runtime/host.js +71 -9
- package/dist/core/runtime/kickoff.js +32 -46
- package/dist/core/runtime/launch.d.ts +41 -21
- package/dist/core/runtime/launch.js +165 -52
- package/dist/core/runtime/lifecycle.js +7 -7
- package/dist/core/runtime/model-swap.d.ts +18 -0
- package/dist/core/runtime/model-swap.js +95 -0
- package/dist/core/runtime/naming.d.ts +7 -0
- package/dist/core/runtime/naming.js +61 -9
- package/dist/core/runtime/nodes.js +6 -1
- package/dist/core/runtime/persona.js +16 -17
- package/dist/core/runtime/placement.d.ts +41 -36
- package/dist/core/runtime/placement.js +159 -74
- package/dist/core/runtime/promote.d.ts +2 -0
- package/dist/core/runtime/promote.js +23 -3
- package/dist/core/runtime/recycle.js +13 -11
- package/dist/core/runtime/reset.d.ts +6 -3
- package/dist/core/runtime/reset.js +5 -5
- package/dist/core/runtime/revive-all.d.ts +5 -2
- package/dist/core/runtime/revive-all.js +5 -2
- package/dist/core/runtime/revive.d.ts +19 -8
- package/dist/core/runtime/revive.js +79 -25
- package/dist/core/runtime/roadmap.d.ts +1 -1
- package/dist/core/runtime/roadmap.js +1 -1
- package/dist/core/runtime/spawn.d.ts +3 -3
- package/dist/core/runtime/spawn.js +37 -13
- package/dist/core/runtime/stop-guard.js +11 -6
- package/dist/core/runtime/surface-bg.js +1 -1
- package/dist/core/runtime/tmux-chrome.d.ts +1 -1
- package/dist/core/runtime/tmux-chrome.js +1 -1
- package/dist/core/runtime/tmux.d.ts +30 -7
- package/dist/core/runtime/tmux.js +138 -84
- package/dist/core/runtime/view-socket-client.d.ts +46 -0
- package/dist/core/runtime/view-socket-client.js +203 -0
- package/dist/core/scope.d.ts +9 -0
- package/dist/core/scope.js +37 -15
- package/dist/core/substrate/index.d.ts +1 -1
- package/dist/core/substrate/index.js +1 -1
- package/dist/core/substrate/on-read.js +39 -25
- package/dist/core/substrate/render.d.ts +10 -13
- package/dist/core/substrate/render.js +56 -51
- package/dist/core/tui/host.js +83 -18
- package/dist/core/view/__tests__/transport-cache.test.js +62 -0
- package/dist/core/view/contract.d.ts +20 -0
- package/dist/core/view/loader.js +2 -2
- package/dist/core/view/stream-local.d.ts +3 -0
- package/dist/core/view/stream-local.js +184 -0
- package/dist/core/view/transport-cache.d.ts +8 -0
- package/dist/core/view/transport-cache.js +38 -0
- package/dist/core/view/transport-local.js +4 -0
- package/dist/core/view/transport.d.ts +7 -1
- package/dist/core/wake.d.ts +2 -2
- package/dist/core/wake.js +7 -7
- package/dist/daemon/__tests__/predicate-eval.test.js +109 -0
- package/dist/daemon/crtrd.d.ts +3 -19
- package/dist/daemon/crtrd.js +360 -280
- package/dist/daemon/manage.d.ts +18 -1
- package/dist/daemon/manage.js +54 -9
- package/dist/daemon/predicate-eval.d.ts +52 -0
- package/dist/daemon/predicate-eval.js +248 -0
- package/dist/hearth/control-plane/__tests__/node-message.test.js +60 -0
- package/dist/hearth/control-plane/__tests__/rate-limit-recurrence.test.js +49 -0
- package/dist/hearth/control-plane/__tests__/relay-security.test.js +314 -0
- package/dist/hearth/control-plane/__tests__/scheduler-scan-loop.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/scheduler-scan-loop.test.js +133 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/trigger-delivery.test.js +170 -0
- package/dist/hearth/control-plane/__tests__/webhook-ingress.test.d.ts +1 -0
- package/dist/hearth/control-plane/__tests__/webhook-ingress.test.js +167 -0
- package/dist/hearth/control-plane/config.d.ts +21 -0
- package/dist/hearth/control-plane/config.js +77 -0
- package/dist/hearth/control-plane/db.d.ts +30 -0
- package/dist/hearth/control-plane/db.js +534 -0
- package/dist/hearth/control-plane/ingress/rate-limit.d.ts +24 -0
- package/dist/hearth/control-plane/ingress/rate-limit.js +100 -0
- package/dist/hearth/control-plane/ingress/route-store.d.ts +31 -0
- package/dist/hearth/control-plane/ingress/route-store.js +61 -0
- package/dist/hearth/control-plane/ingress/webhook-delivery-store.d.ts +41 -0
- package/dist/hearth/control-plane/ingress/webhook-delivery-store.js +69 -0
- package/dist/hearth/control-plane/ingress/webhook-route.d.ts +55 -0
- package/dist/hearth/control-plane/ingress/webhook-route.js +285 -0
- package/dist/hearth/control-plane/main.d.ts +1 -0
- package/dist/hearth/control-plane/main.js +88 -0
- package/dist/hearth/control-plane/node-message.d.ts +31 -0
- package/dist/hearth/control-plane/node-message.js +98 -0
- package/dist/hearth/control-plane/register.d.ts +15 -0
- package/dist/hearth/control-plane/register.js +34 -0
- package/dist/hearth/control-plane/registry.d.ts +17 -0
- package/dist/hearth/control-plane/registry.js +161 -0
- package/dist/hearth/control-plane/relay.d.ts +40 -0
- package/dist/hearth/control-plane/relay.js +642 -0
- package/dist/hearth/control-plane/scheduler/fire-store.d.ts +36 -0
- package/dist/hearth/control-plane/scheduler/fire-store.js +73 -0
- package/dist/hearth/control-plane/scheduler/recurrence.d.ts +7 -0
- package/dist/hearth/control-plane/scheduler/recurrence.js +58 -0
- package/dist/hearth/control-plane/scheduler/scan-loop.d.ts +38 -0
- package/dist/hearth/control-plane/scheduler/scan-loop.js +138 -0
- package/dist/hearth/control-plane/scheduler/schedule-store.d.ts +32 -0
- package/dist/hearth/control-plane/scheduler/schedule-store.js +66 -0
- package/dist/hearth/control-plane/secrets.d.ts +17 -0
- package/dist/hearth/control-plane/secrets.js +113 -0
- package/dist/hearth/control-plane/server.d.ts +27 -0
- package/dist/hearth/control-plane/server.js +346 -0
- package/dist/hearth/control-plane/session.d.ts +68 -0
- package/dist/hearth/control-plane/session.js +273 -0
- package/dist/hearth/control-plane/triggers/acl.d.ts +14 -0
- package/dist/hearth/control-plane/triggers/acl.js +52 -0
- package/dist/hearth/control-plane/triggers/audit-store.d.ts +38 -0
- package/dist/hearth/control-plane/triggers/audit-store.js +79 -0
- package/dist/hearth/control-plane/triggers/deliver.d.ts +43 -0
- package/dist/hearth/control-plane/triggers/deliver.js +76 -0
- package/dist/hearth/control-plane/triggers/envelope.d.ts +29 -0
- package/dist/hearth/control-plane/triggers/envelope.js +38 -0
- package/dist/hearth/control-plane/types.d.ts +66 -0
- package/dist/hearth/control-plane/types.js +1 -0
- package/dist/hearth/control-plane/wake.d.ts +80 -0
- package/dist/hearth/control-plane/wake.js +312 -0
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/anthropic-oauth.test.js +289 -0
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/config-timeout.test.js +34 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/guest-source.test.js +203 -0
- package/dist/hearth/wake-proxy/__tests__/hardening.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/hardening.test.js +59 -0
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/hearth-status-route.test.js +372 -0
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/http-running-route-fast-path.test.js +258 -0
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/model-auth-routes.test.js +437 -0
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/static-asset-allowlist.test.js +15 -0
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/warm-path-concurrency.test.js +141 -0
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.d.ts +1 -0
- package/dist/hearth/wake-proxy/__tests__/ws-teardown-accounting.test.js +143 -0
- package/dist/hearth/wake-proxy/anthropic-oauth.d.ts +58 -0
- package/dist/hearth/wake-proxy/anthropic-oauth.js +189 -0
- package/dist/hearth/wake-proxy/auth.d.ts +22 -0
- package/dist/hearth/wake-proxy/auth.js +128 -0
- package/dist/hearth/wake-proxy/config.d.ts +2 -0
- package/dist/hearth/wake-proxy/config.js +151 -0
- package/dist/hearth/wake-proxy/guest-source.d.ts +14 -0
- package/dist/hearth/wake-proxy/guest-source.js +130 -0
- package/dist/hearth/wake-proxy/hearth-status.d.ts +44 -0
- package/dist/hearth/wake-proxy/hearth-status.js +267 -0
- package/dist/hearth/wake-proxy/home.d.ts +61 -0
- package/dist/hearth/wake-proxy/home.js +333 -0
- package/dist/hearth/wake-proxy/main.d.ts +1 -0
- package/dist/hearth/wake-proxy/main.js +134 -0
- package/dist/hearth/wake-proxy/model-auth.d.ts +13 -0
- package/dist/hearth/wake-proxy/model-auth.js +345 -0
- package/dist/hearth/wake-proxy/proxy.d.ts +35 -0
- package/dist/hearth/wake-proxy/proxy.js +716 -0
- package/dist/hearth/wake-proxy/public-source-gate.d.ts +9 -0
- package/dist/hearth/wake-proxy/public-source-gate.js +409 -0
- package/dist/hearth/wake-proxy/redact.d.ts +1 -0
- package/dist/hearth/wake-proxy/redact.js +17 -0
- package/dist/hearth/wake-proxy/server.d.ts +11 -0
- package/dist/hearth/wake-proxy/server.js +142 -0
- package/dist/hearth/wake-proxy/state.d.ts +18 -0
- package/dist/hearth/wake-proxy/state.js +342 -0
- package/dist/hearth/wake-proxy/types.d.ts +76 -0
- package/dist/hearth/wake-proxy/types.js +1 -0
- package/dist/index.js +3 -2
- package/dist/pi-extensions/__tests__/canvas-context-intro.test.js +6 -5
- package/dist/pi-extensions/canvas-context-intro.js +7 -7
- package/dist/pi-extensions/canvas-doc-substrate.js +47 -24
- package/dist/pi-extensions/canvas-nav.js +16 -9
- package/dist/pi-extensions/canvas-stophook.d.ts +1 -1
- package/dist/pi-extensions/canvas-stophook.js +78 -11
- package/dist/prompts/view.js +7 -8
- package/dist/types.d.ts +39 -20
- package/dist/types.js +38 -13
- package/dist/web/runtime.js +141 -42
- package/dist/web/transport-http.js +7 -5
- package/dist/web/transport-stream.d.ts +3 -0
- package/dist/web/transport-stream.js +204 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-BYwT3kSJ.woff +0 -0
- package/dist/web-client/assets/fragment-mono-latin-400-normal-yxdJ5AmL.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-BbKYyvR9.woff2 +0 -0
- package/dist/web-client/assets/fragment-mono-latin-ext-400-normal-CT4YFKeK.woff +0 -0
- package/dist/web-client/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2 +0 -0
- package/dist/web-client/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2 +0 -0
- package/dist/web-client/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2 +0 -0
- package/dist/web-client/assets/index-BRKxe-hy.js +80 -0
- package/dist/web-client/assets/index-BZUxTkv5.css +2 -0
- package/dist/web-client/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2 +0 -0
- package/dist/web-client/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.woff2 +0 -0
- package/dist/web-client/assets/martian-mono-latin-wght-normal-5W32yIyr.woff2 +0 -0
- package/dist/web-client/index.html +3 -2
- package/package.json +37 -11
- package/scripts/postinstall.mjs +8 -0
- package/dist/clients/attach/__tests__/action-parity.test.js +0 -48
- package/dist/clients/attach/__tests__/clipboard-image.test.js +0 -76
- package/dist/clients/attach/__tests__/editor-newline.test.js +0 -82
- package/dist/clients/attach/__tests__/git-info.test.js +0 -31
- package/dist/clients/attach/__tests__/onrequest-wired.test.js +0 -20
- package/dist/clients/attach/__tests__/reconnect-giveup.test.js +0 -30
- package/dist/clients/attach/__tests__/slash-quit-copy.test.js +0 -42
- package/dist/clients/attach/__tests__/titled-editor.test.js +0 -39
- package/dist/commands/memory/__tests__/lint-schema.test.js +0 -52
- package/dist/core/__tests__/argv-parser.test.js +0 -217
- package/dist/core/__tests__/draw-style.test.js +0 -258
- package/dist/core/__tests__/error-stall-recycle.test.js +0 -141
- package/dist/core/__tests__/frame-decoder-perf.test.js +0 -224
- package/dist/core/__tests__/keystone.test.js +0 -185
- package/dist/core/__tests__/listing-completeness.test.js +0 -31
- package/dist/core/__tests__/memory-resolver.test.js +0 -108
- package/dist/core/__tests__/memory.test.js +0 -60
- package/dist/core/__tests__/pane-column.test.js +0 -153
- package/dist/core/__tests__/persona-compose.test.js +0 -53
- package/dist/core/__tests__/persona-subkind.test.js +0 -65
- package/dist/core/__tests__/persona.test.js +0 -107
- package/dist/core/__tests__/unknown-path.test.js +0 -58
- package/dist/core/canvas/wakeups.d.ts +0 -76
- package/dist/core/canvas/wakeups.js +0 -185
- package/dist/core/skill-sync/__tests__/dry-run-wrote-count.test.js +0 -57
- package/dist/core/skill-sync/builtins.js +0 -112
- package/dist/core/skill-sync/claude-plugins.d.ts +0 -23
- package/dist/core/skill-sync/claude-plugins.js +0 -71
- package/dist/core/skill-sync/engine.d.ts +0 -42
- package/dist/core/skill-sync/engine.js +0 -633
- package/dist/core/skill-sync/manifest.d.ts +0 -64
- package/dist/core/skill-sync/manifest.js +0 -181
- package/dist/core/skill-sync/profile.d.ts +0 -76
- package/dist/core/skill-sync/profile.js +0 -173
- package/dist/core/skill-sync/snapshot.d.ts +0 -57
- package/dist/core/skill-sync/snapshot.js +0 -120
- package/dist/pi-extensions/canvas-commands.d.ts +0 -37
- package/dist/pi-extensions/canvas-commands.js +0 -113
- package/dist/pi-extensions/canvas-resume.d.ts +0 -21
- package/dist/pi-extensions/canvas-resume.js +0 -83
- package/dist/pi-extensions/canvas-view.d.ts +0 -21
- package/dist/pi-extensions/canvas-view.js +0 -76
- package/dist/web-client/assets/index-BUvQb4hR.css +0 -2
- package/dist/web-client/assets/index-ClLQXYAE.js +0 -10
- /package/dist/clients/attach/__tests__/{action-parity.test.d.ts → crtr-output-coverage.test.d.ts} +0 -0
- /package/dist/clients/attach/__tests__/{clipboard-image.test.d.ts → crtr-output-render.test.d.ts} +0 -0
- /package/dist/clients/{attach/__tests__/editor-newline.test.d.ts → web/__tests__/source-cache.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/git-info.test.d.ts → commands/sys/__tests__/sync-import.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/onrequest-wired.test.d.ts → core/__tests__/boot.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/reconnect-giveup.test.d.ts → core/__tests__/broker-preflight.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/slash-quit-copy.test.d.ts → core/__tests__/chat-view-reconnect.test.d.ts} +0 -0
- /package/dist/{clients/attach/__tests__/titled-editor.test.d.ts → core/__tests__/connection-reconnect-resume.test.d.ts} +0 -0
- /package/dist/{commands/memory/__tests__/lint-schema.test.d.ts → core/__tests__/hearth-bootstrap.test.d.ts} +0 -0
- /package/dist/core/__tests__/{argv-parser.test.d.ts → preview-registry-sync.test.d.ts} +0 -0
- /package/dist/core/__tests__/{draw-style.test.d.ts → prune-to-limit.test.d.ts} +0 -0
- /package/dist/core/__tests__/{error-stall-recycle.test.d.ts → stranded-relaunch.test.d.ts} +0 -0
- /package/dist/core/__tests__/{frame-decoder-perf.test.d.ts → trigger-migration.test.d.ts} +0 -0
- /package/dist/core/__tests__/{keystone.test.d.ts → yield-ensures-daemon.test.d.ts} +0 -0
- /package/dist/core/{__tests__/listing-completeness.test.d.ts → hearth/__tests__/model-auth-guest.test.d.ts} +0 -0
- /package/dist/core/{__tests__/memory-resolver.test.d.ts → hearth/providers/types.js} +0 -0
- /package/dist/core/{__tests__/memory.test.d.ts → hearth/types.js} +0 -0
- /package/dist/core/{__tests__/pane-column.test.d.ts → host-exports/__tests__/export-prunes-boot-skill.test.d.ts} +0 -0
- /package/dist/core/{__tests__/persona-compose.test.d.ts → view/__tests__/transport-cache.test.d.ts} +0 -0
- /package/dist/{core/__tests__/persona-subkind.test.d.ts → daemon/__tests__/predicate-eval.test.d.ts} +0 -0
- /package/dist/{core/__tests__/persona.test.d.ts → hearth/control-plane/__tests__/node-message.test.d.ts} +0 -0
- /package/dist/{core/__tests__/unknown-path.test.d.ts → hearth/control-plane/__tests__/rate-limit-recurrence.test.d.ts} +0 -0
- /package/dist/{core/skill-sync/__tests__/dry-run-wrote-count.test.d.ts → hearth/control-plane/__tests__/relay-security.test.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// `crtr view cycle
|
|
1
|
+
// `crtr surface view cycle` — switch the view hosted in a monitor pane to the
|
|
2
2
|
// next/prev available view, in place. Backs the Alt+V then ] (next) / Alt+V
|
|
3
3
|
// then [ (prev) chord installed by installViewNavBindings, mirroring how
|
|
4
4
|
// `node cycle` backs Alt+] / Alt+[ for the node graph (view = the bracket
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// A view monitor pane is self-identifying: `view run` tags it with the tmux
|
|
8
8
|
// pane option @crtr_view=<id>. Cycle reads that tag, computes the next/prev id
|
|
9
9
|
// in `listViews()` order (the SAME set `view list` enumerates), and respawns
|
|
10
|
-
// the pane on
|
|
10
|
+
// the pane on the surface-view run command — `respawn-pane -k` kills the current
|
|
11
11
|
// view process and re-execs in the SAME pane (cycle itself runs in tmux's
|
|
12
12
|
// run-shell context, NOT inside the pane, so the kill never targets the caller).
|
|
13
13
|
// The respawned run re-tags the pane, so a rapid re-cycle reads the right id.
|
|
@@ -22,7 +22,7 @@ import { inTmux, currentTmux, getPaneOption, setPaneOption, paneCurrentPath, res
|
|
|
22
22
|
export const viewCycleLeaf = defineLeaf({
|
|
23
23
|
name: 'cycle',
|
|
24
24
|
description: 'switch the monitor pane to the next/prev view in place',
|
|
25
|
-
whenToUse: 'flipping a view monitor to the next
|
|
25
|
+
whenToUse: 'flipping a view monitor to the next or previous available view without re-running a command (bound to Alt+V then ] forward / Alt+V then [ back). The pane must already be hosting a view and the view list must contain a different target. Use run to open a specific view, or list to see the cycle order',
|
|
26
26
|
help: {
|
|
27
27
|
name: 'view cycle',
|
|
28
28
|
summary: 'switch the view hosted in a monitor pane to the next/previous available view, in place — the views walked one monitor at a time, in `view list` order (bound to Alt+V then ] forward / Alt+V then [ back)',
|
|
@@ -37,7 +37,7 @@ export const viewCycleLeaf = defineLeaf({
|
|
|
37
37
|
],
|
|
38
38
|
outputKind: 'object',
|
|
39
39
|
effects: [
|
|
40
|
-
'Respawns the target pane
|
|
40
|
+
'Respawns the target pane in place running the next view; the prior view process is replaced.',
|
|
41
41
|
'Re-tags the pane @crtr_view=<next-id>. No-op outside tmux or when the pane is not a view monitor.',
|
|
42
42
|
],
|
|
43
43
|
},
|
|
@@ -96,7 +96,7 @@ export const viewCycleLeaf = defineLeaf({
|
|
|
96
96
|
// the MONITOR (pane), not the view, and are harmless to views that ignore them.
|
|
97
97
|
const keepPort = getPaneOption(pane, '@crtr_view_port');
|
|
98
98
|
const keepTarget = getPaneOption(pane, '@crtr_view_target');
|
|
99
|
-
const argv = ['view', 'run', targetId];
|
|
99
|
+
const argv = ['surface', 'view', 'run', targetId];
|
|
100
100
|
if (keepPort !== undefined && keepPort !== '')
|
|
101
101
|
argv.push('--port', keepPort);
|
|
102
102
|
if (keepTarget !== undefined && keepTarget !== '')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// `crtr view list` — enumerate every resolvable view across scopes.
|
|
1
|
+
// `crtr surface view list` — enumerate every resolvable view across scopes.
|
|
2
2
|
//
|
|
3
3
|
// Lists id · title · description · scope. Loads each view's core.mjs to read its
|
|
4
4
|
// manifest title/description; a malformed view is shown with an error marker (it
|
|
@@ -9,7 +9,7 @@ import { listViews, loadCore } from '../core/view/loader.js';
|
|
|
9
9
|
export const viewListLeaf = defineLeaf({
|
|
10
10
|
name: 'list',
|
|
11
11
|
description: 'enumerate available views (id · title · description · scope)',
|
|
12
|
-
whenToUse: 'you want to see which views exist before running one — a flat roster across project, user, and builtin scopes. Pipeable plain text; pass --json for the raw array. Use
|
|
12
|
+
whenToUse: 'you want to see which views exist before running one — a flat roster across project, user, and builtin scopes. Pipeable plain text; pass --json for the raw array. Use run to open one and new to scaffold one',
|
|
13
13
|
help: {
|
|
14
14
|
name: 'view list',
|
|
15
15
|
summary: 'list every resolvable view (id, title, description, scope); pipeable plain text',
|
|
@@ -48,7 +48,7 @@ export const viewListLeaf = defineLeaf({
|
|
|
48
48
|
render: (result) => {
|
|
49
49
|
const rows = result['views'] ?? [];
|
|
50
50
|
if (rows.length === 0) {
|
|
51
|
-
return 'No views found. Scaffold one with
|
|
51
|
+
return 'No views found. Scaffold one with the view new leaf.';
|
|
52
52
|
}
|
|
53
53
|
const idW = Math.max(...rows.map((r) => r.id.length), 2);
|
|
54
54
|
const titleW = Math.max(...rows.map((r) => r.title.length), 5);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// `crtr view new
|
|
1
|
+
// `crtr surface view new` — scaffold a runnable dual-target view into a scope dir.
|
|
2
2
|
//
|
|
3
3
|
// Writes the four contract files (core.mjs + tui.mjs + web.jsx + text.mjs) under
|
|
4
4
|
// <viewsDir(scope)>/<name>/ from the stubs in prompts/view.ts (mkdir -p first).
|
|
5
5
|
// Refuses if a view of that name already resolves. The scaffold runs as-is via
|
|
6
|
-
//
|
|
7
|
-
//
|
|
6
|
+
// the surface view host (TUI/static) and the surface web server. Mirrors the
|
|
7
|
+
// scope → ensure dir → write → point-at-run shape of other authoring commands.
|
|
8
8
|
import { mkdirSync, existsSync } from 'node:fs';
|
|
9
9
|
import { writeFileSync } from 'node:fs';
|
|
10
10
|
import { join } from 'node:path';
|
|
@@ -16,7 +16,7 @@ import { viewScaffold } from '../prompts/view.js';
|
|
|
16
16
|
export const viewNewLeaf = defineLeaf({
|
|
17
17
|
name: 'new',
|
|
18
18
|
description: 'scaffold a runnable dual-target view directory into a scope dir',
|
|
19
|
-
whenToUse: 'you want to author a new view — this writes the four contract files (core.mjs + tui.mjs + web.jsx + text.mjs, with the contract documented inline) into the user or project scope, ready to open
|
|
19
|
+
whenToUse: 'you want to author a new view — this writes the four contract files (core.mjs + tui.mjs + web.jsx + text.mjs, with the contract documented inline) into the user or project scope, ready to open in either host and to edit from there. Reach for it to start a new view rather than hand-writing the directory',
|
|
20
20
|
help: {
|
|
21
21
|
name: 'view new',
|
|
22
22
|
summary: 'scaffold <viewsDir(scope)>/<name>/{core,tui,text}.mjs + web.jsx from the stubs; refuses if the name already resolves',
|
|
@@ -24,7 +24,7 @@ export const viewNewLeaf = defineLeaf({
|
|
|
24
24
|
{ kind: 'positional', name: 'name', required: true, constraint: 'View id / directory name. Must not already resolve as a view.' },
|
|
25
25
|
{ kind: 'flag', name: 'scope', type: 'enum', choices: ['user', 'project'], required: false, constraint: 'Where to scaffold. Default: project if available, else user.' },
|
|
26
26
|
{ kind: 'flag', name: 'title', type: 'string', required: false, constraint: 'Manifest title (header + picker). Default: the name.' },
|
|
27
|
-
{ kind: 'flag', name: 'description', type: 'string', required: false, constraint: 'Manifest description (picker
|
|
27
|
+
{ kind: 'flag', name: 'description', type: 'string', required: false, constraint: 'Manifest description (picker and list). Default: empty.' },
|
|
28
28
|
],
|
|
29
29
|
output: [
|
|
30
30
|
{ name: 'path', type: 'string', required: true, constraint: 'Absolute path to the scaffolded view directory.' },
|
|
@@ -69,6 +69,6 @@ export const viewNewLeaf = defineLeaf({
|
|
|
69
69
|
for (const [filename, content] of Object.entries(files)) {
|
|
70
70
|
writeFileSync(join(dir, filename), content, 'utf8');
|
|
71
71
|
}
|
|
72
|
-
return { path: dir, files: Object.keys(files), scope, run: `crtr view run ${name}` };
|
|
72
|
+
return { path: dir, files: Object.keys(files), scope, run: `crtr surface view run ${name}` };
|
|
73
73
|
},
|
|
74
74
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// `crtr view pick` — hidden raw-ANSI picker over the available views.
|
|
1
|
+
// `crtr surface view pick` — hidden raw-ANSI picker over the available views.
|
|
2
2
|
//
|
|
3
3
|
// Backs the /view popup: a minimal full-screen list of listViews(); j/k move,
|
|
4
|
-
// Enter hands off to
|
|
4
|
+
// Enter hands off to the surface-view run command (execFileSync, stdio inherit — a
|
|
5
5
|
// one-way handoff, the picker exits as the view takes over, same pattern as
|
|
6
6
|
// browse's selectAndFocus), q/Esc/Ctrl-C quit. Outside a TTY it prints the
|
|
7
7
|
// plain list and exits 0. Reuses the core/tui terminal + draw primitives.
|
|
@@ -14,7 +14,7 @@ export const viewPickLeaf = defineLeaf({
|
|
|
14
14
|
name: 'pick',
|
|
15
15
|
tier: 'hidden',
|
|
16
16
|
description: 'raw-ANSI view picker (used by the /view popup)',
|
|
17
|
-
whenToUse: 'internal — the
|
|
17
|
+
whenToUse: 'internal — the picker chooses a view for the popup, then hands off to the view host. You normally use run or list directly',
|
|
18
18
|
help: {
|
|
19
19
|
name: 'view pick',
|
|
20
20
|
summary: 'interactive picker over available views; Enter runs the chosen view. Outside a TTY it prints the list and exits',
|
|
@@ -23,7 +23,7 @@ export const viewPickLeaf = defineLeaf({
|
|
|
23
23
|
outputKind: 'object',
|
|
24
24
|
effects: [
|
|
25
25
|
'Inside a TTY: takes over the terminal in raw mode until you pick (Enter) or quit (q/Esc/Ctrl-C).',
|
|
26
|
-
'On Enter:
|
|
26
|
+
'On Enter: hands off to the chosen view host (stdio inherited) — a one-way handoff; the picker exits.',
|
|
27
27
|
'Outside a TTY: prints the plain view list and exits 0.',
|
|
28
28
|
],
|
|
29
29
|
},
|
|
@@ -38,7 +38,7 @@ export const viewPickLeaf = defineLeaf({
|
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
40
|
if (views.length === 0) {
|
|
41
|
-
process.stdout.write('No views found. Scaffold one with
|
|
41
|
+
process.stdout.write('No views found. Scaffold one with the view new leaf.\n');
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
44
|
const caps = detectColorCaps();
|
|
@@ -81,7 +81,7 @@ export const viewPickLeaf = defineLeaf({
|
|
|
81
81
|
const launch = (id) => {
|
|
82
82
|
cleanup();
|
|
83
83
|
try {
|
|
84
|
-
execFileSync('crtr', ['view', 'run', id], { stdio: 'inherit' });
|
|
84
|
+
execFileSync('crtr', ['surface', 'view', 'run', id], { stdio: 'inherit' });
|
|
85
85
|
}
|
|
86
86
|
catch {
|
|
87
87
|
// The view takes the terminal over; a sync handoff may be interrupted.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// `crtr view run
|
|
1
|
+
// `crtr surface view run` — resolve, load, and host a view's TUI target.
|
|
2
2
|
//
|
|
3
3
|
// Resolves the view across scopes (project→user→builtin), loads its core.mjs +
|
|
4
4
|
// tui.mjs (+ optional text.mjs), then hands them to the dual-target core host.
|
|
5
5
|
// The host owns the screen and the non-TTY path: when stdin is NOT a TTY it
|
|
6
|
-
// prints the text presenter's dump and exits 0, so
|
|
7
|
-
//
|
|
6
|
+
// prints the text presenter's dump and exits 0, so a pipe gets a static
|
|
7
|
+
// snapshot. A view that ships no core.mjs is not a view — run fails with a
|
|
8
8
|
// clear error naming the contract, never a fallback. The interactive path is
|
|
9
9
|
// tmux-only (crtr is tmux-only) — outside tmux with a TTY we notify + no-op,
|
|
10
10
|
// never a non-tmux fallback. --port / --target forward verbatim onto
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// --window / --split open the view as a PERSISTENT MONITOR instead of taking
|
|
14
14
|
// over the current pane: --window in a new background (non-focus-stealing)
|
|
15
15
|
// tmux window, --split in a right-hand split of the current pane. Both shell a
|
|
16
|
-
// plain inner
|
|
16
|
+
// plain inner surface-view run command into the new pane, which hosts the view
|
|
17
17
|
// there and self-tags the pane with @crtr_view so the Alt+V then ]/[ view-cycle
|
|
18
18
|
// can flip it to the next/prev view in place. Both are tmux-only by nature; in
|
|
19
19
|
// a pipe (non-TTY) placement is meaningless, so they degrade to the static dump.
|
|
@@ -27,7 +27,7 @@ import { inTmux, currentTmux, openNodeWindow, splitWindow, piCommand, setPaneOpt
|
|
|
27
27
|
export const viewRunLeaf = defineLeaf({
|
|
28
28
|
name: 'run',
|
|
29
29
|
description: 'resolve, load, and host a view (in this pane, a new window, or a split)',
|
|
30
|
-
whenToUse: 'you want to
|
|
30
|
+
whenToUse: 'you want to open a view by name — a full-screen raw-ANSI surface. By default it hosts in the current pane (tmux-only interactive; piped it prints a static snapshot). Pass --window to open it as a background monitor window, or --split to open it beside the current pane so it stays available as a live monitor. Pass --port/--target to forward connection details. Use list first to see what is available, or new to scaffold one',
|
|
31
31
|
help: {
|
|
32
32
|
name: 'view run',
|
|
33
33
|
summary: 'host a view in the current pane, a new window (--window), or a split (--split); outside a TTY it prints the view\'s static dump and exits 0',
|
|
@@ -35,8 +35,8 @@ export const viewRunLeaf = defineLeaf({
|
|
|
35
35
|
{ kind: 'positional', name: 'name', required: true, constraint: 'View id to run (its directory name). Resolves project→user→builtin.' },
|
|
36
36
|
{ kind: 'flag', name: 'window', type: 'bool', required: false, constraint: 'Open the view in a NEW background tmux window (non-focus-stealing) instead of the current pane — a persistent monitor. tmux-only; ignored (static dump) in a pipe. Mutually exclusive with --split.' },
|
|
37
37
|
{ kind: 'flag', name: 'split', type: 'bool', required: false, constraint: 'Open the view in a right-hand SPLIT of the current pane instead of taking it over — a side-by-side monitor. tmux-only; ignored (static dump) in a pipe. Mutually exclusive with --window.' },
|
|
38
|
-
{ kind: 'flag', name: 'port', type: 'int', required: false, constraint: 'Forwarded verbatim to the view as options.port
|
|
39
|
-
{ kind: 'flag', name: 'target', type: 'string', required: false, constraint: 'Forwarded verbatim to the view as options.target
|
|
38
|
+
{ kind: 'flag', name: 'port', type: 'int', required: false, constraint: 'Forwarded verbatim to the view as options.port for views that connect to a network service.' },
|
|
39
|
+
{ kind: 'flag', name: 'target', type: 'string', required: false, constraint: 'Forwarded verbatim to the view as options.target for views that need an external target identifier.' },
|
|
40
40
|
],
|
|
41
41
|
output: [
|
|
42
42
|
{ name: 'hosted', type: 'string', required: false, constraint: 'For --window/--split: "window" or "split" — where the monitor opened. Absent for an in-pane host (which holds the terminal until you quit).' },
|
|
@@ -76,7 +76,7 @@ export const viewRunLeaf = defineLeaf({
|
|
|
76
76
|
error: 'view_invalid',
|
|
77
77
|
message: `'${name}' is not a valid view: ${dir} has no core.mjs`,
|
|
78
78
|
received: name,
|
|
79
|
-
next:
|
|
79
|
+
next: 'A view is a directory containing core.mjs (the portable core) plus optional tui.mjs (render + keymap), web.jsx, and text.mjs. Use the surface view new leaf to scaffold the shape.',
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
const avail = listViews().map((v) => v.id);
|
|
@@ -85,8 +85,8 @@ export const viewRunLeaf = defineLeaf({
|
|
|
85
85
|
message: `no view: ${name}`,
|
|
86
86
|
received: name,
|
|
87
87
|
next: avail.length > 0
|
|
88
|
-
? `Available views: ${avail.join(', ')}. Or scaffold one with
|
|
89
|
-
:
|
|
88
|
+
? `Available views: ${avail.join(', ')}. Or scaffold one with the surface view new leaf.`
|
|
89
|
+
: 'No views found. Scaffold one with the surface view new leaf.',
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
const options = {};
|
|
@@ -116,7 +116,7 @@ export const viewRunLeaf = defineLeaf({
|
|
|
116
116
|
throw new InputError({
|
|
117
117
|
error: 'not_in_tmux',
|
|
118
118
|
message: '--window/--split are tmux-only — run crtr inside its tmux session',
|
|
119
|
-
next:
|
|
119
|
+
next: 'Open it from inside tmux, or drop the placement flag to host in the current pane. For a static snapshot, pipe the command output.',
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
const here = currentTmux();
|
|
@@ -129,7 +129,7 @@ export const viewRunLeaf = defineLeaf({
|
|
|
129
129
|
}
|
|
130
130
|
// The inner command re-enters this leaf with NO placement flag, so it
|
|
131
131
|
// hosts the view in its own (new) pane and self-tags it via @crtr_view.
|
|
132
|
-
const argv = ['view', 'run', name];
|
|
132
|
+
const argv = ['surface', 'view', 'run', name];
|
|
133
133
|
if (port !== undefined)
|
|
134
134
|
argv.push('--port', String(port));
|
|
135
135
|
if (target !== undefined)
|
|
@@ -164,8 +164,8 @@ export const viewRunLeaf = defineLeaf({
|
|
|
164
164
|
if (process.stdin.isTTY && !inTmux()) {
|
|
165
165
|
throw new InputError({
|
|
166
166
|
error: 'not_in_tmux',
|
|
167
|
-
message: 'crtr view is tmux-only — run it inside the crtr tmux session',
|
|
168
|
-
next:
|
|
167
|
+
message: 'crtr surface view is tmux-only — run it inside the crtr tmux session',
|
|
168
|
+
next: 'Open it from inside tmux, or pipe the command output for a static snapshot.',
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
// Self-tag this pane with the view id (+ any forwarded --port/--target) so
|
package/dist/commands/view.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// `crtr view` — the TUI view library.
|
|
1
|
+
// `crtr surface view` — the TUI view library.
|
|
2
2
|
//
|
|
3
3
|
// Views are switchable surfaces with two targets from one portable core.mjs:
|
|
4
4
|
// the tmux TUI (`run`) and a React+Tailwind web page. This branch assembles the
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// target (interactive in tmux, static dump when piped), `new` scaffolds a fresh
|
|
7
7
|
// view directory, and the hidden `pick` backs the /view popup. Each leaf owns
|
|
8
8
|
// its own help one level down. The web target is no longer served per-view here:
|
|
9
|
-
// it is hosted by the unified
|
|
9
|
+
// it is hosted by the unified surface web server (the shell's /view/<id> route).
|
|
10
10
|
import { defineBranch } from '../core/command.js';
|
|
11
11
|
import { viewListLeaf } from './view-list.js';
|
|
12
12
|
import { viewRunLeaf } from './view-run.js';
|
|
@@ -24,7 +24,7 @@ export function registerView() {
|
|
|
24
24
|
help: {
|
|
25
25
|
name: 'view',
|
|
26
26
|
summary: 'host and author switchable raw-ANSI terminal views',
|
|
27
|
-
model: '
|
|
27
|
+
model: 'The branch divides into listing, hosting, cycling, authoring, and the hidden picker. `list` is the roster; `run` hosts a named view in the current pane or a monitor pane; `cycle` advances a monitor in place; `new` scaffolds a view directory; `pick` backs the popup. The browser target is part of the web surface, not this branch.',
|
|
28
28
|
},
|
|
29
29
|
children: [viewListLeaf, viewRunLeaf, viewCycleLeaf, viewNewLeaf, viewPickLeaf],
|
|
30
30
|
});
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Turns the current tmux window into an editor view for attached headless nodes:
|
|
4
4
|
// a narrow LEFT rail (the `workspace-sidebar` view — this graph + other live
|
|
5
|
-
// agents in this cwd, with ⚑ inbox flags) beside a CHAT pane (
|
|
5
|
+
// agents in this cwd, with ⚑ inbox flags) beside a CHAT pane (surface attach).
|
|
6
6
|
// Selecting a node in the rail swaps it into the chat pane.
|
|
7
7
|
//
|
|
8
8
|
// Layout build (the only two driver acts, both through placement's seam):
|
|
9
9
|
// 1. splitWindow(here, before+size) → the rail pane, left of here, runs
|
|
10
|
-
//
|
|
10
|
+
// the workspace-sidebar view host.
|
|
11
11
|
// 2. `crtr node focus <node> --pane <here>` → swaps the chat node's attach
|
|
12
12
|
// viewer into here's slot (here's old content relocates to the backstage).
|
|
13
13
|
// The rail finds the chat pane by DISCOVERY (the `@crtr_node` tag attach sets),
|
|
14
14
|
// so it is robust to that swap — no launch-time pane id is threaded into it.
|
|
15
15
|
//
|
|
16
|
-
// Command shape:
|
|
17
|
-
//
|
|
16
|
+
// Command shape: under `crtr surface workspace`, this is a BRANCH wrapping one
|
|
17
|
+
// leaf: `enter`.
|
|
18
18
|
import { execFile } from 'node:child_process';
|
|
19
19
|
import { defineBranch, defineLeaf } from '../core/command.js';
|
|
20
20
|
import { InputError } from '../core/io.js';
|
|
@@ -37,10 +37,10 @@ function defaultChatNode(cwd) {
|
|
|
37
37
|
const workspaceEnterLeaf = defineLeaf({
|
|
38
38
|
name: 'enter',
|
|
39
39
|
description: 'enter the editor view — a node rail beside a chat pane, in this window',
|
|
40
|
-
whenToUse: 'you want to work in the agent-centric editor layout: a left rail listing this graph
|
|
40
|
+
whenToUse: 'you want to work in the agent-centric editor layout: a left rail listing this graph plus the other live agents in this working directory (with ⚑ inbox flags) beside a chat pane attached to a node. Selecting a node in the rail swaps it into the chat pane. Opens in the current tmux window. tmux-only.',
|
|
41
41
|
help: {
|
|
42
42
|
name: 'workspace enter',
|
|
43
|
-
summary: 'split the current window into a left node-rail (the workspace-sidebar view) + a chat pane (
|
|
43
|
+
summary: 'split the current window into a left node-rail (the workspace-sidebar view) + a chat pane (surface attach); ↵ in the rail swaps a node into the chat. tmux-only.',
|
|
44
44
|
params: [
|
|
45
45
|
{
|
|
46
46
|
kind: 'flag',
|
|
@@ -74,12 +74,12 @@ const workspaceEnterLeaf = defineLeaf({
|
|
|
74
74
|
const node = input['node'];
|
|
75
75
|
const width = input['width'] ?? RAIL_WIDTH;
|
|
76
76
|
if (!process.stdout.isTTY) {
|
|
77
|
-
return { note: '
|
|
77
|
+
return { note: 'surface workspace enter builds a tmux layout — run it in a tmux pane (a TTY), not a pipe.' };
|
|
78
78
|
}
|
|
79
79
|
if (!inTmux()) {
|
|
80
80
|
throw new InputError({
|
|
81
81
|
error: 'not_in_tmux',
|
|
82
|
-
message: '
|
|
82
|
+
message: 'surface workspace is tmux-only — run it inside the crtr tmux session',
|
|
83
83
|
next: 'Open it from inside tmux.',
|
|
84
84
|
});
|
|
85
85
|
}
|
|
@@ -109,7 +109,7 @@ const workspaceEnterLeaf = defineLeaf({
|
|
|
109
109
|
}
|
|
110
110
|
// 1. The rail — a narrow split to the LEFT of here. It discovers the chat
|
|
111
111
|
// pane itself (the @crtr_node tag), so no pane id is threaded in.
|
|
112
|
-
const railCmd = piCommand(['view', 'run', 'workspace-sidebar', '--target', here.pane], 'crtr');
|
|
112
|
+
const railCmd = piCommand(['surface', 'view', 'run', 'workspace-sidebar', '--target', here.pane], 'crtr');
|
|
113
113
|
const rail = splitWindow(here.pane, {
|
|
114
114
|
cwd: process.cwd(),
|
|
115
115
|
env: {},
|
|
@@ -154,7 +154,7 @@ export function registerWorkspace() {
|
|
|
154
154
|
help: {
|
|
155
155
|
name: 'workspace',
|
|
156
156
|
summary: 'enter the agent-centric editor view (node rail + chat pane) in the current tmux window',
|
|
157
|
-
model: '
|
|
157
|
+
model: 'The branch is a two-pane editor layout: a narrow left rail and a chat pane. The rail shows this graph plus the other live agents in the working directory, and selecting a node swaps it into chat. tmux-only; piped input prints a notice and exits 0.',
|
|
158
158
|
},
|
|
159
159
|
children: [workspaceEnterLeaf],
|
|
160
160
|
});
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Run with: node --import tsx/esm --test src/core/__tests__/boot.test.ts
|
|
2
|
+
//
|
|
3
|
+
// BUG LOCKED (Hearth P6 Bug B — a sandbox/VM destroy+recreate, or a host
|
|
4
|
+
// reboot, leaves stale `pi_pid` values in the durable canvas.db; a pid-reuse
|
|
5
|
+
// collision on the fresh boot can fool `isPidAlive` into reading a dead
|
|
6
|
+
// broker as alive, wedging the node forever). reconcileBootLiveness is the
|
|
7
|
+
// fix: detect the boot change and clear every stale pid BEFORE any liveness
|
|
8
|
+
// check trusts it.
|
|
9
|
+
//
|
|
10
|
+
// Exercises the pure decision core (bootChanged) and the impure, single-writer
|
|
11
|
+
// sweep (reconcileBootLiveness) against a real isolated CRTR_HOME + canvas.db —
|
|
12
|
+
// no real reboot, no real uptime: both take an injected BootIdentity (kernel
|
|
13
|
+
// boot_id + wall-clock epoch) so a boot change is simulated by handing a
|
|
14
|
+
// different identity between calls.
|
|
15
|
+
import { test, before, after, beforeEach } from 'node:test';
|
|
16
|
+
import assert from 'node:assert/strict';
|
|
17
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
18
|
+
import { tmpdir } from 'node:os';
|
|
19
|
+
import { join } from 'node:path';
|
|
20
|
+
import { createNode, getRow, recordPid } from '../canvas/canvas.js';
|
|
21
|
+
import { closeDb } from '../canvas/db.js';
|
|
22
|
+
import { bootChanged, reconcileBootLiveness } from '../canvas/boot.js';
|
|
23
|
+
let home;
|
|
24
|
+
/** Build a BootIdentity for injection. `bootId` null models the non-Linux
|
|
25
|
+
* fallback (wall-clock window); a string models the exact kernel boot_id. */
|
|
26
|
+
function ident(bootId, bootEpochMs) {
|
|
27
|
+
return { bootId, bootEpochMs };
|
|
28
|
+
}
|
|
29
|
+
function node(id, over = {}) {
|
|
30
|
+
return {
|
|
31
|
+
node_id: id,
|
|
32
|
+
name: id,
|
|
33
|
+
created: new Date().toISOString(),
|
|
34
|
+
cwd: '/tmp/work',
|
|
35
|
+
kind: 'developer',
|
|
36
|
+
mode: 'base',
|
|
37
|
+
lifecycle: 'terminal',
|
|
38
|
+
status: 'active',
|
|
39
|
+
...over,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
before(() => {
|
|
43
|
+
home = mkdtempSync(join(tmpdir(), 'crtr-boot-'));
|
|
44
|
+
process.env['CRTR_HOME'] = home;
|
|
45
|
+
});
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
closeDb();
|
|
48
|
+
rmSync(home, { recursive: true, force: true });
|
|
49
|
+
});
|
|
50
|
+
after(() => {
|
|
51
|
+
closeDb();
|
|
52
|
+
rmSync(home, { recursive: true, force: true });
|
|
53
|
+
delete process.env['CRTR_HOME'];
|
|
54
|
+
});
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// bootChanged — pure core
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
test('bootChanged: no persisted history is never a change (never clears a genuinely live pid)', () => {
|
|
59
|
+
assert.equal(bootChanged(ident('boot-A', 1_000_000), null), false);
|
|
60
|
+
});
|
|
61
|
+
test('bootChanged: same kernel boot_id is the SAME boot (daemon restart, no reboot)', () => {
|
|
62
|
+
assert.equal(bootChanged(ident('boot-A', 1_000_000 + 5_000), ident('boot-A', 1_000_000)), false, 'identical boot_id — same boot regardless of epoch');
|
|
63
|
+
});
|
|
64
|
+
test('bootChanged: a DIFFERENT boot_id under 60s wall-delta is still detected (Major-2 regression)', () => {
|
|
65
|
+
// A genuinely fast reboot/recreate: boot B starts only 42s after boot A
|
|
66
|
+
// (Hearth\'s measured recreate window), well inside the 60s wall tolerance.
|
|
67
|
+
// The exact kernel boot_id catches it with NO reliance on the wall-clock
|
|
68
|
+
// window — the case the old epoch-only compare false-negatived.
|
|
69
|
+
assert.equal(bootChanged(ident('boot-B', 1_000_000 + 42_000), ident('boot-A', 1_000_000)), true, 'distinct boot_id 42s apart — a real quick recreate, detected');
|
|
70
|
+
});
|
|
71
|
+
test('bootChanged: same boot_id with a huge epoch jump is NOT a boot change (NTP step within a boot)', () => {
|
|
72
|
+
assert.equal(bootChanged(ident('boot-A', 1_000_000 + 10 * 60_000), ident('boot-A', 1_000_000)), false, 'boot_id trumps the wall clock — an NTP correction mid-boot never false-positives');
|
|
73
|
+
});
|
|
74
|
+
test('bootChanged: wall-clock fallback (no boot_id) — epochs within tolerance are the SAME boot', () => {
|
|
75
|
+
assert.equal(bootChanged(ident(null, 1_000_000 + 5_000), ident(null, 1_000_000)), false, '5s drift — same boot');
|
|
76
|
+
});
|
|
77
|
+
test('bootChanged: wall-clock fallback (no boot_id) — epochs far apart are a DIFFERENT boot', () => {
|
|
78
|
+
assert.equal(bootChanged(ident(null, 1_000_000 + 10 * 60_000), ident(null, 1_000_000)), true, '10min apart — different boot');
|
|
79
|
+
});
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
// reconcileBootLiveness — the impure sweep against a real canvas.db
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
test('reconcileBootLiveness: first-ever call seeds the marker and clears nothing', () => {
|
|
84
|
+
const m = node('n1');
|
|
85
|
+
createNode(m);
|
|
86
|
+
recordPid('n1', 12345);
|
|
87
|
+
const result = reconcileBootLiveness(ident('boot-A', 1_000_000));
|
|
88
|
+
assert.deepEqual(result, { changed: false, cleared: [] });
|
|
89
|
+
assert.equal(getRow('n1')?.pi_pid, 12345, 'a first-ever run never clears an existing pid');
|
|
90
|
+
});
|
|
91
|
+
test('reconcileBootLiveness: same boot (same boot_id) leaves pids untouched — MUST NOT weaken the normal daemon-restart case', () => {
|
|
92
|
+
const m = node('n1');
|
|
93
|
+
createNode(m);
|
|
94
|
+
recordPid('n1', 12345);
|
|
95
|
+
reconcileBootLiveness(ident('boot-A', 1_000_000)); // seed
|
|
96
|
+
const result = reconcileBootLiveness(ident('boot-A', 1_000_000 + 3_000)); // 3s later, same boot
|
|
97
|
+
assert.deepEqual(result, { changed: false, cleared: [] });
|
|
98
|
+
assert.equal(getRow('n1')?.pi_pid, 12345, 'a live pid on the same boot is never cleared');
|
|
99
|
+
});
|
|
100
|
+
test('reconcileBootLiveness: a boot change clears every recorded pid, regardless of status', () => {
|
|
101
|
+
const active = node('active-1', { status: 'active' });
|
|
102
|
+
const idle = node('idle-1', { status: 'idle' });
|
|
103
|
+
const dead = node('dead-1', { status: 'dead' }); // the guard reads pi_pid unconditionally
|
|
104
|
+
const noPid = node('no-pid-1', { status: 'active' });
|
|
105
|
+
for (const m of [active, idle, dead, noPid])
|
|
106
|
+
createNode(m);
|
|
107
|
+
recordPid('active-1', 111);
|
|
108
|
+
recordPid('idle-1', 222);
|
|
109
|
+
recordPid('dead-1', 333);
|
|
110
|
+
// no-pid-1 deliberately left without a recorded pid.
|
|
111
|
+
reconcileBootLiveness(ident('boot-A', 1_000_000)); // seed boot A
|
|
112
|
+
const result = reconcileBootLiveness(ident('boot-B', 1_000_000 + 60 * 60_000)); // boot B
|
|
113
|
+
assert.equal(result.changed, true);
|
|
114
|
+
assert.deepEqual(result.cleared.sort(), ['active-1', 'dead-1', 'idle-1']);
|
|
115
|
+
assert.equal(getRow('active-1')?.pi_pid, null);
|
|
116
|
+
assert.equal(getRow('idle-1')?.pi_pid, null);
|
|
117
|
+
assert.equal(getRow('dead-1')?.pi_pid, null, 'cleared even though status is dead — the double-launch guard reads pi_pid unconditionally');
|
|
118
|
+
assert.equal(getRow('no-pid-1')?.pi_pid, null, 'already null — no-op, not an error');
|
|
119
|
+
});
|
|
120
|
+
test('reconcileBootLiveness: a fast recreate (distinct boot_id, 42s wall) still sweeps (Major-2 regression)', () => {
|
|
121
|
+
const m = node('n1');
|
|
122
|
+
createNode(m);
|
|
123
|
+
recordPid('n1', 111);
|
|
124
|
+
reconcileBootLiveness(ident('boot-A', 1_000_000)); // seed boot A
|
|
125
|
+
const result = reconcileBootLiveness(ident('boot-B', 1_000_000 + 42_000)); // 42s later — inside the wall window, but new boot_id
|
|
126
|
+
assert.equal(result.changed, true, 'distinct boot_id detected even 42s apart');
|
|
127
|
+
assert.deepEqual(result.cleared, ['n1']);
|
|
128
|
+
assert.equal(getRow('n1')?.pi_pid, null);
|
|
129
|
+
});
|
|
130
|
+
test('reconcileBootLiveness: after reconciling, the SAME boot no longer re-triggers (idempotent)', () => {
|
|
131
|
+
const m = node('n1');
|
|
132
|
+
createNode(m);
|
|
133
|
+
recordPid('n1', 111);
|
|
134
|
+
reconcileBootLiveness(ident('boot-A', 1_000_000)); // seed boot A
|
|
135
|
+
reconcileBootLiveness(ident('boot-B', 1_000_000 + 60 * 60_000)); // boot change → clears + persists boot B
|
|
136
|
+
recordPid('n1', 999); // a fresh broker re-records its pid post-revive
|
|
137
|
+
const result = reconcileBootLiveness(ident('boot-B', 1_000_000 + 60 * 60_000 + 2_000)); // still boot B, 2s later
|
|
138
|
+
assert.deepEqual(result, { changed: false, cleared: [] });
|
|
139
|
+
assert.equal(getRow('n1')?.pi_pid, 999, 'a pid recorded AFTER reconciliation, within the same boot, is never touched');
|
|
140
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Run with: node --import tsx/esm --test src/core/__tests__/broker-preflight.test.ts
|
|
2
|
+
//
|
|
3
|
+
// Bug-regression: preflight broker launch validation should resolve the default
|
|
4
|
+
// broker package, reject broken custom engines, and fail before a detached broker
|
|
5
|
+
// process is spawned when session args are invalid or missing.
|
|
6
|
+
import { test, before, after } from 'node:test';
|
|
7
|
+
import assert from 'node:assert/strict';
|
|
8
|
+
import { mkdtempSync, rmSync, readFileSync } from 'node:fs';
|
|
9
|
+
import { tmpdir } from 'node:os';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
import { preflightBrokerLaunch } from '../runtime/host.js';
|
|
13
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const FAKE_ENGINE = join(HERE, 'fixtures', 'fake-engine.ts');
|
|
15
|
+
let home;
|
|
16
|
+
before(() => {
|
|
17
|
+
home = mkdtempSync(join(tmpdir(), 'crtr-preflight-'));
|
|
18
|
+
process.env['CRTR_HOME'] = home;
|
|
19
|
+
});
|
|
20
|
+
after(() => {
|
|
21
|
+
rmSync(home, { recursive: true, force: true });
|
|
22
|
+
delete process.env['CRTR_HOME'];
|
|
23
|
+
});
|
|
24
|
+
function assertLaunchWrote(nodeId, inv) {
|
|
25
|
+
const launchPath = join(home, 'nodes', nodeId, 'broker-launch.json');
|
|
26
|
+
const parsed = JSON.parse(readFileSync(launchPath, 'utf8'));
|
|
27
|
+
assert.deepEqual(parsed, inv, 'the launch recipe exists and parses as JSON');
|
|
28
|
+
}
|
|
29
|
+
test('preflightBrokerLaunch uses the installed default broker package when no engine override is set', () => {
|
|
30
|
+
const nodeId = 'preflight-default-engine';
|
|
31
|
+
const inv = {
|
|
32
|
+
argv: ['hello'],
|
|
33
|
+
env: {},
|
|
34
|
+
};
|
|
35
|
+
const prev = process.env['CRTR_BROKER_ENGINE'];
|
|
36
|
+
delete process.env['CRTR_BROKER_ENGINE'];
|
|
37
|
+
try {
|
|
38
|
+
assert.doesNotThrow(() => preflightBrokerLaunch(nodeId, inv, '/tmp/work'));
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
if (prev === undefined)
|
|
42
|
+
delete process.env['CRTR_BROKER_ENGINE'];
|
|
43
|
+
else
|
|
44
|
+
process.env['CRTR_BROKER_ENGINE'] = prev;
|
|
45
|
+
}
|
|
46
|
+
assertLaunchWrote(nodeId, inv);
|
|
47
|
+
});
|
|
48
|
+
test('preflightBrokerLaunch fails fast when the broker engine module cannot be resolved', () => {
|
|
49
|
+
const nodeId = 'preflight-bad-engine';
|
|
50
|
+
const inv = {
|
|
51
|
+
argv: ['hello'],
|
|
52
|
+
env: { CRTR_BROKER_ENGINE: '@crouton-kit/does-not-exist' },
|
|
53
|
+
};
|
|
54
|
+
assert.throws(() => preflightBrokerLaunch(nodeId, inv, '/tmp/work'), /cannot resolve broker engine/i);
|
|
55
|
+
assertLaunchWrote(nodeId, inv);
|
|
56
|
+
});
|
|
57
|
+
test('preflightBrokerLaunch validates the exact broker engine env passed to the detached broker', () => {
|
|
58
|
+
const nodeId = 'preflight-empty-engine';
|
|
59
|
+
const inv = {
|
|
60
|
+
argv: ['hello'],
|
|
61
|
+
env: { CRTR_BROKER_ENGINE: ' ' },
|
|
62
|
+
};
|
|
63
|
+
assert.throws(() => preflightBrokerLaunch(nodeId, inv, '/tmp/work'), /cannot resolve broker engine/i);
|
|
64
|
+
assertLaunchWrote(nodeId, inv);
|
|
65
|
+
});
|
|
66
|
+
test('preflightBrokerLaunch fails fast when a bare --session id would be rejected by the broker', () => {
|
|
67
|
+
const nodeId = 'preflight-bare-session';
|
|
68
|
+
const inv = {
|
|
69
|
+
argv: ['--session', 'uuid-123'],
|
|
70
|
+
env: { CRTR_BROKER_ENGINE: FAKE_ENGINE },
|
|
71
|
+
};
|
|
72
|
+
assert.throws(() => preflightBrokerLaunch(nodeId, inv, '/tmp/work'), /bare --session id/i);
|
|
73
|
+
assertLaunchWrote(nodeId, inv);
|
|
74
|
+
});
|
|
75
|
+
test('preflightBrokerLaunch fails fast when a plainly-encoded session file path is missing', () => {
|
|
76
|
+
const nodeId = 'preflight-missing-session';
|
|
77
|
+
const inv = {
|
|
78
|
+
argv: ['--session', join(home, 'sessions', 'missing.jsonl')],
|
|
79
|
+
env: { CRTR_BROKER_ENGINE: FAKE_ENGINE },
|
|
80
|
+
};
|
|
81
|
+
assert.throws(() => preflightBrokerLaunch(nodeId, inv, '/tmp/work'), /missing session file/i);
|
|
82
|
+
const launchPath = join(home, 'nodes', nodeId, 'broker-launch.json');
|
|
83
|
+
const parsed = JSON.parse(readFileSync(launchPath, 'utf8'));
|
|
84
|
+
assert.deepEqual(parsed, inv, 'the launch recipe exists and parses as JSON');
|
|
85
|
+
});
|
|
@@ -12,9 +12,6 @@
|
|
|
12
12
|
// model provider is registered into the ModelRegistry and resolves onto
|
|
13
13
|
// the session. Plain createAgentSession never calls registerProvider, so a
|
|
14
14
|
// custom-provider node would get NO model.
|
|
15
|
-
// C4 — a project AGENTS.md is injected into the assembled system prompt (the
|
|
16
|
-
// services path loads project context; 0.78.1 has no project-trust gate so
|
|
17
|
-
// context is unconditionally loaded — see buildBrokerSession's C4 note).
|
|
18
15
|
// C2 — with ZERO viewers attached, the broker UI context resolves confirm() /
|
|
19
16
|
// select() / input() / editor() to deny/cancel IMMEDIATELY (noOp), instead
|
|
20
17
|
// of relying on a per-dialog timeout and hanging the agent turn forever.
|
|
@@ -23,7 +20,7 @@
|
|
|
23
20
|
// dialog routing are all local. No tmux, no broker process — direct unit drives.
|
|
24
21
|
import { test } from 'node:test';
|
|
25
22
|
import assert from 'node:assert/strict';
|
|
26
|
-
import { mkdtempSync,
|
|
23
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
27
24
|
import { tmpdir } from 'node:os';
|
|
28
25
|
import { join, dirname } from 'node:path';
|
|
29
26
|
import { fileURLToPath } from 'node:url';
|
|
@@ -71,20 +68,12 @@ test('C3 — services path registers an extension model provider; the broker ses
|
|
|
71
68
|
rmSync(cwd, { recursive: true, force: true });
|
|
72
69
|
}
|
|
73
70
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// services path loads project context files; on the 0.78.1 pin there is no
|
|
77
|
-
// project-trust gate, so they load unconditionally (and buildBrokerSession does
|
|
78
|
-
// NOT re-introduce the CLI's headless trust resolver, which would drop them).
|
|
79
|
-
// ===========================================================================
|
|
80
|
-
test('C4 — a project AGENTS.md is injected into the assembled system prompt', async () => {
|
|
81
|
-
const cwd = mkdtempSync(join(tmpdir(), 'crtr-c4-'));
|
|
71
|
+
test('C3b — broker splits model thinking suffix before SDK registry lookup', async () => {
|
|
72
|
+
const cwd = mkdtempSync(join(tmpdir(), 'crtr-c3b-'));
|
|
82
73
|
try {
|
|
83
|
-
const
|
|
84
|
-
writeFileSync(join(cwd, 'AGENTS.md'), `# Project rules\n\n${marker}\n`);
|
|
85
|
-
const { session } = await buildBrokerSession(realEngine, cfg(cwd));
|
|
74
|
+
const { session } = await buildBrokerSession(realEngine, cfg(cwd, { extensionPaths: [C3_EXT], model: 'c3prov/c3model:high' }));
|
|
86
75
|
try {
|
|
87
|
-
assert.
|
|
76
|
+
assert.equal(session.model?.id, 'c3model', 'C3b: suffixed model specs resolve by model id instead of falling back to SDK default');
|
|
88
77
|
}
|
|
89
78
|
finally {
|
|
90
79
|
session.dispose();
|
|
@@ -94,6 +83,11 @@ test('C4 — a project AGENTS.md is injected into the assembled system prompt',
|
|
|
94
83
|
rmSync(cwd, { recursive: true, force: true });
|
|
95
84
|
}
|
|
96
85
|
});
|
|
86
|
+
// (C4 — project AGENTS.md/CLAUDE.md injection — was removed: crouter now sets
|
|
87
|
+
// `noContextFiles: true` in buildBrokerSession and re-renders project context
|
|
88
|
+
// into the first-message <crtr-context> bearings instead of pi's system prompt
|
|
89
|
+
// (broker.ts). That behavior is covered by context-intro.test.ts's "project
|
|
90
|
+
// instructions ride the bearings, not the system prompt" test.)
|
|
97
91
|
// ===========================================================================
|
|
98
92
|
// C2 — zero-viewer dialogs resolve to deny/cancel IMMEDIATELY (noOp), never
|
|
99
93
|
// hanging the turn and never waiting on a per-dialog timeout. Drives the REAL
|