specweave 3.1.2 → 3.1.3
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/.claude-plugin/marketplace.json +2 -2
- package/bin/specweave.js +30 -0
- package/dist/src/cli/commands/card.d.ts +27 -0
- package/dist/src/cli/commands/card.d.ts.map +1 -0
- package/dist/src/cli/commands/card.js +163 -0
- package/dist/src/cli/commands/card.js.map +1 -0
- package/dist/src/cli/commands/task.d.ts +8 -0
- package/dist/src/cli/commands/task.d.ts.map +1 -1
- package/dist/src/cli/commands/task.js +20 -4
- package/dist/src/cli/commands/task.js.map +1 -1
- package/dist/src/cli/commands/verify.d.ts +2 -0
- package/dist/src/cli/commands/verify.d.ts.map +1 -1
- package/dist/src/cli/commands/verify.js +7 -3
- package/dist/src/cli/commands/verify.js.map +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts +6 -0
- package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts.map +1 -1
- package/dist/src/core/hooks/LifecycleHookDispatcher.js +35 -3
- package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -1
- package/dist/src/core/session/pickup.d.ts.map +1 -1
- package/dist/src/core/session/pickup.js +16 -2
- package/dist/src/core/session/pickup.js.map +1 -1
- package/dist/src/core/tasks/branch-cards.d.ts +32 -0
- package/dist/src/core/tasks/branch-cards.d.ts.map +1 -0
- package/dist/src/core/tasks/branch-cards.js +72 -0
- package/dist/src/core/tasks/branch-cards.js.map +1 -0
- package/dist/src/core/tasks/cards.d.ts +60 -0
- package/dist/src/core/tasks/cards.d.ts.map +1 -0
- package/dist/src/core/tasks/cards.js +117 -0
- package/dist/src/core/tasks/cards.js.map +1 -0
- package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
- package/dist/src/core/tasks/closure-gate.js +10 -3
- package/dist/src/core/tasks/closure-gate.js.map +1 -1
- package/dist/src/core/tasks/ledger.d.ts +20 -0
- package/dist/src/core/tasks/ledger.d.ts.map +1 -1
- package/dist/src/core/tasks/ledger.js +38 -2
- package/dist/src/core/tasks/ledger.js.map +1 -1
- package/dist/src/core/tasks/verify-runner.d.ts +6 -0
- package/dist/src/core/tasks/verify-runner.d.ts.map +1 -1
- package/dist/src/core/tasks/verify-runner.js +12 -3
- package/dist/src/core/tasks/verify-runner.js.map +1 -1
- package/package.json +2 -2
- package/plugins/specweave/.claude-plugin/plugin.json +1 -1
- package/plugins/specweave/skills/do/SKILL.md +9 -5
- package/plugins/specweave/skills/handoff/SKILL.md +6 -1
- package/src/templates/AGENTS.md.template +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.3",
|
|
4
4
|
"description": "Portable intent, specifications, task evidence, and handoffs across AI coding tools.",
|
|
5
5
|
"owner": {
|
|
6
6
|
"name": "Anton Abyzov",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"description": "SpecWeave unified plugin — increment lifecycle (plan, work the ledger, verify, review, complete), cross-tool handoff, GitHub/Jira/ADO sync",
|
|
13
13
|
"source": "./plugins/specweave",
|
|
14
14
|
"category": "development",
|
|
15
|
-
"version": "3.1.
|
|
15
|
+
"version": "3.1.3",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Anton Abyzov",
|
|
18
18
|
"email": "anton.abyzov@gmail.com"
|
package/bin/specweave.js
CHANGED
|
@@ -142,18 +142,48 @@ program
|
|
|
142
142
|
.option('--reason <text>', 'Reason (required for skip / block)')
|
|
143
143
|
.option('--all-mine', 'With `release`: release every task claimed by this agent')
|
|
144
144
|
.option('--write', 'With `render`: refresh a legacy tasks.md from the ledger')
|
|
145
|
+
.option('--line <text>', 'Card text for claim/done/block (max 100 chars, longer text is truncated)')
|
|
146
|
+
.option('--link <url>', 'Card link for claim/done/block (PR URL, report path, artifact URL)')
|
|
145
147
|
.option('--json', 'Machine-readable output')
|
|
146
148
|
.action(async (action, taskOrIncrement, increment, options) => {
|
|
147
149
|
const { taskCommand } = await import('../dist/src/cli/commands/task.js');
|
|
148
150
|
process.exitCode = await taskCommand(action, taskOrIncrement, increment, options);
|
|
149
151
|
});
|
|
150
152
|
|
|
153
|
+
// Card command - one-line checklist cards on the ledger (T-NN aliases task; C-NN is branch-keyed)
|
|
154
|
+
program
|
|
155
|
+
.command('card <action> [idOrText] [increment]')
|
|
156
|
+
.description('Cards: add "<text>" | start <id> | done <id> | wait <id> | list. T-NN ids alias `task`; C-NN cards live in .specweave/cards/<branch>.jsonl')
|
|
157
|
+
.option('--line <text>', 'Card text (max 100 chars)')
|
|
158
|
+
.option('--link <url>', 'Card link (PR URL, report path, artifact URL)')
|
|
159
|
+
.option('-e, --evidence <text>', 'Evidence for `done`')
|
|
160
|
+
.option('--run <cmd>', 'With `done` on a T-NN card: run <cmd>, exit 0 required')
|
|
161
|
+
.option('--reason <text>', 'Why the card waits (`wait`)')
|
|
162
|
+
.option('-f, --force', 'Override a live claim (T-NN cards)')
|
|
163
|
+
.option('--json', 'Machine-readable output')
|
|
164
|
+
.action(async (action, idOrText, increment, options) => {
|
|
165
|
+
const { cardCommand } = await import('../dist/src/cli/commands/card.js');
|
|
166
|
+
process.exitCode = await cardCommand(action, idOrText, increment, options);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// Cards command - print the card checklist for an increment (or the branch)
|
|
170
|
+
program
|
|
171
|
+
.command('cards [incrementId]')
|
|
172
|
+
.description('Print the card checklist: a header, a blank line, then one ✓ / ✱ / ○ line per card with its link')
|
|
173
|
+
.option('--md', 'Markdown checklist (the default output)')
|
|
174
|
+
.option('--json', 'Machine-readable output')
|
|
175
|
+
.action(async (incrementId, options) => {
|
|
176
|
+
const { cardsCommand } = await import('../dist/src/cli/commands/card.js');
|
|
177
|
+
process.exitCode = await cardsCommand(incrementId, options);
|
|
178
|
+
});
|
|
179
|
+
|
|
151
180
|
// Verify command - run the project's verification commands, write reports/verify.{md,json}
|
|
152
181
|
program
|
|
153
182
|
.command('verify [incrementId]')
|
|
154
183
|
.description("Run the project's test/lint/build commands and write reports/verify.{md,json}")
|
|
155
184
|
.option('--cmd <command>', 'Command to run (repeatable; overrides config/auto-detection)', (val, acc) => { (acc || []).push(val); return acc || [val]; }, [])
|
|
156
185
|
.option('--json', 'Print the verify report as JSON')
|
|
186
|
+
.option('--reason <text>', 'Pass with no test commands configured; the reason is recorded in verify.json')
|
|
157
187
|
.action(async (incrementId, options) => {
|
|
158
188
|
const { verifyCommand } = await import('../dist/src/cli/commands/verify.js');
|
|
159
189
|
process.exitCode = await verifyCommand(incrementId, options);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI: `specweave card <action>` and `specweave cards [inc] --md` — the card
|
|
3
|
+
* checklist folded from the ledger.
|
|
4
|
+
*
|
|
5
|
+
* card add "<text>" new card C-NN in .specweave/cards/<branch>.jsonl
|
|
6
|
+
* card start <id> [inc] [--line] claim (T-NN → `task claim`)
|
|
7
|
+
* card done <id> [inc] [--line] [--link] done (T-NN → `task done`)
|
|
8
|
+
* card wait <id> [inc] [--line] block (T-NN → `task block`)
|
|
9
|
+
* card list [inc] `task list` for an increment, else the branch checklist
|
|
10
|
+
* cards [inc] --md header, blank line, one `✓ / ✱ / ○ text (link)` per card
|
|
11
|
+
*
|
|
12
|
+
* T-NN ids are thin aliases of `specweave task`; C-NN ids live in the
|
|
13
|
+
* branch-keyed store for work without an increment (0933 D-01).
|
|
14
|
+
*
|
|
15
|
+
* @module cli/commands/card
|
|
16
|
+
*/
|
|
17
|
+
import { type TaskCommandOptions } from './task.js';
|
|
18
|
+
export interface CardCommandOptions extends TaskCommandOptions {
|
|
19
|
+
md?: boolean;
|
|
20
|
+
/** Override the branch (tests). */
|
|
21
|
+
branch?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Entry point. Returns the process exit code. */
|
|
24
|
+
export declare function cardCommand(action: string, a?: string, b?: string, opts?: CardCommandOptions): Promise<number>;
|
|
25
|
+
/** `specweave cards [inc] [--md|--json]`. */
|
|
26
|
+
export declare function cardsCommand(incrementId?: string, opts?: CardCommandOptions): Promise<number>;
|
|
27
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,kDAAkD;AAClD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmExH;AAED,6CAA6C;AAC7C,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBvG"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI: `specweave card <action>` and `specweave cards [inc] --md` — the card
|
|
3
|
+
* checklist folded from the ledger.
|
|
4
|
+
*
|
|
5
|
+
* card add "<text>" new card C-NN in .specweave/cards/<branch>.jsonl
|
|
6
|
+
* card start <id> [inc] [--line] claim (T-NN → `task claim`)
|
|
7
|
+
* card done <id> [inc] [--line] [--link] done (T-NN → `task done`)
|
|
8
|
+
* card wait <id> [inc] [--line] block (T-NN → `task block`)
|
|
9
|
+
* card list [inc] `task list` for an increment, else the branch checklist
|
|
10
|
+
* cards [inc] --md header, blank line, one `✓ / ✱ / ○ text (link)` per card
|
|
11
|
+
*
|
|
12
|
+
* T-NN ids are thin aliases of `specweave task`; C-NN ids live in the
|
|
13
|
+
* branch-keyed store for work without an increment (0933 D-01).
|
|
14
|
+
*
|
|
15
|
+
* @module cli/commands/card
|
|
16
|
+
*/
|
|
17
|
+
import { execFileSync } from 'child_process';
|
|
18
|
+
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
19
|
+
import { clampCardLine, getAgentId } from '../../core/tasks/ledger.js';
|
|
20
|
+
import { incrementCards, readOriginUrl, renderChecklist } from '../../core/tasks/cards.js';
|
|
21
|
+
import { resolveIncrement, readLeaseHours, IncrementResolutionError } from '../../core/tasks/resolve-increment.js';
|
|
22
|
+
import { addBranchCard, appendBranchEvent, branchCardIds, branchCards, branchCardsPath, currentBranch, normalizeCardId } from '../../core/tasks/branch-cards.js';
|
|
23
|
+
import { readTitle } from '../../core/session/pickup.js';
|
|
24
|
+
import { taskCommand } from './task.js';
|
|
25
|
+
const ACTIONS = ['add', 'start', 'done', 'wait', 'list'];
|
|
26
|
+
const TASK_ACTION = { start: 'claim', done: 'done', wait: 'block' };
|
|
27
|
+
/** Entry point. Returns the process exit code. */
|
|
28
|
+
export async function cardCommand(action, a, b, opts = {}) {
|
|
29
|
+
const out = (s) => process.stdout.write(s + '\n');
|
|
30
|
+
const err = (s) => process.stderr.write(s + '\n');
|
|
31
|
+
if (!ACTIONS.includes(action)) {
|
|
32
|
+
err(`Unknown card action "${action}". Actions: ${ACTIONS.join(', ')}`);
|
|
33
|
+
return 2;
|
|
34
|
+
}
|
|
35
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
36
|
+
const projectRoot = resolveEffectiveRoot(cwd);
|
|
37
|
+
const agent = opts.agent ?? getAgentId();
|
|
38
|
+
const branch = opts.branch ?? currentBranch(projectRoot);
|
|
39
|
+
const file = branchCardsPath(projectRoot, branch);
|
|
40
|
+
if (action === 'add') {
|
|
41
|
+
const text = [a, b].filter(Boolean).join(' ').trim() || opts.line?.trim();
|
|
42
|
+
if (!text) {
|
|
43
|
+
err('Usage: specweave card add "<text>"');
|
|
44
|
+
return 2;
|
|
45
|
+
}
|
|
46
|
+
const { line, truncated } = clampCardLine(text);
|
|
47
|
+
if (truncated)
|
|
48
|
+
err(`warning: card text is longer than 100 characters; stored as "${line}"`);
|
|
49
|
+
const id = addBranchCard(file, line, agent);
|
|
50
|
+
out(`Added ${id} on ${branch ?? 'no branch'}: ${line}`);
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
if (action === 'list') {
|
|
54
|
+
const inc = boundIncrement(projectRoot, a, err);
|
|
55
|
+
if (inc === null)
|
|
56
|
+
return 1;
|
|
57
|
+
if (inc)
|
|
58
|
+
return taskCommand('list', inc.id, undefined, opts);
|
|
59
|
+
out(renderChecklist(branchCards(file, cardOpts(projectRoot)), branchHeader(branch)));
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
if (!a) {
|
|
63
|
+
err(`Usage: specweave card ${action} <T-NN | C-NN> [increment]`);
|
|
64
|
+
return 2;
|
|
65
|
+
}
|
|
66
|
+
const cardId = /^c-?\d+$/i.test(a.trim()) ? normalizeCardId(a) : undefined;
|
|
67
|
+
if (!cardId) {
|
|
68
|
+
const taskOpts = { ...opts };
|
|
69
|
+
if (action === 'wait' && !taskOpts.reason && !taskOpts.note)
|
|
70
|
+
taskOpts.reason = opts.line ?? 'waiting';
|
|
71
|
+
return taskCommand(TASK_ACTION[action], a, b, taskOpts);
|
|
72
|
+
}
|
|
73
|
+
if (!branchCardIds(file).includes(cardId)) {
|
|
74
|
+
err(`Card ${cardId} not found in ${rel(projectRoot, file)}. Add one with \`specweave card add "<text>"\`.`);
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
const event = { t: cardId, e: 'claim', by: agent, at: new Date().toISOString() };
|
|
78
|
+
if (opts.line?.trim()) {
|
|
79
|
+
const { line, truncated } = clampCardLine(opts.line);
|
|
80
|
+
if (truncated)
|
|
81
|
+
err(`warning: --line is longer than 100 characters; stored as "${line}"`);
|
|
82
|
+
event.line = line;
|
|
83
|
+
}
|
|
84
|
+
if (opts.link?.trim())
|
|
85
|
+
event.link = opts.link.trim();
|
|
86
|
+
if (action === 'done') {
|
|
87
|
+
event.e = 'done';
|
|
88
|
+
const sha = headSha(projectRoot);
|
|
89
|
+
event.evidence = [opts.evidence?.trim(), opts.link?.trim(), sha ? `HEAD ${sha}` : undefined].filter(Boolean).join('\n') || 'card done';
|
|
90
|
+
}
|
|
91
|
+
else if (action === 'wait') {
|
|
92
|
+
event.e = 'block';
|
|
93
|
+
event.note = (opts.reason ?? opts.note ?? opts.line ?? 'waiting').trim();
|
|
94
|
+
}
|
|
95
|
+
appendBranchEvent(file, event);
|
|
96
|
+
const card = branchCards(file, cardOpts(projectRoot)).find((c) => c.id === cardId);
|
|
97
|
+
const wanted = { start: 'doing', done: 'done', wait: 'waiting' }[action];
|
|
98
|
+
if (card?.state !== wanted) {
|
|
99
|
+
err(`${cardId} is ${card?.state ?? 'unknown'}: another agent holds it, or it is already finished`);
|
|
100
|
+
return 3;
|
|
101
|
+
}
|
|
102
|
+
out(`${cardId} ${card.state}: ${card.line}${card.link ? ` (${card.link})` : ''}`);
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
/** `specweave cards [inc] [--md|--json]`. */
|
|
106
|
+
export async function cardsCommand(incrementId, opts = {}) {
|
|
107
|
+
const out = (s) => process.stdout.write(s + '\n');
|
|
108
|
+
const err = (s) => process.stderr.write(s + '\n');
|
|
109
|
+
const projectRoot = resolveEffectiveRoot(opts.cwd ?? process.cwd());
|
|
110
|
+
const inc = boundIncrement(projectRoot, incrementId, err);
|
|
111
|
+
if (inc === null)
|
|
112
|
+
return 1;
|
|
113
|
+
let header;
|
|
114
|
+
let cards;
|
|
115
|
+
if (inc) {
|
|
116
|
+
const title = readTitle(inc.dir);
|
|
117
|
+
header = `${inc.id}${title ? ` ${title}` : ''}`;
|
|
118
|
+
cards = incrementCards(inc.dir, { ...cardOpts(projectRoot), leaseHours: readLeaseHours(projectRoot) });
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const branch = opts.branch ?? currentBranch(projectRoot);
|
|
122
|
+
header = branchHeader(branch);
|
|
123
|
+
cards = branchCards(branchCardsPath(projectRoot, branch), cardOpts(projectRoot));
|
|
124
|
+
}
|
|
125
|
+
out(opts.json ? JSON.stringify({ increment: inc?.id ?? null, header, cards }, null, 2) : renderChecklist(cards, header));
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The increment cards bind to: the named one, else the single active one.
|
|
130
|
+
* `undefined` when none is open (branch-keyed cards), `null` on an error
|
|
131
|
+
* already printed (unknown id, several active).
|
|
132
|
+
*/
|
|
133
|
+
function boundIncrement(projectRoot, id, err) {
|
|
134
|
+
try {
|
|
135
|
+
return resolveIncrement(projectRoot, id);
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
if (!(e instanceof IncrementResolutionError))
|
|
139
|
+
throw e;
|
|
140
|
+
if (!id && e.candidates.length === 0)
|
|
141
|
+
return undefined;
|
|
142
|
+
err(e.message);
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function branchHeader(branch) {
|
|
147
|
+
return `Cards on ${branch ?? 'no branch'}`;
|
|
148
|
+
}
|
|
149
|
+
function cardOpts(projectRoot) {
|
|
150
|
+
return { origin: readOriginUrl(projectRoot) };
|
|
151
|
+
}
|
|
152
|
+
function rel(root, p) {
|
|
153
|
+
return p.startsWith(root) ? p.slice(root.length + 1) : p;
|
|
154
|
+
}
|
|
155
|
+
function headSha(cwd) {
|
|
156
|
+
try {
|
|
157
|
+
return execFileSync('git', ['rev-parse', '--short', 'HEAD'], { cwd, encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim() || undefined;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../../src/cli/commands/card.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
* task skip T-01 [inc] --reason "…" (terminal; reason mandatory)
|
|
13
13
|
* task render [inc] [--write] print the board; --write refreshes a legacy tasks.md
|
|
14
14
|
*
|
|
15
|
+
* `claim`, `done` and `block` accept `--line "<card text>"` (max 100 chars,
|
|
16
|
+
* longer text is truncated with a warning) and `--link <url or path>`; they
|
|
17
|
+
* feed the card checklist (`specweave cards --md`).
|
|
18
|
+
*
|
|
15
19
|
* `inc` defaults to the single active increment. Every command is read+append
|
|
16
20
|
* only on ledger.jsonl. Task definitions (spec.md `## Tasks`, or a legacy
|
|
17
21
|
* tasks.md) are never rewritten, so bookkeeping does not dirty the tree.
|
|
@@ -35,6 +39,10 @@ export interface TaskCommandOptions {
|
|
|
35
39
|
cwd?: string;
|
|
36
40
|
/** Override agent id (tests). */
|
|
37
41
|
agent?: string;
|
|
42
|
+
/** Card text for claim/done/block (max 100 chars). */
|
|
43
|
+
line?: string;
|
|
44
|
+
/** Card link (PR URL, report path, artifact URL) for claim/done/block. */
|
|
45
|
+
link?: string;
|
|
38
46
|
}
|
|
39
47
|
export declare const EXIT_LOST_RACE = 3;
|
|
40
48
|
export declare const EXIT_FILES_OVERLAP = 4;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAwBH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,eAAe,IAAI,CAAC;AAIjC,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsOxH"}
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
* task skip T-01 [inc] --reason "…" (terminal; reason mandatory)
|
|
13
13
|
* task render [inc] [--write] print the board; --write refreshes a legacy tasks.md
|
|
14
14
|
*
|
|
15
|
+
* `claim`, `done` and `block` accept `--line "<card text>"` (max 100 chars,
|
|
16
|
+
* longer text is truncated with a warning) and `--link <url or path>`; they
|
|
17
|
+
* feed the card checklist (`specweave cards --md`).
|
|
18
|
+
*
|
|
15
19
|
* `inc` defaults to the single active increment. Every command is read+append
|
|
16
20
|
* only on ledger.jsonl. Task definitions (spec.md `## Tasks`, or a legacy
|
|
17
21
|
* tasks.md) are never rewritten, so bookkeeping does not dirty the tree.
|
|
@@ -26,7 +30,7 @@ import * as path from 'path';
|
|
|
26
30
|
import { runShell, isShellCommand } from '../../core/tasks/run-shell.js';
|
|
27
31
|
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
28
32
|
import { closeChain, currentSessionId, markClosePending } from '../../core/increment/close-pending.js';
|
|
29
|
-
import { appendEvent, recordSessionOnce, getAgentId, ledgerPath, describeState } from '../../core/tasks/ledger.js';
|
|
33
|
+
import { appendEvent, clampCardLine, recordSessionOnce, getAgentId, ledgerPath, describeState } from '../../core/tasks/ledger.js';
|
|
30
34
|
import { loadTaskBoard, nextTask, fileOverlaps, unmetDeps, normalizeTaskId, writeRenderedTasksMd, renderBoardTable, } from '../../core/tasks/task-board.js';
|
|
31
35
|
import { resolveIncrement, readLeaseHours, ensureIncrementStarted, IncrementResolutionError } from '../../core/tasks/resolve-increment.js';
|
|
32
36
|
import { readSpecAcs } from '../../core/tasks/verify-runner.js';
|
|
@@ -77,6 +81,16 @@ export async function taskCommand(action, a, b, opts = {}) {
|
|
|
77
81
|
const acsOf = () => (specAcs ?? (specAcs = readSpecAcs(inc.dir)));
|
|
78
82
|
/** `--reason` is the documented spelling for skip/block; `--note` stays as an alias. */
|
|
79
83
|
const note = (opts.note ?? opts.reason)?.trim() || undefined;
|
|
84
|
+
/** `--line` / `--link`, for the events that move a card. */
|
|
85
|
+
const card = {};
|
|
86
|
+
if (opts.line?.trim()) {
|
|
87
|
+
const { line, truncated } = clampCardLine(opts.line);
|
|
88
|
+
if (truncated)
|
|
89
|
+
err(`warning: --line is longer than 100 characters; stored as "${line}"`);
|
|
90
|
+
card.line = line;
|
|
91
|
+
}
|
|
92
|
+
if (opts.link?.trim())
|
|
93
|
+
card.link = opts.link.trim();
|
|
80
94
|
/** A live claim held by somebody else (stale claims are takeable). */
|
|
81
95
|
const heldByOther = (t) => (t.state.status === 'claimed' || t.state.status === 'blocked') && t.state.by !== agent;
|
|
82
96
|
/**
|
|
@@ -177,7 +191,7 @@ export async function taskCommand(action, a, b, opts = {}) {
|
|
|
177
191
|
return EXIT_FILES_OVERLAP;
|
|
178
192
|
}
|
|
179
193
|
recordSessionOnce(ledger, agent);
|
|
180
|
-
append('claim', taskId, note ? { note } : {});
|
|
194
|
+
append('claim', taskId, { ...(note ? { note } : {}), ...card });
|
|
181
195
|
// Re-read: the earliest live claim wins; confirm we own it.
|
|
182
196
|
const after = board.tasks.find((t) => t.id === taskId);
|
|
183
197
|
if (after.state.by !== agent || (after.state.status !== 'claimed')) {
|
|
@@ -213,6 +227,8 @@ export async function taskCommand(action, a, b, opts = {}) {
|
|
|
213
227
|
}
|
|
214
228
|
evidence = [`${cmd} → exit 0`, `log: ${rel(projectRoot, logPath)}`, tail, evidence].filter(Boolean).join('\n');
|
|
215
229
|
}
|
|
230
|
+
if (!evidence && card.link)
|
|
231
|
+
evidence = card.link;
|
|
216
232
|
if (!evidence) {
|
|
217
233
|
err(`done needs evidence: --evidence "<sha or test output>" or --run "<cmd>" (task Test: ${task.test ?? 'none'})`);
|
|
218
234
|
return 2;
|
|
@@ -239,7 +255,7 @@ export async function taskCommand(action, a, b, opts = {}) {
|
|
|
239
255
|
if (!opts.json)
|
|
240
256
|
out(`Auto-claimed ${taskId} as ${agent}`);
|
|
241
257
|
}
|
|
242
|
-
append('done', taskId, { evidence, ...(note ? { note } : {}) });
|
|
258
|
+
append('done', taskId, { evidence, ...(note ? { note } : {}), ...card });
|
|
243
259
|
const doneState = stateOf(taskId);
|
|
244
260
|
if (doneState.status !== 'done') {
|
|
245
261
|
err(`${taskId} was NOT recorded as done — ${describeState(doneState)}. The ledger keeps the earliest live claim; ask that agent to release it.`);
|
|
@@ -274,7 +290,7 @@ export async function taskCommand(action, a, b, opts = {}) {
|
|
|
274
290
|
err(refusal(task, taskId, leaseHours));
|
|
275
291
|
return EXIT_LOST_RACE;
|
|
276
292
|
}
|
|
277
|
-
append('block', taskId, { note });
|
|
293
|
+
append('block', taskId, { note, ...card });
|
|
278
294
|
out(`Blocked ${taskId}: ${note}`);
|
|
279
295
|
return 0;
|
|
280
296
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAA+D,MAAM,4BAA4B,CAAC;AAChL,OAAO,EACL,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GAGjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAC3I,OAAO,EAAE,WAAW,EAAgB,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAmBjE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3G,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,CAAU,EAAE,CAAU,EAAE,OAA2B,EAAE;IACrG,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;IAEzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,wBAAwB,MAAM,eAAe,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5H,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1C,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACH,GAAG,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,wBAAwB,EAAE,CAAC;YAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QACxE,MAAM,CAAC,CAAC;IACV,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAc,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAkB,EAAE,CAAS,EAAE,QAA8B,EAAE,EAAE,EAAE;QACjF,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC9D,KAAK,GAAG,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC;IACF,IAAI,OAA8B,CAAC;IACnC,MAAM,KAAK,GAAG,GAAc,EAAE,CAAC,CAAC,OAAO,KAAP,OAAO,GAAK,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAC,CAAC;IAClE,wFAAwF;IACxF,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC7D,sEAAsE;IACtE,MAAM,WAAW,GAAG,CAAC,CAAY,EAAW,EAAE,CAC5C,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC;IACzF;;;OAGG;IACH,MAAM,WAAW,GAAG,CAAC,EAAU,EAAQ,EAAE;QACvC,gBAAgB,CAAC,WAAW,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,mBAAmB,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC;IACF,qDAAqD;IACrD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC,KAAK,CAAC;IAE5E,6EAA6E;IAC7E,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ;QAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAErD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjB,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS;gBAC/E,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;aAC1O,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC;YAClC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS;gBAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,oCAAoC,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,IAAI;gBACX,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClH,CAAC,CAAC,QAAQ;oBACR,CAAC,CAAC,gBAAgB,GAAG,CAAC,EAAE,cAAc,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBACzD,CAAC,CAAC,wBAAwB,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,OAAO,qCAAqC,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;YAC7K,OAAO,CAAC,CAAC;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACnH,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC5C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC;YACzJ,OAAO,CAAC,CAAC;QACX,CAAC;QACD,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QAC7J,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,oBAAoB,EAAE,CAAC,CAAC;QACtF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACzF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,0EAA0E;IAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,GAAG,CAAC,yBAAyB,MAAM,qBAAqB,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACtF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,SAAS,OAAO,kBAAkB,GAAG,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC7I,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;IAEvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,eAAe,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YACpI,uEAAuE;YACvE,uEAAuE;YACvE,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBAAC,OAAO,cAAc,CAAC;YAAC,CAAC;YACxG,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;gBAAC,OAAO,eAAe,CAAC;YAAC,CAAC;YAChJ,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,oCAAoC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAAC,OAAO,kBAAkB,CAAC;YAAC,CAAC;YACxK,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,4DAA4D;YAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;YACxD,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;gBACnE,GAAG,CAAC,qBAAqB,MAAM,KAAK,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClE,OAAO,cAAc,CAAC;YACxB,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,OAAO,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACxK,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,oBAAoB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAClG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACpC,GAAG,CAAC,GAAG,MAAM,mBAAmB,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,0CAA0C,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAClM,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBAAC,OAAO,cAAc,CAAC;YAAC,CAAC;YAExG,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACjG,IAAI,OAA2B,CAAC;YAChC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;gBAChD,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACxE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,GAAG,CAAC,GAAG,MAAM,iBAAiB,GAAG,aAAa,MAAM,CAAC,IAAI,eAAe,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBAC/G,OAAO,eAAe,CAAC;gBACzB,CAAC;gBACD,QAAQ,GAAG,CAAC,GAAG,GAAG,WAAW,EAAE,QAAQ,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjH,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,GAAG,CAAC,uFAAuF,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAChJ,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YACjC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,QAAQ,GAAG,GAAG,QAAQ,UAAU,GAAG,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,OAAO,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,0BAA0B,OAAO,sBAAsB,MAAM,kBAAkB,MAAM,6CAA6C,CAAC,CAAC;YAC1I,CAAC;YAED,gEAAgE;YAChE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC;YACjH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,qEAAqE;gBACrE,qEAAqE;gBACrE,qEAAqE;gBACrE,MAAM,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI;oBAAE,GAAG,CAAC,WAAW,CAAC,CAAC;gBAChD,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACjC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI;oBAAE,GAAG,CAAC,gBAAgB,MAAM,OAAO,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAChC,GAAG,CAAC,GAAG,MAAM,+BAA+B,aAAa,CAAC,SAAS,CAAC,2EAA2E,CAAC,CAAC;gBACjJ,OAAO,cAAc,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,iBAAiB,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7P,IAAI,OAAO;gBAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,kBAAkB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YACvH,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,sBAAsB,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAChL,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,GAAG,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAC3E,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBAAC,OAAO,cAAc,CAAC;YAAC,CAAC;YACxG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,GAAG,CAAC,WAAW,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;YAClC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YACpF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,GAAG,MAAM,uBAAuB,IAAI,CAAC,KAAK,CAAC,EAAE,0CAA0C,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAC7I,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;gBAAC,OAAO,cAAc,CAAC;YAAC,CAAC;YACxG,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;YACnD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACnC,GAAG,CAAC,GAAG,MAAM,kCAAkC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC5E,OAAO,cAAc,CAAC;YACxB,CAAC;YACD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,oEAAoE;YACpE,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC7E,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,gBAAgB,IAAI,EAAE,CAAC,CAAC;YAC3K,IAAI,OAAO;gBAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,qDAAqD;AACrD,SAAS,SAAS,CAAC,EAAU;IAC3B,OAAO,6CAA6C,UAAU,CAAC,EAAE,CAAC,8CAA8C,CAAC;AACnH,CAAC;AAED,oEAAoE;AACpE,SAAS,OAAO,CAAC,IAAe,EAAE,MAAc,EAAE,UAAkB;IAClE,OAAO,YAAY,MAAM,kBAAkB,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,kCAAkC,MAAM,kCAAkC,UAAU,oCAAoC,CAAC;AAC7M,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,YAAoB,EAAE,MAAc,EAAE,GAAW,EAAE,IAAY,EAAE,MAAc;IAClG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC/C,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,MAAM,MAAM,CAAC,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IACvG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,EAAU;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IAChJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,OAAO,CAAC,CAAY,EAAE,GAAc;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,KAAK,CAAC,CAAY,EAAE,MAAiB,EAAE;IAC9C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QACtF,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,CAAY,EAAE,KAAa,EAAE,MAAiB,EAAE;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;QACpB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,6BAA6B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjH,YAAY,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE;QAChF,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QACpC,oCAAoC,CAAC,CAAC,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,8BAA8B,EAAE;KACrH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACpJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../../src/cli/commands/task.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export interface VerifyCommandOptions {
|
|
|
10
10
|
cwd?: string;
|
|
11
11
|
/** Extra/override commands, repeatable `--cmd`. */
|
|
12
12
|
cmd?: string[];
|
|
13
|
+
/** Accept an empty command list (recorded in verify.json). */
|
|
14
|
+
reason?: string;
|
|
13
15
|
}
|
|
14
16
|
export declare function verifyCommand(incrementId?: string, opts?: VerifyCommandOptions): Promise<number>;
|
|
15
17
|
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C1G"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
|
|
9
9
|
import { resolveIncrement, readLeaseHours, IncrementResolutionError } from '../../core/tasks/resolve-increment.js';
|
|
10
|
-
import { runVerify, describeUncheckedAcs } from '../../core/tasks/verify-runner.js';
|
|
10
|
+
import { runVerify, describeUncheckedAcs, NO_COMMANDS_MESSAGE } from '../../core/tasks/verify-runner.js';
|
|
11
11
|
export async function verifyCommand(incrementId, opts = {}) {
|
|
12
12
|
const out = (s) => process.stdout.write(s + '\n');
|
|
13
13
|
const err = (s) => process.stderr.write(s + '\n');
|
|
@@ -29,15 +29,19 @@ export async function verifyCommand(incrementId, opts = {}) {
|
|
|
29
29
|
leaseHours: readLeaseHours(projectRoot),
|
|
30
30
|
onCommand: (cmd) => { if (!opts.json)
|
|
31
31
|
out(`▶ ${cmd}`); },
|
|
32
|
+
reason: opts.reason,
|
|
32
33
|
});
|
|
34
|
+
if (result.results.length === 0 && !result.report.reason) {
|
|
35
|
+
err(`${NO_COMMANDS_MESSAGE} (${result.source}). Set testing.commands in .specweave/config.json, pass --cmd "<command>", or --reason "<why nothing runs>".`);
|
|
36
|
+
}
|
|
33
37
|
if (opts.json) {
|
|
34
38
|
out(JSON.stringify(result.report, null, 2));
|
|
35
39
|
}
|
|
36
40
|
else {
|
|
37
41
|
for (const r of result.results)
|
|
38
42
|
out(`${r.exit === 0 ? 'ok ' : 'FAIL'} ${r.cmd} (exit ${r.exit})`);
|
|
39
|
-
if (result.results.length === 0)
|
|
40
|
-
out(`No verification commands (${result.source})
|
|
43
|
+
if (result.results.length === 0 && result.report.reason)
|
|
44
|
+
out(`No verification commands (${result.source}); accepted — reason: ${result.report.reason}`);
|
|
41
45
|
const { report } = result;
|
|
42
46
|
out(`ACs ${report.acs.done}/${report.acs.total} · tasks ${report.tasks.done}/${report.tasks.total} done (${report.tasks.skipped} skipped)`);
|
|
43
47
|
const unchecked = describeUncheckedAcs(report.acs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,12 @@ export declare class LifecycleHookDispatcher {
|
|
|
62
62
|
/**
|
|
63
63
|
* Check if dispatch should be skipped (test environment guard)
|
|
64
64
|
*/
|
|
65
|
+
/**
|
|
66
|
+
* Whether the increment's spec.md declares user stories (`## User Stories`
|
|
67
|
+
* or a `US-NNN` heading). `undefined` when spec.md cannot be read, so a
|
|
68
|
+
* missing file never changes the sync decision.
|
|
69
|
+
*/
|
|
70
|
+
static specHasUserStories(projectRoot: string, incrementId: string): boolean | undefined;
|
|
65
71
|
private static shouldSkip;
|
|
66
72
|
/**
|
|
67
73
|
* Resolve increment directory path from incrementId.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LifecycleHookDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC;;;;OAIG;WACU,kBAAkB,CAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,eAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;;;OAMG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,IAAI,CAAC;IAiEhB;;;;;;;;OAQG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"LifecycleHookDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC;;;;OAIG;WACU,kBAAkB,CAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,eAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;;;OAMG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAClD,OAAO,CAAC,IAAI,CAAC;IAiEhB;;;;;;;;OAQG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;IAoN/B;;OAEG;IACH;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAUxF,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB;;;OAGG;mBACkB,mBAAmB;IAwBxC;;OAEG;mBACkB,eAAe;IAQpC;;;;;;;;OAQG;mBACkB,eAAe;IA6EpC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;CAwCxB"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Part of increment 0298: Hook Lifecycle Wiring
|
|
13
13
|
*/
|
|
14
|
-
import { appendFileSync, mkdirSync } from 'fs';
|
|
14
|
+
import { appendFileSync, mkdirSync, readFileSync } from 'fs';
|
|
15
15
|
import path from 'path';
|
|
16
16
|
import { ConfigManager } from '../config/config-manager.js';
|
|
17
17
|
/**
|
|
@@ -142,9 +142,22 @@ export class LifecycleHookDispatcher {
|
|
|
142
142
|
// Metadata read failure shouldn't block — default: don't skip
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
|
-
|
|
145
|
+
let shouldSyncLivingDocs = livingDocs === 'onDone' && autoSync && !perIncrementSkip;
|
|
146
146
|
if (!doneConfig && !shouldSyncLivingDocs)
|
|
147
147
|
return result;
|
|
148
|
+
// 0933: a 3.0 spec has acceptance criteria but no user stories, so a
|
|
149
|
+
// living-docs sync only produces "User Stories: 0". Skip it with one
|
|
150
|
+
// line; the external closure below runs either way.
|
|
151
|
+
if (shouldSyncLivingDocs && LifecycleHookDispatcher.specHasUserStories(projectRoot, incrementId) === false) {
|
|
152
|
+
shouldSyncLivingDocs = false;
|
|
153
|
+
result.syncSuccess.push('Living docs skipped: spec.md has no user stories');
|
|
154
|
+
try {
|
|
155
|
+
process.stdout.write(`Living docs skipped for ${incrementId}: spec.md has no user stories\n`);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// stdout replaced (tests) — the syncSuccess entry still records it
|
|
159
|
+
}
|
|
160
|
+
}
|
|
148
161
|
// v1.0.357 + 0696: Support closing issues for ALL providers (JIRA/ADO/GitHub).
|
|
149
162
|
// close_github_issue is the legacy flag; close_external_issue is the new generic one.
|
|
150
163
|
// SyncCoordinator.syncIncrementClosure() closes every enabled provider using a
|
|
@@ -198,7 +211,11 @@ export class LifecycleHookDispatcher {
|
|
|
198
211
|
LifecycleHookDispatcher.logError('onIncrementDone:livingDocs', error);
|
|
199
212
|
}
|
|
200
213
|
}
|
|
201
|
-
// STEP 2: Run closure sync for JIRA/ADO
|
|
214
|
+
// STEP 2: Run closure sync for JIRA/ADO. It runs whether living docs
|
|
215
|
+
// synced, were skipped or failed: living docs never gate the closure.
|
|
216
|
+
// GitHub issues are closed from metadata.json by completeIncrement()
|
|
217
|
+
// (GitHubReconciler.closeCompletedIncrementIssues) right after this hook,
|
|
218
|
+
// so they close without living docs too.
|
|
202
219
|
// 0696 hotfix: forward per-provider errors from SyncCoordinator into result.syncErrors
|
|
203
220
|
// AND persist them to .specweave/logs/hooks.log via logError.
|
|
204
221
|
const syncClosure = async () => {
|
|
@@ -278,6 +295,21 @@ export class LifecycleHookDispatcher {
|
|
|
278
295
|
/**
|
|
279
296
|
* Check if dispatch should be skipped (test environment guard)
|
|
280
297
|
*/
|
|
298
|
+
/**
|
|
299
|
+
* Whether the increment's spec.md declares user stories (`## User Stories`
|
|
300
|
+
* or a `US-NNN` heading). `undefined` when spec.md cannot be read, so a
|
|
301
|
+
* missing file never changes the sync decision.
|
|
302
|
+
*/
|
|
303
|
+
static specHasUserStories(projectRoot, incrementId) {
|
|
304
|
+
let spec;
|
|
305
|
+
try {
|
|
306
|
+
spec = readFileSync(path.join(projectRoot, '.specweave', 'increments', incrementId, 'spec.md'), 'utf-8');
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
return undefined;
|
|
310
|
+
}
|
|
311
|
+
return /^##\s+User Stories\b/im.test(spec) || /^#{2,4}\s+\**US-\d+/m.test(spec);
|
|
312
|
+
}
|
|
281
313
|
static shouldSkip(options) {
|
|
282
314
|
// Allow tests to bypass the guard to test the dispatcher itself
|
|
283
315
|
if (options._bypassTestGuard === true)
|