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,30 @@
|
|
|
1
|
+
import { ChipManifest } from './model';
|
|
2
|
+
export declare function gitRoot(cwd: string): string;
|
|
3
|
+
export declare function resolveCommit(cwd: string, ref: string): string;
|
|
4
|
+
export declare function isDirty(cwd: string): boolean;
|
|
5
|
+
export declare function createWorktree(root: string, worktree: string, branch: string, baseSha: string): void;
|
|
6
|
+
export declare function removeWorktree(root: string, worktree: string, force?: boolean, managedRoot?: string): void;
|
|
7
|
+
export declare function deleteBranch(root: string, branch: string): void;
|
|
8
|
+
export declare function createBranch(root: string, branch: string, baseSha: string): void;
|
|
9
|
+
export declare function changedFiles(cwd: string, baseSha: string): string[];
|
|
10
|
+
export declare function headCommit(cwd: string): string;
|
|
11
|
+
export declare function branchName(cwd: string): string;
|
|
12
|
+
export declare function importBranch(parent: string, checkout: string, branch: string, commit: string): void;
|
|
13
|
+
export declare function chipReceiptPath(cwd: string): string;
|
|
14
|
+
export interface ChipMarker {
|
|
15
|
+
id: string;
|
|
16
|
+
branch: string;
|
|
17
|
+
baseSha: string;
|
|
18
|
+
mode: 'read' | 'write';
|
|
19
|
+
owns: string[];
|
|
20
|
+
detachedAllowed?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function chipMarkerPath(cwd: string): string;
|
|
23
|
+
export declare function writeChipMarker(cwd: string, marker: ChipMarker): void;
|
|
24
|
+
export declare function readChipMarker(cwd: string): ChipMarker | null;
|
|
25
|
+
export declare function isCommitAncestor(cwd: string, ancestor: string, descendant?: string): boolean;
|
|
26
|
+
export declare function slugify(value: string): string;
|
|
27
|
+
export declare function validateLeases(leases: string[]): void;
|
|
28
|
+
export declare function leasesOverlap(left: string, right: string): boolean;
|
|
29
|
+
export declare function assertNoLeaseConflicts(owns: string[], active: ChipManifest[]): void;
|
|
30
|
+
export declare function outsideLease(files: string[], owns: string[]): string[];
|
|
@@ -0,0 +1,223 @@
|
|
|
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.gitRoot = gitRoot;
|
|
37
|
+
exports.resolveCommit = resolveCommit;
|
|
38
|
+
exports.isDirty = isDirty;
|
|
39
|
+
exports.createWorktree = createWorktree;
|
|
40
|
+
exports.removeWorktree = removeWorktree;
|
|
41
|
+
exports.deleteBranch = deleteBranch;
|
|
42
|
+
exports.createBranch = createBranch;
|
|
43
|
+
exports.changedFiles = changedFiles;
|
|
44
|
+
exports.headCommit = headCommit;
|
|
45
|
+
exports.branchName = branchName;
|
|
46
|
+
exports.importBranch = importBranch;
|
|
47
|
+
exports.chipReceiptPath = chipReceiptPath;
|
|
48
|
+
exports.chipMarkerPath = chipMarkerPath;
|
|
49
|
+
exports.writeChipMarker = writeChipMarker;
|
|
50
|
+
exports.readChipMarker = readChipMarker;
|
|
51
|
+
exports.isCommitAncestor = isCommitAncestor;
|
|
52
|
+
exports.slugify = slugify;
|
|
53
|
+
exports.validateLeases = validateLeases;
|
|
54
|
+
exports.leasesOverlap = leasesOverlap;
|
|
55
|
+
exports.assertNoLeaseConflicts = assertNoLeaseConflicts;
|
|
56
|
+
exports.outsideLease = outsideLease;
|
|
57
|
+
const fs = __importStar(require("fs"));
|
|
58
|
+
const path = __importStar(require("path"));
|
|
59
|
+
const proc_1 = require("../../proc");
|
|
60
|
+
function git(cwd, args) {
|
|
61
|
+
return (0, proc_1.safeExecFileSync)('git', args, {
|
|
62
|
+
cwd,
|
|
63
|
+
encoding: 'utf-8',
|
|
64
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
65
|
+
}).trim();
|
|
66
|
+
}
|
|
67
|
+
function gitRoot(cwd) {
|
|
68
|
+
return path.resolve(git(cwd, ['rev-parse', '--show-toplevel']));
|
|
69
|
+
}
|
|
70
|
+
function resolveCommit(cwd, ref) {
|
|
71
|
+
return git(cwd, ['rev-parse', '--verify', `${ref}^{commit}`]);
|
|
72
|
+
}
|
|
73
|
+
function isDirty(cwd) {
|
|
74
|
+
return git(cwd, ['status', '--porcelain']).length > 0;
|
|
75
|
+
}
|
|
76
|
+
function createWorktree(root, worktree, branch, baseSha) {
|
|
77
|
+
fs.mkdirSync(path.dirname(worktree), { recursive: true });
|
|
78
|
+
// A linked worktree shares the parent's refs, index metadata, and object
|
|
79
|
+
// database. Codex would need write access to that shared control plane in
|
|
80
|
+
// order to commit. A local shared clone keeps its own refs/index while
|
|
81
|
+
// borrowing parent objects read-only through alternates: fast and isolated.
|
|
82
|
+
git(root, ['clone', '--shared', '--no-checkout', '--', root, worktree]);
|
|
83
|
+
for (const key of ['user.name', 'user.email']) {
|
|
84
|
+
try {
|
|
85
|
+
const value = git(root, ['config', '--get', key]);
|
|
86
|
+
if (value)
|
|
87
|
+
git(worktree, ['config', key, value]);
|
|
88
|
+
}
|
|
89
|
+
catch { /* Codex will surface ordinary Git identity setup if absent */ }
|
|
90
|
+
}
|
|
91
|
+
const parentModules = path.join(root, 'node_modules');
|
|
92
|
+
const chipModules = path.join(worktree, 'node_modules');
|
|
93
|
+
if (fs.existsSync(parentModules) && !fs.existsSync(chipModules)) {
|
|
94
|
+
const exclude = path.join(worktree, '.git', 'info', 'exclude');
|
|
95
|
+
fs.mkdirSync(path.dirname(exclude), { recursive: true });
|
|
96
|
+
const current = fs.existsSync(exclude) ? fs.readFileSync(exclude, 'utf-8') : '';
|
|
97
|
+
if (!current.split(/\r?\n/).includes('/node_modules'))
|
|
98
|
+
fs.appendFileSync(exclude, '\n/node_modules\n');
|
|
99
|
+
fs.symlinkSync(parentModules, chipModules, process.platform === 'win32' ? 'junction' : 'dir');
|
|
100
|
+
}
|
|
101
|
+
git(worktree, ['switch', '-c', branch, baseSha]);
|
|
102
|
+
}
|
|
103
|
+
function removeWorktree(root, worktree, force = false, managedRoot) {
|
|
104
|
+
void root;
|
|
105
|
+
if (!managedRoot)
|
|
106
|
+
throw new Error('Managed checkout root is required for cleanup.');
|
|
107
|
+
const safeRoot = path.resolve(managedRoot);
|
|
108
|
+
const target = path.resolve(worktree);
|
|
109
|
+
const relative = path.relative(safeRoot, target);
|
|
110
|
+
if (!relative || relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
111
|
+
throw new Error(`Refusing checkout cleanup outside ${safeRoot}.`);
|
|
112
|
+
}
|
|
113
|
+
if (!force && isDirty(worktree))
|
|
114
|
+
throw new Error('Chip checkout is dirty.');
|
|
115
|
+
fs.rmSync(target, { recursive: true, force: false });
|
|
116
|
+
}
|
|
117
|
+
function deleteBranch(root, branch) {
|
|
118
|
+
git(root, ['branch', '-D', branch]);
|
|
119
|
+
}
|
|
120
|
+
function createBranch(root, branch, baseSha) {
|
|
121
|
+
git(root, ['branch', branch, baseSha]);
|
|
122
|
+
}
|
|
123
|
+
function changedFiles(cwd, baseSha) {
|
|
124
|
+
return git(cwd, ['diff', '--name-only', `${baseSha}...HEAD`])
|
|
125
|
+
.split(/\r?\n/).map(v => v.trim()).filter(Boolean).map(v => v.replace(/\\/g, '/'));
|
|
126
|
+
}
|
|
127
|
+
function headCommit(cwd) {
|
|
128
|
+
return git(cwd, ['rev-parse', 'HEAD']);
|
|
129
|
+
}
|
|
130
|
+
function branchName(cwd) {
|
|
131
|
+
return git(cwd, ['branch', '--show-current']);
|
|
132
|
+
}
|
|
133
|
+
function importBranch(parent, checkout, branch, commit) {
|
|
134
|
+
git(parent, ['fetch', '--force', checkout, `${commit}:refs/heads/${branch}`]);
|
|
135
|
+
}
|
|
136
|
+
function chipReceiptPath(cwd) {
|
|
137
|
+
const gitDir = git(cwd, ['rev-parse', '--git-dir']);
|
|
138
|
+
return path.join(path.resolve(cwd, gitDir), 'greprag-chip-receipt.json');
|
|
139
|
+
}
|
|
140
|
+
function chipMarkerPath(cwd) {
|
|
141
|
+
const gitDir = git(cwd, ['rev-parse', '--git-dir']);
|
|
142
|
+
return path.join(path.resolve(cwd, gitDir), 'greprag-chip.json');
|
|
143
|
+
}
|
|
144
|
+
function writeChipMarker(cwd, marker) {
|
|
145
|
+
fs.writeFileSync(chipMarkerPath(cwd), JSON.stringify(marker, null, 2) + '\n', 'utf-8');
|
|
146
|
+
}
|
|
147
|
+
function readChipMarker(cwd) {
|
|
148
|
+
try {
|
|
149
|
+
return JSON.parse(fs.readFileSync(chipMarkerPath(cwd), 'utf-8'));
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function isCommitAncestor(cwd, ancestor, descendant = 'HEAD') {
|
|
156
|
+
try {
|
|
157
|
+
git(cwd, ['merge-base', '--is-ancestor', ancestor, descendant]);
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function slugify(value) {
|
|
165
|
+
const slug = value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 40);
|
|
166
|
+
return slug || 'chip';
|
|
167
|
+
}
|
|
168
|
+
function parseLease(value) {
|
|
169
|
+
const normalized = value.replace(/\\/g, '/').replace(/^\.\//, '').replace(/\/+$/, '');
|
|
170
|
+
if (!normalized || normalized.startsWith('../') || normalized.includes('/../') ||
|
|
171
|
+
path.posix.isAbsolute(normalized) || /^[a-z]:\//i.test(normalized)) {
|
|
172
|
+
throw new Error(`Invalid chip lease: ${value}`);
|
|
173
|
+
}
|
|
174
|
+
if (normalized.endsWith('/**')) {
|
|
175
|
+
const base = normalized.slice(0, -3).replace(/\/+$/, '');
|
|
176
|
+
if (!base || /[*?\[\]{}]/.test(base))
|
|
177
|
+
throw new Error(`Invalid directory lease: ${value}`);
|
|
178
|
+
return { kind: 'directory', path: base };
|
|
179
|
+
}
|
|
180
|
+
if (/[*?\[\]{}]/.test(normalized)) {
|
|
181
|
+
throw new Error(`Unsupported lease glob: ${value}. Use an exact file or a literal directory ending in /**.`);
|
|
182
|
+
}
|
|
183
|
+
return { kind: 'file', path: normalized };
|
|
184
|
+
}
|
|
185
|
+
function validateLeases(leases) {
|
|
186
|
+
for (const lease of leases)
|
|
187
|
+
parseLease(lease);
|
|
188
|
+
}
|
|
189
|
+
function leasesOverlap(left, right) {
|
|
190
|
+
const a = parseLease(left);
|
|
191
|
+
const b = parseLease(right);
|
|
192
|
+
if (a.kind === 'file' && b.kind === 'file')
|
|
193
|
+
return a.path === b.path;
|
|
194
|
+
if (a.kind === 'directory' && b.kind === 'directory') {
|
|
195
|
+
return a.path === b.path || a.path.startsWith(`${b.path}/`) || b.path.startsWith(`${a.path}/`);
|
|
196
|
+
}
|
|
197
|
+
const directory = a.kind === 'directory' ? a.path : b.path;
|
|
198
|
+
const file = a.kind === 'file' ? a.path : b.path;
|
|
199
|
+
return file.startsWith(`${directory}/`);
|
|
200
|
+
}
|
|
201
|
+
function assertNoLeaseConflicts(owns, active) {
|
|
202
|
+
for (const other of active) {
|
|
203
|
+
if (other.mode !== 'write')
|
|
204
|
+
continue;
|
|
205
|
+
for (const requested of owns) {
|
|
206
|
+
const conflict = other.owns.find(existing => leasesOverlap(requested, existing));
|
|
207
|
+
if (conflict) {
|
|
208
|
+
throw new Error(`Write lease collision with chip ${other.id.slice(0, 8)} (${other.name}): ` +
|
|
209
|
+
`${requested} overlaps ${conflict}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function outsideLease(files, owns) {
|
|
215
|
+
const leases = owns.map(parseLease);
|
|
216
|
+
return files.filter(raw => {
|
|
217
|
+
const file = raw.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
218
|
+
return !leases.some(lease => lease.kind === 'file'
|
|
219
|
+
? file === lease.path
|
|
220
|
+
: file.startsWith(`${lease.path}/`));
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ChipManifest } from './model';
|
|
2
|
+
interface ChipEvent {
|
|
3
|
+
kind: 'spawned' | 'running' | 'reported' | 'blocked' | 'failed' | 'cancelled';
|
|
4
|
+
summary: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function chipEventBody(manifest: ChipManifest, event: ChipEvent): string;
|
|
7
|
+
/** Typed lifecycle mail with sender identity, HTTP validation, and a durable
|
|
8
|
+
* client-side idempotency receipt. The manifest remains authoritative. */
|
|
9
|
+
export declare function sendChipEvent(manifest: ChipManifest, targetSession: string | undefined, event: ChipEvent, fromSession?: string): Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,128 @@
|
|
|
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.chipEventBody = chipEventBody;
|
|
37
|
+
exports.sendChipEvent = sendChipEvent;
|
|
38
|
+
const crypto = __importStar(require("crypto"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const checkpoint_helpers_1 = require("../checkpoint-helpers");
|
|
42
|
+
const identity_1 = require("../identity");
|
|
43
|
+
const model_1 = require("./model");
|
|
44
|
+
const store_1 = require("./store");
|
|
45
|
+
function chipEventBody(manifest, event) {
|
|
46
|
+
const lifecycle = event.kind === 'running' ? 'IN-FLIGHT'
|
|
47
|
+
: event.kind === 'reported' ? 'DONE'
|
|
48
|
+
: event.kind === 'blocked' ? 'BLOCKED'
|
|
49
|
+
: event.kind.toUpperCase();
|
|
50
|
+
return `[codex-chip-announce:${lifecycle}] ${manifest.id.slice(0, 8)} ${event.summary}`;
|
|
51
|
+
}
|
|
52
|
+
async function ownHandle(apiUrl, apiKey) {
|
|
53
|
+
const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
|
|
54
|
+
const cachePath = path.join(home, '.greprag', 'identity.json');
|
|
55
|
+
let identity = (0, identity_1.readCache)(cachePath);
|
|
56
|
+
if (!identity && apiKey) {
|
|
57
|
+
identity = await (0, identity_1.fetchIdentity)(apiUrl, apiKey);
|
|
58
|
+
(0, identity_1.writeCache)(cachePath, identity);
|
|
59
|
+
}
|
|
60
|
+
return identity?.handle || identity?.publicHandle || null;
|
|
61
|
+
}
|
|
62
|
+
function optionalInbox() {
|
|
63
|
+
return process.env.GREPRAG_CODEX_CHIP_INBOX_OPTIONAL === '1';
|
|
64
|
+
}
|
|
65
|
+
/** Typed lifecycle mail with sender identity, HTTP validation, and a durable
|
|
66
|
+
* client-side idempotency receipt. The manifest remains authoritative. */
|
|
67
|
+
async function sendChipEvent(manifest, targetSession, event, fromSession) {
|
|
68
|
+
try {
|
|
69
|
+
if (!targetSession)
|
|
70
|
+
throw new Error('Chip lifecycle event has no target parent session.');
|
|
71
|
+
const cfg = (0, checkpoint_helpers_1.getConfig)();
|
|
72
|
+
if (!cfg.apiKey)
|
|
73
|
+
throw new Error('Chip lifecycle inbox delivery has no API key.');
|
|
74
|
+
const handle = await ownHandle(cfg.apiUrl, cfg.apiKey);
|
|
75
|
+
if (!handle)
|
|
76
|
+
throw new Error('Chip lifecycle inbox delivery cannot resolve the sender handle.');
|
|
77
|
+
const sender = fromSession || manifest.codex.threadId || manifest.parent.sessionId;
|
|
78
|
+
if (!sender)
|
|
79
|
+
throw new Error('Chip lifecycle event has no fromSession identity.');
|
|
80
|
+
const body = chipEventBody(manifest, event);
|
|
81
|
+
const eventKey = `${event.kind}:${crypto.createHash('sha256').update(body).digest('hex').slice(0, 16)}`;
|
|
82
|
+
const current = (0, store_1.readManifest)(manifest.id) || manifest;
|
|
83
|
+
if (current.codex.eventReceipts?.[eventKey])
|
|
84
|
+
return;
|
|
85
|
+
const response = await fetch(`${cfg.apiUrl.replace(/\/+$/, '')}/v1/inbox/send`, {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
headers: { Authorization: `Bearer ${cfg.apiKey}`, 'Content-Type': 'application/json' },
|
|
88
|
+
body: JSON.stringify({
|
|
89
|
+
to: `${handle}/${targetSession}`,
|
|
90
|
+
body,
|
|
91
|
+
from_session_id: sender,
|
|
92
|
+
idempotency_key: `codex-chip:${manifest.id}:${eventKey}`,
|
|
93
|
+
references: {
|
|
94
|
+
chip: {
|
|
95
|
+
id: manifest.id,
|
|
96
|
+
name: manifest.name,
|
|
97
|
+
state: event.kind,
|
|
98
|
+
branch: manifest.worktree.branch,
|
|
99
|
+
worktree: (0, model_1.chipExecutionPath)(manifest),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
}),
|
|
103
|
+
});
|
|
104
|
+
const payload = await response.json().catch(() => ({}));
|
|
105
|
+
if (!response.ok || !payload.ok || !payload.id) {
|
|
106
|
+
throw new Error(`Inbox send failed (${response.status}): ${payload.error || 'missing delivery receipt'}`);
|
|
107
|
+
}
|
|
108
|
+
const deliveredSession = payload.delivered_to?.session_id || '';
|
|
109
|
+
if (payload.fell_back_to_desk || !deliveredSession ||
|
|
110
|
+
deliveredSession.slice(0, 8).toLowerCase() !== targetSession.slice(0, 8).toLowerCase()) {
|
|
111
|
+
throw new Error(`Inbox send did not reach parent session ${targetSession}.`);
|
|
112
|
+
}
|
|
113
|
+
const latest = (0, store_1.readManifest)(manifest.id);
|
|
114
|
+
if (latest)
|
|
115
|
+
(0, store_1.updateManifest)(manifest.id, {
|
|
116
|
+
codex: {
|
|
117
|
+
...latest.codex,
|
|
118
|
+
eventReceipts: { ...(latest.codex.eventReceipts || {}), [eventKey]: payload.id },
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
if (optionalInbox())
|
|
124
|
+
return;
|
|
125
|
+
throw err;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/inbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ChipManifest, ChipReceipt } from './model';
|
|
2
|
+
export declare function prepareCleanup(manifest: ChipManifest, integrated: boolean): ChipManifest;
|
|
3
|
+
export declare function recoverDeliveredTerminalReport(manifest: ChipManifest): boolean;
|
|
4
|
+
export declare function reconcileReportedDelivery(manifest: ChipManifest): Promise<'ready' | 'pending' | 'invalid'>;
|
|
5
|
+
export declare function writeChipReceipt(receipt: ChipReceipt, cwd?: string): void;
|
|
@@ -0,0 +1,94 @@
|
|
|
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.prepareCleanup = prepareCleanup;
|
|
37
|
+
exports.recoverDeliveredTerminalReport = recoverDeliveredTerminalReport;
|
|
38
|
+
exports.reconcileReportedDelivery = reconcileReportedDelivery;
|
|
39
|
+
exports.writeChipReceipt = writeChipReceipt;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const model_1 = require("./model");
|
|
42
|
+
const git_1 = require("./git");
|
|
43
|
+
const store_1 = require("./store");
|
|
44
|
+
const inbox_1 = require("./inbox");
|
|
45
|
+
function removeReceiptIfPresent(manifest) {
|
|
46
|
+
const executionPath = (0, model_1.chipExecutionPath)(manifest);
|
|
47
|
+
if (!fs.existsSync(executionPath))
|
|
48
|
+
return; // Desktop may already have disposed its worktree
|
|
49
|
+
fs.rmSync((0, git_1.chipReceiptPath)(executionPath), { force: true });
|
|
50
|
+
}
|
|
51
|
+
function prepareCleanup(manifest, integrated) {
|
|
52
|
+
if (manifest.state !== 'ready' || !manifest.report)
|
|
53
|
+
return manifest;
|
|
54
|
+
if ((0, git_1.isCommitAncestor)(manifest.parent.root, manifest.report.commit) || integrated) {
|
|
55
|
+
return (0, store_1.updateManifest)(manifest.id, { state: 'merged' });
|
|
56
|
+
}
|
|
57
|
+
throw new Error('Reported commit is not an ancestor of the parent checkout; after verified squash/cherry-pick integration rerun cleanup with --integrated.');
|
|
58
|
+
}
|
|
59
|
+
function recoverDeliveredTerminalReport(manifest) {
|
|
60
|
+
if (manifest.state !== 'reported' || !manifest.worker?.settledAt || !manifest.report)
|
|
61
|
+
return false;
|
|
62
|
+
const delivered = Object.keys(manifest.codex.eventReceipts || {}).some(key => key.startsWith('reported:'));
|
|
63
|
+
if (!delivered)
|
|
64
|
+
return false;
|
|
65
|
+
(0, store_1.updateManifest)(manifest.id, { state: 'ready', error: undefined });
|
|
66
|
+
removeReceiptIfPresent(manifest);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
async function reconcileReportedDelivery(manifest) {
|
|
70
|
+
if (recoverDeliveredTerminalReport(manifest))
|
|
71
|
+
return 'ready';
|
|
72
|
+
if (!manifest.report)
|
|
73
|
+
return 'invalid';
|
|
74
|
+
try {
|
|
75
|
+
await (0, inbox_1.sendChipEvent)(manifest, manifest.parent.sessionId, {
|
|
76
|
+
kind: 'reported',
|
|
77
|
+
summary: `${manifest.report.summary} Commit ${manifest.report.commit.slice(0, 8)}; checks: ${manifest.report.checks.join(', ') || 'none declared'}.`,
|
|
78
|
+
}, manifest.codex.threadId);
|
|
79
|
+
(0, store_1.updateManifest)(manifest.id, { state: 'ready', error: undefined });
|
|
80
|
+
removeReceiptIfPresent(manifest);
|
|
81
|
+
return 'ready';
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
(0, store_1.updateManifest)(manifest.id, { error: `Terminal delivery remains pending: ${err.message}` });
|
|
85
|
+
return 'pending';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function writeChipReceipt(receipt, cwd = process.cwd()) {
|
|
89
|
+
const file = (0, git_1.chipReceiptPath)(cwd);
|
|
90
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
91
|
+
fs.writeFileSync(tmp, JSON.stringify(receipt, null, 2) + '\n', 'utf-8');
|
|
92
|
+
fs.renameSync(tmp, file);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export declare const CHIP_MANIFEST_VERSION = 1;
|
|
2
|
+
export type ChipMode = 'read' | 'write';
|
|
3
|
+
export type ChipState = 'planned' | 'provisioning' | 'starting' | 'awaiting-native' | 'running' | 'reported' | 'ready' | 'merged' | 'cleaned' | 'complete' | 'blocked' | 'failed' | 'cancelled' | 'orphaned' | 'abandoned';
|
|
4
|
+
export interface ChipReport {
|
|
5
|
+
summary: string;
|
|
6
|
+
commit: string;
|
|
7
|
+
changedFiles: string[];
|
|
8
|
+
checks: string[];
|
|
9
|
+
reportedAt: string;
|
|
10
|
+
}
|
|
11
|
+
export type ChipReceipt = {
|
|
12
|
+
type: 'report';
|
|
13
|
+
id: string;
|
|
14
|
+
commit: string;
|
|
15
|
+
summary: string;
|
|
16
|
+
checks: string[];
|
|
17
|
+
at: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'block';
|
|
20
|
+
id: string;
|
|
21
|
+
reason: string;
|
|
22
|
+
at: string;
|
|
23
|
+
};
|
|
24
|
+
export interface ChipManifest {
|
|
25
|
+
version: 1;
|
|
26
|
+
revision: number;
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
task: string;
|
|
30
|
+
mode: ChipMode;
|
|
31
|
+
owns: string[];
|
|
32
|
+
state: ChipState;
|
|
33
|
+
project: {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
parent: {
|
|
38
|
+
root: string;
|
|
39
|
+
baseRef: string;
|
|
40
|
+
baseSha: string;
|
|
41
|
+
sessionId?: string;
|
|
42
|
+
};
|
|
43
|
+
worktree: {
|
|
44
|
+
path: string;
|
|
45
|
+
branch: string;
|
|
46
|
+
};
|
|
47
|
+
codex: {
|
|
48
|
+
projectId?: string;
|
|
49
|
+
clientThreadId?: string;
|
|
50
|
+
threadId?: string;
|
|
51
|
+
nativeCwd?: string;
|
|
52
|
+
role?: 'worker' | 'leader';
|
|
53
|
+
bindingNonce?: string;
|
|
54
|
+
bootstrapAck?: string;
|
|
55
|
+
verifiedTitle?: string;
|
|
56
|
+
titleReadbacks?: number;
|
|
57
|
+
titleVerifiedAt?: string;
|
|
58
|
+
sandbox?: 'workspace-write';
|
|
59
|
+
nativeModelVerified?: boolean;
|
|
60
|
+
timeoutMinutes?: number;
|
|
61
|
+
attachDeadlineAt?: string;
|
|
62
|
+
eventReceipts?: Record<string, string>;
|
|
63
|
+
turnId?: string;
|
|
64
|
+
transport: 'stdio' | 'proxy';
|
|
65
|
+
runtime?: 'native' | 'cli';
|
|
66
|
+
cliCommand?: string;
|
|
67
|
+
profile?: 'standard' | 'complex' | 'custom';
|
|
68
|
+
model?: string;
|
|
69
|
+
effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'ultra';
|
|
70
|
+
selection?: {
|
|
71
|
+
profile: 'standard' | 'complex' | 'custom';
|
|
72
|
+
model: string;
|
|
73
|
+
effort: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'ultra';
|
|
74
|
+
selectedBy: string;
|
|
75
|
+
reason: string;
|
|
76
|
+
complexitySignals: string[];
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
worker?: {
|
|
80
|
+
pid: number;
|
|
81
|
+
heartbeatAt: string;
|
|
82
|
+
settledAt?: string;
|
|
83
|
+
deadlineAt?: string;
|
|
84
|
+
};
|
|
85
|
+
createdAt: string;
|
|
86
|
+
updatedAt: string;
|
|
87
|
+
report?: ChipReport;
|
|
88
|
+
error?: string;
|
|
89
|
+
}
|
|
90
|
+
export declare function chipExecutionPath(manifest: ChipManifest): string;
|
|
91
|
+
export declare const ACTIVE_CHIP_STATES: Set<ChipState>;
|
|
92
|
+
export declare function isActiveChip(manifest: ChipManifest): boolean;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ACTIVE_CHIP_STATES = exports.CHIP_MANIFEST_VERSION = void 0;
|
|
4
|
+
exports.chipExecutionPath = chipExecutionPath;
|
|
5
|
+
exports.isActiveChip = isActiveChip;
|
|
6
|
+
exports.CHIP_MANIFEST_VERSION = 1;
|
|
7
|
+
function chipExecutionPath(manifest) {
|
|
8
|
+
return manifest.codex.nativeCwd || manifest.worktree.path;
|
|
9
|
+
}
|
|
10
|
+
exports.ACTIVE_CHIP_STATES = new Set([
|
|
11
|
+
'planned', 'provisioning', 'starting', 'awaiting-native', 'running', 'reported', 'ready', 'blocked',
|
|
12
|
+
]);
|
|
13
|
+
function isActiveChip(manifest) {
|
|
14
|
+
return exports.ACTIVE_CHIP_STATES.has(manifest.state);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/commands/codex-chip/model.ts"],"names":[],"mappings":";;;AAuEA,8CAEC;AAMD,oCAEC;AAjFY,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAuEvC,SAAgB,iBAAiB,CAAC,QAAsB;IACtD,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5D,CAAC;AAEY,QAAA,kBAAkB,GAAG,IAAI,GAAG,CAAY;IACnD,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;CACpG,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,QAAsB;IACjD,OAAO,0BAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
|