greprag 5.59.1 → 5.59.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.
Files changed (49) hide show
  1. package/dist/codex-chip-hooks.js +17 -2
  2. package/dist/codex-chip-hooks.js.map +1 -1
  3. package/dist/commands/codex-chip/cleanup-command.d.ts +1 -0
  4. package/dist/commands/codex-chip/cleanup-command.js +96 -0
  5. package/dist/commands/codex-chip/cleanup-command.js.map +1 -0
  6. package/dist/commands/codex-chip/command.js +44 -36
  7. package/dist/commands/codex-chip/command.js.map +1 -1
  8. package/dist/commands/codex-chip/git.js +8 -0
  9. package/dist/commands/codex-chip/git.js.map +1 -1
  10. package/dist/commands/codex-chip/goal-command.d.ts +1 -0
  11. package/dist/commands/codex-chip/goal-command.js +82 -0
  12. package/dist/commands/codex-chip/goal-command.js.map +1 -0
  13. package/dist/commands/codex-chip/goals.d.ts +51 -0
  14. package/dist/commands/codex-chip/goals.js +252 -0
  15. package/dist/commands/codex-chip/goals.js.map +1 -0
  16. package/dist/commands/codex-chip/inbox.d.ts +1 -1
  17. package/dist/commands/codex-chip/inbox.js +5 -11
  18. package/dist/commands/codex-chip/inbox.js.map +1 -1
  19. package/dist/commands/codex-chip/model.d.ts +21 -2
  20. package/dist/commands/codex-chip/model.js +9 -1
  21. package/dist/commands/codex-chip/model.js.map +1 -1
  22. package/dist/commands/codex-chip/naming.d.ts +8 -0
  23. package/dist/commands/codex-chip/naming.js +39 -0
  24. package/dist/commands/codex-chip/naming.js.map +1 -0
  25. package/dist/commands/codex-chip/native.d.ts +10 -7
  26. package/dist/commands/codex-chip/native.js +152 -61
  27. package/dist/commands/codex-chip/native.js.map +1 -1
  28. package/dist/commands/codex-chip/prompt.js +14 -6
  29. package/dist/commands/codex-chip/prompt.js.map +1 -1
  30. package/dist/commands/codex-chip/resume-command.d.ts +7 -0
  31. package/dist/commands/codex-chip/resume-command.js +105 -0
  32. package/dist/commands/codex-chip/resume-command.js.map +1 -0
  33. package/dist/commands/codex-chip/store.d.ts +1 -0
  34. package/dist/commands/codex-chip/store.js +16 -0
  35. package/dist/commands/codex-chip/store.js.map +1 -1
  36. package/dist/commands/codex-chip/worker.js +16 -1
  37. package/dist/commands/codex-chip/worker.js.map +1 -1
  38. package/dist/commands/init.js +1 -0
  39. package/dist/commands/init.js.map +1 -1
  40. package/dist/commands/load-primer-reminder.js +2 -2
  41. package/dist/commands/load-primer-reminder.js.map +1 -1
  42. package/dist/hook.js +3 -1
  43. package/dist/hook.js.map +1 -1
  44. package/dist/opencode-plugin.bundle.js +2 -2
  45. package/package.json +3 -2
  46. package/scripts/verify-publish.cjs +12 -0
  47. package/skill/greprag/docs/codex-chip.md +7 -0
  48. package/skill/templates/chip-leader.md +7 -0
  49. package/skill/templates/codex-chip-spawn.md +5 -0
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runGoalCommand = runGoalCommand;
4
+ const project_anchor_1 = require("../../project-anchor");
5
+ const goals_1 = require("./goals");
6
+ const store_1 = require("./store");
7
+ function flag(args, name) {
8
+ const index = args.indexOf(name);
9
+ return index >= 0 ? args[index + 1] : undefined;
10
+ }
11
+ function flags(args, name) {
12
+ const out = [];
13
+ for (let i = 0; i < args.length; i++)
14
+ if (args[i] === name && args[i + 1])
15
+ out.push(args[++i]);
16
+ return out;
17
+ }
18
+ function owner(args) {
19
+ const value = flag(args, '--owner-session') || process.env.CODEX_THREAD_ID;
20
+ if (!value)
21
+ throw new Error('Mission goals require the current Codex owner session or --owner-session.');
22
+ return value;
23
+ }
24
+ function runGoalCommand(args) {
25
+ const sub = args[0];
26
+ const rest = args.slice(1);
27
+ if (sub === 'create') {
28
+ const anchor = (0, project_anchor_1.readAnchor)(process.cwd());
29
+ if (!anchor.initialized)
30
+ throw new Error('Project is not initialized.');
31
+ const objective = flag(rest, '--objective');
32
+ const finalState = flag(rest, '--final-state');
33
+ if (!objective || !finalState)
34
+ throw new Error('goal create requires --objective and --final-state.');
35
+ const goal = (0, goals_1.createMissionGoal)({
36
+ projectId: anchor.projectId, ownerSessionId: owner(rest), objective, finalState,
37
+ criteria: (0, goals_1.parseGoalCriteria)(flags(rest, '--criterion')), parentGoalId: flag(rest, '--parent-goal'),
38
+ });
39
+ console.log(JSON.stringify(goal, null, 2));
40
+ return;
41
+ }
42
+ const id = rest[0];
43
+ if (!id)
44
+ throw new Error('Mission goal id is required.');
45
+ if (sub === 'status') {
46
+ const goal = (0, goals_1.readMissionGoal)(id);
47
+ if (!goal)
48
+ throw new Error(`Unknown mission goal: ${id}.`);
49
+ console.log(JSON.stringify(goal, null, 2));
50
+ return;
51
+ }
52
+ if (sub === 'accept') {
53
+ const summary = flag(rest, '--summary');
54
+ if (!summary)
55
+ throw new Error('goal accept requires --summary.');
56
+ const goal = (0, goals_1.acceptMissionGoal)(id, owner(rest), summary, flags(rest, '--integrated'));
57
+ const closeout = (0, store_1.listManifests)().filter(chip => chip.goalId === id).map(chip => ({
58
+ chipId: chip.id, title: chip.codex.displayName || chip.name,
59
+ archiveRequest: chip.codex.threadId ? { threadId: chip.codex.threadId, archived: true } : undefined,
60
+ cleanupCommand: `greprag codex chip cleanup ${chip.id}${chip.codex.threadId ? ' --native-archived' : ''}`,
61
+ }));
62
+ console.log(JSON.stringify({ goal, closeout }, null, 2));
63
+ return;
64
+ }
65
+ if (sub === 'exclude') {
66
+ const chip = flag(rest, '--chip');
67
+ const reason = flag(rest, '--reason');
68
+ if (!chip || !reason)
69
+ throw new Error('goal exclude requires --chip and --reason.');
70
+ console.log(JSON.stringify((0, goals_1.excludeGoalChip)(id, owner(rest), chip, reason), null, 2));
71
+ return;
72
+ }
73
+ if (sub === 'cancel') {
74
+ const reason = flag(rest, '--reason');
75
+ if (!reason)
76
+ throw new Error('goal cancel requires --reason.');
77
+ console.log(JSON.stringify((0, goals_1.cancelMissionGoal)(id, owner(rest), reason), null, 2));
78
+ return;
79
+ }
80
+ throw new Error('Usage: greprag codex chip goal create|status|accept|exclude|cancel ...');
81
+ }
82
+ //# sourceMappingURL=goal-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-command.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/goal-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { ChipManifest } from './model';
2
+ export interface GoalCriterion {
3
+ id: string;
4
+ text: string;
5
+ }
6
+ export interface GoalEvidence {
7
+ chipId: string;
8
+ text: string;
9
+ commit: string;
10
+ checks: string[];
11
+ at: string;
12
+ }
13
+ export interface MissionGoal {
14
+ version: 1;
15
+ id: string;
16
+ projectId: string;
17
+ ownerSessionId: string;
18
+ objective: string;
19
+ finalState: string;
20
+ criteria: GoalCriterion[];
21
+ parentGoalId?: string;
22
+ state: 'active' | 'accepted' | 'cancelled';
23
+ evidence: Record<string, GoalEvidence[]>;
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ acceptedAt?: string;
27
+ acceptedBy?: string;
28
+ acceptanceSummary?: string;
29
+ excludedChips?: Record<string, {
30
+ reason: string;
31
+ at: string;
32
+ }>;
33
+ cancellationReason?: string;
34
+ }
35
+ export declare function parseGoalCriteria(values: string[]): GoalCriterion[];
36
+ export declare function readMissionGoal(id: string): MissionGoal | null;
37
+ export declare function createMissionGoal(input: {
38
+ projectId: string;
39
+ ownerSessionId: string;
40
+ objective: string;
41
+ finalState: string;
42
+ criteria: GoalCriterion[];
43
+ parentGoalId?: string;
44
+ }): MissionGoal;
45
+ export declare function requireGoalForSpawn(id: string, projectId: string, ownerSessionId: string, covers: string[]): MissionGoal;
46
+ export declare function recordGoalEvidence(manifest: ChipManifest, evidence: Record<string, string>): void;
47
+ export declare function parseReportEvidence(values: string[], covers: string[]): Record<string, string>;
48
+ export declare function acceptMissionGoal(id: string, ownerSessionId: string, summary: string, integrated: string[]): MissionGoal;
49
+ export declare function excludeGoalChip(id: string, ownerSessionId: string, chipId: string, reason: string): MissionGoal;
50
+ export declare function cancelMissionGoal(id: string, ownerSessionId: string, reason: string): MissionGoal;
51
+ export declare function assertGoalAcceptedForCleanup(manifest: ChipManifest): void;
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseGoalCriteria = parseGoalCriteria;
37
+ exports.readMissionGoal = readMissionGoal;
38
+ exports.createMissionGoal = createMissionGoal;
39
+ exports.requireGoalForSpawn = requireGoalForSpawn;
40
+ exports.recordGoalEvidence = recordGoalEvidence;
41
+ exports.parseReportEvidence = parseReportEvidence;
42
+ exports.acceptMissionGoal = acceptMissionGoal;
43
+ exports.excludeGoalChip = excludeGoalChip;
44
+ exports.cancelMissionGoal = cancelMissionGoal;
45
+ exports.assertGoalAcceptedForCleanup = assertGoalAcceptedForCleanup;
46
+ const crypto = __importStar(require("crypto"));
47
+ const fs = __importStar(require("fs"));
48
+ const path = __importStar(require("path"));
49
+ const git_1 = require("./git");
50
+ const store_1 = require("./store");
51
+ function goalRoot() { return path.join((0, store_1.grepragHome)(), 'chip-goals'); }
52
+ function goalPath(id) { return path.join(goalRoot(), `${id}.json`); }
53
+ function meaningful(value, label) {
54
+ const text = value.trim();
55
+ if (text.length < 12)
56
+ throw new Error(`${label} must be a concrete statement of at least 12 characters.`);
57
+ return text;
58
+ }
59
+ function parseGoalCriteria(values) {
60
+ if (!values.length)
61
+ throw new Error('A mission goal requires at least one --criterion id:text.');
62
+ const seen = new Set();
63
+ return values.map(value => {
64
+ const split = value.indexOf(':');
65
+ const id = split > 0 ? value.slice(0, split).trim() : '';
66
+ const text = split > 0 ? value.slice(split + 1).trim() : '';
67
+ if (!/^[a-z][a-z0-9-]{1,39}$/.test(id) || text.length < 8) {
68
+ throw new Error(`Invalid criterion ${value}; use lowercase-id:concrete acceptance statement.`);
69
+ }
70
+ if (seen.has(id))
71
+ throw new Error(`Duplicate goal criterion id: ${id}.`);
72
+ seen.add(id);
73
+ return { id, text };
74
+ });
75
+ }
76
+ function readMissionGoal(id) {
77
+ try {
78
+ return JSON.parse(fs.readFileSync(goalPath(id), 'utf-8'));
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ }
84
+ function writeMissionGoal(goal) {
85
+ fs.mkdirSync(goalRoot(), { recursive: true });
86
+ const file = goalPath(goal.id);
87
+ const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
88
+ fs.writeFileSync(tmp, JSON.stringify(goal, null, 2) + '\n', 'utf-8');
89
+ fs.renameSync(tmp, file);
90
+ }
91
+ function createMissionGoal(input) {
92
+ const now = new Date().toISOString();
93
+ const goal = {
94
+ version: 1, id: crypto.randomUUID(), projectId: input.projectId,
95
+ ownerSessionId: input.ownerSessionId, objective: meaningful(input.objective, 'Goal objective'),
96
+ finalState: meaningful(input.finalState, 'Goal final state'), criteria: input.criteria,
97
+ parentGoalId: input.parentGoalId, state: 'active', evidence: {}, createdAt: now, updatedAt: now,
98
+ };
99
+ if (input.parentGoalId && !readMissionGoal(input.parentGoalId)) {
100
+ throw new Error(`Unknown parent mission goal: ${input.parentGoalId}.`);
101
+ }
102
+ return (0, store_1.withProjectChipLock)(goal.projectId, () => { writeMissionGoal(goal); return goal; });
103
+ }
104
+ function requireGoalForSpawn(id, projectId, ownerSessionId, covers) {
105
+ const goal = readMissionGoal(id);
106
+ if (!goal)
107
+ throw new Error(`Unknown mission goal: ${id}. Create it before spawning.`);
108
+ if (goal.projectId !== projectId || goal.ownerSessionId !== ownerSessionId || goal.state !== 'active') {
109
+ throw new Error('Mission goal must be active, project-local, and owned by the spawning parent session.');
110
+ }
111
+ if (!covers.length)
112
+ throw new Error('Every chip must declare at least one --covers <criterion-id>.');
113
+ const valid = new Set(goal.criteria.map(item => item.id));
114
+ const invalid = covers.filter(item => !valid.has(item));
115
+ if (invalid.length)
116
+ throw new Error(`Chip covers unknown goal criteria: ${invalid.join(', ')}.`);
117
+ return goal;
118
+ }
119
+ function recordGoalEvidence(manifest, evidence) {
120
+ if (!manifest.goalId)
121
+ return;
122
+ const goal = readMissionGoal(manifest.goalId);
123
+ if (!goal || goal.state !== 'active' || !manifest.report)
124
+ throw new Error('Mission goal is unavailable for report evidence.');
125
+ const covers = manifest.covers || [];
126
+ const missing = covers.filter(id => !evidence[id]?.trim());
127
+ const extra = Object.keys(evidence).filter(id => !covers.includes(id));
128
+ if (missing.length || extra.length) {
129
+ throw new Error(`Report evidence must map exactly to covered criteria; missing=${missing.join(',') || 'none'} extra=${extra.join(',') || 'none'}.`);
130
+ }
131
+ (0, store_1.withProjectChipLock)(goal.projectId, () => {
132
+ const current = readMissionGoal(goal.id);
133
+ if (current.state !== 'active')
134
+ throw new Error(`Mission goal is ${current.state}; report evidence requires active.`);
135
+ for (const [criterion, text] of Object.entries(evidence)) {
136
+ const prior = (current.evidence[criterion] || []).filter(item => item.chipId !== manifest.id);
137
+ current.evidence[criterion] = [...prior, {
138
+ chipId: manifest.id, text: text.trim(), commit: manifest.report.commit,
139
+ checks: manifest.report.checks, at: manifest.report.reportedAt,
140
+ }];
141
+ }
142
+ current.updatedAt = new Date().toISOString();
143
+ writeMissionGoal(current);
144
+ });
145
+ }
146
+ function parseReportEvidence(values, covers) {
147
+ const evidence = {};
148
+ for (const value of values) {
149
+ const split = value.indexOf(':');
150
+ const id = split > 0 ? value.slice(0, split).trim() : '';
151
+ const text = split > 0 ? value.slice(split + 1).trim() : '';
152
+ if (!id || text.length < 4)
153
+ throw new Error(`Invalid evidence ${value}; use criterion-id:concrete proof.`);
154
+ if (evidence[id])
155
+ throw new Error(`Duplicate evidence for criterion: ${id}.`);
156
+ evidence[id] = text;
157
+ }
158
+ const missing = covers.filter(id => !evidence[id]);
159
+ const extra = Object.keys(evidence).filter(id => !covers.includes(id));
160
+ if (missing.length || extra.length) {
161
+ throw new Error(`Report evidence must map exactly to covered criteria; missing=${missing.join(',') || 'none'} extra=${extra.join(',') || 'none'}.`);
162
+ }
163
+ return evidence;
164
+ }
165
+ function acceptMissionGoal(id, ownerSessionId, summary, integrated) {
166
+ const goal = readMissionGoal(id);
167
+ if (!goal)
168
+ throw new Error(`Unknown mission goal: ${id}.`);
169
+ meaningful(summary, 'Acceptance summary');
170
+ const integratedSet = new Set(integrated);
171
+ return (0, store_1.withProjectChipLock)(goal.projectId, () => {
172
+ const current = readMissionGoal(id);
173
+ if (current.ownerSessionId !== ownerSessionId)
174
+ throw new Error('Only the recorded goal owner session may accept completion.');
175
+ if (current.state !== 'active')
176
+ throw new Error(`Mission goal is ${current.state}; expected active.`);
177
+ const excluded = new Set(Object.keys(current.excludedChips || {}));
178
+ const missing = current.criteria.filter(item => !(current.evidence[item.id] || [])
179
+ .some(evidence => !excluded.has(evidence.chipId))).map(item => item.id);
180
+ if (missing.length)
181
+ throw new Error(`Mission goal lacks evidence for: ${missing.join(', ')}.`);
182
+ const chips = (0, store_1.listManifests)().filter(item => item.goalId === id && !excluded.has(item.id));
183
+ if (!chips.length || chips.some(item => !item.report || !['ready', 'merged'].includes(item.state))) {
184
+ throw new Error('Every goal chip must have a validated ready report before parent acceptance.');
185
+ }
186
+ for (const chip of chips) {
187
+ if (chip.mode === 'write' && !(0, git_1.isCommitAncestor)(chip.parent.root, chip.report.commit) && !integratedSet.has(chip.id)) {
188
+ throw new Error(`Chip ${chip.id.slice(0, 8)} is not integrated; merge it or pass --integrated ${chip.id}.`);
189
+ }
190
+ }
191
+ for (const chip of chips)
192
+ if (chip.state === 'ready')
193
+ (0, store_1.updateManifest)(chip.id, { state: 'merged' });
194
+ current.state = 'accepted';
195
+ current.acceptedAt = new Date().toISOString();
196
+ current.acceptedBy = ownerSessionId;
197
+ current.acceptanceSummary = summary.trim();
198
+ current.updatedAt = current.acceptedAt;
199
+ writeMissionGoal(current);
200
+ return current;
201
+ });
202
+ }
203
+ function excludeGoalChip(id, ownerSessionId, chipId, reason) {
204
+ const goal = readMissionGoal(id);
205
+ if (!goal)
206
+ throw new Error(`Unknown mission goal: ${id}.`);
207
+ meaningful(reason, 'Exclusion reason');
208
+ return (0, store_1.withProjectChipLock)(goal.projectId, () => {
209
+ const current = readMissionGoal(id);
210
+ const chip = (0, store_1.listManifests)().find(item => item.id === chipId);
211
+ if (current.ownerSessionId !== ownerSessionId || current.state !== 'active')
212
+ throw new Error('Only the active goal owner may exclude a chip.');
213
+ if (!chip || chip.goalId !== id)
214
+ throw new Error('Excluded chip must belong to this mission goal.');
215
+ if (!['cancelled', 'failed', 'abandoned', 'orphaned'].includes(chip.state))
216
+ throw new Error('Only a terminal failed/cancelled/abandoned/orphaned chip may be excluded.');
217
+ current.excludedChips = {
218
+ ...(current.excludedChips || {}), [chipId]: { reason: reason.trim(), at: new Date().toISOString() },
219
+ };
220
+ current.updatedAt = new Date().toISOString();
221
+ writeMissionGoal(current);
222
+ return current;
223
+ });
224
+ }
225
+ function cancelMissionGoal(id, ownerSessionId, reason) {
226
+ const goal = readMissionGoal(id);
227
+ if (!goal)
228
+ throw new Error(`Unknown mission goal: ${id}.`);
229
+ meaningful(reason, 'Cancellation reason');
230
+ return (0, store_1.withProjectChipLock)(goal.projectId, () => {
231
+ const current = readMissionGoal(id);
232
+ if (current.ownerSessionId !== ownerSessionId || current.state !== 'active')
233
+ throw new Error('Only the active goal owner may cancel it.');
234
+ const active = (0, store_1.listManifests)().filter(item => item.goalId === id && ['planned', 'provisioning', 'starting', 'awaiting-native', 'running', 'reported', 'ready', 'blocked'].includes(item.state));
235
+ if (active.length)
236
+ throw new Error(`Stop active goal chips before cancellation: ${active.map(item => item.id.slice(0, 8)).join(', ')}.`);
237
+ current.state = 'cancelled';
238
+ current.cancellationReason = reason.trim();
239
+ current.updatedAt = new Date().toISOString();
240
+ writeMissionGoal(current);
241
+ return current;
242
+ });
243
+ }
244
+ function assertGoalAcceptedForCleanup(manifest) {
245
+ if (manifest.version < 2 || !manifest.goalId)
246
+ return;
247
+ const goal = readMissionGoal(manifest.goalId);
248
+ const cancelledCloseout = goal?.state === 'cancelled' && ['cancelled', 'failed', 'abandoned', 'orphaned'].includes(manifest.state);
249
+ if (!goal || (goal.state !== 'accepted' && !cancelledCloseout))
250
+ throw new Error('Parent must accept (or explicitly cancel) the mission goal before cleanup/archive.');
251
+ }
252
+ //# sourceMappingURL=goals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goals.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/goals.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ChipManifest } from './model';
2
2
  interface ChipEvent {
3
- kind: 'spawned' | 'running' | 'reported' | 'blocked' | 'failed' | 'cancelled';
3
+ kind: 'spawned' | 'running' | 'resumed' | 'reported' | 'blocked' | 'failed' | 'cancelled';
4
4
  summary: string;
5
5
  }
6
6
  export declare function chipEventBody(manifest: ChipManifest, event: ChipEvent): string;
@@ -44,9 +44,10 @@ const model_1 = require("./model");
44
44
  const store_1 = require("./store");
45
45
  function chipEventBody(manifest, event) {
46
46
  const lifecycle = event.kind === 'running' ? 'IN-FLIGHT'
47
- : event.kind === 'reported' ? 'DONE'
48
- : event.kind === 'blocked' ? 'BLOCKED'
49
- : event.kind.toUpperCase();
47
+ : event.kind === 'resumed' ? 'RESUMED'
48
+ : event.kind === 'reported' ? 'DONE'
49
+ : event.kind === 'blocked' ? 'BLOCKED'
50
+ : event.kind.toUpperCase();
50
51
  return `[codex-chip-announce:${lifecycle}] ${manifest.id.slice(0, 8)} ${event.summary}`;
51
52
  }
52
53
  async function ownHandle(apiUrl, apiKey) {
@@ -110,14 +111,7 @@ async function sendChipEvent(manifest, targetSession, event, fromSession) {
110
111
  deliveredSession.slice(0, 8).toLowerCase() !== targetSession.slice(0, 8).toLowerCase()) {
111
112
  throw new Error(`Inbox send did not reach parent session ${targetSession}.`);
112
113
  }
113
- const latest = (0, store_1.readManifest)(manifest.id);
114
- if (latest)
115
- (0, store_1.updateManifest)(manifest.id, {
116
- codex: {
117
- ...latest.codex,
118
- eventReceipts: { ...(latest.codex.eventReceipts || {}), [eventKey]: payload.id },
119
- },
120
- });
114
+ (0, store_1.recordChipEventReceipt)(manifest.id, eventKey, payload.id);
121
115
  }
122
116
  catch (err) {
123
117
  if (optionalInbox())
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/inbox.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,sCAMC;AAmBD,sCA4DC;AAlGD,+CAAiC;AACjC,uCAAyB;AACzB,2CAA6B;AAC7B,8DAAkD;AAClD,0CAAmE;AACnE,mCAA0D;AAC1D,mCAAuD;AAOvD,SAAgB,aAAa,CAAC,QAAsB,EAAE,KAAgB;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW;QACtD,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM;YAClC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;gBACpC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,wBAAwB,SAAS,KAAK,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AAC1F,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,MAAc;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAC/D,IAAI,QAAQ,GAAG,IAAA,oBAAS,EAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;QACxB,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAA,qBAAU,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,EAAE,MAAM,IAAI,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,GAAG,CAAC;AAC/D,CAAC;AAED;2EAC2E;AACpE,KAAK,UAAU,aAAa,CACjC,QAAsB,EACtB,aAAiC,EACjC,KAAgB,EAChB,WAAoB;IAEpB,IAAI,CAAC;QACH,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC1F,MAAM,GAAG,GAAG,IAAA,8BAAS,GAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;QACnF,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACxG,MAAM,OAAO,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;QACtD,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;YAAE,OAAO;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,EAAE;YAC9E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YACtF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,GAAG,MAAM,IAAI,aAAa,EAAE;gBAChC,IAAI;gBACJ,eAAe,EAAE,MAAM;gBACvB,eAAe,EAAE,cAAc,QAAQ,CAAC,EAAE,IAAI,QAAQ,EAAE;gBACxD,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,EAAE,EAAE,QAAQ,CAAC,EAAE;wBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM;wBAChC,QAAQ,EAAE,IAAA,yBAAiB,EAAC,QAAQ,CAAC;qBACtC;iBACF;aACF,CAAC;SACH,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAGrD,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,IAAI,0BAA0B,EAAE,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,EAAE,UAAU,IAAI,EAAE,CAAC;QAChE,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,gBAAgB;YAC9C,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,2CAA2C,aAAa,GAAG,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM;YAAE,IAAA,sBAAc,EAAC,QAAQ,CAAC,EAAE,EAAE;gBACtC,KAAK,EAAE;oBACL,GAAG,MAAM,CAAC,KAAK;oBACf,aAAa,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE;iBACjF;aACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,aAAa,EAAE;YAAE,OAAO;QAC5B,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/inbox.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const CHIP_MANIFEST_VERSION = 1;
1
+ export declare const CHIP_MANIFEST_VERSION = 2;
2
2
  export type ChipMode = 'read' | 'write';
3
3
  export type ChipState = 'planned' | 'provisioning' | 'starting' | 'awaiting-native' | 'running' | 'reported' | 'ready' | 'merged' | 'cleaned' | 'complete' | 'blocked' | 'failed' | 'cancelled' | 'orphaned' | 'abandoned';
4
4
  export interface ChipReport {
@@ -7,6 +7,7 @@ export interface ChipReport {
7
7
  changedFiles: string[];
8
8
  checks: string[];
9
9
  reportedAt: string;
10
+ evidence?: Record<string, string>;
10
11
  }
11
12
  export type ChipReceipt = {
12
13
  type: 'report';
@@ -14,6 +15,12 @@ export type ChipReceipt = {
14
15
  commit: string;
15
16
  summary: string;
16
17
  checks: string[];
18
+ evidence?: Record<string, string>;
19
+ at: string;
20
+ } | {
21
+ type: 'resume-ack';
22
+ id: string;
23
+ nonce: string;
17
24
  at: string;
18
25
  } | {
19
26
  type: 'block';
@@ -22,7 +29,7 @@ export type ChipReceipt = {
22
29
  at: string;
23
30
  };
24
31
  export interface ChipManifest {
25
- version: 1;
32
+ version: 1 | 2;
26
33
  revision: number;
27
34
  id: string;
28
35
  name: string;
@@ -30,6 +37,8 @@ export interface ChipManifest {
30
37
  mode: ChipMode;
31
38
  owns: string[];
32
39
  state: ChipState;
40
+ goalId?: string;
41
+ covers?: string[];
33
42
  project: {
34
43
  id: string;
35
44
  name: string;
@@ -50,6 +59,9 @@ export interface ChipManifest {
50
59
  threadId?: string;
51
60
  nativeCwd?: string;
52
61
  role?: 'worker' | 'leader';
62
+ label?: string;
63
+ displayName?: string;
64
+ provisionalBoundAt?: string;
53
65
  bindingNonce?: string;
54
66
  bootstrapAck?: string;
55
67
  verifiedTitle?: string;
@@ -60,6 +72,12 @@ export interface ChipManifest {
60
72
  timeoutMinutes?: number;
61
73
  attachDeadlineAt?: string;
62
74
  eventReceipts?: Record<string, string>;
75
+ resume?: {
76
+ nonce: string;
77
+ requestedAt: string;
78
+ deadlineAt: string;
79
+ acknowledgedAt?: string;
80
+ };
63
81
  turnId?: string;
64
82
  transport: 'stdio' | 'proxy';
65
83
  runtime?: 'native' | 'cli';
@@ -88,5 +106,6 @@ export interface ChipManifest {
88
106
  error?: string;
89
107
  }
90
108
  export declare function chipExecutionPath(manifest: ChipManifest): string;
109
+ export declare function chipTitle(manifest: ChipManifest): string;
91
110
  export declare const ACTIVE_CHIP_STATES: Set<ChipState>;
92
111
  export declare function isActiveChip(manifest: ChipManifest): boolean;
@@ -2,11 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ACTIVE_CHIP_STATES = exports.CHIP_MANIFEST_VERSION = void 0;
4
4
  exports.chipExecutionPath = chipExecutionPath;
5
+ exports.chipTitle = chipTitle;
5
6
  exports.isActiveChip = isActiveChip;
6
- exports.CHIP_MANIFEST_VERSION = 1;
7
+ exports.CHIP_MANIFEST_VERSION = 2;
7
8
  function chipExecutionPath(manifest) {
8
9
  return manifest.codex.nativeCwd || manifest.worktree.path;
9
10
  }
11
+ function chipTitle(manifest) {
12
+ const display = manifest.codex.displayName || manifest.name.replace(/[-_]+/g, ' ')
13
+ .replace(/\b\w/g, char => char.toUpperCase());
14
+ if (manifest.codex.role === 'leader')
15
+ return `LEAD: ${display}`;
16
+ return manifest.codex.label ? `Chip ${manifest.codex.label}: ${display}` : `Chip: ${display}`;
17
+ }
10
18
  exports.ACTIVE_CHIP_STATES = new Set([
11
19
  'planned', 'provisioning', 'starting', 'awaiting-native', 'running', 'reported', 'ready', 'blocked',
12
20
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/model.ts"],"names":[],"mappings":";;;AAuEA,8CAEC;AAMD,oCAEC;AAjFY,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAuEvC,SAAgB,iBAAiB,CAAC,QAAsB;IACtD,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5D,CAAC;AAEY,QAAA,kBAAkB,GAAG,IAAI,GAAG,CAAY;IACnD,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CACpG,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,QAAsB;IACjD,OAAO,0BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/model.ts"],"names":[],"mappings":";;;AA+EA,8CAEC;AAED,8BAKC;AAMD,oCAEC;AAhGY,QAAA,qBAAqB,GAAG,CAAC,CAAC;AA+EvC,SAAgB,iBAAiB,CAAC,QAAsB;IACtD,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAgB,SAAS,CAAC,QAAsB;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SAC/E,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,OAAO,EAAE,CAAC;IAChE,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC;AAChG,CAAC;AAEY,QAAA,kBAAkB,GAAG,IAAI,GAAG,CAAY;IACnD,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CACpG,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,QAAsB;IACjD,OAAO,0BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ChipManifest } from './model';
2
+ export interface ChipNaming {
3
+ name: string;
4
+ displayName: string;
5
+ label?: string;
6
+ }
7
+ export declare function resolveChipNaming(name: string, displayName: string | undefined, label: string | undefined, role: 'worker' | 'leader', multiChip: boolean): ChipNaming;
8
+ export declare function assertNoNamingConflicts(manifest: ChipManifest, active: ChipManifest[]): void;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveChipNaming = resolveChipNaming;
4
+ exports.assertNoNamingConflicts = assertNoNamingConflicts;
5
+ function humanize(value) {
6
+ return value.trim().replace(/^(?:Chip|LEAD)(?: [A-Z])?:\s*/i, '')
7
+ .replace(/[-_]+/g, ' ').replace(/\s+/g, ' ')
8
+ .replace(/\b\w/g, char => char.toUpperCase());
9
+ }
10
+ function resolveChipNaming(name, displayName, label, role, multiChip) {
11
+ const display = (displayName || humanize(name)).trim();
12
+ if (!/^[A-Z0-9]/.test(display) || /[-_]/.test(display) || display.length < 3) {
13
+ throw new Error('--title must be a properly capitalized human purview, without slug punctuation.');
14
+ }
15
+ if (role === 'leader' && label)
16
+ throw new Error('LEAD tasks do not take --label.');
17
+ if (label && !/^[A-Z]$/.test(label))
18
+ throw new Error('--label must be one uppercase letter (A-Z).');
19
+ if (role === 'worker' && multiChip && !label) {
20
+ throw new Error('Multi-chip workers require --label A|B|C and a specific --title purview.');
21
+ }
22
+ if (role === 'worker' && multiChip && !displayName) {
23
+ throw new Error('Multi-chip workers require an explicit --title describing their unique purview.');
24
+ }
25
+ return { name, displayName: display, label };
26
+ }
27
+ function assertNoNamingConflicts(manifest, active) {
28
+ const peers = active.filter(item => item.parent.sessionId === manifest.parent.sessionId);
29
+ if (active.some(item => item.name === manifest.name)) {
30
+ throw new Error(`Active chip name is already in use: ${manifest.name}.`);
31
+ }
32
+ if (peers.some(item => item.codex.displayName === manifest.codex.displayName)) {
33
+ throw new Error(`Active chip purview title is already in use: ${manifest.codex.displayName}.`);
34
+ }
35
+ if (manifest.codex.label && peers.some(item => item.codex.label === manifest.codex.label)) {
36
+ throw new Error(`Active chip label is already in use: Chip ${manifest.codex.label}.`);
37
+ }
38
+ }
39
+ //# sourceMappingURL=naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/naming.ts"],"names":[],"mappings":";;AAcA,8CAiBC;AAED,0DAWC;AApCD,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC;SAC9D,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SAC3C,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,iBAAiB,CAC/B,IAAY,EAAE,WAA+B,EAAE,KAAyB,EACxE,IAAyB,EAAE,SAAkB;IAE7C,MAAM,OAAO,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACnF,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACpG,IAAI,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,SAAgB,uBAAuB,CAAC,QAAsB,EAAE,MAAsB;IACpF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,gDAAgD,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACxF,CAAC;AACH,CAAC"}