opencode-swarm-plugin 0.61.0 → 0.62.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/bin/swarm.ts +303 -2339
- package/claude-plugin/dist/index.js +830 -635
- package/claude-plugin/dist/schemas/cell.d.ts +1 -0
- package/claude-plugin/dist/schemas/cell.d.ts.map +1 -1
- package/claude-plugin/hooks/hooks.json +9 -0
- package/dist/bin/swarm.js +78737 -81712
- package/dist/examples/plugin-wrapper-template.ts +8 -3
- package/dist/hive.d.ts.map +1 -1
- package/dist/hive.js +3 -1
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +186 -2
- package/dist/marketplace/index.js +830 -635
- package/dist/plugin.js +186 -2
- package/dist/schemas/cell.d.ts +1 -0
- package/dist/schemas/cell.d.ts.map +1 -1
- package/dist/skills.d.ts +16 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/swarm-orchestrate.d.ts +110 -0
- package/dist/swarm-orchestrate.d.ts.map +1 -1
- package/dist/swarm-prompts.js +184 -2
- package/dist/swarm.d.ts +40 -0
- package/dist/swarm.d.ts.map +1 -1
- package/examples/plugin-wrapper-template.ts +8 -3
- package/global-skills/skill-generator/SKILL.md +155 -0
- package/global-skills/skill-generator/references/conventions.md +361 -0
- package/global-skills/skill-generator/scripts/generate-skill.sh +193 -0
- package/package.json +1 -1
|
@@ -40,7 +40,10 @@ import { tool } from "@opencode-ai/plugin";
|
|
|
40
40
|
import { spawn } from "child_process";
|
|
41
41
|
import { appendFileSync, mkdirSync, existsSync } from "node:fs";
|
|
42
42
|
import { join } from "node:path";
|
|
43
|
-
import { homedir } from "node:os";
|
|
43
|
+
import { homedir, platform } from "node:os";
|
|
44
|
+
|
|
45
|
+
// Platform detection for Windows compatibility
|
|
46
|
+
const isWindows = platform() === "win32";
|
|
44
47
|
|
|
45
48
|
// =============================================================================
|
|
46
49
|
// Swarm Signature Detection (INLINED - do not import from opencode-swarm-plugin)
|
|
@@ -304,7 +307,9 @@ function getSwarmSummary(projection: SwarmProjection): string {
|
|
|
304
307
|
// Constants
|
|
305
308
|
// =============================================================================
|
|
306
309
|
|
|
307
|
-
|
|
310
|
+
// On Windows, use .cmd extension to avoid shell escaping issues with JSON args
|
|
311
|
+
const SWARM_CLI = isWindows ? "swarm.cmd" : "swarm";
|
|
312
|
+
const OPENCODE_CLI = isWindows ? "opencode.cmd" : "opencode";
|
|
308
313
|
|
|
309
314
|
// =============================================================================
|
|
310
315
|
// File-based Logging (writes to ~/.config/swarm-tools/logs/)
|
|
@@ -2058,7 +2063,7 @@ Keep the prompt concise but actionable. Use actual data from the snapshot, not p
|
|
|
2058
2063
|
const llmStart = Date.now();
|
|
2059
2064
|
const result = await new Promise<{ exitCode: number; stdout: string; stderr: string }>(
|
|
2060
2065
|
(resolve, reject) => {
|
|
2061
|
-
const proc = spawn(
|
|
2066
|
+
const proc = spawn(OPENCODE_CLI, ["run", "-m", liteModel, "--", promptText], {
|
|
2062
2067
|
cwd: projectDirectory,
|
|
2063
2068
|
stdio: ["ignore", "pipe", "pipe"],
|
|
2064
2069
|
timeout: 30000, // 30 second timeout
|
package/dist/hive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hive.d.ts","sourceRoot":"","sources":["../src/hive.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAKL,KAAK,WAAW,EAMjB,MAAM,YAAY,CAAC;AAepB;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE/D;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAGD,eAAO,MAAM,wBAAwB,gCAA0B,CAAC;AAChE,eAAO,MAAM,wBAAwB,gCAA0B,CAAC;AA6ChE;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAGhB,OAAO,EAAE,MAAM;aACf,QAAQ,CAAC,EAAE,MAAM;aACjB,MAAM,CAAC,EAAE,MAAM;gBAH/B,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,MAAM,CAAC,EAAE,MAAM,YAAA;CAKlC;AAGD,eAAO,MAAM,SAAS,kBAAY,CAAC;AAEnC;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAG1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBADpC,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,CAAC,CAAC,QAAQ;CAKvC;AAGD,eAAO,MAAM,mBAAmB,4BAAsB,CAAC;AAMvD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAgBnF;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyBtF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAO7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC,CA6CxG;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAmGD;AAoFD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiB7E;AAGD,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAgFD;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;CA8DtB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"hive.d.ts","sourceRoot":"","sources":["../src/hive.ts"],"names":[],"mappings":"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"}
|
package/dist/hive.js
CHANGED
|
@@ -13369,6 +13369,7 @@ var EpicCreateArgsSchema = exports_external.object({
|
|
|
13369
13369
|
epic_id: exports_external.string().optional(),
|
|
13370
13370
|
subtasks: exports_external.array(exports_external.object({
|
|
13371
13371
|
title: exports_external.string().min(1),
|
|
13372
|
+
description: exports_external.string().optional(),
|
|
13372
13373
|
priority: exports_external.number().int().min(0).max(3).default(2),
|
|
13373
13374
|
files: exports_external.array(exports_external.string()).optional().default([]),
|
|
13374
13375
|
id_suffix: exports_external.string().optional()
|
|
@@ -14242,7 +14243,8 @@ var hive_create_epic = tool({
|
|
|
14242
14243
|
title: subtask.title,
|
|
14243
14244
|
type: "task",
|
|
14244
14245
|
priority: subtask.priority ?? 2,
|
|
14245
|
-
parent_id: epic.id
|
|
14246
|
+
parent_id: epic.id,
|
|
14247
|
+
description: subtask.description
|
|
14246
14248
|
});
|
|
14247
14249
|
await adapter.markDirty(projectKey, subtaskCell.id);
|
|
14248
14250
|
created.push(subtaskCell);
|
package/dist/index.d.ts
CHANGED
|
@@ -645,6 +645,11 @@ export declare const allTools: {
|
|
|
645
645
|
executable: boolean;
|
|
646
646
|
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
647
647
|
};
|
|
648
|
+
readonly skills_reload: {
|
|
649
|
+
description: string;
|
|
650
|
+
args: {};
|
|
651
|
+
execute(args: Record<string, never>, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
652
|
+
};
|
|
648
653
|
readonly skills_init: {
|
|
649
654
|
description: string;
|
|
650
655
|
args: {
|
|
@@ -1113,6 +1118,46 @@ export declare const allTools: {
|
|
|
1113
1118
|
epic_id: string;
|
|
1114
1119
|
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
1115
1120
|
};
|
|
1121
|
+
readonly swarm_branch: {
|
|
1122
|
+
description: string;
|
|
1123
|
+
args: {
|
|
1124
|
+
project_key: import("zod").ZodString;
|
|
1125
|
+
agent_name: import("zod").ZodString;
|
|
1126
|
+
bead_id: import("zod").ZodString;
|
|
1127
|
+
epic_id: import("zod").ZodString;
|
|
1128
|
+
branch_label: import("zod").ZodString;
|
|
1129
|
+
branch_purpose: import("zod").ZodString;
|
|
1130
|
+
files_modified: import("zod").ZodArray<import("zod").ZodString>;
|
|
1131
|
+
progress_percent: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
1132
|
+
};
|
|
1133
|
+
execute(args: {
|
|
1134
|
+
project_key: string;
|
|
1135
|
+
agent_name: string;
|
|
1136
|
+
bead_id: string;
|
|
1137
|
+
epic_id: string;
|
|
1138
|
+
branch_label: string;
|
|
1139
|
+
branch_purpose: string;
|
|
1140
|
+
files_modified: string[];
|
|
1141
|
+
progress_percent?: number | undefined;
|
|
1142
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
1143
|
+
};
|
|
1144
|
+
readonly swarm_return: {
|
|
1145
|
+
description: string;
|
|
1146
|
+
args: {
|
|
1147
|
+
project_key: import("zod").ZodString;
|
|
1148
|
+
epic_id: import("zod").ZodString;
|
|
1149
|
+
branch_label: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1150
|
+
carry_back_learnings: import("zod").ZodOptional<import("zod").ZodString>;
|
|
1151
|
+
carry_back_files: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
1152
|
+
};
|
|
1153
|
+
execute(args: {
|
|
1154
|
+
project_key: string;
|
|
1155
|
+
epic_id: string;
|
|
1156
|
+
branch_label?: string | undefined;
|
|
1157
|
+
carry_back_learnings?: string | undefined;
|
|
1158
|
+
carry_back_files?: string[] | undefined;
|
|
1159
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
1160
|
+
};
|
|
1116
1161
|
readonly swarm_learn: {
|
|
1117
1162
|
description: string;
|
|
1118
1163
|
args: {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,qBAAqB,CAAC;AAmDtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,WAAW,EAAE,MA4alB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAe,WAAW,CAAC;AAM3B;;GAEG;AACH,cAAc,WAAW,CAAC;AAE1B;;;;;;;;;;;GAWG;AACH,cAAc,QAAQ,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB;;;;;GAKG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;GAMG;AACH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EAEjB,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAMjB;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,qBAAqB,CAAC;AAmDtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,WAAW,EAAE,MA4alB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAe,WAAW,CAAC;AAM3B;;GAEG;AACH,cAAc,WAAW,CAAC;AAE1B;;;;;;;;;;;GAWG;AACH,cAAc,QAAQ,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,4BAA4B,EAC5B,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,cAAc,EACd,4BAA4B,EAC5B,4BAA4B,EAC5B,iBAAiB,EACjB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB;;;;;GAKG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;GAMG;AACH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EAEjB,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAMjB;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAeX,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,QAAQ,CAAC;AAEhD;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9D;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,4BAA4B,EAC5B,8BAA8B,EAC9B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;GAWG;AACH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,aAAa,EACb,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,KAAK,EACV,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;;;;;;;;GAWG;AACH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27539,6 +27539,7 @@ __export(exports_skills, {
|
|
|
27539
27539
|
validateCSOCompliance: () => validateCSOCompliance,
|
|
27540
27540
|
skills_use: () => skills_use,
|
|
27541
27541
|
skills_update: () => skills_update,
|
|
27542
|
+
skills_reload: () => skills_reload,
|
|
27542
27543
|
skills_read: () => skills_read,
|
|
27543
27544
|
skills_list: () => skills_list,
|
|
27544
27545
|
skills_init: () => skills_init,
|
|
@@ -28023,7 +28024,7 @@ var import_gray_matter, ALWAYS_ON_GUIDANCE_HEADER = "## Always-On Guidance Skill
|
|
|
28023
28024
|
- Read before Edit; no speculative changes or output`, OPUS_4_5_GUIDANCE = `#### Opus 4.5 (Concise)
|
|
28024
28025
|
- Be concise and deliberate while obeying mandates
|
|
28025
28026
|
- Follow tool priorities without shortcuts
|
|
28026
|
-
- Prefer direct answers over speculation`, skillsProjectDirectory, skillsCache = null, PROJECT_SKILL_DIRECTORIES, skills_list, skills_use, skills_execute, skills_read, DEFAULT_SKILLS_DIR = ".opencode/skill", skills_create, skills_update, skills_delete, skills_add_script, skills_init, skillsTools;
|
|
28027
|
+
- Prefer direct answers over speculation`, skillsProjectDirectory, skillsCache = null, PROJECT_SKILL_DIRECTORIES, skills_list, skills_use, skills_execute, skills_read, DEFAULT_SKILLS_DIR = ".opencode/skill", skills_create, skills_update, skills_delete, skills_add_script, skills_reload, skills_init, skillsTools;
|
|
28027
28028
|
var init_skills = __esm(() => {
|
|
28028
28029
|
init_dist();
|
|
28029
28030
|
import_gray_matter = __toESM(require_gray_matter(), 1);
|
|
@@ -28453,6 +28454,38 @@ executed with skills_execute. Use for:
|
|
|
28453
28454
|
}
|
|
28454
28455
|
}
|
|
28455
28456
|
});
|
|
28457
|
+
skills_reload = tool({
|
|
28458
|
+
description: `Hot-reload skills by clearing cache and re-scanning skill directories.
|
|
28459
|
+
|
|
28460
|
+
Use this to:
|
|
28461
|
+
- Test a newly created skill immediately without restarting
|
|
28462
|
+
- Verify skill modifications took effect
|
|
28463
|
+
- Refresh skills after external changes
|
|
28464
|
+
|
|
28465
|
+
The tool clears the cached skills, re-scans all skill directories,
|
|
28466
|
+
and returns a list of loaded skills.`,
|
|
28467
|
+
args: {},
|
|
28468
|
+
async execute() {
|
|
28469
|
+
invalidateSkillsCache();
|
|
28470
|
+
const skills = await discoverSkills();
|
|
28471
|
+
const refs = Array.from(skills.values()).map((skill) => ({
|
|
28472
|
+
name: skill.metadata.name,
|
|
28473
|
+
description: skill.metadata.description,
|
|
28474
|
+
path: skill.path,
|
|
28475
|
+
hasScripts: skill.hasScripts
|
|
28476
|
+
}));
|
|
28477
|
+
return JSON.stringify({
|
|
28478
|
+
success: true,
|
|
28479
|
+
reloaded: refs.length,
|
|
28480
|
+
skills: refs.map((r) => ({
|
|
28481
|
+
name: r.name,
|
|
28482
|
+
description: r.description,
|
|
28483
|
+
hasScripts: r.hasScripts
|
|
28484
|
+
})),
|
|
28485
|
+
message: `Reloaded ${refs.length} skill(s). All skills are now up-to-date.`
|
|
28486
|
+
}, null, 2);
|
|
28487
|
+
}
|
|
28488
|
+
});
|
|
28456
28489
|
skills_init = tool({
|
|
28457
28490
|
description: `Initialize a new skill with full directory structure and templates.
|
|
28458
28491
|
|
|
@@ -28565,6 +28598,7 @@ echo "Project directory: $1"
|
|
|
28565
28598
|
skills_update,
|
|
28566
28599
|
skills_delete,
|
|
28567
28600
|
skills_add_script,
|
|
28601
|
+
skills_reload,
|
|
28568
28602
|
skills_init
|
|
28569
28603
|
};
|
|
28570
28604
|
});
|
|
@@ -85844,6 +85878,7 @@ var EpicCreateArgsSchema = exports_external.object({
|
|
|
85844
85878
|
epic_id: exports_external.string().optional(),
|
|
85845
85879
|
subtasks: exports_external.array(exports_external.object({
|
|
85846
85880
|
title: exports_external.string().min(1),
|
|
85881
|
+
description: exports_external.string().optional(),
|
|
85847
85882
|
priority: exports_external.number().int().min(0).max(3).default(2),
|
|
85848
85883
|
files: exports_external.array(exports_external.string()).optional().default([]),
|
|
85849
85884
|
id_suffix: exports_external.string().optional()
|
|
@@ -86820,7 +86855,8 @@ var hive_create_epic = tool({
|
|
|
86820
86855
|
title: subtask.title,
|
|
86821
86856
|
type: "task",
|
|
86822
86857
|
priority: subtask.priority ?? 2,
|
|
86823
|
-
parent_id: epic.id
|
|
86858
|
+
parent_id: epic.id,
|
|
86859
|
+
description: subtask.description
|
|
86824
86860
|
});
|
|
86825
86861
|
await adapter.markDirty(projectKey, subtaskCell.id);
|
|
86826
86862
|
created.push(subtaskCell);
|
|
@@ -95033,6 +95069,152 @@ var swarm_recover = tool({
|
|
|
95033
95069
|
}
|
|
95034
95070
|
}
|
|
95035
95071
|
});
|
|
95072
|
+
var swarm_branch = tool({
|
|
95073
|
+
description: "Create a session branch for exploration. Saves current context with a label for later return.",
|
|
95074
|
+
args: {
|
|
95075
|
+
project_key: tool.schema.string().describe("Project path"),
|
|
95076
|
+
agent_name: tool.schema.string().describe("Agent name"),
|
|
95077
|
+
bead_id: tool.schema.string().describe("Current subtask bead ID"),
|
|
95078
|
+
epic_id: tool.schema.string().describe("Epic bead ID"),
|
|
95079
|
+
branch_label: tool.schema.string().describe("Label for this branch (e.g., 'debug-cache-issue')"),
|
|
95080
|
+
branch_purpose: tool.schema.string().describe("Why branching? (e.g., 'investigate API timeout')"),
|
|
95081
|
+
files_modified: tool.schema.array(tool.schema.string()).describe("Files modified before branching"),
|
|
95082
|
+
progress_percent: tool.schema.number().min(0).max(100).optional().describe("Current progress percentage")
|
|
95083
|
+
},
|
|
95084
|
+
async execute(args) {
|
|
95085
|
+
try {
|
|
95086
|
+
const branchId = `branch-${Date.now()}-${args.branch_label.replace(/[^a-z0-9-]/gi, "-")}`;
|
|
95087
|
+
const checkpoint = {
|
|
95088
|
+
epic_id: args.epic_id,
|
|
95089
|
+
bead_id: args.bead_id,
|
|
95090
|
+
strategy: "file-based",
|
|
95091
|
+
files: args.files_modified,
|
|
95092
|
+
dependencies: [],
|
|
95093
|
+
directives: {
|
|
95094
|
+
branch_label: args.branch_label,
|
|
95095
|
+
branch_purpose: args.branch_purpose,
|
|
95096
|
+
branch_id: branchId
|
|
95097
|
+
},
|
|
95098
|
+
recovery: {
|
|
95099
|
+
last_checkpoint: Date.now(),
|
|
95100
|
+
files_modified: args.files_modified,
|
|
95101
|
+
progress_percent: args.progress_percent || 0,
|
|
95102
|
+
last_message: `Branched for: ${args.branch_purpose}`
|
|
95103
|
+
}
|
|
95104
|
+
};
|
|
95105
|
+
const { createEvent: createEvent5, appendEvent: appendEvent4 } = await import("swarm-mail");
|
|
95106
|
+
const checkpointData = JSON.stringify(checkpoint);
|
|
95107
|
+
const event = createEvent5("swarm_checkpointed", {
|
|
95108
|
+
project_key: args.project_key,
|
|
95109
|
+
epic_id: args.epic_id,
|
|
95110
|
+
bead_id: args.bead_id,
|
|
95111
|
+
strategy: checkpoint.strategy,
|
|
95112
|
+
files: checkpoint.files,
|
|
95113
|
+
dependencies: checkpoint.dependencies,
|
|
95114
|
+
directives: checkpoint.directives,
|
|
95115
|
+
recovery: checkpoint.recovery,
|
|
95116
|
+
checkpoint_size_bytes: Buffer.byteLength(checkpointData, "utf8"),
|
|
95117
|
+
trigger: "manual"
|
|
95118
|
+
});
|
|
95119
|
+
await appendEvent4(event, args.project_key);
|
|
95120
|
+
return JSON.stringify({
|
|
95121
|
+
success: true,
|
|
95122
|
+
branch_id: branchId,
|
|
95123
|
+
branch_label: args.branch_label,
|
|
95124
|
+
branch_purpose: args.branch_purpose,
|
|
95125
|
+
checkpoint_timestamp: Date.now(),
|
|
95126
|
+
message: `Session branched: ${args.branch_label}. Use swarm_return to restore main context.`,
|
|
95127
|
+
files_snapshot: args.files_modified
|
|
95128
|
+
}, null, 2);
|
|
95129
|
+
} catch (error45) {
|
|
95130
|
+
console.warn(`[swarm_branch] Failed to create branch ${args.branch_label}:`, error45);
|
|
95131
|
+
return JSON.stringify({
|
|
95132
|
+
success: false,
|
|
95133
|
+
error: error45 instanceof Error ? error45.message : String(error45),
|
|
95134
|
+
message: `Failed to branch session: ${args.branch_label}`
|
|
95135
|
+
}, null, 2);
|
|
95136
|
+
}
|
|
95137
|
+
}
|
|
95138
|
+
});
|
|
95139
|
+
var swarm_return = tool({
|
|
95140
|
+
description: "Return from session branch. Restores main context, optionally carrying back learnings.",
|
|
95141
|
+
args: {
|
|
95142
|
+
project_key: tool.schema.string().describe("Project path"),
|
|
95143
|
+
epic_id: tool.schema.string().describe("Epic bead ID"),
|
|
95144
|
+
branch_label: tool.schema.string().optional().describe("Label of branch to return from (defaults to latest)"),
|
|
95145
|
+
carry_back_learnings: tool.schema.string().optional().describe("Learnings or insights to carry back to main context"),
|
|
95146
|
+
carry_back_files: tool.schema.array(tool.schema.string()).optional().describe("Files to preserve from branch (others discarded)")
|
|
95147
|
+
},
|
|
95148
|
+
async execute(args) {
|
|
95149
|
+
try {
|
|
95150
|
+
const { getSwarmMailLibSQL: getSwarmMailLibSQL5 } = await import("swarm-mail");
|
|
95151
|
+
const swarmMail = await getSwarmMailLibSQL5(args.project_key);
|
|
95152
|
+
const db = await swarmMail.getDatabase();
|
|
95153
|
+
const result = await db.query(args.branch_label ? `SELECT * FROM swarm_contexts
|
|
95154
|
+
WHERE epic_id = $1 AND json_extract(directives, '$.branch_label') = $2
|
|
95155
|
+
ORDER BY updated_at DESC
|
|
95156
|
+
LIMIT 1` : `SELECT * FROM swarm_contexts
|
|
95157
|
+
WHERE epic_id = $1 AND json_extract(directives, '$.branch_id') IS NOT NULL
|
|
95158
|
+
ORDER BY updated_at DESC
|
|
95159
|
+
LIMIT 1`, args.branch_label ? [args.epic_id, args.branch_label] : [args.epic_id]);
|
|
95160
|
+
if (!result.rows || result.rows.length === 0) {
|
|
95161
|
+
return JSON.stringify({
|
|
95162
|
+
success: false,
|
|
95163
|
+
found: false,
|
|
95164
|
+
message: args.branch_label ? `No branch found with label: ${args.branch_label}` : "No branch checkpoints found for this epic",
|
|
95165
|
+
epic_id: args.epic_id
|
|
95166
|
+
}, null, 2);
|
|
95167
|
+
}
|
|
95168
|
+
const row = result.rows[0];
|
|
95169
|
+
const parseIfString = (val) => typeof val === "string" ? JSON.parse(val) : val;
|
|
95170
|
+
const context = {
|
|
95171
|
+
id: row.id,
|
|
95172
|
+
epic_id: row.epic_id,
|
|
95173
|
+
bead_id: row.bead_id,
|
|
95174
|
+
strategy: row.strategy,
|
|
95175
|
+
files: parseIfString(row.files),
|
|
95176
|
+
dependencies: parseIfString(row.dependencies),
|
|
95177
|
+
directives: parseIfString(row.directives),
|
|
95178
|
+
recovery: parseIfString(row.recovery),
|
|
95179
|
+
created_at: row.created_at,
|
|
95180
|
+
updated_at: row.updated_at
|
|
95181
|
+
};
|
|
95182
|
+
const { createEvent: createEvent5, appendEvent: appendEvent4 } = await import("swarm-mail");
|
|
95183
|
+
const event = createEvent5("swarm_recovered", {
|
|
95184
|
+
project_key: args.project_key,
|
|
95185
|
+
epic_id: args.epic_id,
|
|
95186
|
+
bead_id: context.bead_id,
|
|
95187
|
+
recovered_from_checkpoint: context.recovery.last_checkpoint
|
|
95188
|
+
});
|
|
95189
|
+
await appendEvent4(event, args.project_key);
|
|
95190
|
+
const branchLabel = context.directives.branch_label || "unnamed-branch";
|
|
95191
|
+
return JSON.stringify({
|
|
95192
|
+
success: true,
|
|
95193
|
+
found: true,
|
|
95194
|
+
branch_label: branchLabel,
|
|
95195
|
+
branch_purpose: context.directives.branch_purpose,
|
|
95196
|
+
context_restored: {
|
|
95197
|
+
bead_id: context.bead_id,
|
|
95198
|
+
files: context.files,
|
|
95199
|
+
progress_percent: context.recovery.progress_percent
|
|
95200
|
+
},
|
|
95201
|
+
learnings_carried_back: args.carry_back_learnings || null,
|
|
95202
|
+
files_carried_back: args.carry_back_files || [],
|
|
95203
|
+
message: `Returned from branch: ${branchLabel}`,
|
|
95204
|
+
age_seconds: Math.round((Date.now() - context.updated_at) / 1000)
|
|
95205
|
+
}, null, 2);
|
|
95206
|
+
} catch (error45) {
|
|
95207
|
+
console.warn(`[swarm_return] Failed to return from branch:`, error45);
|
|
95208
|
+
return JSON.stringify({
|
|
95209
|
+
success: false,
|
|
95210
|
+
found: false,
|
|
95211
|
+
error: error45 instanceof Error ? error45.message : String(error45),
|
|
95212
|
+
message: "Failed to return from branch",
|
|
95213
|
+
epic_id: args.epic_id
|
|
95214
|
+
}, null, 2);
|
|
95215
|
+
}
|
|
95216
|
+
}
|
|
95217
|
+
});
|
|
95036
95218
|
var swarm_learn = tool({
|
|
95037
95219
|
description: `Analyze completed work and optionally create a skill from learned patterns.
|
|
95038
95220
|
|
|
@@ -95176,6 +95358,8 @@ var orchestrateTools = {
|
|
|
95176
95358
|
swarm_check_strikes,
|
|
95177
95359
|
swarm_checkpoint,
|
|
95178
95360
|
swarm_recover,
|
|
95361
|
+
swarm_branch,
|
|
95362
|
+
swarm_return,
|
|
95179
95363
|
swarm_learn
|
|
95180
95364
|
};
|
|
95181
95365
|
|