@cad0p/pi-steering 0.1.0
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/CHANGELOG.md +36 -0
- package/LICENSE +29 -0
- package/README.md +920 -0
- package/dist/__test-helpers__.d.ts +95 -0
- package/dist/__test-helpers__.d.ts.map +1 -0
- package/dist/__test-helpers__.js +174 -0
- package/dist/__test-helpers__.js.map +1 -0
- package/dist/bin/pi-steering.d.ts +9 -0
- package/dist/bin/pi-steering.d.ts.map +1 -0
- package/dist/bin/pi-steering.js +506 -0
- package/dist/bin/pi-steering.js.map +1 -0
- package/dist/compat.d.ts +50 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +180 -0
- package/dist/compat.js.map +1 -0
- package/dist/defaults.d.ts +61 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +106 -0
- package/dist/defaults.js.map +1 -0
- package/dist/define-config.d.ts +235 -0
- package/dist/define-config.d.ts.map +1 -0
- package/dist/define-config.js +118 -0
- package/dist/define-config.js.map +1 -0
- package/dist/define-predicate.d.ts +49 -0
- package/dist/define-predicate.d.ts.map +1 -0
- package/dist/define-predicate.js +35 -0
- package/dist/define-predicate.js.map +1 -0
- package/dist/evaluator-internals/context.d.ts +186 -0
- package/dist/evaluator-internals/context.d.ts.map +1 -0
- package/dist/evaluator-internals/context.js +219 -0
- package/dist/evaluator-internals/context.js.map +1 -0
- package/dist/evaluator-internals/override.d.ts +19 -0
- package/dist/evaluator-internals/override.d.ts.map +1 -0
- package/dist/evaluator-internals/override.js +79 -0
- package/dist/evaluator-internals/override.js.map +1 -0
- package/dist/evaluator-internals/predicates.d.ts +152 -0
- package/dist/evaluator-internals/predicates.d.ts.map +1 -0
- package/dist/evaluator-internals/predicates.js +849 -0
- package/dist/evaluator-internals/predicates.js.map +1 -0
- package/dist/evaluator-internals/speculative-synthesis.d.ts +102 -0
- package/dist/evaluator-internals/speculative-synthesis.d.ts.map +1 -0
- package/dist/evaluator-internals/speculative-synthesis.js +101 -0
- package/dist/evaluator-internals/speculative-synthesis.js.map +1 -0
- package/dist/evaluator.d.ts +101 -0
- package/dist/evaluator.d.ts.map +1 -0
- package/dist/evaluator.js +714 -0
- package/dist/evaluator.js.map +1 -0
- package/dist/helpers/walker-unknown-cwd-reason.d.ts +68 -0
- package/dist/helpers/walker-unknown-cwd-reason.d.ts.map +1 -0
- package/dist/helpers/walker-unknown-cwd-reason.js +73 -0
- package/dist/helpers/walker-unknown-cwd-reason.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/drop-unused-observers.d.ts +43 -0
- package/dist/internal/drop-unused-observers.d.ts.map +1 -0
- package/dist/internal/drop-unused-observers.js +50 -0
- package/dist/internal/drop-unused-observers.js.map +1 -0
- package/dist/internal/finalize-plugin-state.d.ts +22 -0
- package/dist/internal/finalize-plugin-state.d.ts.map +1 -0
- package/dist/internal/finalize-plugin-state.js +14 -0
- package/dist/internal/finalize-plugin-state.js.map +1 -0
- package/dist/internal/merge-observers.d.ts +30 -0
- package/dist/internal/merge-observers.d.ts.map +1 -0
- package/dist/internal/merge-observers.js +27 -0
- package/dist/internal/merge-observers.js.map +1 -0
- package/dist/internal/pattern-utils.d.ts +33 -0
- package/dist/internal/pattern-utils.d.ts.map +1 -0
- package/dist/internal/pattern-utils.js +20 -0
- package/dist/internal/pattern-utils.js.map +1 -0
- package/dist/internal/ref-text.d.ts +11 -0
- package/dist/internal/ref-text.d.ts.map +1 -0
- package/dist/internal/ref-text.js +15 -0
- package/dist/internal/ref-text.js.map +1 -0
- package/dist/internal/session-runtime.d.ts +44 -0
- package/dist/internal/session-runtime.d.ts.map +1 -0
- package/dist/internal/session-runtime.js +143 -0
- package/dist/internal/session-runtime.js.map +1 -0
- package/dist/internal/watch-matcher.d.ts +56 -0
- package/dist/internal/watch-matcher.d.ts.map +1 -0
- package/dist/internal/watch-matcher.js +179 -0
- package/dist/internal/watch-matcher.js.map +1 -0
- package/dist/loader.d.ts +97 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +527 -0
- package/dist/loader.js.map +1 -0
- package/dist/observer-dispatcher.d.ts +69 -0
- package/dist/observer-dispatcher.d.ts.map +1 -0
- package/dist/observer-dispatcher.js +184 -0
- package/dist/observer-dispatcher.js.map +1 -0
- package/dist/plugin-merger.d.ts +175 -0
- package/dist/plugin-merger.d.ts.map +1 -0
- package/dist/plugin-merger.js +450 -0
- package/dist/plugin-merger.js.map +1 -0
- package/dist/plugins/git/branch-tracker.d.ts +85 -0
- package/dist/plugins/git/branch-tracker.d.ts.map +1 -0
- package/dist/plugins/git/branch-tracker.js +181 -0
- package/dist/plugins/git/branch-tracker.js.map +1 -0
- package/dist/plugins/git/cwd-extensions.d.ts +10 -0
- package/dist/plugins/git/cwd-extensions.d.ts.map +1 -0
- package/dist/plugins/git/cwd-extensions.js +155 -0
- package/dist/plugins/git/cwd-extensions.js.map +1 -0
- package/dist/plugins/git/git-ops.d.ts +89 -0
- package/dist/plugins/git/git-ops.d.ts.map +1 -0
- package/dist/plugins/git/git-ops.js +107 -0
- package/dist/plugins/git/git-ops.js.map +1 -0
- package/dist/plugins/git/index.d.ts +225 -0
- package/dist/plugins/git/index.d.ts.map +1 -0
- package/dist/plugins/git/index.js +52 -0
- package/dist/plugins/git/index.js.map +1 -0
- package/dist/plugins/git/predicates.d.ts +312 -0
- package/dist/plugins/git/predicates.d.ts.map +1 -0
- package/dist/plugins/git/predicates.js +580 -0
- package/dist/plugins/git/predicates.js.map +1 -0
- package/dist/plugins/git/rules.d.ts +209 -0
- package/dist/plugins/git/rules.d.ts.map +1 -0
- package/dist/plugins/git/rules.js +267 -0
- package/dist/plugins/git/rules.js.map +1 -0
- package/dist/schema.d.ts +1799 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +4 -0
- package/dist/schema.js.map +1 -0
- package/dist/testing/index.d.ts +621 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +747 -0
- package/dist/testing/index.js.map +1 -0
- package/examples/README.md +83 -0
- package/examples/combined-git-discipline/README.md +52 -0
- package/examples/combined-git-discipline/node_modules/.bin/pi-steering +43 -0
- package/examples/combined-git-discipline/package.json +18 -0
- package/examples/combined-git-discipline/steering.json +27 -0
- package/examples/combined-git-discipline/steering.test.ts +42 -0
- package/examples/combined-git-discipline/steering.ts +64 -0
- package/examples/combined-git-discipline/tsconfig.json +7 -0
- package/examples/draft-prs-only/README.md +42 -0
- package/examples/draft-prs-only/node_modules/.bin/pi-steering +43 -0
- package/examples/draft-prs-only/package.json +18 -0
- package/examples/draft-prs-only/steering.json +12 -0
- package/examples/draft-prs-only/steering.test.ts +48 -0
- package/examples/draft-prs-only/steering.ts +36 -0
- package/examples/draft-prs-only/tsconfig.json +7 -0
- package/examples/dynamic-reason-runtime-cwd/README.md +148 -0
- package/examples/dynamic-reason-runtime-cwd/node_modules/.bin/pi-steering +43 -0
- package/examples/dynamic-reason-runtime-cwd/package.json +18 -0
- package/examples/dynamic-reason-runtime-cwd/steering.test.ts +130 -0
- package/examples/dynamic-reason-runtime-cwd/steering.ts +82 -0
- package/examples/dynamic-reason-runtime-cwd/tsconfig.json +7 -0
- package/examples/force-push-strict/README.md +75 -0
- package/examples/force-push-strict/node_modules/.bin/pi-steering +43 -0
- package/examples/force-push-strict/package.json +18 -0
- package/examples/force-push-strict/steering.json +12 -0
- package/examples/force-push-strict/steering.test.ts +51 -0
- package/examples/force-push-strict/steering.ts +54 -0
- package/examples/force-push-strict/tsconfig.json +7 -0
- package/examples/no-amend/README.md +52 -0
- package/examples/no-amend/node_modules/.bin/pi-steering +43 -0
- package/examples/no-amend/package.json +18 -0
- package/examples/no-amend/steering.cwd-scoped.json +12 -0
- package/examples/no-amend/steering.json +11 -0
- package/examples/no-amend/steering.test.ts +49 -0
- package/examples/no-amend/steering.ts +38 -0
- package/examples/no-amend/tsconfig.json +7 -0
- package/examples/work-item-plugin/README.md +103 -0
- package/examples/work-item-plugin/node_modules/.bin/pi-steering +43 -0
- package/examples/work-item-plugin/package.json +19 -0
- package/examples/work-item-plugin/src/index.test.ts +168 -0
- package/examples/work-item-plugin/src/index.ts +122 -0
- package/examples/work-item-plugin/src/observers/npm-test-tracker.test.ts +95 -0
- package/examples/work-item-plugin/src/observers/npm-test-tracker.ts +88 -0
- package/examples/work-item-plugin/src/observers/retest-required-tracker.test.ts +81 -0
- package/examples/work-item-plugin/src/observers/retest-required-tracker.ts +81 -0
- package/examples/work-item-plugin/src/predicates/work-item-format.test.ts +157 -0
- package/examples/work-item-plugin/src/predicates/work-item-format.ts +99 -0
- package/examples/work-item-plugin/src/rules/commit-description-check.test.ts +107 -0
- package/examples/work-item-plugin/src/rules/commit-description-check.ts +83 -0
- package/examples/work-item-plugin/src/rules/commit-requires-work-item.test.ts +79 -0
- package/examples/work-item-plugin/src/rules/commit-requires-work-item.ts +56 -0
- package/examples/work-item-plugin/src/rules/push-requires-tests.test.ts +245 -0
- package/examples/work-item-plugin/src/rules/push-requires-tests.ts +62 -0
- package/examples/work-item-plugin/tsconfig.json +8 -0
- package/package.json +88 -0
- package/skills/steering-authoring/SKILL.md +102 -0
- package/src/INVARIANTS.md +116 -0
- package/src/__test-helpers__.ts +243 -0
- package/src/bin/pi-steering.test.ts +920 -0
- package/src/bin/pi-steering.ts +584 -0
- package/src/compat.test.ts +431 -0
- package/src/compat.ts +282 -0
- package/src/defaults.test.ts +585 -0
- package/src/defaults.ts +148 -0
- package/src/define-config.test.ts +888 -0
- package/src/define-config.ts +375 -0
- package/src/define-predicate.test.ts +70 -0
- package/src/define-predicate.ts +57 -0
- package/src/evaluator-internals/context.ts +290 -0
- package/src/evaluator-internals/override.test.ts +99 -0
- package/src/evaluator-internals/override.ts +83 -0
- package/src/evaluator-internals/predicates.ts +1037 -0
- package/src/evaluator-internals/speculative-synthesis.test.ts +411 -0
- package/src/evaluator-internals/speculative-synthesis.ts +199 -0
- package/src/evaluator.test.ts +6296 -0
- package/src/evaluator.ts +1106 -0
- package/src/factory-time-load.test.ts +630 -0
- package/src/helpers/walker-unknown-cwd-reason.test.ts +73 -0
- package/src/helpers/walker-unknown-cwd-reason.ts +83 -0
- package/src/index.test.ts +836 -0
- package/src/index.ts +229 -0
- package/src/internal/drop-unused-observers.test.ts +141 -0
- package/src/internal/drop-unused-observers.ts +81 -0
- package/src/internal/finalize-plugin-state.ts +43 -0
- package/src/internal/merge-observers.ts +51 -0
- package/src/internal/pattern-utils.test.ts +52 -0
- package/src/internal/pattern-utils.ts +38 -0
- package/src/internal/ref-text.test.ts +54 -0
- package/src/internal/ref-text.ts +17 -0
- package/src/internal/session-runtime.test.ts +629 -0
- package/src/internal/session-runtime.ts +201 -0
- package/src/internal/watch-matcher.test.ts +326 -0
- package/src/internal/watch-matcher.ts +200 -0
- package/src/jsdoc-propagation.test.ts +277 -0
- package/src/loader.test.ts +1098 -0
- package/src/loader.ts +581 -0
- package/src/not-block-onunknown.test.ts +554 -0
- package/src/observer-dispatcher.test.ts +939 -0
- package/src/observer-dispatcher.ts +290 -0
- package/src/per-predicate-typing.test.ts +361 -0
- package/src/plugin-merger.test.ts +790 -0
- package/src/plugin-merger.ts +598 -0
- package/src/plugins/git/README.md +485 -0
- package/src/plugins/git/branch-tracker.test.ts +281 -0
- package/src/plugins/git/branch-tracker.ts +187 -0
- package/src/plugins/git/cwd-extensions.test.ts +230 -0
- package/src/plugins/git/cwd-extensions.ts +160 -0
- package/src/plugins/git/git-ops.test.ts +397 -0
- package/src/plugins/git/git-ops.ts +173 -0
- package/src/plugins/git/index.ts +253 -0
- package/src/plugins/git/integration.test.ts +705 -0
- package/src/plugins/git/predicates.test.ts +1401 -0
- package/src/plugins/git/predicates.ts +693 -0
- package/src/plugins/git/rules.test.ts +1001 -0
- package/src/plugins/git/rules.ts +307 -0
- package/src/schema.test.ts +259 -0
- package/src/schema.ts +1963 -0
- package/src/testing/index.test.ts +1696 -0
- package/src/testing/index.ts +1472 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,uBAAuB;AAiDvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAEL,UAAU,EAEV,UAAU,EACV,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EAEX,KAAK,IAAI,SAAS,EAGlB,IAAI,GACL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,GAExB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAEL,4BAA4B,GAC7B,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAC;AAyBlE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAsB,EACtB,QAA6B,EAC7B,IAAmB;IAEnB,mEAAmE;IACnE,iEAAiE;IACjE,kDAAkD;IAClD,8DAA8D;IAC9D,0DAA0D;IAC1D,gDAAgD;IAChD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,qEAAqE;IACrE,qDAAqD;IACrD,6DAA6D;IAC7D,iEAAiE;IACjE,iEAAiE;IACjE,oEAAoE;IACpE,kEAAkE;IAClE,uDAAuD;IACvD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACtC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,sEAAsE;IACtE,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC;IAE3D,kEAAkE;IAClE,sEAAsE;IACtE,yDAAyD;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnC,MAAM,QAAQ,GAAoB,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;IAEjE,oEAAoE;IACpE,8DAA8D;IAC9D,kEAAkE;IAClE,iEAAiE;IACjE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,mEAAmE;IACnE,kEAAkE;IAClE,oEAAoE;IACpE,iDAAiD;IACjD,mEAAmE;IACnE,sEAAsE;IACtE,EAAE;IACF,gEAAgE;IAChE,6DAA6D;IAC7D,6DAA6D;IAC7D,mDAAmD;IACnD,gEAAgE;IAChE,mEAAmE;IACnE,8DAA8D;IAC9D,gBAAgB;IAChB,EAAE;IACF,oEAAoE;IACpE,8DAA8D;IAC9D,oEAAoE;IACpE,+CAA+C;IAC/C,MAAM,QAAQ,GAAqC;QACjD,GAAG,QAAQ,CAAC,gBAAgB;KAC7B,CAAC;IACF,IAAI,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3D,QAAQ,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,iBAAiB,CAAqB,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3D,QAAQ,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,iBAAiB,CAAqB,CAAC;IAC7E,CAAC;IAED,iEAAiE;IACjE,kEAAkE;IAClE,gDAAgD;IAChD,gEAAgE;IAChE,wDAAwD;IACxD,qEAAqE;IACrE,iEAAiE;IACjE,kEAAkE;IAClE,qEAAqE;IACrE,MAAM,YAAY,GAAG,uBAAuB,CAC1C,MAAM,CAAC,SAAS,IAAI,EAAE,EACtB,QAAQ,CAAC,SAAS,CACnB,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,CACvC,aAAa,CACX,KAAK,EACL,GAAG,EACH,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,QAAQ,CAAC,UAAU,EACnB,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,YAAY,CACb;KACJ,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,SAAS,iBAAiB,CACxB,MAAuD;IAEvD,OAAO,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CACxB,MAAuD;IAEvD,OAAO,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,cAAc,CACrB,WAAuB,EACvB,MAAuD;IAEvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC;IACpE,MAAM,MAAM,GAAgD,EAAE,CAAC;IAC/D,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,GAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5E,CAAC;IACD,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,IAAgC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,QAAQ,CAAC;gBACd,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1C,CAAC,CAAE,QAA0B;YAC7B,CAAC,CAAC,CAAC,QAAuB,CAAC,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,WAAW,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/C,CAAC;AAoBD;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CACvB,OAAe,EACf,UAAkB,EAClB,QAA0C,EAC1C,SAA8B;IAE9B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CACrB,MAAM,EACN,EAAE,GAAG,EAAE,UAAU,EAA6B,EAC9C,QAAQ,EACR,IAAI,CACL,CAAC;IACF,MAAM,iBAAiB,GACrB,4BAA4B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;YAC1C,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,IAAI,GAAG,EAAkB;SAC/B,CAAC;QACF,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO;YACL,GAAG;YACH,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;YACpB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;YAC1B,+DAA+D;YAC/D,gEAAgE;YAChE,wCAAwC;YACxC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;YACrB,uDAAuD;YACvD,wDAAwD;YACxD,8DAA8D;YAC9D,4DAA4D;YAC5D,gEAAgE;YAChE,8DAA8D;YAC9D,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChD,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAC,CAAC;YACH,8DAA8D;YAC9D,6DAA6D;YAC7D,6DAA6D;YAC7D,6DAA6D;YAC7D,iEAAiE;YACjE,uDAAuD;YACvD,EAAE;YACF,iEAAiE;YACjE,mEAAmE;YACnE,kEAAkE;YAClE,6DAA6D;YAC7D,iEAAiE;YACjE,2DAA2D;YAC3D,kEAAkE;YAClE,8DAA8D;YAC9D,4DAA4D;YAC5D,gDAAgD;YAChD,WAAW,EAAE;gBACX,GAAG,YAAY;gBACf,MAAM;aACiC;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,IAAU,EAAE,iBAA0B;IACjE,OAAO,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,KAAK,UAAU,YAAY,CACzB,IAAU,EACV,IAA+B,EAC/B,UAAmB,EACnB,MAAc,EACd,GAAqB;IAErB,MAAM,GAAG,GAAG,aAAa,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,mEAAmE;IACnE,wDAAwD;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3C,IAAI,UAAU;QAAE,OAAO,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,MAAM,IAAI,GACR,kCAAkC;QAClC,KAAK,MAAM,uBAAuB,IAAI,CAAC,IAAI,gBAAgB,CAAC;IAC9D,OAAO,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,KAAK,UAAU,iBAAiB,CAC9B,IAAU,EACV,MAAc,EACd,GAAqB;IAErB,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACxD,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GACP,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CACV,uBAAuB,IAAI,CAAC,IAAI,KAAK,MAAM,4BAA4B,GAAG,EAAE,CAC7E,CAAC;QACF,OAAO,oCAAoC,CAAC;IAC9C,CAAC;AACH,CAAC;AAoGD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,KAAK,UAAU,iBAAiB,CAC9B,IAAU,EACV,IAAe,EACf,MAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IACtD,IAAI,CAAC;QACH,+DAA+D;QAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5D,MAAM,GAAG,GAAqB;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS;gBAChC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;gBACnC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;QACtB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,IAAI,CAAC,IAAI,EACT,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EACjB,GAAG,EACH,MAAM,CAAC,UAAU,EACjB,IAAI,CAAC,IAAI,EACT,MAAM,CACP,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,2CAA2C,IAAI,CAAC,IAAI,KAAK,MAAM,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CACvF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,KAAK,UAAU,iBAAiB,CAC9B,IAAU,EACV,IAAe,EACf,MAAyB;IAEzB,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAEnC,mEAAmE;IACnE,YAAY;IACZ,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,qDAAqD;YACrD,6DAA6D;YAC7D,0DAA0D;YAC1D,6DAA6D;YAC7D,8DAA8D;YAC9D,+DAA+D;YAC/D,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE;gBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM;gBACN,GAAG,IAAI,CAAC,mBAAmB;gBAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YACH,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,kEAAkE;IAClE,qEAAqE;IACrE,mEAAmE;IACnE,mEAAmE;IACnE,qEAAqE;IACrE,yBAAyB;IACzB,EAAE;IACF,mEAAmE;IACnE,iEAAiE;IACjE,0DAA0D;IAC1D,mEAAmE;IACnE,kEAAkE;IAClE,iCAAiC;IACjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,kCAAkC,IAAI,CAAC,IAAI,YAAY,WAAW,CAAC,GAAG,CAAC,EAAE,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,MAAM,YAAY,CACxB,IAAI,EACJ,IAAI,CAAC,IAAI,EACT,UAAU,EACV,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,EACtC,GAAG,CACJ;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,KAAoB,EACpB,GAAqB,EACrB,cAAsB,EACtB,KAAsB,EACtB,QAA0C,EAC1C,UAA6C,EAC7C,IAAmB,EACnB,iBAA0B,EAC1B,WAAsC,EACtC,YAAiC;IAEjC,mEAAmE;IACnE,oEAAoE;IACpE,oEAAoE;IACpE,iEAAiE;IACjE,qDAAqD;IACrD,oEAAoE;IACpE,iEAAiE;IACjE,IAAI,CAAC;QACH,OAAO,MAAM,kBAAkB,CAC7B,KAAK,EACL,GAAG,EACH,cAAc,EACd,KAAK,EACL,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,YAAY,CACb,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EACJ,oDAAoD;gBACpD,kCAAkC;SACrC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,KAAoB,EACpB,GAAqB,EACrB,cAAsB,EACtB,KAAsB,EACtB,QAA0C,EAC1C,UAA6C,EAC7C,IAAmB,EACnB,iBAA0B,EAC1B,WAAsC,EACtC,YAAiC;IAEjC,+DAA+D;IAC/D,qEAAqE;IACrE,yDAAyD;IACzD,kDAAkD;IAClD,EAAE;IACF,mEAAmE;IACnE,kEAAkE;IAClE,iEAAiE;IACjE,6DAA6D;IAC7D,sEAAsE;IACtE,kCAAkC;IAClC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAExE,MAAM,MAAM,GAAsB;QAChC,cAAc;QACd,UAAU;QACV,IAAI;QACJ,WAAW;QACX,WAAW;QACX,IAAI;QACJ,iBAAiB;QACjB,WAAW;KACZ,CAAC;IAEF,iEAAiE;IACjE,IAAI,SAAS,GAA0B,IAAI,CAAC;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpE,oEAAoE;IACpE,sEAAsE;IACtE,iEAAiE;IACjE,6DAA6D;IAC7D,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,cAAc,GAAkB,IAAI,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ;YAAE,SAAS;QAE3C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS;gBAAE,SAAS;YACzB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,SAAS,GAAG,gBAAgB,CAC1B,SAAS,CAAC,KAAK,CAAC,OAAO,EACvB,GAAG,CAAC,GAAG,EACP,QAAQ,EACR,YAAY,CACb,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,EACJ,SAAS,CAAC,KAAK,CAAC,OAAO,EACvB,SAAS,EACT,MAAM,CACP,CAAC;YACF,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,IAAI,EACJ;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;gBAC5B,2DAA2D;gBAC3D,0DAA0D;gBAC1D,8CAA8C;gBAC9C,cAAc,EAAE,EAAE;aACnB,EACD,MAAM;YACN,wDAAwD;YACxD,oDAAoD;YACpD,KAAK,CAAC,KAAK,CAAC,OAAO,EACnB,KAAK,CAAC,KAAK,CAAC,IAAI,EAChB,GAAG,CAAC,GAAG,EACP,MAAM,CACP,CAAC;YACF,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC;YACtC,8DAA8D;YAC9D,gEAAgE;YAChE,4DAA4D;YAC5D,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,IAAI,EACJ;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI;gBAC1B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK;gBAC5B,sDAAsD;gBACtD,cAAc,EAAE,EAAE;aACnB,EACD,MAAM,EACN,cAAc,EACd,SAAS,CAAC,KAAK,CAAC,IAAI,EACpB,GAAG,CAAC,GAAG,EACP,MAAM,CACP,CAAC;YACF,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAC7B,IAAU,EACV,UAAkB,EAClB,KAAqB,EACrB,MAAyB;IAEzB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAc;YACtB,MAAM,EAAE,QAAQ,CAAC,IAAI;YACrB,GAAG,EACD,OAAO,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAC7C,CAAC,CAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAY;gBACzC,CAAC,CAAC,SAAS;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,QAAQ,CAAC,IAAI;gBACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,cAAc,EAAE,QAAQ,CAAC,cAAc;aACxC;YACD,eAAe,EAAE,UAAU;YAC3B,IAAI,EAAE,MAAM;YACZ,mBAAmB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YAC5C,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,IAAI,CAAC,KAAK,YAAY;YAAE,OAAO,SAAS,CAAC,CAAC,sCAAsC;QAChF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,qBAAqB,CAClC,IAAU,EACV,KAAyB,EACzB,MAAc,EACd,eAAuB,EACvB,IAAY,EACZ,UAAkB,EAClB,MAAyB;IAEzB,MAAM,IAAI,GAAc;QACtB,MAAM;QACN,GAAG,EAAE,UAAU;QACf,KAAK;QACL,eAAe;QACf,IAAI,EAAE,IAAI,CAAC,IAAwB;QACnC,mBAAmB,EAAE,EAAE,IAAI,EAAE;KAC9B,CAAC;IACF,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;;;;;GAYG;AACH,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;IACtE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { PredicateContext } from "../schema.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Generate the agent-facing reason text for the walker-unknown-cwd
|
|
4
|
+
* fail-closed branch on runtime-cwd predicates.
|
|
5
|
+
*
|
|
6
|
+
* The pattern: a rule consumes a runtime-cwd predicate (gitPlugin's
|
|
7
|
+
* `isClean` / `hasStagedChanges` / `remote` / `upstream` /
|
|
8
|
+
* `commitsAhead`, or any external plugin's runtime-cwd predicate).
|
|
9
|
+
* When the walker can't statically resolve cwd (e.g.,
|
|
10
|
+
* `cd "$VAR" && cmd`), the predicate's inline guard surfaces trinary
|
|
11
|
+
* `"unknown"`, the engine projects via the leaf-level (or block-level
|
|
12
|
+
* inside `not:`) `onUnknown:` policy — default `"block"` fires the
|
|
13
|
+
* rule. The rule's ReasonFn typically wants to:
|
|
14
|
+
*
|
|
15
|
+
* 1. Detect the walker-unknown case via
|
|
16
|
+
* `ctx.walkerState?.cwd === "unknown"`.
|
|
17
|
+
* 2. Emit a message explaining what couldn't be verified, where the
|
|
18
|
+
* shell actually is (`ctx.cwd`), and prompt a retry with a
|
|
19
|
+
* literal cwd target.
|
|
20
|
+
*
|
|
21
|
+
* This helper produces the generic message. Domain-specific retry
|
|
22
|
+
* guidance (e.g., "run cr from inside src/<Package>") composes at the
|
|
23
|
+
* call site by string concatenation.
|
|
24
|
+
*
|
|
25
|
+
* Signature shape: `ctx` first matches the `walkerString` convention.
|
|
26
|
+
* Reading `ctx.cwd` (not `process.cwd()`) keeps the helper pure,
|
|
27
|
+
* testable via {@link mockContext}, and accurate when pi runs
|
|
28
|
+
* predicates in sandboxed/forked contexts where `process.cwd()` may
|
|
29
|
+
* diverge from the engine-resolved cwd.
|
|
30
|
+
*
|
|
31
|
+
* Naming convention: `walkerUnknown<Dimension>Reason`. Each plugin
|
|
32
|
+
* owns its dimension's reason text. Cwd helper lives in pi-steering
|
|
33
|
+
* core. Future `walkerUnknownBranchReason` would live in gitPlugin
|
|
34
|
+
* alongside the branch tracker.
|
|
35
|
+
*
|
|
36
|
+
* @param ctx - the predicate context (passed through from the rule's
|
|
37
|
+
* ReasonFn).
|
|
38
|
+
* @param verifying - what the predicate was trying to verify
|
|
39
|
+
* (e.g., "branch", "upstream", "staged changes",
|
|
40
|
+
* "commit count"). Required, non-empty; empty is
|
|
41
|
+
* contract violation — not handled defensively.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { walkerUnknownCwdReason } from "@cad0p/pi-steering";
|
|
46
|
+
*
|
|
47
|
+
* export const myRule: Rule = {
|
|
48
|
+
* name: "deploy-requires-clean-tree",
|
|
49
|
+
* tool: "bash", field: "command",
|
|
50
|
+
* pattern: /^npm\s+run\s+deploy/,
|
|
51
|
+
* when: { isClean: false },
|
|
52
|
+
* reason: (ctx) => {
|
|
53
|
+
* if (ctx.walkerState?.cwd === "unknown") {
|
|
54
|
+
* return walkerUnknownCwdReason(ctx, "working tree status");
|
|
55
|
+
* }
|
|
56
|
+
* return "Working tree has uncommitted changes. Commit or stash first.";
|
|
57
|
+
* },
|
|
58
|
+
* };
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @remarks Inside a `not:` block, the runtime-cwd predicate's
|
|
62
|
+
* `"unknown"` composes with the block-level `onUnknown:`
|
|
63
|
+
* (default `"block"` = fail-CLOSED). See {@link
|
|
64
|
+
* TopLevelWhenClauseNoRecurse} for the not-block-modifier-
|
|
65
|
+
* placement contract.
|
|
66
|
+
*/
|
|
67
|
+
export declare function walkerUnknownCwdReason(ctx: PredicateContext, verifying: string): string;
|
|
68
|
+
//# sourceMappingURL=walker-unknown-cwd-reason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walker-unknown-cwd-reason.d.ts","sourceRoot":"","sources":["../../src/helpers/walker-unknown-cwd-reason.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,gBAAgB,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CAMR"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Part of pi-steering.
|
|
3
|
+
/**
|
|
4
|
+
* Generate the agent-facing reason text for the walker-unknown-cwd
|
|
5
|
+
* fail-closed branch on runtime-cwd predicates.
|
|
6
|
+
*
|
|
7
|
+
* The pattern: a rule consumes a runtime-cwd predicate (gitPlugin's
|
|
8
|
+
* `isClean` / `hasStagedChanges` / `remote` / `upstream` /
|
|
9
|
+
* `commitsAhead`, or any external plugin's runtime-cwd predicate).
|
|
10
|
+
* When the walker can't statically resolve cwd (e.g.,
|
|
11
|
+
* `cd "$VAR" && cmd`), the predicate's inline guard surfaces trinary
|
|
12
|
+
* `"unknown"`, the engine projects via the leaf-level (or block-level
|
|
13
|
+
* inside `not:`) `onUnknown:` policy — default `"block"` fires the
|
|
14
|
+
* rule. The rule's ReasonFn typically wants to:
|
|
15
|
+
*
|
|
16
|
+
* 1. Detect the walker-unknown case via
|
|
17
|
+
* `ctx.walkerState?.cwd === "unknown"`.
|
|
18
|
+
* 2. Emit a message explaining what couldn't be verified, where the
|
|
19
|
+
* shell actually is (`ctx.cwd`), and prompt a retry with a
|
|
20
|
+
* literal cwd target.
|
|
21
|
+
*
|
|
22
|
+
* This helper produces the generic message. Domain-specific retry
|
|
23
|
+
* guidance (e.g., "run cr from inside src/<Package>") composes at the
|
|
24
|
+
* call site by string concatenation.
|
|
25
|
+
*
|
|
26
|
+
* Signature shape: `ctx` first matches the `walkerString` convention.
|
|
27
|
+
* Reading `ctx.cwd` (not `process.cwd()`) keeps the helper pure,
|
|
28
|
+
* testable via {@link mockContext}, and accurate when pi runs
|
|
29
|
+
* predicates in sandboxed/forked contexts where `process.cwd()` may
|
|
30
|
+
* diverge from the engine-resolved cwd.
|
|
31
|
+
*
|
|
32
|
+
* Naming convention: `walkerUnknown<Dimension>Reason`. Each plugin
|
|
33
|
+
* owns its dimension's reason text. Cwd helper lives in pi-steering
|
|
34
|
+
* core. Future `walkerUnknownBranchReason` would live in gitPlugin
|
|
35
|
+
* alongside the branch tracker.
|
|
36
|
+
*
|
|
37
|
+
* @param ctx - the predicate context (passed through from the rule's
|
|
38
|
+
* ReasonFn).
|
|
39
|
+
* @param verifying - what the predicate was trying to verify
|
|
40
|
+
* (e.g., "branch", "upstream", "staged changes",
|
|
41
|
+
* "commit count"). Required, non-empty; empty is
|
|
42
|
+
* contract violation — not handled defensively.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* import { walkerUnknownCwdReason } from "@cad0p/pi-steering";
|
|
47
|
+
*
|
|
48
|
+
* export const myRule: Rule = {
|
|
49
|
+
* name: "deploy-requires-clean-tree",
|
|
50
|
+
* tool: "bash", field: "command",
|
|
51
|
+
* pattern: /^npm\s+run\s+deploy/,
|
|
52
|
+
* when: { isClean: false },
|
|
53
|
+
* reason: (ctx) => {
|
|
54
|
+
* if (ctx.walkerState?.cwd === "unknown") {
|
|
55
|
+
* return walkerUnknownCwdReason(ctx, "working tree status");
|
|
56
|
+
* }
|
|
57
|
+
* return "Working tree has uncommitted changes. Commit or stash first.";
|
|
58
|
+
* },
|
|
59
|
+
* };
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @remarks Inside a `not:` block, the runtime-cwd predicate's
|
|
63
|
+
* `"unknown"` composes with the block-level `onUnknown:`
|
|
64
|
+
* (default `"block"` = fail-CLOSED). See {@link
|
|
65
|
+
* TopLevelWhenClauseNoRecurse} for the not-block-modifier-
|
|
66
|
+
* placement contract.
|
|
67
|
+
*/
|
|
68
|
+
export function walkerUnknownCwdReason(ctx, verifying) {
|
|
69
|
+
return (`Could not verify ${verifying} — your command used a dynamic cwd ` +
|
|
70
|
+
`target that couldn't be statically resolved (current directory: ` +
|
|
71
|
+
`${ctx.cwd}). Retry with a literal path.`);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=walker-unknown-cwd-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walker-unknown-cwd-reason.js","sourceRoot":"","sources":["../../src/helpers/walker-unknown-cwd-reason.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,uBAAuB;AAOvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAqB,EACrB,SAAiB;IAEjB,OAAO,CACL,oBAAoB,SAAS,qCAAqC;QAClE,kEAAkE;QAClE,GAAG,GAAG,CAAC,GAAG,+BAA+B,CAC1C,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
/**
|
|
3
|
+
* Pi extension factory. Wires the steering engine onto pi's
|
|
4
|
+
* lifecycle events.
|
|
5
|
+
*
|
|
6
|
+
* Strict-mode contract: see {@link SteeringConfig.failOnWarnings}.
|
|
7
|
+
*
|
|
8
|
+
* Lifecycle wiring:
|
|
9
|
+
*
|
|
10
|
+
* - factory time — eager load via {@link buildSessionRuntime};
|
|
11
|
+
* throws on diagnostic per the strict-mode
|
|
12
|
+
* contract.
|
|
13
|
+
* - `agent_start` — bump the internal `agentLoopIndex` counter
|
|
14
|
+
* so tool_call / tool_result handlers can
|
|
15
|
+
* forward it into the evaluator + dispatcher.
|
|
16
|
+
* One agent loop = one user prompt + all the
|
|
17
|
+
* tool calls it spawns.
|
|
18
|
+
* - `session_start` — emit a `console.warn` if the resumed
|
|
19
|
+
* session's `ctx.cwd` differs from the launch
|
|
20
|
+
* cwd captured at factory time (cross-project
|
|
21
|
+
* resume). The engine continues evaluating
|
|
22
|
+
* with launch-cwd rules.
|
|
23
|
+
* - `tool_call` / `tool_result` route through the evaluator and
|
|
24
|
+
* dispatcher (see {@link buildSessionRuntime}).
|
|
25
|
+
*
|
|
26
|
+
* Exported as the default export per pi's extension convention.
|
|
27
|
+
*/
|
|
28
|
+
export default function register(pi: ExtensionAPI): Promise<void>;
|
|
29
|
+
export type { Command, CommandRef, EnvState, Modifier, Node, Script, SubshellSemantics, Tracker, WalkResult, Word, WordPart, } from "@cad0p/unbash-walker";
|
|
30
|
+
export { cwdTracker, envTracker, expandWrapperCommands, extractAllCommandsFromAST, formatCommand, getBasename, getCommandArgs, getCommandName, isStaticallyResolvable, parse, resolveWord, walk, } from "@cad0p/unbash-walker";
|
|
31
|
+
export { FromJSONError, fromJSON } from "./compat.ts";
|
|
32
|
+
export { DEFAULT_PLUGINS, DEFAULT_RULES } from "./defaults.ts";
|
|
33
|
+
export type { DefineConfigInput } from "./define-config.ts";
|
|
34
|
+
export { defineConfig } from "./define-config.ts";
|
|
35
|
+
export { definePredicate } from "./define-predicate.ts";
|
|
36
|
+
export { AGENT_LOOP_INDEX_KEY } from "./evaluator-internals/context.ts";
|
|
37
|
+
export { walkerUnknownCwdReason } from "./helpers/walker-unknown-cwd-reason.ts";
|
|
38
|
+
export { buildConfig, loadConfigs, loadSteeringConfig } from "./loader.ts";
|
|
39
|
+
export type { AnyPredicateHandler, BaseRule, BashRule, BuiltInWhenLeaves, BuiltInWhenLeavesInner, BuiltInWhenLeavesOuter, DefaultSpreadBase, EditRule, ExecOpts, ExecResult, InnerValue, Observer, ObserverContext, ObserverWatch, OperatorField, OuterValue, Pattern, Patterns, Plugin, PluginPredicateKey, PredicateContext, PredicateFn, PredicateHandler, PredicateModifiers, PredicateShape, PredicateToolInput, PredicateVerdict, ReasonFn, ReservedPredicateKey, Rule, SteeringConfig, SteeringDiagnostic, SteeringDiagnosticKind, ToolResultEvent, TopLevelWhenClause, TopLevelWhenClauseNoRecurse, WhenClause, WhenWalkerState, WriteRule, } from "./schema.ts";
|
|
40
|
+
export type { BashShorthand, CreateRecordingHostOptions, EditShorthand, ExpectBlocksOptions, Harness, LoadHarnessOptions, MatrixCase, MatrixCaseResult, MatrixResult, MockContextOptions, MockEntry, MockObserverContextOptions, PriorEntryOptions, RecordedExecCall, RecordedSessionEntry, RecordingHost, ToolCallShorthand, ToolResultShorthand, WriteShorthand, } from "./testing/index.ts";
|
|
41
|
+
export { createRecordingHost, expectAllows, expectBlocks, expectRuleFires, formatMatrix, getAppendedEntries, loadHarness, mockContext, mockExtensionContext, mockObserverContext, priorEntry, runMatrix, testObserver, testPredicate, } from "./testing/index.ts";
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AAIzC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAA8B,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCtE;AAaD,YAAY,EACV,OAAO,EACP,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,IAAI,EACJ,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,KAAK,EACL,WAAW,EACX,IAAI,GACL,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAUxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3E,YAAY,EACV,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,IAAI,EACJ,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,aAAa,EACb,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,OAAO,EACP,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,0BAA0B,EAC1B,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Part of pi-steering.
|
|
3
|
+
//
|
|
4
|
+
// pi-steering — deterministic steering hooks for pi agents.
|
|
5
|
+
// Inspired by @samfp/pi-steering-hooks (schema, override-comment,
|
|
6
|
+
// defaults). AST backend + command-level effective-cwd via
|
|
7
|
+
// unbash-walker. This file is the thin wiring layer between pi's
|
|
8
|
+
// extension API and the engine (loader + plugin-merger + evaluator
|
|
9
|
+
// + observer-dispatcher).
|
|
10
|
+
import { buildSessionRuntime } from "./internal/session-runtime.js";
|
|
11
|
+
/**
|
|
12
|
+
* Pi extension factory. Wires the steering engine onto pi's
|
|
13
|
+
* lifecycle events.
|
|
14
|
+
*
|
|
15
|
+
* Strict-mode contract: see {@link SteeringConfig.failOnWarnings}.
|
|
16
|
+
*
|
|
17
|
+
* Lifecycle wiring:
|
|
18
|
+
*
|
|
19
|
+
* - factory time — eager load via {@link buildSessionRuntime};
|
|
20
|
+
* throws on diagnostic per the strict-mode
|
|
21
|
+
* contract.
|
|
22
|
+
* - `agent_start` — bump the internal `agentLoopIndex` counter
|
|
23
|
+
* so tool_call / tool_result handlers can
|
|
24
|
+
* forward it into the evaluator + dispatcher.
|
|
25
|
+
* One agent loop = one user prompt + all the
|
|
26
|
+
* tool calls it spawns.
|
|
27
|
+
* - `session_start` — emit a `console.warn` if the resumed
|
|
28
|
+
* session's `ctx.cwd` differs from the launch
|
|
29
|
+
* cwd captured at factory time (cross-project
|
|
30
|
+
* resume). The engine continues evaluating
|
|
31
|
+
* with launch-cwd rules.
|
|
32
|
+
* - `tool_call` / `tool_result` route through the evaluator and
|
|
33
|
+
* dispatcher (see {@link buildSessionRuntime}).
|
|
34
|
+
*
|
|
35
|
+
* Exported as the default export per pi's extension convention.
|
|
36
|
+
*/
|
|
37
|
+
export default async function register(pi) {
|
|
38
|
+
let agentLoopIndex = 0;
|
|
39
|
+
const host = {
|
|
40
|
+
exec: pi.exec,
|
|
41
|
+
appendEntry: pi.appendEntry,
|
|
42
|
+
};
|
|
43
|
+
const launchCwd = process.cwd();
|
|
44
|
+
const { evaluator, dispatcher } = await buildSessionRuntime(launchCwd, host);
|
|
45
|
+
pi.on("agent_start", () => {
|
|
46
|
+
agentLoopIndex += 1;
|
|
47
|
+
});
|
|
48
|
+
pi.on("session_start", (_event, ctx) => {
|
|
49
|
+
if (ctx.cwd !== launchCwd) {
|
|
50
|
+
console.warn(`[pi-steering] session cwd (${ctx.cwd}) differs from launch cwd ` +
|
|
51
|
+
`(${launchCwd}). Steering rules loaded from launch cwd; ` +
|
|
52
|
+
`session-cwd rules NOT applied. To use session-cwd rules, ` +
|
|
53
|
+
`exit pi and re-launch from ${ctx.cwd}.`);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
pi.on("tool_call", (event, ctx) => evaluator.evaluate(event, ctx, agentLoopIndex));
|
|
57
|
+
pi.on("tool_result", (event, ctx) => dispatcher.dispatch(event, ctx, agentLoopIndex));
|
|
58
|
+
}
|
|
59
|
+
// Walker functions re-exported for plugin authors writing custom
|
|
60
|
+
// predicates and trackers. Forward-compatible with future
|
|
61
|
+
// unbash-walker extraction.
|
|
62
|
+
export { cwdTracker, envTracker, expandWrapperCommands, extractAllCommandsFromAST, formatCommand, getBasename, getCommandArgs, getCommandName, isStaticallyResolvable, parse, resolveWord, walk, } from "@cad0p/unbash-walker";
|
|
63
|
+
// JSON compat — convert v1 JSON configs to v2 TS configs.
|
|
64
|
+
export { FromJSONError, fromJSON } from "./compat.js";
|
|
65
|
+
// Defaults — bundled rule and plugin starter set.
|
|
66
|
+
export { DEFAULT_PLUGINS, DEFAULT_RULES } from "./defaults.js";
|
|
67
|
+
// Config helper (preferred entry point).
|
|
68
|
+
export { defineConfig } from "./define-config.js";
|
|
69
|
+
// Predicate helper.
|
|
70
|
+
export { definePredicate } from "./define-predicate.js";
|
|
71
|
+
// Auto-tag key for session-entry writes. Exposed so plugin authors
|
|
72
|
+
// inspecting raw session entries via `findEntries` can reference the
|
|
73
|
+
// constant instead of hardcoding the string.
|
|
74
|
+
export { AGENT_LOOP_INDEX_KEY } from "./evaluator-internals/context.js";
|
|
75
|
+
// Reason-text helper for custom predicates that read runtime
|
|
76
|
+
// `ctx.cwd` (shell-exec or filesystem queries) rather than
|
|
77
|
+
// walker-tracked state.
|
|
78
|
+
//
|
|
79
|
+
// `walkerUnknownCwdReason`: composable agent-facing reason text
|
|
80
|
+
// for ReasonFns to call on the walker-unknown branch of those
|
|
81
|
+
// runtime-cwd predicates (typical handler shape:
|
|
82
|
+
// `if (ctx.walkerState?.cwd === "unknown") return "unknown";`,
|
|
83
|
+
// then the engine projects via `onUnknown:` policy).
|
|
84
|
+
export { walkerUnknownCwdReason } from "./helpers/walker-unknown-cwd-reason.js";
|
|
85
|
+
// Loader — walk-up config discovery + merge.
|
|
86
|
+
export { buildConfig, loadConfigs, loadSteeringConfig } from "./loader.js";
|
|
87
|
+
// Testing primitives — re-exported at the root for discoverability.
|
|
88
|
+
// The canonical import path is `@cad0p/pi-steering/testing`;
|
|
89
|
+
// this root re-export means a test file that already imports
|
|
90
|
+
// `defineConfig` from the root doesn't need a second import line for
|
|
91
|
+
// `loadHarness`. See `./testing/index.ts` for the API docs.
|
|
92
|
+
export { createRecordingHost, expectAllows, expectBlocks, expectRuleFires, formatMatrix, getAppendedEntries, loadHarness, mockContext, mockExtensionContext, mockObserverContext, priorEntry, runMatrix, testObserver, testPredicate, } from "./testing/index.js";
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Observer-drop optimization.
|
|
3
|
+
*
|
|
4
|
+
* At config-build time, observers whose declared `writes: [...]` are
|
|
5
|
+
* entirely unconsumed by any rule's `happened.event` / `happened.since`
|
|
6
|
+
* can be dropped: they'd only fire on `tool_result` and write entries
|
|
7
|
+
* no rule ever reads. Dropping them skips both the write (cheaper
|
|
8
|
+
* session JSONL) and the speculative-synthesis contribution (no chain
|
|
9
|
+
* entries for events nobody consults).
|
|
10
|
+
*
|
|
11
|
+
* Observers with `writes === undefined` or `writes: []` are kept
|
|
12
|
+
* unconditionally — without a declaration we can't prove they're
|
|
13
|
+
* unused, and `[]` is conservative parity with undeclared. Plugin
|
|
14
|
+
* authors are encouraged to declare `writes` both for this
|
|
15
|
+
* optimization and for `defineConfig`'s compile-time type inference.
|
|
16
|
+
*
|
|
17
|
+
* Pure function — no logging. Callers (session-runtime, testing)
|
|
18
|
+
* log on drop so tests can inspect `dropped` directly without
|
|
19
|
+
* intercepting stdout.
|
|
20
|
+
*/
|
|
21
|
+
import type { Observer, Rule } from "../schema.ts";
|
|
22
|
+
/** An observer dropped by {@link dropUnusedObservers}. */
|
|
23
|
+
export interface DroppedObserver {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly writes: readonly string[];
|
|
26
|
+
readonly reason: "unused-writes";
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Partition `observers` into kept and dropped based on whether each
|
|
30
|
+
* observer's declared writes are consumed by any rule.
|
|
31
|
+
*
|
|
32
|
+
* @param observers - Observers to filter (any origin — plugin-merged
|
|
33
|
+
* or user-authored).
|
|
34
|
+
* @param rules - Full rule set whose `happened.event` / `happened.since`
|
|
35
|
+
* references determine consumption. Disabled rules should already
|
|
36
|
+
* be filtered out by the caller — this helper honors whatever's
|
|
37
|
+
* passed in.
|
|
38
|
+
*/
|
|
39
|
+
export declare function dropUnusedObservers(observers: readonly Observer[], rules: readonly Rule[]): {
|
|
40
|
+
kept: readonly Observer[];
|
|
41
|
+
dropped: readonly DroppedObserver[];
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=drop-unused-observers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drop-unused-observers.d.ts","sourceRoot":"","sources":["../../src/internal/drop-unused-observers.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEnD,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB;IAAE,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAA;CAAE,CAoBpE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Part of pi-steering.
|
|
3
|
+
/**
|
|
4
|
+
* Partition `observers` into kept and dropped based on whether each
|
|
5
|
+
* observer's declared writes are consumed by any rule.
|
|
6
|
+
*
|
|
7
|
+
* @param observers - Observers to filter (any origin — plugin-merged
|
|
8
|
+
* or user-authored).
|
|
9
|
+
* @param rules - Full rule set whose `happened.event` / `happened.since`
|
|
10
|
+
* references determine consumption. Disabled rules should already
|
|
11
|
+
* be filtered out by the caller — this helper honors whatever's
|
|
12
|
+
* passed in.
|
|
13
|
+
*/
|
|
14
|
+
export function dropUnusedObservers(observers, rules) {
|
|
15
|
+
const consumed = collectConsumedEvents(rules);
|
|
16
|
+
const kept = [];
|
|
17
|
+
const dropped = [];
|
|
18
|
+
for (const o of observers) {
|
|
19
|
+
if (o.writes === undefined || o.writes.length === 0) {
|
|
20
|
+
kept.push(o);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (o.writes.some((w) => consumed.has(w))) {
|
|
24
|
+
kept.push(o);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
dropped.push({
|
|
28
|
+
name: o.name,
|
|
29
|
+
writes: o.writes,
|
|
30
|
+
reason: "unused-writes",
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return { kept, dropped };
|
|
34
|
+
}
|
|
35
|
+
/** Collect every event referenced by any rule's `happened.event` /
|
|
36
|
+
* `happened.since`. Rules without `when.happened` contribute nothing. */
|
|
37
|
+
function collectConsumedEvents(rules) {
|
|
38
|
+
const consumed = new Set();
|
|
39
|
+
for (const rule of rules) {
|
|
40
|
+
const h = rule.when?.happened;
|
|
41
|
+
if (h === undefined)
|
|
42
|
+
continue;
|
|
43
|
+
if (typeof h.event === "string")
|
|
44
|
+
consumed.add(h.event);
|
|
45
|
+
if (typeof h.since === "string")
|
|
46
|
+
consumed.add(h.since);
|
|
47
|
+
}
|
|
48
|
+
return consumed;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=drop-unused-observers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drop-unused-observers.js","sourceRoot":"","sources":["../../src/internal/drop-unused-observers.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,uBAAuB;AAgCvB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAA8B,EAC9B,KAAsB;IAEtB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,eAAe;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED;0EAC0E;AAC1E,SAAS,qBAAqB,CAAC,KAAsB;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Late-stage plugin-state finalization shared by `buildSessionRuntime`,
|
|
3
|
+
* `loadHarness`, and the CLI `list` path. Centralizes the
|
|
4
|
+
* `dropUnusedObservers` + breadcrumb pass so all three stay byte-equal
|
|
5
|
+
* in their breadcrumb output and observer-drop semantics.
|
|
6
|
+
*
|
|
7
|
+
* Drops observers whose declared `writes` are unconsumed across both
|
|
8
|
+
* plugin-merged and user-authored streams, using the union of all
|
|
9
|
+
* rule `happened` references. Emits an `info`-level breadcrumb per
|
|
10
|
+
* dropped observer so plugin authors debugging "why isn't my
|
|
11
|
+
* observer firing?" have a trail to follow without it bubbling up as
|
|
12
|
+
* a diagnostic the user has to action.
|
|
13
|
+
*
|
|
14
|
+
* Callers must pre-filter `config.disabledRules` out of `userRules`
|
|
15
|
+
* — see {@link dropUnusedObservers}'s contract.
|
|
16
|
+
*/
|
|
17
|
+
import type { Observer, Rule } from "../schema.ts";
|
|
18
|
+
export declare function finalizePluginState(userRules: readonly Rule[], pluginRules: readonly Rule[], userObservers: readonly Observer[], pluginObservers: readonly Observer[]): {
|
|
19
|
+
pluginKept: readonly Observer[];
|
|
20
|
+
userKept: readonly Observer[];
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=finalize-plugin-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalize-plugin-state.d.ts","sourceRoot":"","sources":["../../src/internal/finalize-plugin-state.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGnD,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,SAAS,IAAI,EAAE,EAC1B,WAAW,EAAE,SAAS,IAAI,EAAE,EAC5B,aAAa,EAAE,SAAS,QAAQ,EAAE,EAClC,eAAe,EAAE,SAAS,QAAQ,EAAE,GACnC;IACD,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC/B,CAWA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Part of pi-steering.
|
|
3
|
+
import { dropUnusedObservers } from "./drop-unused-observers.js";
|
|
4
|
+
export function finalizePluginState(userRules, pluginRules, userObservers, pluginObservers) {
|
|
5
|
+
const allRules = [...userRules, ...pluginRules];
|
|
6
|
+
const pluginDrop = dropUnusedObservers(pluginObservers, allRules);
|
|
7
|
+
const userDrop = dropUnusedObservers(userObservers, allRules);
|
|
8
|
+
for (const d of [...pluginDrop.dropped, ...userDrop.dropped]) {
|
|
9
|
+
console.info(`[pi-steering] observer '${d.name}' dropped; its writes ` +
|
|
10
|
+
`(${d.writes.join(", ")}) are not consumed by any rule`);
|
|
11
|
+
}
|
|
12
|
+
return { pluginKept: pluginDrop.kept, userKept: userDrop.kept };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=finalize-plugin-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalize-plugin-state.js","sourceRoot":"","sources":["../../src/internal/finalize-plugin-state.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,uBAAuB;AAoBvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CACjC,SAA0B,EAC1B,WAA4B,EAC5B,aAAkC,EAClC,eAAoC;IAKpC,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,IAAI,CACV,2BAA2B,CAAC,CAAC,IAAI,wBAAwB;YACvD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAC1D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared observer-merge helper used by both the evaluator's reverse
|
|
3
|
+
* index (`when.happened` with `in: "tool_call"`) and the observer-dispatcher's
|
|
4
|
+
* fire list.
|
|
5
|
+
*
|
|
6
|
+
* Both callers need the same answer to the question "what observers
|
|
7
|
+
* does this config have, after resolving plugins and applying user
|
|
8
|
+
* overrides?" Keeping a single implementation here prevents silent
|
|
9
|
+
* drift — if the dispatcher drops a plugin observer because a user
|
|
10
|
+
* observer shadows it by name, the evaluator's reverse-index must do
|
|
11
|
+
* the same, or tool_call-scope speculative allow can grant on a watch
|
|
12
|
+
* pattern that will never actually fire.
|
|
13
|
+
*
|
|
14
|
+
* Merge semantics (must match `buildObserverDispatcher`):
|
|
15
|
+
* 1. User observers come first (user-wins on name collision).
|
|
16
|
+
* 2. Plugin observers fill in any names not already seen.
|
|
17
|
+
*
|
|
18
|
+
* The order mirrors the rule-list "user overrides plugin by declaring
|
|
19
|
+
* their own" pattern documented on `buildObserverDispatcher`.
|
|
20
|
+
*/
|
|
21
|
+
import type { Observer } from "../schema.ts";
|
|
22
|
+
/**
|
|
23
|
+
* Merge user-level and plugin-level observers into a single list with
|
|
24
|
+
* first-registered dedup by `name`. User observers always precede
|
|
25
|
+
* plugin observers of the same name.
|
|
26
|
+
*
|
|
27
|
+
* Returns a fresh array; neither input is mutated.
|
|
28
|
+
*/
|
|
29
|
+
export declare function mergeObserversUserFirst(userObservers: readonly Observer[], pluginObservers: readonly Observer[]): Observer[];
|
|
30
|
+
//# sourceMappingURL=merge-observers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-observers.d.ts","sourceRoot":"","sources":["../../src/internal/merge-observers.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,SAAS,QAAQ,EAAE,EAClC,eAAe,EAAE,SAAS,QAAQ,EAAE,GACnC,QAAQ,EAAE,CAcZ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Part of pi-steering.
|
|
3
|
+
/**
|
|
4
|
+
* Merge user-level and plugin-level observers into a single list with
|
|
5
|
+
* first-registered dedup by `name`. User observers always precede
|
|
6
|
+
* plugin observers of the same name.
|
|
7
|
+
*
|
|
8
|
+
* Returns a fresh array; neither input is mutated.
|
|
9
|
+
*/
|
|
10
|
+
export function mergeObserversUserFirst(userObservers, pluginObservers) {
|
|
11
|
+
const merged = [];
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
for (const o of userObservers) {
|
|
14
|
+
if (seen.has(o.name))
|
|
15
|
+
continue;
|
|
16
|
+
seen.add(o.name);
|
|
17
|
+
merged.push(o);
|
|
18
|
+
}
|
|
19
|
+
for (const o of pluginObservers) {
|
|
20
|
+
if (seen.has(o.name))
|
|
21
|
+
continue;
|
|
22
|
+
seen.add(o.name);
|
|
23
|
+
merged.push(o);
|
|
24
|
+
}
|
|
25
|
+
return merged;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=merge-observers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-observers.js","sourceRoot":"","sources":["../../src/internal/merge-observers.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,uBAAuB;AAyBvB;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,aAAkC,EAClC,eAAoC;IAEpC,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared pattern utilities reused across the engine and the gitPlugin's
|
|
3
|
+
* predicate handlers. Lives in `internal/` because both the engine
|
|
4
|
+
* (`evaluator-internals/predicates.ts`) and the gitPlugin
|
|
5
|
+
* (`plugins/git/predicates.ts`) need the same `Pattern` narrowing
|
|
6
|
+
* helper, and the engine cannot import from a plugin without inverting
|
|
7
|
+
* the dependency graph.
|
|
8
|
+
*
|
|
9
|
+
* The two normalization sites stay independent (the engine's
|
|
10
|
+
* `evaluateCwd` keeps its inline fast-path optimization for the
|
|
11
|
+
* single-pattern shorthand; the gitPlugin's `unwrapPatternArg`
|
|
12
|
+
* normalizes once and shares the result across `branch` / `upstream`
|
|
13
|
+
* / `remote`); only the type predicate is shared.
|
|
14
|
+
*/
|
|
15
|
+
import type { Pattern } from "../schema.ts";
|
|
16
|
+
/**
|
|
17
|
+
* Type predicate for {@link Pattern} (`string | RegExp`). Used by the
|
|
18
|
+
* pattern-valued predicates (`cwd`, `branch`, `upstream`, `remote`) to
|
|
19
|
+
* narrow `unknown[]` array elements to `Pattern[]` for safe iteration:
|
|
20
|
+
*
|
|
21
|
+
* if (Array.isArray(value) && value.every(isPattern)) {
|
|
22
|
+
* // value is Pattern[] here
|
|
23
|
+
* return value.some(p => matchesPattern(p, target));
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* Without the `v is Pattern` type predicate, the same expression
|
|
27
|
+
* (`value.every(v => typeof v === "string" || v instanceof RegExp)`)
|
|
28
|
+
* does NOT narrow `value` from `unknown[]` to `Pattern[]` — TypeScript
|
|
29
|
+
* needs the explicit type-predicate signature for the narrowing to
|
|
30
|
+
* propagate through `Array.isArray` + `.every`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const isPattern: (v: unknown) => v is Pattern;
|
|
33
|
+
//# sourceMappingURL=pattern-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-utils.d.ts","sourceRoot":"","sources":["../../src/internal/pattern-utils.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,OACE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Part of pi-steering.
|
|
3
|
+
/**
|
|
4
|
+
* Type predicate for {@link Pattern} (`string | RegExp`). Used by the
|
|
5
|
+
* pattern-valued predicates (`cwd`, `branch`, `upstream`, `remote`) to
|
|
6
|
+
* narrow `unknown[]` array elements to `Pattern[]` for safe iteration:
|
|
7
|
+
*
|
|
8
|
+
* if (Array.isArray(value) && value.every(isPattern)) {
|
|
9
|
+
* // value is Pattern[] here
|
|
10
|
+
* return value.some(p => matchesPattern(p, target));
|
|
11
|
+
* }
|
|
12
|
+
*
|
|
13
|
+
* Without the `v is Pattern` type predicate, the same expression
|
|
14
|
+
* (`value.every(v => typeof v === "string" || v instanceof RegExp)`)
|
|
15
|
+
* does NOT narrow `value` from `unknown[]` to `Pattern[]` — TypeScript
|
|
16
|
+
* needs the explicit type-predicate signature for the narrowing to
|
|
17
|
+
* propagate through `Array.isArray` + `.every`.
|
|
18
|
+
*/
|
|
19
|
+
export const isPattern = (v) => typeof v === "string" || v instanceof RegExp;
|
|
20
|
+
//# sourceMappingURL=pattern-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-utils.js","sourceRoot":"","sources":["../../src/internal/pattern-utils.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,uBAAuB;AAmBvB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAgB,EAAE,CACpD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,MAAM,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical stringification of a bash {@link CommandRef} for observer
|
|
3
|
+
* watch matching. Every call site must use this one implementation to
|
|
4
|
+
* avoid drift across observer-dispatch + speculative-entry synthesis.
|
|
5
|
+
*
|
|
6
|
+
* @internal — not part of the public pi-steering surface.
|
|
7
|
+
*/
|
|
8
|
+
import { type CommandRef } from "@cad0p/unbash-walker";
|
|
9
|
+
/** Render a ref as `"{basename} {args joined by space}"`, trimmed. */
|
|
10
|
+
export declare function refToText(ref: CommandRef): string;
|
|
11
|
+
//# sourceMappingURL=ref-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref-text.d.ts","sourceRoot":"","sources":["../../src/internal/ref-text.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,UAAU,EAA+B,MAAM,sBAAsB,CAAC;AAEpF,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEjD"}
|