mcp-rubber-duck 1.10.0 → 1.11.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.
Files changed (61) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +8 -0
  3. package/dist/providers/enhanced-manager.d.ts +7 -0
  4. package/dist/providers/enhanced-manager.d.ts.map +1 -1
  5. package/dist/providers/enhanced-manager.js +36 -0
  6. package/dist/providers/enhanced-manager.js.map +1 -1
  7. package/dist/providers/manager.d.ts +1 -0
  8. package/dist/providers/manager.d.ts.map +1 -1
  9. package/dist/providers/manager.js +33 -0
  10. package/dist/providers/manager.js.map +1 -1
  11. package/dist/server.d.ts +1 -0
  12. package/dist/server.d.ts.map +1 -1
  13. package/dist/server.js +93 -33
  14. package/dist/server.js.map +1 -1
  15. package/dist/services/progress.d.ts +27 -0
  16. package/dist/services/progress.d.ts.map +1 -0
  17. package/dist/services/progress.js +50 -0
  18. package/dist/services/progress.js.map +1 -0
  19. package/dist/services/task-manager.d.ts +56 -0
  20. package/dist/services/task-manager.d.ts.map +1 -0
  21. package/dist/services/task-manager.js +134 -0
  22. package/dist/services/task-manager.js.map +1 -0
  23. package/dist/tools/compare-ducks.d.ts +2 -1
  24. package/dist/tools/compare-ducks.d.ts.map +1 -1
  25. package/dist/tools/compare-ducks.js +7 -3
  26. package/dist/tools/compare-ducks.js.map +1 -1
  27. package/dist/tools/duck-council.d.ts +2 -1
  28. package/dist/tools/duck-council.d.ts.map +1 -1
  29. package/dist/tools/duck-council.js +7 -3
  30. package/dist/tools/duck-council.js.map +1 -1
  31. package/dist/tools/duck-debate.d.ts +2 -1
  32. package/dist/tools/duck-debate.d.ts.map +1 -1
  33. package/dist/tools/duck-debate.js +19 -1
  34. package/dist/tools/duck-debate.js.map +1 -1
  35. package/dist/tools/duck-iterate.d.ts +2 -1
  36. package/dist/tools/duck-iterate.d.ts.map +1 -1
  37. package/dist/tools/duck-iterate.js +13 -1
  38. package/dist/tools/duck-iterate.js.map +1 -1
  39. package/dist/tools/duck-vote.d.ts +2 -1
  40. package/dist/tools/duck-vote.d.ts.map +1 -1
  41. package/dist/tools/duck-vote.js +7 -3
  42. package/dist/tools/duck-vote.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/providers/enhanced-manager.ts +49 -0
  45. package/src/providers/manager.ts +45 -0
  46. package/src/server.ts +110 -32
  47. package/src/services/progress.ts +59 -0
  48. package/src/services/task-manager.ts +162 -0
  49. package/src/tools/compare-ducks.ts +14 -3
  50. package/src/tools/duck-council.ts +15 -4
  51. package/src/tools/duck-debate.ts +31 -1
  52. package/src/tools/duck-iterate.ts +20 -1
  53. package/src/tools/duck-vote.ts +14 -3
  54. package/tests/duck-debate.test.ts +80 -0
  55. package/tests/duck-iterate.test.ts +81 -0
  56. package/tests/duck-vote.test.ts +70 -0
  57. package/tests/providers.test.ts +121 -0
  58. package/tests/services/progress.test.ts +137 -0
  59. package/tests/services/task-manager.test.ts +344 -0
  60. package/tests/tools/compare-ducks.test.ts +19 -0
  61. package/tests/tools/duck-council.test.ts +19 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Progress notification service for MCP tools.
3
+ *
4
+ * Provides a lightweight abstraction over MCP's stable `notifications/progress`
5
+ * mechanism. Tool functions accept an optional `ProgressReporter` to emit
6
+ * per-step progress without depending on the full `RequestHandlerExtra` type.
7
+ */
8
+ export interface ProgressReporter {
9
+ /** Report that step `current` of `total` is done, with an optional status message. */
10
+ report(current: number, total: number, message?: string): Promise<void>;
11
+ /** Whether the client actually requested progress (sent a progressToken). */
12
+ readonly enabled: boolean;
13
+ }
14
+ /**
15
+ * Creates a `ProgressReporter` from an MCP tool handler's `extra` parameter.
16
+ *
17
+ * If the client did not include a `progressToken` in `_meta`, the returned
18
+ * reporter is a no-op (`.enabled === false`), so callers can always call
19
+ * `progress.report()` unconditionally.
20
+ *
21
+ * @param progressToken Value of `extra._meta?.progressToken`
22
+ * @param sendNotification Value of `extra.sendNotification` — typed loosely to
23
+ * avoid coupling to SDK's strict discriminated union. At runtime the SDK
24
+ * accepts any valid JSON-RPC notification including `notifications/progress`.
25
+ */
26
+ export declare function createProgressReporter(progressToken: string | number | undefined, sendNotification: (notification: any) => Promise<void>): ProgressReporter;
27
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/services/progress.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAE1C,gBAAgB,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GACrD,gBAAgB,CA2BlB"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Progress notification service for MCP tools.
3
+ *
4
+ * Provides a lightweight abstraction over MCP's stable `notifications/progress`
5
+ * mechanism. Tool functions accept an optional `ProgressReporter` to emit
6
+ * per-step progress without depending on the full `RequestHandlerExtra` type.
7
+ */
8
+ /**
9
+ * Creates a `ProgressReporter` from an MCP tool handler's `extra` parameter.
10
+ *
11
+ * If the client did not include a `progressToken` in `_meta`, the returned
12
+ * reporter is a no-op (`.enabled === false`), so callers can always call
13
+ * `progress.report()` unconditionally.
14
+ *
15
+ * @param progressToken Value of `extra._meta?.progressToken`
16
+ * @param sendNotification Value of `extra.sendNotification` — typed loosely to
17
+ * avoid coupling to SDK's strict discriminated union. At runtime the SDK
18
+ * accepts any valid JSON-RPC notification including `notifications/progress`.
19
+ */
20
+ export function createProgressReporter(progressToken,
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ sendNotification) {
23
+ if (progressToken === undefined) {
24
+ return {
25
+ enabled: false,
26
+ report: async () => { },
27
+ };
28
+ }
29
+ return {
30
+ enabled: true,
31
+ report: async (current, total, message) => {
32
+ try {
33
+ await sendNotification({
34
+ method: 'notifications/progress',
35
+ params: {
36
+ progressToken,
37
+ progress: current,
38
+ total,
39
+ ...(message !== undefined ? { message } : {}),
40
+ },
41
+ });
42
+ }
43
+ catch {
44
+ // Swallow notification errors (e.g., client disconnected).
45
+ // Progress is best-effort — tool execution should continue regardless.
46
+ }
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/services/progress.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAA0C;AAC1C,8DAA8D;AAC9D,gBAAsD;IAEtD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,KAAK,EAAE,OAAe,EAAE,KAAa,EAAE,OAAgB,EAAE,EAAE;YACjE,IAAI,CAAC;gBACH,MAAM,gBAAgB,CAAC;oBACrB,MAAM,EAAE,wBAAwB;oBAChC,MAAM,EAAE;wBACN,aAAa;wBACb,QAAQ,EAAE,OAAO;wBACjB,KAAK;wBACL,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9C;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,2DAA2D;gBAC3D,uEAAuE;YACzE,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Task lifecycle adapter wrapping the MCP SDK's experimental Tasks API.
3
+ *
4
+ * This module isolates all direct usage of `@modelcontextprotocol/sdk/experimental`
5
+ * behind a single adapter class so that future breaking changes in the experimental
6
+ * API only require updates here.
7
+ */
8
+ import type { TaskStore, TaskMessageQueue } from '@modelcontextprotocol/sdk/experimental';
9
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
10
+ export interface TaskManagerConfig {
11
+ /** Time-to-live for completed task results (milliseconds). */
12
+ defaultTtl: number;
13
+ /** Suggested interval between client polls (milliseconds). */
14
+ pollInterval: number;
15
+ /** Maximum messages per task queue (prevents unbounded growth). */
16
+ maxQueueSize: number;
17
+ /** Interval for cleanup/monitoring sweep (milliseconds). */
18
+ cleanupInterval: number;
19
+ }
20
+ /**
21
+ * Manages MCP task lifecycle: creation, background execution, cancellation, and cleanup.
22
+ *
23
+ * - Provides `InMemoryTaskStore` and `InMemoryTaskMessageQueue` instances for
24
+ * `McpServer`'s `ProtocolOptions`.
25
+ * - Tracks active background work via `AbortController` per task for cancellation.
26
+ * - Handles graceful shutdown (cancels active tasks, clears timers).
27
+ */
28
+ export declare class TaskManager {
29
+ readonly taskStore: TaskStore;
30
+ readonly taskMessageQueue: TaskMessageQueue;
31
+ readonly config: TaskManagerConfig;
32
+ /** Maps taskId → AbortController for active background work. */
33
+ private activeControllers;
34
+ private cleanupTimer?;
35
+ constructor(config?: Partial<TaskManagerConfig>);
36
+ /**
37
+ * Start background work for a task.
38
+ *
39
+ * This is fire-and-forget: the returned promise resolves immediately.
40
+ * The `work` function runs asynchronously; its result is stored in the
41
+ * task store on completion. On error the task is marked `failed`.
42
+ * On abort (cancellation) the task is marked `cancelled`.
43
+ *
44
+ * @param taskId ID of the task (from `taskStore.createTask`)
45
+ * @param work Async function receiving an `AbortSignal` and returning a `CallToolResult`
46
+ */
47
+ startBackground(taskId: string, work: (signal: AbortSignal) => Promise<CallToolResult>): void;
48
+ /** Cancel a running task by aborting its AbortController. */
49
+ cancel(taskId: string): boolean;
50
+ /** Number of currently active background tasks. */
51
+ get activeCount(): number;
52
+ private startCleanup;
53
+ /** Graceful shutdown: cancel all active tasks and clear timers. */
54
+ shutdown(): void;
55
+ }
56
+ //# sourceMappingURL=task-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/services/task-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EACjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,oCAAoC,CAAC;AAGjF,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAC;CACzB;AASD;;;;;;;GAOG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC,gEAAgE;IAChE,OAAO,CAAC,iBAAiB,CAA2C;IACpE,OAAO,CAAC,YAAY,CAAC,CAAiC;gBAE1C,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAO/C;;;;;;;;;;OAUG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,cAAc,CAAC,GACrD,IAAI;IA6CP,6DAA6D;IAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAS/B,mDAAmD;IACnD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,YAAY;IAUpB,mEAAmE;IACnE,QAAQ,IAAI,IAAI;CAejB"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Task lifecycle adapter wrapping the MCP SDK's experimental Tasks API.
3
+ *
4
+ * This module isolates all direct usage of `@modelcontextprotocol/sdk/experimental`
5
+ * behind a single adapter class so that future breaking changes in the experimental
6
+ * API only require updates here.
7
+ */
8
+ import { InMemoryTaskStore, InMemoryTaskMessageQueue, } from '@modelcontextprotocol/sdk/experimental';
9
+ import { logger } from '../utils/logger.js';
10
+ const DEFAULT_CONFIG = {
11
+ defaultTtl: 300_000, // 5 minutes
12
+ pollInterval: 2_000, // 2 seconds
13
+ maxQueueSize: 100,
14
+ cleanupInterval: 60_000, // 1 minute
15
+ };
16
+ /**
17
+ * Manages MCP task lifecycle: creation, background execution, cancellation, and cleanup.
18
+ *
19
+ * - Provides `InMemoryTaskStore` and `InMemoryTaskMessageQueue` instances for
20
+ * `McpServer`'s `ProtocolOptions`.
21
+ * - Tracks active background work via `AbortController` per task for cancellation.
22
+ * - Handles graceful shutdown (cancels active tasks, clears timers).
23
+ */
24
+ export class TaskManager {
25
+ taskStore;
26
+ taskMessageQueue;
27
+ config;
28
+ /** Maps taskId → AbortController for active background work. */
29
+ activeControllers = new Map();
30
+ cleanupTimer;
31
+ constructor(config) {
32
+ this.config = { ...DEFAULT_CONFIG, ...config };
33
+ this.taskStore = new InMemoryTaskStore();
34
+ this.taskMessageQueue = new InMemoryTaskMessageQueue();
35
+ this.startCleanup();
36
+ }
37
+ /**
38
+ * Start background work for a task.
39
+ *
40
+ * This is fire-and-forget: the returned promise resolves immediately.
41
+ * The `work` function runs asynchronously; its result is stored in the
42
+ * task store on completion. On error the task is marked `failed`.
43
+ * On abort (cancellation) the task is marked `cancelled`.
44
+ *
45
+ * @param taskId ID of the task (from `taskStore.createTask`)
46
+ * @param work Async function receiving an `AbortSignal` and returning a `CallToolResult`
47
+ */
48
+ startBackground(taskId, work) {
49
+ const controller = new AbortController();
50
+ this.activeControllers.set(taskId, controller);
51
+ void (async () => {
52
+ try {
53
+ await this.taskStore.updateTaskStatus(taskId, 'working');
54
+ const result = await work(controller.signal);
55
+ if (!controller.signal.aborted) {
56
+ await this.taskStore.storeTaskResult(taskId, 'completed', result);
57
+ }
58
+ else {
59
+ // Work completed but cancellation was requested mid-execution.
60
+ // Mark as cancelled so the task doesn't stay stuck in 'working'.
61
+ try {
62
+ await this.taskStore.updateTaskStatus(taskId, 'cancelled', 'Task was cancelled');
63
+ }
64
+ catch {
65
+ // Task may already be in a terminal state
66
+ }
67
+ }
68
+ }
69
+ catch (error) {
70
+ if (controller.signal.aborted) {
71
+ try {
72
+ await this.taskStore.updateTaskStatus(taskId, 'cancelled', 'Task was cancelled');
73
+ }
74
+ catch {
75
+ // Task may already be in a terminal state
76
+ }
77
+ }
78
+ else {
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ logger.error(`Task ${taskId} failed:`, message);
81
+ try {
82
+ await this.taskStore.storeTaskResult(taskId, 'failed', {
83
+ content: [{ type: 'text', text: `Error: ${message}` }],
84
+ isError: true,
85
+ });
86
+ }
87
+ catch {
88
+ // Task store may have already cleaned up (TTL)
89
+ }
90
+ }
91
+ }
92
+ finally {
93
+ this.activeControllers.delete(taskId);
94
+ }
95
+ })();
96
+ }
97
+ /** Cancel a running task by aborting its AbortController. */
98
+ cancel(taskId) {
99
+ const controller = this.activeControllers.get(taskId);
100
+ if (controller) {
101
+ controller.abort();
102
+ return true;
103
+ }
104
+ return false;
105
+ }
106
+ /** Number of currently active background tasks. */
107
+ get activeCount() {
108
+ return this.activeControllers.size;
109
+ }
110
+ startCleanup() {
111
+ this.cleanupTimer = setInterval(() => {
112
+ logger.debug(`Active background tasks: ${this.activeControllers.size}`);
113
+ }, this.config.cleanupInterval);
114
+ // Allow the process to exit even if the timer is still running
115
+ if (this.cleanupTimer && typeof this.cleanupTimer === 'object' && 'unref' in this.cleanupTimer) {
116
+ this.cleanupTimer.unref();
117
+ }
118
+ }
119
+ /** Graceful shutdown: cancel all active tasks and clear timers. */
120
+ shutdown() {
121
+ if (this.cleanupTimer) {
122
+ clearInterval(this.cleanupTimer);
123
+ this.cleanupTimer = undefined;
124
+ }
125
+ for (const [taskId, controller] of this.activeControllers) {
126
+ logger.info(`Cancelling active task ${taskId} during shutdown`);
127
+ controller.abort();
128
+ }
129
+ this.activeControllers.clear();
130
+ // Clear InMemoryTaskStore internal TTL timers
131
+ this.taskStore.cleanup();
132
+ }
133
+ }
134
+ //# sourceMappingURL=task-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/services/task-manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ProviderManager } from '../providers/manager.js';
2
- export declare function compareDucksTool(providerManager: ProviderManager, args: Record<string, unknown>): Promise<{
2
+ import type { ProgressReporter } from '../services/progress.js';
3
+ export declare function compareDucksTool(providerManager: ProviderManager, args: Record<string, unknown>, progress?: ProgressReporter): Promise<{
3
4
  content: {
4
5
  type: string;
5
6
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"compare-ducks.d.ts","sourceRoot":"","sources":["../../src/tools/compare-ducks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GA+E9B"}
1
+ {"version":3,"file":"compare-ducks.d.ts","sourceRoot":"","sources":["../../src/tools/compare-ducks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,CAAC,EAAE,gBAAgB;;;;;GAwF5B"}
@@ -1,12 +1,16 @@
1
1
  import { duckArt } from '../utils/ascii-art.js';
2
2
  import { logger } from '../utils/logger.js';
3
- export async function compareDucksTool(providerManager, args) {
3
+ export async function compareDucksTool(providerManager, args, progress) {
4
4
  const { prompt, providers, model } = args;
5
5
  if (!prompt) {
6
6
  throw new Error('Prompt is required');
7
7
  }
8
- // Get responses from multiple ducks
9
- const responses = await providerManager.compareDucks(prompt, providers, { model });
8
+ // Get responses from multiple ducks, reporting progress as each completes
9
+ const responses = progress
10
+ ? await providerManager.compareDucksWithProgress(prompt, providers, { model }, (providerName, completed, total) => {
11
+ void progress.report(completed, total, `${providerName} responded (${completed}/${total})`);
12
+ })
13
+ : await providerManager.compareDucks(prompt, providers, { model });
10
14
  // Build comparison response
11
15
  let response = `${duckArt.panel}\n`;
12
16
  response += `Asked: "${prompt}"\n\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"compare-ducks.js","sourceRoot":"","sources":["../../src/tools/compare-ducks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-ducks.js","sourceRoot":"","sources":["../../src/tools/compare-ducks.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ProviderManager } from '../providers/manager.js';
2
- export declare function duckCouncilTool(providerManager: ProviderManager, args: Record<string, unknown>): Promise<{
2
+ import type { ProgressReporter } from '../services/progress.js';
3
+ export declare function duckCouncilTool(providerManager: ProviderManager, args: Record<string, unknown>, progress?: ProgressReporter): Promise<{
3
4
  content: {
4
5
  type: string;
5
6
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"duck-council.d.ts","sourceRoot":"","sources":["../../src/tools/duck-council.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,wBAAsB,eAAe,CACnC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAiF9B"}
1
+ {"version":3,"file":"duck-council.d.ts","sourceRoot":"","sources":["../../src/tools/duck-council.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wBAAsB,eAAe,CACnC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,CAAC,EAAE,gBAAgB;;;;;GA0F5B"}
@@ -1,6 +1,6 @@
1
1
  import { duckArt, getRandomDuckMessage } from '../utils/ascii-art.js';
2
2
  import { logger } from '../utils/logger.js';
3
- export async function duckCouncilTool(providerManager, args) {
3
+ export async function duckCouncilTool(providerManager, args, progress) {
4
4
  const { prompt, model } = args;
5
5
  if (!prompt) {
6
6
  throw new Error('Prompt is required for the duck council');
@@ -11,8 +11,12 @@ export async function duckCouncilTool(providerManager, args) {
11
11
  if (allProviders.length === 0) {
12
12
  throw new Error('No ducks available for the council!');
13
13
  }
14
- // Get responses from all ducks
15
- const responses = await providerManager.duckCouncil(prompt, { model });
14
+ // Get responses from all ducks, reporting progress as each completes
15
+ const responses = progress
16
+ ? await providerManager.compareDucksWithProgress(prompt, undefined, { model }, (providerName, completed, total) => {
17
+ void progress.report(completed, total, `${providerName} responded (${completed}/${total})`);
18
+ })
19
+ : await providerManager.duckCouncil(prompt, { model });
16
20
  // Build council response with a panel discussion format
17
21
  let response = `${duckArt.panel}\n\n`;
18
22
  response += `🎙️ **Duck Council Topic:** "${prompt}"\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"duck-council.js","sourceRoot":"","sources":["../../src/tools/duck-council.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duck-council.js","sourceRoot":"","sources":["../../src/tools/duck-council.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { ProviderManager } from '../providers/manager.js';
2
2
  import { DebateFormat } from '../config/types.js';
3
+ import type { ProgressReporter } from '../services/progress.js';
3
4
  export interface DuckDebateArgs {
4
5
  prompt: string;
5
6
  rounds?: number;
@@ -7,7 +8,7 @@ export interface DuckDebateArgs {
7
8
  format: DebateFormat;
8
9
  synthesizer?: string;
9
10
  }
10
- export declare function duckDebateTool(providerManager: ProviderManager, args: Record<string, unknown>): Promise<{
11
+ export declare function duckDebateTool(providerManager: ProviderManager, args: Record<string, unknown>, progress?: ProgressReporter, signal?: AbortSignal): Promise<{
11
12
  content: {
12
13
  type: string;
13
14
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"duck-debate.d.ts","sourceRoot":"","sources":["../../src/tools/duck-debate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,YAAY,EAKb,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAsB,cAAc,CAClC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GA2I9B"}
1
+ {"version":3,"file":"duck-debate.d.ts","sourceRoot":"","sources":["../../src/tools/duck-debate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,YAAY,EAKb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAsB,cAAc,CAClC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,WAAW;;;;;GAsKrB"}
@@ -1,6 +1,6 @@
1
1
  import { logger } from '../utils/logger.js';
2
2
  const DEFAULT_ROUNDS = 3;
3
- export async function duckDebateTool(providerManager, args) {
3
+ export async function duckDebateTool(providerManager, args, progress, signal) {
4
4
  const { prompt, rounds = DEFAULT_ROUNDS, providers, format, synthesizer, } = args;
5
5
  // Validate inputs
6
6
  if (!prompt || typeof prompt !== 'string') {
@@ -35,11 +35,19 @@ export async function duckDebateTool(providerManager, args) {
35
35
  const participants = assignPositions(debateProviders, format, providerManager);
36
36
  // Run debate rounds
37
37
  const debateRounds = [];
38
+ const totalSteps = rounds * participants.length + 1; // +1 for synthesis
39
+ let completedSteps = 0;
38
40
  for (let roundNum = 1; roundNum <= rounds; roundNum++) {
41
+ if (signal?.aborted) {
42
+ throw new Error('Task cancelled');
43
+ }
39
44
  logger.info(`Debate round ${roundNum}/${rounds}`);
40
45
  const roundArguments = [];
41
46
  // Each participant argues in this round
42
47
  for (const participant of participants) {
48
+ if (signal?.aborted) {
49
+ throw new Error('Task cancelled');
50
+ }
43
51
  const argumentPrompt = buildArgumentPrompt(prompt, format, participant, roundNum, debateRounds, participants);
44
52
  const response = await providerManager.askDuck(participant.provider, argumentPrompt);
45
53
  roundArguments.push({
@@ -50,13 +58,23 @@ export async function duckDebateTool(providerManager, args) {
50
58
  content: response.content,
51
59
  timestamp: new Date(),
52
60
  });
61
+ completedSteps++;
62
+ if (progress) {
63
+ void progress.report(completedSteps, totalSteps, `Round ${roundNum}/${rounds}: ${participant.nickname} (${participant.position})`);
64
+ }
53
65
  }
54
66
  debateRounds.push(roundArguments);
55
67
  }
68
+ if (signal?.aborted) {
69
+ throw new Error('Task cancelled');
70
+ }
56
71
  // Generate synthesis
57
72
  const synthesizerProvider = synthesizer || debateProviders[0];
58
73
  const synthesisPrompt = buildSynthesisPrompt(prompt, format, debateRounds, participants);
59
74
  const synthesisResponse = await providerManager.askDuck(synthesizerProvider, synthesisPrompt);
75
+ if (progress) {
76
+ void progress.report(totalSteps, totalSteps, 'Synthesis complete');
77
+ }
60
78
  const result = {
61
79
  topic: prompt,
62
80
  format,
@@ -1 +1 @@
1
- {"version":3,"file":"duck-debate.js","sourceRoot":"","sources":["../../src/tools/duck-debate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duck-debate.js","sourceRoot":"","sources":["../../src/tools/duck-debate.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { ProviderManager } from '../providers/manager.js';
2
+ import type { ProgressReporter } from '../services/progress.js';
2
3
  export interface DuckIterateArgs {
3
4
  prompt: string;
4
5
  iterations?: number;
5
6
  providers: [string, string];
6
7
  mode: 'refine' | 'critique-improve';
7
8
  }
8
- export declare function duckIterateTool(providerManager: ProviderManager, args: Record<string, unknown>): Promise<{
9
+ export declare function duckIterateTool(providerManager: ProviderManager, args: Record<string, unknown>, progress?: ProgressReporter, signal?: AbortSignal): Promise<{
9
10
  content: {
10
11
  type: string;
11
12
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"duck-iterate.d.ts","sourceRoot":"","sources":["../../src/tools/duck-iterate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,QAAQ,GAAG,kBAAkB,CAAC;CACrC;AAKD,wBAAsB,eAAe,CACnC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAkH9B"}
1
+ {"version":3,"file":"duck-iterate.d.ts","sourceRoot":"","sources":["../../src/tools/duck-iterate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,QAAQ,GAAG,kBAAkB,CAAC;CACrC;AAKD,wBAAsB,eAAe,CACnC,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,CAAC,EAAE,gBAAgB,EAC3B,MAAM,CAAC,EAAE,WAAW;;;;;GAkIrB"}
@@ -1,7 +1,7 @@
1
1
  import { logger } from '../utils/logger.js';
2
2
  const DEFAULT_ITERATIONS = 3;
3
3
  const CONVERGENCE_THRESHOLD = 0.8; // 80% similarity indicates convergence
4
- export async function duckIterateTool(providerManager, args) {
4
+ export async function duckIterateTool(providerManager, args, progress, signal) {
5
5
  const { prompt, iterations = DEFAULT_ITERATIONS, providers, mode, } = args;
6
6
  // Validate inputs
7
7
  if (!prompt || typeof prompt !== 'string') {
@@ -27,6 +27,9 @@ export async function duckIterateTool(providerManager, args) {
27
27
  const rounds = [];
28
28
  let lastResponse = '';
29
29
  let converged = false;
30
+ if (signal?.aborted) {
31
+ throw new Error('Task cancelled');
32
+ }
30
33
  // Round 1: Initial generation by provider A
31
34
  const initialResponse = await providerManager.askDuck(providers[0], prompt);
32
35
  const providerAInfo = providerManager.getProvider(providers[0]);
@@ -40,8 +43,14 @@ export async function duckIterateTool(providerManager, args) {
40
43
  });
41
44
  lastResponse = initialResponse.content;
42
45
  logger.info(`Round 1: ${providers[0]} generated initial response`);
46
+ if (progress) {
47
+ void progress.report(1, iterations, `Round 1/${iterations}: ${providers[0]} generated`);
48
+ }
43
49
  // Subsequent rounds: Alternate between providers
44
50
  for (let i = 2; i <= iterations; i++) {
51
+ if (signal?.aborted) {
52
+ throw new Error('Task cancelled');
53
+ }
45
54
  const isProviderA = i % 2 === 1;
46
55
  const currentProvider = isProviderA ? providers[0] : providers[1];
47
56
  const providerInfo = providerManager.getProvider(currentProvider);
@@ -63,6 +72,9 @@ export async function duckIterateTool(providerManager, args) {
63
72
  });
64
73
  lastResponse = response.content;
65
74
  logger.info(`Round ${i}: ${currentProvider} ${role === 'critic' ? 'critiqued' : 'refined'}`);
75
+ if (progress) {
76
+ void progress.report(i, iterations, `Round ${i}/${iterations}: ${currentProvider} ${role}`);
77
+ }
66
78
  if (converged) {
67
79
  break;
68
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"duck-iterate.js","sourceRoot":"","sources":["../../src/tools/duck-iterate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duck-iterate.js","sourceRoot":"","sources":["../../src/tools/duck-iterate.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { ProviderManager } from '../providers/manager.js';
2
+ import type { ProgressReporter } from '../services/progress.js';
2
3
  export interface DuckVoteArgs {
3
4
  question: string;
4
5
  options: string[];
5
6
  voters?: string[];
6
7
  require_reasoning?: boolean;
7
8
  }
8
- export declare function duckVoteTool(providerManager: ProviderManager, args: Record<string, unknown>): Promise<{
9
+ export declare function duckVoteTool(providerManager: ProviderManager, args: Record<string, unknown>, progress?: ProgressReporter): Promise<{
9
10
  content: {
10
11
  type: string;
11
12
  text: string;