@paths.design/caws-cli 11.1.6 → 11.1.8

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 (190) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +55 -58
  3. package/dist/init/hook-packs/manifest-claude-code.d.ts +1 -1
  4. package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -1
  5. package/dist/init/hook-packs/manifest-claude-code.js +317 -6
  6. package/dist/init/hook-packs/manifest-claude-code.js.map +1 -1
  7. package/dist/init/hook-packs/types.js +1 -1
  8. package/dist/init/hook-packs/types.js.map +1 -1
  9. package/dist/shell/binding/resolve-binding.d.ts.map +1 -1
  10. package/dist/shell/binding/resolve-binding.js +105 -1
  11. package/dist/shell/binding/resolve-binding.js.map +1 -1
  12. package/dist/shell/binding/types.d.ts +47 -3
  13. package/dist/shell/binding/types.d.ts.map +1 -1
  14. package/dist/shell/command-metadata.d.ts +93 -0
  15. package/dist/shell/command-metadata.d.ts.map +1 -0
  16. package/dist/shell/command-metadata.js +687 -0
  17. package/dist/shell/command-metadata.js.map +1 -0
  18. package/dist/shell/commands/agents.d.ts +48 -0
  19. package/dist/shell/commands/agents.d.ts.map +1 -0
  20. package/dist/shell/commands/agents.js +577 -0
  21. package/dist/shell/commands/agents.js.map +1 -0
  22. package/dist/shell/commands/claim.d.ts +16 -0
  23. package/dist/shell/commands/claim.d.ts.map +1 -1
  24. package/dist/shell/commands/claim.js +88 -30
  25. package/dist/shell/commands/claim.js.map +1 -1
  26. package/dist/shell/commands/events.d.ts +106 -0
  27. package/dist/shell/commands/events.d.ts.map +1 -0
  28. package/dist/shell/commands/events.js +510 -0
  29. package/dist/shell/commands/events.js.map +1 -0
  30. package/dist/shell/commands/gates.d.ts +2 -2
  31. package/dist/shell/commands/gates.d.ts.map +1 -1
  32. package/dist/shell/commands/gates.js +106 -25
  33. package/dist/shell/commands/gates.js.map +1 -1
  34. package/dist/shell/commands/init.d.ts.map +1 -1
  35. package/dist/shell/commands/init.js +26 -0
  36. package/dist/shell/commands/init.js.map +1 -1
  37. package/dist/shell/commands/prepush.d.ts +26 -0
  38. package/dist/shell/commands/prepush.d.ts.map +1 -0
  39. package/dist/shell/commands/prepush.js +373 -0
  40. package/dist/shell/commands/prepush.js.map +1 -0
  41. package/dist/shell/commands/scope.d.ts.map +1 -1
  42. package/dist/shell/commands/scope.js +31 -1
  43. package/dist/shell/commands/scope.js.map +1 -1
  44. package/dist/shell/commands/specs.d.ts +44 -3
  45. package/dist/shell/commands/specs.d.ts.map +1 -1
  46. package/dist/shell/commands/specs.js +411 -15
  47. package/dist/shell/commands/specs.js.map +1 -1
  48. package/dist/shell/commands/status.d.ts +12 -0
  49. package/dist/shell/commands/status.d.ts.map +1 -1
  50. package/dist/shell/commands/status.js +236 -21
  51. package/dist/shell/commands/status.js.map +1 -1
  52. package/dist/shell/commands/worktree.d.ts +9 -0
  53. package/dist/shell/commands/worktree.d.ts.map +1 -1
  54. package/dist/shell/commands/worktree.js +353 -1
  55. package/dist/shell/commands/worktree.js.map +1 -1
  56. package/dist/shell/gates/disposition.d.ts.map +1 -1
  57. package/dist/shell/gates/disposition.js +43 -2
  58. package/dist/shell/gates/disposition.js.map +1 -1
  59. package/dist/shell/index.d.ts +14 -6
  60. package/dist/shell/index.d.ts.map +1 -1
  61. package/dist/shell/index.js +32 -1
  62. package/dist/shell/index.js.map +1 -1
  63. package/dist/shell/legacy-command-map.js +832 -0
  64. package/dist/shell/push-range/classify-range.d.ts +99 -0
  65. package/dist/shell/push-range/classify-range.d.ts.map +1 -0
  66. package/dist/shell/push-range/classify-range.js +155 -0
  67. package/dist/shell/push-range/classify-range.js.map +1 -0
  68. package/dist/shell/push-range/scope-match.d.ts +13 -0
  69. package/dist/shell/push-range/scope-match.d.ts.map +1 -0
  70. package/dist/shell/push-range/scope-match.js +53 -0
  71. package/dist/shell/push-range/scope-match.js.map +1 -0
  72. package/dist/shell/register.d.ts.map +1 -1
  73. package/dist/shell/register.js +350 -165
  74. package/dist/shell/register.js.map +1 -1
  75. package/dist/shell/registered-command-groups.js +48 -0
  76. package/dist/shell/render/status.d.ts +7 -1
  77. package/dist/shell/render/status.d.ts.map +1 -1
  78. package/dist/shell/render/status.js +72 -0
  79. package/dist/shell/render/status.js.map +1 -1
  80. package/dist/shell/rules.d.ts +19 -0
  81. package/dist/shell/rules.d.ts.map +1 -1
  82. package/dist/shell/rules.js +27 -0
  83. package/dist/shell/rules.js.map +1 -1
  84. package/dist/shell/session/resolve-session.d.ts +29 -1
  85. package/dist/shell/session/resolve-session.d.ts.map +1 -1
  86. package/dist/shell/session/resolve-session.js +817 -11
  87. package/dist/shell/session/resolve-session.js.map +1 -1
  88. package/dist/shell/session/types.d.ts +127 -1
  89. package/dist/shell/session/types.d.ts.map +1 -1
  90. package/dist/shell/session/types.js +10 -4
  91. package/dist/shell/session/types.js.map +1 -1
  92. package/dist/store/agents-store.d.ts.map +1 -1
  93. package/dist/store/agents-store.js +9 -0
  94. package/dist/store/agents-store.js.map +1 -1
  95. package/dist/store/apply-patch.d.ts.map +1 -1
  96. package/dist/store/apply-patch.js +15 -0
  97. package/dist/store/apply-patch.js.map +1 -1
  98. package/dist/store/doctor-snapshot.d.ts.map +1 -1
  99. package/dist/store/doctor-snapshot.js +169 -3
  100. package/dist/store/doctor-snapshot.js.map +1 -1
  101. package/dist/store/events-migration.d.ts +207 -0
  102. package/dist/store/events-migration.d.ts.map +1 -0
  103. package/dist/store/events-migration.js +358 -0
  104. package/dist/store/events-migration.js.map +1 -0
  105. package/dist/store/events-store.d.ts +47 -1
  106. package/dist/store/events-store.d.ts.map +1 -1
  107. package/dist/store/events-store.js +278 -0
  108. package/dist/store/events-store.js.map +1 -1
  109. package/dist/store/git-autocommit.d.ts +46 -0
  110. package/dist/store/git-autocommit.d.ts.map +1 -0
  111. package/dist/store/git-autocommit.js +198 -0
  112. package/dist/store/git-autocommit.js.map +1 -0
  113. package/dist/store/git-sparse-checkout.d.ts +25 -0
  114. package/dist/store/git-sparse-checkout.d.ts.map +1 -0
  115. package/dist/store/git-sparse-checkout.js +101 -0
  116. package/dist/store/git-sparse-checkout.js.map +1 -0
  117. package/dist/store/index.d.ts +6 -1
  118. package/dist/store/index.d.ts.map +1 -1
  119. package/dist/store/index.js +16 -1
  120. package/dist/store/index.js.map +1 -1
  121. package/dist/store/leases-store.d.ts +89 -0
  122. package/dist/store/leases-store.d.ts.map +1 -0
  123. package/dist/store/leases-store.js +427 -0
  124. package/dist/store/leases-store.js.map +1 -0
  125. package/dist/store/lifecycle-transaction.d.ts.map +1 -1
  126. package/dist/store/lifecycle-transaction.js +34 -1
  127. package/dist/store/lifecycle-transaction.js.map +1 -1
  128. package/dist/store/rules.d.ts +74 -1
  129. package/dist/store/rules.d.ts.map +1 -1
  130. package/dist/store/rules.js +76 -0
  131. package/dist/store/rules.js.map +1 -1
  132. package/dist/store/specs-migration.d.ts +128 -0
  133. package/dist/store/specs-migration.d.ts.map +1 -0
  134. package/dist/store/specs-migration.js +481 -0
  135. package/dist/store/specs-migration.js.map +1 -0
  136. package/dist/store/specs-store.d.ts.map +1 -1
  137. package/dist/store/specs-store.js +14 -2
  138. package/dist/store/specs-store.js.map +1 -1
  139. package/dist/store/specs-writer.d.ts +130 -3
  140. package/dist/store/specs-writer.d.ts.map +1 -1
  141. package/dist/store/specs-writer.js +941 -102
  142. package/dist/store/specs-writer.js.map +1 -1
  143. package/dist/store/types.d.ts +31 -1
  144. package/dist/store/types.d.ts.map +1 -1
  145. package/dist/store/waivers-store.d.ts.map +1 -1
  146. package/dist/store/waivers-store.js +8 -1
  147. package/dist/store/waivers-store.js.map +1 -1
  148. package/dist/store/worktrees-migration.d.ts +141 -0
  149. package/dist/store/worktrees-migration.d.ts.map +1 -0
  150. package/dist/store/worktrees-migration.js +356 -0
  151. package/dist/store/worktrees-migration.js.map +1 -0
  152. package/dist/store/worktrees-writer.d.ts +28 -0
  153. package/dist/store/worktrees-writer.d.ts.map +1 -1
  154. package/dist/store/worktrees-writer.js +147 -13
  155. package/dist/store/worktrees-writer.js.map +1 -1
  156. package/package.json +5 -2
  157. package/templates/hook-packs/claude-code/CLAUDE.md +11 -5
  158. package/templates/hook-packs/claude-code/agent-heartbeat.sh +131 -0
  159. package/templates/hook-packs/claude-code/agent-register.sh +62 -0
  160. package/templates/hook-packs/claude-code/agent-stop.sh +51 -0
  161. package/templates/hook-packs/claude-code/audit.sh +1 -1
  162. package/templates/hook-packs/claude-code/block-dangerous.sh +1 -1
  163. package/templates/hook-packs/claude-code/classify_command.py +1 -1
  164. package/templates/hook-packs/claude-code/cwd-guard.sh +30 -0
  165. package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +15 -4
  166. package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +19 -2
  167. package/templates/hook-packs/claude-code/dispatch/session_start.sh +6 -2
  168. package/templates/hook-packs/claude-code/dispatch/stop.sh +7 -2
  169. package/templates/hook-packs/claude-code/duplicate-export-check.sh +156 -0
  170. package/templates/hook-packs/claude-code/god-object-check.sh +102 -0
  171. package/templates/hook-packs/claude-code/guard-strikes.sh +1 -1
  172. package/templates/hook-packs/claude-code/lib/parse-input.sh +115 -1
  173. package/templates/hook-packs/claude-code/lib/run-handlers.sh +1 -1
  174. package/templates/hook-packs/claude-code/loc-delta-check.sh +91 -0
  175. package/templates/hook-packs/claude-code/naming-check.sh +128 -0
  176. package/templates/hook-packs/claude-code/plan-transcript-finalize.sh +59 -0
  177. package/templates/hook-packs/claude-code/plan-transcript-snapshot.sh +86 -0
  178. package/templates/hook-packs/claude-code/protected-paths.sh +59 -0
  179. package/templates/hook-packs/claude-code/quiet-merge.sh +68 -0
  180. package/templates/hook-packs/claude-code/reset-danger-latch.sh +1 -1
  181. package/templates/hook-packs/claude-code/reset-strikes.sh +1 -1
  182. package/templates/hook-packs/claude-code/runtime-paths.sh +1 -1
  183. package/templates/hook-packs/claude-code/scan-secrets.sh +98 -0
  184. package/templates/hook-packs/claude-code/scope-guard.sh +47 -65
  185. package/templates/hook-packs/claude-code/session-caws-status.sh +7 -1
  186. package/templates/hook-packs/claude-code/session-log.sh +1 -1
  187. package/templates/hook-packs/claude-code/session_log_renderer.py +956 -0
  188. package/templates/hook-packs/claude-code/shortcut-language-check.sh +147 -0
  189. package/templates/hook-packs/claude-code/worktree-guard.sh +130 -4
  190. package/templates/hook-packs/claude-code/worktree-write-guard.sh +133 -18
@@ -0,0 +1,99 @@
1
+ /** One spec the classifier may attribute commits to. */
2
+ export interface ClassifierSpec {
3
+ readonly specId: string;
4
+ /** scope.in entries (repo-root-relative paths / globs). */
5
+ readonly scopeIn: readonly string[];
6
+ /** Lifecycle state — only 'active' and 'closed' are considered. */
7
+ readonly lifecycleState: string;
8
+ }
9
+ /** One outgoing commit with the facts the classifier needs. */
10
+ export interface OutgoingCommit {
11
+ readonly sha: string;
12
+ readonly subject: string;
13
+ /** Repo-root-relative paths the commit touched. */
14
+ readonly touchedFiles: readonly string[];
15
+ /**
16
+ * Optional: the worktree name this commit originates from, when the
17
+ * caller could determine it (e.g. from `git branch --contains` against
18
+ * the registry). Used for foreign-worktree escalation.
19
+ */
20
+ readonly originWorktree?: string;
21
+ }
22
+ /** A foreign physical worktree the caller observed. */
23
+ export interface ForeignWorktree {
24
+ readonly name: string;
25
+ readonly path: string;
26
+ readonly branch?: string;
27
+ /** True if the branch is absent from .caws/worktrees.json. */
28
+ readonly unregistered: boolean;
29
+ /** True if the branch is not merged into the push base. */
30
+ readonly unmerged: boolean;
31
+ }
32
+ export interface ClassifyRangeInput {
33
+ /** Outgoing commits, base..HEAD order (oldest first or newest — order
34
+ * is preserved in the report but not relied on for decisions). */
35
+ readonly commits: readonly OutgoingCommit[];
36
+ /** Active + recently-closed specs available for attribution. */
37
+ readonly specs: readonly ClassifierSpec[];
38
+ /** The current session's active spec id, if known. Commits attributed
39
+ * to it are current_slice_match: true. */
40
+ readonly currentSpecId?: string;
41
+ /** Foreign physical worktrees observed during preflight. */
42
+ readonly foreignWorktrees?: readonly ForeignWorktree[];
43
+ /** SHAs the operator explicitly acknowledged (per-SHA, ADR Q3). */
44
+ readonly ackedShas?: readonly string[];
45
+ /** The base ref the range was computed against (e.g. 'origin/main').
46
+ * Reported for transparency. */
47
+ readonly baseRef: string;
48
+ /** The push target ('origin main' is full posture; feature branches get
49
+ * weakened foreign-worktree escalation per ADR Q5). */
50
+ readonly target: PushTarget;
51
+ }
52
+ export interface PushTarget {
53
+ readonly remote: string;
54
+ readonly branch: string;
55
+ }
56
+ export type ProvenanceSource = 'file_touch' | 'commit_subject' | 'file_touch+commit_subject' | 'none';
57
+ export interface CommitClassification {
58
+ readonly sha: string;
59
+ readonly subject: string;
60
+ readonly touchedFiles: readonly string[];
61
+ /** Every spec id this commit is attributed to (multi-match reported). */
62
+ readonly inferredSpecIds: readonly string[];
63
+ /** True iff currentSpecId is in inferredSpecIds. */
64
+ readonly currentSliceMatch: boolean;
65
+ readonly provenanceSource: ProvenanceSource;
66
+ /** True when no spec matched by file-touch and no known spec named in
67
+ * the subject — operator review needed. */
68
+ readonly ambiguous: boolean;
69
+ /** Foreign worktree this commit originates from, if the caller tagged it. */
70
+ readonly originWorktree?: string;
71
+ /** True when this commit is acknowledged by the operator. */
72
+ readonly acknowledged: boolean;
73
+ }
74
+ export type Severity = 'INFO' | 'WARN' | 'ERROR';
75
+ export interface ForeignWorktreeFinding {
76
+ readonly name: string;
77
+ readonly path: string;
78
+ readonly branch?: string;
79
+ readonly severity: Severity;
80
+ /** Which OR-condition(s) (ADR Q4) drove the severity. */
81
+ readonly reasons: readonly string[];
82
+ }
83
+ export interface PushRangeReport {
84
+ readonly baseRef: string;
85
+ readonly target: PushTarget;
86
+ readonly commits: readonly CommitClassification[];
87
+ readonly foreignWorktrees: readonly ForeignWorktreeFinding[];
88
+ /** Commits that are unexpected (not current-slice-match) and NOT acked. */
89
+ readonly unexpectedUnacked: readonly string[];
90
+ /** True iff the guard refuses the push. */
91
+ readonly refused: boolean;
92
+ /** Highest severity across all findings. */
93
+ readonly maxSeverity: Severity;
94
+ }
95
+ /**
96
+ * Classify the outgoing range. Pure, deterministic, side-effect-free.
97
+ */
98
+ export declare function classifyRange(input: ClassifyRangeInput): PushRangeReport;
99
+ //# sourceMappingURL=classify-range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify-range.d.ts","sourceRoot":"","sources":["../../../src/shell/push-range/classify-range.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ // push-range classifier — MULTI-AGENT-PUSH-RANGE-GUARD-001
3
+ //
4
+ // A pure classifier over the outgoing commit range. Given the outgoing
5
+ // commits (each with its touched files), the active/recently-closed specs
6
+ // and their scope.in, the worktree registry, the current session's active
7
+ // spec, and the set of acknowledged SHAs, it produces a structured report
8
+ // and a refuse/proceed decision.
9
+ //
10
+ // DIAGNOSE/DECIDE ONLY. This module never invokes git, never mutates repo
11
+ // state, never pushes. The caller supplies the already-collected git facts
12
+ // (the thin command does the git reads); the classifier is a deterministic
13
+ // function of its inputs so it is trivially testable against fixtures and
14
+ // produces byte-identical reports for identical input (A9 / non_functional
15
+ // reliability).
16
+ //
17
+ // Provenance (ADR 0001 Q1): a commit is attributed to EVERY active/
18
+ // recently-closed spec whose scope.in prefix-matches any file the commit
19
+ // touches (multi-match reported, never collapsed). Commit-subject SPEC-ID
20
+ // matching is additive — it can add an inferred spec, never remove a
21
+ // file-touch match. current_slice_match is true iff the current session's
22
+ // active spec is in the commit's match set. A commit matching no spec by
23
+ // file-touch AND naming no known spec in its subject is provenance:
24
+ // 'ambiguous'.
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.classifyRange = classifyRange;
27
+ const scope_match_1 = require("./scope-match");
28
+ const SPEC_ID_IN_SUBJECT = /\b([A-Z][A-Z0-9]*(?:-[A-Z0-9]+)*-\d+[a-z]*)\b/g;
29
+ function severityRank(s) {
30
+ return s === 'ERROR' ? 2 : s === 'WARN' ? 1 : 0;
31
+ }
32
+ /**
33
+ * Classify one commit's spec provenance. Pure.
34
+ */
35
+ function classifyCommit(commit, specs, currentSpecId, ackedShas) {
36
+ const considered = specs.filter((s) => s.lifecycleState === 'active' || s.lifecycleState === 'closed');
37
+ // (a) file-touch matches — every spec whose scope.in admits any touched file.
38
+ const fileTouchMatches = new Set();
39
+ for (const spec of considered) {
40
+ const hit = commit.touchedFiles.some((f) => spec.scopeIn.some((entry) => (0, scope_match_1.scopeEntryMatches)(entry, f)));
41
+ if (hit)
42
+ fileTouchMatches.add(spec.specId);
43
+ }
44
+ // (b) commit-subject SPEC-ID matches — additive, only for KNOWN specs.
45
+ const knownIds = new Set(considered.map((s) => s.specId));
46
+ const subjectMatches = new Set();
47
+ for (const m of commit.subject.matchAll(SPEC_ID_IN_SUBJECT)) {
48
+ const id = m[1];
49
+ if (knownIds.has(id))
50
+ subjectMatches.add(id);
51
+ }
52
+ const inferred = new Set([...fileTouchMatches, ...subjectMatches]);
53
+ const inferredSpecIds = [...inferred].sort();
54
+ let provenanceSource;
55
+ if (fileTouchMatches.size > 0 && subjectMatches.size > 0) {
56
+ provenanceSource = 'file_touch+commit_subject';
57
+ }
58
+ else if (fileTouchMatches.size > 0) {
59
+ provenanceSource = 'file_touch';
60
+ }
61
+ else if (subjectMatches.size > 0) {
62
+ provenanceSource = 'commit_subject';
63
+ }
64
+ else {
65
+ provenanceSource = 'none';
66
+ }
67
+ const ambiguous = inferred.size === 0;
68
+ const currentSliceMatch = currentSpecId !== undefined && inferred.has(currentSpecId);
69
+ return {
70
+ sha: commit.sha,
71
+ subject: commit.subject,
72
+ touchedFiles: commit.touchedFiles,
73
+ inferredSpecIds,
74
+ currentSliceMatch,
75
+ provenanceSource,
76
+ ambiguous,
77
+ ...(commit.originWorktree !== undefined
78
+ ? { originWorktree: commit.originWorktree }
79
+ : {}),
80
+ acknowledged: ackedShas.has(commit.sha),
81
+ };
82
+ }
83
+ /**
84
+ * Classify a foreign worktree's severity (ADR Q4 — OR of three ERROR
85
+ * conditions; WARN otherwise during an active slice; INFO when not on the
86
+ * full-posture target).
87
+ */
88
+ function classifyForeignWorktree(wt, commits, fullPosture) {
89
+ const reasons = [];
90
+ if (wt.unmerged)
91
+ reasons.push('unmerged branch');
92
+ if (wt.unregistered)
93
+ reasons.push('branch not in worktrees.json');
94
+ const originatesCommit = commits.some((c) => c.originWorktree === wt.name);
95
+ if (originatesCommit) {
96
+ reasons.push('commits in the outgoing range originate from it');
97
+ }
98
+ let severity;
99
+ if (!fullPosture) {
100
+ // Feature-branch / non-origin-main: weakened — report, don't ERROR.
101
+ severity = reasons.length > 0 ? 'WARN' : 'INFO';
102
+ }
103
+ else if (reasons.length > 0) {
104
+ severity = 'ERROR'; // OR: any one condition escalates on origin main.
105
+ }
106
+ else {
107
+ severity = 'WARN'; // present during an active slice, no hard condition.
108
+ }
109
+ return {
110
+ name: wt.name,
111
+ path: wt.path,
112
+ ...(wt.branch !== undefined ? { branch: wt.branch } : {}),
113
+ severity,
114
+ reasons,
115
+ };
116
+ }
117
+ /**
118
+ * Classify the outgoing range. Pure, deterministic, side-effect-free.
119
+ */
120
+ function classifyRange(input) {
121
+ const acked = new Set(input.ackedShas ?? []);
122
+ const fullPosture = input.target.remote === 'origin' && input.target.branch === 'main';
123
+ const commits = input.commits.map((c) => classifyCommit(c, input.specs, input.currentSpecId, acked));
124
+ const foreignWorktrees = (input.foreignWorktrees ?? []).map((wt) => classifyForeignWorktree(wt, input.commits, fullPosture));
125
+ // Unexpected = not current-slice-match (includes ambiguous), and NOT acked.
126
+ const unexpectedUnacked = commits
127
+ .filter((c) => !c.currentSliceMatch && !c.acknowledged)
128
+ .map((c) => c.sha);
129
+ // Max severity across foreign-worktree findings + the unexpected-commit
130
+ // condition (an unexpected unacked commit is an ERROR-equivalent refusal).
131
+ let maxSeverity = 'INFO';
132
+ for (const f of foreignWorktrees) {
133
+ if (severityRank(f.severity) > severityRank(maxSeverity)) {
134
+ maxSeverity = f.severity;
135
+ }
136
+ }
137
+ if (unexpectedUnacked.length > 0 && severityRank('ERROR') > severityRank(maxSeverity)) {
138
+ maxSeverity = 'ERROR';
139
+ }
140
+ // Refuse iff there is any unexpected unacked commit, OR any ERROR-severity
141
+ // foreign worktree finding. WARN-only findings do not refuse (they ride in
142
+ // the report). This is the diagnose/decide contract: refuse is mechanical.
143
+ const refused = unexpectedUnacked.length > 0 ||
144
+ foreignWorktrees.some((f) => f.severity === 'ERROR');
145
+ return {
146
+ baseRef: input.baseRef,
147
+ target: input.target,
148
+ commits,
149
+ foreignWorktrees,
150
+ unexpectedUnacked,
151
+ refused,
152
+ maxSeverity,
153
+ };
154
+ }
155
+ //# sourceMappingURL=classify-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify-range.js","sourceRoot":"","sources":["../../../src/shell/push-range/classify-range.ts"],"names":[],"mappings":";AAAA,2DAA2D;AAC3D,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,iCAAiC;AACjC,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,gBAAgB;AAChB,EAAE;AACF,oEAAoE;AACpE,yEAAyE;AACzE,0EAA0E;AAC1E,qEAAqE;AACrE,0EAA0E;AAC1E,yEAAyE;AACzE,oEAAoE;AACpE,eAAe;;AA6Nf,sCA8CC;AAzQD,+CAAkD;AA8GlD,MAAM,kBAAkB,GAAG,gDAAgD,CAAC;AAE5E,SAAS,YAAY,CAAC,CAAW;IAC/B,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,MAAsB,EACtB,KAAgC,EAChC,aAAiC,EACjC,SAA8B;IAE9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,cAAc,KAAK,QAAQ,CACtE,CAAC;IAEF,8EAA8E;IAC9E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,+BAAiB,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAC1D,CAAC;QACF,IAAI,GAAG;YAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5D,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACjB,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,gBAAgB,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,IAAI,gBAAkC,CAAC;IACvC,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACzD,gBAAgB,GAAG,2BAA2B,CAAC;IACjD,CAAC;SAAM,IAAI,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,gBAAgB,GAAG,YAAY,CAAC;IAClC,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACnC,gBAAgB,GAAG,gBAAgB,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,gBAAgB,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;IACtC,MAAM,iBAAiB,GACrB,aAAa,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAE7D,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe;QACf,iBAAiB;QACjB,gBAAgB;QAChB,SAAS;QACT,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS;YACrC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QACP,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,EAAmB,EACnB,OAAkC,EAClC,WAAoB;IAEpB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,YAAY;QAAE,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,oEAAoE;QACpE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAClD,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,GAAG,OAAO,CAAC,CAAC,kDAAkD;IACxE,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,MAAM,CAAC,CAAC,qDAAqD;IAC1E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAyB;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;IAErE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAC3D,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACjE,uBAAuB,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CACxD,CAAC;IAEF,4EAA4E;IAC5E,MAAM,iBAAiB,GAAG,OAAO;SAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;SACtD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAErB,wEAAwE;IACxE,2EAA2E;IAC3E,IAAI,WAAW,GAAa,MAAM,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACzD,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;QACtF,WAAW,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,OAAO,GACX,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAC5B,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO;QACP,gBAAgB;QAChB,iBAAiB;QACjB,OAAO;QACP,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Normalize a repo-root-relative path to POSIX separators with no leading
3
+ * "./" or trailing slash, for stable matching against scope.in entries.
4
+ */
5
+ export declare function normalizeRel(p: string): string;
6
+ /**
7
+ * Anchored glob match supporting `*` and `?`. A bare directory entry (no
8
+ * glob meta) matches the entry itself OR any descendant (prefix match on a
9
+ * path boundary) — mirroring how scope.in directory entries admit files
10
+ * beneath them. No dependency on minimatch.
11
+ */
12
+ export declare function scopeEntryMatches(entry: string, target: string): boolean;
13
+ //# sourceMappingURL=scope-match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-match.d.ts","sourceRoot":"","sources":["../../../src/shell/push-range/scope-match.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAgBxE"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ // scope-match — path-vs-scope.in matching for the push-range classifier.
3
+ //
4
+ // These two pure functions are intentionally duplicated from
5
+ // `../binding/resolve-binding.ts` (where `scopeEntryMatches`/`normalizeRel`
6
+ // are module-private). The push-range classifier needs the identical
7
+ // matching semantics to attribute a commit's touched files to a spec's
8
+ // scope.in, but resolve-binding does not export them and is owned by a
9
+ // separate (now-closed) slice. Keeping a small local copy avoids widening
10
+ // this slice's scope into the binding subsystem for a 20-line helper.
11
+ //
12
+ // INVARIANT: this must stay semantically identical to resolve-binding's
13
+ // copy. Both implement the same scope.in admission rule (exact match, or
14
+ // directory-prefix on a path boundary, or anchored `*`/`?` glob). If the
15
+ // canonical copy changes its matching rule, update this one to match.
16
+ // (MULTI-AGENT-PUSH-RANGE-GUARD-001)
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.normalizeRel = normalizeRel;
19
+ exports.scopeEntryMatches = scopeEntryMatches;
20
+ /**
21
+ * Normalize a repo-root-relative path to POSIX separators with no leading
22
+ * "./" or trailing slash, for stable matching against scope.in entries.
23
+ */
24
+ function normalizeRel(p) {
25
+ return p.replace(/\\/g, '/').replace(/^\.\//, '').replace(/\/+$/, '');
26
+ }
27
+ /**
28
+ * Anchored glob match supporting `*` and `?`. A bare directory entry (no
29
+ * glob meta) matches the entry itself OR any descendant (prefix match on a
30
+ * path boundary) — mirroring how scope.in directory entries admit files
31
+ * beneath them. No dependency on minimatch.
32
+ */
33
+ function scopeEntryMatches(entry, target) {
34
+ const e = normalizeRel(entry);
35
+ const t = normalizeRel(target);
36
+ if (e === t)
37
+ return true;
38
+ if (!/[*?]/.test(e)) {
39
+ return t.startsWith(e + '/');
40
+ }
41
+ const rx = e
42
+ .split('')
43
+ .map((ch) => {
44
+ if (ch === '*')
45
+ return '.*';
46
+ if (ch === '?')
47
+ return '.';
48
+ return ch.replace(/[.+^${}()|[\]\\]/g, '\\$&');
49
+ })
50
+ .join('');
51
+ return new RegExp(`^${rx}$`).test(t);
52
+ }
53
+ //# sourceMappingURL=scope-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-match.js","sourceRoot":"","sources":["../../../src/shell/push-range/scope-match.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,EAAE;AACF,6DAA6D;AAC7D,4EAA4E;AAC5E,qEAAqE;AACrE,uEAAuE;AACvE,uEAAuE;AACvE,0EAA0E;AAC1E,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,yEAAyE;AACzE,sEAAsE;AACtE,qCAAqC;;AAMrC,oCAEC;AAQD,8CAgBC;AA9BD;;;GAGG;AACH,SAAgB,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAa,EAAE,MAAc;IAC7D,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,EAAE,GAAG,CAAC;SACT,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC5B,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QAC3B,OAAO,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/shell/register.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BzC,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAyBD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,4BAAiC,GACzC,IAAI,CAimBN"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/shell/register.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DzC,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAqID,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,4BAAiC,GACzC,IAAI,CAutBN"}