greprag 5.56.0 → 5.58.0
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.d.ts +20 -0
- package/dist/codex-chip-hooks.js +217 -0
- package/dist/codex-chip-hooks.js.map +1 -0
- package/dist/commands/codex-chip/command.d.ts +3 -0
- package/dist/commands/codex-chip/command.js +583 -0
- package/dist/commands/codex-chip/command.js.map +1 -0
- package/dist/commands/codex-chip/git.d.ts +30 -0
- package/dist/commands/codex-chip/git.js +223 -0
- package/dist/commands/codex-chip/git.js.map +1 -0
- package/dist/commands/codex-chip/inbox.d.ts +10 -0
- package/dist/commands/codex-chip/inbox.js +128 -0
- package/dist/commands/codex-chip/inbox.js.map +1 -0
- package/dist/commands/codex-chip/lifecycle.d.ts +5 -0
- package/dist/commands/codex-chip/lifecycle.js +94 -0
- package/dist/commands/codex-chip/lifecycle.js.map +1 -0
- package/dist/commands/codex-chip/model.d.ts +92 -0
- package/dist/commands/codex-chip/model.js +16 -0
- package/dist/commands/codex-chip/model.js.map +1 -0
- package/dist/commands/codex-chip/native.d.ts +62 -0
- package/dist/commands/codex-chip/native.js +283 -0
- package/dist/commands/codex-chip/native.js.map +1 -0
- package/dist/commands/codex-chip/prompt.d.ts +2 -0
- package/dist/commands/codex-chip/prompt.js +44 -0
- package/dist/commands/codex-chip/prompt.js.map +1 -0
- package/dist/commands/codex-chip/selection.d.ts +14 -0
- package/dist/commands/codex-chip/selection.js +109 -0
- package/dist/commands/codex-chip/selection.js.map +1 -0
- package/dist/commands/codex-chip/store.d.ts +15 -0
- package/dist/commands/codex-chip/store.js +197 -0
- package/dist/commands/codex-chip/store.js.map +1 -0
- package/dist/commands/codex-chip/worker.d.ts +4 -0
- package/dist/commands/codex-chip/worker.js +344 -0
- package/dist/commands/codex-chip/worker.js.map +1 -0
- package/dist/commands/codex-doctor.js +8 -1
- package/dist/commands/codex-doctor.js.map +1 -1
- package/dist/commands/codex-startup.d.ts +13 -0
- package/dist/commands/codex-startup.js +177 -0
- package/dist/commands/codex-startup.js.map +1 -0
- package/dist/commands/codex-supervisor.d.ts +5 -0
- package/dist/commands/codex-supervisor.js +59 -10
- package/dist/commands/codex-supervisor.js.map +1 -1
- package/dist/commands/codex-watch-health.d.ts +57 -0
- package/dist/commands/codex-watch-health.js +168 -0
- package/dist/commands/codex-watch-health.js.map +1 -0
- package/dist/commands/codex.d.ts +1 -11
- package/dist/commands/codex.js +104 -144
- package/dist/commands/codex.js.map +1 -1
- package/dist/commands/init.js +23 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/load-primer-reminder.d.ts +4 -0
- package/dist/commands/load-primer-reminder.js +15 -2
- package/dist/commands/load-primer-reminder.js.map +1 -1
- package/dist/commands/load.js +4 -0
- package/dist/commands/load.js.map +1 -1
- package/dist/commands/loadout.js +34 -2
- package/dist/commands/loadout.js.map +1 -1
- package/dist/commands/reminder-registry.js +1 -0
- package/dist/commands/reminder-registry.js.map +1 -1
- package/dist/commands/reminder-types.d.ts +12 -0
- package/dist/commands/version-reminder.d.ts +13 -1
- package/dist/commands/version-reminder.js +24 -1
- package/dist/commands/version-reminder.js.map +1 -1
- package/dist/hook.js +33 -5
- package/dist/hook.js.map +1 -1
- package/dist/opencode-plugin.bundle.js +23 -1
- package/package.json +1 -1
- package/skill/greprag/SKILL.md +8 -4
- package/skill/greprag/docs/codex-chip.md +38 -0
- package/skill/greprag/docs/setup.md +3 -2
- package/skill/templates/codex-chip-spawn.md +139 -0
|
@@ -0,0 +1,583 @@
|
|
|
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.resolveChipModel = void 0;
|
|
37
|
+
exports.reconcile = reconcile;
|
|
38
|
+
exports.runCodexChip = runCodexChip;
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const proc_1 = require("../../proc");
|
|
43
|
+
const project_anchor_1 = require("../../project-anchor");
|
|
44
|
+
const codex_app_server_client_1 = require("../codex-app-server-client");
|
|
45
|
+
const codex_startup_1 = require("../codex-startup");
|
|
46
|
+
const model_1 = require("./model");
|
|
47
|
+
const store_1 = require("./store");
|
|
48
|
+
const git_1 = require("./git");
|
|
49
|
+
const worker_1 = require("./worker");
|
|
50
|
+
const inbox_1 = require("./inbox");
|
|
51
|
+
const native_1 = require("./native");
|
|
52
|
+
const selection_1 = require("./selection");
|
|
53
|
+
const lifecycle_1 = require("./lifecycle");
|
|
54
|
+
var selection_2 = require("./selection");
|
|
55
|
+
Object.defineProperty(exports, "resolveChipModel", { enumerable: true, get: function () { return selection_2.resolveChipModel; } });
|
|
56
|
+
const HELP = `greprag codex chip — collision-safe Codex task orchestration
|
|
57
|
+
|
|
58
|
+
spawn "<task>" --name <name> (--owns <glob> | --read-only) [--profile standard|complex]
|
|
59
|
+
greprag codex chip handoff <id|name> [--json]
|
|
60
|
+
greprag codex chip verify-title <id|name> <attestation flags from handoff>
|
|
61
|
+
greprag codex chip attach|status|stop|cleanup <id|name>
|
|
62
|
+
greprag codex chip steer <id|name> "<message>" | report <id|name> --summary "<result>"
|
|
63
|
+
greprag codex chip block <id|name> --reason "<blocker>" | list | reconcile
|
|
64
|
+
|
|
65
|
+
Spawn prepares a native Codex Desktop project/worktree handoff and reserves its
|
|
66
|
+
starting branch. Write chips must declare non-overlapping ownership paths. Use
|
|
67
|
+
--runtime cli only for a model exposed by the installed PATH Codex app-server.`;
|
|
68
|
+
function flag(args, name) {
|
|
69
|
+
const index = args.indexOf(name);
|
|
70
|
+
return index >= 0 ? args[index + 1] : undefined;
|
|
71
|
+
}
|
|
72
|
+
function flags(args, name) {
|
|
73
|
+
const values = [];
|
|
74
|
+
for (let i = 0; i < args.length; i++)
|
|
75
|
+
if (args[i] === name && args[i + 1])
|
|
76
|
+
values.push(args[++i]);
|
|
77
|
+
return values;
|
|
78
|
+
}
|
|
79
|
+
function shellQuote(value) {
|
|
80
|
+
return `"${value.replace(/"/g, '\\"')}"`;
|
|
81
|
+
}
|
|
82
|
+
function requireManifest(ref) {
|
|
83
|
+
if (!ref)
|
|
84
|
+
throw new Error('Chip id or name is required.');
|
|
85
|
+
const manifest = (0, store_1.findManifest)(ref);
|
|
86
|
+
if (!manifest)
|
|
87
|
+
throw new Error(`Unknown chip: ${ref}`);
|
|
88
|
+
return manifest;
|
|
89
|
+
}
|
|
90
|
+
function printManifest(manifest, json) {
|
|
91
|
+
if (json) {
|
|
92
|
+
console.log(JSON.stringify(manifest, null, 2));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
console.log(`${manifest.id.slice(0, 8)} ${manifest.state.padEnd(10)} ${manifest.name}`);
|
|
96
|
+
console.log(` task: ${manifest.task}`);
|
|
97
|
+
console.log(` thread: ${manifest.codex.threadId || '(starting)'}`);
|
|
98
|
+
console.log(` model: ${manifest.codex.model} / ${manifest.codex.effort} (${manifest.codex.profile || 'custom'})`);
|
|
99
|
+
console.log(` branch: ${manifest.worktree.branch}`);
|
|
100
|
+
console.log(` checkout: ${manifest.codex.runtime === 'native' ? (manifest.codex.nativeCwd || '(native setup pending)') : manifest.worktree.path}`);
|
|
101
|
+
if (manifest.codex.clientThreadId)
|
|
102
|
+
console.log(` client id: ${manifest.codex.clientThreadId}`);
|
|
103
|
+
console.log(` owns: ${manifest.mode === 'read' ? '(read-only)' : manifest.owns.join(', ')}`);
|
|
104
|
+
if (manifest.report)
|
|
105
|
+
console.log(` report: ${manifest.report.summary} (${manifest.report.commit.slice(0, 8)})`);
|
|
106
|
+
if (manifest.error)
|
|
107
|
+
console.log(` error: ${manifest.error}`);
|
|
108
|
+
}
|
|
109
|
+
async function spawnChip(args) {
|
|
110
|
+
const task = args[0] && !args[0].startsWith('--') ? args[0].trim() : '';
|
|
111
|
+
if (!task)
|
|
112
|
+
throw new Error('Usage: greprag codex chip spawn "<task>" --name <name> --owns <glob>');
|
|
113
|
+
const name = flag(args, '--name') || task.slice(0, 40);
|
|
114
|
+
const mode = args.includes('--read-only') ? 'read' : 'write';
|
|
115
|
+
const owns = flags(args, '--owns');
|
|
116
|
+
if (mode === 'write' && owns.length === 0)
|
|
117
|
+
throw new Error('Write chips require at least one --owns <glob>.');
|
|
118
|
+
(0, git_1.validateLeases)(owns);
|
|
119
|
+
const runtime = flag(args, '--runtime') || 'native';
|
|
120
|
+
if (!['native', 'cli'].includes(runtime))
|
|
121
|
+
throw new Error('--runtime must be native or cli.');
|
|
122
|
+
if (runtime === 'native' && args.includes('--foreground')) {
|
|
123
|
+
throw new Error('--foreground is only valid with --runtime cli. Native Desktop tasks use handoff + attach.');
|
|
124
|
+
}
|
|
125
|
+
const root = (0, git_1.gitRoot)(process.cwd());
|
|
126
|
+
if ((0, git_1.isDirty)(root) && !args.includes('--allow-dirty')) {
|
|
127
|
+
throw new Error('Parent checkout is dirty. Commit/stash it or pass --allow-dirty explicitly.');
|
|
128
|
+
}
|
|
129
|
+
const anchor = (0, project_anchor_1.readAnchor)(root);
|
|
130
|
+
if (!anchor.initialized)
|
|
131
|
+
throw new Error('Project is not initialized. Run greprag init first.');
|
|
132
|
+
const id = crypto.randomUUID();
|
|
133
|
+
const short = id.slice(0, 8);
|
|
134
|
+
const slug = (0, git_1.slugify)(name);
|
|
135
|
+
const baseRef = flag(args, '--base') || 'HEAD';
|
|
136
|
+
const baseSha = (0, git_1.resolveCommit)(root, baseRef);
|
|
137
|
+
const parentSession = flag(args, '--parent-session') || process.env.CODEX_THREAD_ID;
|
|
138
|
+
if (!parentSession) {
|
|
139
|
+
throw new Error('No parent Codex session detected. Run inside Codex or pass --parent-session <thread-id>.');
|
|
140
|
+
}
|
|
141
|
+
const role = args.includes('--leader') ? 'leader' : 'worker';
|
|
142
|
+
const selectionArgs = role === 'leader' && !args.includes('--complex') && !flag(args, '--profile') &&
|
|
143
|
+
!flag(args, '--model') && !flag(args, '--effort')
|
|
144
|
+
? [...args, '--complex', '--model-reason', 'Multi-chip orchestration and integration',
|
|
145
|
+
'--complexity-signal', 'orchestration']
|
|
146
|
+
: args;
|
|
147
|
+
const selection = (0, selection_1.resolveChipSelection)(selectionArgs, parentSession);
|
|
148
|
+
const nativeModelVerified = args.includes('--native-model-verified');
|
|
149
|
+
const timeoutMinutes = (0, selection_1.resolveNativeTimeout)(args);
|
|
150
|
+
if (runtime === 'native')
|
|
151
|
+
(0, selection_1.assertNativeModelSelection)(selection, nativeModelVerified);
|
|
152
|
+
const codexProjectId = flag(args, '--codex-project-id') || process.env.CODEX_PROJECT_ID;
|
|
153
|
+
if (runtime === 'native' && !codexProjectId) {
|
|
154
|
+
throw new Error('Native spawn requires --codex-project-id <Codex project id>.');
|
|
155
|
+
}
|
|
156
|
+
const worktree = path.join((0, store_1.chipWorktreeRoot)(anchor.projectId), `${slug}-${short}`);
|
|
157
|
+
const branch = `codex/chip-${slug}-${short}`;
|
|
158
|
+
const now = new Date().toISOString();
|
|
159
|
+
const cliCommand = [
|
|
160
|
+
shellQuote((0, codex_startup_1.stableExecutable)(process.execPath)),
|
|
161
|
+
shellQuote(path.join(__dirname, '..', '..', 'index.js')),
|
|
162
|
+
].join(' ');
|
|
163
|
+
const manifest = {
|
|
164
|
+
version: model_1.CHIP_MANIFEST_VERSION, revision: 0,
|
|
165
|
+
id, name, task, mode, owns, state: 'planned',
|
|
166
|
+
project: { id: anchor.projectId, name: anchor.projectName },
|
|
167
|
+
parent: {
|
|
168
|
+
root, baseRef, baseSha,
|
|
169
|
+
sessionId: parentSession,
|
|
170
|
+
},
|
|
171
|
+
worktree: { path: worktree, branch },
|
|
172
|
+
codex: {
|
|
173
|
+
projectId: codexProjectId,
|
|
174
|
+
role,
|
|
175
|
+
bindingNonce: runtime === 'native' ? crypto.randomBytes(16).toString('hex') : undefined,
|
|
176
|
+
nativeModelVerified,
|
|
177
|
+
timeoutMinutes,
|
|
178
|
+
attachDeadlineAt: runtime === 'native' ? new Date(Date.now() + 10 * 60_000).toISOString() : undefined,
|
|
179
|
+
transport: flag(args, '--transport') === 'proxy' ? 'proxy' : 'stdio',
|
|
180
|
+
runtime: runtime,
|
|
181
|
+
cliCommand,
|
|
182
|
+
profile: selection.profile,
|
|
183
|
+
model: selection.model,
|
|
184
|
+
effort: selection.effort,
|
|
185
|
+
selection,
|
|
186
|
+
},
|
|
187
|
+
createdAt: now,
|
|
188
|
+
updatedAt: now,
|
|
189
|
+
};
|
|
190
|
+
(0, store_1.withProjectChipLock)(anchor.projectId, () => {
|
|
191
|
+
(0, git_1.assertNoLeaseConflicts)(owns, (0, store_1.activeManifests)(anchor.projectId));
|
|
192
|
+
(0, store_1.writeManifest)(manifest);
|
|
193
|
+
});
|
|
194
|
+
try {
|
|
195
|
+
(0, store_1.updateManifest)(id, { state: 'provisioning' });
|
|
196
|
+
if (runtime === 'native')
|
|
197
|
+
(0, git_1.createBranch)(root, branch, baseSha);
|
|
198
|
+
else {
|
|
199
|
+
(0, git_1.createWorktree)(root, worktree, branch, baseSha);
|
|
200
|
+
(0, git_1.writeChipMarker)(worktree, { id, branch, baseSha, mode, owns });
|
|
201
|
+
}
|
|
202
|
+
(0, store_1.updateManifest)(id, { state: runtime === 'native' ? 'awaiting-native' : 'starting' });
|
|
203
|
+
if (runtime === 'native') {
|
|
204
|
+
const current = (0, store_1.readManifest)(id) || manifest;
|
|
205
|
+
(0, native_1.printNativeHandoff)(current, args.includes('--json'));
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
else if (args.includes('--foreground')) {
|
|
209
|
+
await (0, worker_1.runChipWorker)(id);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
const logDir = path.join((0, store_1.grepragHome)(), 'logs');
|
|
213
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
214
|
+
const out = fs.openSync(path.join(logDir, `codex-chip-${short}.log`), 'a');
|
|
215
|
+
const err = fs.openSync(path.join(logDir, `codex-chip-${short}.err.log`), 'a');
|
|
216
|
+
const cli = path.join(__dirname, '..', '..', 'index.js');
|
|
217
|
+
const child = (0, proc_1.safeSpawn)((0, codex_startup_1.stableExecutable)(process.execPath), [cli, 'codex', 'chip', 'worker', id], {
|
|
218
|
+
cwd: worktree, detached: true, windowsHide: true, stdio: ['ignore', out, err],
|
|
219
|
+
});
|
|
220
|
+
child.once('error', workerError => {
|
|
221
|
+
(0, store_1.updateManifest)(id, { state: 'failed', error: workerError.message });
|
|
222
|
+
});
|
|
223
|
+
(0, store_1.updateManifest)(id, { worker: { pid: child.pid || 0, heartbeatAt: new Date().toISOString() } });
|
|
224
|
+
child.unref();
|
|
225
|
+
fs.closeSync(out);
|
|
226
|
+
fs.closeSync(err);
|
|
227
|
+
}
|
|
228
|
+
printManifest((0, store_1.readManifest)(id) || manifest, args.includes('--json'));
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
(0, store_1.updateManifest)(id, { state: 'failed', error: err.message });
|
|
232
|
+
try {
|
|
233
|
+
if (fs.existsSync(worktree))
|
|
234
|
+
(0, git_1.removeWorktree)(root, worktree, true, (0, store_1.chipWorktreeRoot)(anchor.projectId));
|
|
235
|
+
}
|
|
236
|
+
catch { /* preserve primary error */ }
|
|
237
|
+
try {
|
|
238
|
+
(0, git_1.deleteBranch)(root, branch);
|
|
239
|
+
}
|
|
240
|
+
catch { /* branch may not exist */ }
|
|
241
|
+
throw err;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function startNativeMonitorProcess(manifest) {
|
|
245
|
+
(0, native_1.assertNoLiveNativeMonitor)(manifest);
|
|
246
|
+
const logDir = path.join((0, store_1.grepragHome)(), 'logs');
|
|
247
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
248
|
+
const out = fs.openSync(path.join(logDir, `codex-chip-${manifest.id.slice(0, 8)}.log`), 'a');
|
|
249
|
+
const err = fs.openSync(path.join(logDir, `codex-chip-${manifest.id.slice(0, 8)}.err.log`), 'a');
|
|
250
|
+
const cli = path.join(__dirname, '..', '..', 'index.js');
|
|
251
|
+
const child = (0, proc_1.safeSpawn)((0, codex_startup_1.stableExecutable)(process.execPath), [cli, 'codex', 'chip', 'native-monitor', manifest.id], {
|
|
252
|
+
cwd: (0, model_1.chipExecutionPath)(manifest), detached: true, windowsHide: true, stdio: ['ignore', out, err],
|
|
253
|
+
});
|
|
254
|
+
child.once('error', workerError => (0, store_1.updateManifest)(manifest.id, { state: 'failed', error: workerError.message }));
|
|
255
|
+
const now = new Date();
|
|
256
|
+
(0, store_1.updateManifest)(manifest.id, { worker: {
|
|
257
|
+
pid: child.pid || 0,
|
|
258
|
+
heartbeatAt: now.toISOString(),
|
|
259
|
+
deadlineAt: new Date(now.getTime() + (manifest.codex.timeoutMinutes || 180) * 60_000).toISOString(),
|
|
260
|
+
} });
|
|
261
|
+
child.unref();
|
|
262
|
+
fs.closeSync(out);
|
|
263
|
+
fs.closeSync(err);
|
|
264
|
+
}
|
|
265
|
+
async function attachNativeChip(args) {
|
|
266
|
+
let manifest = requireManifest(args[0]);
|
|
267
|
+
manifest = (0, native_1.attachNativeCheckout)(manifest);
|
|
268
|
+
try {
|
|
269
|
+
await (0, inbox_1.sendChipEvent)(manifest, manifest.parent.sessionId, {
|
|
270
|
+
kind: 'running', summary: `${manifest.name} attached to native Codex task ${manifest.codex.threadId.slice(0, 8)}.`,
|
|
271
|
+
}, manifest.codex.threadId);
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
(0, store_1.updateManifest)(manifest.id, {
|
|
275
|
+
state: 'awaiting-native',
|
|
276
|
+
error: `IN-FLIGHT delivery failed; attach may be retried: ${err.message}`,
|
|
277
|
+
worker: undefined,
|
|
278
|
+
});
|
|
279
|
+
throw err;
|
|
280
|
+
}
|
|
281
|
+
startNativeMonitorProcess((0, store_1.readManifest)(manifest.id) || manifest);
|
|
282
|
+
(0, native_1.printNativeHandoff)((0, store_1.readManifest)(manifest.id) || manifest, args.includes('--json'));
|
|
283
|
+
}
|
|
284
|
+
async function verifyNativeTitle(args) {
|
|
285
|
+
let manifest = requireManifest(args[0]);
|
|
286
|
+
const clientThreadId = flag(args, '--client-thread');
|
|
287
|
+
const threadId = flag(args, '--thread');
|
|
288
|
+
const nativeCwd = flag(args, '--cwd');
|
|
289
|
+
const title = flag(args, '--title');
|
|
290
|
+
const titleReadbacks = Number(flag(args, '--title-readbacks'));
|
|
291
|
+
const bootstrapAck = flag(args, '--bootstrap-ack');
|
|
292
|
+
const projectId = flag(args, '--project-id');
|
|
293
|
+
const baseSha = flag(args, '--base-sha');
|
|
294
|
+
const sandbox = flag(args, '--sandbox');
|
|
295
|
+
if (!clientThreadId || !threadId || !nativeCwd || !title || !bootstrapAck || !projectId || !baseSha || !sandbox) {
|
|
296
|
+
throw new Error('verify-title requires client/thread/cwd/title/bootstrap-ack/project-id/base-sha/sandbox attestations.');
|
|
297
|
+
}
|
|
298
|
+
manifest = (0, native_1.verifyNativeBinding)(manifest, {
|
|
299
|
+
clientThreadId, threadId, cwd: nativeCwd, title, titleReadbacks, bootstrapAck, projectId, baseSha, sandbox,
|
|
300
|
+
});
|
|
301
|
+
(0, native_1.printNativeHandoff)((0, store_1.readManifest)(manifest.id) || manifest, args.includes('--json'));
|
|
302
|
+
}
|
|
303
|
+
async function reportChip(args) {
|
|
304
|
+
const id = args[0];
|
|
305
|
+
if (!id)
|
|
306
|
+
throw new Error('Chip id is required.');
|
|
307
|
+
const summary = flag(args, '--summary');
|
|
308
|
+
if (!summary)
|
|
309
|
+
throw new Error('--summary is required.');
|
|
310
|
+
const marker = (0, git_1.readChipMarker)(process.cwd());
|
|
311
|
+
if (!marker || marker.id !== id)
|
|
312
|
+
throw new Error('Report must run from the matching managed chip checkout.');
|
|
313
|
+
const reportBranch = (0, git_1.branchName)(process.cwd());
|
|
314
|
+
if ((!reportBranch && !marker.detachedAllowed) || (reportBranch && reportBranch !== marker.branch)) {
|
|
315
|
+
throw new Error('Chip branch does not match its marker.');
|
|
316
|
+
}
|
|
317
|
+
if ((0, git_1.isDirty)(process.cwd()))
|
|
318
|
+
throw new Error('Chip checkout is dirty. Commit all intended changes before reporting.');
|
|
319
|
+
const commit = (0, git_1.headCommit)(process.cwd());
|
|
320
|
+
if (!(0, git_1.isCommitAncestor)(process.cwd(), marker.baseSha, commit)) {
|
|
321
|
+
throw new Error('Chip history does not descend from its recorded base commit.');
|
|
322
|
+
}
|
|
323
|
+
const files = (0, git_1.changedFiles)(process.cwd(), marker.baseSha);
|
|
324
|
+
if (marker.mode === 'write' && commit === marker.baseSha)
|
|
325
|
+
throw new Error('Write chip has no commit beyond its base.');
|
|
326
|
+
if (marker.mode === 'read' && (commit !== marker.baseSha || files.length > 0)) {
|
|
327
|
+
throw new Error('Read-only chip changed repository state. Reset it to the recorded base before reporting.');
|
|
328
|
+
}
|
|
329
|
+
const escaped = (0, git_1.outsideLease)(files, marker.owns);
|
|
330
|
+
if (marker.mode === 'write' && escaped.length) {
|
|
331
|
+
throw new Error(`Changed files outside the chip lease: ${escaped.join(', ')}`);
|
|
332
|
+
}
|
|
333
|
+
(0, lifecycle_1.writeChipReceipt)({ type: 'report', id, commit, summary, checks: flags(args, '--check'), at: new Date().toISOString() });
|
|
334
|
+
console.log(`Report submitted for chip ${id.slice(0, 8)}; host validation pending.`);
|
|
335
|
+
}
|
|
336
|
+
async function steerChip(args) {
|
|
337
|
+
let manifest = requireManifest(args[0]);
|
|
338
|
+
const message = args[1];
|
|
339
|
+
if (!message)
|
|
340
|
+
throw new Error('Steer requires a message.');
|
|
341
|
+
if (!manifest.codex.threadId)
|
|
342
|
+
throw new Error('Chip has not acquired a Codex thread yet.');
|
|
343
|
+
if (!['running', 'blocked'].includes(manifest.state)) {
|
|
344
|
+
throw new Error(`Chip is ${manifest.state}; only running or blocked chips can be steered.`);
|
|
345
|
+
}
|
|
346
|
+
if (manifest.codex.runtime === 'native') {
|
|
347
|
+
if (manifest.state === 'blocked') {
|
|
348
|
+
(0, native_1.assertNoLiveNativeMonitor)(manifest);
|
|
349
|
+
manifest = (0, store_1.updateManifest)(manifest.id, { state: 'running', error: undefined });
|
|
350
|
+
startNativeMonitorProcess(manifest);
|
|
351
|
+
}
|
|
352
|
+
console.log(JSON.stringify({
|
|
353
|
+
protocol: 'greprag-codex-native-steer-v1',
|
|
354
|
+
threadId: manifest.codex.threadId,
|
|
355
|
+
message,
|
|
356
|
+
instruction: 'Deliver message with the Codex Desktop native send_message_to_thread surface.',
|
|
357
|
+
}, null, 2));
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
if (manifest.state === 'blocked') {
|
|
361
|
+
manifest = (0, store_1.updateManifest)(manifest.id, {
|
|
362
|
+
state: 'running', error: undefined,
|
|
363
|
+
codex: { ...manifest.codex, turnId: undefined },
|
|
364
|
+
worker: { pid: process.pid, heartbeatAt: new Date().toISOString() },
|
|
365
|
+
});
|
|
366
|
+
await (0, worker_1.runChipWorker)(manifest.id, undefined, 2_000, message);
|
|
367
|
+
console.log(`Restarted chip ${manifest.id.slice(0, 8)} (${manifest.name}) with steering.`);
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
const client = new codex_app_server_client_1.CodexAppServerClient({ timeoutMs: 15_000, transport: manifest.codex.transport });
|
|
371
|
+
let needsContinuation = false;
|
|
372
|
+
try {
|
|
373
|
+
await client.initialize();
|
|
374
|
+
await client.request('thread/resume', { threadId: manifest.codex.threadId });
|
|
375
|
+
const turns = await client.request('thread/turns/list', {
|
|
376
|
+
threadId: manifest.codex.threadId, limit: 5, sortDirection: 'desc', itemsView: 'notLoaded',
|
|
377
|
+
});
|
|
378
|
+
const active = turns.data?.find(turn => ['inProgress', 'in_progress', 'running'].includes(turn.status || ''));
|
|
379
|
+
const input = [{ type: 'text', text: message }];
|
|
380
|
+
let turnId;
|
|
381
|
+
if (active?.id) {
|
|
382
|
+
await client.request('turn/steer', { threadId: manifest.codex.threadId, input, expectedTurnId: active.id });
|
|
383
|
+
turnId = active.id;
|
|
384
|
+
}
|
|
385
|
+
else
|
|
386
|
+
needsContinuation = true;
|
|
387
|
+
if (turnId)
|
|
388
|
+
await waitForTurn(client, manifest.codex.threadId, turnId);
|
|
389
|
+
}
|
|
390
|
+
finally {
|
|
391
|
+
client.close();
|
|
392
|
+
}
|
|
393
|
+
if (needsContinuation) {
|
|
394
|
+
(0, store_1.updateManifest)(manifest.id, {
|
|
395
|
+
codex: { ...manifest.codex, turnId: undefined },
|
|
396
|
+
worker: { pid: process.pid, heartbeatAt: new Date().toISOString() },
|
|
397
|
+
});
|
|
398
|
+
await (0, worker_1.runChipWorker)(manifest.id, undefined, 2_000, message);
|
|
399
|
+
console.log(`Continued chip ${manifest.id.slice(0, 8)} (${manifest.name}) with steering.`);
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
console.log(`Steered chip ${manifest.id.slice(0, 8)} (${manifest.name}).`);
|
|
403
|
+
}
|
|
404
|
+
async function stopChip(args) {
|
|
405
|
+
let manifest = requireManifest(args[0]);
|
|
406
|
+
if (manifest.codex.runtime === 'native' && manifest.codex.threadId && !args.includes('--native-interrupted')) {
|
|
407
|
+
throw new Error(`Native Codex task ${manifest.codex.threadId} must be interrupted through the Desktop surface first. ` +
|
|
408
|
+
`After it is stopped, rerun with --native-interrupted to record cancellation.`);
|
|
409
|
+
}
|
|
410
|
+
if (manifest.codex.threadId && manifest.codex.turnId) {
|
|
411
|
+
const client = new codex_app_server_client_1.CodexAppServerClient({ timeoutMs: 10_000, transport: manifest.codex.transport });
|
|
412
|
+
try {
|
|
413
|
+
await client.initialize();
|
|
414
|
+
await client.request('thread/resume', { threadId: manifest.codex.threadId });
|
|
415
|
+
await client.request('turn/interrupt', { threadId: manifest.codex.threadId, turnId: manifest.codex.turnId });
|
|
416
|
+
}
|
|
417
|
+
catch { /* state transition still records operator intent */ }
|
|
418
|
+
finally {
|
|
419
|
+
client.close();
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
manifest = (0, store_1.updateManifest)(manifest.id, { state: 'cancelled', error: flag(args, '--reason') || 'Stopped by operator.' });
|
|
423
|
+
await (0, inbox_1.sendChipEvent)(manifest, manifest.parent.sessionId, { kind: 'cancelled', summary: manifest.error || 'Stopped.' });
|
|
424
|
+
printManifest(manifest, false);
|
|
425
|
+
}
|
|
426
|
+
async function blockChip(args) {
|
|
427
|
+
const id = args[0];
|
|
428
|
+
if (!id)
|
|
429
|
+
throw new Error('Chip id is required.');
|
|
430
|
+
const reason = flag(args, '--reason');
|
|
431
|
+
if (!reason)
|
|
432
|
+
throw new Error('--reason is required.');
|
|
433
|
+
const marker = (0, git_1.readChipMarker)(process.cwd());
|
|
434
|
+
if (!marker || marker.id !== id)
|
|
435
|
+
throw new Error('Block must run from the matching managed chip checkout.');
|
|
436
|
+
(0, lifecycle_1.writeChipReceipt)({ type: 'block', id, reason, at: new Date().toISOString() });
|
|
437
|
+
console.log(`Blocker submitted for chip ${id.slice(0, 8)}.`);
|
|
438
|
+
}
|
|
439
|
+
function cleanupChip(args) {
|
|
440
|
+
let manifest = requireManifest(args[0]);
|
|
441
|
+
const force = args.includes('--force');
|
|
442
|
+
manifest = (0, lifecycle_1.prepareCleanup)(manifest, args.includes('--integrated'));
|
|
443
|
+
if ((0, model_1.isActiveChip)(manifest))
|
|
444
|
+
throw new Error(`Chip is ${manifest.state}; stop it before cleanup.`);
|
|
445
|
+
if (!manifest.worker?.settledAt && manifest.worker?.pid && processIsAlive(manifest.worker.pid)) {
|
|
446
|
+
throw new Error('Chip worker is still alive; wait for it to settle before cleanup.');
|
|
447
|
+
}
|
|
448
|
+
if (!manifest.worker?.settledAt && !force)
|
|
449
|
+
throw new Error('Chip worker has not settled; wait or use --force for a dead stale worker.');
|
|
450
|
+
const safeRoot = path.resolve((0, store_1.chipWorktreeRoot)(manifest.project.id));
|
|
451
|
+
const target = path.resolve(manifest.worktree.path);
|
|
452
|
+
const relative = path.relative(safeRoot, target);
|
|
453
|
+
if (!relative || relative.startsWith('..') || path.isAbsolute(relative))
|
|
454
|
+
throw new Error('Refusing cleanup outside the managed chip root.');
|
|
455
|
+
if (fs.existsSync(target) && (0, git_1.isDirty)(target) && !force)
|
|
456
|
+
throw new Error('Chip checkout is dirty; report/commit it or use --force.');
|
|
457
|
+
if (fs.existsSync(target))
|
|
458
|
+
(0, git_1.removeWorktree)(manifest.parent.root, target, force, safeRoot);
|
|
459
|
+
try {
|
|
460
|
+
(0, git_1.deleteBranch)(manifest.parent.root, manifest.worktree.branch);
|
|
461
|
+
}
|
|
462
|
+
catch { /* merged branch may already be gone */ }
|
|
463
|
+
manifest = (0, store_1.updateManifest)(manifest.id, { state: 'cleaned' });
|
|
464
|
+
printManifest(manifest, false);
|
|
465
|
+
}
|
|
466
|
+
async function reconcile() {
|
|
467
|
+
for (const manifest of (0, store_1.activeManifests)()) {
|
|
468
|
+
if (manifest.codex.runtime === 'native' && manifest.state === 'awaiting-native') {
|
|
469
|
+
const deadline = Date.parse(manifest.codex.attachDeadlineAt || '');
|
|
470
|
+
if (Number.isFinite(deadline) && Date.now() >= deadline) {
|
|
471
|
+
(0, store_1.updateManifest)(manifest.id, { state: 'failed', error: 'Native task was never title-verified and attached before its deadline.' });
|
|
472
|
+
console.log(`failed ${manifest.id.slice(0, 8)} ${manifest.name} (attach deadline)`);
|
|
473
|
+
continue;
|
|
474
|
+
}
|
|
475
|
+
console.log(`awaiting-native ${manifest.id.slice(0, 8)} ${manifest.name} (attach required)`);
|
|
476
|
+
continue;
|
|
477
|
+
}
|
|
478
|
+
if (manifest.state === 'blocked' && manifest.worker?.settledAt &&
|
|
479
|
+
Date.now() - Date.parse(manifest.updatedAt) > 24 * 60 * 60_000) {
|
|
480
|
+
(0, store_1.updateManifest)(manifest.id, { state: 'abandoned', error: manifest.error || 'Blocked chip expired after 24 hours.' });
|
|
481
|
+
console.log(`abandoned ${manifest.id.slice(0, 8)} ${manifest.name} (stale blocker)`);
|
|
482
|
+
continue;
|
|
483
|
+
}
|
|
484
|
+
if (manifest.state === 'reported' && manifest.worker?.settledAt) {
|
|
485
|
+
const outcome = await (0, lifecycle_1.reconcileReportedDelivery)(manifest);
|
|
486
|
+
if (outcome !== 'invalid') {
|
|
487
|
+
console.log(`${outcome} ${manifest.id.slice(0, 8)} ${manifest.name} (terminal delivery reconciled)`);
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
(0, store_1.updateManifest)(manifest.id, { state: 'failed', error: 'Report validated but terminal inbox delivery did not complete.' });
|
|
491
|
+
console.log(`failed ${manifest.id.slice(0, 8)} ${manifest.name} (terminal delivery incomplete)`);
|
|
492
|
+
continue;
|
|
493
|
+
}
|
|
494
|
+
const executionPath = (0, model_1.chipExecutionPath)(manifest);
|
|
495
|
+
if (!fs.existsSync(executionPath)) {
|
|
496
|
+
const age = Date.now() - Date.parse(manifest.updatedAt);
|
|
497
|
+
if (['planned', 'provisioning', 'starting'].includes(manifest.state) && age < 120_000)
|
|
498
|
+
continue;
|
|
499
|
+
const state = ['planned', 'provisioning'].includes(manifest.state) ? 'failed' : 'orphaned';
|
|
500
|
+
(0, store_1.updateManifest)(manifest.id, { state, error: 'Managed checkout is missing.' });
|
|
501
|
+
console.log(`${state} ${manifest.id.slice(0, 8)} ${manifest.name}`);
|
|
502
|
+
continue;
|
|
503
|
+
}
|
|
504
|
+
const heartbeat = Date.parse(manifest.worker?.heartbeatAt || manifest.updatedAt);
|
|
505
|
+
if (['starting', 'running'].includes(manifest.state) && Date.now() - heartbeat > 120_000 &&
|
|
506
|
+
(!manifest.worker?.pid || !processIsAlive(manifest.worker.pid))) {
|
|
507
|
+
(0, store_1.updateManifest)(manifest.id, { state: 'failed', error: 'Chip worker exited or stopped heartbeating.' });
|
|
508
|
+
console.log(`failed ${manifest.id.slice(0, 8)} ${manifest.name} (stale worker)`);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
function processIsAlive(pid) {
|
|
513
|
+
try {
|
|
514
|
+
process.kill(pid, 0);
|
|
515
|
+
return true;
|
|
516
|
+
}
|
|
517
|
+
catch {
|
|
518
|
+
return false;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
async function waitForTurn(client, threadId, turnId, timeoutMs = 30 * 60 * 1000) {
|
|
522
|
+
const deadline = Date.now() + timeoutMs;
|
|
523
|
+
while (Date.now() < deadline) {
|
|
524
|
+
await new Promise(resolve => setTimeout(resolve, 2_000));
|
|
525
|
+
const result = await client.request('thread/turns/list', {
|
|
526
|
+
threadId, limit: 10, sortDirection: 'desc', itemsView: 'notLoaded',
|
|
527
|
+
});
|
|
528
|
+
const turn = result.data?.find(item => item.id === turnId);
|
|
529
|
+
if (turn?.status && !['inProgress', 'in_progress', 'running'].includes(turn.status))
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
throw new Error(`Timed out waiting for Codex turn ${turnId} to settle.`);
|
|
533
|
+
}
|
|
534
|
+
async function runCodexChip(args) {
|
|
535
|
+
const sub = args[0];
|
|
536
|
+
const rest = args.slice(1);
|
|
537
|
+
if (!sub || ['help', '--help', '-h'].includes(sub))
|
|
538
|
+
return void console.log(HELP);
|
|
539
|
+
if (sub === 'spawn')
|
|
540
|
+
return spawnChip(rest);
|
|
541
|
+
if (sub === 'worker')
|
|
542
|
+
return (0, worker_1.runChipWorker)(rest[0]);
|
|
543
|
+
if (sub === 'native-monitor')
|
|
544
|
+
return (0, native_1.runNativeMonitor)(rest[0]);
|
|
545
|
+
if (sub === 'verify-title')
|
|
546
|
+
return verifyNativeTitle(rest);
|
|
547
|
+
if (sub === 'attach')
|
|
548
|
+
return attachNativeChip(rest);
|
|
549
|
+
if (sub === 'handoff') {
|
|
550
|
+
const manifest = requireManifest(rest[0]);
|
|
551
|
+
if (manifest.codex.runtime !== 'native')
|
|
552
|
+
throw new Error('This chip does not use the native Desktop runtime.');
|
|
553
|
+
if (rest.includes('--json'))
|
|
554
|
+
console.log(JSON.stringify((0, native_1.nativeHandoff)(manifest), null, 2));
|
|
555
|
+
else
|
|
556
|
+
(0, native_1.printNativeHandoff)(manifest, false);
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
if (sub === 'report')
|
|
560
|
+
return reportChip(rest);
|
|
561
|
+
if (sub === 'steer')
|
|
562
|
+
return steerChip(rest);
|
|
563
|
+
if (sub === 'stop')
|
|
564
|
+
return stopChip(rest);
|
|
565
|
+
if (sub === 'block')
|
|
566
|
+
return blockChip(rest);
|
|
567
|
+
if (sub === 'cleanup')
|
|
568
|
+
return cleanupChip(rest);
|
|
569
|
+
if (sub === 'reconcile')
|
|
570
|
+
return reconcile();
|
|
571
|
+
if (sub === 'list') {
|
|
572
|
+
const manifests = (0, store_1.listManifests)();
|
|
573
|
+
if (rest.includes('--json'))
|
|
574
|
+
console.log(JSON.stringify(manifests, null, 2));
|
|
575
|
+
else
|
|
576
|
+
manifests.forEach(item => console.log(`${item.id.slice(0, 8)} ${item.state.padEnd(10)} ${item.name}`));
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
if (sub === 'status')
|
|
580
|
+
return printManifest(requireManifest(rest[0]), rest.includes('--json'));
|
|
581
|
+
throw new Error(`Unknown codex chip command: ${sub}\n\n${HELP}`);
|
|
582
|
+
}
|
|
583
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/command.ts"],"names":[],"mappings":"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"}
|