@kenkaiiii/gg-boss 4.3.140 → 4.3.142
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/{chunk-JVQDTPYR.js → chunk-3EWLK53W.js} +18 -9
- package/dist/{chunk-JVQDTPYR.js.map → chunk-3EWLK53W.js.map} +1 -1
- package/dist/{chunk-5WNYQQPQ.js → chunk-QT366Y52.js} +4 -3
- package/dist/{chunk-5WNYQQPQ.js.map → chunk-QT366Y52.js.map} +1 -1
- package/dist/{chunk-PQAHDHVY.js → chunk-WJ4S4TOY.js} +3 -2
- package/dist/{chunk-PQAHDHVY.js.map → chunk-WJ4S4TOY.js.map} +1 -1
- package/dist/{chunk-B2WQ5E5J.js → chunk-YNWFCUMR.js} +2 -1
- package/dist/{chunk-B2WQ5E5J.js.map → chunk-YNWFCUMR.js.map} +1 -1
- package/dist/cli.js +2248 -182
- package/dist/cli.js.map +1 -1
- package/dist/{devtools-VBUDNGEI.js → devtools-4TI4D7F2.js} +3 -2
- package/dist/{devtools-VBUDNGEI.js.map → devtools-4TI4D7F2.js.map} +1 -1
- package/dist/{dist-7DAPKZGX.js → dist-VXOVSHZ5.js} +3 -2
- package/dist/{dist-7DAPKZGX.js.map → dist-VXOVSHZ5.js.map} +1 -1
- package/dist/{ignore-3AEIALHQ.js → ignore-76P4EAAU.js} +3 -2
- package/dist/{ignore-3AEIALHQ.js.map → ignore-76P4EAAU.js.map} +1 -1
- package/dist/index.js +21 -4
- package/dist/index.js.map +1 -1
- package/dist/{out-D65DTPFZ.js → out-XEXARMKS.js} +3 -2
- package/dist/{out-D65DTPFZ.js.map → out-XEXARMKS.js.map} +1 -1
- package/dist/pixel-WPYTQADG.js +14 -0
- package/dist/{pixel-fix-ALWXCLTS.js → pixel-fix-4WGZAJ5W.js} +4 -3
- package/dist/{pixel-fix-ALWXCLTS.js.map → pixel-fix-4WGZAJ5W.js.map} +1 -1
- package/package.json +10 -11
- package/dist/audio.d.ts +0 -21
- package/dist/audio.d.ts.map +0 -1
- package/dist/audio.js +0 -231
- package/dist/audio.js.map +0 -1
- package/dist/audio.test.d.ts +0 -2
- package/dist/audio.test.d.ts.map +0 -1
- package/dist/audio.test.js +0 -13
- package/dist/audio.test.js.map +0 -1
- package/dist/auto-update.d.ts +0 -24
- package/dist/auto-update.d.ts.map +0 -1
- package/dist/auto-update.js +0 -231
- package/dist/auto-update.js.map +0 -1
- package/dist/banner.d.ts +0 -17
- package/dist/banner.d.ts.map +0 -1
- package/dist/banner.js +0 -25
- package/dist/banner.js.map +0 -1
- package/dist/boss-footer.d.ts +0 -25
- package/dist/boss-footer.d.ts.map +0 -1
- package/dist/boss-footer.js +0 -107
- package/dist/boss-footer.js.map +0 -1
- package/dist/boss-phrases.d.ts +0 -9
- package/dist/boss-phrases.d.ts.map +0 -1
- package/dist/boss-phrases.js +0 -71
- package/dist/boss-phrases.js.map +0 -1
- package/dist/boss-store.d.ts +0 -245
- package/dist/boss-store.d.ts.map +0 -1
- package/dist/boss-store.js +0 -623
- package/dist/boss-store.js.map +0 -1
- package/dist/boss-system-prompt.d.ts +0 -3
- package/dist/boss-system-prompt.d.ts.map +0 -1
- package/dist/boss-system-prompt.js +0 -180
- package/dist/boss-system-prompt.js.map +0 -1
- package/dist/boss-tasks-overlay.d.ts +0 -22
- package/dist/boss-tasks-overlay.d.ts.map +0 -1
- package/dist/boss-tasks-overlay.js +0 -157
- package/dist/boss-tasks-overlay.js.map +0 -1
- package/dist/branding.d.ts +0 -32
- package/dist/branding.d.ts.map +0 -1
- package/dist/branding.js +0 -59
- package/dist/branding.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.smoke.test.d.ts +0 -2
- package/dist/cli.smoke.test.d.ts.map +0 -1
- package/dist/cli.smoke.test.js +0 -48
- package/dist/cli.smoke.test.js.map +0 -1
- package/dist/colors.d.ts +0 -14
- package/dist/colors.d.ts.map +0 -1
- package/dist/colors.js +0 -31
- package/dist/colors.js.map +0 -1
- package/dist/discover.d.ts +0 -13
- package/dist/discover.d.ts.map +0 -1
- package/dist/discover.js +0 -92
- package/dist/discover.js.map +0 -1
- package/dist/event-queue.d.ts +0 -16
- package/dist/event-queue.d.ts.map +0 -1
- package/dist/event-queue.js +0 -39
- package/dist/event-queue.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/link-command.d.ts +0 -2
- package/dist/link-command.d.ts.map +0 -1
- package/dist/link-command.js +0 -120
- package/dist/link-command.js.map +0 -1
- package/dist/links.d.ts +0 -11
- package/dist/links.d.ts.map +0 -1
- package/dist/links.js +0 -22
- package/dist/links.js.map +0 -1
- package/dist/logger.d.ts +0 -41
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -112
- package/dist/logger.js.map +0 -1
- package/dist/orchestrator-app.d.ts +0 -15
- package/dist/orchestrator-app.d.ts.map +0 -1
- package/dist/orchestrator-app.js +0 -599
- package/dist/orchestrator-app.js.map +0 -1
- package/dist/orchestrator.d.ts +0 -147
- package/dist/orchestrator.d.ts.map +0 -1
- package/dist/orchestrator.js +0 -707
- package/dist/orchestrator.js.map +0 -1
- package/dist/orchestrator.test.d.ts +0 -2
- package/dist/orchestrator.test.d.ts.map +0 -1
- package/dist/orchestrator.test.js +0 -55
- package/dist/orchestrator.test.js.map +0 -1
- package/dist/pixel-WB6VRJWP.js +0 -13
- package/dist/radio-picker.d.ts +0 -20
- package/dist/radio-picker.d.ts.map +0 -1
- package/dist/radio-picker.js +0 -31
- package/dist/radio-picker.js.map +0 -1
- package/dist/radio.d.ts +0 -43
- package/dist/radio.d.ts.map +0 -1
- package/dist/radio.js +0 -150
- package/dist/radio.js.map +0 -1
- package/dist/sessions.d.ts +0 -21
- package/dist/sessions.d.ts.map +0 -1
- package/dist/sessions.js +0 -122
- package/dist/sessions.js.map +0 -1
- package/dist/settings.d.ts +0 -11
- package/dist/settings.d.ts.map +0 -1
- package/dist/settings.js +0 -38
- package/dist/settings.js.map +0 -1
- package/dist/slash-commands.d.ts +0 -19
- package/dist/slash-commands.d.ts.map +0 -1
- package/dist/slash-commands.js +0 -76
- package/dist/slash-commands.js.map +0 -1
- package/dist/splash.d.ts +0 -21
- package/dist/splash.d.ts.map +0 -1
- package/dist/splash.js +0 -137
- package/dist/splash.js.map +0 -1
- package/dist/task-tools.d.ts +0 -18
- package/dist/task-tools.d.ts.map +0 -1
- package/dist/task-tools.js +0 -172
- package/dist/task-tools.js.map +0 -1
- package/dist/tasks-store.d.ts +0 -66
- package/dist/tasks-store.d.ts.map +0 -1
- package/dist/tasks-store.js +0 -199
- package/dist/tasks-store.js.map +0 -1
- package/dist/tasks-store.test.d.ts +0 -2
- package/dist/tasks-store.test.d.ts.map +0 -1
- package/dist/tasks-store.test.js +0 -138
- package/dist/tasks-store.test.js.map +0 -1
- package/dist/tool-formatters.d.ts +0 -7
- package/dist/tool-formatters.d.ts.map +0 -1
- package/dist/tool-formatters.js +0 -111
- package/dist/tool-formatters.js.map +0 -1
- package/dist/tools.d.ts +0 -26
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -133
- package/dist/tools.js.map +0 -1
- package/dist/types.d.ts +0 -32
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/worker.d.ts +0 -47
- package/dist/worker.d.ts.map +0 -1
- package/dist/worker.js +0 -123
- package/dist/worker.js.map +0 -1
- /package/dist/{pixel-WB6VRJWP.js.map → pixel-WPYTQADG.js.map} +0 -0
package/dist/tasks-store.js
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import crypto from "node:crypto";
|
|
4
|
-
import { useSyncExternalStore } from "react";
|
|
5
|
-
import { getAppPaths } from "@kenkaiiii/ggcoder";
|
|
6
|
-
/**
|
|
7
|
-
* Lightweight task store — the boss orchestrator's plan-of-record. One JSON
|
|
8
|
-
* file at ~/.gg/boss/plan.json, append-on-mutation, per-project grouping
|
|
9
|
-
* happens in the read layer rather than on disk.
|
|
10
|
-
*/
|
|
11
|
-
function getPlanPath() {
|
|
12
|
-
return path.join(getAppPaths().agentDir, "boss", "plan.json");
|
|
13
|
-
}
|
|
14
|
-
async function ensureDir() {
|
|
15
|
-
await fs.mkdir(path.dirname(getPlanPath()), { recursive: true, mode: 0o700 });
|
|
16
|
-
}
|
|
17
|
-
async function loadPlan() {
|
|
18
|
-
try {
|
|
19
|
-
const content = await fs.readFile(getPlanPath(), "utf-8");
|
|
20
|
-
const parsed = JSON.parse(content);
|
|
21
|
-
return Array.isArray(parsed.tasks) ? parsed.tasks : [];
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return [];
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Serialize concurrent persist() calls. With N workers in parallel, multiple
|
|
29
|
-
* task updates can fire in the same tick — writeFile is NOT atomic and racing
|
|
30
|
-
* writes leave the file half-overwritten (old bytes past the new content's
|
|
31
|
-
* end), which then fails JSON.parse and silently returns []. We chain every
|
|
32
|
-
* persist on this promise so writes happen one at a time.
|
|
33
|
-
*/
|
|
34
|
-
let persistChain = Promise.resolve();
|
|
35
|
-
async function persist(tasks) {
|
|
36
|
-
// Capture the current state at call time so each queued write persists the
|
|
37
|
-
// snapshot it was asked to, even if state mutates further before this
|
|
38
|
-
// write's turn in the chain.
|
|
39
|
-
const snapshot = JSON.stringify({ tasks }, null, 2) + "\n";
|
|
40
|
-
const next = persistChain.then(async () => {
|
|
41
|
-
await ensureDir();
|
|
42
|
-
// Atomic write: write to a sibling .tmp then rename. POSIX rename(2) is
|
|
43
|
-
// atomic on the same filesystem — the destination either has the old
|
|
44
|
-
// content or the new content, never a half-written mix. Suffix includes
|
|
45
|
-
// pid so two ggboss processes don't clobber each other's tmp files.
|
|
46
|
-
const finalPath = getPlanPath();
|
|
47
|
-
const tmpPath = `${finalPath}.${process.pid}.tmp`;
|
|
48
|
-
await fs.writeFile(tmpPath, snapshot, "utf-8");
|
|
49
|
-
await fs.rename(tmpPath, finalPath);
|
|
50
|
-
});
|
|
51
|
-
persistChain = next.catch(() => undefined); // keep chain alive on errors
|
|
52
|
-
await next;
|
|
53
|
-
}
|
|
54
|
-
let state = { tasks: [], version: 0 };
|
|
55
|
-
const listeners = new Set();
|
|
56
|
-
function notify() {
|
|
57
|
-
for (const fn of listeners)
|
|
58
|
-
fn();
|
|
59
|
-
}
|
|
60
|
-
function subscribe(fn) {
|
|
61
|
-
listeners.add(fn);
|
|
62
|
-
return () => {
|
|
63
|
-
listeners.delete(fn);
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
function getSnapshot() {
|
|
67
|
-
return state;
|
|
68
|
-
}
|
|
69
|
-
export function useTasksState() {
|
|
70
|
-
return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
71
|
-
}
|
|
72
|
-
// ── Helpers ────────────────────────────────────────────────
|
|
73
|
-
function newId() {
|
|
74
|
-
return crypto.randomBytes(6).toString("hex");
|
|
75
|
-
}
|
|
76
|
-
function now() {
|
|
77
|
-
return new Date().toISOString();
|
|
78
|
-
}
|
|
79
|
-
// ── Public API (used by tools, overlay, orchestrator) ──────
|
|
80
|
-
export const tasksStore = {
|
|
81
|
-
/**
|
|
82
|
-
* Hydrate state from disk on startup. Also prunes terminal tasks (done +
|
|
83
|
-
* skipped) so the overlay doesn't pile up months of completed history, and
|
|
84
|
-
* resets stale `in_progress` rows back to `pending` — those represent tasks
|
|
85
|
-
* that were running when ggboss exited, so the worker never finished them
|
|
86
|
-
* and we don't have a result. Re-runs them next time `r` (or auto-chain)
|
|
87
|
-
* fires. Persists the cleaned list back to disk if anything changed.
|
|
88
|
-
*/
|
|
89
|
-
async load() {
|
|
90
|
-
const raw = await loadPlan();
|
|
91
|
-
const before = raw.length;
|
|
92
|
-
// Backfill missing status — older bug let update_task wipe status to
|
|
93
|
-
// undefined. Treat any task with no status (or an unrecognised one) as
|
|
94
|
-
// pending so the user can still run them. Then prune terminals + reset
|
|
95
|
-
// stale in_progress.
|
|
96
|
-
const VALID_STATUSES = ["pending", "in_progress", "done", "blocked", "skipped"];
|
|
97
|
-
const normalized = raw.map((t) => {
|
|
98
|
-
const status = VALID_STATUSES.includes(t.status)
|
|
99
|
-
? t.status
|
|
100
|
-
: "pending";
|
|
101
|
-
return status === t.status ? t : { ...t, status, updatedAt: now() };
|
|
102
|
-
});
|
|
103
|
-
const cleaned = normalized
|
|
104
|
-
.filter((t) => t.status !== "done" && t.status !== "skipped")
|
|
105
|
-
.map((t) => t.status === "in_progress"
|
|
106
|
-
? { ...t, status: "pending", updatedAt: now() }
|
|
107
|
-
: t);
|
|
108
|
-
state = { tasks: cleaned, version: state.version + 1 };
|
|
109
|
-
notify();
|
|
110
|
-
// Only write back if we actually changed anything to avoid pointless
|
|
111
|
-
// touches to the file on every startup.
|
|
112
|
-
const changed = cleaned.length !== before || cleaned.some((t, i) => t.status !== raw[i]?.status);
|
|
113
|
-
if (changed)
|
|
114
|
-
await persist(cleaned);
|
|
115
|
-
},
|
|
116
|
-
/** Synchronous read. Used by boss tools that need to inspect/list. */
|
|
117
|
-
list(filter) {
|
|
118
|
-
let xs = state.tasks;
|
|
119
|
-
if (filter?.project)
|
|
120
|
-
xs = xs.filter((t) => t.project === filter.project);
|
|
121
|
-
if (filter?.status)
|
|
122
|
-
xs = xs.filter((t) => t.status === filter.status);
|
|
123
|
-
return xs;
|
|
124
|
-
},
|
|
125
|
-
byId(id) {
|
|
126
|
-
return state.tasks.find((t) => t.id === id);
|
|
127
|
-
},
|
|
128
|
-
async add(input) {
|
|
129
|
-
const task = {
|
|
130
|
-
id: newId(),
|
|
131
|
-
project: input.project,
|
|
132
|
-
title: input.title,
|
|
133
|
-
description: input.description,
|
|
134
|
-
status: "pending",
|
|
135
|
-
fresh: input.fresh,
|
|
136
|
-
createdAt: now(),
|
|
137
|
-
updatedAt: now(),
|
|
138
|
-
};
|
|
139
|
-
state = { tasks: [...state.tasks, task], version: state.version + 1 };
|
|
140
|
-
await persist(state.tasks);
|
|
141
|
-
notify();
|
|
142
|
-
return task;
|
|
143
|
-
},
|
|
144
|
-
async update(id, fields) {
|
|
145
|
-
const idx = state.tasks.findIndex((t) => t.id === id);
|
|
146
|
-
if (idx < 0)
|
|
147
|
-
return null;
|
|
148
|
-
const next = { ...state.tasks[idx], ...fields, updatedAt: now() };
|
|
149
|
-
const tasks = state.tasks.slice();
|
|
150
|
-
tasks[idx] = next;
|
|
151
|
-
state = { tasks, version: state.version + 1 };
|
|
152
|
-
await persist(state.tasks);
|
|
153
|
-
notify();
|
|
154
|
-
return next;
|
|
155
|
-
},
|
|
156
|
-
async remove(id) {
|
|
157
|
-
const before = state.tasks.length;
|
|
158
|
-
const tasks = state.tasks.filter((t) => t.id !== id);
|
|
159
|
-
if (tasks.length === before)
|
|
160
|
-
return false;
|
|
161
|
-
state = { tasks, version: state.version + 1 };
|
|
162
|
-
await persist(state.tasks);
|
|
163
|
-
notify();
|
|
164
|
-
return true;
|
|
165
|
-
},
|
|
166
|
-
/**
|
|
167
|
-
* Find the next pending task for a project (FIFO by createdAt). Used by
|
|
168
|
-
* dispatch_pending to pick what to send next.
|
|
169
|
-
*/
|
|
170
|
-
nextPending(project) {
|
|
171
|
-
return state.tasks
|
|
172
|
-
.filter((t) => t.project === project && t.status === "pending")
|
|
173
|
-
.sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];
|
|
174
|
-
},
|
|
175
|
-
/**
|
|
176
|
-
* Find the next dispatchable task — pending OR blocked — for a project.
|
|
177
|
-
* Used by overlay's "r" (run all) so blocked tasks get retried alongside
|
|
178
|
-
* pending ones. Pending is preferred (lower priority value); blocked falls
|
|
179
|
-
* through if there are no pending ones.
|
|
180
|
-
*/
|
|
181
|
-
nextDispatchable(project) {
|
|
182
|
-
const candidates = state.tasks
|
|
183
|
-
.filter((t) => t.project === project && (t.status === "pending" || t.status === "blocked"))
|
|
184
|
-
.sort((a, b) => {
|
|
185
|
-
// Pending before blocked — fresh work first, then retry attempts.
|
|
186
|
-
if (a.status !== b.status)
|
|
187
|
-
return a.status === "pending" ? -1 : 1;
|
|
188
|
-
return a.createdAt.localeCompare(b.createdAt);
|
|
189
|
-
});
|
|
190
|
-
return candidates[0];
|
|
191
|
-
},
|
|
192
|
-
/** Test/dev reset — wipes in-memory + disk. */
|
|
193
|
-
async reset() {
|
|
194
|
-
state = { tasks: [], version: state.version + 1 };
|
|
195
|
-
await persist([]);
|
|
196
|
-
notify();
|
|
197
|
-
},
|
|
198
|
-
};
|
|
199
|
-
//# sourceMappingURL=tasks-store.js.map
|
package/dist/tasks-store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-store.js","sourceRoot":"","sources":["../src/tasks-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuBjD;;;;GAIG;AAEH,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAChE,CAAC;AAMD,KAAK,UAAU,SAAS;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;QACxD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,IAAI,YAAY,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAEpD,KAAK,UAAU,OAAO,CAAC,KAAiB;IACtC,2EAA2E;IAC3E,sEAAsE;IACtE,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,SAAS,EAAE,CAAC;QAClB,wEAAwE;QACxE,qEAAqE;QACrE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,6BAA6B;IACzE,MAAM,IAAI,CAAC;AACb,CAAC;AAUD,IAAI,KAAK,GAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;AAExC,SAAS,MAAM;IACb,KAAK,MAAM,EAAE,IAAI,SAAS;QAAE,EAAE,EAAE,CAAC;AACnC,CAAC;AACD,SAAS,SAAS,CAAC,EAAc;IAC/B,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AACD,SAAS,WAAW;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED,8DAA8D;AAE9D,SAAS,KAAK;IACZ,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,GAAG;IACV,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,8DAA8D;AAE9D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,qEAAqE;QACrE,uEAAuE;QACvE,uEAAuE;QACvE,qBAAqB;QACrB,MAAM,cAAc,GAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAoB,CAAC;gBAC5D,CAAC,CAAE,CAAC,CAAC,MAAqB;gBAC1B,CAAC,CAAE,SAAwB,CAAC;YAC9B,OAAO,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,UAAU;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,MAAM,KAAK,aAAa;YACxB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAuB,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;YAC7D,CAAC,CAAC,CAAC,CACN,CAAC;QACJ,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,EAAE,CAAC;QACT,qEAAqE;QACrE,wCAAwC;QACxC,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnF,IAAI,OAAO;YAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,MAAkD;QACrD,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QACrB,IAAI,MAAM,EAAE,OAAO;YAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,MAAM,EAAE,MAAM;YAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,EAAU;QACb,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAKT;QACC,MAAM,IAAI,GAAa;YACrB,EAAE,EAAE,KAAK,EAAE;YACX,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,GAAG,EAAE;YAChB,SAAS,EAAE,GAAG,EAAE;SACjB,CAAC;QACF,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CACV,EAAU,EACV,MAA+F;QAE/F,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAClB,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1C,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAAe;QACzB,OAAO,KAAK,CAAC,KAAK;aACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;aAC9D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,OAAe;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;aAC1F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,kEAAkE;YAClE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACL,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAK;QACT,KAAK,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,MAAM,EAAE,CAAC;IACX,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-store.test.d.ts","sourceRoot":"","sources":["../src/tasks-store.test.ts"],"names":[],"mappings":""}
|
package/dist/tasks-store.test.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import { tasksStore } from "./tasks-store.js";
|
|
6
|
-
// The tasks-store reads getAppPaths().agentDir at runtime, which uses
|
|
7
|
-
// os.homedir(). os.homedir() reads HOME on POSIX but USERPROFILE on Windows
|
|
8
|
-
// (with HOMEDRIVE+HOMEPATH as a fallback). Override every variable Node may
|
|
9
|
-
// consult so each test gets an isolated tmp directory regardless of platform —
|
|
10
|
-
// without this, Windows runners scribble on the real C:\Users\<admin>\.gg
|
|
11
|
-
// and tests race on the same shared file.
|
|
12
|
-
const HOME_VARS = ["HOME", "USERPROFILE", "HOMEDRIVE", "HOMEPATH"];
|
|
13
|
-
let tmpHome;
|
|
14
|
-
const originalEnv = {};
|
|
15
|
-
beforeEach(async () => {
|
|
16
|
-
tmpHome = await fs.mkdtemp(path.join(os.tmpdir(), "gg-boss-test-"));
|
|
17
|
-
for (const k of HOME_VARS)
|
|
18
|
-
originalEnv[k] = process.env[k];
|
|
19
|
-
process.env.HOME = tmpHome;
|
|
20
|
-
process.env.USERPROFILE = tmpHome;
|
|
21
|
-
// os.homedir() on Windows falls back to HOMEDRIVE+HOMEPATH if USERPROFILE
|
|
22
|
-
// is unset. Set HOMEDRIVE empty so HOMEPATH alone resolves to tmpHome.
|
|
23
|
-
process.env.HOMEDRIVE = "";
|
|
24
|
-
process.env.HOMEPATH = tmpHome;
|
|
25
|
-
// Reset in-memory state AND ensure plan.json is wiped at the new location
|
|
26
|
-
// so leftover state from a previous test (different tmpHome) can't leak.
|
|
27
|
-
await tasksStore.reset();
|
|
28
|
-
});
|
|
29
|
-
afterEach(async () => {
|
|
30
|
-
for (const k of HOME_VARS) {
|
|
31
|
-
if (originalEnv[k] !== undefined)
|
|
32
|
-
process.env[k] = originalEnv[k];
|
|
33
|
-
else
|
|
34
|
-
delete process.env[k];
|
|
35
|
-
}
|
|
36
|
-
await fs.rm(tmpHome, { recursive: true, force: true });
|
|
37
|
-
});
|
|
38
|
-
describe("tasksStore — round-trip", () => {
|
|
39
|
-
it("add → list returns the same task", async () => {
|
|
40
|
-
const t = await tasksStore.add({
|
|
41
|
-
project: "alpha",
|
|
42
|
-
title: "do thing",
|
|
43
|
-
description: "do the thing",
|
|
44
|
-
});
|
|
45
|
-
const list = tasksStore.list();
|
|
46
|
-
expect(list).toHaveLength(1);
|
|
47
|
-
expect(list[0].id).toBe(t.id);
|
|
48
|
-
expect(list[0].status).toBe("pending");
|
|
49
|
-
});
|
|
50
|
-
it("update changes only the supplied fields", async () => {
|
|
51
|
-
const t = await tasksStore.add({
|
|
52
|
-
project: "alpha",
|
|
53
|
-
title: "do thing",
|
|
54
|
-
description: "do the thing",
|
|
55
|
-
});
|
|
56
|
-
const updated = await tasksStore.update(t.id, { status: "done" });
|
|
57
|
-
expect(updated?.status).toBe("done");
|
|
58
|
-
expect(updated?.title).toBe("do thing"); // untouched
|
|
59
|
-
});
|
|
60
|
-
it("update with no status preserves status (regression: was wiping to undefined)", async () => {
|
|
61
|
-
const t = await tasksStore.add({
|
|
62
|
-
project: "alpha",
|
|
63
|
-
title: "do thing",
|
|
64
|
-
description: "do the thing",
|
|
65
|
-
});
|
|
66
|
-
// Simulate the boss calling update_task with only `notes` — the bug was
|
|
67
|
-
// spreading {status: undefined, notes: ...} which clobbered status.
|
|
68
|
-
// tasksStore.update receives only `notes` here so status must survive.
|
|
69
|
-
const updated = await tasksStore.update(t.id, { notes: "hmm" });
|
|
70
|
-
expect(updated?.status).toBe("pending");
|
|
71
|
-
expect(updated?.notes).toBe("hmm");
|
|
72
|
-
});
|
|
73
|
-
it("remove drops the task", async () => {
|
|
74
|
-
const t = await tasksStore.add({
|
|
75
|
-
project: "alpha",
|
|
76
|
-
title: "do thing",
|
|
77
|
-
description: "x",
|
|
78
|
-
});
|
|
79
|
-
expect(await tasksStore.remove(t.id)).toBe(true);
|
|
80
|
-
expect(tasksStore.list()).toHaveLength(0);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
describe("tasksStore — nextDispatchable", () => {
|
|
84
|
-
it("prefers pending over blocked", async () => {
|
|
85
|
-
const blocked = await tasksStore.add({ project: "a", title: "b", description: "x" });
|
|
86
|
-
await tasksStore.update(blocked.id, { status: "blocked" });
|
|
87
|
-
const pending = await tasksStore.add({ project: "a", title: "p", description: "x" });
|
|
88
|
-
const next = tasksStore.nextDispatchable("a");
|
|
89
|
-
expect(next?.id).toBe(pending.id);
|
|
90
|
-
});
|
|
91
|
-
it("falls through to blocked when nothing is pending", async () => {
|
|
92
|
-
const blocked = await tasksStore.add({ project: "a", title: "b", description: "x" });
|
|
93
|
-
await tasksStore.update(blocked.id, { status: "blocked" });
|
|
94
|
-
const next = tasksStore.nextDispatchable("a");
|
|
95
|
-
expect(next?.id).toBe(blocked.id);
|
|
96
|
-
});
|
|
97
|
-
it("ignores done/in_progress/skipped tasks", async () => {
|
|
98
|
-
const t1 = await tasksStore.add({ project: "a", title: "t1", description: "x" });
|
|
99
|
-
const t2 = await tasksStore.add({ project: "a", title: "t2", description: "x" });
|
|
100
|
-
const t3 = await tasksStore.add({ project: "a", title: "t3", description: "x" });
|
|
101
|
-
await tasksStore.update(t1.id, { status: "done" });
|
|
102
|
-
await tasksStore.update(t2.id, { status: "in_progress" });
|
|
103
|
-
await tasksStore.update(t3.id, { status: "skipped" });
|
|
104
|
-
expect(tasksStore.nextDispatchable("a")).toBeUndefined();
|
|
105
|
-
});
|
|
106
|
-
it("scopes to the requested project", async () => {
|
|
107
|
-
await tasksStore.add({ project: "a", title: "x", description: "x" });
|
|
108
|
-
const b1 = await tasksStore.add({ project: "b", title: "y", description: "y" });
|
|
109
|
-
expect(tasksStore.nextDispatchable("b")?.id).toBe(b1.id);
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
describe("tasksStore — load() pruning + self-heal", () => {
|
|
113
|
-
it("reset wipes in-memory + on-disk state", async () => {
|
|
114
|
-
await tasksStore.add({ project: "a", title: "x", description: "x" });
|
|
115
|
-
await tasksStore.reset();
|
|
116
|
-
expect(tasksStore.list()).toHaveLength(0);
|
|
117
|
-
await tasksStore.load();
|
|
118
|
-
expect(tasksStore.list()).toHaveLength(0);
|
|
119
|
-
});
|
|
120
|
-
it("load drops done + skipped tasks", async () => {
|
|
121
|
-
const a = await tasksStore.add({ project: "p", title: "a", description: "x" });
|
|
122
|
-
const b = await tasksStore.add({ project: "p", title: "b", description: "x" });
|
|
123
|
-
const c = await tasksStore.add({ project: "p", title: "c", description: "x" });
|
|
124
|
-
await tasksStore.update(a.id, { status: "done" });
|
|
125
|
-
await tasksStore.update(b.id, { status: "skipped" });
|
|
126
|
-
await tasksStore.load();
|
|
127
|
-
const list = tasksStore.list();
|
|
128
|
-
expect(list).toHaveLength(1);
|
|
129
|
-
expect(list[0].id).toBe(c.id);
|
|
130
|
-
});
|
|
131
|
-
it("load resets stale in_progress to pending", async () => {
|
|
132
|
-
const t = await tasksStore.add({ project: "p", title: "x", description: "x" });
|
|
133
|
-
await tasksStore.update(t.id, { status: "in_progress" });
|
|
134
|
-
await tasksStore.load();
|
|
135
|
-
expect(tasksStore.byId(t.id)?.status).toBe("pending");
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
//# sourceMappingURL=tasks-store.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-store.test.js","sourceRoot":"","sources":["../src/tasks-store.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ToolExecutionFormatters } from "@kenkaiiii/ggcoder/ui";
|
|
2
|
-
/**
|
|
3
|
-
* Custom label / detail / inline-summary rendering for the boss's own tools.
|
|
4
|
-
* Falls through to ggcoder's defaults for anything else.
|
|
5
|
-
*/
|
|
6
|
-
export declare const bossToolFormatters: ToolExecutionFormatters;
|
|
7
|
-
//# sourceMappingURL=tool-formatters.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-formatters.d.ts","sourceRoot":"","sources":["../src/tool-formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAsBrE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,uBAqFhC,CAAC"}
|
package/dist/tool-formatters.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { projectColor } from "./colors.js";
|
|
2
|
-
function truncate(s, max) {
|
|
3
|
-
if (max <= 1)
|
|
4
|
-
return "…";
|
|
5
|
-
return s.length > max ? s.slice(0, max - 1) + "…" : s;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Compute how many chars of the prompt-worker message detail can fit on a
|
|
9
|
-
* single line of the current terminal. Header chrome ≈ "⏺ Prompt Worker(<proj>
|
|
10
|
-
* · …) <inline>" — we subtract the fixed pieces so the message gets whatever
|
|
11
|
-
* room remains.
|
|
12
|
-
*/
|
|
13
|
-
function promptWorkerDetailLen(project) {
|
|
14
|
-
const cols = process.stdout.columns ?? 80;
|
|
15
|
-
// Fixed overhead estimate: dot(2) + label "Prompt Worker"(13) + "("(1)
|
|
16
|
-
// + project + " · "(3) + ")"(1) + " "(1) + " dispatched"(11) + safety(6).
|
|
17
|
-
const fixed = 2 + 13 + 1 + project.length + 3 + 1 + 1 + 11 + 6;
|
|
18
|
-
return Math.max(20, cols - fixed);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Custom label / detail / inline-summary rendering for the boss's own tools.
|
|
22
|
-
* Falls through to ggcoder's defaults for anything else.
|
|
23
|
-
*/
|
|
24
|
-
export const bossToolFormatters = {
|
|
25
|
-
formatLabel(name) {
|
|
26
|
-
switch (name) {
|
|
27
|
-
case "list_workers":
|
|
28
|
-
return "List Workers";
|
|
29
|
-
case "get_worker_status":
|
|
30
|
-
return "Worker Status";
|
|
31
|
-
case "prompt_worker":
|
|
32
|
-
return "Prompt Worker";
|
|
33
|
-
case "get_worker_summary":
|
|
34
|
-
return "Worker Summary";
|
|
35
|
-
default:
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
formatDetail(name, args) {
|
|
40
|
-
switch (name) {
|
|
41
|
-
case "list_workers":
|
|
42
|
-
return "";
|
|
43
|
-
case "get_worker_status":
|
|
44
|
-
case "get_worker_summary":
|
|
45
|
-
return truncate(String(args.project ?? ""), 40);
|
|
46
|
-
case "prompt_worker": {
|
|
47
|
-
const project = String(args.project ?? "");
|
|
48
|
-
const message = String(args.message ?? "").replace(/\s+/g, " ");
|
|
49
|
-
const fresh = args.fresh === true;
|
|
50
|
-
const maxMsg = promptWorkerDetailLen(project) - (fresh ? 8 : 0); // "fresh · " is 8 chars
|
|
51
|
-
const truncMsg = truncate(message, Math.max(15, maxMsg));
|
|
52
|
-
const head = fresh ? "fresh · " : "";
|
|
53
|
-
return project ? `${head}${project} · ${truncMsg}` : `${head}${truncMsg}`;
|
|
54
|
-
}
|
|
55
|
-
default:
|
|
56
|
-
return undefined;
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
formatInline(name, result, isError) {
|
|
60
|
-
if (isError)
|
|
61
|
-
return undefined;
|
|
62
|
-
switch (name) {
|
|
63
|
-
case "list_workers": {
|
|
64
|
-
const lines = result.split("\n").filter((l) => l.startsWith("-"));
|
|
65
|
-
return `${lines.length} worker${lines.length === 1 ? "" : "s"}`;
|
|
66
|
-
}
|
|
67
|
-
case "prompt_worker": {
|
|
68
|
-
if (result.includes("currently working")) {
|
|
69
|
-
return { text: "busy — skipped", color: "#fbbf24" };
|
|
70
|
-
}
|
|
71
|
-
if (result.includes("Unknown project")) {
|
|
72
|
-
return { text: "unknown project", color: "#f87171" };
|
|
73
|
-
}
|
|
74
|
-
// Color the badge by project — same project always reads as the same
|
|
75
|
-
// hue across scrollback so the user can scan dispatches at a glance.
|
|
76
|
-
// (When fresh: true, the "fresh ·" prefix is already in the detail
|
|
77
|
-
// parens — no need to double up here, was causing line wraps.)
|
|
78
|
-
const project = String(result.match(/"([^"]+)"/)?.[1] ?? "");
|
|
79
|
-
const color = project ? projectColor(project) : "#e11d48";
|
|
80
|
-
return { text: "dispatched", color };
|
|
81
|
-
}
|
|
82
|
-
case "get_worker_status": {
|
|
83
|
-
const parts = result.split(":");
|
|
84
|
-
if (parts.length < 2)
|
|
85
|
-
return undefined;
|
|
86
|
-
const status = parts.slice(1).join(":").trim();
|
|
87
|
-
const project = parts[0].trim();
|
|
88
|
-
return { text: status, color: projectColor(project) };
|
|
89
|
-
}
|
|
90
|
-
case "get_worker_summary": {
|
|
91
|
-
const turnMatch = result.match(/Turn:\s*(\d+)/);
|
|
92
|
-
const projectMatch = result.match(/Project:\s*(.+)/);
|
|
93
|
-
const toolsMatch = result.match(/Tools used:\s*(.+)/);
|
|
94
|
-
const tools = toolsMatch ? toolsMatch[1] : "";
|
|
95
|
-
const toolCount = tools && tools !== "(no tools used)" ? tools.split(",").length : 0;
|
|
96
|
-
const turn = turnMatch ? `turn ${turnMatch[1]}` : undefined;
|
|
97
|
-
const tCount = toolCount > 0 ? `${toolCount} tool${toolCount === 1 ? "" : "s"}` : undefined;
|
|
98
|
-
const summary = [turn, tCount].filter(Boolean).join(" · ");
|
|
99
|
-
if (!summary)
|
|
100
|
-
return undefined;
|
|
101
|
-
const project = projectMatch ? projectMatch[1].trim() : "";
|
|
102
|
-
return project
|
|
103
|
-
? { text: summary, color: projectColor(project) }
|
|
104
|
-
: { text: summary, color: "#9ca3af" };
|
|
105
|
-
}
|
|
106
|
-
default:
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
//# sourceMappingURL=tool-formatters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-formatters.js","sourceRoot":"","sources":["../src/tool-formatters.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { AgentTool } from "@kenkaiiii/gg-agent";
|
|
2
|
-
import type { Worker } from "./worker.js";
|
|
3
|
-
import type { WorkerTurnSummary } from "./types.js";
|
|
4
|
-
export interface BossToolDeps {
|
|
5
|
-
workers: Map<string, Worker>;
|
|
6
|
-
/** Most recent turn summary per project. Populated by the orchestrator on each worker_turn_complete event. */
|
|
7
|
-
lastSummaries: Map<string, WorkerTurnSummary>;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Hardcoded framing prepended to every prompt the boss dispatches to a worker.
|
|
11
|
-
*
|
|
12
|
-
* The boss already sees every tool a worker calls (via worker_turn_complete
|
|
13
|
-
* events), so workers don't need to narrate or recap. This brief asks for a
|
|
14
|
-
* tight structured summary instead — keeps `final_text` short and scannable
|
|
15
|
-
* in the boss's context, and saves the boss from having to add this guidance
|
|
16
|
-
* to every prompt itself.
|
|
17
|
-
*
|
|
18
|
-
* Lives here (not in the boss system prompt) because it's a worker-side
|
|
19
|
-
* instruction — only seen by the worker, never by the boss.
|
|
20
|
-
*
|
|
21
|
-
* Exported so the orchestrator can wrap dispatches that bypass prompt_worker
|
|
22
|
-
* (Tasks overlay direct dispatch, dispatch_pending tool) with the same brief.
|
|
23
|
-
*/
|
|
24
|
-
export declare const WORKER_PROMPT_BRIEF = "You're being driven by gg-boss, an orchestrator. Your tool usage is already visible to it \u2014 don't narrate which tools you ran or recap the request.\n\nEnd your response with a tight structured summary. Omit any line that doesn't apply:\n\nChanged: <files modified, comma-separated, with the specific change in parentheses where it adds clarity \u2014 e.g. \"src/auth.ts (added retry guard)\">\nSkipped: <anything the prompt asked for that you didn't do, with a one-line reason each>\nVerified: <what you ran or checked to confirm correctness \u2014 e.g. \"pnpm test (15/15 pass)\", \"tsc --noEmit clean\">\nNotes: <ONE line; only if there's something gg-boss must know that the above doesn't capture>\nStatus: <one of: DONE | UNVERIFIED | PARTIAL | BLOCKED | INFO>\n\nStatus meanings (be honest \u2014 gg-boss routes off this):\n- DONE: task complete AND you verified it (tests ran, types check, behaviour confirmed)\n- UNVERIFIED: task complete but you didn't / couldn't validate it\n- PARTIAL: did some of the task; the rest is in Skipped\n- BLOCKED: couldn't make progress, needs gg-boss to unblock or re-prompt\n- INFO: no work was performed \u2014 the prompt was a question and you answered it\n\nIf Status is INFO, answer the question in one or two lines and skip the rest of the summary.\n\nNo preamble. No apologies. Be factual.\n\nTask:\n";
|
|
25
|
-
export declare function createBossTools(deps: BossToolDeps): AgentTool[];
|
|
26
|
-
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,8GAA8G;IAC9G,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC/C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,60CAsB/B,CAAC;AAwBF,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,CAgF/D"}
|