attocode 0.1.0

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 (488) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/LICENSE +21 -0
  3. package/README.md +164 -0
  4. package/dist/src/adapters.d.ts +83 -0
  5. package/dist/src/adapters.d.ts.map +1 -0
  6. package/dist/src/adapters.js +221 -0
  7. package/dist/src/adapters.js.map +1 -0
  8. package/dist/src/agent-tools/index.d.ts +7 -0
  9. package/dist/src/agent-tools/index.d.ts.map +1 -0
  10. package/dist/src/agent-tools/index.js +8 -0
  11. package/dist/src/agent-tools/index.js.map +1 -0
  12. package/dist/src/agent-tools/lsp-file-tools.d.ts +33 -0
  13. package/dist/src/agent-tools/lsp-file-tools.d.ts.map +1 -0
  14. package/dist/src/agent-tools/lsp-file-tools.js +200 -0
  15. package/dist/src/agent-tools/lsp-file-tools.js.map +1 -0
  16. package/dist/src/agent.d.ts +667 -0
  17. package/dist/src/agent.d.ts.map +1 -0
  18. package/dist/src/agent.js +2824 -0
  19. package/dist/src/agent.js.map +1 -0
  20. package/dist/src/cli.d.ts +36 -0
  21. package/dist/src/cli.d.ts.map +1 -0
  22. package/dist/src/cli.js +176 -0
  23. package/dist/src/cli.js.map +1 -0
  24. package/dist/src/commands/handler.d.ts +22 -0
  25. package/dist/src/commands/handler.d.ts.map +1 -0
  26. package/dist/src/commands/handler.js +1320 -0
  27. package/dist/src/commands/handler.js.map +1 -0
  28. package/dist/src/commands/init.d.ts +7 -0
  29. package/dist/src/commands/init.d.ts.map +1 -0
  30. package/dist/src/commands/init.js +153 -0
  31. package/dist/src/commands/init.js.map +1 -0
  32. package/dist/src/commands/types.d.ts +70 -0
  33. package/dist/src/commands/types.d.ts.map +1 -0
  34. package/dist/src/commands/types.js +8 -0
  35. package/dist/src/commands/types.js.map +1 -0
  36. package/dist/src/config.d.ts +22 -0
  37. package/dist/src/config.d.ts.map +1 -0
  38. package/dist/src/config.js +25 -0
  39. package/dist/src/config.js.map +1 -0
  40. package/dist/src/core/index.d.ts +32 -0
  41. package/dist/src/core/index.d.ts.map +1 -0
  42. package/dist/src/core/index.js +35 -0
  43. package/dist/src/core/index.js.map +1 -0
  44. package/dist/src/core/process-handlers.d.ts +43 -0
  45. package/dist/src/core/process-handlers.d.ts.map +1 -0
  46. package/dist/src/core/process-handlers.js +117 -0
  47. package/dist/src/core/process-handlers.js.map +1 -0
  48. package/dist/src/core/protocol/bridge.d.ts +117 -0
  49. package/dist/src/core/protocol/bridge.d.ts.map +1 -0
  50. package/dist/src/core/protocol/bridge.js +149 -0
  51. package/dist/src/core/protocol/bridge.js.map +1 -0
  52. package/dist/src/core/protocol/index.d.ts +8 -0
  53. package/dist/src/core/protocol/index.d.ts.map +1 -0
  54. package/dist/src/core/protocol/index.js +8 -0
  55. package/dist/src/core/protocol/index.js.map +1 -0
  56. package/dist/src/core/protocol/types.d.ts +539 -0
  57. package/dist/src/core/protocol/types.d.ts.map +1 -0
  58. package/dist/src/core/protocol/types.js +149 -0
  59. package/dist/src/core/protocol/types.js.map +1 -0
  60. package/dist/src/core/queues/atomic-counter.d.ts +36 -0
  61. package/dist/src/core/queues/atomic-counter.d.ts.map +1 -0
  62. package/dist/src/core/queues/atomic-counter.js +46 -0
  63. package/dist/src/core/queues/atomic-counter.js.map +1 -0
  64. package/dist/src/core/queues/event-queue.d.ts +126 -0
  65. package/dist/src/core/queues/event-queue.d.ts.map +1 -0
  66. package/dist/src/core/queues/event-queue.js +208 -0
  67. package/dist/src/core/queues/event-queue.js.map +1 -0
  68. package/dist/src/core/queues/index.d.ts +12 -0
  69. package/dist/src/core/queues/index.d.ts.map +1 -0
  70. package/dist/src/core/queues/index.js +15 -0
  71. package/dist/src/core/queues/index.js.map +1 -0
  72. package/dist/src/core/queues/submission-queue.d.ts +116 -0
  73. package/dist/src/core/queues/submission-queue.d.ts.map +1 -0
  74. package/dist/src/core/queues/submission-queue.js +236 -0
  75. package/dist/src/core/queues/submission-queue.js.map +1 -0
  76. package/dist/src/costs/index.d.ts +22 -0
  77. package/dist/src/costs/index.d.ts.map +1 -0
  78. package/dist/src/costs/index.js +22 -0
  79. package/dist/src/costs/index.js.map +1 -0
  80. package/dist/src/costs/model-registry.d.ts +80 -0
  81. package/dist/src/costs/model-registry.d.ts.map +1 -0
  82. package/dist/src/costs/model-registry.js +237 -0
  83. package/dist/src/costs/model-registry.js.map +1 -0
  84. package/dist/src/costs/types.d.ts +50 -0
  85. package/dist/src/costs/types.d.ts.map +1 -0
  86. package/dist/src/costs/types.js +2 -0
  87. package/dist/src/costs/types.js.map +1 -0
  88. package/dist/src/defaults.d.ts +114 -0
  89. package/dist/src/defaults.d.ts.map +1 -0
  90. package/dist/src/defaults.js +457 -0
  91. package/dist/src/defaults.js.map +1 -0
  92. package/dist/src/first-run.d.ts +35 -0
  93. package/dist/src/first-run.d.ts.map +1 -0
  94. package/dist/src/first-run.js +94 -0
  95. package/dist/src/first-run.js.map +1 -0
  96. package/dist/src/hello.d.ts +2 -0
  97. package/dist/src/hello.d.ts.map +1 -0
  98. package/dist/src/hello.js +4 -0
  99. package/dist/src/hello.js.map +1 -0
  100. package/dist/src/integrations/agent-registry.d.ts +160 -0
  101. package/dist/src/integrations/agent-registry.d.ts.map +1 -0
  102. package/dist/src/integrations/agent-registry.js +446 -0
  103. package/dist/src/integrations/agent-registry.js.map +1 -0
  104. package/dist/src/integrations/auto-compaction.d.ts +177 -0
  105. package/dist/src/integrations/auto-compaction.d.ts.map +1 -0
  106. package/dist/src/integrations/auto-compaction.js +428 -0
  107. package/dist/src/integrations/auto-compaction.js.map +1 -0
  108. package/dist/src/integrations/cancellation.d.ts +162 -0
  109. package/dist/src/integrations/cancellation.d.ts.map +1 -0
  110. package/dist/src/integrations/cancellation.js +339 -0
  111. package/dist/src/integrations/cancellation.js.map +1 -0
  112. package/dist/src/integrations/codebase-context.d.ts +319 -0
  113. package/dist/src/integrations/codebase-context.d.ts.map +1 -0
  114. package/dist/src/integrations/codebase-context.js +816 -0
  115. package/dist/src/integrations/codebase-context.js.map +1 -0
  116. package/dist/src/integrations/compaction.d.ts +192 -0
  117. package/dist/src/integrations/compaction.d.ts.map +1 -0
  118. package/dist/src/integrations/compaction.js +376 -0
  119. package/dist/src/integrations/compaction.js.map +1 -0
  120. package/dist/src/integrations/context-engineering.d.ts +246 -0
  121. package/dist/src/integrations/context-engineering.d.ts.map +1 -0
  122. package/dist/src/integrations/context-engineering.js +394 -0
  123. package/dist/src/integrations/context-engineering.js.map +1 -0
  124. package/dist/src/integrations/diff-utils.d.ts +105 -0
  125. package/dist/src/integrations/diff-utils.d.ts.map +1 -0
  126. package/dist/src/integrations/diff-utils.js +497 -0
  127. package/dist/src/integrations/diff-utils.js.map +1 -0
  128. package/dist/src/integrations/economics.d.ts +192 -0
  129. package/dist/src/integrations/economics.d.ts.map +1 -0
  130. package/dist/src/integrations/economics.js +431 -0
  131. package/dist/src/integrations/economics.js.map +1 -0
  132. package/dist/src/integrations/execution-policy.d.ts +189 -0
  133. package/dist/src/integrations/execution-policy.d.ts.map +1 -0
  134. package/dist/src/integrations/execution-policy.js +352 -0
  135. package/dist/src/integrations/execution-policy.js.map +1 -0
  136. package/dist/src/integrations/file-change-tracker.d.ts +161 -0
  137. package/dist/src/integrations/file-change-tracker.d.ts.map +1 -0
  138. package/dist/src/integrations/file-change-tracker.js +520 -0
  139. package/dist/src/integrations/file-change-tracker.js.map +1 -0
  140. package/dist/src/integrations/hierarchical-config.d.ts +212 -0
  141. package/dist/src/integrations/hierarchical-config.d.ts.map +1 -0
  142. package/dist/src/integrations/hierarchical-config.js +484 -0
  143. package/dist/src/integrations/hierarchical-config.js.map +1 -0
  144. package/dist/src/integrations/hooks.d.ts +114 -0
  145. package/dist/src/integrations/hooks.d.ts.map +1 -0
  146. package/dist/src/integrations/hooks.js +326 -0
  147. package/dist/src/integrations/hooks.js.map +1 -0
  148. package/dist/src/integrations/ignore.d.ts +143 -0
  149. package/dist/src/integrations/ignore.d.ts.map +1 -0
  150. package/dist/src/integrations/ignore.js +417 -0
  151. package/dist/src/integrations/ignore.js.map +1 -0
  152. package/dist/src/integrations/image-renderer.d.ts +119 -0
  153. package/dist/src/integrations/image-renderer.d.ts.map +1 -0
  154. package/dist/src/integrations/image-renderer.js +306 -0
  155. package/dist/src/integrations/image-renderer.js.map +1 -0
  156. package/dist/src/integrations/index.d.ts +42 -0
  157. package/dist/src/integrations/index.d.ts.map +1 -0
  158. package/dist/src/integrations/index.js +73 -0
  159. package/dist/src/integrations/index.js.map +1 -0
  160. package/dist/src/integrations/lsp.d.ts +196 -0
  161. package/dist/src/integrations/lsp.d.ts.map +1 -0
  162. package/dist/src/integrations/lsp.js +582 -0
  163. package/dist/src/integrations/lsp.js.map +1 -0
  164. package/dist/src/integrations/mcp-client.d.ts +270 -0
  165. package/dist/src/integrations/mcp-client.d.ts.map +1 -0
  166. package/dist/src/integrations/mcp-client.js +698 -0
  167. package/dist/src/integrations/mcp-client.js.map +1 -0
  168. package/dist/src/integrations/mcp-tool-search.d.ts +77 -0
  169. package/dist/src/integrations/mcp-tool-search.d.ts.map +1 -0
  170. package/dist/src/integrations/mcp-tool-search.js +220 -0
  171. package/dist/src/integrations/mcp-tool-search.js.map +1 -0
  172. package/dist/src/integrations/memory.d.ts +108 -0
  173. package/dist/src/integrations/memory.d.ts.map +1 -0
  174. package/dist/src/integrations/memory.js +288 -0
  175. package/dist/src/integrations/memory.js.map +1 -0
  176. package/dist/src/integrations/multi-agent.d.ts +150 -0
  177. package/dist/src/integrations/multi-agent.d.ts.map +1 -0
  178. package/dist/src/integrations/multi-agent.js +306 -0
  179. package/dist/src/integrations/multi-agent.js.map +1 -0
  180. package/dist/src/integrations/observability.d.ts +162 -0
  181. package/dist/src/integrations/observability.d.ts.map +1 -0
  182. package/dist/src/integrations/observability.js +406 -0
  183. package/dist/src/integrations/observability.js.map +1 -0
  184. package/dist/src/integrations/openrouter-pricing.d.ts +42 -0
  185. package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -0
  186. package/dist/src/integrations/openrouter-pricing.js +124 -0
  187. package/dist/src/integrations/openrouter-pricing.js.map +1 -0
  188. package/dist/src/integrations/pending-plan.d.ts +171 -0
  189. package/dist/src/integrations/pending-plan.d.ts.map +1 -0
  190. package/dist/src/integrations/pending-plan.js +244 -0
  191. package/dist/src/integrations/pending-plan.js.map +1 -0
  192. package/dist/src/integrations/persistence.d.ts +48 -0
  193. package/dist/src/integrations/persistence.d.ts.map +1 -0
  194. package/dist/src/integrations/persistence.js +196 -0
  195. package/dist/src/integrations/persistence.js.map +1 -0
  196. package/dist/src/integrations/planning.d.ts +96 -0
  197. package/dist/src/integrations/planning.d.ts.map +1 -0
  198. package/dist/src/integrations/planning.js +338 -0
  199. package/dist/src/integrations/planning.js.map +1 -0
  200. package/dist/src/integrations/pty-shell.d.ts +169 -0
  201. package/dist/src/integrations/pty-shell.d.ts.map +1 -0
  202. package/dist/src/integrations/pty-shell.js +367 -0
  203. package/dist/src/integrations/pty-shell.js.map +1 -0
  204. package/dist/src/integrations/react.d.ts +139 -0
  205. package/dist/src/integrations/react.d.ts.map +1 -0
  206. package/dist/src/integrations/react.js +273 -0
  207. package/dist/src/integrations/react.js.map +1 -0
  208. package/dist/src/integrations/resources.d.ts +177 -0
  209. package/dist/src/integrations/resources.d.ts.map +1 -0
  210. package/dist/src/integrations/resources.js +311 -0
  211. package/dist/src/integrations/resources.js.map +1 -0
  212. package/dist/src/integrations/result-synthesizer.d.ts +389 -0
  213. package/dist/src/integrations/result-synthesizer.d.ts.map +1 -0
  214. package/dist/src/integrations/result-synthesizer.js +951 -0
  215. package/dist/src/integrations/result-synthesizer.js.map +1 -0
  216. package/dist/src/integrations/routing.d.ts +117 -0
  217. package/dist/src/integrations/routing.d.ts.map +1 -0
  218. package/dist/src/integrations/routing.js +347 -0
  219. package/dist/src/integrations/routing.js.map +1 -0
  220. package/dist/src/integrations/rules.d.ts +131 -0
  221. package/dist/src/integrations/rules.d.ts.map +1 -0
  222. package/dist/src/integrations/rules.js +284 -0
  223. package/dist/src/integrations/rules.js.map +1 -0
  224. package/dist/src/integrations/safety.d.ts +142 -0
  225. package/dist/src/integrations/safety.d.ts.map +1 -0
  226. package/dist/src/integrations/safety.js +342 -0
  227. package/dist/src/integrations/safety.js.map +1 -0
  228. package/dist/src/integrations/sandbox/basic.d.ts +74 -0
  229. package/dist/src/integrations/sandbox/basic.d.ts.map +1 -0
  230. package/dist/src/integrations/sandbox/basic.js +310 -0
  231. package/dist/src/integrations/sandbox/basic.js.map +1 -0
  232. package/dist/src/integrations/sandbox/docker.d.ts +94 -0
  233. package/dist/src/integrations/sandbox/docker.d.ts.map +1 -0
  234. package/dist/src/integrations/sandbox/docker.js +293 -0
  235. package/dist/src/integrations/sandbox/docker.js.map +1 -0
  236. package/dist/src/integrations/sandbox/index.d.ts +182 -0
  237. package/dist/src/integrations/sandbox/index.d.ts.map +1 -0
  238. package/dist/src/integrations/sandbox/index.js +382 -0
  239. package/dist/src/integrations/sandbox/index.js.map +1 -0
  240. package/dist/src/integrations/sandbox/landlock.d.ts +59 -0
  241. package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -0
  242. package/dist/src/integrations/sandbox/landlock.js +326 -0
  243. package/dist/src/integrations/sandbox/landlock.js.map +1 -0
  244. package/dist/src/integrations/sandbox/seatbelt.d.ts +68 -0
  245. package/dist/src/integrations/sandbox/seatbelt.d.ts.map +1 -0
  246. package/dist/src/integrations/sandbox/seatbelt.js +298 -0
  247. package/dist/src/integrations/sandbox/seatbelt.js.map +1 -0
  248. package/dist/src/integrations/semantic-cache.d.ts +178 -0
  249. package/dist/src/integrations/semantic-cache.d.ts.map +1 -0
  250. package/dist/src/integrations/semantic-cache.js +372 -0
  251. package/dist/src/integrations/semantic-cache.js.map +1 -0
  252. package/dist/src/integrations/session-store.d.ts +183 -0
  253. package/dist/src/integrations/session-store.d.ts.map +1 -0
  254. package/dist/src/integrations/session-store.js +345 -0
  255. package/dist/src/integrations/session-store.js.map +1 -0
  256. package/dist/src/integrations/shared-blackboard.d.ts +403 -0
  257. package/dist/src/integrations/shared-blackboard.d.ts.map +1 -0
  258. package/dist/src/integrations/shared-blackboard.js +710 -0
  259. package/dist/src/integrations/shared-blackboard.js.map +1 -0
  260. package/dist/src/integrations/skills.d.ts +171 -0
  261. package/dist/src/integrations/skills.d.ts.map +1 -0
  262. package/dist/src/integrations/skills.js +403 -0
  263. package/dist/src/integrations/skills.js.map +1 -0
  264. package/dist/src/integrations/smart-decomposer.d.ts +322 -0
  265. package/dist/src/integrations/smart-decomposer.d.ts.map +1 -0
  266. package/dist/src/integrations/smart-decomposer.js +856 -0
  267. package/dist/src/integrations/smart-decomposer.js.map +1 -0
  268. package/dist/src/integrations/sourcegraph.d.ts +169 -0
  269. package/dist/src/integrations/sourcegraph.d.ts.map +1 -0
  270. package/dist/src/integrations/sourcegraph.js +379 -0
  271. package/dist/src/integrations/sourcegraph.js.map +1 -0
  272. package/dist/src/integrations/sqlite-store.d.ts +518 -0
  273. package/dist/src/integrations/sqlite-store.d.ts.map +1 -0
  274. package/dist/src/integrations/sqlite-store.js +1423 -0
  275. package/dist/src/integrations/sqlite-store.js.map +1 -0
  276. package/dist/src/integrations/streaming.d.ts +102 -0
  277. package/dist/src/integrations/streaming.d.ts.map +1 -0
  278. package/dist/src/integrations/streaming.js +362 -0
  279. package/dist/src/integrations/streaming.js.map +1 -0
  280. package/dist/src/integrations/thread-manager.d.ts +199 -0
  281. package/dist/src/integrations/thread-manager.d.ts.map +1 -0
  282. package/dist/src/integrations/thread-manager.js +357 -0
  283. package/dist/src/integrations/thread-manager.js.map +1 -0
  284. package/dist/src/main.d.ts +26 -0
  285. package/dist/src/main.d.ts.map +1 -0
  286. package/dist/src/main.js +170 -0
  287. package/dist/src/main.js.map +1 -0
  288. package/dist/src/modes/index.d.ts +10 -0
  289. package/dist/src/modes/index.d.ts.map +1 -0
  290. package/dist/src/modes/index.js +10 -0
  291. package/dist/src/modes/index.js.map +1 -0
  292. package/dist/src/modes/repl.d.ts +19 -0
  293. package/dist/src/modes/repl.d.ts.map +1 -0
  294. package/dist/src/modes/repl.js +393 -0
  295. package/dist/src/modes/repl.js.map +1 -0
  296. package/dist/src/modes/tui.d.ts +29 -0
  297. package/dist/src/modes/tui.d.ts.map +1 -0
  298. package/dist/src/modes/tui.js +272 -0
  299. package/dist/src/modes/tui.js.map +1 -0
  300. package/dist/src/modes.d.ts +179 -0
  301. package/dist/src/modes.d.ts.map +1 -0
  302. package/dist/src/modes.js +385 -0
  303. package/dist/src/modes.js.map +1 -0
  304. package/dist/src/observability/tracer.d.ts +111 -0
  305. package/dist/src/observability/tracer.d.ts.map +1 -0
  306. package/dist/src/observability/tracer.js +300 -0
  307. package/dist/src/observability/tracer.js.map +1 -0
  308. package/dist/src/observability/types.d.ts +271 -0
  309. package/dist/src/observability/types.d.ts.map +1 -0
  310. package/dist/src/observability/types.js +24 -0
  311. package/dist/src/observability/types.js.map +1 -0
  312. package/dist/src/paths.d.ts +101 -0
  313. package/dist/src/paths.d.ts.map +1 -0
  314. package/dist/src/paths.js +148 -0
  315. package/dist/src/paths.js.map +1 -0
  316. package/dist/src/persistence/index.d.ts +38 -0
  317. package/dist/src/persistence/index.d.ts.map +1 -0
  318. package/dist/src/persistence/index.js +48 -0
  319. package/dist/src/persistence/index.js.map +1 -0
  320. package/dist/src/persistence/migrator.d.ts +135 -0
  321. package/dist/src/persistence/migrator.d.ts.map +1 -0
  322. package/dist/src/persistence/migrator.js +303 -0
  323. package/dist/src/persistence/migrator.js.map +1 -0
  324. package/dist/src/persistence/schema.d.ts +101 -0
  325. package/dist/src/persistence/schema.d.ts.map +1 -0
  326. package/dist/src/persistence/schema.js +395 -0
  327. package/dist/src/persistence/schema.js.map +1 -0
  328. package/dist/src/providers/adapters/anthropic.d.ts +20 -0
  329. package/dist/src/providers/adapters/anthropic.d.ts.map +1 -0
  330. package/dist/src/providers/adapters/anthropic.js +124 -0
  331. package/dist/src/providers/adapters/anthropic.js.map +1 -0
  332. package/dist/src/providers/adapters/mock.d.ts +25 -0
  333. package/dist/src/providers/adapters/mock.d.ts.map +1 -0
  334. package/dist/src/providers/adapters/mock.js +133 -0
  335. package/dist/src/providers/adapters/mock.js.map +1 -0
  336. package/dist/src/providers/adapters/openai.d.ts +21 -0
  337. package/dist/src/providers/adapters/openai.d.ts.map +1 -0
  338. package/dist/src/providers/adapters/openai.js +126 -0
  339. package/dist/src/providers/adapters/openai.js.map +1 -0
  340. package/dist/src/providers/adapters/openrouter.d.ts +49 -0
  341. package/dist/src/providers/adapters/openrouter.d.ts.map +1 -0
  342. package/dist/src/providers/adapters/openrouter.js +363 -0
  343. package/dist/src/providers/adapters/openrouter.js.map +1 -0
  344. package/dist/src/providers/provider.d.ts +54 -0
  345. package/dist/src/providers/provider.d.ts.map +1 -0
  346. package/dist/src/providers/provider.js +111 -0
  347. package/dist/src/providers/provider.js.map +1 -0
  348. package/dist/src/providers/resilient-fetch.d.ts +99 -0
  349. package/dist/src/providers/resilient-fetch.d.ts.map +1 -0
  350. package/dist/src/providers/resilient-fetch.js +208 -0
  351. package/dist/src/providers/resilient-fetch.js.map +1 -0
  352. package/dist/src/providers/types.d.ts +227 -0
  353. package/dist/src/providers/types.d.ts.map +1 -0
  354. package/dist/src/providers/types.js +24 -0
  355. package/dist/src/providers/types.js.map +1 -0
  356. package/dist/src/session-picker.d.ts +28 -0
  357. package/dist/src/session-picker.d.ts.map +1 -0
  358. package/dist/src/session-picker.js +256 -0
  359. package/dist/src/session-picker.js.map +1 -0
  360. package/dist/src/test-sqlite.d.ts +2 -0
  361. package/dist/src/test-sqlite.d.ts.map +1 -0
  362. package/dist/src/test-sqlite.js +114 -0
  363. package/dist/src/test-sqlite.js.map +1 -0
  364. package/dist/src/tools/agent.d.ts +44 -0
  365. package/dist/src/tools/agent.d.ts.map +1 -0
  366. package/dist/src/tools/agent.js +110 -0
  367. package/dist/src/tools/agent.js.map +1 -0
  368. package/dist/src/tools/bash.d.ts +52 -0
  369. package/dist/src/tools/bash.d.ts.map +1 -0
  370. package/dist/src/tools/bash.js +141 -0
  371. package/dist/src/tools/bash.js.map +1 -0
  372. package/dist/src/tools/file.d.ts +47 -0
  373. package/dist/src/tools/file.d.ts.map +1 -0
  374. package/dist/src/tools/file.js +263 -0
  375. package/dist/src/tools/file.js.map +1 -0
  376. package/dist/src/tools/permission.d.ts +43 -0
  377. package/dist/src/tools/permission.d.ts.map +1 -0
  378. package/dist/src/tools/permission.js +216 -0
  379. package/dist/src/tools/permission.js.map +1 -0
  380. package/dist/src/tools/registry.d.ts +63 -0
  381. package/dist/src/tools/registry.d.ts.map +1 -0
  382. package/dist/src/tools/registry.js +250 -0
  383. package/dist/src/tools/registry.js.map +1 -0
  384. package/dist/src/tools/standard.d.ts +57 -0
  385. package/dist/src/tools/standard.d.ts.map +1 -0
  386. package/dist/src/tools/standard.js +113 -0
  387. package/dist/src/tools/standard.js.map +1 -0
  388. package/dist/src/tools/types.d.ts +146 -0
  389. package/dist/src/tools/types.d.ts.map +1 -0
  390. package/dist/src/tools/types.js +28 -0
  391. package/dist/src/tools/types.js.map +1 -0
  392. package/dist/src/tools/undo.d.ts +71 -0
  393. package/dist/src/tools/undo.d.ts.map +1 -0
  394. package/dist/src/tools/undo.js +123 -0
  395. package/dist/src/tools/undo.js.map +1 -0
  396. package/dist/src/tracing/cache-boundary-tracker.d.ts +189 -0
  397. package/dist/src/tracing/cache-boundary-tracker.d.ts.map +1 -0
  398. package/dist/src/tracing/cache-boundary-tracker.js +411 -0
  399. package/dist/src/tracing/cache-boundary-tracker.js.map +1 -0
  400. package/dist/src/tracing/trace-collector.d.ts +274 -0
  401. package/dist/src/tracing/trace-collector.d.ts.map +1 -0
  402. package/dist/src/tracing/trace-collector.js +727 -0
  403. package/dist/src/tracing/trace-collector.js.map +1 -0
  404. package/dist/src/tracing/types.d.ts +657 -0
  405. package/dist/src/tracing/types.d.ts.map +1 -0
  406. package/dist/src/tracing/types.js +39 -0
  407. package/dist/src/tracing/types.js.map +1 -0
  408. package/dist/src/tricks/failure-evidence.d.ts +268 -0
  409. package/dist/src/tricks/failure-evidence.d.ts.map +1 -0
  410. package/dist/src/tricks/failure-evidence.js +544 -0
  411. package/dist/src/tricks/failure-evidence.js.map +1 -0
  412. package/dist/src/tricks/json-utils.d.ts +77 -0
  413. package/dist/src/tricks/json-utils.d.ts.map +1 -0
  414. package/dist/src/tricks/json-utils.js +247 -0
  415. package/dist/src/tricks/json-utils.js.map +1 -0
  416. package/dist/src/tricks/kv-cache-context.d.ts +227 -0
  417. package/dist/src/tricks/kv-cache-context.d.ts.map +1 -0
  418. package/dist/src/tricks/kv-cache-context.js +377 -0
  419. package/dist/src/tricks/kv-cache-context.js.map +1 -0
  420. package/dist/src/tricks/recitation.d.ts +208 -0
  421. package/dist/src/tricks/recitation.d.ts.map +1 -0
  422. package/dist/src/tricks/recitation.js +374 -0
  423. package/dist/src/tricks/recitation.js.map +1 -0
  424. package/dist/src/tricks/reversible-compaction.d.ts +251 -0
  425. package/dist/src/tricks/reversible-compaction.d.ts.map +1 -0
  426. package/dist/src/tricks/reversible-compaction.js +555 -0
  427. package/dist/src/tricks/reversible-compaction.js.map +1 -0
  428. package/dist/src/tricks/serialization-diversity.d.ts +197 -0
  429. package/dist/src/tricks/serialization-diversity.d.ts.map +1 -0
  430. package/dist/src/tricks/serialization-diversity.js +460 -0
  431. package/dist/src/tricks/serialization-diversity.js.map +1 -0
  432. package/dist/src/tui/app.d.ts +42 -0
  433. package/dist/src/tui/app.d.ts.map +1 -0
  434. package/dist/src/tui/app.js +1076 -0
  435. package/dist/src/tui/app.js.map +1 -0
  436. package/dist/src/tui/components/ApprovalDialog.d.ts +28 -0
  437. package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -0
  438. package/dist/src/tui/components/ApprovalDialog.js +59 -0
  439. package/dist/src/tui/components/ApprovalDialog.js.map +1 -0
  440. package/dist/src/tui/components/InputArea.d.ts +35 -0
  441. package/dist/src/tui/components/InputArea.d.ts.map +1 -0
  442. package/dist/src/tui/components/InputArea.js +144 -0
  443. package/dist/src/tui/components/InputArea.js.map +1 -0
  444. package/dist/src/tui/components/MessageItem.d.ts +28 -0
  445. package/dist/src/tui/components/MessageItem.d.ts.map +1 -0
  446. package/dist/src/tui/components/MessageItem.js +27 -0
  447. package/dist/src/tui/components/MessageItem.js.map +1 -0
  448. package/dist/src/tui/components/ScrollableBox.d.ts +41 -0
  449. package/dist/src/tui/components/ScrollableBox.d.ts.map +1 -0
  450. package/dist/src/tui/components/ScrollableBox.js +101 -0
  451. package/dist/src/tui/components/ScrollableBox.js.map +1 -0
  452. package/dist/src/tui/components/ToolCallItem.d.ts +33 -0
  453. package/dist/src/tui/components/ToolCallItem.d.ts.map +1 -0
  454. package/dist/src/tui/components/ToolCallItem.js +91 -0
  455. package/dist/src/tui/components/ToolCallItem.js.map +1 -0
  456. package/dist/src/tui/components/index.d.ts +13 -0
  457. package/dist/src/tui/components/index.d.ts.map +1 -0
  458. package/dist/src/tui/components/index.js +15 -0
  459. package/dist/src/tui/components/index.js.map +1 -0
  460. package/dist/src/tui/event-display.d.ts +19 -0
  461. package/dist/src/tui/event-display.d.ts.map +1 -0
  462. package/dist/src/tui/event-display.js +178 -0
  463. package/dist/src/tui/event-display.js.map +1 -0
  464. package/dist/src/tui/index.d.ts +105 -0
  465. package/dist/src/tui/index.d.ts.map +1 -0
  466. package/dist/src/tui/index.js +214 -0
  467. package/dist/src/tui/index.js.map +1 -0
  468. package/dist/src/tui/input/CommandPalette.d.ts +55 -0
  469. package/dist/src/tui/input/CommandPalette.d.ts.map +1 -0
  470. package/dist/src/tui/input/CommandPalette.js +135 -0
  471. package/dist/src/tui/input/CommandPalette.js.map +1 -0
  472. package/dist/src/tui/input/index.d.ts +7 -0
  473. package/dist/src/tui/input/index.d.ts.map +1 -0
  474. package/dist/src/tui/input/index.js +7 -0
  475. package/dist/src/tui/input/index.js.map +1 -0
  476. package/dist/src/tui/theme/index.d.ts +45 -0
  477. package/dist/src/tui/theme/index.d.ts.map +1 -0
  478. package/dist/src/tui/theme/index.js +215 -0
  479. package/dist/src/tui/theme/index.js.map +1 -0
  480. package/dist/src/tui/types.d.ts +214 -0
  481. package/dist/src/tui/types.d.ts.map +1 -0
  482. package/dist/src/tui/types.js +27 -0
  483. package/dist/src/tui/types.js.map +1 -0
  484. package/dist/src/types.d.ts +905 -0
  485. package/dist/src/types.d.ts.map +1 -0
  486. package/dist/src/types.js +9 -0
  487. package/dist/src/types.js.map +1 -0
  488. package/package.json +89 -0
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Resilient Fetch Utility
3
+ *
4
+ * Provides network resilience for LLM provider requests:
5
+ * - Configurable timeout to prevent infinite hangs
6
+ * - Retry with exponential backoff for transient failures
7
+ * - Rate limit handling with Retry-After header parsing
8
+ * - Cancellation token support for user interrupts
9
+ */
10
+ /**
11
+ * Error thrown when fetch fails after all retries.
12
+ */
13
+ export class ResilientFetchError extends Error {
14
+ providerName;
15
+ attempts;
16
+ lastError;
17
+ isTimeout;
18
+ isCancelled;
19
+ constructor(message, providerName, attempts, lastError, isTimeout = false, isCancelled = false) {
20
+ super(message);
21
+ this.providerName = providerName;
22
+ this.attempts = attempts;
23
+ this.lastError = lastError;
24
+ this.isTimeout = isTimeout;
25
+ this.isCancelled = isCancelled;
26
+ this.name = 'ResilientFetchError';
27
+ }
28
+ }
29
+ // =============================================================================
30
+ // DEFAULT CONFIG
31
+ // =============================================================================
32
+ const DEFAULT_CONFIG = {
33
+ timeout: 30000,
34
+ maxRetries: 3,
35
+ baseRetryDelay: 1000,
36
+ maxRetryDelay: 30000,
37
+ retryableStatusCodes: [429, 500, 502, 503, 504],
38
+ };
39
+ // =============================================================================
40
+ // RESILIENT FETCH
41
+ // =============================================================================
42
+ /**
43
+ * Perform a fetch with timeout, retry, and cancellation support.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const { response, attempts, duration } = await resilientFetch({
48
+ * url: 'https://api.anthropic.com/v1/messages',
49
+ * init: { method: 'POST', headers: {...}, body: JSON.stringify(body) },
50
+ * providerName: 'anthropic',
51
+ * networkConfig: { timeout: 60000, maxRetries: 3 },
52
+ * });
53
+ * ```
54
+ */
55
+ export async function resilientFetch(options) {
56
+ const { url, init, providerName, networkConfig = {}, cancellationToken, onRetry, } = options;
57
+ const config = { ...DEFAULT_CONFIG, ...networkConfig };
58
+ const startTime = Date.now();
59
+ let lastError;
60
+ let attempts = 0;
61
+ while (attempts < config.maxRetries) {
62
+ attempts++;
63
+ // Check for cancellation before each attempt
64
+ if (cancellationToken?.isCancelled) {
65
+ throw new ResilientFetchError(`Request cancelled by user`, providerName, attempts, lastError, false, true);
66
+ }
67
+ // Create AbortController for timeout
68
+ const controller = new AbortController();
69
+ const timeoutId = setTimeout(() => controller.abort(), config.timeout);
70
+ // Link external cancellation token
71
+ let cancelCleanup;
72
+ if (cancellationToken?.onCancel) {
73
+ cancellationToken.onCancel(() => controller.abort());
74
+ // Note: In a real implementation, you'd want proper cleanup here
75
+ }
76
+ try {
77
+ const response = await fetch(url, {
78
+ ...init,
79
+ signal: controller.signal,
80
+ });
81
+ clearTimeout(timeoutId);
82
+ if (cancelCleanup)
83
+ cancelCleanup();
84
+ // Check if response is retryable
85
+ if (config.retryableStatusCodes.includes(response.status)) {
86
+ // Parse Retry-After header for rate limits
87
+ const retryAfter = parseRetryAfter(response.headers.get('Retry-After'));
88
+ const delay = retryAfter ?? calculateBackoff(attempts, config);
89
+ lastError = new Error(`HTTP ${response.status}: ${response.statusText}`);
90
+ // Don't retry if this is the last attempt
91
+ if (attempts >= config.maxRetries) {
92
+ throw new ResilientFetchError(`${providerName} request failed after ${attempts} attempts: HTTP ${response.status}`, providerName, attempts, lastError);
93
+ }
94
+ // Notify about retry
95
+ if (onRetry) {
96
+ onRetry(attempts, delay, lastError);
97
+ }
98
+ await sleep(delay);
99
+ continue;
100
+ }
101
+ // Success (or non-retryable error - let caller handle)
102
+ return {
103
+ response,
104
+ attempts,
105
+ duration: Date.now() - startTime,
106
+ };
107
+ }
108
+ catch (error) {
109
+ clearTimeout(timeoutId);
110
+ if (cancelCleanup)
111
+ cancelCleanup();
112
+ // Handle abort (timeout or cancellation)
113
+ if (error instanceof Error && error.name === 'AbortError') {
114
+ if (cancellationToken?.isCancelled) {
115
+ throw new ResilientFetchError(`Request cancelled by user`, providerName, attempts, error, false, true);
116
+ }
117
+ // Timeout
118
+ lastError = new Error(`Request timeout after ${config.timeout}ms`);
119
+ if (attempts >= config.maxRetries) {
120
+ throw new ResilientFetchError(`${providerName} request timed out after ${attempts} attempts`, providerName, attempts, lastError, true);
121
+ }
122
+ const delay = calculateBackoff(attempts, config);
123
+ if (onRetry) {
124
+ onRetry(attempts, delay, lastError);
125
+ }
126
+ await sleep(delay);
127
+ continue;
128
+ }
129
+ // Network error (ECONNREFUSED, DNS failure, etc.)
130
+ lastError = error instanceof Error ? error : new Error(String(error));
131
+ if (attempts >= config.maxRetries) {
132
+ throw new ResilientFetchError(`${providerName} network error after ${attempts} attempts: ${lastError.message}`, providerName, attempts, lastError);
133
+ }
134
+ const delay = calculateBackoff(attempts, config);
135
+ if (onRetry) {
136
+ onRetry(attempts, delay, lastError);
137
+ }
138
+ await sleep(delay);
139
+ }
140
+ }
141
+ // Should not reach here, but just in case
142
+ throw new ResilientFetchError(`${providerName} request failed after ${attempts} attempts`, providerName, attempts, lastError);
143
+ }
144
+ // =============================================================================
145
+ // HELPERS
146
+ // =============================================================================
147
+ /**
148
+ * Parse Retry-After header value.
149
+ * Can be either a number of seconds or an HTTP-date.
150
+ */
151
+ function parseRetryAfter(header) {
152
+ if (!header)
153
+ return null;
154
+ // Try parsing as number of seconds
155
+ const seconds = parseInt(header, 10);
156
+ if (!isNaN(seconds)) {
157
+ return seconds * 1000; // Convert to milliseconds
158
+ }
159
+ // Try parsing as HTTP-date
160
+ try {
161
+ const date = new Date(header);
162
+ const delay = date.getTime() - Date.now();
163
+ return delay > 0 ? delay : null;
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ }
169
+ /**
170
+ * Calculate exponential backoff delay with jitter.
171
+ */
172
+ function calculateBackoff(attempt, config) {
173
+ // Exponential backoff: baseDelay * 2^(attempt-1)
174
+ const exponentialDelay = config.baseRetryDelay * Math.pow(2, attempt - 1);
175
+ // Add jitter (±25%)
176
+ const jitter = exponentialDelay * 0.25 * (Math.random() * 2 - 1);
177
+ const delay = exponentialDelay + jitter;
178
+ // Clamp to max delay
179
+ return Math.min(delay, config.maxRetryDelay);
180
+ }
181
+ /**
182
+ * Sleep for a given number of milliseconds.
183
+ */
184
+ function sleep(ms) {
185
+ return new Promise((resolve) => setTimeout(resolve, ms));
186
+ }
187
+ // =============================================================================
188
+ // UTILITIES
189
+ // =============================================================================
190
+ /**
191
+ * Check if an error is a resilient fetch error.
192
+ */
193
+ export function isResilientFetchError(error) {
194
+ return error instanceof ResilientFetchError;
195
+ }
196
+ /**
197
+ * Check if an error is a timeout error.
198
+ */
199
+ export function isTimeoutError(error) {
200
+ return isResilientFetchError(error) && error.isTimeout;
201
+ }
202
+ /**
203
+ * Check if an error is a cancellation error.
204
+ */
205
+ export function isCancellationError(error) {
206
+ return isResilientFetchError(error) && error.isCancelled;
207
+ }
208
+ //# sourceMappingURL=resilient-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilient-fetch.js","sourceRoot":"","sources":["../../../src/providers/resilient-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Lesson 2: Provider Abstraction Types
3
+ *
4
+ * Extended types that support multiple LLM providers.
5
+ */
6
+ export interface Message {
7
+ role: 'user' | 'assistant' | 'system';
8
+ content: string;
9
+ }
10
+ /**
11
+ * Options for chat requests.
12
+ */
13
+ export interface ChatOptions {
14
+ /** Maximum tokens to generate */
15
+ maxTokens?: number;
16
+ /** Temperature for randomness (0-1) */
17
+ temperature?: number;
18
+ /** Stop sequences */
19
+ stopSequences?: string[];
20
+ /** Model override (uses provider default if not specified) */
21
+ model?: string;
22
+ }
23
+ /**
24
+ * Response from chat request.
25
+ */
26
+ export interface ChatResponse {
27
+ /** The assistant's response text */
28
+ content: string;
29
+ /** Why the response stopped */
30
+ stopReason: 'end_turn' | 'max_tokens' | 'stop_sequence';
31
+ /** Token usage (if available) */
32
+ usage?: {
33
+ inputTokens: number;
34
+ outputTokens: number;
35
+ /** Tokens read from cache (for providers that support caching) */
36
+ cachedTokens?: number;
37
+ /** Actual cost from provider (when available, e.g., OpenRouter) */
38
+ cost?: number;
39
+ };
40
+ }
41
+ /**
42
+ * The core LLM provider interface.
43
+ * All providers must implement this.
44
+ */
45
+ export interface LLMProvider {
46
+ /** Provider name for logging/debugging */
47
+ readonly name: string;
48
+ /** Default model used by this provider */
49
+ readonly defaultModel: string;
50
+ /**
51
+ * Send a chat request to the LLM.
52
+ * @param messages - Conversation history
53
+ * @param options - Optional configuration
54
+ */
55
+ chat(messages: Message[], options?: ChatOptions): Promise<ChatResponse>;
56
+ /**
57
+ * Check if the provider is properly configured.
58
+ */
59
+ isConfigured(): boolean;
60
+ }
61
+ /**
62
+ * Configuration for Anthropic provider.
63
+ */
64
+ export interface AnthropicConfig {
65
+ apiKey: string;
66
+ model?: string;
67
+ baseUrl?: string;
68
+ }
69
+ /**
70
+ * Configuration for OpenAI provider.
71
+ */
72
+ export interface OpenAIConfig {
73
+ apiKey: string;
74
+ model?: string;
75
+ organization?: string;
76
+ baseUrl?: string;
77
+ }
78
+ /**
79
+ * Configuration for Azure OpenAI provider.
80
+ */
81
+ export interface AzureOpenAIConfig {
82
+ apiKey: string;
83
+ endpoint: string;
84
+ deployment: string;
85
+ apiVersion?: string;
86
+ }
87
+ /**
88
+ * Configuration for OpenRouter provider.
89
+ * OpenRouter provides access to 100+ models via a single API.
90
+ */
91
+ export interface OpenRouterConfig {
92
+ apiKey: string;
93
+ model?: string;
94
+ siteUrl?: string;
95
+ siteName?: string;
96
+ }
97
+ /**
98
+ * Union of all provider configs.
99
+ */
100
+ export type ProviderConfig = {
101
+ type: 'anthropic';
102
+ config: AnthropicConfig;
103
+ } | {
104
+ type: 'openai';
105
+ config: OpenAIConfig;
106
+ } | {
107
+ type: 'azure';
108
+ config: AzureOpenAIConfig;
109
+ } | {
110
+ type: 'openrouter';
111
+ config: OpenRouterConfig;
112
+ } | {
113
+ type: 'mock';
114
+ config?: undefined;
115
+ };
116
+ /**
117
+ * Base error for provider issues.
118
+ */
119
+ export declare class ProviderError extends Error {
120
+ readonly provider: string;
121
+ readonly code: ProviderErrorCode;
122
+ readonly cause?: Error | undefined;
123
+ constructor(message: string, provider: string, code: ProviderErrorCode, cause?: Error | undefined);
124
+ }
125
+ export type ProviderErrorCode = 'NOT_CONFIGURED' | 'AUTHENTICATION_FAILED' | 'RATE_LIMITED' | 'CONTEXT_LENGTH_EXCEEDED' | 'INVALID_REQUEST' | 'SERVER_ERROR' | 'NETWORK_ERROR' | 'UNKNOWN';
126
+ /**
127
+ * OpenAI-compatible tool definition schema.
128
+ * This is the format expected by OpenRouter for native tool calling.
129
+ *
130
+ * Why this format?
131
+ * - OpenRouter uses OpenAI's API format
132
+ * - Native tool use is more reliable than JSON parsing from text
133
+ * - Type safety: the LLM's tool calls are structured, not string parsing
134
+ */
135
+ export interface ToolDefinitionSchema {
136
+ type: 'function';
137
+ function: {
138
+ /** Tool name - must match what the LLM should call */
139
+ name: string;
140
+ /** Description shown to LLM - critical for correct tool selection */
141
+ description: string;
142
+ /** JSON Schema for parameters */
143
+ parameters: Record<string, unknown>;
144
+ /** Enable strict schema validation (OpenAI feature) */
145
+ strict?: boolean;
146
+ };
147
+ }
148
+ /**
149
+ * Extended chat options that include tool definitions.
150
+ */
151
+ export interface ChatOptionsWithTools extends ChatOptions {
152
+ /** Tool definitions in OpenAI format */
153
+ tools?: ToolDefinitionSchema[];
154
+ /**
155
+ * How the LLM should choose tools:
156
+ * - 'auto': LLM decides whether to use tools (default)
157
+ * - 'required': LLM must use at least one tool
158
+ * - 'none': Disable tool use for this request
159
+ * - { type: 'function', function: { name: 'X' } }: Force specific tool
160
+ */
161
+ tool_choice?: 'auto' | 'required' | 'none' | {
162
+ type: 'function';
163
+ function: {
164
+ name: string;
165
+ };
166
+ };
167
+ }
168
+ /**
169
+ * A tool call returned by the LLM.
170
+ * This is the native response format - no JSON parsing needed!
171
+ */
172
+ export interface ToolCallResponse {
173
+ /** Unique ID for this tool call (used to match results) */
174
+ id: string;
175
+ type: 'function';
176
+ function: {
177
+ /** Which tool the LLM wants to call */
178
+ name: string;
179
+ /** Arguments as JSON string (needs JSON.parse) */
180
+ arguments: string;
181
+ };
182
+ }
183
+ /**
184
+ * Extended chat response that may include tool calls.
185
+ */
186
+ export interface ChatResponseWithTools extends ChatResponse {
187
+ /** Tool calls requested by the LLM (if any) */
188
+ toolCalls?: ToolCallResponse[];
189
+ }
190
+ /**
191
+ * Message content that supports caching.
192
+ * Used for OpenRouter's cache_control feature on Anthropic models.
193
+ */
194
+ export interface CacheableContent {
195
+ type: 'text';
196
+ text: string;
197
+ /** Mark this content for caching */
198
+ cache_control?: {
199
+ type: 'ephemeral';
200
+ };
201
+ }
202
+ /**
203
+ * Extended message that supports both string and structured content.
204
+ * Structured content allows for cache control markers.
205
+ */
206
+ export interface MessageWithContent {
207
+ role: 'user' | 'assistant' | 'system' | 'tool';
208
+ content: string | CacheableContent[];
209
+ /** For tool result messages - matches the tool call ID */
210
+ tool_call_id?: string;
211
+ /** For tool result messages - the name of the tool (required for Gemini) */
212
+ name?: string;
213
+ /** For assistant messages - tool calls made */
214
+ tool_calls?: ToolCallResponse[];
215
+ }
216
+ /**
217
+ * Provider interface extended with native tool use.
218
+ * Providers that support tools implement this alongside LLMProvider.
219
+ */
220
+ export interface LLMProviderWithTools extends LLMProvider {
221
+ /**
222
+ * Send a chat request with tool definitions.
223
+ * Returns structured tool calls instead of text that needs parsing.
224
+ */
225
+ chatWithTools(messages: (Message | MessageWithContent)[], options?: ChatOptionsWithTools): Promise<ChatResponseWithTools>;
226
+ }
227
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,CAAC;IAExD,iCAAiC;IACjC,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,kEAAkE;QAClE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mEAAmE;QACnE,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAExE;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC;CACzB;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAMzC;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,QAAQ,EAAE,MAAM;aAChB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAH7B,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,uBAAuB,GACvB,cAAc,GACd,yBAAyB,GACzB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,SAAS,CAAC;AAMd;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,sDAAsD;QACtD,IAAI,EAAE,MAAM,CAAC;QACb,qEAAqE;QACrE,WAAW,EAAE,MAAM,CAAC;QACpB,iCAAiC;QACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,uDAAuD;QACvD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,wCAAwC;IACxC,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAE/B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC/F;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,kDAAkD;QAClD,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,+CAA+C;IAC/C,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IACrC,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD;;;OAGG;IACH,aAAa,CACX,QAAQ,EAAE,CAAC,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAC1C,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Lesson 2: Provider Abstraction Types
3
+ *
4
+ * Extended types that support multiple LLM providers.
5
+ */
6
+ // =============================================================================
7
+ // PROVIDER ERRORS
8
+ // =============================================================================
9
+ /**
10
+ * Base error for provider issues.
11
+ */
12
+ export class ProviderError extends Error {
13
+ provider;
14
+ code;
15
+ cause;
16
+ constructor(message, provider, code, cause) {
17
+ super(message);
18
+ this.provider = provider;
19
+ this.code = code;
20
+ this.cause = cause;
21
+ this.name = 'ProviderError';
22
+ }
23
+ }
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmIH,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IACA;IAJlB,YACE,OAAe,EACC,QAAgB,EAChB,IAAuB,EACvB,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAmB;QACvB,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Session Resume Picker
3
+ *
4
+ * Displays recent sessions and allows user to select one to resume.
5
+ * Works with both SQLite and JSONL session stores.
6
+ */
7
+ import type { SessionMetadata } from './integrations/session-store.js';
8
+ export interface SessionPickerOptions {
9
+ maxSessions?: number;
10
+ showCost?: boolean;
11
+ }
12
+ export interface SessionPickerResult {
13
+ action: 'resume' | 'new' | 'cancel';
14
+ sessionId?: string;
15
+ }
16
+ /**
17
+ * Display sessions and let user pick one.
18
+ */
19
+ export declare function showSessionPicker(sessions: SessionMetadata[], options?: SessionPickerOptions): Promise<SessionPickerResult>;
20
+ /**
21
+ * Simple inline session picker (single line prompt).
22
+ */
23
+ export declare function showQuickPicker(sessions: SessionMetadata[]): Promise<SessionPickerResult>;
24
+ /**
25
+ * Format sessions for display (used by /sessions command).
26
+ */
27
+ export declare function formatSessionsTable(sessions: SessionMetadata[], maxRows?: number): string;
28
+ //# sourceMappingURL=session-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-picker.d.ts","sourceRoot":"","sources":["../../src/session-picker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAmLvE,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmD9B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,eAAe,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA0B9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,GAAE,MAAW,GACnB,MAAM,CA4BR"}