opencode-swarm-plugin 0.51.0 → 0.53.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/dist/plugin.js CHANGED
@@ -22764,7 +22764,8 @@ var init_swarm_strategies = __esm(() => {
22764
22764
  "remove",
22765
22765
  "cleanup",
22766
22766
  "lint",
22767
- "format"
22767
+ "format",
22768
+ "move"
22768
22769
  ],
22769
22770
  guidelines: [
22770
22771
  "Group files by directory or type (e.g., all components, all tests)",
@@ -22830,7 +22831,8 @@ var init_swarm_strategies = __esm(() => {
22830
22831
  "hotfix",
22831
22832
  "patch",
22832
22833
  "audit",
22833
- "review"
22834
+ "review",
22835
+ "cve"
22834
22836
  ],
22835
22837
  guidelines: [
22836
22838
  "Write tests FIRST to capture expected behavior",
@@ -45524,6 +45526,7 @@ __export(exports_swarm_insights, {
45524
45526
  getFileInsights: () => getFileInsights,
45525
45527
  getFileGotchas: () => getFileGotchas,
45526
45528
  getFileFailureHistory: () => getFileFailureHistory,
45529
+ getCompactionAnalytics: () => getCompactionAnalytics,
45527
45530
  getCachedInsights: () => getCachedInsights,
45528
45531
  formatInsightsForPrompt: () => formatInsightsForPrompt,
45529
45532
  formatFileHistoryWarnings: () => formatFileHistoryWarnings,
@@ -45918,6 +45921,90 @@ async function getViolationAnalytics(swarmMail, projectKey) {
45918
45921
  violationRate
45919
45922
  };
45920
45923
  }
45924
+ async function getCompactionAnalytics(swarmMail) {
45925
+ const db = await swarmMail.getDatabase();
45926
+ const query = `
45927
+ SELECT data, timestamp
45928
+ FROM events
45929
+ WHERE type = 'coordinator_compaction'
45930
+ ORDER BY timestamp DESC
45931
+ `;
45932
+ const result = await db.query(query, []);
45933
+ if (!result.rows || result.rows.length === 0) {
45934
+ return {
45935
+ totalEvents: 0,
45936
+ byType: {
45937
+ prompt_generated: 0,
45938
+ detection_complete: 0,
45939
+ context_injected: 0,
45940
+ resumption_started: 0,
45941
+ tool_call_tracked: 0
45942
+ },
45943
+ avgPromptSize: 0,
45944
+ successRate: 0,
45945
+ recentPrompts: [],
45946
+ byConfidence: { high: 0, medium: 0, low: 0 }
45947
+ };
45948
+ }
45949
+ const byType = {};
45950
+ const byConfidence = { high: 0, medium: 0, low: 0 };
45951
+ const promptSizes = [];
45952
+ const recentPrompts = [];
45953
+ let totalEvents = 0;
45954
+ let successfulCompactions = 0;
45955
+ for (const row of result.rows) {
45956
+ try {
45957
+ const data = JSON.parse(row.data);
45958
+ if (data.event_type === "COMPACTION") {
45959
+ totalEvents++;
45960
+ const compactionType = data.compaction_type || "unknown";
45961
+ byType[compactionType] = (byType[compactionType] || 0) + 1;
45962
+ if (data.payload?.confidence) {
45963
+ const conf = data.payload.confidence.toLowerCase();
45964
+ if (conf in byConfidence) {
45965
+ byConfidence[conf]++;
45966
+ }
45967
+ }
45968
+ if (compactionType === "prompt_generated") {
45969
+ successfulCompactions++;
45970
+ if (data.payload?.prompt_length) {
45971
+ promptSizes.push(data.payload.prompt_length);
45972
+ }
45973
+ if (recentPrompts.length < 10) {
45974
+ const preview = {
45975
+ timestamp: new Date(row.timestamp).toISOString(),
45976
+ length: data.payload?.prompt_length || 0,
45977
+ confidence: data.payload?.confidence
45978
+ };
45979
+ if (data.payload?.full_prompt) {
45980
+ preview.preview = truncateText(data.payload.full_prompt, 200);
45981
+ }
45982
+ recentPrompts.push(preview);
45983
+ }
45984
+ }
45985
+ }
45986
+ } catch (e) {
45987
+ continue;
45988
+ }
45989
+ }
45990
+ const avgPromptSize = promptSizes.length > 0 ? promptSizes.reduce((sum2, size10) => sum2 + size10, 0) / promptSizes.length : 0;
45991
+ const successRate = totalEvents > 0 ? successfulCompactions / totalEvents * 100 : 0;
45992
+ return {
45993
+ totalEvents,
45994
+ byType: {
45995
+ prompt_generated: byType.prompt_generated || 0,
45996
+ detection_complete: byType.detection_complete || 0,
45997
+ context_injected: byType.context_injected || 0,
45998
+ resumption_started: byType.resumption_started || 0,
45999
+ tool_call_tracked: byType.tool_call_tracked || 0,
46000
+ ...byType
46001
+ },
46002
+ avgPromptSize: Math.round(avgPromptSize),
46003
+ successRate: Math.round(successRate * 100) / 100,
46004
+ recentPrompts,
46005
+ byConfidence
46006
+ };
46007
+ }
45921
46008
  function formatFileHistoryWarnings(histories) {
45922
46009
  if (histories.length === 0) {
45923
46010
  return "";
@@ -70262,11 +70349,11 @@ async function detectSwarm(getHiveAdapterFn, checkSwarmHealthFn, getHiveWorkingD
70262
70349
  }, "captured epic state for context");
70263
70350
  }
70264
70351
  }
70265
- const oneHourAgo = Date.now() - 60 * 60 * 1000;
70266
- const recentCells = cells.filter((c) => c.updated_at > oneHourAgo);
70352
+ const thirtyMinutesAgo = Date.now() - 30 * 60 * 1000;
70353
+ const recentCells = cells.filter((c) => c.updated_at > thirtyMinutesAgo);
70267
70354
  if (recentCells.length > 0) {
70268
70355
  mediumConfidence = true;
70269
- reasons.push(`${recentCells.length} cells updated in last hour`);
70356
+ reasons.push(`${recentCells.length} cells updated in last 30 minutes`);
70270
70357
  }
70271
70358
  if (cells.length > 0) {
70272
70359
  lowConfidence = true;
@@ -70354,6 +70441,16 @@ function createCompactionHook(options2) {
70354
70441
  recordPhaseStart(metrics, "DETECT" /* DETECT */);
70355
70442
  const detection = await detectSwarm(customGetHiveAdapter || getHiveAdapter, customCheckSwarmHealth || checkSwarmHealth3, customGetHiveWorkingDirectory || getHiveWorkingDirectory, log3);
70356
70443
  let effectiveConfidence = detection.confidence;
70444
+ if (scannedState.agentName && effectiveConfidence === "none") {
70445
+ effectiveConfidence = "medium";
70446
+ detection.reasons.push("coordinator initialized (swarmmail_init)");
70447
+ recordPatternExtracted(metrics, "coordinator_init", "swarmmail_init detected");
70448
+ }
70449
+ if (scannedState.epicId && effectiveConfidence === "none") {
70450
+ effectiveConfidence = "medium";
70451
+ detection.reasons.push("epic created (hive_create_epic)");
70452
+ recordPatternExtracted(metrics, "epic_created", "hive_create_epic detected");
70453
+ }
70357
70454
  if (scannedState.epicId || scannedState.subtasks.size > 0) {
70358
70455
  if (effectiveConfidence === "none" || effectiveConfidence === "low") {
70359
70456
  effectiveConfidence = "medium";
@@ -70466,6 +70563,32 @@ function createCompactionHook(options2) {
70466
70563
  recordPhaseStart(metrics, "COMPLETE" /* COMPLETE */);
70467
70564
  const duration3 = Date.now() - startTime;
70468
70565
  const summary5 = getMetricsSummary(metrics);
70566
+ const openSubtasksCount = detection.state?.subtasks.open || 0;
70567
+ const activeReservationsCount = detection.reasons.find((r) => r.includes("active file reservations")) ? parseInt(detection.reasons.find((r) => r.includes("active file reservations"))?.match(/\d+/)?.[0] || "0") : 0;
70568
+ const registeredAgentsCount = detection.reasons.find((r) => r.includes("registered agents")) ? parseInt(detection.reasons.find((r) => r.includes("registered agents"))?.match(/\d+/)?.[0] || "0") : 0;
70569
+ const compactionSignals = [];
70570
+ let compactionRecommended = false;
70571
+ if (openSubtasksCount >= 3) {
70572
+ compactionSignals.push(`${openSubtasksCount} open subtasks`);
70573
+ compactionRecommended = true;
70574
+ }
70575
+ if (activeReservationsCount >= 2) {
70576
+ compactionSignals.push(`${activeReservationsCount} active reservations`);
70577
+ compactionRecommended = true;
70578
+ }
70579
+ if (registeredAgentsCount >= 2) {
70580
+ compactionSignals.push(`${registeredAgentsCount} registered agents`);
70581
+ compactionRecommended = true;
70582
+ }
70583
+ if (compactionRecommended) {
70584
+ log3.info({
70585
+ compaction_recommended: true,
70586
+ reasons: compactionSignals,
70587
+ open_subtasks: openSubtasksCount,
70588
+ active_reservations: activeReservationsCount,
70589
+ registered_agents: registeredAgentsCount
70590
+ }, "compaction recommended");
70591
+ }
70469
70592
  log3.info({
70470
70593
  duration_ms: duration3,
70471
70594
  success: true,
@@ -70480,7 +70603,8 @@ function createCompactionHook(options2) {
70480
70603
  })),
70481
70604
  patterns_extracted: summary5.patterns_extracted,
70482
70605
  patterns_skipped: summary5.patterns_skipped,
70483
- extraction_success_rate: summary5.extraction_success_rate
70606
+ extraction_success_rate: summary5.extraction_success_rate,
70607
+ compaction_signals: compactionSignals
70484
70608
  }
70485
70609
  }, "compaction complete");
70486
70610
  recordPhaseComplete(metrics, "COMPLETE" /* COMPLETE */);
@@ -310,6 +310,60 @@ export declare function trackCoordinatorViolation(swarmMail: SwarmMailAdapter, v
310
310
  * ```
311
311
  */
312
312
  export declare function getViolationAnalytics(swarmMail: SwarmMailAdapter, projectKey?: string): Promise<ViolationAnalytics>;
313
+ export interface CompactionPromptPreview {
314
+ timestamp: string;
315
+ length: number;
316
+ preview?: string;
317
+ confidence?: string;
318
+ }
319
+ export interface CompactionAnalytics {
320
+ totalEvents: number;
321
+ byType: {
322
+ prompt_generated: number;
323
+ detection_complete: number;
324
+ context_injected: number;
325
+ resumption_started: number;
326
+ tool_call_tracked: number;
327
+ [key: string]: number;
328
+ };
329
+ avgPromptSize: number;
330
+ successRate: number;
331
+ recentPrompts: CompactionPromptPreview[];
332
+ byConfidence: {
333
+ high: number;
334
+ medium: number;
335
+ low: number;
336
+ };
337
+ }
338
+ /**
339
+ * Get analytics for coordinator compaction events.
340
+ *
341
+ * Queries coordinator_compaction events to calculate:
342
+ * - Total compaction attempts by type (prompt_generated vs detection_failed)
343
+ * - Average prompt size for successful compactions
344
+ * - Success/failure rate
345
+ * - Recent prompts with preview (truncated to 200 chars)
346
+ * - Confidence distribution
347
+ *
348
+ * @param swarmMail - SwarmMail adapter for database access
349
+ * @returns Promise resolving to compaction analytics
350
+ *
351
+ * @example
352
+ * ```typescript
353
+ * const analytics = await getCompactionAnalytics(swarmMail);
354
+ * // Returns: {
355
+ * // totalEvents: 83,
356
+ * // byType: { prompt_generated: 72, detection_failed: 11 },
357
+ * // avgPromptSize: 4800,
358
+ * // successRate: 86.7,
359
+ * // recentPrompts: [
360
+ * // { timestamp: "2025-12-25T10:00:00Z", length: 5200, preview: "Epic bd-123...", confidence: "high" }
361
+ * // ],
362
+ * // byConfidence: { high: 60, medium: 12, low: 11 }
363
+ * // }
364
+ * ```
365
+ */
366
+ export declare function getCompactionAnalytics(swarmMail: SwarmMailAdapter): Promise<CompactionAnalytics>;
313
367
  /**
314
368
  * Format file failure history as warnings for worker prompts.
315
369
  *
@@ -1 +1 @@
1
- {"version":3,"file":"swarm-insights.d.ts","sourceRoot":"","sources":["../src/swarm-insights.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swarm-insights.d.ts","sourceRoot":"","sources":["../src/swarm-insights.ts"],"names":[],"mappings":"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"}
@@ -35862,6 +35862,7 @@ __export(exports_swarm_insights, {
35862
35862
  getFileInsights: () => getFileInsights,
35863
35863
  getFileGotchas: () => getFileGotchas,
35864
35864
  getFileFailureHistory: () => getFileFailureHistory,
35865
+ getCompactionAnalytics: () => getCompactionAnalytics,
35865
35866
  getCachedInsights: () => getCachedInsights,
35866
35867
  formatInsightsForPrompt: () => formatInsightsForPrompt,
35867
35868
  formatFileHistoryWarnings: () => formatFileHistoryWarnings,
@@ -36256,6 +36257,90 @@ async function getViolationAnalytics(swarmMail, projectKey) {
36256
36257
  violationRate
36257
36258
  };
36258
36259
  }
36260
+ async function getCompactionAnalytics(swarmMail) {
36261
+ const db = await swarmMail.getDatabase();
36262
+ const query = `
36263
+ SELECT data, timestamp
36264
+ FROM events
36265
+ WHERE type = 'coordinator_compaction'
36266
+ ORDER BY timestamp DESC
36267
+ `;
36268
+ const result = await db.query(query, []);
36269
+ if (!result.rows || result.rows.length === 0) {
36270
+ return {
36271
+ totalEvents: 0,
36272
+ byType: {
36273
+ prompt_generated: 0,
36274
+ detection_complete: 0,
36275
+ context_injected: 0,
36276
+ resumption_started: 0,
36277
+ tool_call_tracked: 0
36278
+ },
36279
+ avgPromptSize: 0,
36280
+ successRate: 0,
36281
+ recentPrompts: [],
36282
+ byConfidence: { high: 0, medium: 0, low: 0 }
36283
+ };
36284
+ }
36285
+ const byType = {};
36286
+ const byConfidence = { high: 0, medium: 0, low: 0 };
36287
+ const promptSizes = [];
36288
+ const recentPrompts = [];
36289
+ let totalEvents = 0;
36290
+ let successfulCompactions = 0;
36291
+ for (const row of result.rows) {
36292
+ try {
36293
+ const data = JSON.parse(row.data);
36294
+ if (data.event_type === "COMPACTION") {
36295
+ totalEvents++;
36296
+ const compactionType = data.compaction_type || "unknown";
36297
+ byType[compactionType] = (byType[compactionType] || 0) + 1;
36298
+ if (data.payload?.confidence) {
36299
+ const conf = data.payload.confidence.toLowerCase();
36300
+ if (conf in byConfidence) {
36301
+ byConfidence[conf]++;
36302
+ }
36303
+ }
36304
+ if (compactionType === "prompt_generated") {
36305
+ successfulCompactions++;
36306
+ if (data.payload?.prompt_length) {
36307
+ promptSizes.push(data.payload.prompt_length);
36308
+ }
36309
+ if (recentPrompts.length < 10) {
36310
+ const preview = {
36311
+ timestamp: new Date(row.timestamp).toISOString(),
36312
+ length: data.payload?.prompt_length || 0,
36313
+ confidence: data.payload?.confidence
36314
+ };
36315
+ if (data.payload?.full_prompt) {
36316
+ preview.preview = truncateText(data.payload.full_prompt, 200);
36317
+ }
36318
+ recentPrompts.push(preview);
36319
+ }
36320
+ }
36321
+ }
36322
+ } catch (e) {
36323
+ continue;
36324
+ }
36325
+ }
36326
+ const avgPromptSize = promptSizes.length > 0 ? promptSizes.reduce((sum2, size10) => sum2 + size10, 0) / promptSizes.length : 0;
36327
+ const successRate = totalEvents > 0 ? successfulCompactions / totalEvents * 100 : 0;
36328
+ return {
36329
+ totalEvents,
36330
+ byType: {
36331
+ prompt_generated: byType.prompt_generated || 0,
36332
+ detection_complete: byType.detection_complete || 0,
36333
+ context_injected: byType.context_injected || 0,
36334
+ resumption_started: byType.resumption_started || 0,
36335
+ tool_call_tracked: byType.tool_call_tracked || 0,
36336
+ ...byType
36337
+ },
36338
+ avgPromptSize: Math.round(avgPromptSize),
36339
+ successRate: Math.round(successRate * 100) / 100,
36340
+ recentPrompts,
36341
+ byConfidence
36342
+ };
36343
+ }
36259
36344
  function formatFileHistoryWarnings(histories) {
36260
36345
  if (histories.length === 0) {
36261
36346
  return "";
@@ -36490,7 +36575,8 @@ var init_swarm_strategies = __esm(() => {
36490
36575
  "remove",
36491
36576
  "cleanup",
36492
36577
  "lint",
36493
- "format"
36578
+ "format",
36579
+ "move"
36494
36580
  ],
36495
36581
  guidelines: [
36496
36582
  "Group files by directory or type (e.g., all components, all tests)",
@@ -36556,7 +36642,8 @@ var init_swarm_strategies = __esm(() => {
36556
36642
  "hotfix",
36557
36643
  "patch",
36558
36644
  "audit",
36559
- "review"
36645
+ "review",
36646
+ "cve"
36560
36647
  ],
36561
36648
  guidelines: [
36562
36649
  "Write tests FIRST to capture expected behavior",
@@ -1 +1 @@
1
- {"version":3,"file":"swarm-strategies.d.ts","sourceRoot":"","sources":["../src/swarm-strategies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,MAAM,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAQ5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAC7B,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EACtC,kBAAkB,CAgKnB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACjD,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,SAAS,CAAC,EAAE;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH,CAAC,CAwKD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAC/C,MAAM,CAmBR;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CA0ChC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAEzB,CAAC"}
1
+ {"version":3,"file":"swarm-strategies.d.ts","sourceRoot":"","sources":["../src/swarm-strategies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,MAAM,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAO5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAQ5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAC7B,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EACtC,kBAAkB,CAkKnB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACjD,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,SAAS,CAAC,EAAE;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACH,CAAC,CAwKD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAC/C,MAAM,CAmBR;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CA0ChC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAEzB,CAAC"}