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,385 @@
1
+ /**
2
+ * Lesson 25: Agent Modes (OpenCode-inspired)
3
+ *
4
+ * Provides different operational modes for the agent:
5
+ * - Build: Full access to modify files and run commands
6
+ * - Plan: Read-only mode for exploration and planning
7
+ * - Review: Read-only mode focused on code review
8
+ *
9
+ * Users can switch modes with Tab key or /mode command.
10
+ *
11
+ * Usage:
12
+ * agent.setMode('plan');
13
+ * const currentMode = agent.getMode();
14
+ */
15
+ /**
16
+ * Tools that modify the filesystem or execute side effects.
17
+ * In plan mode with write approval, these are queued instead of executed.
18
+ */
19
+ export const WRITE_TOOLS = [
20
+ 'write_file',
21
+ 'edit_file',
22
+ 'delete_file',
23
+ 'bash', // Can have side effects
24
+ 'spawn_agent', // Subagents can modify files
25
+ 'run_tests', // Can have side effects
26
+ 'execute_code', // Can have side effects
27
+ ];
28
+ /**
29
+ * Check if a tool is a write operation.
30
+ */
31
+ export function isWriteTool(toolName) {
32
+ return WRITE_TOOLS.includes(toolName);
33
+ }
34
+ /**
35
+ * Analyze bash command to determine if it's a write operation.
36
+ * Returns true for commands that modify state.
37
+ */
38
+ export function isBashWriteCommand(command) {
39
+ const writePatterns = [
40
+ /\brm\b/, // Remove files
41
+ /\bmv\b/, // Move/rename files
42
+ /\bcp\b/, // Copy files
43
+ /\bmkdir\b/, // Create directories
44
+ /\btouch\b/, // Create/modify files
45
+ /\bchmod\b/, // Change permissions
46
+ /\bchown\b/, // Change ownership
47
+ /\b(npm|yarn|pnpm)\s+(install|add|remove|uninstall)/i, // Package managers
48
+ /\bgit\s+(add|commit|push|pull|merge|rebase|reset|checkout)/i, // Git write ops
49
+ /\becho\b.*>/, // Redirect to file
50
+ /\bcat\b.*>/, // Redirect to file
51
+ /\btee\b/, // Write to file
52
+ /\bsed\b.*-i/, // In-place edit
53
+ /\bawk\b.*-i/, // In-place edit
54
+ />\s*\S/, // Any redirect
55
+ /\|\s*tee\b/, // Pipe to tee
56
+ ];
57
+ return writePatterns.some(pattern => pattern.test(command));
58
+ }
59
+ // =============================================================================
60
+ // MODE DEFINITIONS
61
+ // =============================================================================
62
+ /**
63
+ * Read-only tools available in restricted modes.
64
+ */
65
+ export const READ_ONLY_TOOLS = [
66
+ 'read_file',
67
+ 'list_files',
68
+ 'list_directory',
69
+ 'search',
70
+ 'glob',
71
+ 'grep',
72
+ 'get_file_info',
73
+ 'git_status',
74
+ 'git_log',
75
+ 'git_diff',
76
+ 'lsp_definition',
77
+ 'lsp_references',
78
+ 'lsp_hover',
79
+ ];
80
+ /**
81
+ * All tools (for build mode).
82
+ */
83
+ export const ALL_TOOLS = '*'; // Special marker for "all tools"
84
+ /**
85
+ * Mode configurations.
86
+ */
87
+ export const MODES = {
88
+ build: {
89
+ name: 'Build',
90
+ description: 'Full access to modify files and run commands',
91
+ availableTools: [ALL_TOOLS],
92
+ systemPromptAddition: `
93
+ You are in BUILD mode with full access to modify files and run commands.
94
+ - You can create, edit, and delete files
95
+ - You can run shell commands and scripts
96
+ - You can make changes to the codebase
97
+ - Proceed with caution and verify changes before committing
98
+ `,
99
+ color: '\x1b[32m', // Green
100
+ icon: '🔨',
101
+ requireWriteApproval: false,
102
+ showPlanPrompt: false,
103
+ },
104
+ plan: {
105
+ name: 'Plan',
106
+ description: 'Exploration mode - writes queued for approval',
107
+ availableTools: [ALL_TOOLS], // All tools available, but writes are intercepted
108
+ systemPromptAddition: `
109
+ You are in PLAN mode.
110
+ - You can read files, explore the codebase, and use all tools
111
+ - IMPORTANT: Write operations (file edits, bash commands with side effects) will be QUEUED for user approval
112
+ - The queued changes will be shown to the user as a "pending plan"
113
+ - Focus on understanding the codebase and proposing specific changes
114
+ - Your proposed changes should include clear explanations of WHY each change is needed
115
+ - After you finish exploring, the user can approve, modify, or reject the pending plan
116
+ `,
117
+ color: '\x1b[34m', // Blue
118
+ icon: '📋',
119
+ requireWriteApproval: true,
120
+ showPlanPrompt: true,
121
+ },
122
+ review: {
123
+ name: 'Review',
124
+ description: 'Read-only mode focused on code review',
125
+ availableTools: READ_ONLY_TOOLS,
126
+ systemPromptAddition: `
127
+ You are in REVIEW mode (read-only).
128
+ - You can read files and analyze code
129
+ - You CANNOT modify files
130
+ - Focus on code quality, bugs, security issues, and best practices
131
+ - Provide specific, actionable feedback
132
+ - Point out both issues and positive patterns
133
+ - Consider maintainability, readability, and performance
134
+ `,
135
+ color: '\x1b[33m', // Yellow
136
+ icon: '🔍',
137
+ requireWriteApproval: false,
138
+ showPlanPrompt: false,
139
+ },
140
+ debug: {
141
+ name: 'Debug',
142
+ description: 'Debugging mode with diagnostic tools',
143
+ availableTools: [...READ_ONLY_TOOLS, 'run_tests', 'execute_code'],
144
+ systemPromptAddition: `
145
+ You are in DEBUG mode.
146
+ - You can read files and run diagnostic commands
147
+ - You can execute tests and debug scripts
148
+ - Focus on finding and isolating bugs
149
+ - Use a systematic approach: reproduce, isolate, fix
150
+ - Consider adding logging or debugging statements
151
+ `,
152
+ color: '\x1b[35m', // Magenta
153
+ icon: '🐛',
154
+ requireWriteApproval: false,
155
+ showPlanPrompt: false,
156
+ },
157
+ };
158
+ // =============================================================================
159
+ // MODE MANAGER
160
+ // =============================================================================
161
+ /**
162
+ * Manages agent modes and tool filtering.
163
+ */
164
+ export class ModeManager {
165
+ currentMode = 'build';
166
+ eventListeners = new Set();
167
+ allToolNames = new Set();
168
+ constructor(tools = []) {
169
+ // Track all available tool names
170
+ for (const tool of tools) {
171
+ this.allToolNames.add(tool.name);
172
+ }
173
+ }
174
+ /**
175
+ * Get the current mode.
176
+ */
177
+ getMode() {
178
+ return this.currentMode;
179
+ }
180
+ /**
181
+ * Get the current mode configuration.
182
+ */
183
+ getModeConfig() {
184
+ return MODES[this.currentMode];
185
+ }
186
+ /**
187
+ * Set the agent mode.
188
+ */
189
+ setMode(mode) {
190
+ if (mode === this.currentMode)
191
+ return;
192
+ const from = this.currentMode;
193
+ this.currentMode = mode;
194
+ this.emit({ type: 'mode.changed', from, to: mode });
195
+ }
196
+ /**
197
+ * Cycle to the next mode.
198
+ */
199
+ cycleMode() {
200
+ const modes = ['build', 'plan', 'review', 'debug'];
201
+ const currentIndex = modes.indexOf(this.currentMode);
202
+ const nextIndex = (currentIndex + 1) % modes.length;
203
+ const nextMode = modes[nextIndex];
204
+ this.setMode(nextMode);
205
+ return nextMode;
206
+ }
207
+ /**
208
+ * Check if a tool is available in the current mode.
209
+ */
210
+ isToolAvailable(toolName) {
211
+ const config = MODES[this.currentMode];
212
+ // Build mode has all tools
213
+ if (config.availableTools.includes(ALL_TOOLS)) {
214
+ return true;
215
+ }
216
+ return config.availableTools.includes(toolName);
217
+ }
218
+ /**
219
+ * Filter tools based on current mode.
220
+ */
221
+ filterTools(tools) {
222
+ const config = MODES[this.currentMode];
223
+ // Build mode has all tools
224
+ if (config.availableTools.includes(ALL_TOOLS)) {
225
+ return tools;
226
+ }
227
+ return tools.filter((tool) => {
228
+ const available = config.availableTools.includes(tool.name);
229
+ if (!available) {
230
+ this.emit({ type: 'mode.tool.filtered', tool: tool.name, mode: this.currentMode });
231
+ }
232
+ return available;
233
+ });
234
+ }
235
+ /**
236
+ * Get the system prompt addition for the current mode.
237
+ */
238
+ getSystemPromptAddition() {
239
+ return MODES[this.currentMode].systemPromptAddition;
240
+ }
241
+ /**
242
+ * Get all available modes.
243
+ */
244
+ getAllModes() {
245
+ return Object.keys(MODES);
246
+ }
247
+ /**
248
+ * Get mode info for display.
249
+ */
250
+ getModeInfo(mode) {
251
+ const m = mode ?? this.currentMode;
252
+ const config = MODES[m];
253
+ return {
254
+ name: config.name,
255
+ icon: config.icon,
256
+ color: config.color,
257
+ };
258
+ }
259
+ /**
260
+ * Format mode for terminal display.
261
+ */
262
+ formatModePrompt() {
263
+ const config = MODES[this.currentMode];
264
+ return `${config.color}${config.icon} ${config.name}\x1b[0m`;
265
+ }
266
+ /**
267
+ * Subscribe to mode events.
268
+ */
269
+ subscribe(listener) {
270
+ this.eventListeners.add(listener);
271
+ return () => this.eventListeners.delete(listener);
272
+ }
273
+ /**
274
+ * Update available tools.
275
+ */
276
+ updateTools(tools) {
277
+ this.allToolNames.clear();
278
+ for (const tool of tools) {
279
+ this.allToolNames.add(tool.name);
280
+ }
281
+ }
282
+ /**
283
+ * Check if the current mode requires write approval.
284
+ */
285
+ requiresWriteApproval() {
286
+ return MODES[this.currentMode].requireWriteApproval;
287
+ }
288
+ /**
289
+ * Check if the current mode should show plan prompts.
290
+ */
291
+ shouldShowPlanPrompt() {
292
+ return MODES[this.currentMode].showPlanPrompt;
293
+ }
294
+ /**
295
+ * Check if a tool call should be intercepted (queued) in current mode.
296
+ * Returns true if the tool is a write operation and mode requires approval.
297
+ *
298
+ * @param toolName - The name of the tool
299
+ * @param args - The tool arguments (needed to check bash commands)
300
+ */
301
+ shouldInterceptTool(toolName, args) {
302
+ if (!this.requiresWriteApproval()) {
303
+ return false;
304
+ }
305
+ // Check if it's a known write tool
306
+ if (isWriteTool(toolName)) {
307
+ // Special case: bash commands need content analysis
308
+ if (toolName === 'bash' && args?.command) {
309
+ return isBashWriteCommand(String(args.command));
310
+ }
311
+ return true;
312
+ }
313
+ return false;
314
+ }
315
+ /**
316
+ * Toggle between build and plan modes.
317
+ * Useful for shift-tab or /plan command.
318
+ */
319
+ togglePlanMode() {
320
+ if (this.currentMode === 'plan') {
321
+ this.setMode('build');
322
+ return 'build';
323
+ }
324
+ else {
325
+ this.setMode('plan');
326
+ return 'plan';
327
+ }
328
+ }
329
+ // Internal methods
330
+ emit(event) {
331
+ for (const listener of this.eventListeners) {
332
+ try {
333
+ listener(event);
334
+ }
335
+ catch {
336
+ // Ignore listener errors
337
+ }
338
+ }
339
+ }
340
+ }
341
+ // =============================================================================
342
+ // FACTORY FUNCTIONS
343
+ // =============================================================================
344
+ /**
345
+ * Create a mode manager.
346
+ */
347
+ export function createModeManager(tools) {
348
+ return new ModeManager(tools);
349
+ }
350
+ /**
351
+ * Format all modes for display.
352
+ */
353
+ export function formatModeList() {
354
+ const lines = ['Available modes:'];
355
+ for (const [key, config] of Object.entries(MODES)) {
356
+ lines.push(` ${config.icon} ${key.padEnd(8)} - ${config.description}`);
357
+ }
358
+ return lines.join('\n');
359
+ }
360
+ /**
361
+ * Parse mode from string (case-insensitive).
362
+ */
363
+ export function parseMode(input) {
364
+ const normalized = input.toLowerCase().trim();
365
+ if (normalized in MODES) {
366
+ return normalized;
367
+ }
368
+ // Handle aliases
369
+ const aliases = {
370
+ 'read': 'plan',
371
+ 'readonly': 'plan',
372
+ 'read-only': 'plan',
373
+ 'explore': 'plan',
374
+ 'code-review': 'review',
375
+ 'codereview': 'review',
376
+ 'cr': 'review',
377
+ 'dev': 'build',
378
+ 'development': 'build',
379
+ 'write': 'build',
380
+ 'bug': 'debug',
381
+ 'fix': 'debug',
382
+ };
383
+ return aliases[normalized] || null;
384
+ }
385
+ //# sourceMappingURL=modes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modes.js","sourceRoot":"","sources":["../../src/modes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Lesson 19: Tracer
3
+ *
4
+ * OpenTelemetry-style distributed tracing for agents.
5
+ * Tracks operations as spans with parent-child relationships.
6
+ */
7
+ import type { Span, SpanKind, SpanStatus, SpanAttributeValue, Trace, ObservabilityEventListener } from './types.js';
8
+ /**
9
+ * Context for propagating trace information.
10
+ */
11
+ export interface SpanContext {
12
+ traceId: string;
13
+ spanId: string;
14
+ sampled: boolean;
15
+ }
16
+ /**
17
+ * Get current span context.
18
+ */
19
+ export declare function getCurrentContext(): SpanContext | undefined;
20
+ /**
21
+ * Creates and manages spans for distributed tracing.
22
+ */
23
+ export declare class Tracer {
24
+ private spans;
25
+ private traces;
26
+ private listeners;
27
+ private serviceName;
28
+ private sampleRate;
29
+ constructor(serviceName?: string, sampleRate?: number);
30
+ /**
31
+ * Start a new span.
32
+ */
33
+ startSpan(name: string, options?: {
34
+ kind?: SpanKind;
35
+ attributes?: Record<string, SpanAttributeValue>;
36
+ parent?: SpanContext;
37
+ }): Span;
38
+ /**
39
+ * End a span.
40
+ */
41
+ endSpan(span: Span, status?: SpanStatus): void;
42
+ /**
43
+ * Mark span as error.
44
+ */
45
+ setError(span: Span, error: Error): void;
46
+ /**
47
+ * Set span attribute.
48
+ */
49
+ setAttribute(span: Span, key: string, value: SpanAttributeValue): void;
50
+ /**
51
+ * Set multiple span attributes.
52
+ */
53
+ setAttributes(span: Span, attributes: Record<string, SpanAttributeValue>): void;
54
+ /**
55
+ * Add an event to a span.
56
+ */
57
+ addEvent(span: Span, name: string, attributes?: Record<string, SpanAttributeValue>): void;
58
+ /**
59
+ * Wrap an async function with a span.
60
+ */
61
+ withSpan<T>(name: string, fn: (span: Span) => Promise<T>, options?: {
62
+ kind?: SpanKind;
63
+ attributes?: Record<string, SpanAttributeValue>;
64
+ }): Promise<T>;
65
+ /**
66
+ * Wrap a sync function with a span.
67
+ */
68
+ withSpanSync<T>(name: string, fn: (span: Span) => T, options?: {
69
+ kind?: SpanKind;
70
+ attributes?: Record<string, SpanAttributeValue>;
71
+ }): T;
72
+ /**
73
+ * Get a trace by ID.
74
+ */
75
+ getTrace(traceId: string): Trace | undefined;
76
+ /**
77
+ * Get all traces.
78
+ */
79
+ getAllTraces(): Trace[];
80
+ /**
81
+ * Get a span by ID.
82
+ */
83
+ getSpan(spanId: string): Span | undefined;
84
+ /**
85
+ * Get child spans of a span.
86
+ */
87
+ getChildSpans(spanId: string): Span[];
88
+ /**
89
+ * Clear all traces and spans.
90
+ */
91
+ clear(): void;
92
+ /**
93
+ * Subscribe to tracer events.
94
+ */
95
+ on(listener: ObservabilityEventListener): () => void;
96
+ /**
97
+ * Emit an event.
98
+ */
99
+ private emit;
100
+ }
101
+ /**
102
+ * Format a trace as a tree.
103
+ */
104
+ export declare function formatTraceTree(trace: Trace): string;
105
+ /**
106
+ * Format span attributes.
107
+ */
108
+ export declare function formatSpanAttributes(span: Span): string;
109
+ export declare function createTracer(serviceName?: string, sampleRate?: number): Tracer;
110
+ export declare const globalTracer: Tracer;
111
+ //# sourceMappingURL=tracer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../../src/observability/tracer.ts"],"names":[],"mappings":"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"}