greprag 5.59.0 → 5.59.2
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/dist/codex-chip-hooks.js +17 -2
- package/dist/codex-chip-hooks.js.map +1 -1
- package/dist/commands/codex-chip/cleanup-command.d.ts +1 -0
- package/dist/commands/codex-chip/cleanup-command.js +96 -0
- package/dist/commands/codex-chip/cleanup-command.js.map +1 -0
- package/dist/commands/codex-chip/command.js +42 -35
- package/dist/commands/codex-chip/command.js.map +1 -1
- package/dist/commands/codex-chip/git.js +8 -0
- package/dist/commands/codex-chip/git.js.map +1 -1
- package/dist/commands/codex-chip/goal-command.d.ts +1 -0
- package/dist/commands/codex-chip/goal-command.js +67 -0
- package/dist/commands/codex-chip/goal-command.js.map +1 -0
- package/dist/commands/codex-chip/goals.d.ts +44 -0
- package/dist/commands/codex-chip/goals.js +204 -0
- package/dist/commands/codex-chip/goals.js.map +1 -0
- package/dist/commands/codex-chip/inbox.d.ts +1 -1
- package/dist/commands/codex-chip/inbox.js +4 -3
- package/dist/commands/codex-chip/inbox.js.map +1 -1
- package/dist/commands/codex-chip/model.d.ts +21 -2
- package/dist/commands/codex-chip/model.js +9 -1
- package/dist/commands/codex-chip/model.js.map +1 -1
- package/dist/commands/codex-chip/naming.d.ts +8 -0
- package/dist/commands/codex-chip/naming.js +39 -0
- package/dist/commands/codex-chip/naming.js.map +1 -0
- package/dist/commands/codex-chip/native.d.ts +10 -7
- package/dist/commands/codex-chip/native.js +127 -50
- package/dist/commands/codex-chip/native.js.map +1 -1
- package/dist/commands/codex-chip/prompt.js +10 -4
- package/dist/commands/codex-chip/prompt.js.map +1 -1
- package/dist/commands/codex-chip/resume-command.d.ts +7 -0
- package/dist/commands/codex-chip/resume-command.js +105 -0
- package/dist/commands/codex-chip/resume-command.js.map +1 -0
- package/dist/commands/codex-chip/worker.js +16 -1
- package/dist/commands/codex-chip/worker.js.map +1 -1
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/load-primer-reminder.js +2 -2
- package/dist/commands/load-primer-reminder.js.map +1 -1
- package/dist/hook.js +3 -1
- package/dist/hook.js.map +1 -1
- package/dist/opencode-plugin.bundle.js +2 -2
- package/package.json +3 -2
- package/scripts/verify-publish.cjs +48 -0
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
}
|
|
30
|
+
export declare function parseGoalCriteria(values: string[]): GoalCriterion[];
|
|
31
|
+
export declare function readMissionGoal(id: string): MissionGoal | null;
|
|
32
|
+
export declare function createMissionGoal(input: {
|
|
33
|
+
projectId: string;
|
|
34
|
+
ownerSessionId: string;
|
|
35
|
+
objective: string;
|
|
36
|
+
finalState: string;
|
|
37
|
+
criteria: GoalCriterion[];
|
|
38
|
+
parentGoalId?: string;
|
|
39
|
+
}): MissionGoal;
|
|
40
|
+
export declare function requireGoalForSpawn(id: string, projectId: string, ownerSessionId: string, covers: string[]): MissionGoal;
|
|
41
|
+
export declare function recordGoalEvidence(manifest: ChipManifest, evidence: Record<string, string>): void;
|
|
42
|
+
export declare function parseReportEvidence(values: string[], covers: string[]): Record<string, string>;
|
|
43
|
+
export declare function acceptMissionGoal(id: string, ownerSessionId: string, summary: string, integrated: string[]): MissionGoal;
|
|
44
|
+
export declare function assertGoalAcceptedForCleanup(manifest: ChipManifest): void;
|
|
@@ -0,0 +1,204 @@
|
|
|
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.assertGoalAcceptedForCleanup = assertGoalAcceptedForCleanup;
|
|
44
|
+
const crypto = __importStar(require("crypto"));
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const git_1 = require("./git");
|
|
48
|
+
const store_1 = require("./store");
|
|
49
|
+
function goalRoot() { return path.join((0, store_1.grepragHome)(), 'chip-goals'); }
|
|
50
|
+
function goalPath(id) { return path.join(goalRoot(), `${id}.json`); }
|
|
51
|
+
function meaningful(value, label) {
|
|
52
|
+
const text = value.trim();
|
|
53
|
+
if (text.length < 12)
|
|
54
|
+
throw new Error(`${label} must be a concrete statement of at least 12 characters.`);
|
|
55
|
+
return text;
|
|
56
|
+
}
|
|
57
|
+
function parseGoalCriteria(values) {
|
|
58
|
+
if (!values.length)
|
|
59
|
+
throw new Error('A mission goal requires at least one --criterion id:text.');
|
|
60
|
+
const seen = new Set();
|
|
61
|
+
return values.map(value => {
|
|
62
|
+
const split = value.indexOf(':');
|
|
63
|
+
const id = split > 0 ? value.slice(0, split).trim() : '';
|
|
64
|
+
const text = split > 0 ? value.slice(split + 1).trim() : '';
|
|
65
|
+
if (!/^[a-z][a-z0-9-]{1,39}$/.test(id) || text.length < 8) {
|
|
66
|
+
throw new Error(`Invalid criterion ${value}; use lowercase-id:concrete acceptance statement.`);
|
|
67
|
+
}
|
|
68
|
+
if (seen.has(id))
|
|
69
|
+
throw new Error(`Duplicate goal criterion id: ${id}.`);
|
|
70
|
+
seen.add(id);
|
|
71
|
+
return { id, text };
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function readMissionGoal(id) {
|
|
75
|
+
try {
|
|
76
|
+
return JSON.parse(fs.readFileSync(goalPath(id), 'utf-8'));
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function writeMissionGoal(goal) {
|
|
83
|
+
fs.mkdirSync(goalRoot(), { recursive: true });
|
|
84
|
+
const file = goalPath(goal.id);
|
|
85
|
+
const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
|
|
86
|
+
fs.writeFileSync(tmp, JSON.stringify(goal, null, 2) + '\n', 'utf-8');
|
|
87
|
+
fs.renameSync(tmp, file);
|
|
88
|
+
}
|
|
89
|
+
function createMissionGoal(input) {
|
|
90
|
+
const now = new Date().toISOString();
|
|
91
|
+
const goal = {
|
|
92
|
+
version: 1, id: crypto.randomUUID(), projectId: input.projectId,
|
|
93
|
+
ownerSessionId: input.ownerSessionId, objective: meaningful(input.objective, 'Goal objective'),
|
|
94
|
+
finalState: meaningful(input.finalState, 'Goal final state'), criteria: input.criteria,
|
|
95
|
+
parentGoalId: input.parentGoalId, state: 'active', evidence: {}, createdAt: now, updatedAt: now,
|
|
96
|
+
};
|
|
97
|
+
if (input.parentGoalId && !readMissionGoal(input.parentGoalId)) {
|
|
98
|
+
throw new Error(`Unknown parent mission goal: ${input.parentGoalId}.`);
|
|
99
|
+
}
|
|
100
|
+
return (0, store_1.withProjectChipLock)(goal.projectId, () => { writeMissionGoal(goal); return goal; });
|
|
101
|
+
}
|
|
102
|
+
function requireGoalForSpawn(id, projectId, ownerSessionId, covers) {
|
|
103
|
+
const goal = readMissionGoal(id);
|
|
104
|
+
if (!goal)
|
|
105
|
+
throw new Error(`Unknown mission goal: ${id}. Create it before spawning.`);
|
|
106
|
+
if (goal.projectId !== projectId || goal.ownerSessionId !== ownerSessionId || goal.state !== 'active') {
|
|
107
|
+
throw new Error('Mission goal must be active, project-local, and owned by the spawning parent session.');
|
|
108
|
+
}
|
|
109
|
+
if (!covers.length)
|
|
110
|
+
throw new Error('Every chip must declare at least one --covers <criterion-id>.');
|
|
111
|
+
const valid = new Set(goal.criteria.map(item => item.id));
|
|
112
|
+
const invalid = covers.filter(item => !valid.has(item));
|
|
113
|
+
if (invalid.length)
|
|
114
|
+
throw new Error(`Chip covers unknown goal criteria: ${invalid.join(', ')}.`);
|
|
115
|
+
return goal;
|
|
116
|
+
}
|
|
117
|
+
function recordGoalEvidence(manifest, evidence) {
|
|
118
|
+
if (!manifest.goalId)
|
|
119
|
+
return;
|
|
120
|
+
const goal = readMissionGoal(manifest.goalId);
|
|
121
|
+
if (!goal || goal.state !== 'active' || !manifest.report)
|
|
122
|
+
throw new Error('Mission goal is unavailable for report evidence.');
|
|
123
|
+
const covers = manifest.covers || [];
|
|
124
|
+
const missing = covers.filter(id => !evidence[id]?.trim());
|
|
125
|
+
const extra = Object.keys(evidence).filter(id => !covers.includes(id));
|
|
126
|
+
if (missing.length || extra.length) {
|
|
127
|
+
throw new Error(`Report evidence must map exactly to covered criteria; missing=${missing.join(',') || 'none'} extra=${extra.join(',') || 'none'}.`);
|
|
128
|
+
}
|
|
129
|
+
(0, store_1.withProjectChipLock)(goal.projectId, () => {
|
|
130
|
+
const current = readMissionGoal(goal.id);
|
|
131
|
+
for (const [criterion, text] of Object.entries(evidence)) {
|
|
132
|
+
const prior = (current.evidence[criterion] || []).filter(item => item.chipId !== manifest.id);
|
|
133
|
+
current.evidence[criterion] = [...prior, {
|
|
134
|
+
chipId: manifest.id, text: text.trim(), commit: manifest.report.commit,
|
|
135
|
+
checks: manifest.report.checks, at: manifest.report.reportedAt,
|
|
136
|
+
}];
|
|
137
|
+
}
|
|
138
|
+
current.updatedAt = new Date().toISOString();
|
|
139
|
+
writeMissionGoal(current);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
function parseReportEvidence(values, covers) {
|
|
143
|
+
const evidence = {};
|
|
144
|
+
for (const value of values) {
|
|
145
|
+
const split = value.indexOf(':');
|
|
146
|
+
const id = split > 0 ? value.slice(0, split).trim() : '';
|
|
147
|
+
const text = split > 0 ? value.slice(split + 1).trim() : '';
|
|
148
|
+
if (!id || text.length < 4)
|
|
149
|
+
throw new Error(`Invalid evidence ${value}; use criterion-id:concrete proof.`);
|
|
150
|
+
if (evidence[id])
|
|
151
|
+
throw new Error(`Duplicate evidence for criterion: ${id}.`);
|
|
152
|
+
evidence[id] = text;
|
|
153
|
+
}
|
|
154
|
+
const missing = covers.filter(id => !evidence[id]);
|
|
155
|
+
const extra = Object.keys(evidence).filter(id => !covers.includes(id));
|
|
156
|
+
if (missing.length || extra.length) {
|
|
157
|
+
throw new Error(`Report evidence must map exactly to covered criteria; missing=${missing.join(',') || 'none'} extra=${extra.join(',') || 'none'}.`);
|
|
158
|
+
}
|
|
159
|
+
return evidence;
|
|
160
|
+
}
|
|
161
|
+
function acceptMissionGoal(id, ownerSessionId, summary, integrated) {
|
|
162
|
+
const goal = readMissionGoal(id);
|
|
163
|
+
if (!goal)
|
|
164
|
+
throw new Error(`Unknown mission goal: ${id}.`);
|
|
165
|
+
if (goal.ownerSessionId !== ownerSessionId)
|
|
166
|
+
throw new Error('Only the recorded goal owner session may accept completion.');
|
|
167
|
+
if (goal.state !== 'active')
|
|
168
|
+
throw new Error(`Mission goal is ${goal.state}; expected active.`);
|
|
169
|
+
meaningful(summary, 'Acceptance summary');
|
|
170
|
+
const missing = goal.criteria.filter(item => !(goal.evidence[item.id] || []).length).map(item => item.id);
|
|
171
|
+
if (missing.length)
|
|
172
|
+
throw new Error(`Mission goal lacks evidence for: ${missing.join(', ')}.`);
|
|
173
|
+
const chips = (0, store_1.listManifests)().filter(item => item.goalId === id);
|
|
174
|
+
if (!chips.length || chips.some(item => !item.report || !['ready', 'merged'].includes(item.state))) {
|
|
175
|
+
throw new Error('Every goal chip must have a validated ready report before parent acceptance.');
|
|
176
|
+
}
|
|
177
|
+
const integratedSet = new Set(integrated);
|
|
178
|
+
for (const chip of chips) {
|
|
179
|
+
if (chip.mode === 'write' && !(0, git_1.isCommitAncestor)(chip.parent.root, chip.report.commit) && !integratedSet.has(chip.id)) {
|
|
180
|
+
throw new Error(`Chip ${chip.id.slice(0, 8)} is not integrated; merge it or pass --integrated ${chip.id}.`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return (0, store_1.withProjectChipLock)(goal.projectId, () => {
|
|
184
|
+
for (const chip of chips)
|
|
185
|
+
if (chip.state === 'ready')
|
|
186
|
+
(0, store_1.updateManifest)(chip.id, { state: 'merged' });
|
|
187
|
+
const current = readMissionGoal(id);
|
|
188
|
+
current.state = 'accepted';
|
|
189
|
+
current.acceptedAt = new Date().toISOString();
|
|
190
|
+
current.acceptedBy = ownerSessionId;
|
|
191
|
+
current.acceptanceSummary = summary.trim();
|
|
192
|
+
current.updatedAt = current.acceptedAt;
|
|
193
|
+
writeMissionGoal(current);
|
|
194
|
+
return current;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
function assertGoalAcceptedForCleanup(manifest) {
|
|
198
|
+
if (manifest.version < 2 || !manifest.goalId)
|
|
199
|
+
return;
|
|
200
|
+
const goal = readMissionGoal(manifest.goalId);
|
|
201
|
+
if (!goal || goal.state !== 'accepted')
|
|
202
|
+
throw new Error('Parent must accept the mission goal before cleanup/archive.');
|
|
203
|
+
}
|
|
204
|
+
//# 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 === '
|
|
48
|
-
: event.kind === '
|
|
49
|
-
: event.kind
|
|
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) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/inbox.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,
|
|
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
|
+
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 =
|
|
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":";;;
|
|
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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChipManifest } from './model';
|
|
2
2
|
export interface NativeChipHandoff {
|
|
3
|
-
protocol: 'greprag-codex-native-v3';
|
|
3
|
+
protocol: 'greprag-codex-native-v3' | 'greprag-codex-native-v4';
|
|
4
4
|
chipId: string;
|
|
5
5
|
expectedBaseSha: string;
|
|
6
6
|
title: string;
|
|
@@ -17,16 +17,18 @@ export interface NativeChipHandoff {
|
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
19
|
prompt: string;
|
|
20
|
+
model?: string;
|
|
21
|
+
thinking?: string;
|
|
20
22
|
};
|
|
21
|
-
bootstrapAck
|
|
23
|
+
bootstrapAck?: string;
|
|
22
24
|
titleVerification: {
|
|
23
25
|
maxAttempts: 3;
|
|
24
|
-
settleBeforeRename: true;
|
|
25
26
|
exactTitle: string;
|
|
26
27
|
consecutiveReadBacks: 2;
|
|
27
28
|
retryDelayMs: 750;
|
|
29
|
+
settleBeforeRename?: true;
|
|
28
30
|
};
|
|
29
|
-
dispatchSequence: readonly [
|
|
31
|
+
dispatchSequence: readonly string[];
|
|
30
32
|
verifyTitleCommand?: string;
|
|
31
33
|
attachCommand?: string;
|
|
32
34
|
sendRequest?: {
|
|
@@ -37,8 +39,8 @@ export interface NativeChipHandoff {
|
|
|
37
39
|
};
|
|
38
40
|
instructions: string[];
|
|
39
41
|
}
|
|
40
|
-
/** Parent-side Desktop adapter primitive.
|
|
41
|
-
*
|
|
42
|
+
/** Parent-side Desktop adapter primitive. Set early, then correct the observed
|
|
43
|
+
* auto-title race with two consecutive read-backs. */
|
|
42
44
|
export declare function verifyDesktopTitle(expected: string, surface: {
|
|
43
45
|
setTitle(title: string): Promise<void>;
|
|
44
46
|
readTitle(): Promise<string>;
|
|
@@ -46,16 +48,17 @@ export declare function verifyDesktopTitle(expected: string, surface: {
|
|
|
46
48
|
}, maxAttempts?: number): Promise<number>;
|
|
47
49
|
export declare function nativeHandoff(manifest: ChipManifest): NativeChipHandoff;
|
|
48
50
|
export declare function printNativeHandoff(manifest: ChipManifest, json?: boolean): void;
|
|
51
|
+
export declare function provisionNativeBindingFromPrompt(prompt: string, cwdParam: string, sessionId: string, model?: string): ChipManifest | null;
|
|
49
52
|
export declare function verifyNativeBinding(manifest: ChipManifest, params: {
|
|
50
53
|
clientThreadId: string;
|
|
51
54
|
threadId: string;
|
|
52
55
|
cwd: string;
|
|
53
56
|
title: string;
|
|
54
|
-
bootstrapAck: string;
|
|
55
57
|
projectId: string;
|
|
56
58
|
baseSha: string;
|
|
57
59
|
sandbox: string;
|
|
58
60
|
titleReadbacks: number;
|
|
61
|
+
bootstrapAck?: string;
|
|
59
62
|
}): ChipManifest;
|
|
60
63
|
export declare function attachNativeCheckout(manifest: ChipManifest): ChipManifest;
|
|
61
64
|
export declare function assertNoLiveNativeMonitor(manifest: ChipManifest, ownerPid?: number): void;
|