@kenkaiiii/gg-boss 4.3.96

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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/dist/banner.d.ts +11 -0
  3. package/dist/banner.d.ts.map +1 -0
  4. package/dist/banner.js +25 -0
  5. package/dist/banner.js.map +1 -0
  6. package/dist/boot-banner.d.ts +15 -0
  7. package/dist/boot-banner.d.ts.map +1 -0
  8. package/dist/boot-banner.js +61 -0
  9. package/dist/boot-banner.js.map +1 -0
  10. package/dist/boss-footer.d.ts +16 -0
  11. package/dist/boss-footer.d.ts.map +1 -0
  12. package/dist/boss-footer.js +60 -0
  13. package/dist/boss-footer.js.map +1 -0
  14. package/dist/boss-store.d.ts +202 -0
  15. package/dist/boss-store.d.ts.map +1 -0
  16. package/dist/boss-store.js +560 -0
  17. package/dist/boss-store.js.map +1 -0
  18. package/dist/boss-system-prompt.d.ts +3 -0
  19. package/dist/boss-system-prompt.d.ts.map +1 -0
  20. package/dist/boss-system-prompt.js +52 -0
  21. package/dist/boss-system-prompt.js.map +1 -0
  22. package/dist/branding.d.ts +18 -0
  23. package/dist/branding.d.ts.map +1 -0
  24. package/dist/branding.js +33 -0
  25. package/dist/branding.js.map +1 -0
  26. package/dist/cli.d.ts +3 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +163 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/discover.d.ts +13 -0
  31. package/dist/discover.d.ts.map +1 -0
  32. package/dist/discover.js +92 -0
  33. package/dist/discover.js.map +1 -0
  34. package/dist/event-queue.d.ts +16 -0
  35. package/dist/event-queue.d.ts.map +1 -0
  36. package/dist/event-queue.js +39 -0
  37. package/dist/event-queue.js.map +1 -0
  38. package/dist/index.d.ts +6 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +5 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/link-command.d.ts +2 -0
  43. package/dist/link-command.d.ts.map +1 -0
  44. package/dist/link-command.js +120 -0
  45. package/dist/link-command.js.map +1 -0
  46. package/dist/links.d.ts +11 -0
  47. package/dist/links.d.ts.map +1 -0
  48. package/dist/links.js +22 -0
  49. package/dist/links.js.map +1 -0
  50. package/dist/orchestrator-app.d.ts +15 -0
  51. package/dist/orchestrator-app.d.ts.map +1 -0
  52. package/dist/orchestrator-app.js +248 -0
  53. package/dist/orchestrator-app.js.map +1 -0
  54. package/dist/orchestrator.d.ts +79 -0
  55. package/dist/orchestrator.d.ts.map +1 -0
  56. package/dist/orchestrator.js +405 -0
  57. package/dist/orchestrator.js.map +1 -0
  58. package/dist/sessions.d.ts +21 -0
  59. package/dist/sessions.d.ts.map +1 -0
  60. package/dist/sessions.js +122 -0
  61. package/dist/sessions.js.map +1 -0
  62. package/dist/slash-commands.d.ts +19 -0
  63. package/dist/slash-commands.d.ts.map +1 -0
  64. package/dist/slash-commands.js +54 -0
  65. package/dist/slash-commands.js.map +1 -0
  66. package/dist/tools.d.ts +10 -0
  67. package/dist/tools.d.ts.map +1 -0
  68. package/dist/tools.js +81 -0
  69. package/dist/tools.js.map +1 -0
  70. package/dist/types.d.ts +32 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +2 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/worker.d.ts +40 -0
  75. package/dist/worker.d.ts.map +1 -0
  76. package/dist/worker.js +113 -0
  77. package/dist/worker.js.map +1 -0
  78. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../src/slash-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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
+ export declare function createBossTools(deps: BossToolDeps): AgentTool[];
10
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
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;AAkBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,CAsE/D"}
package/dist/tools.js ADDED
@@ -0,0 +1,81 @@
1
+ import { z } from "zod";
2
+ const listWorkersParams = z.object({});
3
+ const getWorkerStatusParams = z.object({
4
+ project: z.string().describe("Project name as listed by list_workers."),
5
+ });
6
+ const promptWorkerParams = z.object({
7
+ project: z.string().describe("Project name as listed by list_workers."),
8
+ message: z
9
+ .string()
10
+ .describe("The instruction to send to the worker. Be specific — the worker has full coding tools (read, write, edit, bash, grep, etc.)."),
11
+ });
12
+ const getWorkerSummaryParams = z.object({
13
+ project: z.string().describe("Project name as listed by list_workers."),
14
+ });
15
+ export function createBossTools(deps) {
16
+ const { workers, lastSummaries } = deps;
17
+ const listWorkers = {
18
+ name: "list_workers",
19
+ description: "List all projects under your control with their cwd and current status.",
20
+ parameters: listWorkersParams,
21
+ execute() {
22
+ if (workers.size === 0)
23
+ return "(no workers registered)";
24
+ const lines = [];
25
+ for (const [name, w] of workers) {
26
+ lines.push(`- ${name} (${w.cwd}) — status: ${w.getStatus()}`);
27
+ }
28
+ return lines.join("\n");
29
+ },
30
+ };
31
+ const getWorkerStatus = {
32
+ name: "get_worker_status",
33
+ description: "Get the current status (idle/working/error) of a single project.",
34
+ parameters: getWorkerStatusParams,
35
+ execute(args) {
36
+ const w = workers.get(args.project);
37
+ if (!w)
38
+ return `Unknown project: ${args.project}`;
39
+ return `${args.project}: ${w.getStatus()}`;
40
+ },
41
+ };
42
+ const promptWorker = {
43
+ name: "prompt_worker",
44
+ description: "Send a prompt to a worker. Fire-and-forget — returns immediately. You will be notified via a worker_turn_complete event when the worker finishes. Do NOT call this on a worker whose status is 'working'.",
45
+ parameters: promptWorkerParams,
46
+ async execute(args) {
47
+ const w = workers.get(args.project);
48
+ if (!w)
49
+ return `Unknown project: ${args.project}`;
50
+ if (w.getStatus() === "working") {
51
+ return `Worker "${args.project}" is currently working — wait for its completion event before prompting again.`;
52
+ }
53
+ await w.prompt(args.message);
54
+ return `Prompt sent to "${args.project}". Worker is now running.`;
55
+ },
56
+ };
57
+ const getWorkerSummary = {
58
+ name: "get_worker_summary",
59
+ description: "Fetch the most recent turn summary from a worker — its final text and the list of tools it used. Use this to verify what a worker actually did.",
60
+ parameters: getWorkerSummaryParams,
61
+ execute(args) {
62
+ const summary = lastSummaries.get(args.project);
63
+ if (!summary) {
64
+ return `No summary yet for "${args.project}" — it hasn't completed any turns.`;
65
+ }
66
+ const tools = summary.toolsUsed.length > 0
67
+ ? summary.toolsUsed.map((t) => `${t.ok ? "✓" : "✗"}${t.name}`).join(", ")
68
+ : "(no tools used)";
69
+ return `Project: ${summary.project}
70
+ Turn: ${summary.turnIndex}
71
+ Status: ${summary.status}
72
+ Tools used: ${tools}
73
+ Timestamp: ${summary.timestamp}
74
+
75
+ Final text:
76
+ ${summary.finalText || "(empty)"}`;
77
+ },
78
+ };
79
+ return [listWorkers, getWorkerStatus, promptWorker, getWorkerSummary];
80
+ }
81
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export type WorkerStatus = "idle" | "working" | "error";
2
+ export interface ProjectSpec {
3
+ name: string;
4
+ cwd: string;
5
+ }
6
+ export interface ToolUseSummary {
7
+ name: string;
8
+ ok: boolean;
9
+ }
10
+ export interface WorkerTurnSummary {
11
+ project: string;
12
+ cwd: string;
13
+ status: WorkerStatus;
14
+ finalText: string;
15
+ toolsUsed: ToolUseSummary[];
16
+ turnIndex: number;
17
+ timestamp: string;
18
+ }
19
+ export type BossEvent = {
20
+ kind: "user_message";
21
+ text: string;
22
+ timestamp: string;
23
+ } | {
24
+ kind: "worker_turn_complete";
25
+ summary: WorkerTurnSummary;
26
+ } | {
27
+ kind: "worker_error";
28
+ project: string;
29
+ message: string;
30
+ timestamp: string;
31
+ };
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import type { Provider, ThinkingLevel } from "@kenkaiiii/gg-ai";
2
+ import type { EventQueue } from "./event-queue.js";
3
+ import type { WorkerStatus } from "./types.js";
4
+ export interface WorkerOptions {
5
+ name: string;
6
+ cwd: string;
7
+ provider: Provider;
8
+ model: string;
9
+ thinkingLevel?: ThinkingLevel;
10
+ signal: AbortSignal;
11
+ queue: EventQueue;
12
+ }
13
+ /**
14
+ * One worker per project. Wraps an AgentSession and translates its event
15
+ * stream into BossEvents pushed onto the shared queue.
16
+ *
17
+ * - prompt() is fire-and-forget: returns immediately, completion arrives later
18
+ * on the queue as a worker_turn_complete event.
19
+ * - The worker buffers text + tool calls during a turn and emits a single
20
+ * summary on agent_done.
21
+ */
22
+ export declare class Worker {
23
+ readonly name: string;
24
+ readonly cwd: string;
25
+ private session;
26
+ private queue;
27
+ private status;
28
+ private turnCount;
29
+ private currentText;
30
+ private currentTools;
31
+ private activeTools;
32
+ constructor(opts: WorkerOptions);
33
+ initialize(): Promise<void>;
34
+ getStatus(): WorkerStatus;
35
+ prompt(text: string): Promise<void>;
36
+ dispose(): Promise<void>;
37
+ switchModel(provider: Provider, model: string): Promise<void>;
38
+ private wireEvents;
39
+ }
40
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAkB,YAAY,EAAqB,MAAM,YAAY,CAAC;AAGlF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,qBAAa,MAAM;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,WAAW,CAA6B;gBAEpC,IAAI,EAAE,aAAa;IAazB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,SAAS,IAAI,YAAY;IAInB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,OAAO,CAAC,UAAU;CA+CnB"}
package/dist/worker.js ADDED
@@ -0,0 +1,113 @@
1
+ import { AgentSession } from "@kenkaiiii/ggcoder";
2
+ import { bossStore } from "./boss-store.js";
3
+ /**
4
+ * One worker per project. Wraps an AgentSession and translates its event
5
+ * stream into BossEvents pushed onto the shared queue.
6
+ *
7
+ * - prompt() is fire-and-forget: returns immediately, completion arrives later
8
+ * on the queue as a worker_turn_complete event.
9
+ * - The worker buffers text + tool calls during a turn and emits a single
10
+ * summary on agent_done.
11
+ */
12
+ export class Worker {
13
+ name;
14
+ cwd;
15
+ session;
16
+ queue;
17
+ status = "idle";
18
+ turnCount = 0;
19
+ currentText = "";
20
+ currentTools = [];
21
+ activeTools = new Map();
22
+ constructor(opts) {
23
+ this.name = opts.name;
24
+ this.cwd = opts.cwd;
25
+ this.queue = opts.queue;
26
+ this.session = new AgentSession({
27
+ provider: opts.provider,
28
+ model: opts.model,
29
+ cwd: opts.cwd,
30
+ thinkingLevel: opts.thinkingLevel,
31
+ signal: opts.signal,
32
+ });
33
+ }
34
+ async initialize() {
35
+ await this.session.initialize();
36
+ this.wireEvents();
37
+ }
38
+ getStatus() {
39
+ return this.status;
40
+ }
41
+ async prompt(text) {
42
+ if (this.status === "working") {
43
+ throw new Error(`Worker "${this.name}" is already working`);
44
+ }
45
+ this.status = "working";
46
+ bossStore.setWorkerStatus(this.name, "working");
47
+ this.currentText = "";
48
+ this.currentTools = [];
49
+ // Fire-and-forget. Errors surface via the eventBus error handler below.
50
+ void this.session.prompt(text).catch((err) => {
51
+ const message = err instanceof Error ? err.message : String(err);
52
+ this.status = "error";
53
+ const ts = new Date().toISOString();
54
+ bossStore.appendWorkerError(this.name, message, ts);
55
+ this.queue.push({
56
+ kind: "worker_error",
57
+ project: this.name,
58
+ message,
59
+ timestamp: ts,
60
+ });
61
+ });
62
+ }
63
+ async dispose() {
64
+ await this.session.dispose();
65
+ }
66
+ async switchModel(provider, model) {
67
+ await this.session.switchModel(provider, model);
68
+ }
69
+ wireEvents() {
70
+ const bus = this.session.eventBus;
71
+ bus.on("text_delta", ({ text }) => {
72
+ this.currentText += text;
73
+ });
74
+ bus.on("tool_call_start", ({ toolCallId, name }) => {
75
+ this.activeTools.set(toolCallId, name);
76
+ });
77
+ bus.on("tool_call_end", ({ toolCallId, isError }) => {
78
+ const name = this.activeTools.get(toolCallId);
79
+ this.activeTools.delete(toolCallId);
80
+ if (name)
81
+ this.currentTools.push({ name, ok: !isError });
82
+ });
83
+ bus.on("agent_done", () => {
84
+ this.turnCount += 1;
85
+ const summary = {
86
+ project: this.name,
87
+ cwd: this.cwd,
88
+ status: "idle",
89
+ finalText: this.currentText.trim(),
90
+ toolsUsed: [...this.currentTools],
91
+ turnIndex: this.turnCount,
92
+ timestamp: new Date().toISOString(),
93
+ };
94
+ this.currentText = "";
95
+ this.currentTools = [];
96
+ this.status = "idle";
97
+ bossStore.appendWorkerEvent(summary);
98
+ this.queue.push({ kind: "worker_turn_complete", summary });
99
+ });
100
+ bus.on("error", ({ error }) => {
101
+ this.status = "error";
102
+ const ts = new Date().toISOString();
103
+ bossStore.appendWorkerError(this.name, error.message, ts);
104
+ this.queue.push({
105
+ kind: "worker_error",
106
+ project: this.name,
107
+ message: error.message,
108
+ timestamp: ts,
109
+ });
110
+ });
111
+ }
112
+ }
113
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@kenkaiiii/gg-boss",
3
+ "version": "4.3.96",
4
+ "type": "module",
5
+ "description": "Orchestrator agent that drives multiple ggcoder sessions across projects from a single chat",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/kenkaiiii/gg-framework.git",
10
+ "directory": "packages/gg-boss"
11
+ },
12
+ "bin": {
13
+ "ggboss": "./dist/cli.js"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/index.js",
18
+ "types": "./dist/index.d.ts"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "dependencies": {
25
+ "chalk": "^5.6.2",
26
+ "ink": "^6.8.0",
27
+ "react": "^19.2.5",
28
+ "zod": "^4.3.6",
29
+ "@kenkaiiii/gg-agent": "4.3.96",
30
+ "@kenkaiiii/ggcoder": "4.3.96",
31
+ "@kenkaiiii/gg-ai": "4.3.96"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^25.6.0",
35
+ "@types/react": "^19.2.14",
36
+ "typescript": "^5.9.3",
37
+ "vitest": "^4.1.4"
38
+ },
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "scripts": {
43
+ "build": "tsc",
44
+ "check": "tsc --noEmit",
45
+ "test": "vitest run"
46
+ }
47
+ }