@paths.design/caws-cli 11.0.0 → 11.1.1
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 +2 -2
- package/dist/index.js +2 -2
- package/dist/init/harness-detect.d.ts +18 -0
- package/dist/init/harness-detect.d.ts.map +1 -0
- package/dist/init/harness-detect.js +90 -0
- package/dist/init/harness-detect.js.map +1 -0
- package/dist/init/hook-install.d.ts +53 -0
- package/dist/init/hook-install.d.ts.map +1 -0
- package/dist/init/hook-install.js +421 -0
- package/dist/init/hook-install.js.map +1 -0
- package/dist/init/hook-packs/manifest-claude-code.d.ts +4 -0
- package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -0
- package/dist/init/hook-packs/manifest-claude-code.js +190 -0
- package/dist/init/hook-packs/manifest-claude-code.js.map +1 -0
- package/dist/init/hook-packs/register.d.ts +19 -0
- package/dist/init/hook-packs/register.d.ts.map +1 -0
- package/dist/init/hook-packs/register.js +37 -0
- package/dist/init/hook-packs/register.js.map +1 -0
- package/dist/init/hook-packs/types.d.ts +123 -0
- package/dist/init/hook-packs/types.d.ts.map +1 -0
- package/dist/init/hook-packs/types.js +29 -0
- package/dist/init/hook-packs/types.js.map +1 -0
- package/dist/shell/commands/gates.d.ts.map +1 -1
- package/dist/shell/commands/gates.js +28 -1
- package/dist/shell/commands/gates.js.map +1 -1
- package/dist/shell/commands/init.d.ts +9 -0
- package/dist/shell/commands/init.d.ts.map +1 -1
- package/dist/shell/commands/init.js +131 -27
- package/dist/shell/commands/init.js.map +1 -1
- package/dist/shell/commands/specs.d.ts +41 -0
- package/dist/shell/commands/specs.d.ts.map +1 -0
- package/dist/shell/commands/specs.js +264 -0
- package/dist/shell/commands/specs.js.map +1 -0
- package/dist/shell/commands/worktree.d.ts +38 -0
- package/dist/shell/commands/worktree.d.ts.map +1 -0
- package/dist/shell/commands/worktree.js +286 -0
- package/dist/shell/commands/worktree.js.map +1 -0
- package/dist/shell/gates/disposition.d.ts.map +1 -1
- package/dist/shell/gates/disposition.js +33 -3
- package/dist/shell/gates/disposition.js.map +1 -1
- package/dist/shell/gates/local-evaluators/budget-limit.d.ts +24 -0
- package/dist/shell/gates/local-evaluators/budget-limit.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/budget-limit.js +67 -0
- package/dist/shell/gates/local-evaluators/budget-limit.js.map +1 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.d.ts +25 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.js +74 -0
- package/dist/shell/gates/local-evaluators/diff-helpers.js.map +1 -0
- package/dist/shell/gates/local-evaluators/index.d.ts +28 -0
- package/dist/shell/gates/local-evaluators/index.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/index.js +67 -0
- package/dist/shell/gates/local-evaluators/index.js.map +1 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.d.ts +23 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.js +67 -0
- package/dist/shell/gates/local-evaluators/scope-boundary.js.map +1 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.d.ts +12 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.d.ts.map +1 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.js +73 -0
- package/dist/shell/gates/local-evaluators/spec-completeness.js.map +1 -0
- package/dist/shell/index.d.ts +4 -0
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +13 -1
- package/dist/shell/index.js.map +1 -1
- package/dist/shell/register.d.ts.map +1 -1
- package/dist/shell/register.js +192 -2
- package/dist/shell/register.js.map +1 -1
- package/dist/shell/render/init-hook-pack.d.ts +16 -0
- package/dist/shell/render/init-hook-pack.d.ts.map +1 -0
- package/dist/shell/render/init-hook-pack.js +206 -0
- package/dist/shell/render/init-hook-pack.js.map +1 -0
- package/dist/store/atomic-write.d.ts +20 -2
- package/dist/store/atomic-write.d.ts.map +1 -1
- package/dist/store/atomic-write.js +44 -2
- package/dist/store/atomic-write.js.map +1 -1
- package/dist/store/lifecycle-lock.d.ts +34 -0
- package/dist/store/lifecycle-lock.d.ts.map +1 -0
- package/dist/store/lifecycle-lock.js +168 -0
- package/dist/store/lifecycle-lock.js.map +1 -0
- package/dist/store/lifecycle-transaction.d.ts +79 -0
- package/dist/store/lifecycle-transaction.d.ts.map +1 -0
- package/dist/store/lifecycle-transaction.js +319 -0
- package/dist/store/lifecycle-transaction.js.map +1 -0
- package/dist/store/rules.d.ts +16 -0
- package/dist/store/rules.d.ts.map +1 -1
- package/dist/store/rules.js +17 -0
- package/dist/store/rules.js.map +1 -1
- package/dist/store/specs-writer.d.ts +61 -0
- package/dist/store/specs-writer.d.ts.map +1 -0
- package/dist/store/specs-writer.js +506 -0
- package/dist/store/specs-writer.js.map +1 -0
- package/dist/store/worktrees-writer.d.ts +77 -0
- package/dist/store/worktrees-writer.d.ts.map +1 -0
- package/dist/store/worktrees-writer.js +674 -0
- package/dist/store/worktrees-writer.js.map +1 -0
- package/dist/store/yaml-patch.d.ts +7 -0
- package/dist/store/yaml-patch.d.ts.map +1 -0
- package/dist/store/yaml-patch.js +250 -0
- package/dist/store/yaml-patch.js.map +1 -0
- package/package.json +7 -4
- package/templates/hook-packs/claude-code/CLAUDE.md +172 -0
- package/templates/hook-packs/claude-code/audit.sh +121 -0
- package/templates/hook-packs/claude-code/block-dangerous.sh +158 -0
- package/templates/hook-packs/claude-code/classify_command.py +1064 -0
- package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +63 -0
- package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +50 -0
- package/templates/hook-packs/claude-code/dispatch/session_start.sh +41 -0
- package/templates/hook-packs/claude-code/dispatch/stop.sh +37 -0
- package/templates/hook-packs/claude-code/guard-strikes.sh +140 -0
- package/templates/hook-packs/claude-code/lib/parse-input.sh +127 -0
- package/templates/hook-packs/claude-code/lib/run-handlers.sh +212 -0
- package/templates/hook-packs/claude-code/reset-danger-latch.sh +21 -0
- package/templates/hook-packs/claude-code/reset-strikes.sh +243 -0
- package/templates/hook-packs/claude-code/runtime-paths.sh +80 -0
- package/templates/hook-packs/claude-code/scope-guard.sh +392 -0
- package/templates/hook-packs/claude-code/session-caws-status.sh +171 -0
- package/templates/hook-packs/claude-code/session-log.sh +180 -0
- package/templates/hook-packs/claude-code/worktree-guard.sh +240 -0
- package/templates/hook-packs/claude-code/worktree-write-guard.sh +77 -0
|
@@ -1,42 +1,110 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// `caws init` — vNext bootstrap of the canonical .caws/ shape
|
|
2
|
+
// `caws init` — vNext bootstrap of the canonical .caws/ shape, plus
|
|
3
|
+
// optional hook-pack install for the operating agent harness.
|
|
3
4
|
//
|
|
4
5
|
// Pipeline:
|
|
5
6
|
// 1. resolveRepoRoot(cwd) — needs git, NOT .caws/
|
|
6
7
|
// 2. initProject(repoRoot) — store-side adapter does the work
|
|
7
|
-
// 3. render result
|
|
8
|
+
// 3. render canonical-state result — step 1 message
|
|
9
|
+
// 4. resolve agent surface — from --agent-surface or detection
|
|
10
|
+
// 5. install hook pack (or skip) — step 2 message
|
|
11
|
+
// 6. inspect .claude/settings.json — step 3 message
|
|
12
|
+
// 7. emit activation contract — step 4 message
|
|
13
|
+
//
|
|
14
|
+
// The init surface is **non-interactive**. All decisions come from CLI
|
|
15
|
+
// flags or filesystem signals; nothing prompts. Each step prints a
|
|
16
|
+
// clearly-labeled section so a turn-by-turn agent can read what
|
|
17
|
+
// happened and what to do next.
|
|
8
18
|
//
|
|
9
19
|
// Exit codes:
|
|
10
20
|
// 0 = canonical state established (created OR already_initialized)
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
// Discipline:
|
|
18
|
-
// - No --force in 7b. Force modes turn into cleanup tools and cleanup
|
|
19
|
-
// belongs to a later doctor/repair surface.
|
|
20
|
-
// - The seeded policy MUST pass kernel validation BEFORE landing on
|
|
21
|
-
// disk. If our default is bad, that's a programmer error and exit 2
|
|
22
|
-
// is correct — we do NOT write a known-invalid policy just to keep
|
|
23
|
-
// `init` succeeding.
|
|
24
|
-
// - Init never overwrites existing canonical files. Idempotent rerun
|
|
25
|
-
// reports "already initialized"; partial state is filled in
|
|
26
|
-
// additively (a half-bootstrapped project becomes whole).
|
|
21
|
+
// AND hook-pack step did not refuse files
|
|
22
|
+
// 1 = legacy residue refused (INIT_LEGACY_RESIDUE)
|
|
23
|
+
// OR hook-pack install refused one or more files (use --adopt or
|
|
24
|
+
// --overwrite to resolve)
|
|
25
|
+
// 2 = repo-root resolution failed, write I/O failed, or default
|
|
26
|
+
// policy invalid
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
exports.runInitCommand = runInitCommand;
|
|
29
|
+
const harness_detect_1 = require("../../init/harness-detect");
|
|
30
|
+
const hook_install_1 = require("../../init/hook-install");
|
|
31
|
+
const register_1 = require("../../init/hook-packs/register");
|
|
29
32
|
const store_1 = require("../../store");
|
|
30
33
|
const diagnostic_1 = require("../render/diagnostic");
|
|
31
34
|
const init_1 = require("../render/init");
|
|
35
|
+
const init_hook_pack_1 = require("../render/init-hook-pack");
|
|
36
|
+
function chooseSurface(explicit, detection) {
|
|
37
|
+
if (explicit !== undefined) {
|
|
38
|
+
return { surface: explicit, reason: 'explicit' };
|
|
39
|
+
}
|
|
40
|
+
if (detection.kind === 'single') {
|
|
41
|
+
return { surface: detection.surface, reason: 'detected' };
|
|
42
|
+
}
|
|
43
|
+
if (detection.kind === 'ambiguous') {
|
|
44
|
+
return { surface: null, reason: 'ambiguous' };
|
|
45
|
+
}
|
|
46
|
+
return { surface: null, reason: 'none' };
|
|
47
|
+
}
|
|
48
|
+
function performHookPackStep(repoRoot, surface, reason, options) {
|
|
49
|
+
if (surface === null) {
|
|
50
|
+
// No surface chosen — emit skipped_ambiguous.
|
|
51
|
+
return {
|
|
52
|
+
outcome: 'skipped_ambiguous',
|
|
53
|
+
pack: null,
|
|
54
|
+
actions: [],
|
|
55
|
+
activation: 'not_applicable',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (surface === 'none') {
|
|
59
|
+
return {
|
|
60
|
+
outcome: 'skipped_explicit_none',
|
|
61
|
+
pack: null,
|
|
62
|
+
actions: [],
|
|
63
|
+
activation: 'not_applicable',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const resolution = (0, register_1.resolveHookPack)(surface);
|
|
67
|
+
if (resolution.kind === 'declared_not_implemented') {
|
|
68
|
+
// Treat as a skip with a clear message in the renderer.
|
|
69
|
+
return {
|
|
70
|
+
outcome: 'skipped_ambiguous',
|
|
71
|
+
pack: null,
|
|
72
|
+
actions: [],
|
|
73
|
+
activation: 'not_applicable',
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (resolution.kind === 'none') {
|
|
77
|
+
return {
|
|
78
|
+
outcome: 'skipped_explicit_none',
|
|
79
|
+
pack: null,
|
|
80
|
+
actions: [],
|
|
81
|
+
activation: 'not_applicable',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const installOpts = { repoRoot };
|
|
85
|
+
if (options.overwrite !== undefined) {
|
|
86
|
+
installOpts.overwrite = options.overwrite;
|
|
87
|
+
}
|
|
88
|
+
if (options.adopt !== undefined) {
|
|
89
|
+
installOpts.adopt = options.adopt;
|
|
90
|
+
}
|
|
91
|
+
return (0, hook_install_1.installHookPack)(resolution.pack, installOpts);
|
|
92
|
+
}
|
|
32
93
|
function runInitCommand(opts = {}) {
|
|
33
94
|
const cwd = opts.cwd ?? process.cwd();
|
|
34
95
|
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
35
96
|
const err = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
36
97
|
const showData = opts.showData === true;
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
98
|
+
// Validate --agent-surface early. An unknown value is a programmer
|
|
99
|
+
// error from the caller (or a typo at the CLI); fail fast with a
|
|
100
|
+
// clear diagnostic.
|
|
101
|
+
if (opts.agentSurface !== undefined &&
|
|
102
|
+
!(0, register_1.isKnownSurface)(opts.agentSurface)) {
|
|
103
|
+
err(`caws init: unknown --agent-surface "${opts.agentSurface}".`);
|
|
104
|
+
err(' Known values: claude-code, cursor, windsurf, none.');
|
|
105
|
+
return 2;
|
|
106
|
+
}
|
|
107
|
+
// Step 0: resolve repo root.
|
|
40
108
|
const root = (0, store_1.resolveRepoRoot)(cwd);
|
|
41
109
|
if (!root.ok) {
|
|
42
110
|
err('caws init: failed to resolve repo root.');
|
|
@@ -44,12 +112,9 @@ function runInitCommand(opts = {}) {
|
|
|
44
112
|
return 2;
|
|
45
113
|
}
|
|
46
114
|
const { repoRoot } = root.value;
|
|
47
|
-
//
|
|
115
|
+
// Step 1: bootstrap canonical .caws/ state.
|
|
48
116
|
const result = (0, store_1.initProject)(repoRoot);
|
|
49
117
|
if (!result.ok) {
|
|
50
|
-
// Decide exit code from the diagnostic rule. Legacy residue is a
|
|
51
|
-
// user-correctable domain error (1); everything else is a hard
|
|
52
|
-
// store/programmer failure (2).
|
|
53
118
|
const isLegacy = result.errors.some((d) => d.rule === 'store.init.legacy_residue');
|
|
54
119
|
err(isLegacy
|
|
55
120
|
? 'caws init: refusing to overwrite legacy state.'
|
|
@@ -57,8 +122,47 @@ function runInitCommand(opts = {}) {
|
|
|
57
122
|
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
58
123
|
return isLegacy ? 1 : 2;
|
|
59
124
|
}
|
|
60
|
-
// 3. Render and exit.
|
|
61
125
|
out((0, init_1.renderInit)({ result: result.value, repoRoot }));
|
|
62
|
-
|
|
126
|
+
// Step 2: choose the agent surface and install the hook pack.
|
|
127
|
+
const detection = (0, harness_detect_1.detectAgentHarness)(repoRoot);
|
|
128
|
+
const chosen = chooseSurface(opts.agentSurface, detection);
|
|
129
|
+
const hookPackResult = performHookPackStep(repoRoot, chosen.surface, chosen.reason, opts);
|
|
130
|
+
// When detection produced an ambiguous result and no explicit flag,
|
|
131
|
+
// the renderer's skipped_ambiguous branch handles the message.
|
|
132
|
+
// When the user requested an unimplemented surface (cursor, windsurf
|
|
133
|
+
// today), the renderer surfaces it as a skipped-ambiguous with the
|
|
134
|
+
// same instruction shape.
|
|
135
|
+
if (opts.agentSurface !== undefined &&
|
|
136
|
+
opts.agentSurface !== 'none' &&
|
|
137
|
+
chosen.surface !== null) {
|
|
138
|
+
const resolution = (0, register_1.resolveHookPack)(opts.agentSurface);
|
|
139
|
+
if (resolution.kind === 'declared_not_implemented') {
|
|
140
|
+
err(`caws init: --agent-surface "${opts.agentSurface}" is declared but not yet implemented in this CLI version.`);
|
|
141
|
+
err(' Known values: claude-code, cursor, windsurf, none.');
|
|
142
|
+
err(' Implemented values: claude-code.');
|
|
143
|
+
// Surface the canonical-state success (step 1 already printed) so
|
|
144
|
+
// the user knows .caws/ is set up.
|
|
145
|
+
return 1;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
out((0, init_hook_pack_1.renderHookPackInstall)(hookPackResult));
|
|
149
|
+
// Step 3: inspect .claude/settings.json. Only meaningful when a pack
|
|
150
|
+
// was actually installed (claude-code in v11.1). For 'none' or
|
|
151
|
+
// 'skipped_ambiguous', skip this check.
|
|
152
|
+
let wiringStatus;
|
|
153
|
+
if (hookPackResult.pack !== null) {
|
|
154
|
+
wiringStatus = (0, hook_install_1.inspectClaudeSettings)(repoRoot);
|
|
155
|
+
out((0, init_hook_pack_1.renderSettingsWiring)(wiringStatus));
|
|
156
|
+
}
|
|
157
|
+
// Step 4: activation contract. The contract message tailors to whether
|
|
158
|
+
// anything was actually installed/updated this run AND whether the
|
|
159
|
+
// settings.json wiring is in place — without those signals the panel
|
|
160
|
+
// becomes a constant STOP sign on re-runs, training agents to ignore
|
|
161
|
+
// it.
|
|
162
|
+
out((0, init_hook_pack_1.renderActivationContract)(hookPackResult, wiringStatus));
|
|
163
|
+
// Exit code: refusal in pack install → 1 so callers see something went
|
|
164
|
+
// wrong; otherwise 0.
|
|
165
|
+
const anyRefused = hookPackResult.actions.some((a) => a.action === 'refused');
|
|
166
|
+
return anyRefused ? 1 : 0;
|
|
63
167
|
}
|
|
64
168
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/shell/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ActorKind } from '@paths.design/caws-kernel';
|
|
2
|
+
interface BaseCommandOptions {
|
|
3
|
+
readonly cwd?: string;
|
|
4
|
+
readonly now?: () => Date;
|
|
5
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
6
|
+
readonly out?: (line: string) => void;
|
|
7
|
+
readonly err?: (line: string) => void;
|
|
8
|
+
readonly showData?: boolean;
|
|
9
|
+
readonly actorKind?: ActorKind;
|
|
10
|
+
}
|
|
11
|
+
export interface SpecsCreateOptions extends BaseCommandOptions {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly title: string;
|
|
14
|
+
readonly mode: string;
|
|
15
|
+
readonly riskTier: number | string;
|
|
16
|
+
}
|
|
17
|
+
export declare function runSpecsCreateCommand(opts: SpecsCreateOptions): number;
|
|
18
|
+
export interface SpecsListOptions extends BaseCommandOptions {
|
|
19
|
+
/** Include archived specs in the listing. */
|
|
20
|
+
readonly includeArchived?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function runSpecsListCommand(opts?: SpecsListOptions): number;
|
|
23
|
+
export interface SpecsShowOptions extends BaseCommandOptions {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function runSpecsShowCommand(opts: SpecsShowOptions): number;
|
|
27
|
+
export interface SpecsCloseOptions extends BaseCommandOptions {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly resolution: string;
|
|
30
|
+
readonly reason?: string;
|
|
31
|
+
readonly mergeCommit?: string;
|
|
32
|
+
readonly supersededBy?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function runSpecsCloseCommand(opts: SpecsCloseOptions): number;
|
|
35
|
+
export interface SpecsArchiveOptions extends BaseCommandOptions {
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly reason?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function runSpecsArchiveCommand(opts: SpecsArchiveOptions): number;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=specs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/specs.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoB7E,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAyDD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAmDtE;AAID,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,gBAAqB,GAAG,MAAM,CAgCvE;AAID,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAelE;AAID,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CA0CpE;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgCxE"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `caws specs` command group — v11 spec lifecycle commands.
|
|
3
|
+
//
|
|
4
|
+
// CLI-SPECS-001: the canonical replacement for manual lifecycle YAML
|
|
5
|
+
// edits. Five subcommands:
|
|
6
|
+
// - caws specs create <id> --title <title> --mode <mode> --risk-tier <n>
|
|
7
|
+
// - caws specs list [--archived]
|
|
8
|
+
// - caws specs show <id>
|
|
9
|
+
// - caws specs close <id> --resolution <r> [--reason <text>] [--merge-commit <sha>] [--superseded-by <id>]
|
|
10
|
+
// - caws specs archive <id> [--reason <text>]
|
|
11
|
+
//
|
|
12
|
+
// Discipline:
|
|
13
|
+
// - All mutation paths go through specs-writer (which uses the
|
|
14
|
+
// lifecycle-transaction substrate from Slice 4).
|
|
15
|
+
// - The shell never appends events directly. Event append happens
|
|
16
|
+
// inside the writer, which routes through appendEvent.
|
|
17
|
+
// - The shell never patches YAML directly. yaml-patch lives in the
|
|
18
|
+
// store layer.
|
|
19
|
+
// - The shell parses CLI args, builds an actor envelope, calls the
|
|
20
|
+
// writer, and renders the outcome.
|
|
21
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
24
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
25
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
26
|
+
}
|
|
27
|
+
Object.defineProperty(o, k2, desc);
|
|
28
|
+
}) : (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
o[k2] = m[k];
|
|
31
|
+
}));
|
|
32
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
33
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
34
|
+
}) : function(o, v) {
|
|
35
|
+
o["default"] = v;
|
|
36
|
+
});
|
|
37
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
38
|
+
var ownKeys = function(o) {
|
|
39
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
40
|
+
var ar = [];
|
|
41
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
42
|
+
return ar;
|
|
43
|
+
};
|
|
44
|
+
return ownKeys(o);
|
|
45
|
+
};
|
|
46
|
+
return function (mod) {
|
|
47
|
+
if (mod && mod.__esModule) return mod;
|
|
48
|
+
var result = {};
|
|
49
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
50
|
+
__setModuleDefault(result, mod);
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
53
|
+
})();
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.runSpecsCreateCommand = runSpecsCreateCommand;
|
|
56
|
+
exports.runSpecsListCommand = runSpecsListCommand;
|
|
57
|
+
exports.runSpecsShowCommand = runSpecsShowCommand;
|
|
58
|
+
exports.runSpecsCloseCommand = runSpecsCloseCommand;
|
|
59
|
+
exports.runSpecsArchiveCommand = runSpecsArchiveCommand;
|
|
60
|
+
const path = __importStar(require("node:path"));
|
|
61
|
+
const caws_kernel_1 = require("@paths.design/caws-kernel");
|
|
62
|
+
const store_1 = require("../../store");
|
|
63
|
+
const specs_writer_1 = require("../../store/specs-writer");
|
|
64
|
+
const actor_1 = require("../session/actor");
|
|
65
|
+
const resolve_session_1 = require("../session/resolve-session");
|
|
66
|
+
const diagnostic_1 = require("../render/diagnostic");
|
|
67
|
+
const VALID_MODES = ['feature', 'refactor', 'fix', 'doc', 'chore'];
|
|
68
|
+
const VALID_RESOLUTIONS = ['completed', 'superseded', 'abandoned'];
|
|
69
|
+
function setupIO(opts) {
|
|
70
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
71
|
+
const nowFn = opts.now ?? (() => new Date());
|
|
72
|
+
const env = opts.env ?? process.env;
|
|
73
|
+
const out = opts.out ?? ((s) => process.stdout.write(s + '\n'));
|
|
74
|
+
const errFn = opts.err ?? ((s) => process.stderr.write(s + '\n'));
|
|
75
|
+
const showData = opts.showData === true;
|
|
76
|
+
return { cwd, nowFn, env, out, err: errFn, showData };
|
|
77
|
+
}
|
|
78
|
+
function resolveCawsCtx(cwd, errFn, showData, cmd) {
|
|
79
|
+
const r = (0, store_1.resolveRepoRoot)(cwd);
|
|
80
|
+
if (!r.ok) {
|
|
81
|
+
errFn(`caws specs ${cmd}: failed to resolve repo root.`);
|
|
82
|
+
errFn((0, diagnostic_1.renderDiagnostics)(r.errors, { showData }));
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return { repoRoot: r.value.repoRoot, cawsDir: r.value.cawsDir };
|
|
86
|
+
}
|
|
87
|
+
function buildActorOrError(cawsDir, cwd, env, nowFn, actorKind, errFn, showData, cmd) {
|
|
88
|
+
const sessionResult = (0, resolve_session_1.resolveSession)({
|
|
89
|
+
cawsDir,
|
|
90
|
+
worktreeRoot: cwd,
|
|
91
|
+
env,
|
|
92
|
+
now: nowFn,
|
|
93
|
+
allowMint: true,
|
|
94
|
+
});
|
|
95
|
+
if (!sessionResult.ok) {
|
|
96
|
+
errFn(`caws specs ${cmd}: failed to resolve session identity.`);
|
|
97
|
+
errFn((0, diagnostic_1.renderDiagnostics)(sessionResult.errors, { showData }));
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
return (0, actor_1.buildActor)({
|
|
101
|
+
session: sessionResult.value,
|
|
102
|
+
kind: actorKind ?? 'agent',
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function runSpecsCreateCommand(opts) {
|
|
106
|
+
const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
|
|
107
|
+
if (!VALID_MODES.includes(opts.mode)) {
|
|
108
|
+
err(`caws specs create: invalid --mode "${opts.mode}". Expected one of: ${VALID_MODES.join(', ')}.`);
|
|
109
|
+
return 1;
|
|
110
|
+
}
|
|
111
|
+
const riskTier = typeof opts.riskTier === 'string'
|
|
112
|
+
? Number.parseInt(opts.riskTier, 10)
|
|
113
|
+
: opts.riskTier;
|
|
114
|
+
if (riskTier !== 1 && riskTier !== 2 && riskTier !== 3) {
|
|
115
|
+
err(`caws specs create: invalid --risk-tier "${opts.riskTier}". Expected 1, 2, or 3.`);
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
const ctx = resolveCawsCtx(cwd, err, showData, 'create');
|
|
119
|
+
if (ctx === null)
|
|
120
|
+
return 2;
|
|
121
|
+
const actor = buildActorOrError(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'create');
|
|
122
|
+
if (actor === null)
|
|
123
|
+
return 2;
|
|
124
|
+
const result = (0, specs_writer_1.createSpec)(ctx.cawsDir, {
|
|
125
|
+
id: opts.id,
|
|
126
|
+
title: opts.title,
|
|
127
|
+
mode: opts.mode,
|
|
128
|
+
riskTier: riskTier,
|
|
129
|
+
initialState: 'active',
|
|
130
|
+
now: nowFn,
|
|
131
|
+
actor,
|
|
132
|
+
});
|
|
133
|
+
if (!(0, caws_kernel_1.isOk)(result)) {
|
|
134
|
+
err('caws specs create: failed.');
|
|
135
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
136
|
+
return 1;
|
|
137
|
+
}
|
|
138
|
+
const outcome = result.value;
|
|
139
|
+
if (outcome.kind === 'partial_failure_recovered') {
|
|
140
|
+
err('caws specs create: partial failure recovered (no state change).');
|
|
141
|
+
err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
|
|
142
|
+
return 1;
|
|
143
|
+
}
|
|
144
|
+
out(`created ${outcome.id} at ${path.relative(ctx.repoRoot, outcome.path)} (lifecycle_state: active)`);
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
function runSpecsListCommand(opts = {}) {
|
|
148
|
+
const { cwd, out, err, showData } = setupIO(opts);
|
|
149
|
+
const ctx = resolveCawsCtx(cwd, err, showData, 'list');
|
|
150
|
+
if (ctx === null)
|
|
151
|
+
return 2;
|
|
152
|
+
const result = (0, specs_writer_1.listSpecs)(ctx.cawsDir, {
|
|
153
|
+
includeArchived: opts.includeArchived === true,
|
|
154
|
+
});
|
|
155
|
+
if (!(0, caws_kernel_1.isOk)(result)) {
|
|
156
|
+
err('caws specs list: failed.');
|
|
157
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
158
|
+
return 1;
|
|
159
|
+
}
|
|
160
|
+
const { active, archived } = result.value;
|
|
161
|
+
if (active.length === 0 && archived.length === 0) {
|
|
162
|
+
out('(no specs)');
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
for (const entry of active) {
|
|
166
|
+
const rel = path.relative(ctx.repoRoot, entry.path);
|
|
167
|
+
out(`${entry.id.padEnd(28)} ${entry.lifecycle_state.padEnd(8)} ${entry.title}`);
|
|
168
|
+
void rel;
|
|
169
|
+
}
|
|
170
|
+
if (opts.includeArchived === true && archived.length > 0) {
|
|
171
|
+
out('');
|
|
172
|
+
out('-- archived --');
|
|
173
|
+
for (const entry of archived) {
|
|
174
|
+
out(`${entry.id.padEnd(28)} ${entry.lifecycle_state.padEnd(8)} ${entry.title}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
function runSpecsShowCommand(opts) {
|
|
180
|
+
const { cwd, out, err, showData } = setupIO(opts);
|
|
181
|
+
const ctx = resolveCawsCtx(cwd, err, showData, 'show');
|
|
182
|
+
if (ctx === null)
|
|
183
|
+
return 2;
|
|
184
|
+
const result = (0, specs_writer_1.showSpec)(ctx.cawsDir, opts.id);
|
|
185
|
+
if (!(0, caws_kernel_1.isOk)(result)) {
|
|
186
|
+
err('caws specs show: failed.');
|
|
187
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
188
|
+
return 1;
|
|
189
|
+
}
|
|
190
|
+
// Print the raw source so the user gets byte-faithful output
|
|
191
|
+
// (comments preserved, etc).
|
|
192
|
+
out(result.value.source);
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
function runSpecsCloseCommand(opts) {
|
|
196
|
+
const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
|
|
197
|
+
if (!VALID_RESOLUTIONS.includes(opts.resolution)) {
|
|
198
|
+
err(`caws specs close: invalid --resolution "${opts.resolution}". Expected one of: ${VALID_RESOLUTIONS.join(', ')}.`);
|
|
199
|
+
return 1;
|
|
200
|
+
}
|
|
201
|
+
const ctx = resolveCawsCtx(cwd, err, showData, 'close');
|
|
202
|
+
if (ctx === null)
|
|
203
|
+
return 2;
|
|
204
|
+
const actor = buildActorOrError(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'close');
|
|
205
|
+
if (actor === null)
|
|
206
|
+
return 2;
|
|
207
|
+
const input = {
|
|
208
|
+
id: opts.id,
|
|
209
|
+
resolution: opts.resolution,
|
|
210
|
+
now: nowFn,
|
|
211
|
+
actor,
|
|
212
|
+
};
|
|
213
|
+
if (opts.reason !== undefined)
|
|
214
|
+
input.reason = opts.reason;
|
|
215
|
+
if (opts.mergeCommit !== undefined)
|
|
216
|
+
input.mergeCommit = opts.mergeCommit;
|
|
217
|
+
if (opts.supersededBy !== undefined)
|
|
218
|
+
input.supersededBy = opts.supersededBy;
|
|
219
|
+
const result = (0, specs_writer_1.closeSpec)(ctx.cawsDir, input);
|
|
220
|
+
if (!(0, caws_kernel_1.isOk)(result)) {
|
|
221
|
+
err('caws specs close: failed.');
|
|
222
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
223
|
+
return 1;
|
|
224
|
+
}
|
|
225
|
+
const outcome = result.value;
|
|
226
|
+
if (outcome.kind === 'partial_failure_recovered') {
|
|
227
|
+
err('caws specs close: partial failure recovered (no state change).');
|
|
228
|
+
err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
|
|
229
|
+
return 1;
|
|
230
|
+
}
|
|
231
|
+
out(`closed ${outcome.id} (resolution: ${opts.resolution})`);
|
|
232
|
+
return 0;
|
|
233
|
+
}
|
|
234
|
+
function runSpecsArchiveCommand(opts) {
|
|
235
|
+
const { cwd, nowFn, env, out, err, showData } = setupIO(opts);
|
|
236
|
+
const ctx = resolveCawsCtx(cwd, err, showData, 'archive');
|
|
237
|
+
if (ctx === null)
|
|
238
|
+
return 2;
|
|
239
|
+
const actor = buildActorOrError(ctx.cawsDir, cwd, env, nowFn, opts.actorKind, err, showData, 'archive');
|
|
240
|
+
if (actor === null)
|
|
241
|
+
return 2;
|
|
242
|
+
const input = {
|
|
243
|
+
id: opts.id,
|
|
244
|
+
now: nowFn,
|
|
245
|
+
actor,
|
|
246
|
+
};
|
|
247
|
+
if (opts.reason !== undefined)
|
|
248
|
+
input.reason = opts.reason;
|
|
249
|
+
const result = (0, specs_writer_1.archiveSpec)(ctx.cawsDir, input);
|
|
250
|
+
if (!(0, caws_kernel_1.isOk)(result)) {
|
|
251
|
+
err('caws specs archive: failed.');
|
|
252
|
+
err((0, diagnostic_1.renderDiagnostics)(result.errors, { showData }));
|
|
253
|
+
return 1;
|
|
254
|
+
}
|
|
255
|
+
const outcome = result.value;
|
|
256
|
+
if (outcome.kind === 'partial_failure_recovered') {
|
|
257
|
+
err('caws specs archive: partial failure recovered (no state change).');
|
|
258
|
+
err((0, diagnostic_1.renderDiagnostics)(outcome.cause, { showData }));
|
|
259
|
+
return 1;
|
|
260
|
+
}
|
|
261
|
+
out(`archived ${outcome.id} → ${path.relative(ctx.repoRoot, outcome.path)}`);
|
|
262
|
+
return 0;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=specs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../../src/shell/commands/specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ActorKind } from '@paths.design/caws-kernel';
|
|
2
|
+
interface BaseCommandOptions {
|
|
3
|
+
readonly cwd?: string;
|
|
4
|
+
readonly now?: () => Date;
|
|
5
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
6
|
+
readonly out?: (line: string) => void;
|
|
7
|
+
readonly err?: (line: string) => void;
|
|
8
|
+
readonly showData?: boolean;
|
|
9
|
+
readonly actorKind?: ActorKind;
|
|
10
|
+
}
|
|
11
|
+
export interface WorktreeCreateOptions extends BaseCommandOptions {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly specId: string;
|
|
14
|
+
readonly baseBranch?: string;
|
|
15
|
+
readonly branch?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function runWorktreeCreateCommand(opts: WorktreeCreateOptions): number;
|
|
18
|
+
export interface WorktreeListOptions extends BaseCommandOptions {
|
|
19
|
+
}
|
|
20
|
+
export declare function runWorktreeListCommand(opts?: WorktreeListOptions): number;
|
|
21
|
+
export interface WorktreeBindOptions extends BaseCommandOptions {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
readonly specId: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function runWorktreeBindCommand(opts: WorktreeBindOptions): number;
|
|
26
|
+
export interface WorktreeDestroyOptions extends BaseCommandOptions {
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly abandonUnmerged?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function runWorktreeDestroyCommand(opts: WorktreeDestroyOptions): number;
|
|
31
|
+
export interface WorktreeMergeOptions extends BaseCommandOptions {
|
|
32
|
+
readonly name: string;
|
|
33
|
+
readonly dryRun?: boolean;
|
|
34
|
+
readonly message?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function runWorktreeMergeCommand(opts: WorktreeMergeOptions): number;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=worktree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/shell/commands/worktree.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,2BAA2B,CAAC;AAcjE,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAkED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAuC5E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;CAAG;AAElE,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAwB7E;AAID,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CA+BxE;AAID,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAkC9E;AAID,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA0C1E"}
|