opencode-swarm-plugin 0.30.6 → 0.31.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/.hive/memories.jsonl +10 -0
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +339 -339
- package/CHANGELOG.md +103 -0
- package/dist/hive.d.ts.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +241 -49
- package/dist/memory-tools.d.ts +4 -0
- package/dist/memory-tools.d.ts.map +1 -1
- package/dist/memory.d.ts +2 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/model-selection.d.ts +37 -0
- package/dist/model-selection.d.ts.map +1 -0
- package/dist/plugin.js +241 -49
- package/dist/schemas/task.d.ts +2 -0
- package/dist/schemas/task.d.ts.map +1 -1
- package/dist/swarm-decompose.d.ts +8 -8
- package/dist/swarm-decompose.d.ts.map +1 -1
- package/dist/swarm-orchestrate.d.ts.map +1 -1
- package/dist/swarm-prompts.d.ts +11 -7
- package/dist/swarm-prompts.d.ts.map +1 -1
- package/dist/swarm.d.ts +8 -6
- package/dist/swarm.d.ts.map +1 -1
- package/opencode-swarm-plugin-0.30.7.tgz +0 -0
- package/package.json +2 -2
- package/src/hive.integration.test.ts +332 -3
- package/src/hive.ts +171 -13
- package/src/memory-tools.ts +5 -1
- package/src/memory.ts +9 -0
- package/src/swarm-decompose.ts +7 -11
- package/src/swarm-orchestrate.ts +27 -1
- package/src/swarm-prompts.test.ts +12 -9
- package/src/swarm-prompts.ts +43 -19
- package/src/swarm.integration.test.ts +74 -4
package/dist/plugin.js
CHANGED
|
@@ -27051,13 +27051,41 @@ echo "Project directory: $1"
|
|
|
27051
27051
|
};
|
|
27052
27052
|
});
|
|
27053
27053
|
|
|
27054
|
+
// src/model-selection.ts
|
|
27055
|
+
var exports_model_selection = {};
|
|
27056
|
+
__export(exports_model_selection, {
|
|
27057
|
+
selectWorkerModel: () => selectWorkerModel
|
|
27058
|
+
});
|
|
27059
|
+
function selectWorkerModel(subtask, config2) {
|
|
27060
|
+
if (subtask.model) {
|
|
27061
|
+
return subtask.model;
|
|
27062
|
+
}
|
|
27063
|
+
const files = subtask.files || [];
|
|
27064
|
+
if (files.length > 0) {
|
|
27065
|
+
const allDocs = files.every((f) => {
|
|
27066
|
+
const lower = f.toLowerCase();
|
|
27067
|
+
return lower.endsWith(".md") || lower.endsWith(".mdx");
|
|
27068
|
+
});
|
|
27069
|
+
const allTests = files.every((f) => {
|
|
27070
|
+
const lower = f.toLowerCase();
|
|
27071
|
+
return lower.includes(".test.") || lower.includes(".spec.");
|
|
27072
|
+
});
|
|
27073
|
+
if (allDocs || allTests) {
|
|
27074
|
+
return config2.liteModel || config2.primaryModel || "anthropic/claude-haiku-4-5";
|
|
27075
|
+
}
|
|
27076
|
+
}
|
|
27077
|
+
return config2.primaryModel || "anthropic/claude-haiku-4-5";
|
|
27078
|
+
}
|
|
27079
|
+
|
|
27054
27080
|
// src/hive.ts
|
|
27055
27081
|
init_dist();
|
|
27056
27082
|
import {
|
|
27057
27083
|
createHiveAdapter,
|
|
27058
27084
|
FlushManager,
|
|
27059
27085
|
importFromJSONL,
|
|
27060
|
-
|
|
27086
|
+
syncMemories,
|
|
27087
|
+
getSwarmMail,
|
|
27088
|
+
resolvePartialId
|
|
27061
27089
|
} from "swarm-mail";
|
|
27062
27090
|
import { existsSync, readFileSync } from "node:fs";
|
|
27063
27091
|
import { join } from "node:path";
|
|
@@ -27238,7 +27266,8 @@ var DecomposedSubtaskSchema = exports_external.object({
|
|
|
27238
27266
|
description: exports_external.string(),
|
|
27239
27267
|
files: exports_external.array(exports_external.string()),
|
|
27240
27268
|
estimated_effort: EffortLevelSchema,
|
|
27241
|
-
risks: exports_external.array(exports_external.string()).optional().default([])
|
|
27269
|
+
risks: exports_external.array(exports_external.string()).optional().default([]),
|
|
27270
|
+
model: exports_external.string().optional()
|
|
27242
27271
|
});
|
|
27243
27272
|
var SubtaskDependencySchema = exports_external.object({
|
|
27244
27273
|
from: exports_external.number().int().min(0),
|
|
@@ -27664,6 +27693,43 @@ function ensureHiveDirectory(projectPath) {
|
|
|
27664
27693
|
}
|
|
27665
27694
|
}
|
|
27666
27695
|
var adapterCache = new Map;
|
|
27696
|
+
var exitHookRegistered = false;
|
|
27697
|
+
var exitHookRunning = false;
|
|
27698
|
+
function registerExitHook() {
|
|
27699
|
+
if (exitHookRegistered) {
|
|
27700
|
+
return;
|
|
27701
|
+
}
|
|
27702
|
+
exitHookRegistered = true;
|
|
27703
|
+
process.on("beforeExit", async (code) => {
|
|
27704
|
+
if (exitHookRunning) {
|
|
27705
|
+
return;
|
|
27706
|
+
}
|
|
27707
|
+
exitHookRunning = true;
|
|
27708
|
+
try {
|
|
27709
|
+
const flushPromises = [];
|
|
27710
|
+
for (const [projectKey, adapter] of adapterCache.entries()) {
|
|
27711
|
+
const flushPromise = (async () => {
|
|
27712
|
+
try {
|
|
27713
|
+
ensureHiveDirectory(projectKey);
|
|
27714
|
+
const flushManager = new FlushManager({
|
|
27715
|
+
adapter,
|
|
27716
|
+
projectKey,
|
|
27717
|
+
outputPath: `${projectKey}/.hive/issues.jsonl`
|
|
27718
|
+
});
|
|
27719
|
+
await flushManager.flush();
|
|
27720
|
+
} catch (error45) {
|
|
27721
|
+
console.warn(`[hive exit hook] Failed to flush ${projectKey}:`, error45 instanceof Error ? error45.message : String(error45));
|
|
27722
|
+
}
|
|
27723
|
+
})();
|
|
27724
|
+
flushPromises.push(flushPromise);
|
|
27725
|
+
}
|
|
27726
|
+
await Promise.all(flushPromises);
|
|
27727
|
+
} finally {
|
|
27728
|
+
exitHookRunning = false;
|
|
27729
|
+
}
|
|
27730
|
+
});
|
|
27731
|
+
}
|
|
27732
|
+
registerExitHook();
|
|
27667
27733
|
async function getHiveAdapter(projectKey) {
|
|
27668
27734
|
if (adapterCache.has(projectKey)) {
|
|
27669
27735
|
return adapterCache.get(projectKey);
|
|
@@ -27817,6 +27883,17 @@ var hive_create_epic = tool({
|
|
|
27817
27883
|
console.warn("[hive_create_epic] Failed to emit DecompositionGeneratedEvent:", error45);
|
|
27818
27884
|
}
|
|
27819
27885
|
}
|
|
27886
|
+
try {
|
|
27887
|
+
ensureHiveDirectory(projectKey);
|
|
27888
|
+
const flushManager = new FlushManager({
|
|
27889
|
+
adapter,
|
|
27890
|
+
projectKey,
|
|
27891
|
+
outputPath: `${projectKey}/.hive/issues.jsonl`
|
|
27892
|
+
});
|
|
27893
|
+
await flushManager.flush();
|
|
27894
|
+
} catch (error45) {
|
|
27895
|
+
console.warn("[hive_create_epic] Failed to sync to JSONL:", error45);
|
|
27896
|
+
}
|
|
27820
27897
|
return JSON.stringify(result, null, 2);
|
|
27821
27898
|
} catch (error45) {
|
|
27822
27899
|
const rollbackErrors = [];
|
|
@@ -27881,7 +27958,7 @@ var hive_query = tool({
|
|
|
27881
27958
|
var hive_update = tool({
|
|
27882
27959
|
description: "Update cell status/description",
|
|
27883
27960
|
args: {
|
|
27884
|
-
id: tool.schema.string().describe("Cell ID"),
|
|
27961
|
+
id: tool.schema.string().describe("Cell ID or partial hash"),
|
|
27885
27962
|
status: tool.schema.enum(["open", "in_progress", "blocked", "closed"]).optional().describe("New status"),
|
|
27886
27963
|
description: tool.schema.string().optional().describe("New description"),
|
|
27887
27964
|
priority: tool.schema.number().min(0).max(3).optional().describe("New priority")
|
|
@@ -27891,27 +27968,34 @@ var hive_update = tool({
|
|
|
27891
27968
|
const projectKey = getHiveWorkingDirectory();
|
|
27892
27969
|
const adapter = await getHiveAdapter(projectKey);
|
|
27893
27970
|
try {
|
|
27971
|
+
const cellId = await resolvePartialId(adapter, projectKey, validated.id) || validated.id;
|
|
27894
27972
|
let cell;
|
|
27895
27973
|
if (validated.status) {
|
|
27896
|
-
cell = await adapter.changeCellStatus(projectKey,
|
|
27974
|
+
cell = await adapter.changeCellStatus(projectKey, cellId, validated.status);
|
|
27897
27975
|
}
|
|
27898
27976
|
if (validated.description !== undefined || validated.priority !== undefined) {
|
|
27899
|
-
cell = await adapter.updateCell(projectKey,
|
|
27977
|
+
cell = await adapter.updateCell(projectKey, cellId, {
|
|
27900
27978
|
description: validated.description,
|
|
27901
27979
|
priority: validated.priority
|
|
27902
27980
|
});
|
|
27903
27981
|
} else if (!validated.status) {
|
|
27904
|
-
const existingCell = await adapter.getCell(projectKey,
|
|
27982
|
+
const existingCell = await adapter.getCell(projectKey, cellId);
|
|
27905
27983
|
if (!existingCell) {
|
|
27906
27984
|
throw new HiveError(`Cell not found: ${validated.id}`, "hive_update");
|
|
27907
27985
|
}
|
|
27908
27986
|
cell = existingCell;
|
|
27909
27987
|
}
|
|
27910
|
-
await adapter.markDirty(projectKey,
|
|
27988
|
+
await adapter.markDirty(projectKey, cellId);
|
|
27911
27989
|
const formatted = formatCellForOutput(cell);
|
|
27912
27990
|
return JSON.stringify(formatted, null, 2);
|
|
27913
27991
|
} catch (error45) {
|
|
27914
27992
|
const message = error45 instanceof Error ? error45.message : String(error45);
|
|
27993
|
+
if (message.includes("Ambiguous hash")) {
|
|
27994
|
+
throw new HiveError(`Ambiguous ID '${validated.id}': multiple cells match. Please provide more characters.`, "hive_update");
|
|
27995
|
+
}
|
|
27996
|
+
if (message.includes("Bead not found") || message.includes("Cell not found")) {
|
|
27997
|
+
throw new HiveError(`No cell found matching ID '${validated.id}'`, "hive_update");
|
|
27998
|
+
}
|
|
27915
27999
|
throw new HiveError(`Failed to update cell: ${message}`, "hive_update");
|
|
27916
28000
|
}
|
|
27917
28001
|
}
|
|
@@ -27919,7 +28003,7 @@ var hive_update = tool({
|
|
|
27919
28003
|
var hive_close = tool({
|
|
27920
28004
|
description: "Close a cell with reason",
|
|
27921
28005
|
args: {
|
|
27922
|
-
id: tool.schema.string().describe("Cell ID"),
|
|
28006
|
+
id: tool.schema.string().describe("Cell ID or partial hash"),
|
|
27923
28007
|
reason: tool.schema.string().describe("Completion reason")
|
|
27924
28008
|
},
|
|
27925
28009
|
async execute(args, ctx) {
|
|
@@ -27927,11 +28011,18 @@ var hive_close = tool({
|
|
|
27927
28011
|
const projectKey = getHiveWorkingDirectory();
|
|
27928
28012
|
const adapter = await getHiveAdapter(projectKey);
|
|
27929
28013
|
try {
|
|
27930
|
-
const
|
|
27931
|
-
await adapter.
|
|
28014
|
+
const cellId = await resolvePartialId(adapter, projectKey, validated.id) || validated.id;
|
|
28015
|
+
const cell = await adapter.closeCell(projectKey, cellId, validated.reason);
|
|
28016
|
+
await adapter.markDirty(projectKey, cellId);
|
|
27932
28017
|
return `Closed ${cell.id}: ${validated.reason}`;
|
|
27933
28018
|
} catch (error45) {
|
|
27934
28019
|
const message = error45 instanceof Error ? error45.message : String(error45);
|
|
28020
|
+
if (message.includes("Ambiguous hash")) {
|
|
28021
|
+
throw new HiveError(`Ambiguous ID '${validated.id}': multiple cells match. Please provide more characters.`, "hive_close");
|
|
28022
|
+
}
|
|
28023
|
+
if (message.includes("Bead not found") || message.includes("Cell not found")) {
|
|
28024
|
+
throw new HiveError(`No cell found matching ID '${validated.id}'`, "hive_close");
|
|
28025
|
+
}
|
|
27935
28026
|
throw new HiveError(`Failed to close cell: ${message}`, "hive_close");
|
|
27936
28027
|
}
|
|
27937
28028
|
}
|
|
@@ -27939,17 +28030,24 @@ var hive_close = tool({
|
|
|
27939
28030
|
var hive_start = tool({
|
|
27940
28031
|
description: "Mark a cell as in-progress (shortcut for update --status in_progress)",
|
|
27941
28032
|
args: {
|
|
27942
|
-
id: tool.schema.string().describe("Cell ID")
|
|
28033
|
+
id: tool.schema.string().describe("Cell ID or partial hash")
|
|
27943
28034
|
},
|
|
27944
28035
|
async execute(args, ctx) {
|
|
27945
28036
|
const projectKey = getHiveWorkingDirectory();
|
|
27946
28037
|
const adapter = await getHiveAdapter(projectKey);
|
|
27947
28038
|
try {
|
|
27948
|
-
const
|
|
27949
|
-
await adapter.
|
|
28039
|
+
const cellId = await resolvePartialId(adapter, projectKey, args.id) || args.id;
|
|
28040
|
+
const cell = await adapter.changeCellStatus(projectKey, cellId, "in_progress");
|
|
28041
|
+
await adapter.markDirty(projectKey, cellId);
|
|
27950
28042
|
return `Started: ${cell.id}`;
|
|
27951
28043
|
} catch (error45) {
|
|
27952
28044
|
const message = error45 instanceof Error ? error45.message : String(error45);
|
|
28045
|
+
if (message.includes("Ambiguous hash")) {
|
|
28046
|
+
throw new HiveError(`Ambiguous ID '${args.id}': multiple cells match. Please provide more characters.`, "hive_start");
|
|
28047
|
+
}
|
|
28048
|
+
if (message.includes("Bead not found") || message.includes("Cell not found")) {
|
|
28049
|
+
throw new HiveError(`No cell found matching ID '${args.id}'`, "hive_start");
|
|
28050
|
+
}
|
|
27953
28051
|
throw new HiveError(`Failed to start cell: ${message}`, "hive_start");
|
|
27954
28052
|
}
|
|
27955
28053
|
}
|
|
@@ -28003,8 +28101,18 @@ var hive_sync = tool({
|
|
|
28003
28101
|
outputPath: `${projectKey}/.hive/issues.jsonl`
|
|
28004
28102
|
});
|
|
28005
28103
|
const flushResult = await withTimeout(flushManager.flush(), TIMEOUT_MS, "flush hive");
|
|
28006
|
-
|
|
28007
|
-
|
|
28104
|
+
const swarmMail = await getSwarmMail(projectKey);
|
|
28105
|
+
const db = await swarmMail.getDatabase();
|
|
28106
|
+
const hivePath = join(projectKey, ".hive");
|
|
28107
|
+
let memoriesSynced = 0;
|
|
28108
|
+
try {
|
|
28109
|
+
const memoryResult = await syncMemories(db, hivePath);
|
|
28110
|
+
memoriesSynced = memoryResult.exported;
|
|
28111
|
+
} catch (err) {
|
|
28112
|
+
console.warn("[hive_sync] Memory sync warning:", err);
|
|
28113
|
+
}
|
|
28114
|
+
if (flushResult.cellsExported === 0 && memoriesSynced === 0) {
|
|
28115
|
+
return "No cells or memories to sync";
|
|
28008
28116
|
}
|
|
28009
28117
|
const hiveStatusResult = await runGitCommand([
|
|
28010
28118
|
"status",
|
|
@@ -30265,7 +30373,7 @@ Agents MUST update their bead status as they work. No silent progress.
|
|
|
30265
30373
|
|
|
30266
30374
|
## Requirements
|
|
30267
30375
|
|
|
30268
|
-
1. **Break into
|
|
30376
|
+
1. **Break into independent subtasks** that can run in parallel (as many as needed)
|
|
30269
30377
|
2. **Assign files** - each subtask must specify which files it will modify
|
|
30270
30378
|
3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)
|
|
30271
30379
|
4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array
|
|
@@ -30338,7 +30446,7 @@ Agents MUST update their bead status as they work. No silent progress.
|
|
|
30338
30446
|
|
|
30339
30447
|
## Requirements
|
|
30340
30448
|
|
|
30341
|
-
1. **Break into
|
|
30449
|
+
1. **Break into independent subtasks** that can run in parallel (as many as needed)
|
|
30342
30450
|
2. **Assign files** - each subtask must specify which files it will modify
|
|
30343
30451
|
3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)
|
|
30344
30452
|
4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array
|
|
@@ -30504,10 +30612,10 @@ var swarm_decompose = tool({
|
|
|
30504
30612
|
description: "Generate decomposition prompt for breaking task into parallelizable subtasks. Optionally queries CASS for similar past tasks.",
|
|
30505
30613
|
args: {
|
|
30506
30614
|
task: tool.schema.string().min(1).describe("Task description to decompose"),
|
|
30507
|
-
max_subtasks: tool.schema.number().int().min(
|
|
30615
|
+
max_subtasks: tool.schema.number().int().min(1).optional().describe("Suggested max subtasks (optional - LLM decides if not specified)"),
|
|
30508
30616
|
context: tool.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
30509
30617
|
query_cass: tool.schema.boolean().optional().describe("Query CASS for similar past tasks (default: true)"),
|
|
30510
|
-
cass_limit: tool.schema.number().int().min(1).
|
|
30618
|
+
cass_limit: tool.schema.number().int().min(1).optional().describe("Max CASS results to include (default: 3)")
|
|
30511
30619
|
},
|
|
30512
30620
|
async execute(args) {
|
|
30513
30621
|
const { formatMemoryQueryForDecomposition: formatMemoryQueryForDecomposition2 } = await Promise.resolve().then(() => (init_learning(), exports_learning));
|
|
@@ -30635,7 +30743,7 @@ var swarm_delegate_planning = tool({
|
|
|
30635
30743
|
args: {
|
|
30636
30744
|
task: tool.schema.string().min(1).describe("The task to decompose"),
|
|
30637
30745
|
context: tool.schema.string().optional().describe("Additional context to include"),
|
|
30638
|
-
max_subtasks: tool.schema.number().int().min(
|
|
30746
|
+
max_subtasks: tool.schema.number().int().min(1).optional().describe("Suggested max subtasks (optional - LLM decides if not specified)"),
|
|
30639
30747
|
strategy: tool.schema.enum(["auto", "file-based", "feature-based", "risk-based"]).optional().default("auto").describe("Decomposition strategy (default: auto-detect)"),
|
|
30640
30748
|
query_cass: tool.schema.boolean().optional().default(true).describe("Query CASS for similar past tasks (default: true)")
|
|
30641
30749
|
},
|
|
@@ -33917,6 +34025,21 @@ This will be recorded as a negative learning signal.`;
|
|
|
33917
34025
|
}
|
|
33918
34026
|
}, null, 2);
|
|
33919
34027
|
}
|
|
34028
|
+
let syncSuccess = false;
|
|
34029
|
+
let syncError;
|
|
34030
|
+
try {
|
|
34031
|
+
const previousWorkingDir = getHiveWorkingDirectory();
|
|
34032
|
+
setHiveWorkingDirectory(args.project_key);
|
|
34033
|
+
try {
|
|
34034
|
+
const syncResult = await hive_sync.execute({ auto_pull: false }, _ctx);
|
|
34035
|
+
syncSuccess = !syncResult.includes("error");
|
|
34036
|
+
} finally {
|
|
34037
|
+
setHiveWorkingDirectory(previousWorkingDir);
|
|
34038
|
+
}
|
|
34039
|
+
} catch (error45) {
|
|
34040
|
+
syncError = error45 instanceof Error ? error45.message : String(error45);
|
|
34041
|
+
console.warn(`[swarm_complete] Auto-sync failed (non-fatal): ${syncError}`);
|
|
34042
|
+
}
|
|
33920
34043
|
try {
|
|
33921
34044
|
const epicId3 = args.bead_id.includes(".") ? args.bead_id.split(".")[0] : args.bead_id;
|
|
33922
34045
|
const durationMs2 = args.start_time ? Date.now() - args.start_time : 0;
|
|
@@ -34002,6 +34125,8 @@ This will be recorded as a negative learning signal.`;
|
|
|
34002
34125
|
bead_id: args.bead_id,
|
|
34003
34126
|
closed: true,
|
|
34004
34127
|
reservations_released: true,
|
|
34128
|
+
synced: syncSuccess,
|
|
34129
|
+
sync_error: syncError,
|
|
34005
34130
|
message_sent: messageSent,
|
|
34006
34131
|
message_error: messageError,
|
|
34007
34132
|
agent_registration: {
|
|
@@ -34678,7 +34803,7 @@ Agents MUST update their cell status as they work. No silent progress.
|
|
|
34678
34803
|
|
|
34679
34804
|
## Requirements
|
|
34680
34805
|
|
|
34681
|
-
1. **Break into
|
|
34806
|
+
1. **Break into independent subtasks** that can run in parallel (as many as needed)
|
|
34682
34807
|
2. **Assign files** - each subtask must specify which files it will modify
|
|
34683
34808
|
3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)
|
|
34684
34809
|
4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array
|
|
@@ -34830,18 +34955,36 @@ swarmmail_init(project_path="{project_path}", task_description="{bead_id}: {subt
|
|
|
34830
34955
|
|
|
34831
34956
|
**If you skip this step, your work will not be tracked and swarm_complete will fail.**
|
|
34832
34957
|
|
|
34833
|
-
### Step 2: Query Past Learnings (BEFORE starting work)
|
|
34958
|
+
### Step 2: \uD83E\uDDE0 Query Past Learnings (MANDATORY - BEFORE starting work)
|
|
34959
|
+
|
|
34960
|
+
**⚠️ CRITICAL: ALWAYS query semantic memory BEFORE writing ANY code.**
|
|
34961
|
+
|
|
34834
34962
|
\`\`\`
|
|
34835
|
-
semantic-memory_find(query="<keywords from your task>", limit=5)
|
|
34963
|
+
semantic-memory_find(query="<keywords from your task>", limit=5, expand=true)
|
|
34836
34964
|
\`\`\`
|
|
34837
34965
|
|
|
34838
|
-
**
|
|
34839
|
-
-
|
|
34840
|
-
-
|
|
34841
|
-
-
|
|
34842
|
-
-
|
|
34966
|
+
**Why this is MANDATORY:**
|
|
34967
|
+
- Past agents may have already solved your exact problem
|
|
34968
|
+
- Avoids repeating mistakes that wasted 30+ minutes before
|
|
34969
|
+
- Discovers project-specific patterns and gotchas
|
|
34970
|
+
- Finds known workarounds for tool/library quirks
|
|
34971
|
+
|
|
34972
|
+
**Search Query Examples by Task Type:**
|
|
34973
|
+
|
|
34974
|
+
- **Bug fix**: Use exact error message or "<symptom> <component>"
|
|
34975
|
+
- **New feature**: Search "<domain concept> implementation pattern"
|
|
34976
|
+
- **Refactor**: Query "<pattern name> migration approach"
|
|
34977
|
+
- **Integration**: Look for "<library name> gotchas configuration"
|
|
34978
|
+
- **Testing**: Find "testing <component type> characterization tests"
|
|
34979
|
+
- **Performance**: Search "<technology> performance optimization"
|
|
34843
34980
|
|
|
34844
|
-
**
|
|
34981
|
+
**BEFORE you start coding:**
|
|
34982
|
+
1. Run semantic-memory_find with keywords from your task
|
|
34983
|
+
2. Read the results with expand=true for full content
|
|
34984
|
+
3. Check if any memory solves your problem or warns of pitfalls
|
|
34985
|
+
4. Adjust your approach based on past learnings
|
|
34986
|
+
|
|
34987
|
+
**If you skip this step, you WILL waste time solving already-solved problems.**
|
|
34845
34988
|
|
|
34846
34989
|
### Step 3: Load Relevant Skills (if available)
|
|
34847
34990
|
\`\`\`
|
|
@@ -34927,21 +35070,44 @@ swarm_checkpoint(
|
|
|
34927
35070
|
|
|
34928
35071
|
**Checkpoints preserve context so you can recover if things go wrong.**
|
|
34929
35072
|
|
|
34930
|
-
### Step 8:
|
|
35073
|
+
### Step 8: \uD83D\uDCBE STORE YOUR LEARNINGS (if you discovered something)
|
|
35074
|
+
|
|
35075
|
+
**If you learned it the hard way, STORE IT so the next agent doesn't have to.**
|
|
35076
|
+
|
|
34931
35077
|
\`\`\`
|
|
34932
35078
|
semantic-memory_store(
|
|
34933
35079
|
information="<what you learned, WHY it matters, how to apply it>",
|
|
34934
|
-
|
|
35080
|
+
tags="<domain, tech-stack, pattern-type>"
|
|
34935
35081
|
)
|
|
34936
35082
|
\`\`\`
|
|
34937
35083
|
|
|
34938
|
-
**Store:**
|
|
34939
|
-
-
|
|
34940
|
-
-
|
|
34941
|
-
-
|
|
34942
|
-
-
|
|
35084
|
+
**MANDATORY Storage Triggers - Store when you:**
|
|
35085
|
+
- \uD83D\uDC1B **Solved a tricky bug** (>15min debugging) - include root cause + solution
|
|
35086
|
+
- \uD83D\uDCA1 **Discovered a project-specific pattern** - domain rules, business logic quirks
|
|
35087
|
+
- ⚠️ **Found a tool/library gotcha** - API quirks, version-specific bugs, workarounds
|
|
35088
|
+
- \uD83D\uDEAB **Tried an approach that failed** - anti-patterns to avoid, why it didn't work
|
|
35089
|
+
- \uD83C\uDFD7️ **Made an architectural decision** - reasoning, alternatives considered, tradeoffs
|
|
34943
35090
|
|
|
34944
|
-
**
|
|
35091
|
+
**What Makes a GOOD Memory:**
|
|
35092
|
+
|
|
35093
|
+
✅ **GOOD** (actionable, explains WHY):
|
|
35094
|
+
\`\`\`
|
|
35095
|
+
"OAuth refresh tokens need 5min buffer before expiry to avoid race conditions.
|
|
35096
|
+
Without buffer, token refresh can fail mid-request if expiry happens between
|
|
35097
|
+
check and use. Implemented with: if (expiresAt - Date.now() < 300000) refresh()"
|
|
35098
|
+
\`\`\`
|
|
35099
|
+
|
|
35100
|
+
❌ **BAD** (generic, no context):
|
|
35101
|
+
\`\`\`
|
|
35102
|
+
"Fixed the auth bug by adding a null check"
|
|
35103
|
+
\`\`\`
|
|
35104
|
+
|
|
35105
|
+
**What NOT to Store:**
|
|
35106
|
+
- Generic knowledge that's in official documentation
|
|
35107
|
+
- Implementation details that change frequently
|
|
35108
|
+
- Vague descriptions without context ("fixed the thing")
|
|
35109
|
+
|
|
35110
|
+
**The WHY matters more than the WHAT.** Future agents need context to apply your learning.
|
|
34945
35111
|
|
|
34946
35112
|
### Step 9: Complete (REQUIRED - releases reservations)
|
|
34947
35113
|
\`\`\`
|
|
@@ -35032,17 +35198,20 @@ Other cell operations:
|
|
|
35032
35198
|
|
|
35033
35199
|
**NON-NEGOTIABLE:**
|
|
35034
35200
|
1. Step 1 (swarmmail_init) MUST be first - do it before anything else
|
|
35035
|
-
2. Step 2 (semantic-memory_find) MUST happen
|
|
35201
|
+
2. \uD83E\uDDE0 Step 2 (semantic-memory_find) MUST happen BEFORE starting work - query first, code second
|
|
35036
35202
|
3. Step 4 (swarmmail_reserve) - YOU reserve files, not coordinator
|
|
35037
35203
|
4. Step 6 (swarm_progress) - Report at milestones, don't work silently
|
|
35038
|
-
5. Step
|
|
35204
|
+
5. \uD83D\uDCBE Step 8 (semantic-memory_store) - If you learned something hard, STORE IT
|
|
35205
|
+
6. Step 9 (swarm_complete) - Use this to close, NOT hive_close
|
|
35039
35206
|
|
|
35040
35207
|
**If you skip these steps:**
|
|
35041
35208
|
- Your work won't be tracked (swarm_complete will fail)
|
|
35042
|
-
- You'll waste time repeating solved problems (no semantic memory query)
|
|
35209
|
+
- \uD83D\uDD04 You'll waste time repeating already-solved problems (no semantic memory query)
|
|
35043
35210
|
- Edit conflicts with other agents (no file reservation)
|
|
35044
35211
|
- Lost work if you crash (no checkpoints)
|
|
35045
|
-
- Future agents repeat
|
|
35212
|
+
- \uD83D\uDD04 Future agents repeat YOUR mistakes (no learnings stored)
|
|
35213
|
+
|
|
35214
|
+
**Memory is the swarm's collective intelligence. Query it. Feed it.**
|
|
35046
35215
|
|
|
35047
35216
|
Begin now.`;
|
|
35048
35217
|
var EVALUATION_PROMPT = `Evaluate the work completed for this subtask.
|
|
@@ -35175,7 +35344,7 @@ var swarm_subtask_prompt = tool({
|
|
|
35175
35344
|
}
|
|
35176
35345
|
});
|
|
35177
35346
|
var swarm_spawn_subtask = tool({
|
|
35178
|
-
description: "Prepare a subtask for spawning. Returns prompt with Agent Mail/hive tracking instructions. IMPORTANT: Pass project_path for swarmmail_init.",
|
|
35347
|
+
description: "Prepare a subtask for spawning. Returns prompt with Agent Mail/hive tracking instructions. IMPORTANT: Pass project_path for swarmmail_init. Automatically selects appropriate model based on file types.",
|
|
35179
35348
|
args: {
|
|
35180
35349
|
bead_id: tool.schema.string().describe("Subtask bead ID"),
|
|
35181
35350
|
epic_id: tool.schema.string().describe("Parent epic bead ID"),
|
|
@@ -35188,7 +35357,8 @@ var swarm_spawn_subtask = tool({
|
|
|
35188
35357
|
shared_context: tool.schema.string().optional(),
|
|
35189
35358
|
skills_to_load: tool.schema.array(tool.schema.string()).optional(),
|
|
35190
35359
|
coordinator_notes: tool.schema.string().optional()
|
|
35191
|
-
}).optional().describe("Recovery context from checkpoint compaction")
|
|
35360
|
+
}).optional().describe("Recovery context from checkpoint compaction"),
|
|
35361
|
+
model: tool.schema.string().optional().describe("Optional explicit model override (auto-selected if not provided)")
|
|
35192
35362
|
},
|
|
35193
35363
|
async execute(args) {
|
|
35194
35364
|
const prompt = formatSubtaskPromptV2({
|
|
@@ -35201,13 +35371,28 @@ var swarm_spawn_subtask = tool({
|
|
|
35201
35371
|
project_path: args.project_path,
|
|
35202
35372
|
recovery_context: args.recovery_context
|
|
35203
35373
|
});
|
|
35374
|
+
const { selectWorkerModel: selectWorkerModel2 } = await Promise.resolve().then(() => exports_model_selection);
|
|
35375
|
+
const subtask = {
|
|
35376
|
+
title: args.subtask_title,
|
|
35377
|
+
description: args.subtask_description || "",
|
|
35378
|
+
files: args.files,
|
|
35379
|
+
estimated_effort: "medium",
|
|
35380
|
+
risks: [],
|
|
35381
|
+
model: args.model
|
|
35382
|
+
};
|
|
35383
|
+
const config2 = {
|
|
35384
|
+
primaryModel: "anthropic/claude-sonnet-4-5",
|
|
35385
|
+
liteModel: "anthropic/claude-haiku-4-5"
|
|
35386
|
+
};
|
|
35387
|
+
const selectedModel = selectWorkerModel2(subtask, config2);
|
|
35204
35388
|
return JSON.stringify({
|
|
35205
35389
|
prompt,
|
|
35206
35390
|
bead_id: args.bead_id,
|
|
35207
35391
|
epic_id: args.epic_id,
|
|
35208
35392
|
files: args.files,
|
|
35209
35393
|
project_path: args.project_path,
|
|
35210
|
-
recovery_context: args.recovery_context
|
|
35394
|
+
recovery_context: args.recovery_context,
|
|
35395
|
+
recommended_model: selectedModel
|
|
35211
35396
|
}, null, 2);
|
|
35212
35397
|
}
|
|
35213
35398
|
});
|
|
@@ -35246,10 +35431,10 @@ var swarm_plan_prompt = tool({
|
|
|
35246
35431
|
args: {
|
|
35247
35432
|
task: tool.schema.string().min(1).describe("Task description to decompose"),
|
|
35248
35433
|
strategy: tool.schema.enum(["file-based", "feature-based", "risk-based", "auto"]).optional().describe("Decomposition strategy (default: auto-detect)"),
|
|
35249
|
-
max_subtasks: tool.schema.number().int().min(
|
|
35434
|
+
max_subtasks: tool.schema.number().int().min(1).optional().describe("Suggested max subtasks (optional - LLM decides if not specified)"),
|
|
35250
35435
|
context: tool.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
35251
35436
|
query_cass: tool.schema.boolean().optional().describe("Query CASS for similar past tasks (default: true)"),
|
|
35252
|
-
cass_limit: tool.schema.number().int().min(1).
|
|
35437
|
+
cass_limit: tool.schema.number().int().min(1).optional().describe("Max CASS results to include (default: 3)"),
|
|
35253
35438
|
include_skills: tool.schema.boolean().optional().describe("Include available skills in context (default: true)")
|
|
35254
35439
|
},
|
|
35255
35440
|
async execute(args) {
|
|
@@ -49863,12 +50048,18 @@ async function createMemoryAdapter(db) {
|
|
|
49863
50048
|
if (tags.length > 0) {
|
|
49864
50049
|
metadata.tags = tags;
|
|
49865
50050
|
}
|
|
50051
|
+
const clampConfidence = (c) => {
|
|
50052
|
+
if (c === undefined)
|
|
50053
|
+
return 0.7;
|
|
50054
|
+
return Math.max(0, Math.min(1, c));
|
|
50055
|
+
};
|
|
49866
50056
|
const memory = {
|
|
49867
50057
|
id,
|
|
49868
50058
|
content: args2.information,
|
|
49869
50059
|
metadata,
|
|
49870
50060
|
collection,
|
|
49871
|
-
createdAt: new Date
|
|
50061
|
+
createdAt: new Date,
|
|
50062
|
+
confidence: clampConfidence(args2.confidence)
|
|
49872
50063
|
};
|
|
49873
50064
|
const program = exports_Effect.gen(function* () {
|
|
49874
50065
|
const ollama = yield* Ollama;
|
|
@@ -49975,12 +50166,13 @@ async function getMemoryAdapter(projectPath) {
|
|
|
49975
50166
|
return cachedAdapter;
|
|
49976
50167
|
}
|
|
49977
50168
|
var semantic_memory_store = tool({
|
|
49978
|
-
description: "Store a memory with semantic embedding. Memories are searchable by semantic similarity and can be organized into collections.",
|
|
50169
|
+
description: "Store a memory with semantic embedding. Memories are searchable by semantic similarity and can be organized into collections. Confidence affects decay rate: high confidence (1.0) = 135 day half-life, low confidence (0.0) = 45 day half-life.",
|
|
49979
50170
|
args: {
|
|
49980
50171
|
information: tool.schema.string().describe("The information to store (required)"),
|
|
49981
50172
|
collection: tool.schema.string().optional().describe("Collection name (defaults to 'default')"),
|
|
49982
50173
|
tags: tool.schema.string().optional().describe("Comma-separated tags (e.g., 'auth,tokens,oauth')"),
|
|
49983
|
-
metadata: tool.schema.string().optional().describe("JSON string with additional metadata")
|
|
50174
|
+
metadata: tool.schema.string().optional().describe("JSON string with additional metadata"),
|
|
50175
|
+
confidence: tool.schema.number().optional().describe("Confidence level (0.0-1.0) affecting decay rate. Higher = slower decay. Default 0.7")
|
|
49984
50176
|
},
|
|
49985
50177
|
async execute(args2, ctx) {
|
|
49986
50178
|
const adapter = await getMemoryAdapter();
|
package/dist/schemas/task.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export declare const DecomposedSubtaskSchema: z.ZodObject<{
|
|
|
44
44
|
large: "large";
|
|
45
45
|
}>;
|
|
46
46
|
risks: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
47
|
+
model: z.ZodOptional<z.ZodString>;
|
|
47
48
|
}, z.core.$strip>;
|
|
48
49
|
export type DecomposedSubtask = z.infer<typeof DecomposedSubtaskSchema>;
|
|
49
50
|
/**
|
|
@@ -78,6 +79,7 @@ export declare const TaskDecompositionSchema: z.ZodObject<{
|
|
|
78
79
|
large: "large";
|
|
79
80
|
}>;
|
|
80
81
|
risks: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
82
|
+
model: z.ZodOptional<z.ZodString>;
|
|
81
83
|
}, z.core.$strip>>;
|
|
82
84
|
dependencies: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
83
85
|
from: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;EAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/schemas/task.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;EAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAYlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;iBAMlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAWlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAe7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;iBAMjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAe7B,CAAC;AACJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;iBAS5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -58,14 +58,14 @@ export declare const swarm_decompose: {
|
|
|
58
58
|
description: string;
|
|
59
59
|
args: {
|
|
60
60
|
task: z.ZodString;
|
|
61
|
-
max_subtasks: z.
|
|
61
|
+
max_subtasks: z.ZodOptional<z.ZodNumber>;
|
|
62
62
|
context: z.ZodOptional<z.ZodString>;
|
|
63
63
|
query_cass: z.ZodOptional<z.ZodBoolean>;
|
|
64
64
|
cass_limit: z.ZodOptional<z.ZodNumber>;
|
|
65
65
|
};
|
|
66
66
|
execute(args: {
|
|
67
67
|
task: string;
|
|
68
|
-
max_subtasks
|
|
68
|
+
max_subtasks?: number | undefined;
|
|
69
69
|
context?: string | undefined;
|
|
70
70
|
query_cass?: boolean | undefined;
|
|
71
71
|
cass_limit?: number | undefined;
|
|
@@ -122,7 +122,7 @@ export declare const swarm_delegate_planning: {
|
|
|
122
122
|
args: {
|
|
123
123
|
task: z.ZodString;
|
|
124
124
|
context: z.ZodOptional<z.ZodString>;
|
|
125
|
-
max_subtasks: z.
|
|
125
|
+
max_subtasks: z.ZodOptional<z.ZodNumber>;
|
|
126
126
|
strategy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
127
127
|
"file-based": "file-based";
|
|
128
128
|
"feature-based": "feature-based";
|
|
@@ -133,10 +133,10 @@ export declare const swarm_delegate_planning: {
|
|
|
133
133
|
};
|
|
134
134
|
execute(args: {
|
|
135
135
|
task: string;
|
|
136
|
-
max_subtasks: number;
|
|
137
136
|
strategy: "file-based" | "feature-based" | "risk-based" | "auto";
|
|
138
137
|
query_cass: boolean;
|
|
139
138
|
context?: string | undefined;
|
|
139
|
+
max_subtasks?: number | undefined;
|
|
140
140
|
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
141
141
|
};
|
|
142
142
|
export declare class SwarmError extends Error {
|
|
@@ -200,14 +200,14 @@ export declare const decomposeTools: {
|
|
|
200
200
|
description: string;
|
|
201
201
|
args: {
|
|
202
202
|
task: z.ZodString;
|
|
203
|
-
max_subtasks: z.
|
|
203
|
+
max_subtasks: z.ZodOptional<z.ZodNumber>;
|
|
204
204
|
context: z.ZodOptional<z.ZodString>;
|
|
205
205
|
query_cass: z.ZodOptional<z.ZodBoolean>;
|
|
206
206
|
cass_limit: z.ZodOptional<z.ZodNumber>;
|
|
207
207
|
};
|
|
208
208
|
execute(args: {
|
|
209
209
|
task: string;
|
|
210
|
-
max_subtasks
|
|
210
|
+
max_subtasks?: number | undefined;
|
|
211
211
|
context?: string | undefined;
|
|
212
212
|
query_cass?: boolean | undefined;
|
|
213
213
|
cass_limit?: number | undefined;
|
|
@@ -227,7 +227,7 @@ export declare const decomposeTools: {
|
|
|
227
227
|
args: {
|
|
228
228
|
task: z.ZodString;
|
|
229
229
|
context: z.ZodOptional<z.ZodString>;
|
|
230
|
-
max_subtasks: z.
|
|
230
|
+
max_subtasks: z.ZodOptional<z.ZodNumber>;
|
|
231
231
|
strategy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
232
232
|
"file-based": "file-based";
|
|
233
233
|
"feature-based": "feature-based";
|
|
@@ -238,10 +238,10 @@ export declare const decomposeTools: {
|
|
|
238
238
|
};
|
|
239
239
|
execute(args: {
|
|
240
240
|
task: string;
|
|
241
|
-
max_subtasks: number;
|
|
242
241
|
strategy: "file-based" | "feature-based" | "risk-based" | "auto";
|
|
243
242
|
query_cass: boolean;
|
|
244
243
|
context?: string | undefined;
|
|
244
|
+
max_subtasks?: number | undefined;
|
|
245
245
|
}, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
|
|
246
246
|
};
|
|
247
247
|
swarm_plan_interactive: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-decompose.d.ts","sourceRoot":"","sources":["../src/swarm-decompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwJxB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,mBAAmB,GAAG,eAAe,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AA8CD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,mBAAmB,EAAE,CAmDvB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACnC,MAAM,EAAE,CAgBV;AA+GD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"swarm-decompose.d.ts","sourceRoot":"","sources":["../src/swarm-decompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwJxB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,mBAAmB,GAAG,eAAe,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AA8CD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD,mBAAmB,EAAE,CAmDvB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACnC,MAAM,EAAE,CAgBV;AA+GD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAwG1B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;CAkHvC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;CA2LlC,CAAC;AAMH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,SAAS,EAAE,MAAM;aACjB,OAAO,CAAC,EAAE,OAAO;gBAFjC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,YAAA;CAKpC;AAED,qBAAa,kBAAmB,SAAQ,UAAU;aAG9B,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ;gBADrC,OAAO,EAAE,MAAM,EACC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,YAAA;CAIxC;AAkCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;CA0RjC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-orchestrate.d.ts","sourceRoot":"","sources":["../src/swarm-orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAmDlC;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,aAAa,CA4BhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAqC1C;AA8hBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;CA8JrB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAoFvB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CAkHzB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CA6E1B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"swarm-orchestrate.d.ts","sourceRoot":"","sources":["../src/swarm-orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAmDlC;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,aAAa,CA4BhB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,EAAE,GACpB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAqC1C;AA8hBD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;CA8JrB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAoFvB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CAkHzB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CA6E1B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwsBzB,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJ/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;CA6CjC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;CAmClC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAmB9B,CAAC;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;CAoJ9B,CAAC;AA4BH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqG3B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;CAsGxB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgMtB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAc5B,CAAC"}
|