@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.
- package/README.md +1 -1
- package/dist/index.js +55 -58
- package/dist/init/hook-packs/manifest-claude-code.d.ts +1 -1
- package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -1
- package/dist/init/hook-packs/manifest-claude-code.js +317 -6
- package/dist/init/hook-packs/manifest-claude-code.js.map +1 -1
- package/dist/init/hook-packs/types.js +1 -1
- package/dist/init/hook-packs/types.js.map +1 -1
- package/dist/shell/binding/resolve-binding.d.ts.map +1 -1
- package/dist/shell/binding/resolve-binding.js +105 -1
- package/dist/shell/binding/resolve-binding.js.map +1 -1
- package/dist/shell/binding/types.d.ts +47 -3
- package/dist/shell/binding/types.d.ts.map +1 -1
- package/dist/shell/command-metadata.d.ts +93 -0
- package/dist/shell/command-metadata.d.ts.map +1 -0
- package/dist/shell/command-metadata.js +687 -0
- package/dist/shell/command-metadata.js.map +1 -0
- package/dist/shell/commands/agents.d.ts +48 -0
- package/dist/shell/commands/agents.d.ts.map +1 -0
- package/dist/shell/commands/agents.js +577 -0
- package/dist/shell/commands/agents.js.map +1 -0
- package/dist/shell/commands/claim.d.ts +16 -0
- package/dist/shell/commands/claim.d.ts.map +1 -1
- package/dist/shell/commands/claim.js +88 -30
- package/dist/shell/commands/claim.js.map +1 -1
- package/dist/shell/commands/events.d.ts +106 -0
- package/dist/shell/commands/events.d.ts.map +1 -0
- package/dist/shell/commands/events.js +510 -0
- package/dist/shell/commands/events.js.map +1 -0
- package/dist/shell/commands/gates.d.ts +2 -2
- package/dist/shell/commands/gates.d.ts.map +1 -1
- package/dist/shell/commands/gates.js +106 -25
- package/dist/shell/commands/gates.js.map +1 -1
- package/dist/shell/commands/init.d.ts.map +1 -1
- package/dist/shell/commands/init.js +26 -0
- package/dist/shell/commands/init.js.map +1 -1
- package/dist/shell/commands/prepush.d.ts +26 -0
- package/dist/shell/commands/prepush.d.ts.map +1 -0
- package/dist/shell/commands/prepush.js +373 -0
- package/dist/shell/commands/prepush.js.map +1 -0
- package/dist/shell/commands/scope.d.ts.map +1 -1
- package/dist/shell/commands/scope.js +31 -1
- package/dist/shell/commands/scope.js.map +1 -1
- package/dist/shell/commands/specs.d.ts +44 -3
- package/dist/shell/commands/specs.d.ts.map +1 -1
- package/dist/shell/commands/specs.js +411 -15
- package/dist/shell/commands/specs.js.map +1 -1
- package/dist/shell/commands/status.d.ts +12 -0
- package/dist/shell/commands/status.d.ts.map +1 -1
- package/dist/shell/commands/status.js +236 -21
- package/dist/shell/commands/status.js.map +1 -1
- package/dist/shell/commands/worktree.d.ts +9 -0
- package/dist/shell/commands/worktree.d.ts.map +1 -1
- package/dist/shell/commands/worktree.js +353 -1
- package/dist/shell/commands/worktree.js.map +1 -1
- package/dist/shell/gates/disposition.d.ts.map +1 -1
- package/dist/shell/gates/disposition.js +43 -2
- package/dist/shell/gates/disposition.js.map +1 -1
- package/dist/shell/index.d.ts +14 -6
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +32 -1
- package/dist/shell/index.js.map +1 -1
- package/dist/shell/legacy-command-map.js +832 -0
- package/dist/shell/push-range/classify-range.d.ts +99 -0
- package/dist/shell/push-range/classify-range.d.ts.map +1 -0
- package/dist/shell/push-range/classify-range.js +155 -0
- package/dist/shell/push-range/classify-range.js.map +1 -0
- package/dist/shell/push-range/scope-match.d.ts +13 -0
- package/dist/shell/push-range/scope-match.d.ts.map +1 -0
- package/dist/shell/push-range/scope-match.js +53 -0
- package/dist/shell/push-range/scope-match.js.map +1 -0
- package/dist/shell/register.d.ts.map +1 -1
- package/dist/shell/register.js +350 -165
- package/dist/shell/register.js.map +1 -1
- package/dist/shell/registered-command-groups.js +48 -0
- package/dist/shell/render/status.d.ts +7 -1
- package/dist/shell/render/status.d.ts.map +1 -1
- package/dist/shell/render/status.js +72 -0
- package/dist/shell/render/status.js.map +1 -1
- package/dist/shell/rules.d.ts +19 -0
- package/dist/shell/rules.d.ts.map +1 -1
- package/dist/shell/rules.js +27 -0
- package/dist/shell/rules.js.map +1 -1
- package/dist/shell/session/resolve-session.d.ts +29 -1
- package/dist/shell/session/resolve-session.d.ts.map +1 -1
- package/dist/shell/session/resolve-session.js +817 -11
- package/dist/shell/session/resolve-session.js.map +1 -1
- package/dist/shell/session/types.d.ts +127 -1
- package/dist/shell/session/types.d.ts.map +1 -1
- package/dist/shell/session/types.js +10 -4
- package/dist/shell/session/types.js.map +1 -1
- package/dist/store/agents-store.d.ts.map +1 -1
- package/dist/store/agents-store.js +9 -0
- package/dist/store/agents-store.js.map +1 -1
- package/dist/store/apply-patch.d.ts.map +1 -1
- package/dist/store/apply-patch.js +15 -0
- package/dist/store/apply-patch.js.map +1 -1
- package/dist/store/doctor-snapshot.d.ts.map +1 -1
- package/dist/store/doctor-snapshot.js +169 -3
- package/dist/store/doctor-snapshot.js.map +1 -1
- package/dist/store/events-migration.d.ts +207 -0
- package/dist/store/events-migration.d.ts.map +1 -0
- package/dist/store/events-migration.js +358 -0
- package/dist/store/events-migration.js.map +1 -0
- package/dist/store/events-store.d.ts +47 -1
- package/dist/store/events-store.d.ts.map +1 -1
- package/dist/store/events-store.js +278 -0
- package/dist/store/events-store.js.map +1 -1
- package/dist/store/git-autocommit.d.ts +46 -0
- package/dist/store/git-autocommit.d.ts.map +1 -0
- package/dist/store/git-autocommit.js +198 -0
- package/dist/store/git-autocommit.js.map +1 -0
- package/dist/store/git-sparse-checkout.d.ts +25 -0
- package/dist/store/git-sparse-checkout.d.ts.map +1 -0
- package/dist/store/git-sparse-checkout.js +101 -0
- package/dist/store/git-sparse-checkout.js.map +1 -0
- package/dist/store/index.d.ts +6 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +16 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/leases-store.d.ts +89 -0
- package/dist/store/leases-store.d.ts.map +1 -0
- package/dist/store/leases-store.js +427 -0
- package/dist/store/leases-store.js.map +1 -0
- package/dist/store/lifecycle-transaction.d.ts.map +1 -1
- package/dist/store/lifecycle-transaction.js +34 -1
- package/dist/store/lifecycle-transaction.js.map +1 -1
- package/dist/store/rules.d.ts +74 -1
- package/dist/store/rules.d.ts.map +1 -1
- package/dist/store/rules.js +76 -0
- package/dist/store/rules.js.map +1 -1
- package/dist/store/specs-migration.d.ts +128 -0
- package/dist/store/specs-migration.d.ts.map +1 -0
- package/dist/store/specs-migration.js +481 -0
- package/dist/store/specs-migration.js.map +1 -0
- package/dist/store/specs-store.d.ts.map +1 -1
- package/dist/store/specs-store.js +14 -2
- package/dist/store/specs-store.js.map +1 -1
- package/dist/store/specs-writer.d.ts +130 -3
- package/dist/store/specs-writer.d.ts.map +1 -1
- package/dist/store/specs-writer.js +941 -102
- package/dist/store/specs-writer.js.map +1 -1
- package/dist/store/types.d.ts +31 -1
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/waivers-store.d.ts.map +1 -1
- package/dist/store/waivers-store.js +8 -1
- package/dist/store/waivers-store.js.map +1 -1
- package/dist/store/worktrees-migration.d.ts +141 -0
- package/dist/store/worktrees-migration.d.ts.map +1 -0
- package/dist/store/worktrees-migration.js +356 -0
- package/dist/store/worktrees-migration.js.map +1 -0
- package/dist/store/worktrees-writer.d.ts +28 -0
- package/dist/store/worktrees-writer.d.ts.map +1 -1
- package/dist/store/worktrees-writer.js +147 -13
- package/dist/store/worktrees-writer.js.map +1 -1
- package/package.json +5 -2
- package/templates/hook-packs/claude-code/CLAUDE.md +11 -5
- package/templates/hook-packs/claude-code/agent-heartbeat.sh +131 -0
- package/templates/hook-packs/claude-code/agent-register.sh +62 -0
- package/templates/hook-packs/claude-code/agent-stop.sh +51 -0
- package/templates/hook-packs/claude-code/audit.sh +1 -1
- package/templates/hook-packs/claude-code/block-dangerous.sh +1 -1
- package/templates/hook-packs/claude-code/classify_command.py +1 -1
- package/templates/hook-packs/claude-code/cwd-guard.sh +30 -0
- package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +15 -4
- package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +19 -2
- package/templates/hook-packs/claude-code/dispatch/session_start.sh +6 -2
- package/templates/hook-packs/claude-code/dispatch/stop.sh +7 -2
- package/templates/hook-packs/claude-code/duplicate-export-check.sh +156 -0
- package/templates/hook-packs/claude-code/god-object-check.sh +102 -0
- package/templates/hook-packs/claude-code/guard-strikes.sh +1 -1
- package/templates/hook-packs/claude-code/lib/parse-input.sh +115 -1
- package/templates/hook-packs/claude-code/lib/run-handlers.sh +1 -1
- package/templates/hook-packs/claude-code/loc-delta-check.sh +91 -0
- package/templates/hook-packs/claude-code/naming-check.sh +128 -0
- package/templates/hook-packs/claude-code/plan-transcript-finalize.sh +59 -0
- package/templates/hook-packs/claude-code/plan-transcript-snapshot.sh +86 -0
- package/templates/hook-packs/claude-code/protected-paths.sh +59 -0
- package/templates/hook-packs/claude-code/quiet-merge.sh +68 -0
- package/templates/hook-packs/claude-code/reset-danger-latch.sh +1 -1
- package/templates/hook-packs/claude-code/reset-strikes.sh +1 -1
- package/templates/hook-packs/claude-code/runtime-paths.sh +1 -1
- package/templates/hook-packs/claude-code/scan-secrets.sh +98 -0
- package/templates/hook-packs/claude-code/scope-guard.sh +47 -65
- package/templates/hook-packs/claude-code/session-caws-status.sh +7 -1
- package/templates/hook-packs/claude-code/session-log.sh +1 -1
- package/templates/hook-packs/claude-code/session_log_renderer.py +956 -0
- package/templates/hook-packs/claude-code/shortcut-language-check.sh +147 -0
- package/templates/hook-packs/claude-code/worktree-guard.sh +130 -4
- package/templates/hook-packs/claude-code/worktree-write-guard.sh +133 -18
|
@@ -140,6 +140,73 @@ function findRegistryMatch(cwdReal, registry) {
|
|
|
140
140
|
}
|
|
141
141
|
return best;
|
|
142
142
|
}
|
|
143
|
+
// SCOPE-CHECK-CWD-BINDING-RESOLUTION-001 helpers ─────────────────────────
|
|
144
|
+
//
|
|
145
|
+
// These power the target-path fallback (steps 2 and 3) when cwd does not
|
|
146
|
+
// resolve a worktree. They are pure functions of (targetPath, registry,
|
|
147
|
+
// specs) — no process.cwd(), no I/O beyond the realpath the caller already
|
|
148
|
+
// did — so the binding for a path is identical from any invocation cwd.
|
|
149
|
+
/**
|
|
150
|
+
* Normalize a repo-root-relative path to POSIX separators with no leading
|
|
151
|
+
* "./" or trailing slash, for stable matching against scope.in entries.
|
|
152
|
+
*/
|
|
153
|
+
function normalizeRel(p) {
|
|
154
|
+
return p.replace(/\\/g, '/').replace(/^\.\//, '').replace(/\/+$/, '');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Anchored glob match supporting `*` (any run of non-separator or separator
|
|
158
|
+
* chars within a segment-agnostic match) and `?` (single char). A bare
|
|
159
|
+
* directory entry (no glob meta) matches the entry itself OR any descendant
|
|
160
|
+
* (prefix match on a path boundary) — mirroring how scope.in directory
|
|
161
|
+
* entries admit files beneath them. No dependency on minimatch.
|
|
162
|
+
*/
|
|
163
|
+
function scopeEntryMatches(entry, target) {
|
|
164
|
+
const e = normalizeRel(entry);
|
|
165
|
+
const t = normalizeRel(target);
|
|
166
|
+
if (e === t)
|
|
167
|
+
return true;
|
|
168
|
+
if (!/[*?]/.test(e)) {
|
|
169
|
+
// Directory/prefix entry: admit descendants on a path boundary.
|
|
170
|
+
return t.startsWith(e + '/');
|
|
171
|
+
}
|
|
172
|
+
// Glob entry: translate to an anchored RegExp. `*` → [^/]-agnostic any,
|
|
173
|
+
// `?` → single char. Escape all other regex meta.
|
|
174
|
+
const rx = e
|
|
175
|
+
.split('')
|
|
176
|
+
.map((ch) => {
|
|
177
|
+
if (ch === '*')
|
|
178
|
+
return '.*';
|
|
179
|
+
if (ch === '?')
|
|
180
|
+
return '.';
|
|
181
|
+
return ch.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
182
|
+
})
|
|
183
|
+
.join('');
|
|
184
|
+
return new RegExp(`^${rx}$`).test(t);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Step (3): find every active bound spec whose scope.in admits `targetPath`.
|
|
188
|
+
* Returns one claimant per matching spec, naming the spec, its worktree, and
|
|
189
|
+
* the exact scope.in entry that matched (for the actionable refusal).
|
|
190
|
+
*/
|
|
191
|
+
function findScopeInClaimants(targetPath, input) {
|
|
192
|
+
const claimants = [];
|
|
193
|
+
for (const [name, record] of Object.entries(input.registry)) {
|
|
194
|
+
const specId = record?.specId;
|
|
195
|
+
if (typeof specId !== 'string' || specId.length === 0)
|
|
196
|
+
continue;
|
|
197
|
+
const spec = input.specs.find((s) => s.id === specId);
|
|
198
|
+
if (spec === undefined)
|
|
199
|
+
continue;
|
|
200
|
+
if (spec.lifecycle_state !== 'active')
|
|
201
|
+
continue;
|
|
202
|
+
const scopeIn = spec.scope?.in ?? [];
|
|
203
|
+
const matched = scopeIn.find((entry) => scopeEntryMatches(entry, targetPath));
|
|
204
|
+
if (matched !== undefined) {
|
|
205
|
+
claimants.push({ specId, worktreeName: name, matchedScopeInEntry: matched });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return claimants;
|
|
209
|
+
}
|
|
143
210
|
function resolveBinding(input) {
|
|
144
211
|
const cwdReal = safeRealpath(input.cwd);
|
|
145
212
|
const repoRootReal = safeRealpath(input.repoRoot);
|
|
@@ -182,7 +249,44 @@ function resolveBinding(input) {
|
|
|
182
249
|
}
|
|
183
250
|
}
|
|
184
251
|
if (candidate === null) {
|
|
185
|
-
|
|
252
|
+
// SCOPE-CHECK-CWD-BINDING-RESOLUTION-001: cwd resolved no worktree.
|
|
253
|
+
// Before falling to `unbound`, try to resolve the binding from the
|
|
254
|
+
// TARGET PATH so the verdict is cwd-independent.
|
|
255
|
+
if (typeof input.targetPath === 'string' && input.targetPath.length > 0) {
|
|
256
|
+
const targetAbs = safeRealpath(path.isAbsolute(input.targetPath)
|
|
257
|
+
? input.targetPath
|
|
258
|
+
: path.join(repoRootReal, input.targetPath));
|
|
259
|
+
// Step (2): target-path worktree-location. If the absolute path lies
|
|
260
|
+
// under a registered worktree's path, that worktree binds. Unambiguous
|
|
261
|
+
// (a path is inside at most one worktree dir); take the deepest match.
|
|
262
|
+
const locMatch = findRegistryMatch(targetAbs, input.registry);
|
|
263
|
+
if (locMatch !== null) {
|
|
264
|
+
candidate = locMatch;
|
|
265
|
+
source = 'target_worktree_location';
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// Step (3): target-path scope.in claim.
|
|
269
|
+
const claimants = findScopeInClaimants(input.targetPath, input);
|
|
270
|
+
if (claimants.length === 1) {
|
|
271
|
+
const only = claimants[0];
|
|
272
|
+
candidate = { name: only.worktreeName, path: '' };
|
|
273
|
+
source = 'target_scope_in_claim';
|
|
274
|
+
}
|
|
275
|
+
else if (claimants.length > 1) {
|
|
276
|
+
// Refuse-on-conflict: name every claimant, pick none. `binding`
|
|
277
|
+
// stays `unbound` (safe default); the ambiguity rides in the
|
|
278
|
+
// dedicated `ambiguous` field that scope check inspects.
|
|
279
|
+
return {
|
|
280
|
+
binding: { kind: 'unbound' },
|
|
281
|
+
ambiguous: { targetPath: normalizeRel(input.targetPath), claimants },
|
|
282
|
+
source: 'target_scope_in_claim',
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (candidate === null) {
|
|
288
|
+
return { binding: { kind: 'unbound' }, source: 'none' };
|
|
289
|
+
}
|
|
186
290
|
}
|
|
187
291
|
// We have a worktree name. Now find the bound spec for kernel evaluation.
|
|
188
292
|
const record = input.registry[candidate.name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-binding.js","sourceRoot":"","sources":["../../../src/shell/binding/resolve-binding.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,6DAA6D;AAC7D,EAAE;AACF,aAAa;AACb,EAAE;AACF,yEAAyE;AACzE,sEAAsE;AACtE,qEAAqE;AACrE,0EAA0E;AAC1E,4EAA4E;AAC5E,uEAAuE;AACvE,iCAAiC;AACjC,qEAAqE;AACrE,2EAA2E;AAC3E,gEAAgE;AAChE,yEAAyE;AACzE,mEAAmE;AACnE,0EAA0E;AAC1E,sEAAsE;AACtE,uDAAuD;AACvD,EAAE;AACF,kEAAkE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"resolve-binding.js","sourceRoot":"","sources":["../../../src/shell/binding/resolve-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,16 @@ export interface ResolveBindingInput {
|
|
|
18
18
|
* cannot be invoked. Production injects a real git runner.
|
|
19
19
|
*/
|
|
20
20
|
readonly gitWorktreeList?: (repoRoot: string) => readonly GitWorktreeEntry[];
|
|
21
|
+
/**
|
|
22
|
+
* SCOPE-CHECK-CWD-BINDING-RESOLUTION-001: the repo-root-relative path whose
|
|
23
|
+
* binding is being resolved. When set and the cwd does NOT match a worktree
|
|
24
|
+
* (step 1 yields no candidate), resolution falls back to (2) the path's
|
|
25
|
+
* worktree-location and (3) the bound spec(s) whose `scope.in` admits this
|
|
26
|
+
* path. This makes `caws scope check <path>` cwd-independent: the governing
|
|
27
|
+
* binding is a property of the PATH, not of where the command ran. Omitted
|
|
28
|
+
* → pre-existing cwd-only behavior.
|
|
29
|
+
*/
|
|
30
|
+
readonly targetPath?: string;
|
|
21
31
|
}
|
|
22
32
|
export interface GitWorktreeEntry {
|
|
23
33
|
/** Absolute path of the worktree on disk. */
|
|
@@ -25,18 +35,52 @@ export interface GitWorktreeEntry {
|
|
|
25
35
|
/** Branch name (may be `(detached)` or `refs/heads/<x>`). */
|
|
26
36
|
readonly branch?: string;
|
|
27
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* SCOPE-CHECK-CWD-BINDING-RESOLUTION-001: one spec that claims a target path
|
|
40
|
+
* via its `scope.in`. Carried in the `ambiguous` result so the refusal is
|
|
41
|
+
* actionable — the agent can name and inspect each contender.
|
|
42
|
+
*/
|
|
43
|
+
export interface BindingClaimant {
|
|
44
|
+
readonly specId: string;
|
|
45
|
+
readonly worktreeName: string;
|
|
46
|
+
/** The exact `scope.in` entry that matched the target path. */
|
|
47
|
+
readonly matchedScopeInEntry: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* SCOPE-CHECK-CWD-BINDING-RESOLUTION-001: refuse-on-conflict detail surfaced
|
|
51
|
+
* when step-(3) scope.in-claim resolution finds MORE THAN ONE active bound
|
|
52
|
+
* spec claiming the same target path. Carried in a DEDICATED `ambiguous`
|
|
53
|
+
* field on `ResolvedBinding` (not inside `binding`) so that consumers which
|
|
54
|
+
* never pass a targetPath — e.g. `caws status`, which resolves from cwd —
|
|
55
|
+
* continue to see only the kernel `BindingState` and need no narrowing. Only
|
|
56
|
+
* `caws scope check/show`, which passes a targetPath, inspects `ambiguous`.
|
|
57
|
+
*/
|
|
58
|
+
export interface AmbiguousBindingDetail {
|
|
59
|
+
readonly targetPath: string;
|
|
60
|
+
readonly claimants: readonly BindingClaimant[];
|
|
61
|
+
}
|
|
28
62
|
export interface ResolvedBinding {
|
|
29
|
-
/** The kernel's `BindingState`.
|
|
63
|
+
/** The kernel's `BindingState`. For an ambiguous result this is `unbound`
|
|
64
|
+
* (the safe default for non-scope-check consumers); inspect `ambiguous`. */
|
|
30
65
|
readonly binding: BindingState;
|
|
66
|
+
/**
|
|
67
|
+
* Refuse-on-conflict detail. Present ONLY when step-(3) resolution found
|
|
68
|
+
* >1 claimant for the target path. When set, `binding` is `unbound` and
|
|
69
|
+
* `worktreeName` is undefined — no single owner was selected, by design.
|
|
70
|
+
* `caws scope check` keys its ambiguous-binding refusal off this field.
|
|
71
|
+
*/
|
|
72
|
+
readonly ambiguous?: AmbiguousBindingDetail;
|
|
31
73
|
/**
|
|
32
74
|
* The resolved worktree name, if any. `undefined` when cwd is in the main
|
|
33
|
-
* checkout
|
|
75
|
+
* checkout with no resolvable target-path binding, or when ambiguous.
|
|
34
76
|
*/
|
|
35
77
|
readonly worktreeName?: string;
|
|
36
78
|
/**
|
|
37
79
|
* Where the worktree-name resolution came from. Helps explain `bound`
|
|
38
80
|
* vs `one_sided` decisions to the user.
|
|
81
|
+
* - target_worktree_location: step (2), path under .caws/worktrees/<name>/
|
|
82
|
+
* - target_scope_in_claim: step (3), a bound spec's scope.in admits path
|
|
39
83
|
*/
|
|
40
|
-
readonly source: 'registry_path_match' | 'git_porcelain_match' | 'none';
|
|
84
|
+
readonly source: 'registry_path_match' | 'git_porcelain_match' | 'target_worktree_location' | 'target_scope_in_claim' | 'none';
|
|
41
85
|
}
|
|
42
86
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shell/binding/types.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shell/binding/types.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,gBAAgB,EAAE,CAAC;IAC7E;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B;gFAC4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EACX,qBAAqB,GACrB,qBAAqB,GACrB,0BAA0B,GAC1B,uBAAuB,GACvB,MAAM,CAAC;CACZ"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** A positional argument on a command (this CLI uses at most one per command). */
|
|
2
|
+
export interface CommandArgMeta {
|
|
3
|
+
/** Argument name as it appears in usage, e.g. "id" or "path". */
|
|
4
|
+
readonly name: string;
|
|
5
|
+
/** Whether the argument is required (`<name>`) or optional (`[name]`). */
|
|
6
|
+
readonly required: boolean;
|
|
7
|
+
/** Help text for the argument. */
|
|
8
|
+
readonly description: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A Commander option. The `flag` string is authored verbatim (e.g.
|
|
12
|
+
* "--mode <mode>" or "--apply") so register.ts calls
|
|
13
|
+
* `.option(flag, description, defaultValue?)` with no string literal of its
|
|
14
|
+
* own.
|
|
15
|
+
*/
|
|
16
|
+
export interface CommandOptionMeta {
|
|
17
|
+
/** Full Commander flag string, e.g. "--mode <mode>", "--ack <sha>", "--apply". */
|
|
18
|
+
readonly flag: string;
|
|
19
|
+
/** When true, register.ts uses `.requiredOption()` (Commander pre-validates). */
|
|
20
|
+
readonly required?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Help prose. When `allowedValues` is set, register.ts appends
|
|
23
|
+
* ": <v1> | <v2> | ..." and the lock test asserts that list equals the
|
|
24
|
+
* kernel/schema enum — so the value list is the derived, locked part and
|
|
25
|
+
* this string is only the prose prefix.
|
|
26
|
+
*/
|
|
27
|
+
readonly description: string;
|
|
28
|
+
/**
|
|
29
|
+
* Enum-backed value list (e.g. SPEC_MODES). Present only for options whose
|
|
30
|
+
* accepted values come from a kernel enum / JSON-schema enum. The lock test
|
|
31
|
+
* asserts deep-equality against that authority; drift becomes a test failure.
|
|
32
|
+
*/
|
|
33
|
+
readonly allowedValues?: readonly (string | number)[];
|
|
34
|
+
/** Commander default value, passed as the 3rd arg to `.option()`. */
|
|
35
|
+
readonly defaultValue?: string | boolean | readonly string[];
|
|
36
|
+
/**
|
|
37
|
+
* True for repeatable options that accumulate (e.g. `--ack <sha>` collected
|
|
38
|
+
* into an array). register.ts supplies the collector; this flag records the
|
|
39
|
+
* intent so the metadata is self-describing.
|
|
40
|
+
*/
|
|
41
|
+
readonly collect?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** A leaf command (one that has an `.action()` handler). */
|
|
44
|
+
export interface LeafCommandMeta {
|
|
45
|
+
readonly kind: 'leaf';
|
|
46
|
+
/** Command name as passed to `.command()` (without the `<arg>` suffix). */
|
|
47
|
+
readonly name: string;
|
|
48
|
+
/** The positional argument, if any. */
|
|
49
|
+
readonly argument?: CommandArgMeta;
|
|
50
|
+
/** The `.description()` text. */
|
|
51
|
+
readonly description: string;
|
|
52
|
+
/** Declared options, in display order. */
|
|
53
|
+
readonly options: readonly CommandOptionMeta[];
|
|
54
|
+
}
|
|
55
|
+
/** A group command whose subcommands carry the `.action()` handlers. */
|
|
56
|
+
export interface GroupCommandMeta {
|
|
57
|
+
readonly kind: 'group';
|
|
58
|
+
/** Group name as passed to `.command()`, e.g. "specs". */
|
|
59
|
+
readonly name: string;
|
|
60
|
+
/** The group-level `.description()` (shown in `caws --help` and `caws <group> --help`). */
|
|
61
|
+
readonly description: string;
|
|
62
|
+
/** The group's subcommands. */
|
|
63
|
+
readonly subcommands: readonly LeafCommandMeta[];
|
|
64
|
+
}
|
|
65
|
+
/** Either a flat leaf command or a group with subcommands. */
|
|
66
|
+
export type CommandMeta = LeafCommandMeta | GroupCommandMeta;
|
|
67
|
+
export declare const SPECS_COMMAND_META: GroupCommandMeta;
|
|
68
|
+
export declare const WORKTREE_COMMAND_META: GroupCommandMeta;
|
|
69
|
+
export declare const INIT_COMMAND_META: LeafCommandMeta;
|
|
70
|
+
export declare const DOCTOR_COMMAND_META: LeafCommandMeta;
|
|
71
|
+
export declare const STATUS_COMMAND_META: LeafCommandMeta;
|
|
72
|
+
export declare const CLAIM_COMMAND_META: LeafCommandMeta;
|
|
73
|
+
export declare const PREPUSH_COMMAND_META: LeafCommandMeta;
|
|
74
|
+
export declare const SCOPE_COMMAND_META: GroupCommandMeta;
|
|
75
|
+
export declare const GATES_COMMAND_META: GroupCommandMeta;
|
|
76
|
+
export declare const EVIDENCE_COMMAND_META: GroupCommandMeta;
|
|
77
|
+
export declare const EVENTS_COMMAND_META: GroupCommandMeta;
|
|
78
|
+
export declare const WAIVER_COMMAND_META: GroupCommandMeta;
|
|
79
|
+
export declare const AGENTS_COMMAND_META: GroupCommandMeta;
|
|
80
|
+
/**
|
|
81
|
+
* The complete v11 command-surface metadata — the single authority for every
|
|
82
|
+
* `.description()` / `.argument()` / `.option()` in register.ts.
|
|
83
|
+
*
|
|
84
|
+
* SLICE 3: all thirteen surface entries are populated and consumed by
|
|
85
|
+
* register.ts — the five flat top-level commands (init/doctor/status/claim/
|
|
86
|
+
* prepush) as LeafCommandMeta, and eight groups (scope/gates/evidence/events/
|
|
87
|
+
* waiver/agents/specs/worktree). The lock test enforces full set-equality with
|
|
88
|
+
* REGISTERED_COMMAND_GROUPS (L1), enum/value-list parity (L3), non-empty
|
|
89
|
+
* descriptions (L4), and the global no-inline-strings invariant on register.ts
|
|
90
|
+
* (L5).
|
|
91
|
+
*/
|
|
92
|
+
export declare const COMMAND_SURFACE_METADATA: readonly CommandMeta[];
|
|
93
|
+
//# sourceMappingURL=command-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-metadata.d.ts","sourceRoot":"","sources":["../../src/shell/command-metadata.ts"],"names":[],"mappings":"AAqCA,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACtD,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;IAC7D;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CAClD;AAED,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAgB7D,eAAO,MAAM,kBAAkB,EAAE,gBA8KhC,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,gBAsFnC,CAAC;AAOF,eAAO,MAAM,iBAAiB,EAAE,eAuB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAMjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAmBhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eAmBlC,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,gBAoBhC,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE,gBAqBhC,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,gBAsBnC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,gBA+DjC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,gBAiEjC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,gBAoGjC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,WAAW,EAczD,CAAC"}
|