greprag 5.60.2 → 5.60.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codex-chip-hooks.js +4 -10
- package/dist/codex-chip-hooks.js.map +1 -1
- package/dist/commands/codex-chip/command.js +6 -20
- package/dist/commands/codex-chip/command.js.map +1 -1
- package/dist/commands/codex-chip/git.d.ts +0 -1
- package/dist/commands/codex-chip/git.js +0 -2
- package/dist/commands/codex-chip/git.js.map +1 -1
- package/dist/commands/codex-chip/goals.d.ts +9 -0
- package/dist/commands/codex-chip/goals.js +97 -7
- package/dist/commands/codex-chip/goals.js.map +1 -1
- package/dist/commands/codex-chip/help.d.ts +1 -1
- package/dist/commands/codex-chip/help.js +6 -5
- package/dist/commands/codex-chip/help.js.map +1 -1
- package/dist/commands/codex-chip/model.d.ts +2 -4
- package/dist/commands/codex-chip/model.js +1 -1
- package/dist/commands/codex-chip/model.js.map +1 -1
- package/dist/commands/codex-chip/native.js +2 -2
- package/dist/commands/codex-chip/native.js.map +1 -1
- package/dist/commands/codex-chip/prompt.js +5 -7
- package/dist/commands/codex-chip/prompt.js.map +1 -1
- package/dist/commands/codex-chip/selection.d.ts +1 -1
- package/dist/commands/codex-chip/selection.js +1 -4
- package/dist/commands/codex-chip/selection.js.map +1 -1
- package/dist/commands/codex-chip/worker.js +33 -105
- package/dist/commands/codex-chip/worker.js.map +1 -1
- package/dist/commands/opencode-chip-client.d.ts +8 -0
- package/dist/commands/opencode-chip-client.js +45 -0
- package/dist/commands/opencode-chip-client.js.map +1 -0
- package/dist/commands/opencode-chip-mission.d.ts +22 -0
- package/dist/commands/opencode-chip-mission.js +86 -0
- package/dist/commands/opencode-chip-mission.js.map +1 -0
- package/dist/commands/opencode-chip-store.d.ts +54 -0
- package/dist/commands/opencode-chip-store.js +141 -0
- package/dist/commands/opencode-chip-store.js.map +1 -0
- package/dist/commands/opencode-chip.d.ts +3 -0
- package/dist/commands/opencode-chip.js +471 -0
- package/dist/commands/opencode-chip.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skill/greprag/docs/codex-chip.md +10 -5
- package/skill/templates/chip-bootloader.md +28 -91
- package/skill/templates/chip-leader-opencode.md +80 -79
- package/skill/templates/codex-chip-spawn.md +6 -5
|
@@ -0,0 +1,471 @@
|
|
|
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.listRecords = exports.findRecord = exports.activeRecords = exports.buildMission = exports.parseModel = exports.roleTitle = void 0;
|
|
37
|
+
exports.runOpencodeChip = runOpencodeChip;
|
|
38
|
+
/**
|
|
39
|
+
* greprag opencode chip — OpenCode Desktop chip control plane.
|
|
40
|
+
*
|
|
41
|
+
* Role ladder: PLANNER → LEAD → Chip A/B (workers always letter-titled).
|
|
42
|
+
* Goals share ~/.greprag/chip-goals; records in ~/.greprag/opencode-chips.
|
|
43
|
+
*/
|
|
44
|
+
const crypto = __importStar(require("crypto"));
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const project_anchor_1 = require("../project-anchor");
|
|
48
|
+
const naming_1 = require("./codex-chip/naming");
|
|
49
|
+
const goals_1 = require("./codex-chip/goals");
|
|
50
|
+
const opencode_chip_client_1 = require("./opencode-chip-client");
|
|
51
|
+
const opencode_chip_mission_1 = require("./opencode-chip-mission");
|
|
52
|
+
const opencode_chip_store_1 = require("./opencode-chip-store");
|
|
53
|
+
function printHelp() {
|
|
54
|
+
console.log(`greprag opencode chip — OpenCode Desktop chip spawn
|
|
55
|
+
|
|
56
|
+
Subcommands:
|
|
57
|
+
goal create|accept|status Mission goals (shared chip-goals store)
|
|
58
|
+
spawn Create child session + optional prompt_async
|
|
59
|
+
report Record DONE evidence onto a goal
|
|
60
|
+
bind-lead LEAD adopts nested mission goal for dispatch
|
|
61
|
+
status | list | handoff
|
|
62
|
+
close | archive Accept-gated close + DELETE session
|
|
63
|
+
|
|
64
|
+
Worker titles ALWAYS use --label A|B|C… → "Chip A: <purview>" (solo = A).
|
|
65
|
+
--model provider/model is required. Auth: OPENCODE_SERVER_USERNAME/PASSWORD.
|
|
66
|
+
`);
|
|
67
|
+
}
|
|
68
|
+
async function goalCreate(args) {
|
|
69
|
+
const objective = (0, opencode_chip_mission_1.flag)(args, '--objective');
|
|
70
|
+
const finalState = (0, opencode_chip_mission_1.flag)(args, '--final-state');
|
|
71
|
+
const ownerSession = (0, opencode_chip_mission_1.flag)(args, '--owner-session');
|
|
72
|
+
const ownerRole = (0, opencode_chip_mission_1.flag)(args, '--owner-role') || 'planner';
|
|
73
|
+
const criteria = (0, goals_1.parseGoalCriteria)((0, opencode_chip_mission_1.flags)(args, '--criterion'));
|
|
74
|
+
if (!objective || !finalState || !ownerSession) {
|
|
75
|
+
throw new Error('goal create requires --objective, --final-state, --owner-session, and --criterion id:text');
|
|
76
|
+
}
|
|
77
|
+
if (!['planner', 'leader'].includes(ownerRole)) {
|
|
78
|
+
throw new Error('--owner-role must be planner or leader.');
|
|
79
|
+
}
|
|
80
|
+
const directory = path.resolve((0, opencode_chip_mission_1.flag)(args, '--directory') || process.cwd());
|
|
81
|
+
const anchor = (0, project_anchor_1.readAnchor)(directory);
|
|
82
|
+
const goal = (0, goals_1.createMissionGoal)({
|
|
83
|
+
projectId: anchor.projectId,
|
|
84
|
+
ownerSessionId: ownerSession,
|
|
85
|
+
objective,
|
|
86
|
+
finalState,
|
|
87
|
+
criteria,
|
|
88
|
+
parentGoalId: (0, opencode_chip_mission_1.flag)(args, '--parent-goal-id'),
|
|
89
|
+
ownerRole,
|
|
90
|
+
});
|
|
91
|
+
console.log(JSON.stringify(goal, null, 2));
|
|
92
|
+
}
|
|
93
|
+
async function goalAccept(args) {
|
|
94
|
+
const id = args[0] || (0, opencode_chip_mission_1.flag)(args, '--id') || (0, opencode_chip_mission_1.flag)(args, '--goal-id');
|
|
95
|
+
const owner = (0, opencode_chip_mission_1.flag)(args, '--owner-session');
|
|
96
|
+
const summary = (0, opencode_chip_mission_1.flag)(args, '--summary');
|
|
97
|
+
if (!id || !owner || !summary) {
|
|
98
|
+
throw new Error('goal accept requires <goal-id> --owner-session <8hex|ses> --summary "…"');
|
|
99
|
+
}
|
|
100
|
+
// Optional inline evidence before accept
|
|
101
|
+
const evidenceArgs = (0, opencode_chip_mission_1.flags)(args, '--evidence');
|
|
102
|
+
if (evidenceArgs.length) {
|
|
103
|
+
const parsed = (0, goals_1.parseReportEvidence)(evidenceArgs, ((0, goals_1.readMissionGoal)(id)?.criteria || []).map((c) => c.id));
|
|
104
|
+
(0, goals_1.recordOpencodeGoalEvidence)(id, `goal-owner:${id}`, parsed, (0, opencode_chip_mission_1.flags)(args, '--check'));
|
|
105
|
+
}
|
|
106
|
+
const goal = (0, goals_1.acceptOpencodeMissionGoal)(id, owner, summary, { force: args.includes('--force') });
|
|
107
|
+
console.log(JSON.stringify(goal, null, 2));
|
|
108
|
+
}
|
|
109
|
+
async function goalStatus(args) {
|
|
110
|
+
const id = args[0] || (0, opencode_chip_mission_1.flag)(args, '--id');
|
|
111
|
+
if (!id)
|
|
112
|
+
throw new Error('goal status requires goal id');
|
|
113
|
+
const goal = (0, goals_1.readMissionGoal)(id);
|
|
114
|
+
if (!goal)
|
|
115
|
+
throw new Error(`Unknown mission goal: ${id}`);
|
|
116
|
+
console.log(JSON.stringify(goal, null, 2));
|
|
117
|
+
}
|
|
118
|
+
async function spawnChip(args) {
|
|
119
|
+
const role = (0, opencode_chip_mission_1.parseRole)(args);
|
|
120
|
+
const titleFlag = (0, opencode_chip_mission_1.flag)(args, '--title');
|
|
121
|
+
if (!titleFlag)
|
|
122
|
+
throw new Error('--title is required (human purview, e.g. "Auth Middleware").');
|
|
123
|
+
const labelFlag = (0, opencode_chip_mission_1.flag)(args, '--label');
|
|
124
|
+
if (role === 'worker' && !labelFlag) {
|
|
125
|
+
throw new Error('Workers require --label A|B|C… (solo chips use --label A → "Chip A: <purview>").');
|
|
126
|
+
}
|
|
127
|
+
const multiChip = args.includes('--multi-chip') || role === 'worker';
|
|
128
|
+
const name = (0, opencode_chip_mission_1.flag)(args, '--name') || (0, opencode_chip_mission_1.slugify)(titleFlag);
|
|
129
|
+
const naming = (0, naming_1.resolveChipNaming)(name, titleFlag, labelFlag, role, multiChip);
|
|
130
|
+
const title = (0, opencode_chip_mission_1.roleTitle)(role, naming.displayName, naming.label);
|
|
131
|
+
const goalId = (0, opencode_chip_mission_1.flag)(args, '--goal-id');
|
|
132
|
+
if (!goalId)
|
|
133
|
+
throw new Error('Every chip requires --goal-id. Create one with `greprag opencode chip goal create`.');
|
|
134
|
+
const covers = (0, opencode_chip_mission_1.flags)(args, '--covers');
|
|
135
|
+
const parentOc = (0, opencode_chip_mission_1.flag)(args, '--parent-session');
|
|
136
|
+
const parentGreprag = (0, opencode_chip_mission_1.flag)(args, '--parent-greprag');
|
|
137
|
+
if (!parentOc)
|
|
138
|
+
throw new Error('--parent-session (OpenCode ses_…) is required.');
|
|
139
|
+
if (!parentGreprag || !/^[0-9a-f]{8}$/i.test(parentGreprag)) {
|
|
140
|
+
throw new Error('--parent-greprag must be the parent greprag 8-hex session id.');
|
|
141
|
+
}
|
|
142
|
+
const modelSpec = (0, opencode_chip_mission_1.flag)(args, '--model');
|
|
143
|
+
if (!modelSpec)
|
|
144
|
+
throw new Error('--model provider/model is required (no silent default).');
|
|
145
|
+
const model = (0, opencode_chip_mission_1.parseModel)(modelSpec);
|
|
146
|
+
const directory = path.resolve((0, opencode_chip_mission_1.flag)(args, '--directory') || process.cwd());
|
|
147
|
+
const anchor = (0, project_anchor_1.readAnchor)(directory);
|
|
148
|
+
(0, goals_1.requireGoalForSpawn)(goalId, anchor.projectId, parentGreprag, covers, role);
|
|
149
|
+
let task = (0, opencode_chip_mission_1.flag)(args, '--task') || '';
|
|
150
|
+
const taskFile = (0, opencode_chip_mission_1.flag)(args, '--task-file');
|
|
151
|
+
if (taskFile)
|
|
152
|
+
task = fs.readFileSync(taskFile, 'utf-8');
|
|
153
|
+
if (task.trim().length < 12)
|
|
154
|
+
throw new Error('--task must be a concrete mission (≥12 chars), or pass --task-file.');
|
|
155
|
+
if ((role === 'planner' || role === 'advisor' || role === 'mechanic') && !args.includes('--read-only')) {
|
|
156
|
+
throw new Error(`${role.toUpperCase()} chips are control-plane/read-only; pass --read-only.`);
|
|
157
|
+
}
|
|
158
|
+
const baseUrl = (0, opencode_chip_client_1.resolveBaseUrl)((0, opencode_chip_mission_1.flag)(args, '--opencode-url'));
|
|
159
|
+
const id = crypto.randomUUID();
|
|
160
|
+
const createBody = { title };
|
|
161
|
+
if (!args.includes('--top-level'))
|
|
162
|
+
createBody.parentID = parentOc;
|
|
163
|
+
const created = await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'POST', '/session', { directory }, createBody);
|
|
164
|
+
if (!created.ok || !created.data?.id) {
|
|
165
|
+
throw new Error(`OpenCode session create failed (${created.status}): ${created.text}`);
|
|
166
|
+
}
|
|
167
|
+
const childId = created.data.id;
|
|
168
|
+
if (created.data.title !== title) {
|
|
169
|
+
await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'PATCH', `/session/${childId}`, { directory }, { title });
|
|
170
|
+
}
|
|
171
|
+
// Stable greprag-facing 8-hex for this chip (LEAD uses it as nested-goal owner + worker parent-greprag).
|
|
172
|
+
const childGreprag = (0, opencode_chip_mission_1.flag)(args, '--child-greprag') ||
|
|
173
|
+
crypto.createHash('sha256').update(id).digest('hex').slice(0, 8);
|
|
174
|
+
const mission = (0, opencode_chip_mission_1.buildMission)({
|
|
175
|
+
title,
|
|
176
|
+
role,
|
|
177
|
+
task: task.trim(),
|
|
178
|
+
parentGreprag,
|
|
179
|
+
goalId,
|
|
180
|
+
covers,
|
|
181
|
+
});
|
|
182
|
+
const record = {
|
|
183
|
+
version: 1,
|
|
184
|
+
id,
|
|
185
|
+
name: naming.name,
|
|
186
|
+
title,
|
|
187
|
+
role,
|
|
188
|
+
label: naming.label,
|
|
189
|
+
goalId,
|
|
190
|
+
covers,
|
|
191
|
+
task: task.trim(),
|
|
192
|
+
projectId: anchor.projectId,
|
|
193
|
+
directory,
|
|
194
|
+
parent: { opencodeSessionId: parentOc, grepragSessionId: parentGreprag },
|
|
195
|
+
child: { opencodeSessionId: childId, grepragSessionId: childGreprag },
|
|
196
|
+
model,
|
|
197
|
+
state: 'prepared',
|
|
198
|
+
multiChip: args.includes('--multi-chip'),
|
|
199
|
+
createdAt: new Date().toISOString(),
|
|
200
|
+
};
|
|
201
|
+
// LEAD's goalId is the planner goal it was spawned under; missionGoalId set via bind-lead.
|
|
202
|
+
(0, opencode_chip_store_1.assertNoActiveNamingConflicts)(record);
|
|
203
|
+
const handoff = {
|
|
204
|
+
kind: 'greprag-opencode-chip-v1',
|
|
205
|
+
chipId: id,
|
|
206
|
+
title,
|
|
207
|
+
role,
|
|
208
|
+
goalId,
|
|
209
|
+
covers,
|
|
210
|
+
parent: record.parent,
|
|
211
|
+
child: record.child,
|
|
212
|
+
model,
|
|
213
|
+
directory,
|
|
214
|
+
opencodeUrl: baseUrl,
|
|
215
|
+
mission,
|
|
216
|
+
create: { id: childId, title, parentID: created.data.parentID || null },
|
|
217
|
+
childGrepragSessionId: childGreprag,
|
|
218
|
+
dispatch: args.includes('--dispatch')
|
|
219
|
+
? {
|
|
220
|
+
method: 'POST',
|
|
221
|
+
path: `/session/${childId}/prompt_async`,
|
|
222
|
+
body: { model, parts: [{ type: 'text', text: mission }] },
|
|
223
|
+
}
|
|
224
|
+
: null,
|
|
225
|
+
surface: {
|
|
226
|
+
note: 'Desktop does not auto-focus API-created sessions; open session list or cycle children.',
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
if (args.includes('--dispatch')) {
|
|
230
|
+
const prompt = await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'POST', `/session/${childId}/prompt_async`, { directory }, { model, parts: [{ type: 'text', text: mission }] });
|
|
231
|
+
if (!prompt.ok) {
|
|
232
|
+
record.state = 'failed';
|
|
233
|
+
record.error = `prompt_async ${prompt.status}: ${prompt.text}`;
|
|
234
|
+
(0, opencode_chip_store_1.writeRecord)(record);
|
|
235
|
+
throw new Error(record.error);
|
|
236
|
+
}
|
|
237
|
+
record.state = 'dispatched';
|
|
238
|
+
record.dispatchedAt = new Date().toISOString();
|
|
239
|
+
await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'POST', '/tui/show-toast', { directory }, {
|
|
240
|
+
title: 'Chip spawned',
|
|
241
|
+
message: `${title}\n${childId}`,
|
|
242
|
+
variant: 'info',
|
|
243
|
+
duration: 8000,
|
|
244
|
+
}).catch(() => null);
|
|
245
|
+
await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'POST', '/tui/open-sessions', { directory }, {}).catch(() => null);
|
|
246
|
+
}
|
|
247
|
+
(0, opencode_chip_store_1.writeRecord)(record);
|
|
248
|
+
console.log(JSON.stringify(handoff, null, 2));
|
|
249
|
+
if (!args.includes('--json')) {
|
|
250
|
+
console.log(`\n[opencode-chip] ${record.state} ${title}`);
|
|
251
|
+
console.log(`[opencode-chip] child=${childId} chipId=${id}`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/** LEAD adopts a nested leader-owned goal as its dispatch goal. */
|
|
255
|
+
async function bindLead(args) {
|
|
256
|
+
const chipRef = args[0] || (0, opencode_chip_mission_1.flag)(args, '--chip');
|
|
257
|
+
const goalId = (0, opencode_chip_mission_1.flag)(args, '--goal-id');
|
|
258
|
+
const owner = (0, opencode_chip_mission_1.flag)(args, '--owner-session');
|
|
259
|
+
if (!chipRef || !goalId || !owner) {
|
|
260
|
+
throw new Error('bind-lead requires <chip> --goal-id <nested> --owner-session <lead-id>');
|
|
261
|
+
}
|
|
262
|
+
const record = (0, opencode_chip_store_1.findRecord)(chipRef);
|
|
263
|
+
if (!record)
|
|
264
|
+
throw new Error(`Unknown opencode chip: ${chipRef}`);
|
|
265
|
+
if (record.role !== 'leader')
|
|
266
|
+
throw new Error('Only a LEAD chip can bind a nested mission goal.');
|
|
267
|
+
const goal = (0, goals_1.readMissionGoal)(goalId);
|
|
268
|
+
if (!goal || goal.ownerRole !== 'leader' || goal.state !== 'active') {
|
|
269
|
+
throw new Error('bind-lead requires an active LEAD-owned nested goal.');
|
|
270
|
+
}
|
|
271
|
+
if (goal.ownerSessionId !== owner) {
|
|
272
|
+
throw new Error('Nested goal owner-session must match --owner-session.');
|
|
273
|
+
}
|
|
274
|
+
if (goal.parentGoalId !== record.goalId) {
|
|
275
|
+
throw new Error('Nested goal parentGoalId must equal the LEAD chip planner goalId.');
|
|
276
|
+
}
|
|
277
|
+
const next = {
|
|
278
|
+
...record,
|
|
279
|
+
missionGoalId: goalId,
|
|
280
|
+
child: {
|
|
281
|
+
...record.child,
|
|
282
|
+
grepragSessionId: owner.length === 8 ? owner : record.child.grepragSessionId,
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
(0, opencode_chip_store_1.writeRecord)(next);
|
|
286
|
+
console.log(JSON.stringify({ ok: true, chipId: next.id, missionGoalId: goalId, title: next.title }, null, 2));
|
|
287
|
+
}
|
|
288
|
+
async function reportChip(args) {
|
|
289
|
+
const chipRef = args[0] || (0, opencode_chip_mission_1.flag)(args, '--chip');
|
|
290
|
+
const summary = (0, opencode_chip_mission_1.flag)(args, '--summary');
|
|
291
|
+
if (!chipRef || !summary)
|
|
292
|
+
throw new Error('report requires <chip> --summary "…" and --evidence id:text');
|
|
293
|
+
const record = (0, opencode_chip_store_1.findRecord)(chipRef);
|
|
294
|
+
if (!record)
|
|
295
|
+
throw new Error(`Unknown opencode chip: ${chipRef}`);
|
|
296
|
+
const evidenceArgs = (0, opencode_chip_mission_1.flags)(args, '--evidence');
|
|
297
|
+
if (!evidenceArgs.length)
|
|
298
|
+
throw new Error('report requires at least one --evidence criterionId:text');
|
|
299
|
+
const evidence = (0, goals_1.parseReportEvidence)(evidenceArgs, record.covers);
|
|
300
|
+
const checks = (0, opencode_chip_mission_1.flags)(args, '--check');
|
|
301
|
+
(0, goals_1.recordOpencodeGoalEvidence)(record.goalId, record.id, evidence, checks);
|
|
302
|
+
const next = {
|
|
303
|
+
...record,
|
|
304
|
+
report: { summary, evidence, checks, at: new Date().toISOString() },
|
|
305
|
+
};
|
|
306
|
+
(0, opencode_chip_store_1.writeRecord)(next);
|
|
307
|
+
console.log(JSON.stringify({ ok: true, chipId: next.id, goalId: next.goalId, evidence }, null, 2));
|
|
308
|
+
}
|
|
309
|
+
async function statusChip(args) {
|
|
310
|
+
const id = args[0] || (0, opencode_chip_mission_1.flag)(args, '--id');
|
|
311
|
+
if (!id)
|
|
312
|
+
throw new Error('status requires chip id (or ses_… / title)');
|
|
313
|
+
const record = (0, opencode_chip_store_1.findRecord)(id);
|
|
314
|
+
if (!record)
|
|
315
|
+
throw new Error(`Unknown opencode chip: ${id}`);
|
|
316
|
+
console.log(JSON.stringify(record, null, 2));
|
|
317
|
+
}
|
|
318
|
+
async function listChips(args) {
|
|
319
|
+
const all = args.includes('--all');
|
|
320
|
+
const rows = (0, opencode_chip_store_1.listRecords)()
|
|
321
|
+
.filter((r) => all || r.state === 'prepared' || r.state === 'dispatched')
|
|
322
|
+
.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
323
|
+
if (args.includes('--json')) {
|
|
324
|
+
console.log(JSON.stringify(rows, null, 2));
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
if (!rows.length) {
|
|
328
|
+
console.log(all ? 'No opencode chips recorded.' : 'No active opencode chips.');
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
for (const r of rows) {
|
|
332
|
+
console.log(`${r.state.padEnd(10)} ${r.title.padEnd(40)} ${r.child.opencodeSessionId.slice(0, 24)}… ${r.id.slice(0, 8)}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
async function closeChip(args) {
|
|
336
|
+
const id = args[0] || (0, opencode_chip_mission_1.flag)(args, '--id');
|
|
337
|
+
if (!id)
|
|
338
|
+
throw new Error('close requires chip id (or ses_… / title)');
|
|
339
|
+
const record = (0, opencode_chip_store_1.findRecord)(id);
|
|
340
|
+
if (!record)
|
|
341
|
+
throw new Error(`Unknown opencode chip: ${id}`);
|
|
342
|
+
if (record.state === 'closed' || record.state === 'archived') {
|
|
343
|
+
console.log(JSON.stringify({ ok: true, already: true, record }, null, 2));
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
if (record.state === 'failed' && !args.includes('--force')) {
|
|
347
|
+
throw new Error(`Chip is failed; pass --force to close/archive anyway (${record.error || 'no error'}).`);
|
|
348
|
+
}
|
|
349
|
+
// Accept gate: mission goal must be accepted (or --force / --keep-open-goal).
|
|
350
|
+
const goal = (0, goals_1.readMissionGoal)(record.goalId);
|
|
351
|
+
if (goal && goal.state !== 'accepted' && !args.includes('--force') && !args.includes('--keep-open-goal')) {
|
|
352
|
+
throw new Error(`Mission goal ${record.goalId.slice(0, 8)} is ${goal.state || 'missing'}; ` +
|
|
353
|
+
`accept it first (\`greprag opencode chip goal accept\`) or pass --force / --keep-open-goal.`);
|
|
354
|
+
}
|
|
355
|
+
const summary = (0, opencode_chip_mission_1.flag)(args, '--summary') || 'closed by parent';
|
|
356
|
+
const keepSession = args.includes('--keep-session');
|
|
357
|
+
const directory = (0, opencode_chip_mission_1.flag)(args, '--directory') || record.directory;
|
|
358
|
+
const baseUrl = (0, opencode_chip_client_1.resolveBaseUrl)((0, opencode_chip_mission_1.flag)(args, '--opencode-url'));
|
|
359
|
+
let sessionDeleted = false;
|
|
360
|
+
let deleteError;
|
|
361
|
+
if (!keepSession && record.child.opencodeSessionId) {
|
|
362
|
+
await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'POST', `/session/${record.child.opencodeSessionId}/abort`, {
|
|
363
|
+
directory,
|
|
364
|
+
}).catch(() => null);
|
|
365
|
+
const del = await (0, opencode_chip_client_1.ocFetch)(baseUrl, 'DELETE', `/session/${record.child.opencodeSessionId}`, {
|
|
366
|
+
directory,
|
|
367
|
+
});
|
|
368
|
+
if (del.ok || del.status === 404)
|
|
369
|
+
sessionDeleted = true;
|
|
370
|
+
else {
|
|
371
|
+
deleteError = `session delete ${del.status}: ${del.text}`;
|
|
372
|
+
if (!args.includes('--force')) {
|
|
373
|
+
throw new Error(`${deleteError}. Pass --force to mark closed without deleting the session.`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
const next = {
|
|
378
|
+
...record,
|
|
379
|
+
state: 'archived',
|
|
380
|
+
closedAt: new Date().toISOString(),
|
|
381
|
+
closeSummary: summary,
|
|
382
|
+
sessionDeleted,
|
|
383
|
+
error: deleteError || record.error,
|
|
384
|
+
};
|
|
385
|
+
(0, opencode_chip_store_1.writeRecord)(next);
|
|
386
|
+
const out = {
|
|
387
|
+
ok: true,
|
|
388
|
+
chipId: next.id,
|
|
389
|
+
title: next.title,
|
|
390
|
+
state: next.state,
|
|
391
|
+
sessionDeleted,
|
|
392
|
+
childSessionId: next.child.opencodeSessionId,
|
|
393
|
+
goalState: goal?.state || null,
|
|
394
|
+
summary,
|
|
395
|
+
deleteError: deleteError || null,
|
|
396
|
+
};
|
|
397
|
+
console.log(JSON.stringify(out, null, 2));
|
|
398
|
+
if (!args.includes('--json')) {
|
|
399
|
+
console.log(`[opencode-chip] archived ${next.title}` +
|
|
400
|
+
(sessionDeleted ? ' (session deleted)' : keepSession ? ' (session kept)' : ''));
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
async function handoffChip(args) {
|
|
404
|
+
const id = args[0] || (0, opencode_chip_mission_1.flag)(args, '--id');
|
|
405
|
+
if (!id)
|
|
406
|
+
throw new Error('handoff requires chip id');
|
|
407
|
+
const record = (0, opencode_chip_store_1.findRecord)(id);
|
|
408
|
+
if (!record)
|
|
409
|
+
throw new Error(`Unknown opencode chip: ${id}`);
|
|
410
|
+
const mission = (0, opencode_chip_mission_1.buildMission)({
|
|
411
|
+
title: record.title,
|
|
412
|
+
role: record.role,
|
|
413
|
+
task: record.task,
|
|
414
|
+
parentGreprag: record.parent.grepragSessionId,
|
|
415
|
+
goalId: record.goalId,
|
|
416
|
+
covers: record.covers,
|
|
417
|
+
});
|
|
418
|
+
console.log(JSON.stringify({
|
|
419
|
+
kind: 'greprag-opencode-chip-v1',
|
|
420
|
+
chipId: record.id,
|
|
421
|
+
title: record.title,
|
|
422
|
+
child: record.child,
|
|
423
|
+
parent: record.parent,
|
|
424
|
+
model: record.model,
|
|
425
|
+
mission,
|
|
426
|
+
state: record.state,
|
|
427
|
+
missionGoalId: record.missionGoalId || null,
|
|
428
|
+
}, null, 2));
|
|
429
|
+
}
|
|
430
|
+
async function runOpencodeChip(args) {
|
|
431
|
+
const sub = args[0];
|
|
432
|
+
if (!sub || sub === '--help' || sub === '-h' || sub === 'help') {
|
|
433
|
+
printHelp();
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
if (sub === 'goal') {
|
|
437
|
+
const gsub = args[1];
|
|
438
|
+
if (gsub === 'create')
|
|
439
|
+
return goalCreate(args.slice(2));
|
|
440
|
+
if (gsub === 'accept')
|
|
441
|
+
return goalAccept(args.slice(2));
|
|
442
|
+
if (gsub === 'status')
|
|
443
|
+
return goalStatus(args.slice(2));
|
|
444
|
+
throw new Error('Usage: greprag opencode chip goal create|accept|status ...');
|
|
445
|
+
}
|
|
446
|
+
if (sub === 'spawn')
|
|
447
|
+
return spawnChip(args.slice(1));
|
|
448
|
+
if (sub === 'report')
|
|
449
|
+
return reportChip(args.slice(1));
|
|
450
|
+
if (sub === 'bind-lead')
|
|
451
|
+
return bindLead(args.slice(1));
|
|
452
|
+
if (sub === 'status')
|
|
453
|
+
return statusChip(args.slice(1));
|
|
454
|
+
if (sub === 'list')
|
|
455
|
+
return listChips(args.slice(1));
|
|
456
|
+
if (sub === 'close' || sub === 'archive')
|
|
457
|
+
return closeChip(args.slice(1));
|
|
458
|
+
if (sub === 'handoff')
|
|
459
|
+
return handoffChip(args.slice(1));
|
|
460
|
+
throw new Error(`Unknown opencode chip subcommand: ${sub}. Run greprag opencode chip --help.`);
|
|
461
|
+
}
|
|
462
|
+
// re-export for tests
|
|
463
|
+
var opencode_chip_mission_2 = require("./opencode-chip-mission");
|
|
464
|
+
Object.defineProperty(exports, "roleTitle", { enumerable: true, get: function () { return opencode_chip_mission_2.roleTitle; } });
|
|
465
|
+
Object.defineProperty(exports, "parseModel", { enumerable: true, get: function () { return opencode_chip_mission_2.parseModel; } });
|
|
466
|
+
Object.defineProperty(exports, "buildMission", { enumerable: true, get: function () { return opencode_chip_mission_2.buildMission; } });
|
|
467
|
+
var opencode_chip_store_2 = require("./opencode-chip-store");
|
|
468
|
+
Object.defineProperty(exports, "activeRecords", { enumerable: true, get: function () { return opencode_chip_store_2.activeRecords; } });
|
|
469
|
+
Object.defineProperty(exports, "findRecord", { enumerable: true, get: function () { return opencode_chip_store_2.findRecord; } });
|
|
470
|
+
Object.defineProperty(exports, "listRecords", { enumerable: true, get: function () { return opencode_chip_store_2.listRecords; } });
|
|
471
|
+
//# sourceMappingURL=opencode-chip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-chip.js","sourceRoot":"","sources":["../../src/commands/opencode-chip.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -69,6 +69,7 @@ const sms_1 = require("./commands/sms");
|
|
|
69
69
|
const codex_1 = require("./commands/codex");
|
|
70
70
|
const opencode_relay_1 = require("./commands/opencode-relay");
|
|
71
71
|
const opencode_watch_1 = require("./commands/opencode-watch");
|
|
72
|
+
const opencode_chip_1 = require("./commands/opencode-chip");
|
|
72
73
|
const inbox_retract_1 = require("./commands/inbox-retract");
|
|
73
74
|
const crush_1 = require("./commands/crush");
|
|
74
75
|
const crush_stats_1 = require("./commands/crush-stats");
|
|
@@ -1688,6 +1689,7 @@ Two subcommands:
|
|
|
1688
1689
|
the tenant, including messages for other
|
|
1689
1690
|
sessions).
|
|
1690
1691
|
|
|
1692
|
+
greprag opencode chip Spawn OpenCode Desktop chips (session.create + prompt_async).
|
|
1691
1693
|
greprag opencode watch Long-lived SQLite poller on opencode's local DB.
|
|
1692
1694
|
Captures every (user, assistant) turn pair to
|
|
1693
1695
|
greprag memory. Bypasses opencode's event bus
|
|
@@ -1811,6 +1813,10 @@ async function opencode(args) {
|
|
|
1811
1813
|
await (0, opencode_watch_1.runOpencodeWatch)(args.slice(1));
|
|
1812
1814
|
return;
|
|
1813
1815
|
}
|
|
1816
|
+
if (sub === 'chip') {
|
|
1817
|
+
await (0, opencode_chip_1.runOpencodeChip)(args.slice(1));
|
|
1818
|
+
return;
|
|
1819
|
+
}
|
|
1814
1820
|
console.error(`Unknown "opencode ${sub}". Run \`greprag opencode --help\`.`);
|
|
1815
1821
|
process.exit(1);
|
|
1816
1822
|
}
|