@tarquinen/opencode-dcp 0.3.30 → 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 (149) hide show
  1. package/README.md +10 -10
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +22 -8
  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 +29 -0
  10. package/dist/lib/api-formats/synth-instruction.d.ts.map +1 -0
  11. package/dist/lib/api-formats/synth-instruction.js +171 -0
  12. package/dist/lib/api-formats/synth-instruction.js.map +1 -0
  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 +13 -7
  16. package/dist/lib/config.js.map +1 -1
  17. package/dist/lib/core/janitor.d.ts +60 -0
  18. package/dist/lib/core/janitor.d.ts.map +1 -0
  19. package/dist/lib/core/janitor.js +301 -0
  20. package/dist/lib/core/janitor.js.map +1 -0
  21. package/dist/lib/core/prompt.d.ts.map +1 -0
  22. package/dist/lib/{prompt.js → core/prompt.js} +1 -1
  23. package/dist/lib/core/prompt.js.map +1 -0
  24. package/dist/lib/core/strategies/deduplication.d.ts +7 -0
  25. package/dist/lib/core/strategies/deduplication.d.ts.map +1 -0
  26. package/dist/lib/core/strategies/deduplication.js +76 -0
  27. package/dist/lib/core/strategies/deduplication.js.map +1 -0
  28. package/dist/lib/core/strategies/index.d.ts +21 -0
  29. package/dist/lib/core/strategies/index.d.ts.map +1 -0
  30. package/dist/lib/core/strategies/index.js +48 -0
  31. package/dist/lib/core/strategies/index.js.map +1 -0
  32. package/dist/lib/core/strategies/types.d.ts +35 -0
  33. package/dist/lib/core/strategies/types.d.ts.map +1 -0
  34. package/dist/lib/core/strategies/types.js +6 -0
  35. package/dist/lib/core/strategies/types.js.map +1 -0
  36. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts +14 -0
  37. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts.map +1 -0
  38. package/dist/lib/fetch-wrapper/formats/bedrock.js +128 -0
  39. package/dist/lib/fetch-wrapper/formats/bedrock.js.map +1 -0
  40. package/dist/lib/fetch-wrapper/formats/gemini.d.ts +14 -0
  41. package/dist/lib/fetch-wrapper/formats/gemini.d.ts.map +1 -0
  42. package/dist/lib/fetch-wrapper/formats/gemini.js +138 -0
  43. package/dist/lib/fetch-wrapper/formats/gemini.js.map +1 -0
  44. package/dist/lib/fetch-wrapper/formats/index.d.ts +5 -0
  45. package/dist/lib/fetch-wrapper/formats/index.d.ts.map +1 -0
  46. package/dist/lib/fetch-wrapper/formats/index.js +5 -0
  47. package/dist/lib/fetch-wrapper/formats/index.js.map +1 -0
  48. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts +14 -0
  49. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts.map +1 -0
  50. package/dist/lib/fetch-wrapper/formats/openai-chat.js +106 -0
  51. package/dist/lib/fetch-wrapper/formats/openai-chat.js.map +1 -0
  52. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts +11 -0
  53. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts.map +1 -0
  54. package/dist/lib/fetch-wrapper/formats/openai-responses.js +69 -0
  55. package/dist/lib/fetch-wrapper/formats/openai-responses.js.map +1 -0
  56. package/dist/lib/fetch-wrapper/gc-tracker.d.ts +4 -0
  57. package/dist/lib/fetch-wrapper/gc-tracker.d.ts.map +1 -0
  58. package/dist/lib/fetch-wrapper/gc-tracker.js +61 -0
  59. package/dist/lib/fetch-wrapper/gc-tracker.js.map +1 -0
  60. package/dist/lib/fetch-wrapper/handler.d.ts +13 -0
  61. package/dist/lib/fetch-wrapper/handler.d.ts.map +1 -0
  62. package/dist/lib/fetch-wrapper/handler.js +85 -0
  63. package/dist/lib/fetch-wrapper/handler.js.map +1 -0
  64. package/dist/lib/fetch-wrapper/index.d.ts +3 -2
  65. package/dist/lib/fetch-wrapper/index.d.ts.map +1 -1
  66. package/dist/lib/fetch-wrapper/index.js +41 -15
  67. package/dist/lib/fetch-wrapper/index.js.map +1 -1
  68. package/dist/lib/fetch-wrapper/types.d.ts +36 -1
  69. package/dist/lib/fetch-wrapper/types.d.ts.map +1 -1
  70. package/dist/lib/fetch-wrapper/types.js +7 -1
  71. package/dist/lib/fetch-wrapper/types.js.map +1 -1
  72. package/dist/lib/hooks.d.ts +3 -3
  73. package/dist/lib/hooks.d.ts.map +1 -1
  74. package/dist/lib/hooks.js +25 -15
  75. package/dist/lib/hooks.js.map +1 -1
  76. package/dist/lib/prompts/tool.txt +18 -5
  77. package/dist/lib/pruning-tool.d.ts +14 -6
  78. package/dist/lib/pruning-tool.d.ts.map +1 -1
  79. package/dist/lib/pruning-tool.js +121 -19
  80. package/dist/lib/pruning-tool.js.map +1 -1
  81. package/dist/lib/state/id-mapping.d.ts +26 -0
  82. package/dist/lib/state/id-mapping.d.ts.map +1 -0
  83. package/dist/lib/state/id-mapping.js +54 -0
  84. package/dist/lib/state/id-mapping.js.map +1 -0
  85. package/dist/lib/state/index.d.ts +25 -0
  86. package/dist/lib/state/index.d.ts.map +1 -0
  87. package/dist/lib/{state.js → state/index.js} +10 -6
  88. package/dist/lib/state/index.js.map +1 -0
  89. package/dist/lib/{state-persistence.d.ts → state/persistence.d.ts} +3 -3
  90. package/dist/lib/state/persistence.d.ts.map +1 -0
  91. package/dist/lib/{state-persistence.js → state/persistence.js} +1 -1
  92. package/dist/lib/state/persistence.js.map +1 -0
  93. package/dist/lib/state/tool-cache.d.ts +22 -0
  94. package/dist/lib/state/tool-cache.d.ts.map +1 -0
  95. package/dist/lib/state/tool-cache.js +102 -0
  96. package/dist/lib/state/tool-cache.js.map +1 -0
  97. package/dist/lib/tokenizer.js +2 -2
  98. package/dist/lib/tokenizer.js.map +1 -1
  99. package/dist/lib/ui/display-utils.d.ts.map +1 -0
  100. package/dist/lib/{display-utils.js → ui/display-utils.js} +0 -3
  101. package/dist/lib/ui/display-utils.js.map +1 -0
  102. package/dist/lib/ui/notification.d.ts +32 -0
  103. package/dist/lib/ui/notification.d.ts.map +1 -0
  104. package/dist/lib/ui/notification.js +180 -0
  105. package/dist/lib/ui/notification.js.map +1 -0
  106. package/dist/lib/version-checker.d.ts +1 -1
  107. package/dist/lib/version-checker.d.ts.map +1 -1
  108. package/dist/lib/version-checker.js +4 -1
  109. package/dist/lib/version-checker.js.map +1 -1
  110. package/package.json +6 -6
  111. package/dist/lib/deduplicator.d.ts +0 -16
  112. package/dist/lib/deduplicator.d.ts.map +0 -1
  113. package/dist/lib/deduplicator.js +0 -68
  114. package/dist/lib/deduplicator.js.map +0 -1
  115. package/dist/lib/display-utils.d.ts.map +0 -1
  116. package/dist/lib/display-utils.js.map +0 -1
  117. package/dist/lib/fetch-wrapper/gemini.d.ts +0 -7
  118. package/dist/lib/fetch-wrapper/gemini.d.ts.map +0 -1
  119. package/dist/lib/fetch-wrapper/gemini.js +0 -120
  120. package/dist/lib/fetch-wrapper/gemini.js.map +0 -1
  121. package/dist/lib/fetch-wrapper/openai-chat.d.ts +0 -7
  122. package/dist/lib/fetch-wrapper/openai-chat.d.ts.map +0 -1
  123. package/dist/lib/fetch-wrapper/openai-chat.js +0 -101
  124. package/dist/lib/fetch-wrapper/openai-chat.js.map +0 -1
  125. package/dist/lib/fetch-wrapper/openai-responses.d.ts +0 -7
  126. package/dist/lib/fetch-wrapper/openai-responses.d.ts.map +0 -1
  127. package/dist/lib/fetch-wrapper/openai-responses.js +0 -74
  128. package/dist/lib/fetch-wrapper/openai-responses.js.map +0 -1
  129. package/dist/lib/janitor.d.ts +0 -57
  130. package/dist/lib/janitor.d.ts.map +0 -1
  131. package/dist/lib/janitor.js +0 -547
  132. package/dist/lib/janitor.js.map +0 -1
  133. package/dist/lib/prompt.d.ts.map +0 -1
  134. package/dist/lib/prompt.js.map +0 -1
  135. package/dist/lib/state-persistence.d.ts.map +0 -1
  136. package/dist/lib/state-persistence.js.map +0 -1
  137. package/dist/lib/state.d.ts +0 -43
  138. package/dist/lib/state.d.ts.map +0 -1
  139. package/dist/lib/state.js.map +0 -1
  140. package/dist/lib/synth-instruction.d.ts +0 -16
  141. package/dist/lib/synth-instruction.d.ts.map +0 -1
  142. package/dist/lib/synth-instruction.js +0 -209
  143. package/dist/lib/synth-instruction.js.map +0 -1
  144. package/dist/lib/tool-cache.d.ts +0 -12
  145. package/dist/lib/tool-cache.d.ts.map +0 -1
  146. package/dist/lib/tool-cache.js +0 -52
  147. package/dist/lib/tool-cache.js.map +0 -1
  148. /package/dist/lib/{prompt.d.ts → core/prompt.d.ts} +0 -0
  149. /package/dist/lib/{display-utils.d.ts → ui/display-utils.d.ts} +0 -0
@@ -1,43 +0,0 @@
1
- import type { SessionStats } from "./janitor";
2
- import type { Logger } from "./logger";
3
- /**
4
- * Centralized state management for the DCP plugin.
5
- * All mutable state is stored here and shared across modules.
6
- */
7
- export interface PluginState {
8
- /** Map of session IDs to arrays of pruned tool call IDs */
9
- prunedIds: Map<string, string[]>;
10
- /** Map of session IDs to session statistics */
11
- stats: Map<string, SessionStats>;
12
- /** Cache of tool call IDs to their parameters */
13
- toolParameters: Map<string, ToolParameterEntry>;
14
- /** Cache of session IDs to their model info */
15
- model: Map<string, ModelInfo>;
16
- /**
17
- * Maps Google/Gemini tool positions to OpenCode tool call IDs for correlation.
18
- * Key: sessionID, Value: Map<positionKey, toolCallId> where positionKey is "toolName:index"
19
- */
20
- googleToolCallMapping: Map<string, Map<string, string>>;
21
- /** Set of session IDs that have been restored from disk */
22
- restoredSessions: Set<string>;
23
- /** Set of session IDs we've already checked for subagent status (to avoid redundant API calls) */
24
- checkedSessions: Set<string>;
25
- /** Set of session IDs that are subagents (have a parentID) - used to skip fetch wrapper processing */
26
- subagentSessions: Set<string>;
27
- /** The most recent session ID seen in chat.params - used to correlate fetch requests */
28
- lastSeenSessionId: string | null;
29
- }
30
- export interface ToolParameterEntry {
31
- tool: string;
32
- parameters: any;
33
- }
34
- export interface ModelInfo {
35
- providerID: string;
36
- modelID: string;
37
- }
38
- /**
39
- * Creates a fresh plugin state instance.
40
- */
41
- export declare function createPluginState(): PluginState;
42
- export declare function ensureSessionRestored(state: PluginState, sessionId: string, logger?: Logger): Promise<void>;
43
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../lib/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGtC;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,2DAA2D;IAC3D,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAChC,+CAA+C;IAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAChC,iDAAiD;IACjD,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC/C,+CAA+C;IAC/C,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC7B;;;OAGG;IACH,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACvD,2DAA2D;IAC3D,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,kGAAkG;IAClG,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,sGAAsG;IACtG,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,wFAAwF;IACxF,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,GAAG,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAY/C;AAED,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../lib/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAwCtD;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC7B,OAAO;QACH,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,cAAc,EAAE,IAAI,GAAG,EAAE;QACzB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,qBAAqB,EAAE,IAAI,GAAG,EAAE;QAChC,gBAAgB,EAAE,IAAI,GAAG,EAAE;QAC3B,eAAe,EAAE,IAAI,GAAG,EAAE;QAC1B,gBAAgB,EAAE,IAAI,GAAG,EAAE;QAC3B,iBAAiB,EAAE,IAAI;KAC1B,CAAA;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACvC,KAAkB,EAClB,SAAiB,EACjB,MAAe;IAEf,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,OAAM;IACV,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAErC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC3D,IAAI,SAAS,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;YACnD,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,8BAA8B,EAAE;gBACpD,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM;aACpC,CAAC,CAAA;QACN,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -1,16 +0,0 @@
1
- export interface ToolTracker {
2
- seenToolResultIds: Set<string>;
3
- toolResultCount: number;
4
- skipNextIdle: boolean;
5
- getToolName?: (callId: string) => string | undefined;
6
- }
7
- export declare function createToolTracker(): ToolTracker;
8
- /** Reset tool count to 0 (called after a prune event) */
9
- export declare function resetToolTrackerCount(tracker: ToolTracker): void;
10
- export declare function injectNudge(messages: any[], tracker: ToolTracker, nudgeText: string, freq: number): boolean;
11
- 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
- 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
- export declare function injectSynthResponses(input: any[], instruction: string, nudgeText: string): boolean;
16
- //# sourceMappingURL=synth-instruction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"synth-instruction.d.ts","sourceRoot":"","sources":["../../lib/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,209 +0,0 @@
1
- export function createToolTracker() {
2
- return { seenToolResultIds: new Set(), toolResultCount: 0, skipNextIdle: false };
3
- }
4
- /** Reset tool count to 0 (called after a prune event) */
5
- export function resetToolTrackerCount(tracker) {
6
- tracker.toolResultCount = 0;
7
- }
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);
30
- newCount++;
31
- const toolName = m.name || tracker.getToolName?.(m.tool_call_id);
32
- if (toolName !== 'prune') {
33
- tracker.skipNextIdle = false;
34
- }
35
- }
36
- }
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);
43
- newCount++;
44
- const toolName = tracker.getToolName?.(part.tool_use_id);
45
- if (toolName !== 'prune') {
46
- tracker.skipNextIdle = false;
47
- }
48
- }
49
- }
50
- }
51
- }
52
- }
53
- tracker.toolResultCount += newCount;
54
- return newCount;
55
- },
56
- appendNudge(messages, nudgeText) {
57
- messages.push({ role: 'user', content: nudgeText });
58
- }
59
- };
60
- export function injectNudge(messages, tracker, nudgeText, freq) {
61
- return injectNudgeCore(messages, tracker, nudgeText, freq, openaiAdapter);
62
- }
63
- /** Check if a message content matches nudge text (OpenAI/Anthropic format) */
64
- function isNudgeMessage(msg, nudgeText) {
65
- if (typeof msg.content === 'string') {
66
- return msg.content === nudgeText;
67
- }
68
- return false;
69
- }
70
- export function injectSynth(messages, instruction, nudgeText) {
71
- for (let i = messages.length - 1; i >= 0; i--) {
72
- const msg = messages[i];
73
- if (msg.role === 'user') {
74
- // Skip nudge messages - find real user message
75
- if (isNudgeMessage(msg, nudgeText))
76
- continue;
77
- if (typeof msg.content === 'string') {
78
- if (msg.content.includes(instruction))
79
- return false;
80
- msg.content = msg.content + '\n\n' + instruction;
81
- }
82
- else if (Array.isArray(msg.content)) {
83
- const alreadyInjected = msg.content.some((part) => part?.type === 'text' && typeof part.text === 'string' && part.text.includes(instruction));
84
- if (alreadyInjected)
85
- return false;
86
- msg.content.push({ type: 'text', text: instruction });
87
- }
88
- return true;
89
- }
90
- }
91
- return false;
92
- }
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
- function isNudgeContentGemini(content, nudgeText) {
128
- if (Array.isArray(content.parts) && content.parts.length === 1) {
129
- const part = content.parts[0];
130
- return part?.text === nudgeText;
131
- }
132
- return false;
133
- }
134
- export function injectSynthGemini(contents, instruction, nudgeText) {
135
- for (let i = contents.length - 1; i >= 0; i--) {
136
- const content = contents[i];
137
- if (content.role === 'user' && Array.isArray(content.parts)) {
138
- // Skip nudge messages - find real user message
139
- if (isNudgeContentGemini(content, nudgeText))
140
- continue;
141
- const alreadyInjected = content.parts.some((part) => part?.text && typeof part.text === 'string' && part.text.includes(instruction));
142
- if (alreadyInjected)
143
- return false;
144
- content.parts.push({ text: instruction });
145
- return true;
146
- }
147
- }
148
- return false;
149
- }
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
- function isNudgeItemResponses(item, nudgeText) {
181
- if (typeof item.content === 'string') {
182
- return item.content === nudgeText;
183
- }
184
- return false;
185
- }
186
- export function injectSynthResponses(input, instruction, nudgeText) {
187
- for (let i = input.length - 1; i >= 0; i--) {
188
- const item = input[i];
189
- if (item.type === 'message' && item.role === 'user') {
190
- // Skip nudge messages - find real user message
191
- if (isNudgeItemResponses(item, nudgeText))
192
- continue;
193
- if (typeof item.content === 'string') {
194
- if (item.content.includes(instruction))
195
- return false;
196
- item.content = item.content + '\n\n' + instruction;
197
- }
198
- else if (Array.isArray(item.content)) {
199
- const alreadyInjected = item.content.some((part) => part?.type === 'input_text' && typeof part.text === 'string' && part.text.includes(instruction));
200
- if (alreadyInjected)
201
- return false;
202
- item.content.push({ type: 'input_text', text: instruction });
203
- }
204
- return true;
205
- }
206
- }
207
- return false;
208
- }
209
- //# sourceMappingURL=synth-instruction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"synth-instruction.js","sourceRoot":"","sources":["../../lib/synth-instruction.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { PluginState } from "./state";
2
- /**
3
- * Cache tool parameters from OpenAI Chat Completions style messages.
4
- * Extracts tool call IDs and their parameters from assistant messages with tool_calls.
5
- */
6
- export declare function cacheToolParametersFromMessages(messages: any[], state: PluginState): void;
7
- /**
8
- * Cache tool parameters from OpenAI Responses API format.
9
- * Extracts from input array items with type='function_call'.
10
- */
11
- export declare function cacheToolParametersFromInput(input: any[], state: PluginState): void;
12
- //# sourceMappingURL=tool-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-cache.d.ts","sourceRoot":"","sources":["../../lib/tool-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;GAGG;AACH,wBAAgB,+BAA+B,CAC3C,QAAQ,EAAE,GAAG,EAAE,EACf,KAAK,EAAE,WAAW,GACnB,IAAI,CAwBN;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CACxC,KAAK,EAAE,GAAG,EAAE,EACZ,KAAK,EAAE,WAAW,GACnB,IAAI,CAkBN"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Cache tool parameters from OpenAI Chat Completions style messages.
3
- * Extracts tool call IDs and their parameters from assistant messages with tool_calls.
4
- */
5
- export function cacheToolParametersFromMessages(messages, state) {
6
- for (const message of messages) {
7
- if (message.role !== 'assistant' || !Array.isArray(message.tool_calls)) {
8
- continue;
9
- }
10
- for (const toolCall of message.tool_calls) {
11
- if (!toolCall.id || !toolCall.function) {
12
- continue;
13
- }
14
- try {
15
- const params = typeof toolCall.function.arguments === 'string'
16
- ? JSON.parse(toolCall.function.arguments)
17
- : toolCall.function.arguments;
18
- state.toolParameters.set(toolCall.id, {
19
- tool: toolCall.function.name,
20
- parameters: params
21
- });
22
- }
23
- catch (error) {
24
- // Silently ignore parse errors
25
- }
26
- }
27
- }
28
- }
29
- /**
30
- * Cache tool parameters from OpenAI Responses API format.
31
- * Extracts from input array items with type='function_call'.
32
- */
33
- export function cacheToolParametersFromInput(input, state) {
34
- for (const item of input) {
35
- if (item.type !== 'function_call' || !item.call_id || !item.name) {
36
- continue;
37
- }
38
- try {
39
- const params = typeof item.arguments === 'string'
40
- ? JSON.parse(item.arguments)
41
- : item.arguments;
42
- state.toolParameters.set(item.call_id, {
43
- tool: item.name,
44
- parameters: params
45
- });
46
- }
47
- catch (error) {
48
- // Silently ignore parse errors
49
- }
50
- }
51
- }
52
- //# sourceMappingURL=tool-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../../lib/tool-cache.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAC3C,QAAe,EACf,KAAkB;IAElB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACrE,SAAQ;QACZ,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACrC,SAAQ;YACZ,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,QAAQ,CAAC,QAAQ,CAAC,SAAS,KAAK,QAAQ;oBAC1D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACzC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAA;gBACjC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAClC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;oBAC5B,UAAU,EAAE,MAAM;iBACrB,CAAC,CAAA;YACN,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,+BAA+B;YACnC,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CACxC,KAAY,EACZ,KAAkB;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/D,SAAQ;QACZ,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;gBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC5B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAA;YACpB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,MAAM;aACrB,CAAC,CAAA;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,+BAA+B;QACnC,CAAC;IACL,CAAC;AACL,CAAC"}
File without changes