indusagi 0.12.18 → 0.12.20

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 (518) hide show
  1. package/README.md +17 -37
  2. package/dist/agent/agent-loop.d.ts +3 -9
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +19 -58
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/agent.d.ts +9 -10
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +182 -129
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/error-handler.d.ts.map +1 -1
  11. package/dist/agent/error-handler.js.map +1 -1
  12. package/dist/agent/event-bus.d.ts.map +1 -1
  13. package/dist/agent/event-bus.js +1 -3
  14. package/dist/agent/event-bus.js.map +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +0 -6
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/messages.d.ts +1 -1
  19. package/dist/agent/messages.d.ts.map +1 -1
  20. package/dist/agent/proxy.d.ts +1 -14
  21. package/dist/agent/proxy.d.ts.map +1 -1
  22. package/dist/agent/proxy.js +67 -148
  23. package/dist/agent/proxy.js.map +1 -1
  24. package/dist/agent/session-manager.d.ts +10 -10
  25. package/dist/agent/session-manager.d.ts.map +1 -1
  26. package/dist/agent/session-manager.js +20 -16
  27. package/dist/agent/session-manager.js.map +1 -1
  28. package/dist/agent/state-manager.d.ts +1 -1
  29. package/dist/agent/state-manager.d.ts.map +1 -1
  30. package/dist/agent/state-manager.js +1 -0
  31. package/dist/agent/state-manager.js.map +1 -1
  32. package/dist/agent/telemetry.d.ts.map +1 -1
  33. package/dist/agent/telemetry.js +1 -3
  34. package/dist/agent/telemetry.js.map +1 -1
  35. package/dist/agent/tools/bash.d.ts.map +1 -1
  36. package/dist/agent/tools/bash.js +143 -118
  37. package/dist/agent/tools/bash.js.map +1 -1
  38. package/dist/agent/tools/edit-diff.d.ts +1 -1
  39. package/dist/agent/tools/edit-diff.d.ts.map +1 -1
  40. package/dist/agent/tools/edit-diff.js +189 -175
  41. package/dist/agent/tools/edit-diff.js.map +1 -1
  42. package/dist/agent/tools/edit.d.ts.map +1 -1
  43. package/dist/agent/tools/edit.js +137 -121
  44. package/dist/agent/tools/edit.js.map +1 -1
  45. package/dist/agent/tools/find.d.ts.map +1 -1
  46. package/dist/agent/tools/find.js +100 -65
  47. package/dist/agent/tools/find.js.map +1 -1
  48. package/dist/agent/tools/grep.d.ts.map +1 -1
  49. package/dist/agent/tools/grep.js +126 -97
  50. package/dist/agent/tools/grep.js.map +1 -1
  51. package/dist/agent/tools/index.d.ts +53 -40
  52. package/dist/agent/tools/index.d.ts.map +1 -1
  53. package/dist/agent/tools/index.js +19 -12
  54. package/dist/agent/tools/index.js.map +1 -1
  55. package/dist/agent/tools/ls.d.ts +2 -1
  56. package/dist/agent/tools/ls.d.ts.map +1 -1
  57. package/dist/agent/tools/ls.js +145 -94
  58. package/dist/agent/tools/ls.js.map +1 -1
  59. package/dist/agent/tools/path-utils.d.ts.map +1 -1
  60. package/dist/agent/tools/path-utils.js +48 -29
  61. package/dist/agent/tools/path-utils.js.map +1 -1
  62. package/dist/agent/tools/process-controller.d.ts +15 -0
  63. package/dist/agent/tools/process-controller.d.ts.map +1 -0
  64. package/dist/agent/tools/process-controller.js +39 -0
  65. package/dist/agent/tools/process-controller.js.map +1 -0
  66. package/dist/agent/tools/process-manager.d.ts +60 -0
  67. package/dist/agent/tools/process-manager.d.ts.map +1 -0
  68. package/dist/agent/tools/process-manager.js +485 -0
  69. package/dist/agent/tools/process-manager.js.map +1 -0
  70. package/dist/agent/tools/process-types.d.ts +74 -0
  71. package/dist/agent/tools/process-types.d.ts.map +1 -0
  72. package/dist/agent/tools/process-types.js +7 -0
  73. package/dist/agent/tools/process-types.js.map +1 -0
  74. package/dist/agent/tools/process.d.ts +38 -0
  75. package/dist/agent/tools/process.d.ts.map +1 -0
  76. package/dist/agent/tools/process.js +360 -0
  77. package/dist/agent/tools/process.js.map +1 -0
  78. package/dist/agent/tools/read.d.ts.map +1 -1
  79. package/dist/agent/tools/read.js +157 -135
  80. package/dist/agent/tools/read.js.map +1 -1
  81. package/dist/agent/tools/registry.js +2 -4
  82. package/dist/agent/tools/registry.js.map +1 -1
  83. package/dist/agent/tools/teams/activity-tracker.d.ts +66 -0
  84. package/dist/agent/tools/teams/activity-tracker.d.ts.map +1 -0
  85. package/dist/agent/tools/teams/activity-tracker.js +480 -0
  86. package/dist/agent/tools/teams/activity-tracker.js.map +1 -0
  87. package/dist/agent/tools/teams/cleanup.d.ts +51 -0
  88. package/dist/agent/tools/teams/cleanup.d.ts.map +1 -0
  89. package/dist/agent/tools/teams/cleanup.js +219 -0
  90. package/dist/agent/tools/teams/cleanup.js.map +1 -0
  91. package/dist/agent/tools/teams/fs-lock.d.ts +12 -0
  92. package/dist/agent/tools/teams/fs-lock.d.ts.map +1 -0
  93. package/dist/agent/tools/teams/fs-lock.js +74 -0
  94. package/dist/agent/tools/teams/fs-lock.js.map +1 -0
  95. package/dist/agent/tools/teams/index.d.ts +12 -0
  96. package/dist/agent/tools/teams/index.d.ts.map +1 -0
  97. package/dist/agent/tools/teams/index.js +12 -0
  98. package/dist/agent/tools/teams/index.js.map +1 -0
  99. package/dist/agent/tools/teams/mailbox.d.ts +21 -0
  100. package/dist/agent/tools/teams/mailbox.d.ts.map +1 -0
  101. package/dist/agent/tools/teams/mailbox.js +106 -0
  102. package/dist/agent/tools/teams/mailbox.js.map +1 -0
  103. package/dist/agent/tools/teams/model-policy.d.ts +23 -0
  104. package/dist/agent/tools/teams/model-policy.d.ts.map +1 -0
  105. package/dist/agent/tools/teams/model-policy.js +113 -0
  106. package/dist/agent/tools/teams/model-policy.js.map +1 -0
  107. package/dist/agent/tools/teams/names.d.ts +28 -0
  108. package/dist/agent/tools/teams/names.d.ts.map +1 -0
  109. package/dist/agent/tools/teams/names.js +109 -0
  110. package/dist/agent/tools/teams/names.js.map +1 -0
  111. package/dist/agent/tools/teams/protocol.d.ts +75 -0
  112. package/dist/agent/tools/teams/protocol.d.ts.map +1 -0
  113. package/dist/agent/tools/teams/protocol.js +205 -0
  114. package/dist/agent/tools/teams/protocol.js.map +1 -0
  115. package/dist/agent/tools/teams/task-store.d.ts +89 -0
  116. package/dist/agent/tools/teams/task-store.d.ts.map +1 -0
  117. package/dist/agent/tools/teams/task-store.js +445 -0
  118. package/dist/agent/tools/teams/task-store.js.map +1 -0
  119. package/dist/agent/tools/teams/team-attach-claim.d.ts +36 -0
  120. package/dist/agent/tools/teams/team-attach-claim.d.ts.map +1 -0
  121. package/dist/agent/tools/teams/team-attach-claim.js +144 -0
  122. package/dist/agent/tools/teams/team-attach-claim.js.map +1 -0
  123. package/dist/agent/tools/teams/team-config.d.ts +55 -0
  124. package/dist/agent/tools/teams/team-config.d.ts.map +1 -0
  125. package/dist/agent/tools/teams/team-config.js +252 -0
  126. package/dist/agent/tools/teams/team-config.js.map +1 -0
  127. package/dist/agent/tools/teams/worktree.d.ts +40 -0
  128. package/dist/agent/tools/teams/worktree.d.ts.map +1 -0
  129. package/dist/agent/tools/teams/worktree.js +213 -0
  130. package/dist/agent/tools/teams/worktree.js.map +1 -0
  131. package/dist/agent/tools/todo-store.js +2 -1
  132. package/dist/agent/tools/todo-store.js.map +1 -1
  133. package/dist/agent/tools/todo.d.ts +2 -2
  134. package/dist/agent/tools/todo.js +2 -2
  135. package/dist/agent/tools/truncate.d.ts.map +1 -1
  136. package/dist/agent/tools/truncate.js +150 -134
  137. package/dist/agent/tools/truncate.js.map +1 -1
  138. package/dist/agent/tools/utils/hook-runner.d.ts +9 -10
  139. package/dist/agent/tools/utils/hook-runner.d.ts.map +1 -1
  140. package/dist/agent/tools/utils/hook-runner.js +18 -16
  141. package/dist/agent/tools/utils/hook-runner.js.map +1 -1
  142. package/dist/agent/tools/utils/image-resize.d.ts +1 -14
  143. package/dist/agent/tools/utils/image-resize.d.ts.map +1 -1
  144. package/dist/agent/tools/utils/image-resize.js +80 -34
  145. package/dist/agent/tools/utils/image-resize.js.map +1 -1
  146. package/dist/agent/tools/utils/mime.d.ts +0 -8
  147. package/dist/agent/tools/utils/mime.d.ts.map +1 -1
  148. package/dist/agent/tools/utils/mime.js +43 -32
  149. package/dist/agent/tools/utils/mime.js.map +1 -1
  150. package/dist/agent/tools/utils/shell.d.ts +1 -23
  151. package/dist/agent/tools/utils/shell.d.ts.map +1 -1
  152. package/dist/agent/tools/utils/shell.js +43 -86
  153. package/dist/agent/tools/utils/shell.js.map +1 -1
  154. package/dist/agent/tools/write.d.ts.map +1 -1
  155. package/dist/agent/tools/write.js +105 -62
  156. package/dist/agent/tools/write.js.map +1 -1
  157. package/dist/agent/types.d.ts +69 -64
  158. package/dist/agent/types.d.ts.map +1 -1
  159. package/dist/agent/types.js +38 -23
  160. package/dist/agent/types.js.map +1 -1
  161. package/dist/agent.d.ts +4 -0
  162. package/dist/agent.d.ts.map +1 -1
  163. package/dist/agent.js +4 -0
  164. package/dist/agent.js.map +1 -1
  165. package/dist/ai/api-registry.d.ts.map +1 -1
  166. package/dist/ai/api-registry.js +3 -4
  167. package/dist/ai/api-registry.js.map +1 -1
  168. package/dist/ai/cli.js +62 -82
  169. package/dist/ai/cli.js.map +1 -1
  170. package/dist/ai/env-api-keys.d.ts.map +1 -1
  171. package/dist/ai/env-api-keys.js +78 -81
  172. package/dist/ai/env-api-keys.js.map +1 -1
  173. package/dist/ai/index.d.ts +6 -0
  174. package/dist/ai/index.d.ts.map +1 -1
  175. package/dist/ai/index.js +6 -0
  176. package/dist/ai/index.js.map +1 -1
  177. package/dist/ai/models.d.ts +7 -17
  178. package/dist/ai/models.d.ts.map +1 -1
  179. package/dist/ai/models.generated.d.ts +87 -244
  180. package/dist/ai/models.generated.d.ts.map +1 -1
  181. package/dist/ai/models.generated.js +82 -241
  182. package/dist/ai/models.generated.js.map +1 -1
  183. package/dist/ai/models.js +17 -11
  184. package/dist/ai/models.js.map +1 -1
  185. package/dist/ai/providers/amazon-bedrock.d.ts.map +1 -1
  186. package/dist/ai/providers/amazon-bedrock.js +319 -248
  187. package/dist/ai/providers/amazon-bedrock.js.map +1 -1
  188. package/dist/ai/providers/anthropic.d.ts.map +1 -1
  189. package/dist/ai/providers/anthropic.js +378 -324
  190. package/dist/ai/providers/anthropic.js.map +1 -1
  191. package/dist/ai/providers/azure-openai-responses.d.ts.map +1 -1
  192. package/dist/ai/providers/azure-openai-responses.js +164 -123
  193. package/dist/ai/providers/azure-openai-responses.js.map +1 -1
  194. package/dist/ai/providers/google-shared.d.ts +0 -18
  195. package/dist/ai/providers/google-shared.d.ts.map +1 -1
  196. package/dist/ai/providers/google-shared.js +224 -225
  197. package/dist/ai/providers/google-shared.js.map +1 -1
  198. package/dist/ai/providers/google-vertex.d.ts.map +1 -1
  199. package/dist/ai/providers/google-vertex.js +244 -226
  200. package/dist/ai/providers/google-vertex.js.map +1 -1
  201. package/dist/ai/providers/google.d.ts +3 -0
  202. package/dist/ai/providers/google.d.ts.map +1 -1
  203. package/dist/ai/providers/google.js +232 -210
  204. package/dist/ai/providers/google.js.map +1 -1
  205. package/dist/ai/providers/kimi.js +1 -0
  206. package/dist/ai/providers/kimi.js.map +1 -1
  207. package/dist/ai/providers/mock.d.ts +10 -0
  208. package/dist/ai/providers/mock.d.ts.map +1 -0
  209. package/dist/ai/providers/mock.js +64 -0
  210. package/dist/ai/providers/mock.js.map +1 -0
  211. package/dist/ai/providers/openai-codex-responses.d.ts.map +1 -1
  212. package/dist/ai/providers/openai-codex-responses.js +178 -133
  213. package/dist/ai/providers/openai-codex-responses.js.map +1 -1
  214. package/dist/ai/providers/openai-completions.d.ts.map +1 -1
  215. package/dist/ai/providers/openai-completions.js +468 -387
  216. package/dist/ai/providers/openai-completions.js.map +1 -1
  217. package/dist/ai/providers/openai-responses-shared.d.ts.map +1 -1
  218. package/dist/ai/providers/openai-responses-shared.js +187 -166
  219. package/dist/ai/providers/openai-responses-shared.js.map +1 -1
  220. package/dist/ai/providers/openai-responses.d.ts.map +1 -1
  221. package/dist/ai/providers/openai-responses.js +108 -85
  222. package/dist/ai/providers/openai-responses.js.map +1 -1
  223. package/dist/ai/providers/openai-scaffold.d.ts +4 -0
  224. package/dist/ai/providers/openai-scaffold.d.ts.map +1 -0
  225. package/dist/ai/providers/openai-scaffold.js +33 -0
  226. package/dist/ai/providers/openai-scaffold.js.map +1 -0
  227. package/dist/ai/providers/register-builtins.d.ts.map +1 -1
  228. package/dist/ai/providers/register-builtins.js +109 -42
  229. package/dist/ai/providers/register-builtins.js.map +1 -1
  230. package/dist/ai/providers/simple-options.js +2 -0
  231. package/dist/ai/providers/simple-options.js.map +1 -1
  232. package/dist/ai/providers/transform-messages.js +3 -9
  233. package/dist/ai/providers/transform-messages.js.map +1 -1
  234. package/dist/ai/stream.d.ts +4 -14
  235. package/dist/ai/stream.d.ts.map +1 -1
  236. package/dist/ai/stream.js +0 -36
  237. package/dist/ai/stream.js.map +1 -1
  238. package/dist/ai/types.d.ts +22 -3
  239. package/dist/ai/types.d.ts.map +1 -1
  240. package/dist/ai/types.js +154 -77
  241. package/dist/ai/types.js.map +1 -1
  242. package/dist/ai/utils/base-stream-handler.js +1 -0
  243. package/dist/ai/utils/base-stream-handler.js.map +1 -1
  244. package/dist/ai/utils/event-stream.d.ts +2 -0
  245. package/dist/ai/utils/event-stream.d.ts.map +1 -1
  246. package/dist/ai/utils/event-stream.js +22 -5
  247. package/dist/ai/utils/event-stream.js.map +1 -1
  248. package/dist/ai/utils/json-parse.d.ts +3 -0
  249. package/dist/ai/utils/json-parse.d.ts.map +1 -1
  250. package/dist/ai/utils/json-parse.js +8 -5
  251. package/dist/ai/utils/json-parse.js.map +1 -1
  252. package/dist/ai/utils/oauth/anthropic.d.ts.map +1 -1
  253. package/dist/ai/utils/oauth/anthropic.js +110 -65
  254. package/dist/ai/utils/oauth/anthropic.js.map +1 -1
  255. package/dist/ai/utils/oauth/github-copilot.d.ts +8 -16
  256. package/dist/ai/utils/oauth/github-copilot.d.ts.map +1 -1
  257. package/dist/ai/utils/oauth/github-copilot.js +218 -227
  258. package/dist/ai/utils/oauth/github-copilot.js.map +1 -1
  259. package/dist/ai/utils/oauth/openai-codex.d.ts +4 -2
  260. package/dist/ai/utils/oauth/openai-codex.d.ts.map +1 -1
  261. package/dist/ai/utils/oauth/openai-codex.js +221 -236
  262. package/dist/ai/utils/oauth/openai-codex.js.map +1 -1
  263. package/dist/ai/utils/oauth/pkce.d.ts +6 -5
  264. package/dist/ai/utils/oauth/pkce.d.ts.map +1 -1
  265. package/dist/ai/utils/oauth/pkce.js +24 -21
  266. package/dist/ai/utils/oauth/pkce.js.map +1 -1
  267. package/dist/ai/utils/oauth/types.d.ts +31 -12
  268. package/dist/ai/utils/oauth/types.d.ts.map +1 -1
  269. package/dist/ai/utils/oauth/types.js +10 -1
  270. package/dist/ai/utils/oauth/types.js.map +1 -1
  271. package/dist/ai/utils/overflow.d.ts.map +1 -1
  272. package/dist/ai/utils/overflow.js +49 -21
  273. package/dist/ai/utils/overflow.js.map +1 -1
  274. package/dist/ai/utils/provider-adapter.js +9 -0
  275. package/dist/ai/utils/provider-adapter.js.map +1 -1
  276. package/dist/ai/utils/provider-client-builder.js +1 -1
  277. package/dist/ai/utils/provider-client-builder.js.map +1 -1
  278. package/dist/ai/utils/provider-errors.js +2 -0
  279. package/dist/ai/utils/provider-errors.js.map +1 -1
  280. package/dist/ai/utils/sanitize-unicode.d.ts +0 -20
  281. package/dist/ai/utils/sanitize-unicode.d.ts.map +1 -1
  282. package/dist/ai/utils/sanitize-unicode.js +35 -17
  283. package/dist/ai/utils/sanitize-unicode.js.map +1 -1
  284. package/dist/ai/utils/stream-event-helper.js +3 -0
  285. package/dist/ai/utils/stream-event-helper.js.map +1 -1
  286. package/dist/ai/utils/stream-handler-types.js +5 -0
  287. package/dist/ai/utils/stream-handler-types.js.map +1 -1
  288. package/dist/ai/utils/streaming-state-manager.js +4 -2
  289. package/dist/ai/utils/streaming-state-manager.js.map +1 -1
  290. package/dist/ai/utils/typebox-helpers.d.ts +6 -4
  291. package/dist/ai/utils/typebox-helpers.d.ts.map +1 -1
  292. package/dist/ai/utils/typebox-helpers.js +25 -7
  293. package/dist/ai/utils/typebox-helpers.js.map +1 -1
  294. package/dist/ai/utils/validation.d.ts.map +1 -1
  295. package/dist/ai/utils/validation.js +67 -34
  296. package/dist/ai/utils/validation.js.map +1 -1
  297. package/dist/ai.d.ts +4 -0
  298. package/dist/ai.d.ts.map +1 -1
  299. package/dist/ai.js +4 -0
  300. package/dist/ai.js.map +1 -1
  301. package/dist/cli.d.ts +3 -0
  302. package/dist/cli.d.ts.map +1 -0
  303. package/dist/cli.js +3 -0
  304. package/dist/cli.js.map +1 -0
  305. package/dist/index.d.ts +1 -0
  306. package/dist/index.d.ts.map +1 -1
  307. package/dist/index.js +1 -0
  308. package/dist/index.js.map +1 -1
  309. package/dist/mcp/client-pool.js +3 -2
  310. package/dist/mcp/client-pool.js.map +1 -1
  311. package/dist/mcp/client.js +19 -6
  312. package/dist/mcp/client.js.map +1 -1
  313. package/dist/mcp/config.d.ts +6 -6
  314. package/dist/mcp/config.js +17 -17
  315. package/dist/mcp/config.js.map +1 -1
  316. package/dist/mcp/errors.js +8 -0
  317. package/dist/mcp/errors.js.map +1 -1
  318. package/dist/mcp/index.d.ts +5 -5
  319. package/dist/mcp/index.js +5 -5
  320. package/dist/mcp/schema-converter.d.ts +1 -1
  321. package/dist/mcp/schema-converter.js +1 -1
  322. package/dist/mcp/server.d.ts +4 -4
  323. package/dist/mcp/server.js +12 -7
  324. package/dist/mcp/server.js.map +1 -1
  325. package/dist/mcp/tool-factory.d.ts +2 -2
  326. package/dist/mcp/tool-factory.js +2 -2
  327. package/dist/mcp.d.ts +0 -4
  328. package/dist/mcp.d.ts.map +1 -1
  329. package/dist/mcp.js +0 -4
  330. package/dist/mcp.js.map +1 -1
  331. package/dist/observability.d.ts +2 -0
  332. package/dist/observability.d.ts.map +1 -0
  333. package/dist/observability.js +2 -0
  334. package/dist/observability.js.map +1 -0
  335. package/dist/tui/autocomplete.d.ts +14 -18
  336. package/dist/tui/autocomplete.d.ts.map +1 -1
  337. package/dist/tui/autocomplete.js +290 -402
  338. package/dist/tui/autocomplete.js.map +1 -1
  339. package/dist/tui/components/box.d.ts +1 -6
  340. package/dist/tui/components/box.d.ts.map +1 -1
  341. package/dist/tui/components/box.js +98 -67
  342. package/dist/tui/components/box.js.map +1 -1
  343. package/dist/tui/components/cancellable-loader.d.ts +6 -3
  344. package/dist/tui/components/cancellable-loader.d.ts.map +1 -1
  345. package/dist/tui/components/cancellable-loader.js +8 -9
  346. package/dist/tui/components/cancellable-loader.js.map +1 -1
  347. package/dist/tui/components/editor.d.ts +18 -0
  348. package/dist/tui/components/editor.d.ts.map +1 -1
  349. package/dist/tui/components/editor.js +356 -354
  350. package/dist/tui/components/editor.js.map +1 -1
  351. package/dist/tui/components/image.d.ts +2 -0
  352. package/dist/tui/components/image.d.ts.map +1 -1
  353. package/dist/tui/components/image.js +79 -37
  354. package/dist/tui/components/image.js.map +1 -1
  355. package/dist/tui/components/input.d.ts +4 -8
  356. package/dist/tui/components/input.d.ts.map +1 -1
  357. package/dist/tui/components/input.js +236 -232
  358. package/dist/tui/components/input.js.map +1 -1
  359. package/dist/tui/components/loader.d.ts +5 -5
  360. package/dist/tui/components/loader.d.ts.map +1 -1
  361. package/dist/tui/components/loader.js +22 -19
  362. package/dist/tui/components/loader.js.map +1 -1
  363. package/dist/tui/components/markdown.d.ts +2 -32
  364. package/dist/tui/components/markdown.d.ts.map +1 -1
  365. package/dist/tui/components/markdown.js +338 -357
  366. package/dist/tui/components/markdown.js.map +1 -1
  367. package/dist/tui/components/select-list.d.ts +1 -0
  368. package/dist/tui/components/select-list.d.ts.map +1 -1
  369. package/dist/tui/components/select-list.js +83 -82
  370. package/dist/tui/components/select-list.js.map +1 -1
  371. package/dist/tui/components/settings-list.d.ts +10 -10
  372. package/dist/tui/components/settings-list.d.ts.map +1 -1
  373. package/dist/tui/components/settings-list.js +48 -40
  374. package/dist/tui/components/settings-list.js.map +1 -1
  375. package/dist/tui/components/spacer.d.ts +1 -0
  376. package/dist/tui/components/spacer.d.ts.map +1 -1
  377. package/dist/tui/components/spacer.js +20 -5
  378. package/dist/tui/components/spacer.js.map +1 -1
  379. package/dist/tui/components/text.d.ts.map +1 -1
  380. package/dist/tui/components/text.js +47 -20
  381. package/dist/tui/components/text.js.map +1 -1
  382. package/dist/tui/components/truncated-text.d.ts +8 -4
  383. package/dist/tui/components/truncated-text.d.ts.map +1 -1
  384. package/dist/tui/components/truncated-text.js +15 -12
  385. package/dist/tui/components/truncated-text.js.map +1 -1
  386. package/dist/tui/editor-component.d.ts +87 -23
  387. package/dist/tui/editor-component.d.ts.map +1 -1
  388. package/dist/tui/fuzzy.d.ts.map +1 -1
  389. package/dist/tui/fuzzy.js +101 -50
  390. package/dist/tui/fuzzy.js.map +1 -1
  391. package/dist/tui/keybindings.d.ts +3 -3
  392. package/dist/tui/keybindings.d.ts.map +1 -1
  393. package/dist/tui/keybindings.js +137 -111
  394. package/dist/tui/keybindings.js.map +1 -1
  395. package/dist/tui/keys.d.ts +46 -43
  396. package/dist/tui/keys.d.ts.map +1 -1
  397. package/dist/tui/keys.js +493 -411
  398. package/dist/tui/keys.js.map +1 -1
  399. package/dist/tui/stdin-buffer.d.ts.map +1 -1
  400. package/dist/tui/stdin-buffer.js +162 -159
  401. package/dist/tui/stdin-buffer.js.map +1 -1
  402. package/dist/tui/terminal-image.d.ts +10 -5
  403. package/dist/tui/terminal-image.d.ts.map +1 -1
  404. package/dist/tui/terminal-image.js +53 -51
  405. package/dist/tui/terminal-image.js.map +1 -1
  406. package/dist/tui/terminal.d.ts +4 -27
  407. package/dist/tui/terminal.d.ts.map +1 -1
  408. package/dist/tui/terminal.js +123 -121
  409. package/dist/tui/terminal.js.map +1 -1
  410. package/dist/tui/tui.d.ts +14 -1
  411. package/dist/tui/tui.d.ts.map +1 -1
  412. package/dist/tui/tui.js +185 -145
  413. package/dist/tui/tui.js.map +1 -1
  414. package/dist/tui/utils.d.ts.map +1 -1
  415. package/dist/tui/utils.js +235 -216
  416. package/dist/tui/utils.js.map +1 -1
  417. package/dist/tui.d.ts +4 -0
  418. package/dist/tui.d.ts.map +1 -1
  419. package/dist/tui.js +4 -0
  420. package/dist/tui.js.map +1 -1
  421. package/package.json +23 -43
  422. package/LICENSE.md +0 -22
  423. package/dist/agent/tools/task-types.d.ts +0 -74
  424. package/dist/agent/tools/task-types.d.ts.map +0 -1
  425. package/dist/agent/tools/task-types.js +0 -8
  426. package/dist/agent/tools/task-types.js.map +0 -1
  427. package/dist/agent/tools/task.d.ts +0 -84
  428. package/dist/agent/tools/task.d.ts.map +0 -1
  429. package/dist/agent/tools/task.js +0 -184
  430. package/dist/agent/tools/task.js.map +0 -1
  431. package/dist/memory/embedder/base.d.ts +0 -41
  432. package/dist/memory/embedder/base.d.ts.map +0 -1
  433. package/dist/memory/embedder/base.js +0 -10
  434. package/dist/memory/embedder/base.js.map +0 -1
  435. package/dist/memory/embedder/index.d.ts +0 -8
  436. package/dist/memory/embedder/index.d.ts.map +0 -1
  437. package/dist/memory/embedder/index.js +0 -6
  438. package/dist/memory/embedder/index.js.map +0 -1
  439. package/dist/memory/embedder/openai.d.ts +0 -35
  440. package/dist/memory/embedder/openai.d.ts.map +0 -1
  441. package/dist/memory/embedder/openai.js +0 -103
  442. package/dist/memory/embedder/openai.js.map +0 -1
  443. package/dist/memory/index.d.ts +0 -33
  444. package/dist/memory/index.d.ts.map +0 -1
  445. package/dist/memory/index.js +0 -31
  446. package/dist/memory/index.js.map +0 -1
  447. package/dist/memory/memory.d.ts +0 -126
  448. package/dist/memory/memory.d.ts.map +0 -1
  449. package/dist/memory/memory.js +0 -280
  450. package/dist/memory/memory.js.map +0 -1
  451. package/dist/memory/processors/base.d.ts +0 -42
  452. package/dist/memory/processors/base.d.ts.map +0 -1
  453. package/dist/memory/processors/base.js +0 -6
  454. package/dist/memory/processors/base.js.map +0 -1
  455. package/dist/memory/processors/index.d.ts +0 -16
  456. package/dist/memory/processors/index.d.ts.map +0 -1
  457. package/dist/memory/processors/index.js +0 -18
  458. package/dist/memory/processors/index.js.map +0 -1
  459. package/dist/memory/processors/message-history.d.ts +0 -35
  460. package/dist/memory/processors/message-history.d.ts.map +0 -1
  461. package/dist/memory/processors/message-history.js +0 -51
  462. package/dist/memory/processors/message-history.js.map +0 -1
  463. package/dist/memory/processors/observational-memory/index.d.ts +0 -82
  464. package/dist/memory/processors/observational-memory/index.d.ts.map +0 -1
  465. package/dist/memory/processors/observational-memory/index.js +0 -234
  466. package/dist/memory/processors/observational-memory/index.js.map +0 -1
  467. package/dist/memory/processors/observational-memory/observer-agent.d.ts +0 -64
  468. package/dist/memory/processors/observational-memory/observer-agent.d.ts.map +0 -1
  469. package/dist/memory/processors/observational-memory/observer-agent.js +0 -362
  470. package/dist/memory/processors/observational-memory/observer-agent.js.map +0 -1
  471. package/dist/memory/processors/observational-memory/reflector-agent.d.ts +0 -38
  472. package/dist/memory/processors/observational-memory/reflector-agent.d.ts.map +0 -1
  473. package/dist/memory/processors/observational-memory/reflector-agent.js +0 -213
  474. package/dist/memory/processors/observational-memory/reflector-agent.js.map +0 -1
  475. package/dist/memory/processors/observational-memory/token-counter.d.ts +0 -35
  476. package/dist/memory/processors/observational-memory/token-counter.d.ts.map +0 -1
  477. package/dist/memory/processors/observational-memory/token-counter.js +0 -90
  478. package/dist/memory/processors/observational-memory/token-counter.js.map +0 -1
  479. package/dist/memory/processors/semantic-recall.d.ts +0 -55
  480. package/dist/memory/processors/semantic-recall.d.ts.map +0 -1
  481. package/dist/memory/processors/semantic-recall.js +0 -143
  482. package/dist/memory/processors/semantic-recall.js.map +0 -1
  483. package/dist/memory/processors/working-memory.d.ts +0 -41
  484. package/dist/memory/processors/working-memory.d.ts.map +0 -1
  485. package/dist/memory/processors/working-memory.js +0 -82
  486. package/dist/memory/processors/working-memory.js.map +0 -1
  487. package/dist/memory/storage/base.d.ts +0 -288
  488. package/dist/memory/storage/base.d.ts.map +0 -1
  489. package/dist/memory/storage/base.js +0 -211
  490. package/dist/memory/storage/base.js.map +0 -1
  491. package/dist/memory/storage/index.d.ts +0 -9
  492. package/dist/memory/storage/index.d.ts.map +0 -1
  493. package/dist/memory/storage/index.js +0 -7
  494. package/dist/memory/storage/index.js.map +0 -1
  495. package/dist/memory/storage/inmemory.d.ts +0 -93
  496. package/dist/memory/storage/inmemory.d.ts.map +0 -1
  497. package/dist/memory/storage/inmemory.js +0 -646
  498. package/dist/memory/storage/inmemory.js.map +0 -1
  499. package/dist/memory/tools/working-memory.d.ts +0 -100
  500. package/dist/memory/tools/working-memory.d.ts.map +0 -1
  501. package/dist/memory/tools/working-memory.js +0 -237
  502. package/dist/memory/tools/working-memory.js.map +0 -1
  503. package/dist/memory/types.d.ts +0 -386
  504. package/dist/memory/types.d.ts.map +0 -1
  505. package/dist/memory/types.js +0 -58
  506. package/dist/memory/types.js.map +0 -1
  507. package/dist/memory/vector/base.d.ts +0 -145
  508. package/dist/memory/vector/base.d.ts.map +0 -1
  509. package/dist/memory/vector/base.js +0 -83
  510. package/dist/memory/vector/base.js.map +0 -1
  511. package/dist/memory/vector/index.d.ts +0 -8
  512. package/dist/memory/vector/index.d.ts.map +0 -1
  513. package/dist/memory/vector/index.js +0 -7
  514. package/dist/memory/vector/index.js.map +0 -1
  515. package/dist/memory/vector/inmemory.d.ts +0 -47
  516. package/dist/memory/vector/inmemory.d.ts.map +0 -1
  517. package/dist/memory/vector/inmemory.js +0 -234
  518. package/dist/memory/vector/inmemory.js.map +0 -1
@@ -1,646 +0,0 @@
1
- /**
2
- * In-Memory Storage Implementation
3
- * Based on Mastra InMemoryMemory
4
- */
5
- import { MemoryStorage, normalizePerPage, calculatePagination, } from "./base.js";
6
- /**
7
- * Create a new in-memory database
8
- */
9
- export function createInMemoryDB() {
10
- return {
11
- threads: new Map(),
12
- messages: new Map(),
13
- resources: new Map(),
14
- observationalMemory: new Map(),
15
- };
16
- }
17
- /**
18
- * In-Memory Storage Implementation
19
- */
20
- export class InMemoryStorage extends MemoryStorage {
21
- constructor(db) {
22
- super();
23
- this.name = "inmemory";
24
- this.supportsObservationalMemory = true;
25
- this.db = db ?? createInMemoryDB();
26
- }
27
- async init() {
28
- // Nothing to initialize for in-memory storage
29
- }
30
- async dangerouslyClearAll() {
31
- this.db.threads.clear();
32
- this.db.messages.clear();
33
- this.db.resources.clear();
34
- this.db.observationalMemory.clear();
35
- }
36
- // ========================================================================
37
- // Thread Operations
38
- // ========================================================================
39
- async getThreadById({ threadId }) {
40
- const thread = this.db.threads.get(threadId);
41
- return thread ? { ...thread, metadata: thread.metadata ? { ...thread.metadata } : thread.metadata } : null;
42
- }
43
- async saveThread({ thread }) {
44
- this.db.threads.set(thread.id, thread);
45
- return thread;
46
- }
47
- async updateThread({ id, title, metadata, }) {
48
- const thread = this.db.threads.get(id);
49
- if (!thread) {
50
- throw new Error(`Thread with id ${id} not found`);
51
- }
52
- if (title !== undefined)
53
- thread.title = title;
54
- if (metadata !== undefined)
55
- thread.metadata = { ...thread.metadata, ...metadata };
56
- thread.updatedAt = new Date();
57
- return thread;
58
- }
59
- async deleteThread({ threadId }) {
60
- this.db.threads.delete(threadId);
61
- // Delete all messages in the thread
62
- for (const [key, msg] of this.db.messages) {
63
- if (msg.thread_id === threadId) {
64
- this.db.messages.delete(key);
65
- }
66
- }
67
- }
68
- async listThreads(args) {
69
- const { page = 0, perPage: perPageInput, orderBy, filter } = args;
70
- const { field, direction } = this.parseOrderBy(orderBy);
71
- this.validatePaginationInput(page, perPageInput ?? 100);
72
- const perPage = normalizePerPage(perPageInput, 100);
73
- // Start with all threads
74
- let threads = Array.from(this.db.threads.values());
75
- // Apply resourceId filter if provided
76
- if (filter?.resourceId) {
77
- threads = threads.filter(t => t.resourceId === filter.resourceId);
78
- }
79
- // Validate and apply metadata filter
80
- this.validateMetadataKeys(filter?.metadata);
81
- if (filter?.metadata && Object.keys(filter.metadata).length > 0) {
82
- threads = threads.filter(thread => {
83
- if (!thread.metadata)
84
- return false;
85
- return Object.entries(filter.metadata).every(([key, value]) => deepEquals(thread.metadata[key], value));
86
- });
87
- }
88
- // Sort threads
89
- threads.sort((a, b) => {
90
- const aValue = new Date(a[field]).getTime();
91
- const bValue = new Date(b[field]).getTime();
92
- return direction === "ASC" ? aValue - bValue : bValue - aValue;
93
- });
94
- // Clone threads for output
95
- const clonedThreads = threads.map(thread => ({
96
- ...thread,
97
- metadata: thread.metadata ? { ...thread.metadata } : thread.metadata,
98
- }));
99
- const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
100
- return {
101
- threads: clonedThreads.slice(offset, offset + perPage),
102
- total: clonedThreads.length,
103
- page,
104
- perPage: perPageForResponse,
105
- hasMore: offset + perPage < clonedThreads.length,
106
- };
107
- }
108
- // ========================================================================
109
- // Message Operations
110
- // ========================================================================
111
- async listMessages({ threadId, resourceId: optionalResourceId, include, filter, perPage: perPageInput, page = 0, orderBy, }) {
112
- const threadIds = Array.isArray(threadId) ? threadId : [threadId];
113
- if (threadIds.length === 0 || threadIds.some(id => !id.trim())) {
114
- throw new Error("threadId must be a non-empty string or array of non-empty strings");
115
- }
116
- const threadIdSet = new Set(threadIds);
117
- const { field, direction } = this.parseOrderBy(orderBy, "ASC");
118
- const perPage = normalizePerPage(perPageInput, 40);
119
- if (page < 0) {
120
- throw new Error("page must be >= 0");
121
- }
122
- const { offset, perPage: perPageForResponse } = calculatePagination(page, perPageInput, perPage);
123
- // Get messages matching threadId(s)
124
- let threadMessages = Array.from(this.db.messages.values()).filter(msg => {
125
- if (threadIdSet && !threadIdSet.has(msg.thread_id))
126
- return false;
127
- if (optionalResourceId && msg.resourceId !== optionalResourceId)
128
- return false;
129
- return true;
130
- });
131
- // Apply date filtering
132
- if (filter?.dateRange) {
133
- const { start, end } = filter.dateRange;
134
- if (start) {
135
- threadMessages = threadMessages.filter(msg => new Date(msg.createdAt) >= start);
136
- }
137
- if (end) {
138
- threadMessages = threadMessages.filter(msg => new Date(msg.createdAt) <= end);
139
- }
140
- }
141
- // Sort messages
142
- threadMessages.sort((a, b) => {
143
- const aDate = field === "updatedAt" ? a.updatedAt : a.createdAt;
144
- const bDate = field === "updatedAt" ? b.updatedAt : b.createdAt;
145
- const aValue = new Date(aDate ?? a.createdAt).getTime();
146
- const bValue = new Date(bDate ?? b.createdAt).getTime();
147
- return direction === "ASC" ? aValue - bValue : bValue - aValue;
148
- });
149
- const totalThreadMessages = threadMessages.length;
150
- // Apply pagination
151
- const paginatedMessages = threadMessages.slice(offset, offset + perPage);
152
- // Convert to CoreMessage format
153
- const messages = paginatedMessages.map(msg => this.parseStoredMessage(msg));
154
- const messageIds = new Set(messages.map(m => m.id));
155
- // Add included messages
156
- if (include && include.length > 0) {
157
- for (const includeItem of include) {
158
- const targetMessage = this.db.messages.get(includeItem.id);
159
- if (targetMessage && !messageIds.has(targetMessage.id)) {
160
- const convertedMessage = this.parseStoredMessage(targetMessage);
161
- messages.push(convertedMessage);
162
- messageIds.add(targetMessage.id);
163
- }
164
- }
165
- }
166
- // Final sort
167
- messages.sort((a, b) => {
168
- const aValue = new Date(a.createdAt).getTime();
169
- const bValue = new Date(b.createdAt).getTime();
170
- return direction === "ASC" ? aValue - bValue : bValue - aValue;
171
- });
172
- return {
173
- messages,
174
- total: totalThreadMessages,
175
- page,
176
- perPage: perPageForResponse,
177
- hasMore: offset + perPage < totalThreadMessages,
178
- };
179
- }
180
- async listMessagesById({ messageIds }) {
181
- const rawMessages = messageIds
182
- .map(id => this.db.messages.get(id))
183
- .filter((msg) => !!msg);
184
- return {
185
- messages: rawMessages.map(m => this.parseStoredMessage(m)),
186
- };
187
- }
188
- async saveMessages(args) {
189
- const { messages } = args;
190
- // Update thread timestamps
191
- const threadIds = new Set(messages.map(msg => msg.threadId).filter((id) => Boolean(id)));
192
- for (const threadId of threadIds) {
193
- const thread = this.db.threads.get(threadId);
194
- if (thread) {
195
- thread.updatedAt = new Date();
196
- }
197
- }
198
- // Save messages
199
- for (const message of messages) {
200
- const storageMessage = {
201
- id: message.id,
202
- thread_id: message.threadId || "",
203
- content: typeof message.content === "string"
204
- ? message.content
205
- : JSON.stringify(message.content),
206
- role: message.role,
207
- type: "text",
208
- createdAt: message.createdAt,
209
- resourceId: message.resourceId || null,
210
- };
211
- this.db.messages.set(message.id, storageMessage);
212
- }
213
- return { messages };
214
- }
215
- async updateMessages(args) {
216
- const updatedMessages = [];
217
- for (const update of args.messages) {
218
- const storageMsg = this.db.messages.get(update.id);
219
- if (!storageMsg)
220
- continue;
221
- if (update.role !== undefined)
222
- storageMsg.role = update.role;
223
- if (update.resourceId !== undefined)
224
- storageMsg.resourceId = update.resourceId;
225
- if (update.threadId !== undefined)
226
- storageMsg.thread_id = update.threadId;
227
- if (update.content !== undefined) {
228
- storageMsg.content = typeof update.content === "string"
229
- ? update.content
230
- : JSON.stringify(update.content);
231
- }
232
- updatedMessages.push(this.parseStoredMessage(storageMsg));
233
- }
234
- return updatedMessages;
235
- }
236
- async deleteMessages(messageIds) {
237
- if (!messageIds || messageIds.length === 0)
238
- return;
239
- const threadIds = new Set();
240
- for (const messageId of messageIds) {
241
- const message = this.db.messages.get(messageId);
242
- if (message && message.thread_id) {
243
- threadIds.add(message.thread_id);
244
- }
245
- this.db.messages.delete(messageId);
246
- }
247
- // Update thread timestamps
248
- const now = new Date();
249
- for (const threadId of threadIds) {
250
- const thread = this.db.threads.get(threadId);
251
- if (thread) {
252
- thread.updatedAt = now;
253
- }
254
- }
255
- }
256
- // ========================================================================
257
- // Resource Operations
258
- // ========================================================================
259
- async getResourceById({ resourceId }) {
260
- const resource = this.db.resources.get(resourceId);
261
- return resource
262
- ? { ...resource, metadata: resource.metadata ? { ...resource.metadata } : resource.metadata }
263
- : null;
264
- }
265
- async saveResource({ resource }) {
266
- this.db.resources.set(resource.id, resource);
267
- return resource;
268
- }
269
- async updateResource({ resourceId, workingMemory, metadata, }) {
270
- let resource = this.db.resources.get(resourceId);
271
- if (!resource) {
272
- resource = {
273
- id: resourceId,
274
- workingMemory,
275
- metadata: metadata || {},
276
- createdAt: new Date(),
277
- updatedAt: new Date(),
278
- };
279
- }
280
- else {
281
- resource = {
282
- ...resource,
283
- workingMemory: workingMemory !== undefined ? workingMemory : resource.workingMemory,
284
- metadata: {
285
- ...resource.metadata,
286
- ...metadata,
287
- },
288
- updatedAt: new Date(),
289
- };
290
- }
291
- this.db.resources.set(resourceId, resource);
292
- return resource;
293
- }
294
- // ========================================================================
295
- // Observational Memory Operations
296
- // ========================================================================
297
- getObservationalMemoryKey(threadId, resourceId) {
298
- if (threadId) {
299
- return `thread:${threadId}`;
300
- }
301
- return `resource:${resourceId}`;
302
- }
303
- async getObservationalMemory(threadId, resourceId) {
304
- const key = this.getObservationalMemoryKey(threadId, resourceId);
305
- const records = this.db.observationalMemory.get(key);
306
- return records?.[0] ?? null;
307
- }
308
- async getObservationalMemoryHistory(threadId, resourceId, limit) {
309
- const key = this.getObservationalMemoryKey(threadId, resourceId);
310
- const records = this.db.observationalMemory.get(key) ?? [];
311
- return limit != null ? records.slice(0, limit) : records;
312
- }
313
- async initializeObservationalMemory(input) {
314
- const { threadId, resourceId, scope, config, observedTimezone } = input;
315
- const key = this.getObservationalMemoryKey(threadId, resourceId);
316
- const now = new Date();
317
- const record = {
318
- id: crypto.randomUUID(),
319
- scope,
320
- threadId,
321
- resourceId,
322
- createdAt: now,
323
- updatedAt: now,
324
- lastObservedAt: undefined,
325
- originType: "initial",
326
- generationCount: 0,
327
- activeObservations: "",
328
- bufferedObservationChunks: undefined,
329
- bufferedReflection: undefined,
330
- totalTokensObserved: 0,
331
- observationTokenCount: 0,
332
- pendingMessageTokens: 0,
333
- isReflecting: false,
334
- isObserving: false,
335
- isBufferingObservation: false,
336
- isBufferingReflection: false,
337
- lastBufferedAtTokens: 0,
338
- lastBufferedAtTime: null,
339
- config,
340
- observedTimezone,
341
- metadata: {},
342
- };
343
- const existing = this.db.observationalMemory.get(key) ?? [];
344
- this.db.observationalMemory.set(key, [record, ...existing]);
345
- return record;
346
- }
347
- async insertObservationalMemoryRecord(record) {
348
- const key = this.getObservationalMemoryKey(record.threadId, record.resourceId);
349
- const existing = this.db.observationalMemory.get(key) ?? [];
350
- let inserted = false;
351
- for (let i = 0; i < existing.length; i++) {
352
- if (record.generationCount >= existing[i].generationCount) {
353
- existing.splice(i, 0, record);
354
- inserted = true;
355
- break;
356
- }
357
- }
358
- if (!inserted)
359
- existing.push(record);
360
- this.db.observationalMemory.set(key, existing);
361
- }
362
- async updateActiveObservations(input) {
363
- const { id, observations, tokenCount, lastObservedAt, observedMessageIds } = input;
364
- const record = this.findObservationalMemoryRecordById(id);
365
- if (!record) {
366
- throw new Error(`Observational memory record not found: ${id}`);
367
- }
368
- record.activeObservations = observations;
369
- record.observationTokenCount = tokenCount;
370
- record.totalTokensObserved += tokenCount;
371
- record.pendingMessageTokens = 0;
372
- record.lastObservedAt = lastObservedAt;
373
- record.updatedAt = new Date();
374
- if (observedMessageIds) {
375
- record.observedMessageIds = observedMessageIds;
376
- }
377
- }
378
- async updateBufferedObservations(input) {
379
- const { id, chunk, lastBufferedAtTime } = input;
380
- const record = this.findObservationalMemoryRecordById(id);
381
- if (!record) {
382
- throw new Error(`Observational memory record not found: ${id}`);
383
- }
384
- const newChunk = {
385
- id: `ombuf-${crypto.randomUUID()}`,
386
- cycleId: chunk.cycleId,
387
- observations: chunk.observations,
388
- tokenCount: chunk.tokenCount,
389
- messageIds: chunk.messageIds,
390
- messageTokens: chunk.messageTokens,
391
- lastObservedAt: chunk.lastObservedAt,
392
- createdAt: new Date(),
393
- suggestedContinuation: chunk.suggestedContinuation,
394
- currentTask: chunk.currentTask,
395
- };
396
- const existingChunks = Array.isArray(record.bufferedObservationChunks)
397
- ? record.bufferedObservationChunks
398
- : [];
399
- record.bufferedObservationChunks = [...existingChunks, newChunk];
400
- if (lastBufferedAtTime) {
401
- record.lastBufferedAtTime = lastBufferedAtTime;
402
- }
403
- record.updatedAt = new Date();
404
- }
405
- async swapBufferedToActive(input) {
406
- const { id, activationRatio, lastObservedAt, messageTokensThreshold, currentPendingTokens, forceMaxActivation } = input;
407
- const record = this.findObservationalMemoryRecordById(id);
408
- if (!record) {
409
- throw new Error(`Observational memory record not found: ${id}`);
410
- }
411
- const chunks = Array.isArray(record.bufferedObservationChunks)
412
- ? record.bufferedObservationChunks
413
- : [];
414
- if (chunks.length === 0) {
415
- return {
416
- chunksActivated: 0,
417
- messageTokensActivated: 0,
418
- observationTokensActivated: 0,
419
- messagesActivated: 0,
420
- activatedCycleIds: [],
421
- activatedMessageIds: [],
422
- };
423
- }
424
- const retentionFloor = messageTokensThreshold * (1 - activationRatio);
425
- const targetMessageTokens = Math.max(0, currentPendingTokens - retentionFloor);
426
- let cumulativeMessageTokens = 0;
427
- let chunksToActivate = 1;
428
- for (let i = 0; i < chunks.length; i++) {
429
- cumulativeMessageTokens += chunks[i].messageTokens ?? 0;
430
- if (cumulativeMessageTokens >= targetMessageTokens) {
431
- chunksToActivate = i + 1;
432
- break;
433
- }
434
- }
435
- const activatedChunks = chunks.slice(0, chunksToActivate);
436
- const remainingChunks = chunks.slice(chunksToActivate);
437
- const activatedContent = activatedChunks.map(c => c.observations).join("\n\n");
438
- const activatedTokens = activatedChunks.reduce((sum, c) => sum + c.tokenCount, 0);
439
- const activatedMessageTokens = activatedChunks.reduce((sum, c) => sum + (c.messageTokens ?? 0), 0);
440
- const activatedMessageCount = activatedChunks.reduce((sum, c) => sum + c.messageIds.length, 0);
441
- const activatedCycleIds = activatedChunks.map(c => c.cycleId).filter((id) => !!id);
442
- const activatedMessageIds = activatedChunks.flatMap(c => c.messageIds);
443
- const latestChunk = activatedChunks[activatedChunks.length - 1];
444
- const derivedLastObservedAt = lastObservedAt ??
445
- (latestChunk?.lastObservedAt ? new Date(latestChunk.lastObservedAt) : new Date());
446
- if (record.activeObservations) {
447
- record.activeObservations = `${record.activeObservations}\n\n${activatedContent}`;
448
- }
449
- else {
450
- record.activeObservations = activatedContent;
451
- }
452
- record.observationTokenCount = (record.observationTokenCount ?? 0) + activatedTokens;
453
- record.pendingMessageTokens = Math.max(0, (record.pendingMessageTokens ?? 0) - activatedMessageTokens);
454
- record.bufferedObservationChunks = remainingChunks.length > 0 ? remainingChunks : undefined;
455
- record.lastObservedAt = derivedLastObservedAt;
456
- record.updatedAt = new Date();
457
- return {
458
- chunksActivated: activatedChunks.length,
459
- messageTokensActivated: activatedMessageTokens,
460
- observationTokensActivated: activatedTokens,
461
- messagesActivated: activatedMessageCount,
462
- activatedCycleIds,
463
- activatedMessageIds,
464
- observations: activatedContent,
465
- suggestedContinuation: latestChunk?.suggestedContinuation ?? undefined,
466
- currentTask: latestChunk?.currentTask ?? undefined,
467
- };
468
- }
469
- async createReflectionGeneration(input) {
470
- const { currentRecord, reflection, tokenCount } = input;
471
- const key = this.getObservationalMemoryKey(currentRecord.threadId, currentRecord.resourceId);
472
- const now = new Date();
473
- const newRecord = {
474
- id: crypto.randomUUID(),
475
- scope: currentRecord.scope,
476
- threadId: currentRecord.threadId,
477
- resourceId: currentRecord.resourceId,
478
- createdAt: now,
479
- updatedAt: now,
480
- lastObservedAt: currentRecord.lastObservedAt ?? now,
481
- originType: "reflection",
482
- generationCount: currentRecord.generationCount + 1,
483
- activeObservations: reflection,
484
- config: currentRecord.config,
485
- totalTokensObserved: currentRecord.totalTokensObserved,
486
- observationTokenCount: tokenCount,
487
- pendingMessageTokens: 0,
488
- isReflecting: false,
489
- isObserving: false,
490
- isBufferingObservation: false,
491
- isBufferingReflection: false,
492
- lastBufferedAtTokens: 0,
493
- lastBufferedAtTime: null,
494
- observedTimezone: currentRecord.observedTimezone,
495
- metadata: {},
496
- };
497
- const existing = this.db.observationalMemory.get(key) ?? [];
498
- this.db.observationalMemory.set(key, [newRecord, ...existing]);
499
- return newRecord;
500
- }
501
- async updateBufferedReflection(input) {
502
- const { id, reflection, tokenCount, inputTokenCount, reflectedObservationLineCount } = input;
503
- const record = this.findObservationalMemoryRecordById(id);
504
- if (!record) {
505
- throw new Error(`Observational memory record not found: ${id}`);
506
- }
507
- const existing = record.bufferedReflection || "";
508
- record.bufferedReflection = existing ? `${existing}\n\n${reflection}` : reflection;
509
- record.bufferedReflectionTokens = (record.bufferedReflectionTokens || 0) + tokenCount;
510
- record.bufferedReflectionInputTokens = (record.bufferedReflectionInputTokens || 0) + inputTokenCount;
511
- record.reflectedObservationLineCount = reflectedObservationLineCount;
512
- record.updatedAt = new Date();
513
- }
514
- async swapBufferedReflectionToActive(input) {
515
- const { currentRecord, tokenCount } = input;
516
- const record = this.findObservationalMemoryRecordById(currentRecord.id);
517
- if (!record) {
518
- throw new Error(`Observational memory record not found: ${currentRecord.id}`);
519
- }
520
- if (!record.bufferedReflection) {
521
- throw new Error("No buffered reflection to swap");
522
- }
523
- const bufferedReflection = record.bufferedReflection;
524
- const reflectedLineCount = record.reflectedObservationLineCount ?? 0;
525
- const currentObservations = record.activeObservations ?? "";
526
- const allLines = currentObservations.split("\n");
527
- const unreflectedLines = allLines.slice(reflectedLineCount);
528
- const unreflectedContent = unreflectedLines.join("\n").trim();
529
- const newObservations = unreflectedContent
530
- ? `${bufferedReflection}\n\n${unreflectedContent}`
531
- : bufferedReflection;
532
- const newRecord = await this.createReflectionGeneration({
533
- currentRecord: record,
534
- reflection: newObservations,
535
- tokenCount,
536
- });
537
- record.bufferedReflection = undefined;
538
- record.bufferedReflectionTokens = undefined;
539
- record.bufferedReflectionInputTokens = undefined;
540
- record.reflectedObservationLineCount = undefined;
541
- return newRecord;
542
- }
543
- async setReflectingFlag(id, isReflecting) {
544
- const record = this.findObservationalMemoryRecordById(id);
545
- if (!record)
546
- throw new Error(`Observational memory record not found: ${id}`);
547
- record.isReflecting = isReflecting;
548
- record.updatedAt = new Date();
549
- }
550
- async setObservingFlag(id, isObserving) {
551
- const record = this.findObservationalMemoryRecordById(id);
552
- if (!record)
553
- throw new Error(`Observational memory record not found: ${id}`);
554
- record.isObserving = isObserving;
555
- record.updatedAt = new Date();
556
- }
557
- async setBufferingObservationFlag(id, isBuffering, lastBufferedAtTokens) {
558
- const record = this.findObservationalMemoryRecordById(id);
559
- if (!record)
560
- throw new Error(`Observational memory record not found: ${id}`);
561
- record.isBufferingObservation = isBuffering;
562
- if (lastBufferedAtTokens !== undefined) {
563
- record.lastBufferedAtTokens = lastBufferedAtTokens;
564
- }
565
- record.updatedAt = new Date();
566
- }
567
- async setBufferingReflectionFlag(id, isBuffering) {
568
- const record = this.findObservationalMemoryRecordById(id);
569
- if (!record)
570
- throw new Error(`Observational memory record not found: ${id}`);
571
- record.isBufferingReflection = isBuffering;
572
- record.updatedAt = new Date();
573
- }
574
- async clearObservationalMemory(threadId, resourceId) {
575
- const key = this.getObservationalMemoryKey(threadId, resourceId);
576
- this.db.observationalMemory.delete(key);
577
- }
578
- async setPendingMessageTokens(id, tokenCount) {
579
- const record = this.findObservationalMemoryRecordById(id);
580
- if (!record)
581
- throw new Error(`Observational memory record not found: ${id}`);
582
- record.pendingMessageTokens = tokenCount;
583
- record.updatedAt = new Date();
584
- }
585
- // ========================================================================
586
- // Private Helpers
587
- // ========================================================================
588
- parseStoredMessage(message) {
589
- let parsedContent;
590
- try {
591
- const parsed = JSON.parse(message.content);
592
- if (typeof parsed === "string") {
593
- parsedContent = {
594
- format: 2,
595
- content: parsed,
596
- parts: [{ type: "text", text: parsed }],
597
- };
598
- }
599
- else {
600
- parsedContent = parsed;
601
- }
602
- }
603
- catch {
604
- parsedContent = {
605
- format: 2,
606
- content: message.content,
607
- parts: [{ type: "text", text: message.content }],
608
- };
609
- }
610
- return {
611
- id: message.id,
612
- threadId: message.thread_id,
613
- content: parsedContent,
614
- role: message.role,
615
- createdAt: message.createdAt,
616
- resourceId: message.resourceId ?? undefined,
617
- };
618
- }
619
- findObservationalMemoryRecordById(id) {
620
- for (const records of this.db.observationalMemory.values()) {
621
- const record = records.find(r => r.id === id);
622
- if (record)
623
- return record;
624
- }
625
- return null;
626
- }
627
- }
628
- /**
629
- * Deep equality check
630
- */
631
- function deepEquals(a, b) {
632
- if (a === b)
633
- return true;
634
- if (typeof a !== typeof b)
635
- return false;
636
- if (typeof a !== "object" || a === null || b === null)
637
- return false;
638
- const aObj = a;
639
- const bObj = b;
640
- const aKeys = Object.keys(aObj);
641
- const bKeys = Object.keys(bObj);
642
- if (aKeys.length !== bKeys.length)
643
- return false;
644
- return aKeys.every(key => deepEquals(aObj[key], bObj[key]));
645
- }
646
- //# sourceMappingURL=inmemory.js.map