@codeany/open-agent-sdk 0.2.1 → 0.2.2

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 (232) hide show
  1. package/.env.example +8 -0
  2. package/examples/01-simple-query.ts +43 -0
  3. package/examples/02-multi-tool.ts +44 -0
  4. package/examples/03-multi-turn.ts +39 -0
  5. package/examples/04-prompt-api.ts +29 -0
  6. package/examples/05-custom-system-prompt.ts +26 -0
  7. package/examples/06-mcp-server.ts +49 -0
  8. package/examples/07-custom-tools.ts +87 -0
  9. package/examples/08-official-api-compat.ts +38 -0
  10. package/examples/09-subagents.ts +48 -0
  11. package/examples/10-permissions.ts +40 -0
  12. package/examples/11-custom-mcp-tools.ts +101 -0
  13. package/examples/12-skills.ts +88 -0
  14. package/examples/13-hooks.ts +88 -0
  15. package/examples/14-openai-compat.ts +71 -0
  16. package/examples/web/index.html +365 -0
  17. package/examples/web/server.ts +157 -0
  18. package/package.json +1 -7
  19. package/src/engine.ts +3 -0
  20. package/tsconfig.json +19 -0
  21. package/dist/agent.d.ts +0 -113
  22. package/dist/agent.d.ts.map +0 -1
  23. package/dist/agent.js +0 -446
  24. package/dist/agent.js.map +0 -1
  25. package/dist/engine.d.ts +0 -62
  26. package/dist/engine.d.ts.map +0 -1
  27. package/dist/engine.js +0 -494
  28. package/dist/engine.js.map +0 -1
  29. package/dist/hooks.d.ts +0 -111
  30. package/dist/hooks.d.ts.map +0 -1
  31. package/dist/hooks.js +0 -179
  32. package/dist/hooks.js.map +0 -1
  33. package/dist/index.d.ts +0 -66
  34. package/dist/index.d.ts.map +0 -1
  35. package/dist/index.js +0 -133
  36. package/dist/index.js.map +0 -1
  37. package/dist/mcp/client.d.ts +0 -19
  38. package/dist/mcp/client.d.ts.map +0 -1
  39. package/dist/mcp/client.js +0 -126
  40. package/dist/mcp/client.js.map +0 -1
  41. package/dist/providers/anthropic.d.ts +0 -17
  42. package/dist/providers/anthropic.d.ts.map +0 -1
  43. package/dist/providers/anthropic.js +0 -47
  44. package/dist/providers/anthropic.js.map +0 -1
  45. package/dist/providers/index.d.ts +0 -20
  46. package/dist/providers/index.d.ts.map +0 -1
  47. package/dist/providers/index.js +0 -26
  48. package/dist/providers/index.js.map +0 -1
  49. package/dist/providers/openai.d.ts +0 -26
  50. package/dist/providers/openai.d.ts.map +0 -1
  51. package/dist/providers/openai.js +0 -212
  52. package/dist/providers/openai.js.map +0 -1
  53. package/dist/providers/types.d.ts +0 -84
  54. package/dist/providers/types.d.ts.map +0 -1
  55. package/dist/providers/types.js +0 -11
  56. package/dist/providers/types.js.map +0 -1
  57. package/dist/sdk-mcp-server.d.ts +0 -52
  58. package/dist/sdk-mcp-server.d.ts.map +0 -1
  59. package/dist/sdk-mcp-server.js +0 -57
  60. package/dist/sdk-mcp-server.js.map +0 -1
  61. package/dist/session.d.ts +0 -73
  62. package/dist/session.d.ts.map +0 -1
  63. package/dist/session.js +0 -159
  64. package/dist/session.js.map +0 -1
  65. package/dist/skills/bundled/commit.d.ts +0 -7
  66. package/dist/skills/bundled/commit.d.ts.map +0 -1
  67. package/dist/skills/bundled/commit.js +0 -35
  68. package/dist/skills/bundled/commit.js.map +0 -1
  69. package/dist/skills/bundled/debug.d.ts +0 -7
  70. package/dist/skills/bundled/debug.d.ts.map +0 -1
  71. package/dist/skills/bundled/debug.js +0 -46
  72. package/dist/skills/bundled/debug.js.map +0 -1
  73. package/dist/skills/bundled/index.d.ts +0 -11
  74. package/dist/skills/bundled/index.d.ts.map +0 -1
  75. package/dist/skills/bundled/index.js +0 -26
  76. package/dist/skills/bundled/index.js.map +0 -1
  77. package/dist/skills/bundled/review.d.ts +0 -7
  78. package/dist/skills/bundled/review.d.ts.map +0 -1
  79. package/dist/skills/bundled/review.js +0 -38
  80. package/dist/skills/bundled/review.js.map +0 -1
  81. package/dist/skills/bundled/simplify.d.ts +0 -8
  82. package/dist/skills/bundled/simplify.d.ts.map +0 -1
  83. package/dist/skills/bundled/simplify.js +0 -48
  84. package/dist/skills/bundled/simplify.js.map +0 -1
  85. package/dist/skills/bundled/test.d.ts +0 -7
  86. package/dist/skills/bundled/test.d.ts.map +0 -1
  87. package/dist/skills/bundled/test.js +0 -40
  88. package/dist/skills/bundled/test.js.map +0 -1
  89. package/dist/skills/index.d.ts +0 -7
  90. package/dist/skills/index.d.ts.map +0 -1
  91. package/dist/skills/index.js +0 -8
  92. package/dist/skills/index.js.map +0 -1
  93. package/dist/skills/registry.d.ts +0 -43
  94. package/dist/skills/registry.d.ts.map +0 -1
  95. package/dist/skills/registry.js +0 -111
  96. package/dist/skills/registry.js.map +0 -1
  97. package/dist/skills/types.d.ts +0 -83
  98. package/dist/skills/types.d.ts.map +0 -1
  99. package/dist/skills/types.js +0 -8
  100. package/dist/skills/types.js.map +0 -1
  101. package/dist/tool-helper.d.ts +0 -73
  102. package/dist/tool-helper.d.ts.map +0 -1
  103. package/dist/tool-helper.js +0 -86
  104. package/dist/tool-helper.js.map +0 -1
  105. package/dist/tools/agent-tool.d.ts +0 -17
  106. package/dist/tools/agent-tool.d.ts.map +0 -1
  107. package/dist/tools/agent-tool.js +0 -146
  108. package/dist/tools/agent-tool.js.map +0 -1
  109. package/dist/tools/ask-user.d.ts +0 -18
  110. package/dist/tools/ask-user.d.ts.map +0 -1
  111. package/dist/tools/ask-user.js +0 -72
  112. package/dist/tools/ask-user.js.map +0 -1
  113. package/dist/tools/bash.d.ts +0 -5
  114. package/dist/tools/bash.d.ts.map +0 -1
  115. package/dist/tools/bash.js +0 -67
  116. package/dist/tools/bash.js.map +0 -1
  117. package/dist/tools/config-tool.d.ts +0 -20
  118. package/dist/tools/config-tool.d.ts.map +0 -1
  119. package/dist/tools/config-tool.js +0 -83
  120. package/dist/tools/config-tool.js.map +0 -1
  121. package/dist/tools/cron-tools.d.ts +0 -33
  122. package/dist/tools/cron-tools.d.ts.map +0 -1
  123. package/dist/tools/cron-tools.js +0 -128
  124. package/dist/tools/cron-tools.js.map +0 -1
  125. package/dist/tools/edit.d.ts +0 -5
  126. package/dist/tools/edit.d.ts.map +0 -1
  127. package/dist/tools/edit.js +0 -70
  128. package/dist/tools/edit.js.map +0 -1
  129. package/dist/tools/glob.d.ts +0 -5
  130. package/dist/tools/glob.d.ts.map +0 -1
  131. package/dist/tools/glob.js +0 -75
  132. package/dist/tools/glob.js.map +0 -1
  133. package/dist/tools/grep.d.ts +0 -5
  134. package/dist/tools/grep.d.ts.map +0 -1
  135. package/dist/tools/grep.js +0 -168
  136. package/dist/tools/grep.js.map +0 -1
  137. package/dist/tools/index.d.ts +0 -45
  138. package/dist/tools/index.d.ts.map +0 -1
  139. package/dist/tools/index.js +0 -162
  140. package/dist/tools/index.js.map +0 -1
  141. package/dist/tools/lsp-tool.d.ts +0 -9
  142. package/dist/tools/lsp-tool.d.ts.map +0 -1
  143. package/dist/tools/lsp-tool.js +0 -137
  144. package/dist/tools/lsp-tool.js.map +0 -1
  145. package/dist/tools/mcp-resource-tools.d.ts +0 -14
  146. package/dist/tools/mcp-resource-tools.d.ts.map +0 -1
  147. package/dist/tools/mcp-resource-tools.js +0 -117
  148. package/dist/tools/mcp-resource-tools.js.map +0 -1
  149. package/dist/tools/notebook-edit.d.ts +0 -5
  150. package/dist/tools/notebook-edit.d.ts.map +0 -1
  151. package/dist/tools/notebook-edit.js +0 -85
  152. package/dist/tools/notebook-edit.js.map +0 -1
  153. package/dist/tools/plan-tools.d.ts +0 -12
  154. package/dist/tools/plan-tools.d.ts.map +0 -1
  155. package/dist/tools/plan-tools.js +0 -77
  156. package/dist/tools/plan-tools.js.map +0 -1
  157. package/dist/tools/read.d.ts +0 -5
  158. package/dist/tools/read.d.ts.map +0 -1
  159. package/dist/tools/read.js +0 -66
  160. package/dist/tools/read.js.map +0 -1
  161. package/dist/tools/send-message.d.ts +0 -31
  162. package/dist/tools/send-message.d.ts.map +0 -1
  163. package/dist/tools/send-message.js +0 -77
  164. package/dist/tools/send-message.js.map +0 -1
  165. package/dist/tools/skill-tool.d.ts +0 -9
  166. package/dist/tools/skill-tool.d.ts.map +0 -1
  167. package/dist/tools/skill-tool.js +0 -115
  168. package/dist/tools/skill-tool.js.map +0 -1
  169. package/dist/tools/task-tools.d.ts +0 -48
  170. package/dist/tools/task-tools.d.ts.map +0 -1
  171. package/dist/tools/task-tools.js +0 -242
  172. package/dist/tools/task-tools.js.map +0 -1
  173. package/dist/tools/team-tools.d.ts +0 -34
  174. package/dist/tools/team-tools.d.ts.map +0 -1
  175. package/dist/tools/team-tools.js +0 -103
  176. package/dist/tools/team-tools.js.map +0 -1
  177. package/dist/tools/todo-tool.d.ts +0 -22
  178. package/dist/tools/todo-tool.d.ts.map +0 -1
  179. package/dist/tools/todo-tool.js +0 -93
  180. package/dist/tools/todo-tool.js.map +0 -1
  181. package/dist/tools/tool-search.d.ts +0 -13
  182. package/dist/tools/tool-search.d.ts.map +0 -1
  183. package/dist/tools/tool-search.js +0 -76
  184. package/dist/tools/tool-search.js.map +0 -1
  185. package/dist/tools/types.d.ts +0 -29
  186. package/dist/tools/types.d.ts.map +0 -1
  187. package/dist/tools/types.js +0 -52
  188. package/dist/tools/types.js.map +0 -1
  189. package/dist/tools/web-fetch.d.ts +0 -5
  190. package/dist/tools/web-fetch.d.ts.map +0 -1
  191. package/dist/tools/web-fetch.js +0 -60
  192. package/dist/tools/web-fetch.js.map +0 -1
  193. package/dist/tools/web-search.d.ts +0 -5
  194. package/dist/tools/web-search.d.ts.map +0 -1
  195. package/dist/tools/web-search.js +0 -77
  196. package/dist/tools/web-search.js.map +0 -1
  197. package/dist/tools/worktree-tools.d.ts +0 -10
  198. package/dist/tools/worktree-tools.d.ts.map +0 -1
  199. package/dist/tools/worktree-tools.js +0 -130
  200. package/dist/tools/worktree-tools.js.map +0 -1
  201. package/dist/tools/write.d.ts +0 -5
  202. package/dist/tools/write.d.ts.map +0 -1
  203. package/dist/tools/write.js +0 -40
  204. package/dist/tools/write.js.map +0 -1
  205. package/dist/types.d.ts +0 -423
  206. package/dist/types.d.ts.map +0 -1
  207. package/dist/types.js +0 -5
  208. package/dist/types.js.map +0 -1
  209. package/dist/utils/compact.d.ts +0 -44
  210. package/dist/utils/compact.d.ts.map +0 -1
  211. package/dist/utils/compact.js +0 -162
  212. package/dist/utils/compact.js.map +0 -1
  213. package/dist/utils/context.d.ts +0 -35
  214. package/dist/utils/context.d.ts.map +0 -1
  215. package/dist/utils/context.js +0 -174
  216. package/dist/utils/context.js.map +0 -1
  217. package/dist/utils/fileCache.d.ts +0 -64
  218. package/dist/utils/fileCache.d.ts.map +0 -1
  219. package/dist/utils/fileCache.js +0 -117
  220. package/dist/utils/fileCache.js.map +0 -1
  221. package/dist/utils/messages.d.ts +0 -57
  222. package/dist/utils/messages.d.ts.map +0 -1
  223. package/dist/utils/messages.js +0 -152
  224. package/dist/utils/messages.js.map +0 -1
  225. package/dist/utils/retry.d.ts +0 -48
  226. package/dist/utils/retry.d.ts.map +0 -1
  227. package/dist/utils/retry.js +0 -111
  228. package/dist/utils/retry.js.map +0 -1
  229. package/dist/utils/tokens.d.ts +0 -57
  230. package/dist/utils/tokens.d.ts.map +0 -1
  231. package/dist/utils/tokens.js +0 -134
  232. package/dist/utils/tokens.js.map +0 -1
@@ -1,152 +0,0 @@
1
- /**
2
- * Message Utilities
3
- *
4
- * Message creation factories, normalization for API,
5
- * synthetic placeholders, and content processing.
6
- */
7
- /**
8
- * Create a user message.
9
- */
10
- export function createUserMessage(content, options) {
11
- return {
12
- type: 'user',
13
- message: {
14
- role: 'user',
15
- content,
16
- },
17
- uuid: options?.uuid || crypto.randomUUID(),
18
- timestamp: new Date().toISOString(),
19
- };
20
- }
21
- /**
22
- * Create an assistant message.
23
- */
24
- export function createAssistantMessage(content, usage) {
25
- return {
26
- type: 'assistant',
27
- message: {
28
- role: 'assistant',
29
- content,
30
- },
31
- uuid: crypto.randomUUID(),
32
- timestamp: new Date().toISOString(),
33
- usage,
34
- };
35
- }
36
- /**
37
- * Normalize messages for the LLM API.
38
- * Ensures proper message format, strips internal metadata,
39
- * and fixes tool result pairing.
40
- */
41
- export function normalizeMessagesForAPI(messages) {
42
- const normalized = [];
43
- for (let i = 0; i < messages.length; i++) {
44
- const msg = messages[i];
45
- // Ensure alternating user/assistant messages
46
- if (normalized.length > 0) {
47
- const last = normalized[normalized.length - 1];
48
- if (last.role === msg.role) {
49
- // Merge same-role messages
50
- if (msg.role === 'user') {
51
- // Combine content
52
- const lastContent = typeof last.content === 'string'
53
- ? [{ type: 'text', text: last.content }]
54
- : last.content;
55
- const newContent = typeof msg.content === 'string'
56
- ? [{ type: 'text', text: msg.content }]
57
- : msg.content;
58
- normalized[normalized.length - 1] = {
59
- role: 'user',
60
- content: [...lastContent, ...newContent],
61
- };
62
- continue;
63
- }
64
- }
65
- }
66
- normalized.push({ ...msg });
67
- }
68
- // Ensure tool results are properly paired with tool_use
69
- return fixToolResultPairing(normalized);
70
- }
71
- /**
72
- * Fix tool result pairing: ensure every tool_result has a
73
- * matching tool_use in the previous assistant message.
74
- */
75
- function fixToolResultPairing(messages) {
76
- const result = [];
77
- for (let i = 0; i < messages.length; i++) {
78
- const msg = messages[i];
79
- if (msg.role === 'user' && Array.isArray(msg.content)) {
80
- // Check for tool_result blocks
81
- const toolResults = msg.content.filter((block) => block.type === 'tool_result');
82
- if (toolResults.length > 0 && result.length > 0) {
83
- // Find the previous assistant message
84
- const prevAssistant = result[result.length - 1];
85
- if (prevAssistant.role === 'assistant' && Array.isArray(prevAssistant.content)) {
86
- const toolUseIds = new Set(prevAssistant.content
87
- .filter((b) => b.type === 'tool_use')
88
- .map((b) => b.id));
89
- // Filter out orphaned tool results
90
- const validContent = msg.content.filter((block) => {
91
- if (block.type === 'tool_result') {
92
- return toolUseIds.has(block.tool_use_id);
93
- }
94
- return true;
95
- });
96
- if (validContent.length > 0) {
97
- result.push({ ...msg, content: validContent });
98
- }
99
- continue;
100
- }
101
- }
102
- }
103
- result.push(msg);
104
- }
105
- return result;
106
- }
107
- /**
108
- * Strip images from messages (for compaction).
109
- */
110
- export function stripImagesFromMessages(messages) {
111
- return messages.map((msg) => {
112
- if (typeof msg.content === 'string')
113
- return msg;
114
- if (!Array.isArray(msg.content))
115
- return msg;
116
- const filtered = msg.content.filter((block) => block.type !== 'image');
117
- return {
118
- ...msg,
119
- content: filtered.length > 0 ? filtered : '[content removed]',
120
- };
121
- });
122
- }
123
- /**
124
- * Extract text from message content blocks.
125
- */
126
- export function extractTextFromContent(content) {
127
- if (typeof content === 'string')
128
- return content;
129
- return content
130
- .filter((b) => b.type === 'text')
131
- .map((b) => b.text)
132
- .join('');
133
- }
134
- /**
135
- * Create a system message for compact boundary.
136
- */
137
- export function createCompactBoundaryMessage() {
138
- return {
139
- role: 'user',
140
- content: '[Previous context has been summarized above. Continuing conversation.]',
141
- };
142
- }
143
- /**
144
- * Truncate text to max length with ellipsis.
145
- */
146
- export function truncateText(text, maxLength) {
147
- if (text.length <= maxLength)
148
- return text;
149
- const half = Math.floor(maxLength / 2);
150
- return text.slice(0, half) + '\n...(truncated)...\n' + text.slice(-half);
151
- }
152
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Retry Logic with Exponential Backoff
3
- *
4
- * Handles API retries for rate limits, overloaded servers,
5
- * and transient failures.
6
- */
7
- /**
8
- * Retry configuration.
9
- */
10
- export interface RetryConfig {
11
- maxRetries: number;
12
- baseDelayMs: number;
13
- maxDelayMs: number;
14
- retryableStatusCodes: number[];
15
- }
16
- /**
17
- * Default retry configuration.
18
- */
19
- export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
20
- /**
21
- * Check if an error is retryable.
22
- */
23
- export declare function isRetryableError(err: any, config?: RetryConfig): boolean;
24
- /**
25
- * Calculate delay for exponential backoff.
26
- */
27
- export declare function getRetryDelay(attempt: number, config?: RetryConfig): number;
28
- /**
29
- * Execute a function with retries.
30
- */
31
- export declare function withRetry<T>(fn: () => Promise<T>, config?: RetryConfig, abortSignal?: AbortSignal): Promise<T>;
32
- /**
33
- * Check if an error is a "prompt too long" error.
34
- */
35
- export declare function isPromptTooLongError(err: any): boolean;
36
- /**
37
- * Check if error is an auth error.
38
- */
39
- export declare function isAuthError(err: any): boolean;
40
- /**
41
- * Check if error is a rate limit error.
42
- */
43
- export declare function isRateLimitError(err: any): boolean;
44
- /**
45
- * Format an API error for display.
46
- */
47
- export declare function formatApiError(err: any): string;
48
- //# sourceMappingURL=retry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAA;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,GAAE,WAAkC,GAAG,OAAO,CAgB9F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,WAAkC,GAAG,MAAM,CAKjG;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,GAAE,WAAkC,EAC1C,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,CAAC,CAAC,CA4BZ;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAQtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAc/C"}
@@ -1,111 +0,0 @@
1
- /**
2
- * Retry Logic with Exponential Backoff
3
- *
4
- * Handles API retries for rate limits, overloaded servers,
5
- * and transient failures.
6
- */
7
- /**
8
- * Default retry configuration.
9
- */
10
- export const DEFAULT_RETRY_CONFIG = {
11
- maxRetries: 3,
12
- baseDelayMs: 2000,
13
- maxDelayMs: 30000,
14
- retryableStatusCodes: [429, 500, 502, 503, 529],
15
- };
16
- /**
17
- * Check if an error is retryable.
18
- */
19
- export function isRetryableError(err, config = DEFAULT_RETRY_CONFIG) {
20
- if (err?.status && config.retryableStatusCodes.includes(err.status)) {
21
- return true;
22
- }
23
- // Network errors
24
- if (err?.code === 'ECONNRESET' || err?.code === 'ETIMEDOUT' || err?.code === 'ECONNREFUSED') {
25
- return true;
26
- }
27
- // API overloaded
28
- if (err?.error?.type === 'overloaded_error') {
29
- return true;
30
- }
31
- return false;
32
- }
33
- /**
34
- * Calculate delay for exponential backoff.
35
- */
36
- export function getRetryDelay(attempt, config = DEFAULT_RETRY_CONFIG) {
37
- const delay = config.baseDelayMs * Math.pow(2, attempt);
38
- // Add jitter (±25%)
39
- const jitter = delay * 0.25 * (Math.random() * 2 - 1);
40
- return Math.min(delay + jitter, config.maxDelayMs);
41
- }
42
- /**
43
- * Execute a function with retries.
44
- */
45
- export async function withRetry(fn, config = DEFAULT_RETRY_CONFIG, abortSignal) {
46
- let lastError;
47
- for (let attempt = 0; attempt <= config.maxRetries; attempt++) {
48
- if (abortSignal?.aborted) {
49
- throw new Error('Aborted');
50
- }
51
- try {
52
- return await fn();
53
- }
54
- catch (err) {
55
- lastError = err;
56
- if (!isRetryableError(err, config)) {
57
- throw err;
58
- }
59
- if (attempt === config.maxRetries) {
60
- throw err;
61
- }
62
- // Wait before retry
63
- const delay = getRetryDelay(attempt, config);
64
- await new Promise((resolve) => setTimeout(resolve, delay));
65
- }
66
- }
67
- throw lastError;
68
- }
69
- /**
70
- * Check if an error is a "prompt too long" error.
71
- */
72
- export function isPromptTooLongError(err) {
73
- if (err?.status === 400) {
74
- const message = err?.error?.error?.message || err?.message || '';
75
- return message.includes('prompt is too long') ||
76
- message.includes('max_tokens') ||
77
- message.includes('context length');
78
- }
79
- return false;
80
- }
81
- /**
82
- * Check if error is an auth error.
83
- */
84
- export function isAuthError(err) {
85
- return err?.status === 401 || err?.status === 403;
86
- }
87
- /**
88
- * Check if error is a rate limit error.
89
- */
90
- export function isRateLimitError(err) {
91
- return err?.status === 429;
92
- }
93
- /**
94
- * Format an API error for display.
95
- */
96
- export function formatApiError(err) {
97
- if (isAuthError(err)) {
98
- return 'Authentication failed. Check your CODEANY_API_KEY.';
99
- }
100
- if (isRateLimitError(err)) {
101
- return 'Rate limit exceeded. Please retry after a short wait.';
102
- }
103
- if (err?.status === 529) {
104
- return 'API overloaded. Please retry later.';
105
- }
106
- if (isPromptTooLongError(err)) {
107
- return 'Prompt too long. Auto-compacting conversation...';
108
- }
109
- return `API error: ${err.message || err}`;
110
- }
111
- //# sourceMappingURL=retry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Token Estimation & Counting
3
- *
4
- * Provides rough token estimation (character-based) and
5
- * API-based exact counting when available.
6
- */
7
- /**
8
- * Rough token estimation: ~4 chars per token (conservative).
9
- */
10
- export declare function estimateTokens(text: string): number;
11
- /**
12
- * Estimate tokens for a message array.
13
- */
14
- export declare function estimateMessagesTokens(messages: Array<{
15
- role: string;
16
- content: any;
17
- }>): number;
18
- /**
19
- * Estimate tokens for a system prompt.
20
- */
21
- export declare function estimateSystemPromptTokens(systemPrompt: string): number;
22
- /**
23
- * Count tokens from API usage response.
24
- */
25
- export declare function getTokenCountFromUsage(usage: {
26
- input_tokens: number;
27
- output_tokens: number;
28
- cache_creation_input_tokens?: number;
29
- cache_read_input_tokens?: number;
30
- }): number;
31
- /**
32
- * Get the context window size for a model.
33
- */
34
- export declare function getContextWindowSize(model: string): number;
35
- /**
36
- * Auto-compact buffer: trigger compaction when within this many tokens of the limit.
37
- */
38
- export declare const AUTOCOMPACT_BUFFER_TOKENS = 13000;
39
- /**
40
- * Get the auto-compact threshold for a model.
41
- */
42
- export declare function getAutoCompactThreshold(model: string): number;
43
- /**
44
- * Model pricing (USD per token).
45
- */
46
- export declare const MODEL_PRICING: Record<string, {
47
- input: number;
48
- output: number;
49
- }>;
50
- /**
51
- * Estimate cost from usage and model.
52
- */
53
- export declare function estimateCost(model: string, usage: {
54
- input_tokens: number;
55
- output_tokens: number;
56
- }): number;
57
- //# sourceMappingURL=tokens.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,GAC9C,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,GAAG,MAAM,CAOT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAuB1D;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAA;AAE/C;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAuB3E,CAAA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACrD,MAAM,CAMR"}
@@ -1,134 +0,0 @@
1
- /**
2
- * Token Estimation & Counting
3
- *
4
- * Provides rough token estimation (character-based) and
5
- * API-based exact counting when available.
6
- */
7
- /**
8
- * Rough token estimation: ~4 chars per token (conservative).
9
- */
10
- export function estimateTokens(text) {
11
- return Math.ceil(text.length / 4);
12
- }
13
- /**
14
- * Estimate tokens for a message array.
15
- */
16
- export function estimateMessagesTokens(messages) {
17
- let total = 0;
18
- for (const msg of messages) {
19
- if (typeof msg.content === 'string') {
20
- total += estimateTokens(msg.content);
21
- }
22
- else if (Array.isArray(msg.content)) {
23
- for (const block of msg.content) {
24
- if ('text' in block && typeof block.text === 'string') {
25
- total += estimateTokens(block.text);
26
- }
27
- else if ('content' in block && typeof block.content === 'string') {
28
- total += estimateTokens(block.content);
29
- }
30
- else {
31
- // tool_use, image, etc - rough estimate
32
- total += estimateTokens(JSON.stringify(block));
33
- }
34
- }
35
- }
36
- }
37
- return total;
38
- }
39
- /**
40
- * Estimate tokens for a system prompt.
41
- */
42
- export function estimateSystemPromptTokens(systemPrompt) {
43
- return estimateTokens(systemPrompt);
44
- }
45
- /**
46
- * Count tokens from API usage response.
47
- */
48
- export function getTokenCountFromUsage(usage) {
49
- return (usage.input_tokens +
50
- usage.output_tokens +
51
- (usage.cache_creation_input_tokens || 0) +
52
- (usage.cache_read_input_tokens || 0));
53
- }
54
- /**
55
- * Get the context window size for a model.
56
- */
57
- export function getContextWindowSize(model) {
58
- // Anthropic model context windows
59
- if (model.includes('opus-4') && model.includes('1m'))
60
- return 1_000_000;
61
- if (model.includes('opus-4'))
62
- return 200_000;
63
- if (model.includes('sonnet-4'))
64
- return 200_000;
65
- if (model.includes('haiku-4'))
66
- return 200_000;
67
- if (model.includes('claude-3'))
68
- return 200_000;
69
- // OpenAI model context windows
70
- if (model.includes('gpt-4o'))
71
- return 128_000;
72
- if (model.includes('gpt-4-turbo'))
73
- return 128_000;
74
- if (model.includes('gpt-4-1'))
75
- return 1_000_000;
76
- if (model.includes('gpt-4'))
77
- return 128_000;
78
- if (model.includes('gpt-3.5'))
79
- return 16_385;
80
- if (model.includes('o1'))
81
- return 200_000;
82
- if (model.includes('o3'))
83
- return 200_000;
84
- if (model.includes('o4'))
85
- return 200_000;
86
- // DeepSeek models
87
- if (model.includes('deepseek'))
88
- return 128_000;
89
- // Default
90
- return 200_000;
91
- }
92
- /**
93
- * Auto-compact buffer: trigger compaction when within this many tokens of the limit.
94
- */
95
- export const AUTOCOMPACT_BUFFER_TOKENS = 13_000;
96
- /**
97
- * Get the auto-compact threshold for a model.
98
- */
99
- export function getAutoCompactThreshold(model) {
100
- return getContextWindowSize(model) - AUTOCOMPACT_BUFFER_TOKENS;
101
- }
102
- /**
103
- * Model pricing (USD per token).
104
- */
105
- export const MODEL_PRICING = {
106
- // Anthropic models
107
- 'claude-opus-4-6': { input: 15 / 1_000_000, output: 75 / 1_000_000 },
108
- 'claude-opus-4-5': { input: 15 / 1_000_000, output: 75 / 1_000_000 },
109
- 'claude-sonnet-4-6': { input: 3 / 1_000_000, output: 15 / 1_000_000 },
110
- 'claude-sonnet-4-5': { input: 3 / 1_000_000, output: 15 / 1_000_000 },
111
- 'claude-haiku-4-5': { input: 0.8 / 1_000_000, output: 4 / 1_000_000 },
112
- 'claude-3-5-sonnet': { input: 3 / 1_000_000, output: 15 / 1_000_000 },
113
- 'claude-3-5-haiku': { input: 0.8 / 1_000_000, output: 4 / 1_000_000 },
114
- 'claude-3-opus': { input: 15 / 1_000_000, output: 75 / 1_000_000 },
115
- // OpenAI models
116
- 'gpt-4o': { input: 2.5 / 1_000_000, output: 10 / 1_000_000 },
117
- 'gpt-4o-mini': { input: 0.15 / 1_000_000, output: 0.6 / 1_000_000 },
118
- 'gpt-4-turbo': { input: 10 / 1_000_000, output: 30 / 1_000_000 },
119
- 'gpt-4-1': { input: 2 / 1_000_000, output: 8 / 1_000_000 },
120
- 'o1': { input: 15 / 1_000_000, output: 60 / 1_000_000 },
121
- 'o3': { input: 10 / 1_000_000, output: 40 / 1_000_000 },
122
- 'o4-mini': { input: 1.1 / 1_000_000, output: 4.4 / 1_000_000 },
123
- // DeepSeek models
124
- 'deepseek-chat': { input: 0.27 / 1_000_000, output: 1.1 / 1_000_000 },
125
- 'deepseek-reasoner': { input: 0.55 / 1_000_000, output: 2.19 / 1_000_000 },
126
- };
127
- /**
128
- * Estimate cost from usage and model.
129
- */
130
- export function estimateCost(model, usage) {
131
- const pricing = Object.entries(MODEL_PRICING).find(([key]) => model.includes(key))?.[1] ?? { input: 3 / 1_000_000, output: 15 / 1_000_000 };
132
- return usage.input_tokens * pricing.input + usage.output_tokens * pricing.output;
133
- }
134
- //# sourceMappingURL=tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"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"}