@tarquinen/opencode-dcp 0.3.31 → 0.4.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 (85) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/api-formats/prunable-list.d.ts +49 -0
  6. package/dist/lib/api-formats/prunable-list.d.ts.map +1 -0
  7. package/dist/lib/api-formats/prunable-list.js +112 -0
  8. package/dist/lib/api-formats/prunable-list.js.map +1 -0
  9. package/dist/lib/api-formats/synth-instruction.d.ts +17 -4
  10. package/dist/lib/api-formats/synth-instruction.d.ts.map +1 -1
  11. package/dist/lib/api-formats/synth-instruction.js +72 -110
  12. package/dist/lib/api-formats/synth-instruction.js.map +1 -1
  13. package/dist/lib/config.d.ts +1 -0
  14. package/dist/lib/config.d.ts.map +1 -1
  15. package/dist/lib/config.js +6 -0
  16. package/dist/lib/config.js.map +1 -1
  17. package/dist/lib/core/janitor.d.ts +14 -1
  18. package/dist/lib/core/janitor.d.ts.map +1 -1
  19. package/dist/lib/core/janitor.js +35 -35
  20. package/dist/lib/core/janitor.js.map +1 -1
  21. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts +14 -0
  22. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts.map +1 -0
  23. package/dist/lib/fetch-wrapper/formats/bedrock.js +128 -0
  24. package/dist/lib/fetch-wrapper/formats/bedrock.js.map +1 -0
  25. package/dist/lib/fetch-wrapper/formats/gemini.d.ts +14 -0
  26. package/dist/lib/fetch-wrapper/formats/gemini.d.ts.map +1 -0
  27. package/dist/lib/fetch-wrapper/formats/gemini.js +138 -0
  28. package/dist/lib/fetch-wrapper/formats/gemini.js.map +1 -0
  29. package/dist/lib/fetch-wrapper/formats/index.d.ts +5 -0
  30. package/dist/lib/fetch-wrapper/formats/index.d.ts.map +1 -0
  31. package/dist/lib/fetch-wrapper/formats/index.js +5 -0
  32. package/dist/lib/fetch-wrapper/formats/index.js.map +1 -0
  33. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts +14 -0
  34. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts.map +1 -0
  35. package/dist/lib/fetch-wrapper/formats/openai-chat.js +106 -0
  36. package/dist/lib/fetch-wrapper/formats/openai-chat.js.map +1 -0
  37. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts +11 -0
  38. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts.map +1 -0
  39. package/dist/lib/fetch-wrapper/formats/openai-responses.js +69 -0
  40. package/dist/lib/fetch-wrapper/formats/openai-responses.js.map +1 -0
  41. package/dist/lib/fetch-wrapper/handler.d.ts +13 -0
  42. package/dist/lib/fetch-wrapper/handler.d.ts.map +1 -0
  43. package/dist/lib/fetch-wrapper/handler.js +85 -0
  44. package/dist/lib/fetch-wrapper/handler.js.map +1 -0
  45. package/dist/lib/fetch-wrapper/index.d.ts +2 -1
  46. package/dist/lib/fetch-wrapper/index.d.ts.map +1 -1
  47. package/dist/lib/fetch-wrapper/index.js +19 -15
  48. package/dist/lib/fetch-wrapper/index.js.map +1 -1
  49. package/dist/lib/fetch-wrapper/types.d.ts +35 -0
  50. package/dist/lib/fetch-wrapper/types.d.ts.map +1 -1
  51. package/dist/lib/fetch-wrapper/types.js +7 -1
  52. package/dist/lib/fetch-wrapper/types.js.map +1 -1
  53. package/dist/lib/hooks.d.ts.map +1 -1
  54. package/dist/lib/hooks.js +21 -12
  55. package/dist/lib/hooks.js.map +1 -1
  56. package/dist/lib/prompts/tool.txt +18 -5
  57. package/dist/lib/pruning-tool.d.ts +13 -5
  58. package/dist/lib/pruning-tool.d.ts.map +1 -1
  59. package/dist/lib/pruning-tool.js +120 -20
  60. package/dist/lib/pruning-tool.js.map +1 -1
  61. package/dist/lib/state/id-mapping.d.ts +26 -0
  62. package/dist/lib/state/id-mapping.d.ts.map +1 -0
  63. package/dist/lib/state/id-mapping.js +54 -0
  64. package/dist/lib/state/id-mapping.js.map +1 -0
  65. package/dist/lib/state/tool-cache.d.ts +9 -4
  66. package/dist/lib/state/tool-cache.d.ts.map +1 -1
  67. package/dist/lib/state/tool-cache.js +54 -20
  68. package/dist/lib/state/tool-cache.js.map +1 -1
  69. package/dist/lib/version-checker.d.ts +1 -1
  70. package/dist/lib/version-checker.d.ts.map +1 -1
  71. package/dist/lib/version-checker.js +4 -1
  72. package/dist/lib/version-checker.js.map +1 -1
  73. package/package.json +1 -1
  74. package/dist/lib/fetch-wrapper/gemini.d.ts +0 -7
  75. package/dist/lib/fetch-wrapper/gemini.d.ts.map +0 -1
  76. package/dist/lib/fetch-wrapper/gemini.js +0 -120
  77. package/dist/lib/fetch-wrapper/gemini.js.map +0 -1
  78. package/dist/lib/fetch-wrapper/openai-chat.d.ts +0 -7
  79. package/dist/lib/fetch-wrapper/openai-chat.d.ts.map +0 -1
  80. package/dist/lib/fetch-wrapper/openai-chat.js +0 -101
  81. package/dist/lib/fetch-wrapper/openai-chat.js.map +0 -1
  82. package/dist/lib/fetch-wrapper/openai-responses.d.ts +0 -7
  83. package/dist/lib/fetch-wrapper/openai-responses.d.ts.map +0 -1
  84. package/dist/lib/fetch-wrapper/openai-responses.js +0 -74
  85. package/dist/lib/fetch-wrapper/openai-responses.js.map +0 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@ Add to your OpenCode config:
13
13
  ```jsonc
14
14
  // opencode.jsonc
15
15
  {
16
- "plugin": ["@tarquinen/opencode-dcp@0.3.31"]
16
+ "plugin": ["@tarquinen/opencode-dcp@0.4.0"]
17
17
  }
18
18
  ```
19
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAYjD,QAAA,MAAM,MAAM,EAAE,MAmFK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAYjD,QAAA,MAAM,MAAM,EAAE,MA0FK,CAAA;AAEnB,eAAe,MAAM,CAAA"}
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ const plugin = (async (ctx) => {
32
32
  const toolTracker = createToolTracker();
33
33
  // Wire up tool name lookup from the cached tool parameters
34
34
  toolTracker.getToolName = (callId) => {
35
- const entry = state.toolParameters.get(callId);
35
+ const entry = state.toolParameters.get(callId.toLowerCase());
36
36
  return entry?.tool;
37
37
  };
38
38
  const prompts = {
@@ -48,7 +48,7 @@ const plugin = (async (ctx) => {
48
48
  });
49
49
  // Check for updates after a delay
50
50
  setTimeout(() => {
51
- checkForUpdates(ctx.client, logger).catch(() => { });
51
+ checkForUpdates(ctx.client, logger, config.showUpdateToasts ?? true).catch(() => { });
52
52
  }, 5000);
53
53
  // Show migration toast if there were config migrations
54
54
  if (migrations.length > 0) {
@@ -72,7 +72,14 @@ const plugin = (async (ctx) => {
72
72
  event: createEventHandler(ctx.client, janitorCtx, logger, config, toolTracker),
73
73
  "chat.params": createChatParamsHandler(ctx.client, state, logger),
74
74
  tool: config.strategies.onTool.length > 0 ? {
75
- prune: createPruningTool(ctx.client, janitorCtx, config, toolTracker),
75
+ prune: createPruningTool({
76
+ client: ctx.client,
77
+ state,
78
+ logger,
79
+ config,
80
+ notificationCtx: janitorCtx.notificationCtx,
81
+ workingDirectory: ctx.directory
82
+ }, toolTracker),
76
83
  } : undefined,
77
84
  };
78
85
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Prunable tools list and nudge injection for DCP.
3
+ *
4
+ * Builds and injects a single message at the end of the conversation containing:
5
+ * - Nudge instruction (when toolResultCount > nudge_freq)
6
+ * - Prunable tools list
7
+ *
8
+ * Note: The base synthetic instructions (signal_management, context_window_management,
9
+ * context_pruning) are still appended to the last user message separately via
10
+ * synth-instruction.ts - that behavior is unchanged.
11
+ */
12
+ export interface ToolMetadata {
13
+ tool: string;
14
+ parameters?: any;
15
+ }
16
+ export interface PrunableListResult {
17
+ list: string;
18
+ numericIds: number[];
19
+ }
20
+ /**
21
+ * Builds the prunable tools list section.
22
+ * Returns both the formatted list and the numeric IDs for logging.
23
+ */
24
+ export declare function buildPrunableToolsList(sessionId: string, unprunedToolCallIds: string[], toolMetadata: Map<string, ToolMetadata>, protectedTools: string[]): PrunableListResult;
25
+ /**
26
+ * Builds the end-of-conversation injection message.
27
+ * Contains the system reminder, nudge (if active), and the prunable tools list.
28
+ *
29
+ * @param prunableList - The prunable tools list string (or empty string if none)
30
+ * @param includeNudge - Whether to include the nudge instruction
31
+ * @returns The injection string, or empty string if nothing to inject
32
+ */
33
+ export declare function buildEndInjection(prunableList: string, includeNudge: boolean): string;
34
+ /**
35
+ * Injects the prunable list (and optionally nudge) at the end of OpenAI/Anthropic messages.
36
+ * Appends a new user message at the end.
37
+ */
38
+ export declare function injectPrunableList(messages: any[], injection: string): boolean;
39
+ /**
40
+ * Injects the prunable list (and optionally nudge) at the end of Gemini contents.
41
+ * Appends a new user content at the end.
42
+ */
43
+ export declare function injectPrunableListGemini(contents: any[], injection: string): boolean;
44
+ /**
45
+ * Injects the prunable list (and optionally nudge) at the end of OpenAI Responses API input.
46
+ * Appends a new user message at the end.
47
+ */
48
+ export declare function injectPrunableListResponses(input: any[], injection: string): boolean;
49
+ //# sourceMappingURL=prunable-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prunable-list.d.ts","sourceRoot":"","sources":["../../../lib/api-formats/prunable-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,GAAG,CAAA;CACnB;AAkBD,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,MAAM,EAAE,EAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,cAAc,EAAE,MAAM,EAAE,GACzB,kBAAkB,CA6BpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC7B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,OAAO,GACtB,MAAM,CAeR;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,GAAG,EAAE,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAIT;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,GAAG,EAAE,EACf,SAAS,EAAE,MAAM,GAClB,OAAO,CAIT;AAMD;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,KAAK,EAAE,GAAG,EAAE,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAIT"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Prunable tools list and nudge injection for DCP.
3
+ *
4
+ * Builds and injects a single message at the end of the conversation containing:
5
+ * - Nudge instruction (when toolResultCount > nudge_freq)
6
+ * - Prunable tools list
7
+ *
8
+ * Note: The base synthetic instructions (signal_management, context_window_management,
9
+ * context_pruning) are still appended to the last user message separately via
10
+ * synth-instruction.ts - that behavior is unchanged.
11
+ */
12
+ import { extractParameterKey } from '../ui/display-utils';
13
+ import { getOrCreateNumericId } from '../state/id-mapping';
14
+ // ============================================================================
15
+ // Prompt Content
16
+ // ============================================================================
17
+ const SYSTEM_REMINDER = `<system-reminder>
18
+ These instructions are injected by a plugin and are invisible to the user. Do not acknowledge or reference them in your response - simply follow them silently.
19
+ </system-reminder>`;
20
+ const NUDGE_INSTRUCTION = `<instruction name=agent_nudge>
21
+ You have accumulated several tool outputs. If you have completed a discrete unit of work and distilled relevant understanding in writing for the user to keep, use the prune tool to remove obsolete tool outputs from this conversation and optimize token usage.
22
+ </instruction>`;
23
+ /**
24
+ * Builds the prunable tools list section.
25
+ * Returns both the formatted list and the numeric IDs for logging.
26
+ */
27
+ export function buildPrunableToolsList(sessionId, unprunedToolCallIds, toolMetadata, protectedTools) {
28
+ const lines = [];
29
+ const numericIds = [];
30
+ for (const actualId of unprunedToolCallIds) {
31
+ const metadata = toolMetadata.get(actualId);
32
+ // Skip if no metadata or if tool is protected
33
+ if (!metadata)
34
+ continue;
35
+ if (protectedTools.includes(metadata.tool))
36
+ continue;
37
+ // Get or create numeric ID for this tool call
38
+ const numericId = getOrCreateNumericId(sessionId, actualId);
39
+ numericIds.push(numericId);
40
+ // Format: "1: read, src/components/Button.tsx"
41
+ const paramKey = extractParameterKey(metadata);
42
+ const description = paramKey ? `${metadata.tool}, ${paramKey}` : metadata.tool;
43
+ lines.push(`${numericId}: ${description}`);
44
+ }
45
+ if (lines.length === 0) {
46
+ return { list: '', numericIds: [] };
47
+ }
48
+ return {
49
+ list: `<prunable-tools>\n${lines.join('\n')}\n</prunable-tools>`,
50
+ numericIds
51
+ };
52
+ }
53
+ /**
54
+ * Builds the end-of-conversation injection message.
55
+ * Contains the system reminder, nudge (if active), and the prunable tools list.
56
+ *
57
+ * @param prunableList - The prunable tools list string (or empty string if none)
58
+ * @param includeNudge - Whether to include the nudge instruction
59
+ * @returns The injection string, or empty string if nothing to inject
60
+ */
61
+ export function buildEndInjection(prunableList, includeNudge) {
62
+ // If no prunable tools, don't inject anything
63
+ if (!prunableList) {
64
+ return '';
65
+ }
66
+ const parts = [SYSTEM_REMINDER];
67
+ if (includeNudge) {
68
+ parts.push(NUDGE_INSTRUCTION);
69
+ }
70
+ parts.push(prunableList);
71
+ return parts.join('\n\n');
72
+ }
73
+ // ============================================================================
74
+ // OpenAI Chat / Anthropic Format
75
+ // ============================================================================
76
+ /**
77
+ * Injects the prunable list (and optionally nudge) at the end of OpenAI/Anthropic messages.
78
+ * Appends a new user message at the end.
79
+ */
80
+ export function injectPrunableList(messages, injection) {
81
+ if (!injection)
82
+ return false;
83
+ messages.push({ role: 'user', content: injection });
84
+ return true;
85
+ }
86
+ // ============================================================================
87
+ // Google/Gemini Format
88
+ // ============================================================================
89
+ /**
90
+ * Injects the prunable list (and optionally nudge) at the end of Gemini contents.
91
+ * Appends a new user content at the end.
92
+ */
93
+ export function injectPrunableListGemini(contents, injection) {
94
+ if (!injection)
95
+ return false;
96
+ contents.push({ role: 'user', parts: [{ text: injection }] });
97
+ return true;
98
+ }
99
+ // ============================================================================
100
+ // OpenAI Responses API Format
101
+ // ============================================================================
102
+ /**
103
+ * Injects the prunable list (and optionally nudge) at the end of OpenAI Responses API input.
104
+ * Appends a new user message at the end.
105
+ */
106
+ export function injectPrunableListResponses(input, injection) {
107
+ if (!injection)
108
+ return false;
109
+ input.push({ type: 'message', role: 'user', content: injection });
110
+ return true;
111
+ }
112
+ //# sourceMappingURL=prunable-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prunable-list.js","sourceRoot":"","sources":["../../../lib/api-formats/prunable-list.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,25 @@ export interface ToolTracker {
5
5
  getToolName?: (callId: string) => string | undefined;
6
6
  }
7
7
  export declare function createToolTracker(): ToolTracker;
8
- /** Reset tool count to 0 (called after a prune event) */
9
8
  export declare function resetToolTrackerCount(tracker: ToolTracker): void;
10
- export declare function injectNudge(messages: any[], tracker: ToolTracker, nudgeText: string, freq: number): boolean;
9
+ /**
10
+ * Track new tool results in OpenAI/Anthropic messages.
11
+ * Increments toolResultCount only for tools not already seen and not protected.
12
+ * Returns the number of NEW tools found (since last call).
13
+ */
14
+ export declare function trackNewToolResults(messages: any[], tracker: ToolTracker, protectedTools: Set<string>): number;
15
+ /**
16
+ * Track new tool results in Gemini contents.
17
+ * Uses position-based tracking since Gemini doesn't have tool call IDs.
18
+ * Returns the number of NEW tools found (since last call).
19
+ */
20
+ export declare function trackNewToolResultsGemini(contents: any[], tracker: ToolTracker, protectedTools: Set<string>): number;
21
+ /**
22
+ * Track new tool results in OpenAI Responses API input.
23
+ * Returns the number of NEW tools found (since last call).
24
+ */
25
+ export declare function trackNewToolResultsResponses(input: any[], tracker: ToolTracker, protectedTools: Set<string>): number;
11
26
  export declare function injectSynth(messages: any[], instruction: string, nudgeText: string): boolean;
12
- export declare function injectNudgeGemini(contents: any[], tracker: ToolTracker, nudgeText: string, freq: number): boolean;
13
27
  export declare function injectSynthGemini(contents: any[], instruction: string, nudgeText: string): boolean;
14
- export declare function injectNudgeResponses(input: any[], tracker: ToolTracker, nudgeText: string, freq: number): boolean;
15
28
  export declare function injectSynthResponses(input: any[], instruction: string, nudgeText: string): boolean;
16
29
  //# sourceMappingURL=synth-instruction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"synth-instruction.d.ts","sourceRoot":"","sources":["../../../lib/api-formats/synth-instruction.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CACvD;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAEhE;AAqED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3G;AAUD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAqB5F;AAiCD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjH;AAWD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBlG;AA8BD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjH;AAUD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAqBlG"}
1
+ {"version":3,"file":"synth-instruction.d.ts","sourceRoot":"","sources":["../../../lib/api-formats/synth-instruction.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9B,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CACvD;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CA4B9G;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAqBpH;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAepH;AASD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAqB5F;AAUD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBlG;AASD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAqBlG"}
@@ -1,66 +1,92 @@
1
1
  export function createToolTracker() {
2
2
  return { seenToolResultIds: new Set(), toolResultCount: 0, skipNextIdle: false };
3
3
  }
4
- /** Reset tool count to 0 (called after a prune event) */
5
4
  export function resetToolTrackerCount(tracker) {
6
5
  tracker.toolResultCount = 0;
7
6
  }
8
- /** Generic nudge injection - nudges every fetch once tools since last prune exceeds freq */
9
- function injectNudgeCore(messages, tracker, nudgeText, freq, adapter) {
10
- // Count any new tool results
11
- adapter.countToolResults(messages, tracker);
12
- // Once we've exceeded the threshold, nudge on every fetch
13
- if (tracker.toolResultCount > freq) {
14
- adapter.appendNudge(messages, nudgeText);
15
- return true;
16
- }
17
- return false;
18
- }
19
- // ============================================================================
20
- // OpenAI Chat / Anthropic Format
21
- // ============================================================================
22
- const openaiAdapter = {
23
- countToolResults(messages, tracker) {
24
- let newCount = 0;
25
- for (const m of messages) {
26
- if (m.role === 'tool' && m.tool_call_id) {
27
- const id = String(m.tool_call_id).toLowerCase();
28
- if (!tracker.seenToolResultIds.has(id)) {
29
- tracker.seenToolResultIds.add(id);
7
+ /**
8
+ * Track new tool results in OpenAI/Anthropic messages.
9
+ * Increments toolResultCount only for tools not already seen and not protected.
10
+ * Returns the number of NEW tools found (since last call).
11
+ */
12
+ export function trackNewToolResults(messages, tracker, protectedTools) {
13
+ let newCount = 0;
14
+ for (const m of messages) {
15
+ if (m.role === 'tool' && m.tool_call_id) {
16
+ if (!tracker.seenToolResultIds.has(m.tool_call_id)) {
17
+ tracker.seenToolResultIds.add(m.tool_call_id);
18
+ const toolName = tracker.getToolName?.(m.tool_call_id);
19
+ if (!toolName || !protectedTools.has(toolName)) {
20
+ tracker.toolResultCount++;
30
21
  newCount++;
31
- const toolName = m.name || tracker.getToolName?.(m.tool_call_id);
32
- if (toolName !== 'prune') {
33
- tracker.skipNextIdle = false;
34
- }
35
22
  }
36
23
  }
37
- else if (m.role === 'user' && Array.isArray(m.content)) {
38
- for (const part of m.content) {
39
- if (part.type === 'tool_result' && part.tool_use_id) {
40
- const id = String(part.tool_use_id).toLowerCase();
41
- if (!tracker.seenToolResultIds.has(id)) {
42
- tracker.seenToolResultIds.add(id);
24
+ }
25
+ else if (m.role === 'user' && Array.isArray(m.content)) {
26
+ for (const part of m.content) {
27
+ if (part.type === 'tool_result' && part.tool_use_id) {
28
+ if (!tracker.seenToolResultIds.has(part.tool_use_id)) {
29
+ tracker.seenToolResultIds.add(part.tool_use_id);
30
+ const toolName = tracker.getToolName?.(part.tool_use_id);
31
+ if (!toolName || !protectedTools.has(toolName)) {
32
+ tracker.toolResultCount++;
43
33
  newCount++;
44
- const toolName = tracker.getToolName?.(part.tool_use_id);
45
- if (toolName !== 'prune') {
46
- tracker.skipNextIdle = false;
47
- }
48
34
  }
49
35
  }
50
36
  }
51
37
  }
52
38
  }
53
- tracker.toolResultCount += newCount;
54
- return newCount;
55
- },
56
- appendNudge(messages, nudgeText) {
57
- messages.push({ role: 'user', content: nudgeText });
58
39
  }
59
- };
60
- export function injectNudge(messages, tracker, nudgeText, freq) {
61
- return injectNudgeCore(messages, tracker, nudgeText, freq, openaiAdapter);
40
+ return newCount;
41
+ }
42
+ /**
43
+ * Track new tool results in Gemini contents.
44
+ * Uses position-based tracking since Gemini doesn't have tool call IDs.
45
+ * Returns the number of NEW tools found (since last call).
46
+ */
47
+ export function trackNewToolResultsGemini(contents, tracker, protectedTools) {
48
+ let newCount = 0;
49
+ let positionCounter = 0;
50
+ for (const content of contents) {
51
+ if (!Array.isArray(content.parts))
52
+ continue;
53
+ for (const part of content.parts) {
54
+ if (part.functionResponse) {
55
+ const positionId = `gemini_pos_${positionCounter}`;
56
+ positionCounter++;
57
+ if (!tracker.seenToolResultIds.has(positionId)) {
58
+ tracker.seenToolResultIds.add(positionId);
59
+ const toolName = part.functionResponse.name;
60
+ if (!toolName || !protectedTools.has(toolName)) {
61
+ tracker.toolResultCount++;
62
+ newCount++;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ return newCount;
69
+ }
70
+ /**
71
+ * Track new tool results in OpenAI Responses API input.
72
+ * Returns the number of NEW tools found (since last call).
73
+ */
74
+ export function trackNewToolResultsResponses(input, tracker, protectedTools) {
75
+ let newCount = 0;
76
+ for (const item of input) {
77
+ if (item.type === 'function_call_output' && item.call_id) {
78
+ if (!tracker.seenToolResultIds.has(item.call_id)) {
79
+ tracker.seenToolResultIds.add(item.call_id);
80
+ const toolName = tracker.getToolName?.(item.call_id);
81
+ if (!toolName || !protectedTools.has(toolName)) {
82
+ tracker.toolResultCount++;
83
+ newCount++;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ return newCount;
62
89
  }
63
- /** Check if a message content matches nudge text (OpenAI/Anthropic format) */
64
90
  function isNudgeMessage(msg, nudgeText) {
65
91
  if (typeof msg.content === 'string') {
66
92
  return msg.content === nudgeText;
@@ -90,40 +116,6 @@ export function injectSynth(messages, instruction, nudgeText) {
90
116
  }
91
117
  return false;
92
118
  }
93
- // ============================================================================
94
- // Google/Gemini Format (body.contents with parts)
95
- // ============================================================================
96
- const geminiAdapter = {
97
- countToolResults(contents, tracker) {
98
- let newCount = 0;
99
- for (const content of contents) {
100
- if (!Array.isArray(content.parts))
101
- continue;
102
- for (const part of content.parts) {
103
- if (part.functionResponse) {
104
- const funcName = part.functionResponse.name?.toLowerCase() || 'unknown';
105
- const pseudoId = `gemini:${funcName}:${tracker.seenToolResultIds.size}`;
106
- if (!tracker.seenToolResultIds.has(pseudoId)) {
107
- tracker.seenToolResultIds.add(pseudoId);
108
- newCount++;
109
- if (funcName !== 'prune') {
110
- tracker.skipNextIdle = false;
111
- }
112
- }
113
- }
114
- }
115
- }
116
- tracker.toolResultCount += newCount;
117
- return newCount;
118
- },
119
- appendNudge(contents, nudgeText) {
120
- contents.push({ role: 'user', parts: [{ text: nudgeText }] });
121
- }
122
- };
123
- export function injectNudgeGemini(contents, tracker, nudgeText, freq) {
124
- return injectNudgeCore(contents, tracker, nudgeText, freq, geminiAdapter);
125
- }
126
- /** Check if a Gemini content matches nudge text */
127
119
  function isNudgeContentGemini(content, nudgeText) {
128
120
  if (Array.isArray(content.parts) && content.parts.length === 1) {
129
121
  const part = content.parts[0];
@@ -147,36 +139,6 @@ export function injectSynthGemini(contents, instruction, nudgeText) {
147
139
  }
148
140
  return false;
149
141
  }
150
- // ============================================================================
151
- // OpenAI Responses API Format (body.input with type-based items)
152
- // ============================================================================
153
- const responsesAdapter = {
154
- countToolResults(input, tracker) {
155
- let newCount = 0;
156
- for (const item of input) {
157
- if (item.type === 'function_call_output' && item.call_id) {
158
- const id = String(item.call_id).toLowerCase();
159
- if (!tracker.seenToolResultIds.has(id)) {
160
- tracker.seenToolResultIds.add(id);
161
- newCount++;
162
- const toolName = item.name || tracker.getToolName?.(item.call_id);
163
- if (toolName !== 'prune') {
164
- tracker.skipNextIdle = false;
165
- }
166
- }
167
- }
168
- }
169
- tracker.toolResultCount += newCount;
170
- return newCount;
171
- },
172
- appendNudge(input, nudgeText) {
173
- input.push({ type: 'message', role: 'user', content: nudgeText });
174
- }
175
- };
176
- export function injectNudgeResponses(input, tracker, nudgeText, freq) {
177
- return injectNudgeCore(input, tracker, nudgeText, freq, responsesAdapter);
178
- }
179
- /** Check if a Responses API item matches nudge text */
180
142
  function isNudgeItemResponses(item, nudgeText) {
181
143
  if (typeof item.content === 'string') {
182
144
  return item.content === nudgeText;
@@ -1 +1 @@
1
- {"version":3,"file":"synth-instruction.js","sourceRoot":"","sources":["../../../lib/api-formats/synth-instruction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synth-instruction.js","sourceRoot":"","sources":["../../../lib/api-formats/synth-instruction.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,iBAAiB;IAC7B,OAAO,EAAE,iBAAiB,EAAE,IAAI,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACtD,OAAO,CAAC,eAAe,GAAG,CAAC,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAe,EAAE,OAAoB,EAAE,cAA2B;IAClG,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;gBAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;gBACtD,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,eAAe,EAAE,CAAA;oBACzB,QAAQ,EAAE,CAAA;gBACd,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBAClD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBACnD,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;wBAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;wBACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC7C,OAAO,CAAC,eAAe,EAAE,CAAA;4BACzB,QAAQ,EAAE,CAAA;wBACd,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAe,EAAE,OAAoB,EAAE,cAA2B;IACxG,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAQ;QAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM,UAAU,GAAG,cAAc,eAAe,EAAE,CAAA;gBAClD,eAAe,EAAE,CAAA;gBACjB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;oBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAA;oBAC3C,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC7C,OAAO,CAAC,eAAe,EAAE,CAAA;wBACzB,QAAQ,EAAE,CAAA;oBACd,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAY,EAAE,OAAoB,EAAE,cAA2B;IACxG,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpD,IAAI,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,eAAe,EAAE,CAAA;oBACzB,QAAQ,EAAE,CAAA;gBACd,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ,EAAE,SAAiB;IAC/C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,CAAA;IACpC,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAe,EAAE,WAAmB,EAAE,SAAiB;IAC/E,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,+CAA+C;YAC/C,IAAI,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC;gBAAE,SAAQ;YAE5C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAClC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACnD,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,WAAW,CAAA;YACpD,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CACpC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC3G,CAAA;gBACD,IAAI,eAAe;oBAAE,OAAO,KAAK,CAAA;gBACjC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YACzD,CAAC;YACD,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAY,EAAE,SAAiB;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7B,OAAO,IAAI,EAAE,IAAI,KAAK,SAAS,CAAA;IACnC,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAe,EAAE,WAAmB,EAAE,SAAiB;IACrF,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,+CAA+C;YAC/C,IAAI,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC;gBAAE,SAAQ;YAEtD,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CACtC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAChG,CAAA;YACD,IAAI,eAAe;gBAAE,OAAO,KAAK,CAAA;YACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YACzC,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAS,EAAE,SAAiB;IACtD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAA;IACrC,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAY,EAAE,WAAmB,EAAE,SAAiB;IACrF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAClD,+CAA+C;YAC/C,IAAI,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC;gBAAE,SAAQ;YAEnD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,WAAW,CAAA;YACtD,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACrC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CACjH,CAAA;gBACD,IAAI,eAAe;oBAAE,OAAO,KAAK,CAAA;gBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YAChE,CAAC;YACD,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC"}
@@ -6,6 +6,7 @@ export interface PluginConfig {
6
6
  protectedTools: string[];
7
7
  model?: string;
8
8
  showModelErrorToasts?: boolean;
9
+ showUpdateToasts?: boolean;
9
10
  strictModelSelection?: boolean;
10
11
  pruning_summary: "off" | "minimal" | "detailed";
11
12
  nudge_freq: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,aAAa,CAAA;AAE7D,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE;QACR,MAAM,EAAE,eAAe,EAAE,CAAA;QACzB,MAAM,EAAE,eAAe,EAAE,CAAA;KAC5B,CAAA;CACJ;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAsJD,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,CAoEzD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,aAAa,CAAA;AAE7D,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,eAAe,EAAE,KAAK,GAAG,SAAS,GAAG,UAAU,CAAA;IAC/C,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE;QACR,MAAM,EAAE,eAAe,EAAE,CAAA;QACzB,MAAM,EAAE,eAAe,EAAE,CAAA;KAC5B,CAAA;CACJ;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AA0JD,wBAAgB,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,CAsEzD"}
@@ -8,6 +8,7 @@ const defaultConfig = {
8
8
  debug: false,
9
9
  protectedTools: ['task', 'todowrite', 'todoread', 'prune', 'batch'],
10
10
  showModelErrorToasts: true,
11
+ showUpdateToasts: true,
11
12
  strictModelSelection: false,
12
13
  pruning_summary: 'detailed',
13
14
  nudge_freq: 10,
@@ -22,6 +23,7 @@ const VALID_CONFIG_KEYS = new Set([
22
23
  'protectedTools',
23
24
  'model',
24
25
  'showModelErrorToasts',
26
+ 'showUpdateToasts',
25
27
  'strictModelSelection',
26
28
  'pruning_summary',
27
29
  'nudge_freq',
@@ -81,6 +83,8 @@ function createDefaultConfig() {
81
83
  // "model": "anthropic/claude-haiku-4-5",
82
84
  // Show toast notifications when model selection fails
83
85
  "showModelErrorToasts": true,
86
+ // Show toast notifications when a new version is available
87
+ "showUpdateToasts": true,
84
88
  // Only run AI analysis with session model or configured model (disables fallback models)
85
89
  "strictModelSelection": false,
86
90
  // AI analysis strategies (deduplication runs automatically on every request)
@@ -163,6 +167,7 @@ export function getConfig(ctx) {
163
167
  protectedTools: [...new Set([...config.protectedTools, ...(globalConfig.protectedTools ?? [])])],
164
168
  model: globalConfig.model ?? config.model,
165
169
  showModelErrorToasts: globalConfig.showModelErrorToasts ?? config.showModelErrorToasts,
170
+ showUpdateToasts: globalConfig.showUpdateToasts ?? config.showUpdateToasts,
166
171
  strictModelSelection: globalConfig.strictModelSelection ?? config.strictModelSelection,
167
172
  strategies: mergeStrategies(config.strategies, globalConfig.strategies),
168
173
  pruning_summary: globalConfig.pruning_summary ?? config.pruning_summary,
@@ -194,6 +199,7 @@ export function getConfig(ctx) {
194
199
  protectedTools: [...new Set([...config.protectedTools, ...(projectConfig.protectedTools ?? [])])],
195
200
  model: projectConfig.model ?? config.model,
196
201
  showModelErrorToasts: projectConfig.showModelErrorToasts ?? config.showModelErrorToasts,
202
+ showUpdateToasts: projectConfig.showUpdateToasts ?? config.showUpdateToasts,
197
203
  strictModelSelection: projectConfig.strictModelSelection ?? config.strictModelSelection,
198
204
  strategies: mergeStrategies(config.strategies, projectConfig.strategies),
199
205
  pruning_summary: projectConfig.pruning_summary ?? config.pruning_summary,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}