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,62 @@
|
|
|
1
|
+
import { ChipManifest } from './model';
|
|
2
|
+
export interface NativeChipHandoff {
|
|
3
|
+
protocol: 'greprag-codex-native-v3';
|
|
4
|
+
chipId: string;
|
|
5
|
+
expectedBaseSha: string;
|
|
6
|
+
title: string;
|
|
7
|
+
createRequest: {
|
|
8
|
+
target: {
|
|
9
|
+
type: 'project';
|
|
10
|
+
projectId: string;
|
|
11
|
+
environment: {
|
|
12
|
+
type: 'worktree';
|
|
13
|
+
startingState: {
|
|
14
|
+
type: 'branch';
|
|
15
|
+
branchName: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
prompt: string;
|
|
20
|
+
};
|
|
21
|
+
bootstrapAck: string;
|
|
22
|
+
titleVerification: {
|
|
23
|
+
maxAttempts: 3;
|
|
24
|
+
settleBeforeRename: true;
|
|
25
|
+
exactTitle: string;
|
|
26
|
+
consecutiveReadBacks: 2;
|
|
27
|
+
retryDelayMs: 750;
|
|
28
|
+
};
|
|
29
|
+
dispatchSequence: readonly ['create', 'settle', 'rename', 'verify', 'attach', 'in-flight', 'mission'];
|
|
30
|
+
verifyTitleCommand?: string;
|
|
31
|
+
attachCommand?: string;
|
|
32
|
+
sendRequest?: {
|
|
33
|
+
threadId: string;
|
|
34
|
+
prompt: string;
|
|
35
|
+
model: string;
|
|
36
|
+
thinking: string;
|
|
37
|
+
};
|
|
38
|
+
instructions: string[];
|
|
39
|
+
}
|
|
40
|
+
/** Parent-side Desktop adapter primitive. Call only after the bootstrap turn
|
|
41
|
+
* settles; two consecutive read-backs catch the observed auto-title race. */
|
|
42
|
+
export declare function verifyDesktopTitle(expected: string, surface: {
|
|
43
|
+
setTitle(title: string): Promise<void>;
|
|
44
|
+
readTitle(): Promise<string>;
|
|
45
|
+
delay(ms: number): Promise<void>;
|
|
46
|
+
}, maxAttempts?: number): Promise<number>;
|
|
47
|
+
export declare function nativeHandoff(manifest: ChipManifest): NativeChipHandoff;
|
|
48
|
+
export declare function printNativeHandoff(manifest: ChipManifest, json?: boolean): void;
|
|
49
|
+
export declare function verifyNativeBinding(manifest: ChipManifest, params: {
|
|
50
|
+
clientThreadId: string;
|
|
51
|
+
threadId: string;
|
|
52
|
+
cwd: string;
|
|
53
|
+
title: string;
|
|
54
|
+
bootstrapAck: string;
|
|
55
|
+
projectId: string;
|
|
56
|
+
baseSha: string;
|
|
57
|
+
sandbox: string;
|
|
58
|
+
titleReadbacks: number;
|
|
59
|
+
}): ChipManifest;
|
|
60
|
+
export declare function attachNativeCheckout(manifest: ChipManifest): ChipManifest;
|
|
61
|
+
export declare function assertNoLiveNativeMonitor(manifest: ChipManifest, ownerPid?: number): void;
|
|
62
|
+
export declare function runNativeMonitor(id: string, pollMs?: number): Promise<void>;
|
|
@@ -0,0 +1,283 @@
|
|
|
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.verifyDesktopTitle = verifyDesktopTitle;
|
|
37
|
+
exports.nativeHandoff = nativeHandoff;
|
|
38
|
+
exports.printNativeHandoff = printNativeHandoff;
|
|
39
|
+
exports.verifyNativeBinding = verifyNativeBinding;
|
|
40
|
+
exports.attachNativeCheckout = attachNativeCheckout;
|
|
41
|
+
exports.assertNoLiveNativeMonitor = assertNoLiveNativeMonitor;
|
|
42
|
+
exports.runNativeMonitor = runNativeMonitor;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const model_1 = require("./model");
|
|
47
|
+
const prompt_1 = require("./prompt");
|
|
48
|
+
const worker_1 = require("./worker");
|
|
49
|
+
const store_1 = require("./store");
|
|
50
|
+
const inbox_1 = require("./inbox");
|
|
51
|
+
const git_1 = require("./git");
|
|
52
|
+
const selection_1 = require("./selection");
|
|
53
|
+
/** Parent-side Desktop adapter primitive. Call only after the bootstrap turn
|
|
54
|
+
* settles; two consecutive read-backs catch the observed auto-title race. */
|
|
55
|
+
async function verifyDesktopTitle(expected, surface, maxAttempts = 3) {
|
|
56
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
57
|
+
await surface.setTitle(expected);
|
|
58
|
+
let durable = true;
|
|
59
|
+
for (let read = 0; read < 2; read++) {
|
|
60
|
+
if (read)
|
|
61
|
+
await surface.delay(750);
|
|
62
|
+
if (await surface.readTitle() !== expected)
|
|
63
|
+
durable = false;
|
|
64
|
+
}
|
|
65
|
+
if (durable)
|
|
66
|
+
return attempt;
|
|
67
|
+
if (attempt < maxAttempts)
|
|
68
|
+
await surface.delay(750);
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Codex Desktop title did not remain exactly ${expected} after ${maxAttempts} attempts.`);
|
|
71
|
+
}
|
|
72
|
+
function nativeHandoff(manifest) {
|
|
73
|
+
const cli = manifest.codex.cliCommand || 'greprag';
|
|
74
|
+
if (!manifest.codex.projectId)
|
|
75
|
+
throw new Error('Native handoff is missing its Codex project id.');
|
|
76
|
+
const threadId = manifest.codex.threadId;
|
|
77
|
+
const nonce = manifest.codex.bindingNonce;
|
|
78
|
+
if (!nonce)
|
|
79
|
+
throw new Error('Native handoff is missing its binding nonce.');
|
|
80
|
+
const title = `${manifest.codex.role === 'leader' ? 'LEAD' : 'Chip'}: ${manifest.name.replace(/^(?:Chip|LEAD):\s*/i, '')}`;
|
|
81
|
+
const bootstrapAck = `BOOTSTRAP_READY:${nonce}`;
|
|
82
|
+
const verified = Boolean(manifest.codex.titleVerifiedAt);
|
|
83
|
+
const attached = manifest.state === 'running' && Boolean(threadId);
|
|
84
|
+
return {
|
|
85
|
+
protocol: 'greprag-codex-native-v3',
|
|
86
|
+
chipId: manifest.id,
|
|
87
|
+
expectedBaseSha: manifest.parent.baseSha,
|
|
88
|
+
title,
|
|
89
|
+
createRequest: {
|
|
90
|
+
target: {
|
|
91
|
+
type: 'project', projectId: manifest.codex.projectId,
|
|
92
|
+
environment: { type: 'worktree', startingState: { type: 'branch', branchName: manifest.worktree.branch } },
|
|
93
|
+
},
|
|
94
|
+
prompt: `Bootstrap Codex chip ${manifest.id.slice(0, 8)}. Reply exactly ${bootstrapAck} and wait. Do not modify files yet.`,
|
|
95
|
+
},
|
|
96
|
+
bootstrapAck,
|
|
97
|
+
titleVerification: {
|
|
98
|
+
maxAttempts: 3, settleBeforeRename: true, exactTitle: title, consecutiveReadBacks: 2, retryDelayMs: 750,
|
|
99
|
+
},
|
|
100
|
+
dispatchSequence: ['create', 'settle', 'rename', 'verify', 'attach', 'in-flight', 'mission'],
|
|
101
|
+
verifyTitleCommand: !verified
|
|
102
|
+
? `${cli} codex chip verify-title ${manifest.id} --client-thread <clientThreadId> --thread <threadId> --cwd <actual-native-cwd> --title ${JSON.stringify(title)} --title-readbacks 2 --bootstrap-ack ${bootstrapAck} --project-id ${manifest.codex.projectId} --base-sha ${manifest.parent.baseSha} --sandbox workspace-write`
|
|
103
|
+
: undefined,
|
|
104
|
+
attachCommand: verified && !attached ? `${cli} codex chip attach ${manifest.id}` : undefined,
|
|
105
|
+
sendRequest: attached ? {
|
|
106
|
+
threadId: threadId, prompt: (0, prompt_1.chipPrompt)(manifest, cli),
|
|
107
|
+
model: manifest.codex.model || 'gpt-5.6-luna',
|
|
108
|
+
thinking: (0, selection_1.resolveDesktopThinking)(manifest.codex.effort),
|
|
109
|
+
} : undefined,
|
|
110
|
+
instructions: attached ? [
|
|
111
|
+
'Call send_message_to_thread with sendRequest. Model/thinking are applied here because create_thread rejects high/xhigh with worktree startingState.',
|
|
112
|
+
'The attached monitor validates receipts in the actual app-owned checkout.',
|
|
113
|
+
] : verified ? [
|
|
114
|
+
'Run attachCommand. It installs the marker and emits IN-FLIGHT only after durable title verification.',
|
|
115
|
+
'Rerun this handoff after attach, then deliver sendRequest as the mission. Do not send the mission before IN-FLIGHT succeeds.',
|
|
116
|
+
] : [
|
|
117
|
+
'Call create_thread with createRequest exactly. It intentionally omits title/model/thinking and returns clientThreadId while worktree setup runs.',
|
|
118
|
+
'Wait for the bootstrap turn to settle and verify its exact bootstrapAck. Resolve threadId and native cwd with list_threads/read_thread.',
|
|
119
|
+
'Call set_thread_title with titleVerification.exactTitle, then read_thread back twice with retryDelayMs between reads. Retry at most maxAttempts if auto-title overwrites it.',
|
|
120
|
+
'Only after read_thread returns the exact title, run verifyTitleCommand. Fail loudly if the title is not durable.',
|
|
121
|
+
'Rerun this handoff to obtain attachCommand. No attach, IN-FLIGHT, or mission is allowed before verification.',
|
|
122
|
+
],
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function printNativeHandoff(manifest, json = false) {
|
|
126
|
+
const handoff = nativeHandoff(manifest);
|
|
127
|
+
if (json)
|
|
128
|
+
return void console.log(JSON.stringify(handoff, null, 2));
|
|
129
|
+
console.log(`Native Codex Desktop handoff prepared for ${manifest.id.slice(0, 8)} (${manifest.name}).`);
|
|
130
|
+
console.log(` title: ${handoff.title}`);
|
|
131
|
+
console.log(` project: ${handoff.createRequest.target.projectId}`);
|
|
132
|
+
console.log(` branch: ${handoff.createRequest.target.environment.startingState.branchName}`);
|
|
133
|
+
console.log(` action: ${handoff.sendRequest ? 'send the mission' : handoff.attachCommand ? 'attach and emit IN-FLIGHT' : 'create, settle, durably title, then verify'}.`);
|
|
134
|
+
if (handoff.verifyTitleCommand)
|
|
135
|
+
console.log(` verify: ${handoff.verifyTitleCommand}`);
|
|
136
|
+
if (handoff.attachCommand)
|
|
137
|
+
console.log(` attach: ${handoff.attachCommand}`);
|
|
138
|
+
console.log(` payload: greprag codex chip handoff ${manifest.id} --json`);
|
|
139
|
+
}
|
|
140
|
+
function verifyNativeBinding(manifest, params) {
|
|
141
|
+
if (manifest.codex.runtime !== 'native')
|
|
142
|
+
throw new Error('Only a native-runtime chip can be attached.');
|
|
143
|
+
if (manifest.state !== 'awaiting-native')
|
|
144
|
+
throw new Error(`Chip is ${manifest.state}; expected awaiting-native.`);
|
|
145
|
+
const idPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
146
|
+
const clientMatch = /^(?:client-new-thread:)?([0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$/i
|
|
147
|
+
.exec(params.clientThreadId);
|
|
148
|
+
if (!clientMatch || !idPattern.test(params.threadId)) {
|
|
149
|
+
throw new Error('Attach requires the Codex-issued clientThreadId token and resolved threadId UUID.');
|
|
150
|
+
}
|
|
151
|
+
if (clientMatch[1].toLowerCase() === params.threadId.toLowerCase() ||
|
|
152
|
+
params.threadId.toLowerCase() === manifest.parent.sessionId?.toLowerCase()) {
|
|
153
|
+
throw new Error('Native binding must identify a distinct resolved child task.');
|
|
154
|
+
}
|
|
155
|
+
const expectedTitle = `${manifest.codex.role === 'leader' ? 'LEAD' : 'Chip'}: ${manifest.name.replace(/^(?:Chip|LEAD):\s*/i, '')}`;
|
|
156
|
+
const expectedAck = `BOOTSTRAP_READY:${manifest.codex.bindingNonce}`;
|
|
157
|
+
if (params.title !== expectedTitle)
|
|
158
|
+
throw new Error(`Native title was not durably verified as ${expectedTitle}.`);
|
|
159
|
+
if (params.titleReadbacks !== 2)
|
|
160
|
+
throw new Error('Native title verification requires two consecutive read_thread confirmations.');
|
|
161
|
+
if (params.bootstrapAck !== expectedAck)
|
|
162
|
+
throw new Error('Native bootstrap acknowledgement does not bind this task.');
|
|
163
|
+
if (params.projectId !== manifest.codex.projectId || params.baseSha !== manifest.parent.baseSha) {
|
|
164
|
+
throw new Error('Native project/base attestation does not match the prepared task.');
|
|
165
|
+
}
|
|
166
|
+
if (params.sandbox !== 'workspace-write')
|
|
167
|
+
throw new Error('Native task must attest the workspace-write sandbox.');
|
|
168
|
+
const cwd = fs.realpathSync(path.resolve(params.cwd));
|
|
169
|
+
if (!fs.existsSync(cwd) || (0, git_1.gitRoot)(cwd) !== cwd)
|
|
170
|
+
throw new Error('Native cwd must be an existing Git checkout root.');
|
|
171
|
+
const codexHome = fs.realpathSync(path.resolve(process.env.CODEX_HOME || path.join(os.homedir(), '.codex')));
|
|
172
|
+
const worktreeRoot = path.join(codexHome, 'worktrees');
|
|
173
|
+
const relativeToCodex = path.relative(worktreeRoot, cwd);
|
|
174
|
+
if (!relativeToCodex || relativeToCodex.startsWith('..') || path.isAbsolute(relativeToCodex)) {
|
|
175
|
+
throw new Error(`Native cwd must be beneath the Codex worktree root ${worktreeRoot}.`);
|
|
176
|
+
}
|
|
177
|
+
if (cwd.toLowerCase() === path.resolve(manifest.parent.root).toLowerCase() ||
|
|
178
|
+
cwd.toLowerCase() === path.resolve(manifest.worktree.path).toLowerCase()) {
|
|
179
|
+
throw new Error('Native cwd must be the distinct Codex-managed execution checkout, not the parent or staging path.');
|
|
180
|
+
}
|
|
181
|
+
if ((0, git_1.headCommit)(cwd) !== manifest.parent.baseSha) {
|
|
182
|
+
throw new Error('Native checkout HEAD does not match the recorded starting commit.');
|
|
183
|
+
}
|
|
184
|
+
const branch = (0, git_1.branchName)(cwd);
|
|
185
|
+
if (branch && branch !== manifest.worktree.branch) {
|
|
186
|
+
throw new Error(`Native checkout branch ${branch} does not match ${manifest.worktree.branch}.`);
|
|
187
|
+
}
|
|
188
|
+
return (0, store_1.updateManifest)(manifest.id, {
|
|
189
|
+
codex: {
|
|
190
|
+
...manifest.codex,
|
|
191
|
+
clientThreadId: params.clientThreadId,
|
|
192
|
+
threadId: params.threadId,
|
|
193
|
+
nativeCwd: cwd,
|
|
194
|
+
bootstrapAck: params.bootstrapAck,
|
|
195
|
+
verifiedTitle: params.title,
|
|
196
|
+
titleReadbacks: params.titleReadbacks,
|
|
197
|
+
titleVerifiedAt: new Date().toISOString(),
|
|
198
|
+
sandbox: 'workspace-write',
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
function attachNativeCheckout(manifest) {
|
|
203
|
+
if (manifest.state !== 'awaiting-native' || !manifest.codex.titleVerifiedAt ||
|
|
204
|
+
!manifest.codex.threadId || !manifest.codex.clientThreadId || !manifest.codex.nativeCwd) {
|
|
205
|
+
throw new Error('Native attach requires a durably verified title and complete native binding.');
|
|
206
|
+
}
|
|
207
|
+
if (manifest.codex.titleReadbacks !== 2 ||
|
|
208
|
+
manifest.codex.verifiedTitle !== `${manifest.codex.role === 'leader' ? 'LEAD' : 'Chip'}: ${manifest.name.replace(/^(?:Chip|LEAD):\s*/i, '')}`) {
|
|
209
|
+
throw new Error('Native verified title no longer matches the chip role/name.');
|
|
210
|
+
}
|
|
211
|
+
(0, git_1.writeChipMarker)(manifest.codex.nativeCwd, {
|
|
212
|
+
id: manifest.id, branch: manifest.worktree.branch, baseSha: manifest.parent.baseSha,
|
|
213
|
+
mode: manifest.mode, owns: manifest.owns, detachedAllowed: true,
|
|
214
|
+
});
|
|
215
|
+
return (0, store_1.updateManifest)(manifest.id, { state: 'running', error: undefined });
|
|
216
|
+
}
|
|
217
|
+
function assertNoLiveNativeMonitor(manifest, ownerPid) {
|
|
218
|
+
const current = (0, store_1.readManifest)(manifest.id) || manifest;
|
|
219
|
+
if (!current.worker?.pid || current.worker.settledAt)
|
|
220
|
+
return;
|
|
221
|
+
if (ownerPid && current.worker.pid === ownerPid)
|
|
222
|
+
return;
|
|
223
|
+
try {
|
|
224
|
+
process.kill(current.worker.pid, 0);
|
|
225
|
+
throw new Error(`Native monitor ${current.worker.pid} is already live for chip ${manifest.id.slice(0, 8)}.`);
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
if (err.message.includes('already live'))
|
|
229
|
+
throw err;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async function runNativeMonitor(id, pollMs = 2_000) {
|
|
233
|
+
let manifest = (0, store_1.readManifest)(id);
|
|
234
|
+
if (!manifest)
|
|
235
|
+
throw new Error(`Unknown chip: ${id}`);
|
|
236
|
+
if (manifest.codex.runtime !== 'native' || !manifest.codex.threadId) {
|
|
237
|
+
throw new Error('Native monitor requires an attached native Codex thread.');
|
|
238
|
+
}
|
|
239
|
+
manifest = (0, store_1.withProjectChipLock)(manifest.project.id, () => {
|
|
240
|
+
const current = (0, store_1.readManifest)(id) || manifest;
|
|
241
|
+
assertNoLiveNativeMonitor(current, process.pid);
|
|
242
|
+
return (0, store_1.updateManifest)(id, {
|
|
243
|
+
worker: { ...current.worker, pid: process.pid, heartbeatAt: new Date().toISOString(), settledAt: undefined },
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
try {
|
|
247
|
+
while (true) {
|
|
248
|
+
manifest = (0, store_1.readManifest)(id) || manifest;
|
|
249
|
+
if (!['running', 'blocked'].includes(manifest.state))
|
|
250
|
+
break;
|
|
251
|
+
const deadline = Date.parse(manifest.worker?.deadlineAt || '');
|
|
252
|
+
if (Number.isFinite(deadline) && Date.now() >= deadline) {
|
|
253
|
+
const message = `Native chip exceeded its ${manifest.codex.timeoutMinutes || 180}-minute receipt deadline.`;
|
|
254
|
+
manifest = (0, store_1.updateManifest)(id, { state: 'failed', error: message });
|
|
255
|
+
await (0, inbox_1.sendChipEvent)(manifest, manifest.parent.sessionId, { kind: 'failed', summary: message }, manifest.codex.threadId);
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
(0, store_1.updateManifest)(id, { worker: { ...manifest.worker, pid: process.pid, heartbeatAt: new Date().toISOString() } });
|
|
259
|
+
const receipt = await (0, worker_1.processChipReceipt)(id);
|
|
260
|
+
if (receipt && ['ready', 'blocked'].includes(receipt.state))
|
|
261
|
+
break;
|
|
262
|
+
await new Promise(resolve => setTimeout(resolve, pollMs));
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
const message = err.message;
|
|
267
|
+
const current = (0, store_1.readManifest)(id);
|
|
268
|
+
if (current?.state === 'reported')
|
|
269
|
+
throw err;
|
|
270
|
+
manifest = (0, store_1.updateManifest)(id, { state: 'failed', error: message });
|
|
271
|
+
await (0, inbox_1.sendChipEvent)(manifest, manifest.parent.sessionId, { kind: 'failed', summary: message }, manifest.codex.threadId);
|
|
272
|
+
throw err;
|
|
273
|
+
}
|
|
274
|
+
finally {
|
|
275
|
+
const current = (0, store_1.readManifest)(id);
|
|
276
|
+
if (current && fs.existsSync((0, model_1.chipExecutionPath)(current))) {
|
|
277
|
+
(0, store_1.updateManifest)(id, {
|
|
278
|
+
worker: { ...current.worker, pid: process.pid, heartbeatAt: new Date().toISOString(), settledAt: new Date().toISOString() },
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.chipPrompt = chipPrompt;
|
|
4
|
+
const model_1 = require("./model");
|
|
5
|
+
function chipPrompt(manifest, cliCommand = 'greprag') {
|
|
6
|
+
const executionPath = (0, model_1.chipExecutionPath)(manifest);
|
|
7
|
+
const ownership = manifest.mode === 'read'
|
|
8
|
+
? 'This is a read-only chip. Do not modify files.'
|
|
9
|
+
: `You exclusively own these repository paths:\n${manifest.owns.map(v => `- ${v}`).join('\n')}`;
|
|
10
|
+
const completion = manifest.mode === 'read'
|
|
11
|
+
? `Keep the checkout unchanged, then run:\n ${cliCommand} codex chip report ${manifest.id} --summary "<analysis result>" --check "read-only repository state verified"\nDo not stop before the report command succeeds.`
|
|
12
|
+
: `Commit the chip's changes, then run:\n ${cliCommand} codex chip report ${manifest.id} --summary "<result>" --check "<verification>"\nDo not stop before the report command succeeds.`;
|
|
13
|
+
const blocker = `If blocked, run:\n ${cliCommand} codex chip block ${manifest.id} --reason "<specific blocker>"`;
|
|
14
|
+
return `You are Codex chip ${manifest.name} (${manifest.id.slice(0, 8)}), an isolated child task.
|
|
15
|
+
|
|
16
|
+
Assignment:
|
|
17
|
+
${manifest.task}
|
|
18
|
+
|
|
19
|
+
Parent-owned model selection:
|
|
20
|
+
- ${manifest.codex.model} / ${manifest.codex.effort} (${manifest.codex.profile})
|
|
21
|
+
- Reason: ${manifest.codex.selection?.reason || 'recorded by the parent'}
|
|
22
|
+
- Never self-select, downgrade, upgrade, or silently change the model.
|
|
23
|
+
- If scope crosses the selected boundary, send the parent a breakthrough message; only the parent may steer or relaunch.
|
|
24
|
+
|
|
25
|
+
Isolation contract:
|
|
26
|
+
- Work only in the isolated checkout at ${executionPath}
|
|
27
|
+
- Branch: ${manifest.worktree.branch}
|
|
28
|
+
- Base commit: ${manifest.parent.baseSha}
|
|
29
|
+
- ${ownership}
|
|
30
|
+
- Do not merge, push, delete the checkout, or modify the parent checkout.
|
|
31
|
+
- Coordinate with the parent through the GrepRAG inbox when assumptions or scope change.
|
|
32
|
+
|
|
33
|
+
Completion contract:
|
|
34
|
+
1. Implement and verify the assignment.
|
|
35
|
+
2. ${completion}
|
|
36
|
+
3. ${blocker}
|
|
37
|
+
|
|
38
|
+
Parent inbox contract:
|
|
39
|
+
- The native attach step sends IN-FLIGHT to the recorded parent immediately; do not begin work before attachment.
|
|
40
|
+
- Before ending, submit exactly one terminal report: DONE via \`report\`, or BLOCKED via \`block\`.
|
|
41
|
+
|
|
42
|
+
The durable manifest is ${manifest.id}; it is the authority for lifecycle and ownership.`;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/prompt.ts"],"names":[],"mappings":";;AAEA,gCAsCC;AAxCD,mCAA0D;AAE1D,SAAgB,UAAU,CAAC,QAAsB,EAAE,UAAU,GAAG,SAAS;IACvE,MAAM,aAAa,GAAG,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM;QACxC,CAAC,CAAC,gDAAgD;QAClD,CAAC,CAAC,gDAAgD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAClG,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,KAAK,MAAM;QACzC,CAAC,CAAC,8CAA8C,UAAU,sBAAsB,QAAQ,CAAC,EAAE,+HAA+H;QAC1N,CAAC,CAAC,4CAA4C,UAAU,sBAAsB,QAAQ,CAAC,EAAE,iGAAiG,CAAC;IAC7L,MAAM,OAAO,GAAG,wBAAwB,UAAU,qBAAqB,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IACnH,OAAO,sBAAsB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;;EAGtE,QAAQ,CAAC,IAAI;;;IAGX,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,OAAO;YAClE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,wBAAwB;;;;;0CAK9B,aAAa;YAC3C,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBACnB,QAAQ,CAAC,MAAM,CAAC,OAAO;IACpC,SAAS;;;;;;KAMR,UAAU;KACV,OAAO;;;;;;0BAMc,QAAQ,CAAC,EAAE,oDAAoD,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChipManifest } from './model';
|
|
2
|
+
declare const EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max", "ultra"];
|
|
3
|
+
export declare const COMPLEXITY_SIGNALS: readonly ["orchestration", "multi-chip-integration", "architecture-api-schema", "cross-cutting-ownership", "ambiguous-synthesis", "high-risk-correctness", "novel-multi-hypothesis-diagnosis"];
|
|
4
|
+
declare const DESKTOP_THINKING: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max", "ultra"];
|
|
5
|
+
export declare function resolveNativeTimeout(args: string[], fallback?: number): number;
|
|
6
|
+
export declare function resolveChipModel(args: string[]): {
|
|
7
|
+
profile: 'standard' | 'complex' | 'custom';
|
|
8
|
+
model: string;
|
|
9
|
+
effort: typeof EFFORTS[number];
|
|
10
|
+
};
|
|
11
|
+
export declare function resolveChipSelection(args: string[], selectedBy: string): NonNullable<ChipManifest['codex']['selection']>;
|
|
12
|
+
export declare function resolveDesktopThinking(effort: string | undefined): typeof DESKTOP_THINKING[number];
|
|
13
|
+
export declare function assertNativeModelSelection(selection: NonNullable<ChipManifest['codex']['selection']>, verifiedOverride: boolean): void;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMPLEXITY_SIGNALS = void 0;
|
|
4
|
+
exports.resolveNativeTimeout = resolveNativeTimeout;
|
|
5
|
+
exports.resolveChipModel = resolveChipModel;
|
|
6
|
+
exports.resolveChipSelection = resolveChipSelection;
|
|
7
|
+
exports.resolveDesktopThinking = resolveDesktopThinking;
|
|
8
|
+
exports.assertNativeModelSelection = assertNativeModelSelection;
|
|
9
|
+
const EFFORTS = ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'];
|
|
10
|
+
exports.COMPLEXITY_SIGNALS = [
|
|
11
|
+
'orchestration',
|
|
12
|
+
'multi-chip-integration',
|
|
13
|
+
'architecture-api-schema',
|
|
14
|
+
'cross-cutting-ownership',
|
|
15
|
+
'ambiguous-synthesis',
|
|
16
|
+
'high-risk-correctness',
|
|
17
|
+
'novel-multi-hypothesis-diagnosis',
|
|
18
|
+
];
|
|
19
|
+
const DESKTOP_THINKING = ['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'];
|
|
20
|
+
const KNOWN_NATIVE_EFFORTS = {
|
|
21
|
+
'gpt-5.6-sol': ['low', 'medium', 'high', 'xhigh', 'max', 'ultra'],
|
|
22
|
+
'gpt-5.6-terra': ['low', 'medium', 'high', 'xhigh', 'max', 'ultra'],
|
|
23
|
+
'gpt-5.6-luna': ['low', 'medium', 'high', 'xhigh', 'max'],
|
|
24
|
+
'gpt-5.5': ['low', 'medium', 'high', 'xhigh'],
|
|
25
|
+
'gpt-5.4': ['low', 'medium', 'high', 'xhigh'],
|
|
26
|
+
'gpt-5.4-mini': ['low', 'medium', 'high', 'xhigh'],
|
|
27
|
+
'gpt-5.3-codex-spark': ['low', 'medium', 'high', 'xhigh'],
|
|
28
|
+
};
|
|
29
|
+
function flag(args, name) {
|
|
30
|
+
const index = args.indexOf(name);
|
|
31
|
+
return index >= 0 ? args[index + 1] : undefined;
|
|
32
|
+
}
|
|
33
|
+
function flags(args, name) {
|
|
34
|
+
const values = [];
|
|
35
|
+
for (let i = 0; i < args.length; i++)
|
|
36
|
+
if (args[i] === name && args[i + 1])
|
|
37
|
+
values.push(args[++i]);
|
|
38
|
+
return values;
|
|
39
|
+
}
|
|
40
|
+
function resolveNativeTimeout(args, fallback = 180) {
|
|
41
|
+
const raw = flag(args, '--native-timeout-minutes');
|
|
42
|
+
if (!raw)
|
|
43
|
+
return fallback;
|
|
44
|
+
const value = Number(raw);
|
|
45
|
+
if (!Number.isFinite(value) || value < 1 || value > 1440) {
|
|
46
|
+
throw new Error('--native-timeout-minutes must be between 1 and 1440.');
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
function resolveChipModel(args) {
|
|
51
|
+
const profileFlag = args.includes('--complex') ? 'complex' : (flag(args, '--profile') || 'standard');
|
|
52
|
+
if (!['standard', 'complex'].includes(profileFlag))
|
|
53
|
+
throw new Error('--profile must be standard or complex.');
|
|
54
|
+
const profile = profileFlag;
|
|
55
|
+
const explicitModel = flag(args, '--model');
|
|
56
|
+
const explicitEffort = flag(args, '--effort');
|
|
57
|
+
const effort = explicitEffort || (profile === 'complex' ? 'high' : 'xhigh');
|
|
58
|
+
if (!EFFORTS.includes(effort)) {
|
|
59
|
+
throw new Error(`Invalid --effort ${effort}. Use: ${EFFORTS.join(', ')}.`);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
profile: explicitModel || explicitEffort ? 'custom' : profile,
|
|
63
|
+
model: explicitModel || (profile === 'complex' ? 'gpt-5.6-sol' : 'gpt-5.6-luna'),
|
|
64
|
+
effort: effort,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function resolveChipSelection(args, selectedBy) {
|
|
68
|
+
const model = resolveChipModel(args);
|
|
69
|
+
const signals = flags(args, '--complexity-signal');
|
|
70
|
+
const invalid = signals.filter(signal => !exports.COMPLEXITY_SIGNALS.includes(signal));
|
|
71
|
+
if (invalid.length)
|
|
72
|
+
throw new Error(`Unknown --complexity-signal ${invalid.join(', ')}. Use: ${exports.COMPLEXITY_SIGNALS.join(', ')}.`);
|
|
73
|
+
if (model.profile === 'standard' && signals.length) {
|
|
74
|
+
throw new Error('A matched complexity signal requires --profile complex (or an explicit custom model selection).');
|
|
75
|
+
}
|
|
76
|
+
const suppliedReason = flag(args, '--model-reason')?.trim();
|
|
77
|
+
if (model.profile !== 'standard' && !suppliedReason) {
|
|
78
|
+
throw new Error('--model-reason is required for complex or custom model selection.');
|
|
79
|
+
}
|
|
80
|
+
if (model.profile === 'complex' && signals.length === 0) {
|
|
81
|
+
throw new Error('Complex selection requires at least one --complexity-signal.');
|
|
82
|
+
}
|
|
83
|
+
if (suppliedReason && suppliedReason.length > 240)
|
|
84
|
+
throw new Error('--model-reason must be concise (240 characters or fewer).');
|
|
85
|
+
return {
|
|
86
|
+
...model,
|
|
87
|
+
selectedBy,
|
|
88
|
+
reason: suppliedReason || 'Bounded single-owner execution with clear acceptance criteria.',
|
|
89
|
+
complexitySignals: [...new Set(signals)],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function resolveDesktopThinking(effort) {
|
|
93
|
+
const value = effort || 'xhigh';
|
|
94
|
+
if (!DESKTOP_THINKING.includes(value)) {
|
|
95
|
+
throw new Error(`Native Desktop thinking must be one of: ${DESKTOP_THINKING.join(', ')}. Got ${value}.`);
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
function assertNativeModelSelection(selection, verifiedOverride) {
|
|
100
|
+
resolveDesktopThinking(selection.effort);
|
|
101
|
+
const supported = KNOWN_NATIVE_EFFORTS[selection.model];
|
|
102
|
+
if (supported && !supported.includes(selection.effort)) {
|
|
103
|
+
throw new Error(`Native Desktop model ${selection.model} does not support thinking ${selection.effort}.`);
|
|
104
|
+
}
|
|
105
|
+
if (selection.profile === 'custom' && !supported && !verifiedOverride) {
|
|
106
|
+
throw new Error('Custom native models require --native-model-verified after parent-side Desktop verification.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChipManifest, ChipState } from './model';
|
|
2
|
+
export declare function grepragHome(): string;
|
|
3
|
+
export declare function chipStoreRoot(): string;
|
|
4
|
+
export declare function chipWorktreeRoot(projectId: string): string;
|
|
5
|
+
export declare function manifestPath(id: string): string;
|
|
6
|
+
export declare function withProjectChipLock<T>(projectId: string, fn: () => T): T;
|
|
7
|
+
export declare function writeManifest(manifest: ChipManifest): void;
|
|
8
|
+
export declare function readManifest(id: string): ChipManifest | null;
|
|
9
|
+
export declare function listManifests(): ChipManifest[];
|
|
10
|
+
export declare function activeManifests(projectId?: string): ChipManifest[];
|
|
11
|
+
export declare function findManifest(ref: string): ChipManifest | null;
|
|
12
|
+
export declare function findManifestByContext(cwd: string, sessionId?: string): ChipManifest | null;
|
|
13
|
+
export declare function updateManifest(id: string, patch: Partial<Omit<ChipManifest, 'id' | 'version'>> & {
|
|
14
|
+
state?: ChipState;
|
|
15
|
+
}): ChipManifest;
|