@illuma-ai/agents 1.5.1 → 2.1.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 (319) hide show
  1. package/README.md +0 -62
  2. package/dist/cjs/agents/AgentContext.cjs +160 -259
  3. package/dist/cjs/agents/AgentContext.cjs.map +1 -1
  4. package/dist/cjs/common/enum.cjs +12 -12
  5. package/dist/cjs/common/enum.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +30 -13
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/graphs/MultiAgentGraph.cjs +1 -1
  9. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  10. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs +1 -1
  11. package/dist/cjs/graphs/phases/memoryFlushPhase.cjs.map +1 -1
  12. package/dist/cjs/hooks/HookRegistry.cjs +1 -1
  13. package/dist/cjs/hooks/HookRegistry.cjs.map +1 -1
  14. package/dist/cjs/hooks/matchers.cjs +2 -2
  15. package/dist/cjs/hooks/matchers.cjs.map +1 -1
  16. package/dist/cjs/hooks/types.cjs +1 -1
  17. package/dist/cjs/hooks/types.cjs.map +1 -1
  18. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +1 -5
  19. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  20. package/dist/cjs/llm/bedrock/index.cjs +33 -61
  21. package/dist/cjs/llm/bedrock/index.cjs.map +1 -1
  22. package/dist/cjs/llm/openai/index.cjs +1 -1
  23. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  24. package/dist/cjs/llm/openai/utils/index.cjs +10 -27
  25. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  26. package/dist/cjs/main.cjs +3 -84
  27. package/dist/cjs/main.cjs.map +1 -1
  28. package/dist/cjs/memory/citations.cjs +4 -4
  29. package/dist/cjs/memory/citations.cjs.map +1 -1
  30. package/dist/cjs/memory/constants.cjs +17 -17
  31. package/dist/cjs/memory/constants.cjs.map +1 -1
  32. package/dist/cjs/memory/mmr.cjs +1 -1
  33. package/dist/cjs/memory/mmr.cjs.map +1 -1
  34. package/dist/cjs/memory/paths.cjs +1 -1
  35. package/dist/cjs/memory/paths.cjs.map +1 -1
  36. package/dist/cjs/memory/recallTracking.cjs +3 -3
  37. package/dist/cjs/memory/recallTracking.cjs.map +1 -1
  38. package/dist/cjs/memory/temporalDecay.cjs +2 -2
  39. package/dist/cjs/memory/temporalDecay.cjs.map +1 -1
  40. package/dist/cjs/messages/cache.cjs +0 -89
  41. package/dist/cjs/messages/cache.cjs.map +1 -1
  42. package/dist/cjs/messages/format.cjs +13 -71
  43. package/dist/cjs/messages/format.cjs.map +1 -1
  44. package/dist/cjs/tools/BashExecutor.cjs +11 -21
  45. package/dist/cjs/tools/BashExecutor.cjs.map +1 -1
  46. package/dist/cjs/tools/CodeExecutor.cjs +13 -41
  47. package/dist/cjs/tools/CodeExecutor.cjs.map +1 -1
  48. package/dist/cjs/tools/ProgrammaticToolCalling.cjs +11 -16
  49. package/dist/cjs/tools/ProgrammaticToolCalling.cjs.map +1 -1
  50. package/dist/cjs/tools/ToolNode.cjs +78 -13
  51. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  52. package/dist/cjs/tools/memory/memoryAppendTool.cjs +1 -1
  53. package/dist/cjs/tools/memory/memoryAppendTool.cjs.map +1 -1
  54. package/dist/cjs/tools/memory/memoryGetTool.cjs +2 -2
  55. package/dist/cjs/tools/memory/memoryGetTool.cjs.map +1 -1
  56. package/dist/cjs/tools/memory/memorySearchTool.cjs +3 -3
  57. package/dist/cjs/tools/memory/memorySearchTool.cjs.map +1 -1
  58. package/dist/cjs/tools/memory/shared.cjs +1 -1
  59. package/dist/cjs/tools/memory/shared.cjs.map +1 -1
  60. package/dist/cjs/tools/search/search.cjs +3 -11
  61. package/dist/cjs/tools/search/search.cjs.map +1 -1
  62. package/dist/cjs/tools/search/tool.cjs +4 -28
  63. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  64. package/dist/cjs/tools/search/utils.cjs +3 -10
  65. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  66. package/dist/cjs/tools/subagent/SubagentExecutor.cjs +48 -0
  67. package/dist/cjs/tools/subagent/SubagentExecutor.cjs.map +1 -1
  68. package/dist/cjs/types/graph.cjs.map +1 -1
  69. package/dist/esm/agents/AgentContext.mjs +160 -259
  70. package/dist/esm/agents/AgentContext.mjs.map +1 -1
  71. package/dist/esm/common/enum.mjs +12 -12
  72. package/dist/esm/common/enum.mjs.map +1 -1
  73. package/dist/esm/graphs/Graph.mjs +30 -13
  74. package/dist/esm/graphs/Graph.mjs.map +1 -1
  75. package/dist/esm/graphs/MultiAgentGraph.mjs +1 -1
  76. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  77. package/dist/esm/graphs/phases/memoryFlushPhase.mjs +1 -1
  78. package/dist/esm/graphs/phases/memoryFlushPhase.mjs.map +1 -1
  79. package/dist/esm/hooks/HookRegistry.mjs +1 -1
  80. package/dist/esm/hooks/HookRegistry.mjs.map +1 -1
  81. package/dist/esm/hooks/matchers.mjs +2 -2
  82. package/dist/esm/hooks/matchers.mjs.map +1 -1
  83. package/dist/esm/hooks/types.mjs +1 -1
  84. package/dist/esm/hooks/types.mjs.map +1 -1
  85. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +1 -5
  86. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  87. package/dist/esm/llm/bedrock/index.mjs +34 -61
  88. package/dist/esm/llm/bedrock/index.mjs.map +1 -1
  89. package/dist/esm/llm/openai/index.mjs +1 -1
  90. package/dist/esm/llm/openai/index.mjs.map +1 -1
  91. package/dist/esm/llm/openai/utils/index.mjs +10 -27
  92. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  93. package/dist/esm/main.mjs +1 -5
  94. package/dist/esm/main.mjs.map +1 -1
  95. package/dist/esm/memory/citations.mjs +4 -4
  96. package/dist/esm/memory/citations.mjs.map +1 -1
  97. package/dist/esm/memory/constants.mjs +17 -17
  98. package/dist/esm/memory/constants.mjs.map +1 -1
  99. package/dist/esm/memory/mmr.mjs +1 -1
  100. package/dist/esm/memory/mmr.mjs.map +1 -1
  101. package/dist/esm/memory/paths.mjs +1 -1
  102. package/dist/esm/memory/paths.mjs.map +1 -1
  103. package/dist/esm/memory/recallTracking.mjs +3 -3
  104. package/dist/esm/memory/recallTracking.mjs.map +1 -1
  105. package/dist/esm/memory/temporalDecay.mjs +2 -2
  106. package/dist/esm/memory/temporalDecay.mjs.map +1 -1
  107. package/dist/esm/messages/cache.mjs +0 -89
  108. package/dist/esm/messages/cache.mjs.map +1 -1
  109. package/dist/esm/messages/format.mjs +13 -71
  110. package/dist/esm/messages/format.mjs.map +1 -1
  111. package/dist/esm/tools/BashExecutor.mjs +12 -22
  112. package/dist/esm/tools/BashExecutor.mjs.map +1 -1
  113. package/dist/esm/tools/CodeExecutor.mjs +14 -41
  114. package/dist/esm/tools/CodeExecutor.mjs.map +1 -1
  115. package/dist/esm/tools/ProgrammaticToolCalling.mjs +12 -17
  116. package/dist/esm/tools/ProgrammaticToolCalling.mjs.map +1 -1
  117. package/dist/esm/tools/ToolNode.mjs +78 -13
  118. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  119. package/dist/esm/tools/memory/memoryAppendTool.mjs +1 -1
  120. package/dist/esm/tools/memory/memoryAppendTool.mjs.map +1 -1
  121. package/dist/esm/tools/memory/memoryGetTool.mjs +2 -2
  122. package/dist/esm/tools/memory/memoryGetTool.mjs.map +1 -1
  123. package/dist/esm/tools/memory/memorySearchTool.mjs +3 -3
  124. package/dist/esm/tools/memory/memorySearchTool.mjs.map +1 -1
  125. package/dist/esm/tools/memory/shared.mjs +1 -1
  126. package/dist/esm/tools/memory/shared.mjs.map +1 -1
  127. package/dist/esm/tools/search/search.mjs +3 -11
  128. package/dist/esm/tools/search/search.mjs.map +1 -1
  129. package/dist/esm/tools/search/tool.mjs +4 -28
  130. package/dist/esm/tools/search/tool.mjs.map +1 -1
  131. package/dist/esm/tools/search/utils.mjs +3 -10
  132. package/dist/esm/tools/search/utils.mjs.map +1 -1
  133. package/dist/esm/tools/subagent/SubagentExecutor.mjs +48 -0
  134. package/dist/esm/tools/subagent/SubagentExecutor.mjs.map +1 -1
  135. package/dist/esm/types/graph.mjs.map +1 -1
  136. package/dist/types/agents/AgentContext.d.ts +25 -95
  137. package/dist/types/common/enum.d.ts +12 -12
  138. package/dist/types/graphs/Graph.d.ts +2 -2
  139. package/dist/types/graphs/phases/memoryFlushPhase.d.ts +2 -2
  140. package/dist/types/hooks/HookRegistry.d.ts +1 -1
  141. package/dist/types/hooks/matchers.d.ts +2 -2
  142. package/dist/types/hooks/types.d.ts +1 -1
  143. package/dist/types/index.d.ts +0 -1
  144. package/dist/types/llm/bedrock/index.d.ts +1 -54
  145. package/dist/types/llm/openai/index.d.ts +1 -1
  146. package/dist/types/memory/citations.d.ts +4 -4
  147. package/dist/types/memory/constants.d.ts +17 -17
  148. package/dist/types/memory/mmr.d.ts +3 -3
  149. package/dist/types/memory/paths.d.ts +1 -1
  150. package/dist/types/memory/temporalDecay.d.ts +2 -2
  151. package/dist/types/memory/types.d.ts +3 -3
  152. package/dist/types/messages/format.d.ts +2 -5
  153. package/dist/types/tools/CodeExecutor.d.ts +0 -6
  154. package/dist/types/tools/ToolNode.d.ts +3 -3
  155. package/dist/types/tools/memory/shared.d.ts +1 -1
  156. package/dist/types/tools/search/test.d.ts +1 -0
  157. package/dist/types/tools/search/types.d.ts +5 -99
  158. package/dist/types/tools/search/utils.d.ts +2 -2
  159. package/dist/types/tools/subagent/SubagentExecutor.d.ts +29 -0
  160. package/dist/types/types/graph.d.ts +30 -34
  161. package/dist/types/types/index.d.ts +0 -1
  162. package/dist/types/types/messages.d.ts +1 -1
  163. package/dist/types/types/run.d.ts +1 -3
  164. package/dist/types/types/tools.d.ts +5 -14
  165. package/package.json +1 -61
  166. package/src/agents/AgentContext.test.ts +176 -0
  167. package/src/agents/AgentContext.ts +179 -305
  168. package/src/agents/__tests__/AgentContext.test.ts +0 -632
  169. package/src/common/__tests__/enum.test.ts +1 -1
  170. package/src/common/enum.ts +12 -12
  171. package/src/graphs/Graph.ts +32 -13
  172. package/src/graphs/MultiAgentGraph.ts +1 -1
  173. package/src/graphs/gapFeatures.test.ts +1 -1
  174. package/src/graphs/phases/__tests__/memoryFlushPhase.test.ts +1 -1
  175. package/src/graphs/phases/memoryFlushPhase.ts +2 -2
  176. package/src/hooks/HookRegistry.ts +1 -1
  177. package/src/hooks/index.ts +1 -1
  178. package/src/hooks/matchers.ts +2 -2
  179. package/src/hooks/types.ts +1 -1
  180. package/src/index.ts +0 -6
  181. package/src/llm/anthropic/utils/message_inputs.ts +1 -10
  182. package/src/llm/bedrock/__tests__/bedrock-caching.test.ts +18 -166
  183. package/src/llm/bedrock/index.ts +41 -116
  184. package/src/llm/openai/index.ts +2 -2
  185. package/src/llm/openai/utils/index.ts +14 -31
  186. package/src/memory/citations.ts +4 -4
  187. package/src/memory/constants.ts +17 -17
  188. package/src/memory/mmr.ts +3 -3
  189. package/src/memory/paths.ts +1 -1
  190. package/src/memory/recallTracking.ts +3 -3
  191. package/src/memory/temporalDecay.ts +2 -2
  192. package/src/memory/types.ts +3 -3
  193. package/src/messages/cache.test.ts +24 -62
  194. package/src/messages/cache.ts +0 -112
  195. package/src/messages/ensureThinkingBlock.test.ts +1 -1
  196. package/src/messages/format.ts +13 -92
  197. package/src/messages/formatAgentMessages.test.ts +1 -1
  198. package/src/scripts/subagent-configurable-inheritance.ts +263 -0
  199. package/src/scripts/subagent-event-driven-debug.ts +2 -2
  200. package/src/specs/anthropic.simple.test.ts +0 -61
  201. package/src/specs/prune.orphans.test.ts +1 -1
  202. package/src/tools/BashExecutor.ts +13 -37
  203. package/src/tools/CodeExecutor.ts +14 -59
  204. package/src/tools/ProgrammaticToolCalling.ts +14 -29
  205. package/src/tools/ToolNode.ts +75 -14
  206. package/src/tools/__tests__/CodeExecutor.test.ts +3 -3
  207. package/src/tools/__tests__/ProgrammaticToolCalling.test.ts +0 -60
  208. package/src/tools/__tests__/SubagentExecutor.test.ts +157 -0
  209. package/src/tools/memory/memoryAppendTool.ts +1 -1
  210. package/src/tools/memory/memoryGetTool.ts +2 -2
  211. package/src/tools/memory/memorySearchTool.ts +3 -3
  212. package/src/tools/memory/shared.ts +1 -1
  213. package/src/tools/search/output.md +2775 -0
  214. package/src/tools/search/search.ts +2 -12
  215. package/src/tools/search/test.html +884 -0
  216. package/src/tools/search/test.md +643 -0
  217. package/src/tools/search/test.ts +159 -0
  218. package/src/tools/search/tool.ts +2 -36
  219. package/src/tools/search/types.ts +8 -133
  220. package/src/tools/search/utils.ts +5 -13
  221. package/src/tools/subagent/SubagentExecutor.ts +78 -0
  222. package/src/types/graph.ts +27 -34
  223. package/src/types/index.ts +0 -1
  224. package/src/types/messages.ts +1 -1
  225. package/src/types/run.ts +1 -3
  226. package/src/types/tools.ts +5 -14
  227. package/dist/cjs/langchain/google-common.cjs +0 -3
  228. package/dist/cjs/langchain/google-common.cjs.map +0 -1
  229. package/dist/cjs/langchain/index.cjs +0 -86
  230. package/dist/cjs/langchain/index.cjs.map +0 -1
  231. package/dist/cjs/langchain/language_models/chat_models.cjs +0 -3
  232. package/dist/cjs/langchain/language_models/chat_models.cjs.map +0 -1
  233. package/dist/cjs/langchain/messages/tool.cjs +0 -3
  234. package/dist/cjs/langchain/messages/tool.cjs.map +0 -1
  235. package/dist/cjs/langchain/messages.cjs +0 -51
  236. package/dist/cjs/langchain/messages.cjs.map +0 -1
  237. package/dist/cjs/langchain/openai.cjs +0 -3
  238. package/dist/cjs/langchain/openai.cjs.map +0 -1
  239. package/dist/cjs/langchain/prompts.cjs +0 -11
  240. package/dist/cjs/langchain/prompts.cjs.map +0 -1
  241. package/dist/cjs/langchain/runnables.cjs +0 -19
  242. package/dist/cjs/langchain/runnables.cjs.map +0 -1
  243. package/dist/cjs/langchain/tools.cjs +0 -23
  244. package/dist/cjs/langchain/tools.cjs.map +0 -1
  245. package/dist/cjs/langchain/utils/env.cjs +0 -11
  246. package/dist/cjs/langchain/utils/env.cjs.map +0 -1
  247. package/dist/cjs/llm/bedrock/cacheSupport.cjs +0 -55
  248. package/dist/cjs/llm/bedrock/cacheSupport.cjs.map +0 -1
  249. package/dist/cjs/tools/search/tavily-scraper.cjs +0 -189
  250. package/dist/cjs/tools/search/tavily-scraper.cjs.map +0 -1
  251. package/dist/cjs/tools/search/tavily-search.cjs +0 -372
  252. package/dist/cjs/tools/search/tavily-search.cjs.map +0 -1
  253. package/dist/cjs/types/agent-cache.cjs +0 -54
  254. package/dist/cjs/types/agent-cache.cjs.map +0 -1
  255. package/dist/esm/langchain/google-common.mjs +0 -2
  256. package/dist/esm/langchain/google-common.mjs.map +0 -1
  257. package/dist/esm/langchain/index.mjs +0 -5
  258. package/dist/esm/langchain/index.mjs.map +0 -1
  259. package/dist/esm/langchain/language_models/chat_models.mjs +0 -2
  260. package/dist/esm/langchain/language_models/chat_models.mjs.map +0 -1
  261. package/dist/esm/langchain/messages/tool.mjs +0 -2
  262. package/dist/esm/langchain/messages/tool.mjs.map +0 -1
  263. package/dist/esm/langchain/messages.mjs +0 -2
  264. package/dist/esm/langchain/messages.mjs.map +0 -1
  265. package/dist/esm/langchain/openai.mjs +0 -2
  266. package/dist/esm/langchain/openai.mjs.map +0 -1
  267. package/dist/esm/langchain/prompts.mjs +0 -2
  268. package/dist/esm/langchain/prompts.mjs.map +0 -1
  269. package/dist/esm/langchain/runnables.mjs +0 -2
  270. package/dist/esm/langchain/runnables.mjs.map +0 -1
  271. package/dist/esm/langchain/tools.mjs +0 -2
  272. package/dist/esm/langchain/tools.mjs.map +0 -1
  273. package/dist/esm/langchain/utils/env.mjs +0 -2
  274. package/dist/esm/langchain/utils/env.mjs.map +0 -1
  275. package/dist/esm/llm/bedrock/cacheSupport.mjs +0 -52
  276. package/dist/esm/llm/bedrock/cacheSupport.mjs.map +0 -1
  277. package/dist/esm/tools/search/tavily-scraper.mjs +0 -186
  278. package/dist/esm/tools/search/tavily-scraper.mjs.map +0 -1
  279. package/dist/esm/tools/search/tavily-search.mjs +0 -370
  280. package/dist/esm/tools/search/tavily-search.mjs.map +0 -1
  281. package/dist/esm/types/agent-cache.mjs +0 -52
  282. package/dist/esm/types/agent-cache.mjs.map +0 -1
  283. package/dist/types/langchain/google-common.d.ts +0 -1
  284. package/dist/types/langchain/index.d.ts +0 -8
  285. package/dist/types/langchain/language_models/chat_models.d.ts +0 -1
  286. package/dist/types/langchain/messages/tool.d.ts +0 -1
  287. package/dist/types/langchain/messages.d.ts +0 -2
  288. package/dist/types/langchain/openai.d.ts +0 -1
  289. package/dist/types/langchain/prompts.d.ts +0 -1
  290. package/dist/types/langchain/runnables.d.ts +0 -2
  291. package/dist/types/langchain/tools.d.ts +0 -2
  292. package/dist/types/langchain/utils/env.d.ts +0 -1
  293. package/dist/types/llm/bedrock/cacheSupport.d.ts +0 -35
  294. package/dist/types/tools/search/tavily-scraper.d.ts +0 -19
  295. package/dist/types/tools/search/tavily-search.d.ts +0 -4
  296. package/dist/types/tools/subagent/types.d.ts +0 -84
  297. package/dist/types/types/agent-cache.d.ts +0 -71
  298. package/src/agents/__tests__/AgentContext.cacheTtl.live.test.ts +0 -259
  299. package/src/agents/__tests__/AgentContext.crossAgentTier1.live.test.ts +0 -266
  300. package/src/agents/__tests__/AgentContext.crossUserCache.live.test.ts +0 -342
  301. package/src/langchain/google-common.ts +0 -1
  302. package/src/langchain/index.ts +0 -8
  303. package/src/langchain/language_models/chat_models.ts +0 -1
  304. package/src/langchain/messages/tool.ts +0 -5
  305. package/src/langchain/messages.ts +0 -21
  306. package/src/langchain/openai.ts +0 -1
  307. package/src/langchain/prompts.ts +0 -1
  308. package/src/langchain/runnables.ts +0 -7
  309. package/src/langchain/tools.ts +0 -8
  310. package/src/langchain/utils/env.ts +0 -1
  311. package/src/llm/anthropic/utils/server-tool-inputs.test.ts +0 -436
  312. package/src/llm/bedrock/cacheSupport.test.ts +0 -99
  313. package/src/llm/bedrock/cacheSupport.ts +0 -53
  314. package/src/tools/search/tavily-scraper.ts +0 -235
  315. package/src/tools/search/tavily-search.ts +0 -424
  316. package/src/tools/search/tavily.test.ts +0 -965
  317. package/src/tools/subagent/types.test.ts +0 -70
  318. package/src/tools/subagent/types.ts +0 -115
  319. package/src/types/agent-cache.ts +0 -74
@@ -1,70 +0,0 @@
1
- import { describe, it, expect } from '@jest/globals';
2
- import {
3
- MANIFEST_PREFIX,
4
- formatFileManifest,
5
- formatManifestEntry,
6
- } from './types';
7
-
8
- /**
9
- * Unit tests for the shared subagent file-passing types module.
10
- *
11
- * The manifest format is contractual: the supervisor's LLM is taught to look
12
- * for `MANIFEST_PREFIX` in its context and pass `file_id` strings into the
13
- * `subagent` tool's `file_ids` arg. Regressions here silently break selective
14
- * file passing — assert format strictly.
15
- */
16
- describe('formatManifestEntry', () => {
17
- it('formats minimal entry (file_id + name only)', () => {
18
- expect(
19
- formatManifestEntry({ file_id: 'f_1', name: 'data.csv' })
20
- ).toBe('- file_id: f_1, name: data.csv');
21
- });
22
-
23
- it('includes type when present', () => {
24
- expect(
25
- formatManifestEntry({
26
- file_id: 'f_2',
27
- name: 'chart.png',
28
- type: 'image/png',
29
- })
30
- ).toBe('- file_id: f_2, name: chart.png, type: image/png');
31
- });
32
-
33
- it('formats bytes as B / KB / MB', () => {
34
- expect(
35
- formatManifestEntry({ file_id: 'f_3', name: 'a', size: 512 })
36
- ).toContain('size: 512B');
37
- expect(
38
- formatManifestEntry({ file_id: 'f_4', name: 'a', size: 12_000 })
39
- ).toContain('size: 12KB');
40
- expect(
41
- formatManifestEntry({
42
- file_id: 'f_5',
43
- name: 'a',
44
- size: 5 * 1024 * 1024,
45
- })
46
- ).toContain('size: 5.0MB');
47
- });
48
- });
49
-
50
- describe('formatFileManifest', () => {
51
- it('returns null for empty input', () => {
52
- expect(formatFileManifest([])).toBeNull();
53
- });
54
-
55
- it('begins with MANIFEST_PREFIX header', () => {
56
- const out = formatFileManifest([
57
- { file_id: 'f_1', name: 'data.csv' },
58
- ]);
59
- expect(out).not.toBeNull();
60
- expect(out!.startsWith(MANIFEST_PREFIX)).toBe(true);
61
- });
62
-
63
- it('joins entries on newlines below header', () => {
64
- const out = formatFileManifest([
65
- { file_id: 'f_1', name: 'a' },
66
- { file_id: 'f_2', name: 'b' },
67
- ]);
68
- expect(out).toBe(`${MANIFEST_PREFIX}\n- file_id: f_1, name: a\n- file_id: f_2, name: b`);
69
- });
70
- });
@@ -1,115 +0,0 @@
1
- /**
2
- * Shared types for the subagent file-passing pipeline.
3
- *
4
- * Single source of truth for:
5
- * - the `file_ids` shape carried on the `subagent` tool's input schema
6
- * - the manifest line format the host renders into the supervisor's
7
- * trailing user-message channel (cache-stable, never the system block)
8
- * - the resolver hook signature host applications implement to map
9
- * parent-side `file_id`s into the child's `tool_resources` + first
10
- * HumanMessage context blocks
11
- *
12
- * Keeping these in one place lets the lib, the host, and tests all
13
- * reference the SAME constants — drift would silently break selective
14
- * file passing (parent claims a file is available, child gets `null`).
15
- */
16
-
17
- /**
18
- * One entry in the parent's file manifest. The host serializes an array of
19
- * these into a short newline-delimited block that lives in the supervisor's
20
- * trailing user-message channel — see `MANIFEST_PREFIX` /
21
- * `formatFileManifest` for the canonical line format.
22
- */
23
- export interface SubagentFileManifestEntry {
24
- /** Stable file ID. Parent's LLM passes this back via `subagent({ file_ids })`. */
25
- file_id: string;
26
- /** Display name, used in the manifest line. */
27
- name: string;
28
- /** MIME type. Optional — only included in the manifest when present. */
29
- type?: string;
30
- /** Size in bytes. Optional — formatted for human readability when present. */
31
- size?: number;
32
- }
33
-
34
- /** Header line that begins every parent file manifest block. */
35
- export const MANIFEST_PREFIX = 'Files available for delegation:';
36
-
37
- /**
38
- * Format a single manifest entry as a `- key: value, key: value, ...` line.
39
- * Pure function — keeps the format consistent across host injection paths
40
- * and test assertions.
41
- */
42
- export function formatManifestEntry(entry: SubagentFileManifestEntry): string {
43
- const parts: string[] = [`file_id: ${entry.file_id}`, `name: ${entry.name}`];
44
- if (entry.type) {
45
- parts.push(`type: ${entry.type}`);
46
- }
47
- if (typeof entry.size === 'number' && Number.isFinite(entry.size)) {
48
- parts.push(`size: ${formatBytes(entry.size)}`);
49
- }
50
- return `- ${parts.join(', ')}`;
51
- }
52
-
53
- /**
54
- * Format a full manifest block for injection below the cache breakpoint.
55
- * Returns `null` for empty input so callers can `if (block) push(block)`.
56
- */
57
- export function formatFileManifest(
58
- entries: readonly SubagentFileManifestEntry[]
59
- ): string | null {
60
- if (!entries || entries.length === 0) return null;
61
- const lines = entries.map(formatManifestEntry);
62
- return [MANIFEST_PREFIX, ...lines].join('\n');
63
- }
64
-
65
- /** Human-readable byte formatter used by the manifest. */
66
- function formatBytes(bytes: number): string {
67
- if (bytes < 1024) return `${bytes}B`;
68
- if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)}KB`;
69
- return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
70
- }
71
-
72
- /**
73
- * Result of resolving parent-side `file_ids` for a child subagent invocation.
74
- * Each field is shaped to slot directly into the child's runtime:
75
- * - `toolResources` is merged into the child's `agentInputs.tool_resources`
76
- * so file_search / execute_code tools see the file
77
- * - `messageContextBlocks` is prepended to the child's first HumanMessage
78
- * (alongside the supervisor's task description) so the child sees image
79
- * blocks for vision models and a short text reference for everything else
80
- */
81
- export interface ResolvedSubagentFiles {
82
- /**
83
- * Augmented tool_resources object merged into the child's `agentInputs`.
84
- * Shape matches `AgentToolResources` from the host (kept untyped here to
85
- * avoid pulling host types into the lib).
86
- */
87
- toolResources?: Record<string, unknown>;
88
- /**
89
- * Files the resolver successfully looked up. Forwarded verbatim into the
90
- * child's first message metadata for downstream attachment rendering.
91
- */
92
- attachments?: Array<Record<string, unknown>>;
93
- /**
94
- * LangChain `HumanMessage.content` blocks (text or image_url) that should
95
- * be prepended to the child's first message. Empty array for the common
96
- * case where files are referenced only via tool_resources.
97
- */
98
- messageContextBlocks?: Array<Record<string, unknown>>;
99
- }
100
-
101
- /**
102
- * Hook the host injects to resolve parent-side `file_id`s into child runtime
103
- * context. Called once per `subagent` tool invocation that includes
104
- * `file_ids`. Must be cheap on the empty-array path — the lib calls it for
105
- * every subagent dispatch.
106
- *
107
- * @param fileIds - ID strings the supervisor's LLM picked from the manifest.
108
- * @param childAgentId - ID assigned to the child for this invocation.
109
- * @returns Resolved file context for the child, or `undefined` when nothing
110
- * could be resolved (treated as a soft no-op — the child still runs).
111
- */
112
- export type ResolveSubagentFiles = (
113
- fileIds: string[],
114
- childAgentId: string
115
- ) => Promise<ResolvedSubagentFiles | undefined>;
@@ -1,74 +0,0 @@
1
- /**
2
- * Agent system-message prompt-cache types.
3
- * ==========================================
4
- *
5
- * `@illuma-ai/agents` exposes a generic primitive — `system_cache_blocks` —
6
- * for composing a system message that gets explicit cache markers
7
- * (cachePoint on Bedrock, cache_control on Anthropic) at consumer-defined
8
- * boundaries. The library encodes each entry into the right wire format
9
- * for the active provider; consumers decide what content to put in each
10
- * block.
11
- *
12
- * Why this is generic rather than tier-named
13
- * ------------------------------------------------
14
- * Earlier iterations exposed `platform_instructions` and `cache_ttl:
15
- * { platform, agent }` — vocabulary borrowed from a specific consumer's
16
- * multi-tenant chat-platform mental model. That leaked one consumer's
17
- * domain into the library and made it confusing for other consumers
18
- * (CLI tools, desktop apps, gateways) which have no notion of
19
- * "platforms" or "agents".
20
- *
21
- * The current shape lets every consumer define their own cache-tier
22
- * organization without the library knowing or caring.
23
- *
24
- * Cache key composition
25
- * ---------------------
26
- * Both Anthropic and Bedrock hash the message bytes leading up to each
27
- * cache marker. So entry N's cache key is the concatenation of bytes
28
- * 0..N. Stable content (universal rules, framework docs) goes earlier;
29
- * volatile content (per-agent identity, per-tool docs) goes later. The
30
- * earlier entries get cross-tenant cache hits; the later entries get
31
- * narrower hits.
32
- *
33
- * Provider budget
34
- * ---------------
35
- * Bedrock's Converse API supports up to 4 cachePoint blocks per request.
36
- * The default tools-array cache strategy (see `IllumaBedrockConverse`)
37
- * uses up to 2 of those. So at most 2 entries should appear in
38
- * `system_cache_blocks` to leave budget for the trailing
39
- * `instructions` block. The library throws on more than 2.
40
- *
41
- * Anthropic supports up to 4 cache breakpoints per request workspace-wide;
42
- * the same constraint applies to keep tools + system within budget.
43
- */
44
-
45
- /** Provider TTL hint applied to a cachePoint / cache_control marker. */
46
- export type AgentCacheTTL = '5m' | '1h';
47
-
48
- /**
49
- * One cacheable system content block. Each entry produces a text block
50
- * followed by a provider-specific cache marker in the assembled system
51
- * message. Entries are emitted in array order — earlier = more stable
52
- * = wider cache key.
53
- */
54
- export interface SystemCacheBlock {
55
- /**
56
- * Text payload. Caller is responsible for keeping this byte-stable
57
- * across requests that should share a cache entry. ANY change to
58
- * these bytes invalidates every cache key that includes this entry.
59
- */
60
- text: string;
61
- /**
62
- * Optional TTL hint for the cache marker. Defaults to '5m' when
63
- * omitted. '1h' costs more to write (2× base vs 1.25×) but survives
64
- * longer idle, which is the right tradeoff for low-traffic blocks.
65
- */
66
- ttl?: AgentCacheTTL;
67
- }
68
-
69
- /**
70
- * Maximum number of `system_cache_blocks` entries the library accepts.
71
- * Higher than this would exceed Bedrock's 4-cachePoint budget once the
72
- * tools array and trailing `instructions` block are counted.
73
- */
74
- export const MAX_SYSTEM_CACHE_BLOCKS = 2;