@tarquinen/opencode-dcp 0.4.16 → 1.0.0-beta.1

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 (163) hide show
  1. package/README.md +58 -30
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +19 -59
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/config.d.ts +30 -13
  6. package/dist/lib/config.d.ts.map +1 -1
  7. package/dist/lib/config.js +339 -121
  8. package/dist/lib/config.js.map +1 -1
  9. package/dist/lib/hooks.d.ts +5 -13
  10. package/dist/lib/hooks.d.ts.map +1 -1
  11. package/dist/lib/hooks.js +26 -125
  12. package/dist/lib/hooks.js.map +1 -1
  13. package/dist/lib/logger.d.ts +5 -9
  14. package/dist/lib/logger.d.ts.map +1 -1
  15. package/dist/lib/logger.js +30 -160
  16. package/dist/lib/logger.js.map +1 -1
  17. package/dist/lib/messages/index.d.ts +2 -0
  18. package/dist/lib/messages/index.d.ts.map +1 -0
  19. package/dist/lib/messages/index.js +2 -0
  20. package/dist/lib/messages/index.js.map +1 -0
  21. package/dist/lib/messages/prune.d.ts +6 -0
  22. package/dist/lib/messages/prune.d.ts.map +1 -0
  23. package/dist/lib/messages/prune.js +85 -0
  24. package/dist/lib/messages/prune.js.map +1 -0
  25. package/dist/lib/messages/utils.d.ts +10 -0
  26. package/dist/lib/messages/utils.d.ts.map +1 -0
  27. package/dist/lib/messages/utils.js +103 -0
  28. package/dist/lib/messages/utils.js.map +1 -0
  29. package/dist/lib/model-selector.js +3 -3
  30. package/dist/lib/model-selector.js.map +1 -1
  31. package/dist/lib/{core/prompt.d.ts → prompt.d.ts} +1 -1
  32. package/dist/lib/prompt.d.ts.map +1 -0
  33. package/dist/lib/{core/prompt.js → prompt.js} +2 -6
  34. package/dist/lib/prompt.js.map +1 -0
  35. package/dist/lib/prompts/pruning.txt +1 -1
  36. package/dist/lib/prompts/tool.txt +3 -3
  37. package/dist/lib/state/index.d.ts +3 -27
  38. package/dist/lib/state/index.d.ts.map +1 -1
  39. package/dist/lib/state/index.js +3 -40
  40. package/dist/lib/state/index.js.map +1 -1
  41. package/dist/lib/state/persistence.d.ts +4 -4
  42. package/dist/lib/state/persistence.d.ts.map +1 -1
  43. package/dist/lib/state/persistence.js +24 -20
  44. package/dist/lib/state/persistence.js.map +1 -1
  45. package/dist/lib/state/state.d.ts +7 -0
  46. package/dist/lib/state/state.d.ts.map +1 -0
  47. package/dist/lib/state/state.js +76 -0
  48. package/dist/lib/state/state.js.map +1 -0
  49. package/dist/lib/state/tool-cache.d.ts +4 -6
  50. package/dist/lib/state/tool-cache.d.ts.map +1 -1
  51. package/dist/lib/state/tool-cache.js +14 -46
  52. package/dist/lib/state/tool-cache.js.map +1 -1
  53. package/dist/lib/state/types.d.ts +30 -0
  54. package/dist/lib/state/types.d.ts.map +1 -0
  55. package/dist/lib/state/types.js +2 -0
  56. package/dist/lib/state/types.js.map +1 -0
  57. package/dist/lib/strategies/deduplication.d.ts +10 -0
  58. package/dist/lib/strategies/deduplication.d.ts.map +1 -0
  59. package/dist/lib/strategies/deduplication.js +89 -0
  60. package/dist/lib/strategies/deduplication.js.map +1 -0
  61. package/dist/lib/strategies/index.d.ts +4 -0
  62. package/dist/lib/strategies/index.d.ts.map +1 -0
  63. package/dist/lib/strategies/index.js +4 -0
  64. package/dist/lib/strategies/index.js.map +1 -0
  65. package/dist/lib/strategies/on-idle.d.ts +14 -0
  66. package/dist/lib/strategies/on-idle.d.ts.map +1 -0
  67. package/dist/lib/strategies/on-idle.js +216 -0
  68. package/dist/lib/strategies/on-idle.js.map +1 -0
  69. package/dist/lib/strategies/prune-tool.d.ts +17 -0
  70. package/dist/lib/strategies/prune-tool.d.ts.map +1 -0
  71. package/dist/lib/strategies/prune-tool.js +70 -0
  72. package/dist/lib/strategies/prune-tool.js.map +1 -0
  73. package/dist/lib/ui/display-utils.d.ts +3 -12
  74. package/dist/lib/ui/display-utils.d.ts.map +1 -1
  75. package/dist/lib/ui/display-utils.js +12 -79
  76. package/dist/lib/ui/display-utils.js.map +1 -1
  77. package/dist/lib/ui/notification.d.ts +7 -23
  78. package/dist/lib/ui/notification.d.ts.map +1 -1
  79. package/dist/lib/ui/notification.js +38 -47
  80. package/dist/lib/ui/notification.js.map +1 -1
  81. package/dist/lib/utils.d.ts +9 -0
  82. package/dist/lib/utils.d.ts.map +1 -0
  83. package/dist/lib/utils.js +61 -0
  84. package/dist/lib/utils.js.map +1 -0
  85. package/package.json +1 -1
  86. package/dist/lib/core/janitor.d.ts +0 -38
  87. package/dist/lib/core/janitor.d.ts.map +0 -1
  88. package/dist/lib/core/janitor.js +0 -292
  89. package/dist/lib/core/janitor.js.map +0 -1
  90. package/dist/lib/core/prompt.d.ts.map +0 -1
  91. package/dist/lib/core/prompt.js.map +0 -1
  92. package/dist/lib/core/strategies/deduplication.d.ts +0 -7
  93. package/dist/lib/core/strategies/deduplication.d.ts.map +0 -1
  94. package/dist/lib/core/strategies/deduplication.js +0 -76
  95. package/dist/lib/core/strategies/deduplication.js.map +0 -1
  96. package/dist/lib/core/strategies/index.d.ts +0 -51
  97. package/dist/lib/core/strategies/index.d.ts.map +0 -1
  98. package/dist/lib/core/strategies/index.js +0 -48
  99. package/dist/lib/core/strategies/index.js.map +0 -1
  100. package/dist/lib/fetch-wrapper/formats/anthropic.d.ts +0 -8
  101. package/dist/lib/fetch-wrapper/formats/anthropic.d.ts.map +0 -1
  102. package/dist/lib/fetch-wrapper/formats/anthropic.js +0 -96
  103. package/dist/lib/fetch-wrapper/formats/anthropic.js.map +0 -1
  104. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts +0 -8
  105. package/dist/lib/fetch-wrapper/formats/bedrock.d.ts.map +0 -1
  106. package/dist/lib/fetch-wrapper/formats/bedrock.js +0 -97
  107. package/dist/lib/fetch-wrapper/formats/bedrock.js.map +0 -1
  108. package/dist/lib/fetch-wrapper/formats/gemini.d.ts +0 -8
  109. package/dist/lib/fetch-wrapper/formats/gemini.d.ts.map +0 -1
  110. package/dist/lib/fetch-wrapper/formats/gemini.js +0 -134
  111. package/dist/lib/fetch-wrapper/formats/gemini.js.map +0 -1
  112. package/dist/lib/fetch-wrapper/formats/index.d.ts +0 -6
  113. package/dist/lib/fetch-wrapper/formats/index.d.ts.map +0 -1
  114. package/dist/lib/fetch-wrapper/formats/index.js +0 -6
  115. package/dist/lib/fetch-wrapper/formats/index.js.map +0 -1
  116. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts +0 -3
  117. package/dist/lib/fetch-wrapper/formats/openai-chat.d.ts.map +0 -1
  118. package/dist/lib/fetch-wrapper/formats/openai-chat.js +0 -100
  119. package/dist/lib/fetch-wrapper/formats/openai-chat.js.map +0 -1
  120. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts +0 -3
  121. package/dist/lib/fetch-wrapper/formats/openai-responses.d.ts.map +0 -1
  122. package/dist/lib/fetch-wrapper/formats/openai-responses.js +0 -63
  123. package/dist/lib/fetch-wrapper/formats/openai-responses.js.map +0 -1
  124. package/dist/lib/fetch-wrapper/gc-tracker.d.ts +0 -4
  125. package/dist/lib/fetch-wrapper/gc-tracker.d.ts.map +0 -1
  126. package/dist/lib/fetch-wrapper/gc-tracker.js +0 -61
  127. package/dist/lib/fetch-wrapper/gc-tracker.js.map +0 -1
  128. package/dist/lib/fetch-wrapper/handler.d.ts +0 -3
  129. package/dist/lib/fetch-wrapper/handler.d.ts.map +0 -1
  130. package/dist/lib/fetch-wrapper/handler.js +0 -118
  131. package/dist/lib/fetch-wrapper/handler.js.map +0 -1
  132. package/dist/lib/fetch-wrapper/index.d.ts +0 -18
  133. package/dist/lib/fetch-wrapper/index.d.ts.map +0 -1
  134. package/dist/lib/fetch-wrapper/index.js +0 -107
  135. package/dist/lib/fetch-wrapper/index.js.map +0 -1
  136. package/dist/lib/fetch-wrapper/prunable-list.d.ts +0 -8
  137. package/dist/lib/fetch-wrapper/prunable-list.d.ts.map +0 -1
  138. package/dist/lib/fetch-wrapper/prunable-list.js +0 -38
  139. package/dist/lib/fetch-wrapper/prunable-list.js.map +0 -1
  140. package/dist/lib/fetch-wrapper/tool-tracker.d.ts +0 -9
  141. package/dist/lib/fetch-wrapper/tool-tracker.d.ts.map +0 -1
  142. package/dist/lib/fetch-wrapper/tool-tracker.js +0 -12
  143. package/dist/lib/fetch-wrapper/tool-tracker.js.map +0 -1
  144. package/dist/lib/fetch-wrapper/types.d.ts +0 -62
  145. package/dist/lib/fetch-wrapper/types.d.ts.map +0 -1
  146. package/dist/lib/fetch-wrapper/types.js +0 -7
  147. package/dist/lib/fetch-wrapper/types.js.map +0 -1
  148. package/dist/lib/pruning-tool.d.ts +0 -20
  149. package/dist/lib/pruning-tool.d.ts.map +0 -1
  150. package/dist/lib/pruning-tool.js +0 -160
  151. package/dist/lib/pruning-tool.js.map +0 -1
  152. package/dist/lib/state/id-mapping.d.ts +0 -25
  153. package/dist/lib/state/id-mapping.d.ts.map +0 -1
  154. package/dist/lib/state/id-mapping.js +0 -51
  155. package/dist/lib/state/id-mapping.js.map +0 -1
  156. package/dist/lib/tokenizer.d.ts +0 -3
  157. package/dist/lib/tokenizer.d.ts.map +0 -1
  158. package/dist/lib/tokenizer.js +0 -16
  159. package/dist/lib/tokenizer.js.map +0 -1
  160. package/dist/lib/version-checker.d.ts +0 -9
  161. package/dist/lib/version-checker.d.ts.map +0 -1
  162. package/dist/lib/version-checker.js +0 -77
  163. package/dist/lib/version-checker.js.map +0 -1
package/dist/lib/hooks.js CHANGED
@@ -1,139 +1,40 @@
1
- import { runOnIdle } from "./core/janitor";
2
- import { resetToolTrackerCount, clearToolTracker } from "./fetch-wrapper/tool-tracker";
3
- import { clearAllMappings } from "./state/id-mapping";
4
- export async function isSubagentSession(client, sessionID) {
5
- try {
6
- const result = await client.session.get({ path: { id: sessionID } });
7
- return !!result.data?.parentID;
8
- }
9
- catch (error) {
10
- return false;
11
- }
12
- }
13
- function toolStrategiesCoveredByIdle(onIdle, onTool) {
14
- return onTool.every(strategy => onIdle.includes(strategy));
1
+ import { syncToolCache } from "./state/tool-cache";
2
+ import { deduplicate } from "./strategies";
3
+ import { prune, insertPruneToolContext } from "./messages";
4
+ import { checkSession } from "./state";
5
+ import { runOnIdle } from "./strategies/on-idle";
6
+ export function createChatMessageTransformHandler(client, state, logger, config) {
7
+ return async (input, output) => {
8
+ await checkSession(client, state, logger, output.messages);
9
+ if (state.isSubAgent) {
10
+ return;
11
+ }
12
+ syncToolCache(state, config, logger, output.messages);
13
+ deduplicate(state, logger, config, output.messages);
14
+ prune(state, logger, config, output.messages);
15
+ insertPruneToolContext(state, config, logger, output.messages);
16
+ };
15
17
  }
16
- export function createEventHandler(client, janitorCtx, logger, config, toolTracker) {
18
+ export function createEventHandler(client, config, state, logger, workingDirectory) {
17
19
  return async ({ event }) => {
20
+ if (state.sessionId === null || state.isSubAgent) {
21
+ return;
22
+ }
18
23
  if (event.type === "session.status" && event.properties.status.type === "idle") {
19
- if (await isSubagentSession(client, event.properties.sessionID))
24
+ if (!config.strategies.onIdle.enabled) {
20
25
  return;
21
- if (config.strategies.onIdle.length === 0)
26
+ }
27
+ if (state.lastToolPrune) {
28
+ logger.info("Skipping OnIdle pruning - last tool was prune");
22
29
  return;
23
- if (toolTracker?.skipNextIdle) {
24
- toolTracker.skipNextIdle = false;
25
- if (toolStrategiesCoveredByIdle(config.strategies.onIdle, config.strategies.onTool)) {
26
- return;
27
- }
28
30
  }
29
31
  try {
30
- const result = await runOnIdle(janitorCtx, event.properties.sessionID, config.strategies.onIdle);
31
- if (result && result.prunedCount > 0 && toolTracker && config.nudge_freq > 0) {
32
- if (toolStrategiesCoveredByIdle(config.strategies.onIdle, config.strategies.onTool)) {
33
- resetToolTrackerCount(toolTracker);
34
- }
35
- }
32
+ await runOnIdle(client, state, logger, config, workingDirectory);
36
33
  }
37
34
  catch (err) {
38
- logger.error("janitor", "Failed", { error: err.message });
35
+ logger.error("OnIdle pruning failed", { error: err.message });
39
36
  }
40
37
  }
41
38
  };
42
39
  }
43
- /**
44
- * Creates the chat.params hook for model caching and Google tool call mapping.
45
- */
46
- export function createChatParamsHandler(client, state, logger, toolTracker) {
47
- return async (input, _output) => {
48
- const sessionId = input.sessionID;
49
- let providerID = input.provider?.info?.id || input.provider?.id;
50
- const modelID = input.model?.id;
51
- if (!providerID && input.message?.model?.providerID) {
52
- providerID = input.message.model.providerID;
53
- }
54
- if (state.lastSeenSessionId && state.lastSeenSessionId !== sessionId) {
55
- logger.info("chat.params", "Session changed, resetting state", {
56
- from: state.lastSeenSessionId,
57
- to: sessionId
58
- });
59
- clearAllMappings();
60
- state.toolParameters.clear();
61
- if (toolTracker) {
62
- clearToolTracker(toolTracker);
63
- }
64
- }
65
- state.lastSeenSessionId = sessionId;
66
- if (!state.checkedSessions.has(sessionId)) {
67
- state.checkedSessions.add(sessionId);
68
- const isSubagent = await isSubagentSession(client, sessionId);
69
- if (isSubagent) {
70
- state.subagentSessions.add(sessionId);
71
- }
72
- }
73
- // Cache model info for the session (used by janitor for model selection)
74
- if (providerID && modelID) {
75
- state.model.set(sessionId, {
76
- providerID: providerID,
77
- modelID: modelID
78
- });
79
- }
80
- // Build position-based mapping for Gemini (which loses tool call IDs in native format)
81
- if (providerID === 'google' || providerID === 'google-vertex') {
82
- try {
83
- const messagesResponse = await client.session.messages({
84
- path: { id: sessionId },
85
- query: { limit: 500 }
86
- });
87
- const messages = messagesResponse.data || messagesResponse;
88
- if (Array.isArray(messages)) {
89
- const toolCallsByName = new Map();
90
- for (const msg of messages) {
91
- if (msg.parts) {
92
- for (const part of msg.parts) {
93
- if (part.type === 'tool' && part.callID && part.tool) {
94
- const toolName = part.tool.toLowerCase();
95
- const callId = part.callID.toLowerCase();
96
- if (!toolCallsByName.has(toolName)) {
97
- toolCallsByName.set(toolName, []);
98
- }
99
- toolCallsByName.get(toolName).push(callId);
100
- }
101
- }
102
- }
103
- }
104
- const positionMapping = new Map();
105
- for (const [toolName, callIds] of toolCallsByName) {
106
- callIds.forEach((callId, index) => {
107
- positionMapping.set(`${toolName}:${index}`, callId);
108
- });
109
- }
110
- state.googleToolCallMapping.set(sessionId, positionMapping);
111
- logger.info("chat.params", "Built Google tool call mapping", {
112
- sessionId: sessionId.substring(0, 8),
113
- toolCount: positionMapping.size,
114
- toolParamsCount: state.toolParameters.size
115
- });
116
- }
117
- }
118
- catch (error) {
119
- logger.error("chat.params", "Failed to build Google tool call mapping", {
120
- error: error.message
121
- });
122
- }
123
- }
124
- };
125
- }
126
- /**
127
- * Finds the current agent from messages by scanning backward for user messages.
128
- */
129
- export function findCurrentAgent(messages) {
130
- for (let i = messages.length - 1; i >= 0; i--) {
131
- const msg = messages[i];
132
- const info = msg.info;
133
- if (info?.role === 'user') {
134
- return info.agent || 'build';
135
- }
136
- }
137
- return undefined;
138
- }
139
40
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../lib/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGhD,MAAM,UAAU,iCAAiC,CAC7C,MAAW,EACX,KAAmB,EACnB,MAAc,EACd,MAAoB;IAEpB,OAAO,KAAK,EACR,KAAS,EACT,MAAiC,EACnC,EAAE;QACA,MAAM,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE1D,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,OAAM;QACV,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEnD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE7C,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAClE,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,MAAW,EACX,MAAoB,EACpB,KAAmB,EACnB,MAAc,EACd,gBAAyB;IAEzB,OAAO,KAAK,EACR,EAAE,KAAK,EAAkB,EAC3B,EAAE;QACA,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/C,OAAM;QACV,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7E,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAM;YACV,CAAC;YACD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;gBAC5D,OAAM;YACV,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,SAAS,CACX,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,gBAAgB,CACnB,CAAA;YACL,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YACjE,CAAC;QACL,CAAC;IACL,CAAC,CAAA;AACL,CAAC"}
@@ -1,18 +1,14 @@
1
1
  export declare class Logger {
2
2
  private logDir;
3
3
  enabled: boolean;
4
- private fileCounter;
5
4
  constructor(enabled: boolean);
6
5
  private ensureLogDir;
7
6
  private formatData;
7
+ private getCallerFile;
8
8
  private write;
9
- info(component: string, message: string, data?: any): Promise<void>;
10
- debug(component: string, message: string, data?: any): Promise<void>;
11
- warn(component: string, message: string, data?: any): Promise<void>;
12
- error(component: string, message: string, data?: any): Promise<void>;
13
- private parseJanitorPrompt;
14
- private escapeNewlinesInJson;
15
- private extractReasoningBlocks;
16
- saveWrappedContext(sessionID: string, messages: any[], metadata: any, sessionMessages?: any[]): Promise<void>;
9
+ info(message: string, data?: any): Promise<void>;
10
+ debug(message: string, data?: any): Promise<void>;
11
+ warn(message: string, data?: any): Promise<void>;
12
+ error(message: string, data?: any): Promise<void>;
17
13
  }
18
14
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"AAKA,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAQ;IACf,OAAO,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,WAAW,CAAY;gBAEnB,OAAO,EAAE,OAAO;YAMd,YAAY;IAM1B,OAAO,CAAC,UAAU;YAyBJ,KAAK;IAsBnB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAInD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIpD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAInD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIpD,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,sBAAsB;IAmCxB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,EAAE;CA6EtG"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"AAKA,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAQ;IACf,OAAO,EAAE,OAAO,CAAA;gBAEX,OAAO,EAAE,OAAO;YAMd,YAAY;IAM1B,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,aAAa;YAuBP,KAAK;IAsBnB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAIpC"}
@@ -5,7 +5,6 @@ import { homedir } from "os";
5
5
  export class Logger {
6
6
  logDir;
7
7
  enabled;
8
- fileCounter = 0;
9
8
  constructor(enabled) {
10
9
  this.enabled = enabled;
11
10
  const opencodeConfigDir = join(homedir(), ".config", "opencode");
@@ -41,6 +40,28 @@ export class Logger {
41
40
  }
42
41
  return parts.join(" ");
43
42
  }
43
+ getCallerFile(skipFrames = 3) {
44
+ const originalPrepareStackTrace = Error.prepareStackTrace;
45
+ try {
46
+ const err = new Error();
47
+ Error.prepareStackTrace = (_, stack) => stack;
48
+ const stack = err.stack;
49
+ Error.prepareStackTrace = originalPrepareStackTrace;
50
+ // Skip specified number of frames to get to actual caller
51
+ for (let i = skipFrames; i < stack.length; i++) {
52
+ const filename = stack[i]?.getFileName();
53
+ if (filename && !filename.includes('/logger.')) {
54
+ // Extract just the filename without path and extension
55
+ const match = filename.match(/([^/\\]+)\.[tj]s$/);
56
+ return match ? match[1] : filename;
57
+ }
58
+ }
59
+ return 'unknown';
60
+ }
61
+ catch {
62
+ return 'unknown';
63
+ }
64
+ }
44
65
  async write(level, component, message, data) {
45
66
  if (!this.enabled)
46
67
  return;
@@ -59,172 +80,21 @@ export class Logger {
59
80
  catch (error) {
60
81
  }
61
82
  }
62
- info(component, message, data) {
83
+ info(message, data) {
84
+ const component = this.getCallerFile(2);
63
85
  return this.write("INFO", component, message, data);
64
86
  }
65
- debug(component, message, data) {
87
+ debug(message, data) {
88
+ const component = this.getCallerFile(2);
66
89
  return this.write("DEBUG", component, message, data);
67
90
  }
68
- warn(component, message, data) {
91
+ warn(message, data) {
92
+ const component = this.getCallerFile(2);
69
93
  return this.write("WARN", component, message, data);
70
94
  }
71
- error(component, message, data) {
95
+ error(message, data) {
96
+ const component = this.getCallerFile(2);
72
97
  return this.write("ERROR", component, message, data);
73
98
  }
74
- parseJanitorPrompt(prompt) {
75
- try {
76
- const idsMatch = prompt.match(/Available tool call IDs for analysis:\s*([^\n]+)/);
77
- const availableToolCallIds = idsMatch
78
- ? idsMatch[1].split(',').map(id => id.trim())
79
- : [];
80
- const historyMatch = prompt.match(/Session history[^\n]*:\s*\n([\s\S]*?)\n\nYou MUST respond/);
81
- let sessionHistory = [];
82
- if (historyMatch) {
83
- const historyText = historyMatch[1];
84
- const fixedJson = this.escapeNewlinesInJson(historyText);
85
- sessionHistory = JSON.parse(fixedJson);
86
- }
87
- const instructionsMatch = prompt.match(/([\s\S]*?)\n\nIMPORTANT: Available tool call IDs/);
88
- const instructions = instructionsMatch
89
- ? instructionsMatch[1].trim()
90
- : '';
91
- const schemaMatch = prompt.match(/matching this exact schema:\s*\n(\{[\s\S]*?\})\s*$/);
92
- const responseSchema = schemaMatch
93
- ? schemaMatch[1]
94
- : null;
95
- return {
96
- instructions,
97
- availableToolCallIds,
98
- sessionHistory,
99
- responseSchema
100
- };
101
- }
102
- catch (error) {
103
- return null;
104
- }
105
- }
106
- escapeNewlinesInJson(jsonText) {
107
- let result = '';
108
- let inString = false;
109
- for (let i = 0; i < jsonText.length; i++) {
110
- const char = jsonText[i];
111
- const prevChar = i > 0 ? jsonText[i - 1] : '';
112
- if (char === '"' && prevChar !== '\\') {
113
- inString = !inString;
114
- result += char;
115
- }
116
- else if (char === '\n' && inString) {
117
- result += '\\n';
118
- }
119
- else {
120
- result += char;
121
- }
122
- }
123
- return result;
124
- }
125
- extractReasoningBlocks(sessionMessages) {
126
- const reasoningBlocks = [];
127
- for (const msg of sessionMessages) {
128
- if (!msg.parts)
129
- continue;
130
- for (const part of msg.parts) {
131
- if (part.type === "reasoning") {
132
- // Calculate encrypted content size for different providers
133
- let encryptedContentLength = 0;
134
- if (part.metadata?.openai?.reasoningEncryptedContent) {
135
- encryptedContentLength = part.metadata.openai.reasoningEncryptedContent.length;
136
- }
137
- else if (part.metadata?.anthropic?.signature) {
138
- encryptedContentLength = part.metadata.anthropic.signature.length;
139
- }
140
- else if (part.metadata?.google?.thoughtSignature) {
141
- encryptedContentLength = part.metadata.google.thoughtSignature.length;
142
- }
143
- reasoningBlocks.push({
144
- messageId: msg.id,
145
- messageRole: msg.role,
146
- text: part.text,
147
- textLength: part.text?.length || 0,
148
- encryptedContentLength,
149
- time: part.time,
150
- hasMetadata: !!part.metadata,
151
- metadataKeys: part.metadata ? Object.keys(part.metadata) : []
152
- });
153
- }
154
- }
155
- }
156
- return reasoningBlocks;
157
- }
158
- async saveWrappedContext(sessionID, messages, metadata, sessionMessages) {
159
- if (!this.enabled)
160
- return;
161
- try {
162
- await this.ensureLogDir();
163
- const aiContextDir = join(this.logDir, "ai-context");
164
- if (!existsSync(aiContextDir)) {
165
- await mkdir(aiContextDir, { recursive: true });
166
- }
167
- const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\./g, '-');
168
- const counter = (this.fileCounter++).toString().padStart(3, '0');
169
- const filename = `${timestamp}_${counter}_${sessionID.substring(0, 15)}.json`;
170
- const filepath = join(aiContextDir, filename);
171
- const isJanitorShadow = sessionID === "janitor-shadow" &&
172
- messages.length === 1 &&
173
- messages[0]?.role === 'user' &&
174
- typeof messages[0]?.content === 'string';
175
- let content;
176
- if (isJanitorShadow) {
177
- const parsed = this.parseJanitorPrompt(messages[0].content);
178
- if (parsed) {
179
- content = {
180
- timestamp: new Date().toISOString(),
181
- sessionID,
182
- metadata,
183
- janitorAnalysis: {
184
- instructions: parsed.instructions,
185
- availableToolCallIds: parsed.availableToolCallIds,
186
- protectedTools: ["task", "todowrite", "todoread"],
187
- sessionHistory: parsed.sessionHistory,
188
- responseSchema: parsed.responseSchema
189
- },
190
- rawPrompt: messages[0].content
191
- };
192
- }
193
- else {
194
- content = {
195
- timestamp: new Date().toISOString(),
196
- sessionID,
197
- metadata,
198
- messages,
199
- note: "Failed to parse janitor prompt structure"
200
- };
201
- }
202
- }
203
- else {
204
- // Extract reasoning blocks from session messages if available
205
- const reasoningBlocks = sessionMessages
206
- ? this.extractReasoningBlocks(sessionMessages)
207
- : [];
208
- content = {
209
- timestamp: new Date().toISOString(),
210
- sessionID,
211
- metadata,
212
- messages,
213
- ...(reasoningBlocks.length > 0 && {
214
- reasoning: {
215
- count: reasoningBlocks.length,
216
- totalTextCharacters: reasoningBlocks.reduce((sum, b) => sum + b.textLength, 0),
217
- totalEncryptedCharacters: reasoningBlocks.reduce((sum, b) => sum + b.encryptedContentLength, 0),
218
- blocks: reasoningBlocks
219
- }
220
- })
221
- };
222
- }
223
- const jsonString = JSON.stringify(content, null, 2);
224
- await writeFile(filepath, jsonString);
225
- }
226
- catch (error) {
227
- }
228
- }
229
99
  }
230
100
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../lib/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAE5B,MAAM,OAAO,MAAM;IACP,MAAM,CAAQ;IACf,OAAO,CAAS;IAEvB,YAAY,OAAgB;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACL,CAAC;IAEO,UAAU,CAAC,IAAU;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QAEpB,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAQ;YAEnD,0BAA0B;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAQ;gBAChC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YAC7G,CAAC;iBACI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBACjC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBAClB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;gBAC/B,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAA;YACjC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAEO,aAAa,CAAC,aAAqB,CAAC;QACxC,MAAM,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAA;QACzD,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;YACvB,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAA;YAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAqC,CAAA;YACvD,KAAK,CAAC,iBAAiB,GAAG,yBAAyB,CAAA;YAEnD,0DAA0D;YAC1D,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;gBACxC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC7C,uDAAuD;oBACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;oBACjD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;gBACtC,CAAC;YACL,CAAC;YACD,OAAO,SAAS,CAAA;QACpB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAA;QACpB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,SAAiB,EAAE,OAAe,EAAE,IAAU;QAC7E,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEzB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;YAEzB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAErC,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;YAE7G,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC9C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACjD,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAClF,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAU;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAU;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAU;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAU;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export { prune, insertPruneToolContext } from "./prune";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { prune, insertPruneToolContext } from "./prune";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { SessionState, WithParts } from "../state";
2
+ import type { Logger } from "../logger";
3
+ import type { PluginConfig } from "../config";
4
+ export declare const insertPruneToolContext: (state: SessionState, config: PluginConfig, logger: Logger, messages: WithParts[]) => void;
5
+ export declare const prune: (state: SessionState, logger: Logger, config: PluginConfig, messages: WithParts[]) => void;
6
+ //# sourceMappingURL=prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAoC7C,eAAO,MAAM,sBAAsB,GAC/B,OAAO,YAAY,EACnB,QAAQ,YAAY,EACpB,QAAQ,MAAM,EACd,UAAU,SAAS,EAAE,KACtB,IA0CF,CAAA;AAED,eAAO,MAAM,KAAK,GACd,OAAO,YAAY,EACnB,QAAQ,MAAM,EACd,QAAQ,YAAY,EACpB,UAAU,SAAS,EAAE,KACtB,IAEF,CAAA"}
@@ -0,0 +1,85 @@
1
+ import { getLastUserMessage, extractParameterKey, buildToolIdList } from "./utils";
2
+ import { loadPrompt } from "../prompt";
3
+ const PRUNED_TOOL_OUTPUT_REPLACEMENT = '[Output removed to save context - information superseded or no longer needed]';
4
+ const NUDGE_STRING = loadPrompt("nudge");
5
+ const buildPrunableToolsList = (state, config, logger, messages) => {
6
+ const lines = [];
7
+ const toolIdList = buildToolIdList(messages);
8
+ state.toolParameters.forEach((toolParameterEntry, toolCallId) => {
9
+ if (state.prune.toolIds.includes(toolCallId)) {
10
+ return;
11
+ }
12
+ if (config.strategies.pruneTool.protectedTools.includes(toolParameterEntry.tool)) {
13
+ return;
14
+ }
15
+ if (toolParameterEntry.compacted) {
16
+ return;
17
+ }
18
+ const numericId = toolIdList.indexOf(toolCallId);
19
+ const paramKey = extractParameterKey(toolParameterEntry.tool, toolParameterEntry.parameters);
20
+ const description = paramKey ? `${toolParameterEntry.tool}, ${paramKey}` : toolParameterEntry.tool;
21
+ lines.push(`${numericId}: ${description}`);
22
+ logger.debug(`Prunable tool found - ID: ${numericId}, Tool: ${toolParameterEntry.tool}, Call ID: ${toolCallId}`);
23
+ });
24
+ return `<prunable-tools>\nThe following tools have been invoked and are available for pruning. This list does not mandate immediate action. Consider your current goals and the resources you need before discarding valuable tool outputs. Keep the context free of noise.\n${lines.join('\n')}\n</prunable-tools>`;
25
+ };
26
+ export const insertPruneToolContext = (state, config, logger, messages) => {
27
+ if (!config.strategies.pruneTool.enabled) {
28
+ return;
29
+ }
30
+ const lastUserMessage = getLastUserMessage(messages);
31
+ if (!lastUserMessage || lastUserMessage.info.role !== 'user') {
32
+ return;
33
+ }
34
+ const prunableToolsList = buildPrunableToolsList(state, config, logger, messages);
35
+ let nudgeString = "";
36
+ if (state.nudgeCounter >= config.strategies.pruneTool.nudge.frequency) {
37
+ logger.info("Inserting prune nudge message");
38
+ nudgeString = "\n" + NUDGE_STRING;
39
+ }
40
+ const userMessage = {
41
+ info: {
42
+ id: "msg_01234567890123456789012345",
43
+ sessionID: lastUserMessage.info.sessionID,
44
+ role: "user",
45
+ time: { created: Date.now() },
46
+ agent: lastUserMessage.info.agent || "build",
47
+ model: {
48
+ providerID: lastUserMessage.info.model.providerID,
49
+ modelID: lastUserMessage.info.model.modelID
50
+ }
51
+ },
52
+ parts: [
53
+ {
54
+ id: "prt_01234567890123456789012345",
55
+ sessionID: lastUserMessage.info.sessionID,
56
+ messageID: "msg_01234567890123456789012345",
57
+ type: "text",
58
+ text: prunableToolsList + nudgeString,
59
+ }
60
+ ]
61
+ };
62
+ messages.push(userMessage);
63
+ };
64
+ export const prune = (state, logger, config, messages) => {
65
+ pruneToolOutputs(state, logger, messages);
66
+ };
67
+ const pruneToolOutputs = (state, logger, messages) => {
68
+ for (const msg of messages) {
69
+ for (const part of msg.parts) {
70
+ if (part.type !== 'tool') {
71
+ continue;
72
+ }
73
+ if (!state.prune.toolIds.includes(part.callID)) {
74
+ continue;
75
+ }
76
+ if (part.state.status === 'completed') {
77
+ part.state.output = PRUNED_TOOL_OUTPUT_REPLACEMENT;
78
+ }
79
+ // if (part.state.status === 'error') {
80
+ // part.state.error = PRUNED_TOOL_OUTPUT_REPLACEMENT
81
+ // }
82
+ }
83
+ }
84
+ };
85
+ //# sourceMappingURL=prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../../lib/messages/prune.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { WithParts } from "../state";
2
+ /**
3
+ * Extracts a human-readable key from tool metadata for display purposes.
4
+ */
5
+ export declare const extractParameterKey: (tool: string, parameters: any) => string;
6
+ export declare const getLastUserMessage: (messages: WithParts[]) => WithParts | null;
7
+ export declare function findCurrentAgent(messages: WithParts[]): string | undefined;
8
+ export declare function buildToolIdList(messages: WithParts[]): string[];
9
+ export declare function getPruneToolIds(numericToolIds: number[], toolIdList: string[]): string[];
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/messages/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,YAAY,GAAG,KAAG,MAkEnE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC3B,UAAU,SAAS,EAAE,KACtB,SAAS,GAAG,IAQd,CAAA;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,GAAG,SAAS,CAI1E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAY/D;AAED,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAQxF"}