@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,162 +0,0 @@
1
- /**
2
- * Context Compression / Auto-Compaction
3
- *
4
- * Summarizes long conversation histories when context window fills up.
5
- * Three-tier system:
6
- * 1. Auto-compact: triggered when tokens exceed threshold
7
- * 2. Micro-compact: cache-aware per-request optimization
8
- * 3. Session memory compaction: consolidates across sessions
9
- */
10
- import { estimateMessagesTokens, getAutoCompactThreshold, } from './tokens.js';
11
- /**
12
- * Create initial auto-compact state.
13
- */
14
- export function createAutoCompactState() {
15
- return {
16
- compacted: false,
17
- turnCounter: 0,
18
- consecutiveFailures: 0,
19
- };
20
- }
21
- /**
22
- * Check if auto-compaction should trigger.
23
- */
24
- export function shouldAutoCompact(messages, model, state) {
25
- if (state.consecutiveFailures >= 3)
26
- return false;
27
- const estimatedTokens = estimateMessagesTokens(messages);
28
- const threshold = getAutoCompactThreshold(model);
29
- return estimatedTokens >= threshold;
30
- }
31
- /**
32
- * Compact conversation by summarizing with the LLM.
33
- *
34
- * Sends the entire conversation to the LLM for summarization,
35
- * then replaces the history with a compact summary.
36
- */
37
- export async function compactConversation(provider, model, messages, state) {
38
- try {
39
- // Strip images before compacting to save tokens
40
- const strippedMessages = stripImagesFromMessages(messages);
41
- // Build compaction prompt
42
- const compactionPrompt = buildCompactionPrompt(strippedMessages);
43
- const response = await provider.createMessage({
44
- model,
45
- maxTokens: 8192,
46
- system: 'You are a conversation summarizer. Create a detailed summary of the conversation that preserves all important context, decisions made, files modified, tool outputs, and current state. The summary should allow the conversation to continue seamlessly.',
47
- messages: [
48
- {
49
- role: 'user',
50
- content: compactionPrompt,
51
- },
52
- ],
53
- });
54
- const summary = response.content
55
- .filter((b) => b.type === 'text')
56
- .map((b) => b.text)
57
- .join('\n');
58
- // Replace messages with summary
59
- const compactedMessages = [
60
- {
61
- role: 'user',
62
- content: `[Previous conversation summary]\n\n${summary}\n\n[End of summary - conversation continues below]`,
63
- },
64
- {
65
- role: 'assistant',
66
- content: 'I understand the context from the previous conversation. I\'ll continue from where we left off.',
67
- },
68
- ];
69
- return {
70
- compactedMessages,
71
- summary,
72
- state: {
73
- compacted: true,
74
- turnCounter: state.turnCounter,
75
- consecutiveFailures: 0,
76
- },
77
- };
78
- }
79
- catch (err) {
80
- return {
81
- compactedMessages: messages,
82
- summary: '',
83
- state: {
84
- ...state,
85
- consecutiveFailures: state.consecutiveFailures + 1,
86
- },
87
- };
88
- }
89
- }
90
- /**
91
- * Strip images from messages for compaction safety.
92
- */
93
- function stripImagesFromMessages(messages) {
94
- return messages.map((msg) => {
95
- if (typeof msg.content === 'string')
96
- return msg;
97
- const filtered = msg.content.filter((block) => {
98
- return block.type !== 'image';
99
- });
100
- return { ...msg, content: filtered.length > 0 ? filtered : '[content removed for compaction]' };
101
- });
102
- }
103
- /**
104
- * Build compaction prompt from messages.
105
- */
106
- function buildCompactionPrompt(messages) {
107
- const parts = ['Please summarize this conversation:\n'];
108
- for (const msg of messages) {
109
- const role = msg.role === 'user' ? 'User' : 'Assistant';
110
- if (typeof msg.content === 'string') {
111
- parts.push(`${role}: ${msg.content.slice(0, 5000)}`);
112
- }
113
- else if (Array.isArray(msg.content)) {
114
- const texts = [];
115
- for (const block of msg.content) {
116
- if (block.type === 'text') {
117
- texts.push(block.text.slice(0, 3000));
118
- }
119
- else if (block.type === 'tool_use') {
120
- texts.push(`[Tool: ${block.name}]`);
121
- }
122
- else if (block.type === 'tool_result') {
123
- const content = typeof block.content === 'string'
124
- ? block.content.slice(0, 1000)
125
- : '[tool result]';
126
- texts.push(`[Tool Result: ${content}]`);
127
- }
128
- }
129
- if (texts.length > 0) {
130
- parts.push(`${role}: ${texts.join('\n')}`);
131
- }
132
- }
133
- }
134
- return parts.join('\n\n');
135
- }
136
- /**
137
- * Micro-compact: optimize messages by truncating large tool results
138
- * to fit within token budgets.
139
- */
140
- export function microCompactMessages(messages, maxToolResultChars = 50000) {
141
- return messages.map((msg) => {
142
- if (typeof msg.content === 'string')
143
- return msg;
144
- if (!Array.isArray(msg.content))
145
- return msg;
146
- const content = msg.content.map((block) => {
147
- if (block.type === 'tool_result' && typeof block.content === 'string') {
148
- if (block.content.length > maxToolResultChars) {
149
- return {
150
- ...block,
151
- content: block.content.slice(0, maxToolResultChars / 2) +
152
- '\n...(truncated)...\n' +
153
- block.content.slice(-maxToolResultChars / 2),
154
- };
155
- }
156
- }
157
- return block;
158
- });
159
- return { ...msg, content };
160
- });
161
- }
162
- //# sourceMappingURL=compact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../src/utils/compact.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * System & User Context
3
- *
4
- * Builds context for the system prompt:
5
- * - Git status injection (branch, commits, status)
6
- * - AGENT.md / project context discovery and injection
7
- * - Working directory info
8
- * - Date injection
9
- */
10
- /**
11
- * Get git status info for system prompt.
12
- * Memoized per cwd (cleared on new session).
13
- */
14
- export declare function getGitStatus(cwd: string): Promise<string>;
15
- /**
16
- * Discover project context files (AGENT.md, CLAUDE.md) in the project.
17
- */
18
- export declare function discoverProjectContextFiles(cwd: string): Promise<string[]>;
19
- /**
20
- * Read project context file content from discovered files.
21
- */
22
- export declare function readProjectContextContent(cwd: string): Promise<string>;
23
- /**
24
- * Get system context for the system prompt.
25
- */
26
- export declare function getSystemContext(cwd: string): Promise<string>;
27
- /**
28
- * Get user context (AGENT.md, date, etc).
29
- */
30
- export declare function getUserContext(cwd: string): Promise<string>;
31
- /**
32
- * Clear memoized context (call between sessions).
33
- */
34
- export declare function clearContextCache(): void;
35
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwD/D;AAkBD;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BhF;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASnE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAajE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC"}
@@ -1,174 +0,0 @@
1
- /**
2
- * System & User Context
3
- *
4
- * Builds context for the system prompt:
5
- * - Git status injection (branch, commits, status)
6
- * - AGENT.md / project context discovery and injection
7
- * - Working directory info
8
- * - Date injection
9
- */
10
- import { execSync } from 'child_process';
11
- import { readFile, stat } from 'fs/promises';
12
- import { join } from 'path';
13
- // Memoization cache
14
- let cachedGitStatus = null;
15
- let cachedGitStatusCwd = null;
16
- /**
17
- * Get git status info for system prompt.
18
- * Memoized per cwd (cleared on new session).
19
- */
20
- export async function getGitStatus(cwd) {
21
- if (cachedGitStatus && cachedGitStatusCwd === cwd) {
22
- return cachedGitStatus;
23
- }
24
- try {
25
- const parts = [];
26
- const gitExec = (cmd, timeoutMs = 5000) => {
27
- try {
28
- return execSync(cmd, {
29
- cwd, timeout: timeoutMs, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
30
- }).trim();
31
- }
32
- catch {
33
- return null;
34
- }
35
- };
36
- // Check if this is a git repo at all
37
- if (!gitExec('git rev-parse --git-dir'))
38
- return '';
39
- // Current branch
40
- const branch = gitExec('git rev-parse --abbrev-ref HEAD');
41
- if (branch)
42
- parts.push(`Current branch: ${branch}`);
43
- // Main branch detection
44
- const mainBranch = detectMainBranch(cwd);
45
- if (mainBranch)
46
- parts.push(`Main branch: ${mainBranch}`);
47
- // Git user
48
- const user = gitExec('git config user.name', 3000);
49
- if (user)
50
- parts.push(`Git user: ${user}`);
51
- // Status (staged + unstaged)
52
- const status = gitExec('git status --short');
53
- if (status) {
54
- const truncated = status.length > 2000
55
- ? status.slice(0, 2000) + '\n...(truncated)'
56
- : status;
57
- parts.push(`Status:\n${truncated}`);
58
- }
59
- // Recent commits (only if HEAD exists)
60
- const hasHead = gitExec('git rev-parse HEAD');
61
- if (hasHead) {
62
- const log = gitExec('git log --oneline -5 --no-decorate');
63
- if (log)
64
- parts.push(`Recent commits:\n${log}`);
65
- }
66
- cachedGitStatus = parts.join('\n\n');
67
- cachedGitStatusCwd = cwd;
68
- return cachedGitStatus;
69
- }
70
- catch {
71
- return '';
72
- }
73
- }
74
- /**
75
- * Detect the main branch name (main or master).
76
- */
77
- function detectMainBranch(cwd) {
78
- try {
79
- const branches = execSync('git branch -l main master', {
80
- cwd, timeout: 3000, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'],
81
- }).trim();
82
- if (branches.includes('main'))
83
- return 'main';
84
- if (branches.includes('master'))
85
- return 'master';
86
- return null;
87
- }
88
- catch {
89
- return null;
90
- }
91
- }
92
- /**
93
- * Discover project context files (AGENT.md, CLAUDE.md) in the project.
94
- */
95
- export async function discoverProjectContextFiles(cwd) {
96
- const candidates = [
97
- join(cwd, 'AGENT.md'),
98
- join(cwd, 'CLAUDE.md'),
99
- join(cwd, '.claude', 'CLAUDE.md'),
100
- join(cwd, 'claude.md'),
101
- ];
102
- // Also check home directory
103
- const home = process.env.HOME || process.env.USERPROFILE || '';
104
- if (home) {
105
- candidates.push(join(home, '.claude', 'CLAUDE.md'));
106
- }
107
- const found = [];
108
- for (const path of candidates) {
109
- try {
110
- const s = await stat(path);
111
- if (s.isFile()) {
112
- found.push(path);
113
- }
114
- }
115
- catch {
116
- // File doesn't exist
117
- }
118
- }
119
- return found;
120
- }
121
- /**
122
- * Read project context file content from discovered files.
123
- */
124
- export async function readProjectContextContent(cwd) {
125
- const files = await discoverProjectContextFiles(cwd);
126
- if (files.length === 0)
127
- return '';
128
- const parts = [];
129
- for (const file of files) {
130
- try {
131
- const content = await readFile(file, 'utf-8');
132
- if (content.trim()) {
133
- parts.push(`# From ${file}:\n${content.trim()}`);
134
- }
135
- }
136
- catch {
137
- // Skip unreadable files
138
- }
139
- }
140
- return parts.join('\n\n');
141
- }
142
- /**
143
- * Get system context for the system prompt.
144
- */
145
- export async function getSystemContext(cwd) {
146
- const parts = [];
147
- const gitStatus = await getGitStatus(cwd);
148
- if (gitStatus) {
149
- parts.push(`gitStatus: ${gitStatus}`);
150
- }
151
- return parts.join('\n\n');
152
- }
153
- /**
154
- * Get user context (AGENT.md, date, etc).
155
- */
156
- export async function getUserContext(cwd) {
157
- const parts = [];
158
- // Current date
159
- parts.push(`# currentDate\nToday's date is ${new Date().toISOString().split('T')[0]}.`);
160
- // Project context files
161
- const projectCtx = await readProjectContextContent(cwd);
162
- if (projectCtx) {
163
- parts.push(projectCtx);
164
- }
165
- return parts.join('\n\n');
166
- }
167
- /**
168
- * Clear memoized context (call between sessions).
169
- */
170
- export function clearContextCache() {
171
- cachedGitStatus = null;
172
- cachedGitStatusCwd = null;
173
- }
174
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/utils/context.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- /**
2
- * File State LRU Cache
3
- *
4
- * Bounded cache for file contents with path normalization.
5
- * Used to track file states for compaction diffs and
6
- * avoiding redundant reads.
7
- */
8
- /**
9
- * Cached file state.
10
- */
11
- export interface FileState {
12
- content: string;
13
- timestamp: number;
14
- offset?: number;
15
- limit?: number;
16
- isPartialView?: boolean;
17
- }
18
- /**
19
- * LRU file state cache with size limits.
20
- */
21
- export declare class FileStateCache {
22
- private cache;
23
- private maxEntries;
24
- private maxSizeBytes;
25
- private currentSizeBytes;
26
- constructor(maxEntries?: number, maxSizeBytes?: number);
27
- /**
28
- * Normalize a file path for cache lookup.
29
- */
30
- private normalizePath;
31
- /**
32
- * Get a cached file state.
33
- */
34
- get(filePath: string): FileState | undefined;
35
- /**
36
- * Set a cached file state.
37
- */
38
- set(filePath: string, state: FileState): void;
39
- /**
40
- * Delete a cached entry.
41
- */
42
- delete(filePath: string): boolean;
43
- /**
44
- * Clear all cached entries.
45
- */
46
- clear(): void;
47
- /**
48
- * Get the number of cached entries.
49
- */
50
- get size(): number;
51
- /**
52
- * Get all cached file paths.
53
- */
54
- keys(): string[];
55
- /**
56
- * Clone the cache.
57
- */
58
- clone(): FileStateCache;
59
- }
60
- /**
61
- * Create a file state cache with default limits.
62
- */
63
- export declare function createFileStateCache(maxEntries?: number, maxSizeBytes?: number): FileStateCache;
64
- //# sourceMappingURL=fileCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileCache.d.ts","sourceRoot":"","sources":["../../src/utils/fileCache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,gBAAgB,CAAI;gBAEhB,UAAU,GAAE,MAAY,EAAE,YAAY,GAAE,MAAyB;IAK7E;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAW5C;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IA+B7C;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAWjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;OAEG;IACH,KAAK,IAAI,cAAc;CAQxB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,GAAE,MAAY,EACxB,YAAY,GAAE,MAAyB,GACtC,cAAc,CAEhB"}
@@ -1,117 +0,0 @@
1
- /**
2
- * File State LRU Cache
3
- *
4
- * Bounded cache for file contents with path normalization.
5
- * Used to track file states for compaction diffs and
6
- * avoiding redundant reads.
7
- */
8
- import { normalize, resolve } from 'path';
9
- /**
10
- * LRU file state cache with size limits.
11
- */
12
- export class FileStateCache {
13
- cache = new Map();
14
- maxEntries;
15
- maxSizeBytes;
16
- currentSizeBytes = 0;
17
- constructor(maxEntries = 100, maxSizeBytes = 25 * 1024 * 1024) {
18
- this.maxEntries = maxEntries;
19
- this.maxSizeBytes = maxSizeBytes;
20
- }
21
- /**
22
- * Normalize a file path for cache lookup.
23
- */
24
- normalizePath(filePath) {
25
- return normalize(resolve(filePath));
26
- }
27
- /**
28
- * Get a cached file state.
29
- */
30
- get(filePath) {
31
- const key = this.normalizePath(filePath);
32
- const entry = this.cache.get(key);
33
- if (entry) {
34
- // Move to end (most recently used)
35
- this.cache.delete(key);
36
- this.cache.set(key, entry);
37
- }
38
- return entry;
39
- }
40
- /**
41
- * Set a cached file state.
42
- */
43
- set(filePath, state) {
44
- const key = this.normalizePath(filePath);
45
- // Remove old entry if exists
46
- const old = this.cache.get(key);
47
- if (old) {
48
- this.currentSizeBytes -= Buffer.byteLength(old.content, 'utf-8');
49
- this.cache.delete(key);
50
- }
51
- const newSize = Buffer.byteLength(state.content, 'utf-8');
52
- // Evict entries if necessary
53
- while ((this.cache.size >= this.maxEntries || this.currentSizeBytes + newSize > this.maxSizeBytes) &&
54
- this.cache.size > 0) {
55
- const firstKey = this.cache.keys().next().value;
56
- if (firstKey) {
57
- const entry = this.cache.get(firstKey);
58
- if (entry) {
59
- this.currentSizeBytes -= Buffer.byteLength(entry.content, 'utf-8');
60
- }
61
- this.cache.delete(firstKey);
62
- }
63
- }
64
- this.cache.set(key, state);
65
- this.currentSizeBytes += newSize;
66
- }
67
- /**
68
- * Delete a cached entry.
69
- */
70
- delete(filePath) {
71
- const key = this.normalizePath(filePath);
72
- const entry = this.cache.get(key);
73
- if (entry) {
74
- this.currentSizeBytes -= Buffer.byteLength(entry.content, 'utf-8');
75
- this.cache.delete(key);
76
- return true;
77
- }
78
- return false;
79
- }
80
- /**
81
- * Clear all cached entries.
82
- */
83
- clear() {
84
- this.cache.clear();
85
- this.currentSizeBytes = 0;
86
- }
87
- /**
88
- * Get the number of cached entries.
89
- */
90
- get size() {
91
- return this.cache.size;
92
- }
93
- /**
94
- * Get all cached file paths.
95
- */
96
- keys() {
97
- return Array.from(this.cache.keys());
98
- }
99
- /**
100
- * Clone the cache.
101
- */
102
- clone() {
103
- const clone = new FileStateCache(this.maxEntries, this.maxSizeBytes);
104
- for (const [key, value] of this.cache) {
105
- clone.cache.set(key, { ...value });
106
- }
107
- clone.currentSizeBytes = this.currentSizeBytes;
108
- return clone;
109
- }
110
- }
111
- /**
112
- * Create a file state cache with default limits.
113
- */
114
- export function createFileStateCache(maxEntries = 100, maxSizeBytes = 25 * 1024 * 1024) {
115
- return new FileStateCache(maxEntries, maxSizeBytes);
116
- }
117
- //# sourceMappingURL=fileCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fileCache.js","sourceRoot":"","sources":["../../src/utils/fileCache.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Message Utilities
3
- *
4
- * Message creation factories, normalization for API,
5
- * synthetic placeholders, and content processing.
6
- */
7
- import type { UserMessage, AssistantMessage, TokenUsage } from '../types.js';
8
- /**
9
- * Create a user message.
10
- */
11
- export declare function createUserMessage(content: string | any[], options?: {
12
- uuid?: string;
13
- isMeta?: boolean;
14
- toolUseResult?: unknown;
15
- }): UserMessage;
16
- /**
17
- * Create an assistant message.
18
- */
19
- export declare function createAssistantMessage(content: any[], usage?: TokenUsage): AssistantMessage;
20
- /**
21
- * Normalize messages for the LLM API.
22
- * Ensures proper message format, strips internal metadata,
23
- * and fixes tool result pairing.
24
- */
25
- export declare function normalizeMessagesForAPI(messages: Array<{
26
- role: string;
27
- content: any;
28
- }>): Array<{
29
- role: string;
30
- content: any;
31
- }>;
32
- /**
33
- * Strip images from messages (for compaction).
34
- */
35
- export declare function stripImagesFromMessages(messages: Array<{
36
- role: string;
37
- content: any;
38
- }>): Array<{
39
- role: string;
40
- content: any;
41
- }>;
42
- /**
43
- * Extract text from message content blocks.
44
- */
45
- export declare function extractTextFromContent(content: any[] | string): string;
46
- /**
47
- * Create a system message for compact boundary.
48
- */
49
- export declare function createCompactBoundaryMessage(): {
50
- role: string;
51
- content: string;
52
- };
53
- /**
54
- * Truncate text to max length with ellipsis.
55
- */
56
- export declare function truncateText(text: string, maxLength: number): string;
57
- //# sourceMappingURL=messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAW,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAErF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,EACvB,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,GACA,WAAW,CAUb;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,EAAE,EACd,KAAK,CAAC,EAAE,UAAU,GACjB,gBAAgB,CAWlB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,GAC9C,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CAiCvC;AAoDD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,GAC9C,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,CAAC,CAcvC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,GACtB,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAKhF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAIpE"}