@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.
Files changed (246) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/LICENSE +29 -0
  3. package/README.md +920 -0
  4. package/dist/__test-helpers__.d.ts +95 -0
  5. package/dist/__test-helpers__.d.ts.map +1 -0
  6. package/dist/__test-helpers__.js +174 -0
  7. package/dist/__test-helpers__.js.map +1 -0
  8. package/dist/bin/pi-steering.d.ts +9 -0
  9. package/dist/bin/pi-steering.d.ts.map +1 -0
  10. package/dist/bin/pi-steering.js +506 -0
  11. package/dist/bin/pi-steering.js.map +1 -0
  12. package/dist/compat.d.ts +50 -0
  13. package/dist/compat.d.ts.map +1 -0
  14. package/dist/compat.js +180 -0
  15. package/dist/compat.js.map +1 -0
  16. package/dist/defaults.d.ts +61 -0
  17. package/dist/defaults.d.ts.map +1 -0
  18. package/dist/defaults.js +106 -0
  19. package/dist/defaults.js.map +1 -0
  20. package/dist/define-config.d.ts +235 -0
  21. package/dist/define-config.d.ts.map +1 -0
  22. package/dist/define-config.js +118 -0
  23. package/dist/define-config.js.map +1 -0
  24. package/dist/define-predicate.d.ts +49 -0
  25. package/dist/define-predicate.d.ts.map +1 -0
  26. package/dist/define-predicate.js +35 -0
  27. package/dist/define-predicate.js.map +1 -0
  28. package/dist/evaluator-internals/context.d.ts +186 -0
  29. package/dist/evaluator-internals/context.d.ts.map +1 -0
  30. package/dist/evaluator-internals/context.js +219 -0
  31. package/dist/evaluator-internals/context.js.map +1 -0
  32. package/dist/evaluator-internals/override.d.ts +19 -0
  33. package/dist/evaluator-internals/override.d.ts.map +1 -0
  34. package/dist/evaluator-internals/override.js +79 -0
  35. package/dist/evaluator-internals/override.js.map +1 -0
  36. package/dist/evaluator-internals/predicates.d.ts +152 -0
  37. package/dist/evaluator-internals/predicates.d.ts.map +1 -0
  38. package/dist/evaluator-internals/predicates.js +849 -0
  39. package/dist/evaluator-internals/predicates.js.map +1 -0
  40. package/dist/evaluator-internals/speculative-synthesis.d.ts +102 -0
  41. package/dist/evaluator-internals/speculative-synthesis.d.ts.map +1 -0
  42. package/dist/evaluator-internals/speculative-synthesis.js +101 -0
  43. package/dist/evaluator-internals/speculative-synthesis.js.map +1 -0
  44. package/dist/evaluator.d.ts +101 -0
  45. package/dist/evaluator.d.ts.map +1 -0
  46. package/dist/evaluator.js +714 -0
  47. package/dist/evaluator.js.map +1 -0
  48. package/dist/helpers/walker-unknown-cwd-reason.d.ts +68 -0
  49. package/dist/helpers/walker-unknown-cwd-reason.d.ts.map +1 -0
  50. package/dist/helpers/walker-unknown-cwd-reason.js +73 -0
  51. package/dist/helpers/walker-unknown-cwd-reason.js.map +1 -0
  52. package/dist/index.d.ts +42 -0
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +93 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/internal/drop-unused-observers.d.ts +43 -0
  57. package/dist/internal/drop-unused-observers.d.ts.map +1 -0
  58. package/dist/internal/drop-unused-observers.js +50 -0
  59. package/dist/internal/drop-unused-observers.js.map +1 -0
  60. package/dist/internal/finalize-plugin-state.d.ts +22 -0
  61. package/dist/internal/finalize-plugin-state.d.ts.map +1 -0
  62. package/dist/internal/finalize-plugin-state.js +14 -0
  63. package/dist/internal/finalize-plugin-state.js.map +1 -0
  64. package/dist/internal/merge-observers.d.ts +30 -0
  65. package/dist/internal/merge-observers.d.ts.map +1 -0
  66. package/dist/internal/merge-observers.js +27 -0
  67. package/dist/internal/merge-observers.js.map +1 -0
  68. package/dist/internal/pattern-utils.d.ts +33 -0
  69. package/dist/internal/pattern-utils.d.ts.map +1 -0
  70. package/dist/internal/pattern-utils.js +20 -0
  71. package/dist/internal/pattern-utils.js.map +1 -0
  72. package/dist/internal/ref-text.d.ts +11 -0
  73. package/dist/internal/ref-text.d.ts.map +1 -0
  74. package/dist/internal/ref-text.js +15 -0
  75. package/dist/internal/ref-text.js.map +1 -0
  76. package/dist/internal/session-runtime.d.ts +44 -0
  77. package/dist/internal/session-runtime.d.ts.map +1 -0
  78. package/dist/internal/session-runtime.js +143 -0
  79. package/dist/internal/session-runtime.js.map +1 -0
  80. package/dist/internal/watch-matcher.d.ts +56 -0
  81. package/dist/internal/watch-matcher.d.ts.map +1 -0
  82. package/dist/internal/watch-matcher.js +179 -0
  83. package/dist/internal/watch-matcher.js.map +1 -0
  84. package/dist/loader.d.ts +97 -0
  85. package/dist/loader.d.ts.map +1 -0
  86. package/dist/loader.js +527 -0
  87. package/dist/loader.js.map +1 -0
  88. package/dist/observer-dispatcher.d.ts +69 -0
  89. package/dist/observer-dispatcher.d.ts.map +1 -0
  90. package/dist/observer-dispatcher.js +184 -0
  91. package/dist/observer-dispatcher.js.map +1 -0
  92. package/dist/plugin-merger.d.ts +175 -0
  93. package/dist/plugin-merger.d.ts.map +1 -0
  94. package/dist/plugin-merger.js +450 -0
  95. package/dist/plugin-merger.js.map +1 -0
  96. package/dist/plugins/git/branch-tracker.d.ts +85 -0
  97. package/dist/plugins/git/branch-tracker.d.ts.map +1 -0
  98. package/dist/plugins/git/branch-tracker.js +181 -0
  99. package/dist/plugins/git/branch-tracker.js.map +1 -0
  100. package/dist/plugins/git/cwd-extensions.d.ts +10 -0
  101. package/dist/plugins/git/cwd-extensions.d.ts.map +1 -0
  102. package/dist/plugins/git/cwd-extensions.js +155 -0
  103. package/dist/plugins/git/cwd-extensions.js.map +1 -0
  104. package/dist/plugins/git/git-ops.d.ts +89 -0
  105. package/dist/plugins/git/git-ops.d.ts.map +1 -0
  106. package/dist/plugins/git/git-ops.js +107 -0
  107. package/dist/plugins/git/git-ops.js.map +1 -0
  108. package/dist/plugins/git/index.d.ts +225 -0
  109. package/dist/plugins/git/index.d.ts.map +1 -0
  110. package/dist/plugins/git/index.js +52 -0
  111. package/dist/plugins/git/index.js.map +1 -0
  112. package/dist/plugins/git/predicates.d.ts +312 -0
  113. package/dist/plugins/git/predicates.d.ts.map +1 -0
  114. package/dist/plugins/git/predicates.js +580 -0
  115. package/dist/plugins/git/predicates.js.map +1 -0
  116. package/dist/plugins/git/rules.d.ts +209 -0
  117. package/dist/plugins/git/rules.d.ts.map +1 -0
  118. package/dist/plugins/git/rules.js +267 -0
  119. package/dist/plugins/git/rules.js.map +1 -0
  120. package/dist/schema.d.ts +1799 -0
  121. package/dist/schema.d.ts.map +1 -0
  122. package/dist/schema.js +4 -0
  123. package/dist/schema.js.map +1 -0
  124. package/dist/testing/index.d.ts +621 -0
  125. package/dist/testing/index.d.ts.map +1 -0
  126. package/dist/testing/index.js +747 -0
  127. package/dist/testing/index.js.map +1 -0
  128. package/examples/README.md +83 -0
  129. package/examples/combined-git-discipline/README.md +52 -0
  130. package/examples/combined-git-discipline/node_modules/.bin/pi-steering +43 -0
  131. package/examples/combined-git-discipline/package.json +18 -0
  132. package/examples/combined-git-discipline/steering.json +27 -0
  133. package/examples/combined-git-discipline/steering.test.ts +42 -0
  134. package/examples/combined-git-discipline/steering.ts +64 -0
  135. package/examples/combined-git-discipline/tsconfig.json +7 -0
  136. package/examples/draft-prs-only/README.md +42 -0
  137. package/examples/draft-prs-only/node_modules/.bin/pi-steering +43 -0
  138. package/examples/draft-prs-only/package.json +18 -0
  139. package/examples/draft-prs-only/steering.json +12 -0
  140. package/examples/draft-prs-only/steering.test.ts +48 -0
  141. package/examples/draft-prs-only/steering.ts +36 -0
  142. package/examples/draft-prs-only/tsconfig.json +7 -0
  143. package/examples/dynamic-reason-runtime-cwd/README.md +148 -0
  144. package/examples/dynamic-reason-runtime-cwd/node_modules/.bin/pi-steering +43 -0
  145. package/examples/dynamic-reason-runtime-cwd/package.json +18 -0
  146. package/examples/dynamic-reason-runtime-cwd/steering.test.ts +130 -0
  147. package/examples/dynamic-reason-runtime-cwd/steering.ts +82 -0
  148. package/examples/dynamic-reason-runtime-cwd/tsconfig.json +7 -0
  149. package/examples/force-push-strict/README.md +75 -0
  150. package/examples/force-push-strict/node_modules/.bin/pi-steering +43 -0
  151. package/examples/force-push-strict/package.json +18 -0
  152. package/examples/force-push-strict/steering.json +12 -0
  153. package/examples/force-push-strict/steering.test.ts +51 -0
  154. package/examples/force-push-strict/steering.ts +54 -0
  155. package/examples/force-push-strict/tsconfig.json +7 -0
  156. package/examples/no-amend/README.md +52 -0
  157. package/examples/no-amend/node_modules/.bin/pi-steering +43 -0
  158. package/examples/no-amend/package.json +18 -0
  159. package/examples/no-amend/steering.cwd-scoped.json +12 -0
  160. package/examples/no-amend/steering.json +11 -0
  161. package/examples/no-amend/steering.test.ts +49 -0
  162. package/examples/no-amend/steering.ts +38 -0
  163. package/examples/no-amend/tsconfig.json +7 -0
  164. package/examples/work-item-plugin/README.md +103 -0
  165. package/examples/work-item-plugin/node_modules/.bin/pi-steering +43 -0
  166. package/examples/work-item-plugin/package.json +19 -0
  167. package/examples/work-item-plugin/src/index.test.ts +168 -0
  168. package/examples/work-item-plugin/src/index.ts +122 -0
  169. package/examples/work-item-plugin/src/observers/npm-test-tracker.test.ts +95 -0
  170. package/examples/work-item-plugin/src/observers/npm-test-tracker.ts +88 -0
  171. package/examples/work-item-plugin/src/observers/retest-required-tracker.test.ts +81 -0
  172. package/examples/work-item-plugin/src/observers/retest-required-tracker.ts +81 -0
  173. package/examples/work-item-plugin/src/predicates/work-item-format.test.ts +157 -0
  174. package/examples/work-item-plugin/src/predicates/work-item-format.ts +99 -0
  175. package/examples/work-item-plugin/src/rules/commit-description-check.test.ts +107 -0
  176. package/examples/work-item-plugin/src/rules/commit-description-check.ts +83 -0
  177. package/examples/work-item-plugin/src/rules/commit-requires-work-item.test.ts +79 -0
  178. package/examples/work-item-plugin/src/rules/commit-requires-work-item.ts +56 -0
  179. package/examples/work-item-plugin/src/rules/push-requires-tests.test.ts +245 -0
  180. package/examples/work-item-plugin/src/rules/push-requires-tests.ts +62 -0
  181. package/examples/work-item-plugin/tsconfig.json +8 -0
  182. package/package.json +88 -0
  183. package/skills/steering-authoring/SKILL.md +102 -0
  184. package/src/INVARIANTS.md +116 -0
  185. package/src/__test-helpers__.ts +243 -0
  186. package/src/bin/pi-steering.test.ts +920 -0
  187. package/src/bin/pi-steering.ts +584 -0
  188. package/src/compat.test.ts +431 -0
  189. package/src/compat.ts +282 -0
  190. package/src/defaults.test.ts +585 -0
  191. package/src/defaults.ts +148 -0
  192. package/src/define-config.test.ts +888 -0
  193. package/src/define-config.ts +375 -0
  194. package/src/define-predicate.test.ts +70 -0
  195. package/src/define-predicate.ts +57 -0
  196. package/src/evaluator-internals/context.ts +290 -0
  197. package/src/evaluator-internals/override.test.ts +99 -0
  198. package/src/evaluator-internals/override.ts +83 -0
  199. package/src/evaluator-internals/predicates.ts +1037 -0
  200. package/src/evaluator-internals/speculative-synthesis.test.ts +411 -0
  201. package/src/evaluator-internals/speculative-synthesis.ts +199 -0
  202. package/src/evaluator.test.ts +6296 -0
  203. package/src/evaluator.ts +1106 -0
  204. package/src/factory-time-load.test.ts +630 -0
  205. package/src/helpers/walker-unknown-cwd-reason.test.ts +73 -0
  206. package/src/helpers/walker-unknown-cwd-reason.ts +83 -0
  207. package/src/index.test.ts +836 -0
  208. package/src/index.ts +229 -0
  209. package/src/internal/drop-unused-observers.test.ts +141 -0
  210. package/src/internal/drop-unused-observers.ts +81 -0
  211. package/src/internal/finalize-plugin-state.ts +43 -0
  212. package/src/internal/merge-observers.ts +51 -0
  213. package/src/internal/pattern-utils.test.ts +52 -0
  214. package/src/internal/pattern-utils.ts +38 -0
  215. package/src/internal/ref-text.test.ts +54 -0
  216. package/src/internal/ref-text.ts +17 -0
  217. package/src/internal/session-runtime.test.ts +629 -0
  218. package/src/internal/session-runtime.ts +201 -0
  219. package/src/internal/watch-matcher.test.ts +326 -0
  220. package/src/internal/watch-matcher.ts +200 -0
  221. package/src/jsdoc-propagation.test.ts +277 -0
  222. package/src/loader.test.ts +1098 -0
  223. package/src/loader.ts +581 -0
  224. package/src/not-block-onunknown.test.ts +554 -0
  225. package/src/observer-dispatcher.test.ts +939 -0
  226. package/src/observer-dispatcher.ts +290 -0
  227. package/src/per-predicate-typing.test.ts +361 -0
  228. package/src/plugin-merger.test.ts +790 -0
  229. package/src/plugin-merger.ts +598 -0
  230. package/src/plugins/git/README.md +485 -0
  231. package/src/plugins/git/branch-tracker.test.ts +281 -0
  232. package/src/plugins/git/branch-tracker.ts +187 -0
  233. package/src/plugins/git/cwd-extensions.test.ts +230 -0
  234. package/src/plugins/git/cwd-extensions.ts +160 -0
  235. package/src/plugins/git/git-ops.test.ts +397 -0
  236. package/src/plugins/git/git-ops.ts +173 -0
  237. package/src/plugins/git/index.ts +253 -0
  238. package/src/plugins/git/integration.test.ts +705 -0
  239. package/src/plugins/git/predicates.test.ts +1401 -0
  240. package/src/plugins/git/predicates.ts +693 -0
  241. package/src/plugins/git/rules.test.ts +1001 -0
  242. package/src/plugins/git/rules.ts +307 -0
  243. package/src/schema.test.ts +259 -0
  244. package/src/schema.ts +1963 -0
  245. package/src/testing/index.test.ts +1696 -0
  246. package/src/testing/index.ts +1472 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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":"AAAA,+BAA+B;AAC/B,uBAAuB;AACvB,EAAE;AACF,4DAA4D;AAC5D,kEAAkE;AAClE,2DAA2D;AAC3D,iEAAiE;AACjE,mEAAmE;AACnE,0BAA0B;AAO1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAgB;IACrD,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAkB;QAC1B,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,WAAW,EAAE,EAAE,CAAC,WAAW;KAC5B,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE7E,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACxB,cAAc,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,GAAqB,EAAE,EAAE;QACvD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CACV,8BAA8B,GAAG,CAAC,GAAG,4BAA4B;gBAC/D,IAAI,SAAS,4CAA4C;gBACzD,2DAA2D;gBAC3D,8BAA8B,GAAG,CAAC,GAAG,GAAG,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAChC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,CAC/C,CAAC;IAEF,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAClC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,CAAC,CAChD,CAAC;AACJ,CAAC;AA0BD,iEAAiE;AACjE,0DAA0D;AAC1D,4BAA4B;AAC5B,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;AAC9B,0DAA0D;AAC1D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,yCAAyC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,mEAAmE;AACnE,qEAAqE;AACrE,6CAA6C;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,6DAA6D;AAC7D,2DAA2D;AAC3D,wBAAwB;AACxB,EAAE;AACF,gEAAgE;AAChE,8DAA8D;AAC9D,iDAAiD;AACjD,+DAA+D;AAC/D,qDAAqD;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,6CAA6C;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAgE3E,oEAAoE;AACpE,6DAA6D;AAC7D,6DAA6D;AAC7D,qEAAqE;AACrE,4DAA4D;AAC5D,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"}
@@ -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"}