@relay-harness/coding-agent 0.0.0-stage → 1.0.3

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 (1318) hide show
  1. package/CHANGELOG.md +6122 -0
  2. package/LICENSE +22 -0
  3. package/README.md +79 -2
  4. package/dist/bun/cli.d.ts +5 -0
  5. package/dist/bun/cli.d.ts.map +1 -0
  6. package/dist/bun/cli.js +5 -0
  7. package/dist/bun/cli.js.map +1 -0
  8. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  9. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  10. package/dist/bun/restore-sandbox-env.js +36 -0
  11. package/dist/bun/restore-sandbox-env.js.map +1 -0
  12. package/dist/bun/runtime-setup.d.ts +2 -0
  13. package/dist/bun/runtime-setup.d.ts.map +1 -0
  14. package/dist/bun/runtime-setup.js +12 -0
  15. package/dist/bun/runtime-setup.js.map +1 -0
  16. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  17. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  18. package/dist/bun/sandbox-env-setup.js +4 -0
  19. package/dist/bun/sandbox-env-setup.js.map +1 -0
  20. package/dist/bundle/chunks/anthropic-messages-TXWUAW5N.js +6 -0
  21. package/dist/bundle/chunks/anthropic.js +75 -0
  22. package/dist/bundle/chunks/azure-openai-responses-EJG46ESA.js +2 -0
  23. package/dist/bundle/chunks/bedrock-converse-stream.js +83 -0
  24. package/dist/bundle/chunks/chunk-3QND5D7W.js +82 -0
  25. package/dist/bundle/chunks/chunk-3XNI2SB6.js +15 -0
  26. package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  27. package/dist/bundle/chunks/chunk-5H4IRYOE.js +1791 -0
  28. package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  29. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  30. package/dist/bundle/chunks/chunk-A3JYRWB6.js +2 -0
  31. package/dist/bundle/chunks/chunk-C47CLQZK.js +2 -0
  32. package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
  33. package/dist/bundle/chunks/chunk-EQ2HXQGJ.js +2 -0
  34. package/dist/bundle/chunks/chunk-F5ZABL6Z.js +20 -0
  35. package/dist/bundle/chunks/chunk-H3QXYIF7.js +31 -0
  36. package/dist/bundle/chunks/chunk-ISNO4JTR.js +127 -0
  37. package/dist/bundle/chunks/chunk-KJUDFE6Y.js +11 -0
  38. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  39. package/dist/bundle/chunks/chunk-LD2P6SFZ.js +2 -0
  40. package/dist/bundle/chunks/chunk-MP5FU7MG.js +20 -0
  41. package/dist/bundle/chunks/chunk-NS67SA75.js +2 -0
  42. package/dist/bundle/chunks/chunk-O7R77OAK.js +2 -0
  43. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  44. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  45. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  46. package/dist/bundle/chunks/chunk-PTRF7IZB.js +2 -0
  47. package/dist/bundle/chunks/chunk-RZ4KG4BP.js +44 -0
  48. package/dist/bundle/chunks/chunk-S3GGRYIO.js +6 -0
  49. package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  50. package/dist/bundle/chunks/chunk-TRDNDS6A.js +4 -0
  51. package/dist/bundle/chunks/chunk-USJZMAIR.js +2 -0
  52. package/dist/bundle/chunks/chunk-UTB4DTYQ.js +2 -0
  53. package/dist/bundle/chunks/chunk-WMTXXI7H.js +4 -0
  54. package/dist/bundle/chunks/chunk-XDAWU2J5.js +132 -0
  55. package/dist/bundle/chunks/chunk-Z2G7KLPH.js +11 -0
  56. package/dist/bundle/chunks/cli-K4CNHWOI.js +51 -0
  57. package/dist/bundle/chunks/cloudflare-workers-ai-system-one-NM3JRRWQ.js +2 -0
  58. package/dist/bundle/chunks/codemode-worker.js +374 -0
  59. package/dist/bundle/chunks/easter-egg-3d-TGRCIHA4.js +2 -0
  60. package/dist/bundle/chunks/execute-6E5DA2QI.js +388 -0
  61. package/dist/bundle/chunks/github-copilot.js +2 -0
  62. package/dist/bundle/chunks/google-generative-ai-HYUNEOCJ.js +2 -0
  63. package/dist/bundle/chunks/google-vertex-J7MDGTNM.js +2 -0
  64. package/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  65. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  66. package/dist/bundle/chunks/jiti-loader-C3NU2SDH.js +21 -0
  67. package/dist/bundle/chunks/jiti-static-loader-E6ANQD5T.js +2 -0
  68. package/dist/bundle/chunks/kimi-coding.js +2 -0
  69. package/dist/bundle/chunks/lib-TEDK3E5I.js +9 -0
  70. package/dist/bundle/chunks/llama-cpp-classify-XT44PI3C.js +22 -0
  71. package/dist/bundle/chunks/meta.js +2 -0
  72. package/dist/bundle/chunks/mistral-conversations-UD2HHXKZ.js +5 -0
  73. package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  74. package/dist/bundle/chunks/node-N5BSDOA5.js +16 -0
  75. package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
  76. package/dist/bundle/chunks/openai-chatgpt.js +75 -0
  77. package/dist/bundle/chunks/openai-codex-responses-EMHXEJR4.js +10 -0
  78. package/dist/bundle/chunks/openai-codex.js +75 -0
  79. package/dist/bundle/chunks/openai-completions-LPKRZYMC.js +7 -0
  80. package/dist/bundle/chunks/openai-responses-TOOBRHUV.js +3 -0
  81. package/dist/bundle/chunks/openrouter-images-ZVXWCSIM.js +2 -0
  82. package/dist/bundle/chunks/openrouter.js +75 -0
  83. package/dist/bundle/chunks/relay-messages-QRFJXG5X.js +8 -0
  84. package/dist/bundle/chunks/runtime-O5HLCH3V.js +2 -0
  85. package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  86. package/dist/bundle/chunks/typesafe-system-one-PRR5K6CI.js +2 -0
  87. package/dist/bundle/chunks/virtual-modules-ZGB2J7DY.js +2 -0
  88. package/dist/bundle/chunks/xai.js +2 -0
  89. package/dist/bundle/cli-runtime.js +3 -0
  90. package/dist/bundle/cli.js +5 -0
  91. package/dist/bundle/index.js +2 -0
  92. package/dist/bundle/rpc-entry.js +3 -0
  93. package/dist/cli/args.d.ts +61 -0
  94. package/dist/cli/args.d.ts.map +1 -0
  95. package/dist/cli/args.js +454 -0
  96. package/dist/cli/args.js.map +1 -0
  97. package/dist/cli/auth-check.d.ts +19 -0
  98. package/dist/cli/auth-check.d.ts.map +1 -0
  99. package/dist/cli/auth-check.js +50 -0
  100. package/dist/cli/auth-check.js.map +1 -0
  101. package/dist/cli/auth-command.d.ts +24 -0
  102. package/dist/cli/auth-command.d.ts.map +1 -0
  103. package/dist/cli/auth-command.js +103 -0
  104. package/dist/cli/auth-command.js.map +1 -0
  105. package/dist/cli/config-selector.d.ts +16 -0
  106. package/dist/cli/config-selector.d.ts.map +1 -0
  107. package/dist/cli/config-selector.js +32 -0
  108. package/dist/cli/config-selector.js.map +1 -0
  109. package/dist/cli/credential-print.d.ts +13 -0
  110. package/dist/cli/credential-print.d.ts.map +1 -0
  111. package/dist/cli/credential-print.js +76 -0
  112. package/dist/cli/credential-print.js.map +1 -0
  113. package/dist/cli/file-processor.d.ts +15 -0
  114. package/dist/cli/file-processor.d.ts.map +1 -0
  115. package/dist/cli/file-processor.js +71 -0
  116. package/dist/cli/file-processor.js.map +1 -0
  117. package/dist/cli/initial-message.d.ts +18 -0
  118. package/dist/cli/initial-message.d.ts.map +1 -0
  119. package/dist/cli/initial-message.js +22 -0
  120. package/dist/cli/initial-message.js.map +1 -0
  121. package/dist/cli/list-models.d.ts +9 -0
  122. package/dist/cli/list-models.d.ts.map +1 -0
  123. package/dist/cli/list-models.js +98 -0
  124. package/dist/cli/list-models.js.map +1 -0
  125. package/dist/cli/project-trust.d.ts +10 -0
  126. package/dist/cli/project-trust.d.ts.map +1 -0
  127. package/dist/cli/project-trust.js +48 -0
  128. package/dist/cli/project-trust.js.map +1 -0
  129. package/dist/cli/session-picker.d.ts +10 -0
  130. package/dist/cli/session-picker.d.ts.map +1 -0
  131. package/dist/cli/session-picker.js +36 -0
  132. package/dist/cli/session-picker.js.map +1 -0
  133. package/dist/cli/setup.d.ts +2 -0
  134. package/dist/cli/setup.d.ts.map +1 -0
  135. package/dist/cli/setup.js +12 -0
  136. package/dist/cli/setup.js.map +1 -0
  137. package/dist/cli/startup-ui.d.ts +20 -0
  138. package/dist/cli/startup-ui.d.ts.map +1 -0
  139. package/dist/cli/startup-ui.js +193 -0
  140. package/dist/cli/startup-ui.js.map +1 -0
  141. package/dist/cli.d.ts +3 -0
  142. package/dist/cli.d.ts.map +1 -0
  143. package/dist/cli.js +6 -0
  144. package/dist/cli.js.map +1 -0
  145. package/dist/config.d.ts +108 -0
  146. package/dist/config.d.ts.map +1 -0
  147. package/dist/config.js +264 -0
  148. package/dist/config.js.map +1 -0
  149. package/dist/core/agent-session-runtime.d.ts +119 -0
  150. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  151. package/dist/core/agent-session-runtime.js +317 -0
  152. package/dist/core/agent-session-runtime.js.map +1 -0
  153. package/dist/core/agent-session-services.d.ts +86 -0
  154. package/dist/core/agent-session-services.d.ts.map +1 -0
  155. package/dist/core/agent-session-services.js +147 -0
  156. package/dist/core/agent-session-services.js.map +1 -0
  157. package/dist/core/agent-session.d.ts +891 -0
  158. package/dist/core/agent-session.d.ts.map +1 -0
  159. package/dist/core/agent-session.js +3553 -0
  160. package/dist/core/agent-session.js.map +1 -0
  161. package/dist/core/auth-guidance.d.ts +5 -0
  162. package/dist/core/auth-guidance.d.ts.map +1 -0
  163. package/dist/core/auth-guidance.js +21 -0
  164. package/dist/core/auth-guidance.js.map +1 -0
  165. package/dist/core/auth-storage.d.ts +72 -0
  166. package/dist/core/auth-storage.d.ts.map +1 -0
  167. package/dist/core/auth-storage.js +426 -0
  168. package/dist/core/auth-storage.js.map +1 -0
  169. package/dist/core/bash-executor.d.ts +32 -0
  170. package/dist/core/bash-executor.d.ts.map +1 -0
  171. package/dist/core/bash-executor.js +106 -0
  172. package/dist/core/bash-executor.js.map +1 -0
  173. package/dist/core/bug-report.d.ts +176 -0
  174. package/dist/core/bug-report.d.ts.map +1 -0
  175. package/dist/core/bug-report.js +292 -0
  176. package/dist/core/bug-report.js.map +1 -0
  177. package/dist/core/cache-stats.d.ts +49 -0
  178. package/dist/core/cache-stats.d.ts.map +1 -0
  179. package/dist/core/cache-stats.js +112 -0
  180. package/dist/core/cache-stats.js.map +1 -0
  181. package/dist/core/cache-warmer.d.ts +103 -0
  182. package/dist/core/cache-warmer.d.ts.map +1 -0
  183. package/dist/core/cache-warmer.js +356 -0
  184. package/dist/core/cache-warmer.js.map +1 -0
  185. package/dist/core/compaction/branch-summarization.d.ts +98 -0
  186. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  187. package/dist/core/compaction/branch-summarization.js +251 -0
  188. package/dist/core/compaction/branch-summarization.js.map +1 -0
  189. package/dist/core/compaction/compaction.d.ts +145 -0
  190. package/dist/core/compaction/compaction.d.ts.map +1 -0
  191. package/dist/core/compaction/compaction.js +744 -0
  192. package/dist/core/compaction/compaction.js.map +1 -0
  193. package/dist/core/compaction/index.d.ts +7 -0
  194. package/dist/core/compaction/index.d.ts.map +1 -0
  195. package/dist/core/compaction/index.js +7 -0
  196. package/dist/core/compaction/index.js.map +1 -0
  197. package/dist/core/compaction/utils.d.ts +39 -0
  198. package/dist/core/compaction/utils.d.ts.map +1 -0
  199. package/dist/core/compaction/utils.js +149 -0
  200. package/dist/core/compaction/utils.js.map +1 -0
  201. package/dist/core/crash-log.d.ts +27 -0
  202. package/dist/core/crash-log.d.ts.map +1 -0
  203. package/dist/core/crash-log.js +140 -0
  204. package/dist/core/crash-log.js.map +1 -0
  205. package/dist/core/defaults.d.ts +4 -0
  206. package/dist/core/defaults.d.ts.map +1 -0
  207. package/dist/core/defaults.js +11 -0
  208. package/dist/core/defaults.js.map +1 -0
  209. package/dist/core/diagnostics.d.ts +15 -0
  210. package/dist/core/diagnostics.d.ts.map +1 -0
  211. package/dist/core/diagnostics.js +2 -0
  212. package/dist/core/diagnostics.js.map +1 -0
  213. package/dist/core/event-bus.d.ts +9 -0
  214. package/dist/core/event-bus.d.ts.map +1 -0
  215. package/dist/core/event-bus.js +25 -0
  216. package/dist/core/event-bus.js.map +1 -0
  217. package/dist/core/exec.d.ts +29 -0
  218. package/dist/core/exec.d.ts.map +1 -0
  219. package/dist/core/exec.js +75 -0
  220. package/dist/core/exec.js.map +1 -0
  221. package/dist/core/experimental.d.ts +2 -0
  222. package/dist/core/experimental.d.ts.map +1 -0
  223. package/dist/core/experimental.js +4 -0
  224. package/dist/core/experimental.js.map +1 -0
  225. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  226. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  227. package/dist/core/export-html/ansi-to-html.js +249 -0
  228. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  229. package/dist/core/export-html/index.d.ts +37 -0
  230. package/dist/core/export-html/index.d.ts.map +1 -0
  231. package/dist/core/export-html/index.js +226 -0
  232. package/dist/core/export-html/index.js.map +1 -0
  233. package/dist/core/export-html/template.css +1076 -0
  234. package/dist/core/export-html/template.html +55 -0
  235. package/dist/core/export-html/template.js +1918 -0
  236. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  237. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  238. package/dist/core/export-html/tool-renderer.js +108 -0
  239. package/dist/core/export-html/tool-renderer.js.map +1 -0
  240. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  241. package/dist/core/export-html/vendor/marked.min.js +78 -0
  242. package/dist/core/extensions/index.d.ts +12 -0
  243. package/dist/core/extensions/index.d.ts.map +1 -0
  244. package/dist/core/extensions/index.js +9 -0
  245. package/dist/core/extensions/index.js.map +1 -0
  246. package/dist/core/extensions/jiti-loader.d.ts +2 -0
  247. package/dist/core/extensions/jiti-loader.d.ts.map +1 -0
  248. package/dist/core/extensions/jiti-loader.js +4 -0
  249. package/dist/core/extensions/jiti-loader.js.map +1 -0
  250. package/dist/core/extensions/jiti-static-loader.d.ts +2 -0
  251. package/dist/core/extensions/jiti-static-loader.d.ts.map +1 -0
  252. package/dist/core/extensions/jiti-static-loader.js +4 -0
  253. package/dist/core/extensions/jiti-static-loader.js.map +1 -0
  254. package/dist/core/extensions/loader.d.ts +23 -0
  255. package/dist/core/extensions/loader.d.ts.map +1 -0
  256. package/dist/core/extensions/loader.js +701 -0
  257. package/dist/core/extensions/loader.js.map +1 -0
  258. package/dist/core/extensions/runner.d.ts +213 -0
  259. package/dist/core/extensions/runner.d.ts.map +1 -0
  260. package/dist/core/extensions/runner.js +1239 -0
  261. package/dist/core/extensions/runner.js.map +1 -0
  262. package/dist/core/extensions/types.d.ts +1720 -0
  263. package/dist/core/extensions/types.d.ts.map +1 -0
  264. package/dist/core/extensions/types.js +48 -0
  265. package/dist/core/extensions/types.js.map +1 -0
  266. package/dist/core/extensions/virtual-modules.d.ts +3 -0
  267. package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
  268. package/dist/core/extensions/virtual-modules.js +38 -0
  269. package/dist/core/extensions/virtual-modules.js.map +1 -0
  270. package/dist/core/extensions/wrapper.d.ts +20 -0
  271. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  272. package/dist/core/extensions/wrapper.js +22 -0
  273. package/dist/core/extensions/wrapper.js.map +1 -0
  274. package/dist/core/footer-data-provider.d.ts +64 -0
  275. package/dist/core/footer-data-provider.d.ts.map +1 -0
  276. package/dist/core/footer-data-provider.js +338 -0
  277. package/dist/core/footer-data-provider.js.map +1 -0
  278. package/dist/core/harness-core.d.ts +50 -0
  279. package/dist/core/harness-core.d.ts.map +1 -0
  280. package/dist/core/harness-core.js +240 -0
  281. package/dist/core/harness-core.js.map +1 -0
  282. package/dist/core/http-dispatcher.d.ts +22 -0
  283. package/dist/core/http-dispatcher.d.ts.map +1 -0
  284. package/dist/core/http-dispatcher.js +98 -0
  285. package/dist/core/http-dispatcher.js.map +1 -0
  286. package/dist/core/index.d.ts +14 -0
  287. package/dist/core/index.d.ts.map +1 -0
  288. package/dist/core/index.js +13 -0
  289. package/dist/core/index.js.map +1 -0
  290. package/dist/core/keybindings.d.ts +428 -0
  291. package/dist/core/keybindings.d.ts.map +1 -0
  292. package/dist/core/keybindings.js +321 -0
  293. package/dist/core/keybindings.js.map +1 -0
  294. package/dist/core/mcp-servers.d.ts +125 -0
  295. package/dist/core/mcp-servers.d.ts.map +1 -0
  296. package/dist/core/mcp-servers.js +198 -0
  297. package/dist/core/mcp-servers.js.map +1 -0
  298. package/dist/core/messages.d.ts +77 -0
  299. package/dist/core/messages.d.ts.map +1 -0
  300. package/dist/core/messages.js +124 -0
  301. package/dist/core/messages.js.map +1 -0
  302. package/dist/core/model-config.d.ts +759 -0
  303. package/dist/core/model-config.d.ts.map +1 -0
  304. package/dist/core/model-config.js +293 -0
  305. package/dist/core/model-config.js.map +1 -0
  306. package/dist/core/model-registry.d.ts +63 -0
  307. package/dist/core/model-registry.d.ts.map +1 -0
  308. package/dist/core/model-registry.js +144 -0
  309. package/dist/core/model-registry.js.map +1 -0
  310. package/dist/core/model-resolver.d.ts +124 -0
  311. package/dist/core/model-resolver.d.ts.map +1 -0
  312. package/dist/core/model-resolver.js +589 -0
  313. package/dist/core/model-resolver.js.map +1 -0
  314. package/dist/core/model-runtime.d.ts +142 -0
  315. package/dist/core/model-runtime.d.ts.map +1 -0
  316. package/dist/core/model-runtime.js +732 -0
  317. package/dist/core/model-runtime.js.map +1 -0
  318. package/dist/core/models-store.d.ts +22 -0
  319. package/dist/core/models-store.d.ts.map +1 -0
  320. package/dist/core/models-store.js +115 -0
  321. package/dist/core/models-store.js.map +1 -0
  322. package/dist/core/nested-tool-calls.d.ts +102 -0
  323. package/dist/core/nested-tool-calls.d.ts.map +1 -0
  324. package/dist/core/nested-tool-calls.js +178 -0
  325. package/dist/core/nested-tool-calls.js.map +1 -0
  326. package/dist/core/output-guard.d.ts +7 -0
  327. package/dist/core/output-guard.d.ts.map +1 -0
  328. package/dist/core/output-guard.js +89 -0
  329. package/dist/core/output-guard.js.map +1 -0
  330. package/dist/core/package-manager.d.ts +217 -0
  331. package/dist/core/package-manager.d.ts.map +1 -0
  332. package/dist/core/package-manager.js +2224 -0
  333. package/dist/core/package-manager.js.map +1 -0
  334. package/dist/core/project-trust.d.ts +15 -0
  335. package/dist/core/project-trust.d.ts.map +1 -0
  336. package/dist/core/project-trust.js +59 -0
  337. package/dist/core/project-trust.js.map +1 -0
  338. package/dist/core/prompt-templates.d.ts +59 -0
  339. package/dist/core/prompt-templates.d.ts.map +1 -0
  340. package/dist/core/prompt-templates.js +262 -0
  341. package/dist/core/prompt-templates.js.map +1 -0
  342. package/dist/core/provider-attribution.d.ts +4 -0
  343. package/dist/core/provider-attribution.d.ts.map +1 -0
  344. package/dist/core/provider-attribution.js +72 -0
  345. package/dist/core/provider-attribution.js.map +1 -0
  346. package/dist/core/provider-composer.d.ts +80 -0
  347. package/dist/core/provider-composer.d.ts.map +1 -0
  348. package/dist/core/provider-composer.js +484 -0
  349. package/dist/core/provider-composer.js.map +1 -0
  350. package/dist/core/relay-manifest.d.ts +8 -0
  351. package/dist/core/relay-manifest.d.ts.map +1 -0
  352. package/dist/core/relay-manifest.js +26 -0
  353. package/dist/core/relay-manifest.js.map +1 -0
  354. package/dist/core/resolve-config-value.d.ts +30 -0
  355. package/dist/core/resolve-config-value.d.ts.map +1 -0
  356. package/dist/core/resolve-config-value.js +247 -0
  357. package/dist/core/resolve-config-value.js.map +1 -0
  358. package/dist/core/resource-loader.d.ts +227 -0
  359. package/dist/core/resource-loader.d.ts.map +1 -0
  360. package/dist/core/resource-loader.js +1005 -0
  361. package/dist/core/resource-loader.js.map +1 -0
  362. package/dist/core/runtime-credentials.d.ts +15 -0
  363. package/dist/core/runtime-credentials.d.ts.map +1 -0
  364. package/dist/core/runtime-credentials.js +39 -0
  365. package/dist/core/runtime-credentials.js.map +1 -0
  366. package/dist/core/sdk.d.ts +108 -0
  367. package/dist/core/sdk.d.ts.map +1 -0
  368. package/dist/core/sdk.js +315 -0
  369. package/dist/core/sdk.js.map +1 -0
  370. package/dist/core/session-cwd.d.ts +19 -0
  371. package/dist/core/session-cwd.d.ts.map +1 -0
  372. package/dist/core/session-cwd.js +38 -0
  373. package/dist/core/session-cwd.js.map +1 -0
  374. package/dist/core/session-export.d.ts +8 -0
  375. package/dist/core/session-export.d.ts.map +1 -0
  376. package/dist/core/session-export.js +33 -0
  377. package/dist/core/session-export.js.map +1 -0
  378. package/dist/core/session-manager.d.ts +416 -0
  379. package/dist/core/session-manager.d.ts.map +1 -0
  380. package/dist/core/session-manager.js +1523 -0
  381. package/dist/core/session-manager.js.map +1 -0
  382. package/dist/core/settings-diagnostics.d.ts +9 -0
  383. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  384. package/dist/core/settings-diagnostics.js +21 -0
  385. package/dist/core/settings-diagnostics.js.map +1 -0
  386. package/dist/core/settings-manager.d.ts +423 -0
  387. package/dist/core/settings-manager.d.ts.map +1 -0
  388. package/dist/core/settings-manager.js +1120 -0
  389. package/dist/core/settings-manager.js.map +1 -0
  390. package/dist/core/skills.d.ts +60 -0
  391. package/dist/core/skills.d.ts.map +1 -0
  392. package/dist/core/skills.js +408 -0
  393. package/dist/core/skills.js.map +1 -0
  394. package/dist/core/slash-commands.d.ts +15 -0
  395. package/dist/core/slash-commands.d.ts.map +1 -0
  396. package/dist/core/slash-commands.js +29 -0
  397. package/dist/core/slash-commands.js.map +1 -0
  398. package/dist/core/source-info.d.ts +26 -0
  399. package/dist/core/source-info.d.ts.map +1 -0
  400. package/dist/core/source-info.js +35 -0
  401. package/dist/core/source-info.js.map +1 -0
  402. package/dist/core/system-prompt.d.ts +71 -0
  403. package/dist/core/system-prompt.d.ts.map +1 -0
  404. package/dist/core/system-prompt.js +147 -0
  405. package/dist/core/system-prompt.js.map +1 -0
  406. package/dist/core/telemetry.d.ts +3 -0
  407. package/dist/core/telemetry.d.ts.map +1 -0
  408. package/dist/core/telemetry.js +9 -0
  409. package/dist/core/telemetry.js.map +1 -0
  410. package/dist/core/timings.d.ts +10 -0
  411. package/dist/core/timings.d.ts.map +1 -0
  412. package/dist/core/timings.js +41 -0
  413. package/dist/core/timings.js.map +1 -0
  414. package/dist/core/tools/bash.d.ts +100 -0
  415. package/dist/core/tools/bash.d.ts.map +1 -0
  416. package/dist/core/tools/bash.js +333 -0
  417. package/dist/core/tools/bash.js.map +1 -0
  418. package/dist/core/tools/edit-diff.d.ts +101 -0
  419. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  420. package/dist/core/tools/edit-diff.js +421 -0
  421. package/dist/core/tools/edit-diff.js.map +1 -0
  422. package/dist/core/tools/edit.d.ts +44 -0
  423. package/dist/core/tools/edit.d.ts.map +1 -0
  424. package/dist/core/tools/edit.js +147 -0
  425. package/dist/core/tools/edit.js.map +1 -0
  426. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  427. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  428. package/dist/core/tools/file-mutation-queue.js +52 -0
  429. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  430. package/dist/core/tools/find.d.ts +42 -0
  431. package/dist/core/tools/find.d.ts.map +1 -0
  432. package/dist/core/tools/find.js +251 -0
  433. package/dist/core/tools/find.js.map +1 -0
  434. package/dist/core/tools/grep.d.ts +41 -0
  435. package/dist/core/tools/grep.d.ts.map +1 -0
  436. package/dist/core/tools/grep.js +252 -0
  437. package/dist/core/tools/grep.js.map +1 -0
  438. package/dist/core/tools/index.d.ts +43 -0
  439. package/dist/core/tools/index.d.ts.map +1 -0
  440. package/dist/core/tools/index.js +129 -0
  441. package/dist/core/tools/index.js.map +1 -0
  442. package/dist/core/tools/ls.d.ts +41 -0
  443. package/dist/core/tools/ls.d.ts.map +1 -0
  444. package/dist/core/tools/ls.js +126 -0
  445. package/dist/core/tools/ls.js.map +1 -0
  446. package/dist/core/tools/output-accumulator.d.ts +63 -0
  447. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  448. package/dist/core/tools/output-accumulator.js +214 -0
  449. package/dist/core/tools/output-accumulator.js.map +1 -0
  450. package/dist/core/tools/path-utils.d.ts +10 -0
  451. package/dist/core/tools/path-utils.d.ts.map +1 -0
  452. package/dist/core/tools/path-utils.js +99 -0
  453. package/dist/core/tools/path-utils.js.map +1 -0
  454. package/dist/core/tools/powershell.d.ts +16 -0
  455. package/dist/core/tools/powershell.d.ts.map +1 -0
  456. package/dist/core/tools/powershell.js +39 -0
  457. package/dist/core/tools/powershell.js.map +1 -0
  458. package/dist/core/tools/read.d.ts +42 -0
  459. package/dist/core/tools/read.d.ts.map +1 -0
  460. package/dist/core/tools/read.js +169 -0
  461. package/dist/core/tools/read.js.map +1 -0
  462. package/dist/core/tools/render-utils.d.ts +30 -0
  463. package/dist/core/tools/render-utils.d.ts.map +1 -0
  464. package/dist/core/tools/render-utils.js +91 -0
  465. package/dist/core/tools/render-utils.js.map +1 -0
  466. package/dist/core/tools/renderers/bash.d.ts +12 -0
  467. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  468. package/dist/core/tools/renderers/bash.js +117 -0
  469. package/dist/core/tools/renderers/bash.js.map +1 -0
  470. package/dist/core/tools/renderers/edit.d.ts +23 -0
  471. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  472. package/dist/core/tools/renderers/edit.js +167 -0
  473. package/dist/core/tools/renderers/edit.js.map +1 -0
  474. package/dist/core/tools/renderers/find.d.ts +10 -0
  475. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  476. package/dist/core/tools/renderers/find.js +64 -0
  477. package/dist/core/tools/renderers/find.js.map +1 -0
  478. package/dist/core/tools/renderers/grep.d.ts +10 -0
  479. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  480. package/dist/core/tools/renderers/grep.js +69 -0
  481. package/dist/core/tools/renderers/grep.js.map +1 -0
  482. package/dist/core/tools/renderers/index.d.ts +28 -0
  483. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  484. package/dist/core/tools/renderers/index.js +47 -0
  485. package/dist/core/tools/renderers/index.js.map +1 -0
  486. package/dist/core/tools/renderers/ls.d.ts +10 -0
  487. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  488. package/dist/core/tools/renderers/ls.js +58 -0
  489. package/dist/core/tools/renderers/ls.js.map +1 -0
  490. package/dist/core/tools/renderers/read.d.ts +11 -0
  491. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  492. package/dist/core/tools/renderers/read.js +130 -0
  493. package/dist/core/tools/renderers/read.js.map +1 -0
  494. package/dist/core/tools/renderers/write.d.ts +10 -0
  495. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  496. package/dist/core/tools/renderers/write.js +153 -0
  497. package/dist/core/tools/renderers/write.js.map +1 -0
  498. package/dist/core/tools/tool-definition-wrapper.d.ts +16 -0
  499. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  500. package/dist/core/tools/tool-definition-wrapper.js +38 -0
  501. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  502. package/dist/core/tools/truncate.d.ts +84 -0
  503. package/dist/core/tools/truncate.d.ts.map +1 -0
  504. package/dist/core/tools/truncate.js +244 -0
  505. package/dist/core/tools/truncate.js.map +1 -0
  506. package/dist/core/tools/write.d.ts +30 -0
  507. package/dist/core/tools/write.d.ts.map +1 -0
  508. package/dist/core/tools/write.js +61 -0
  509. package/dist/core/tools/write.js.map +1 -0
  510. package/dist/core/trust-manager.d.ts +36 -0
  511. package/dist/core/trust-manager.d.ts.map +1 -0
  512. package/dist/core/trust-manager.js +204 -0
  513. package/dist/core/trust-manager.js.map +1 -0
  514. package/dist/core/usage-totals.d.ts +21 -0
  515. package/dist/core/usage-totals.d.ts.map +1 -0
  516. package/dist/core/usage-totals.js +79 -0
  517. package/dist/core/usage-totals.js.map +1 -0
  518. package/dist/core/virtual-models.d.ts +117 -0
  519. package/dist/core/virtual-models.d.ts.map +1 -0
  520. package/dist/core/virtual-models.js +124 -0
  521. package/dist/core/virtual-models.js.map +1 -0
  522. package/dist/core/workspace-probe.d.ts +8 -0
  523. package/dist/core/workspace-probe.d.ts.map +1 -0
  524. package/dist/core/workspace-probe.js +65 -0
  525. package/dist/core/workspace-probe.js.map +1 -0
  526. package/dist/extensions/codemode/execute.d.ts +16 -0
  527. package/dist/extensions/codemode/execute.d.ts.map +1 -0
  528. package/dist/extensions/codemode/execute.js +577 -0
  529. package/dist/extensions/codemode/execute.js.map +1 -0
  530. package/dist/extensions/codemode/execute.lazy.d.ts +3 -0
  531. package/dist/extensions/codemode/execute.lazy.d.ts.map +1 -0
  532. package/dist/extensions/codemode/execute.lazy.js +3 -0
  533. package/dist/extensions/codemode/execute.lazy.js.map +1 -0
  534. package/dist/extensions/codemode/index.d.ts +21 -0
  535. package/dist/extensions/codemode/index.d.ts.map +1 -0
  536. package/dist/extensions/codemode/index.js +31 -0
  537. package/dist/extensions/codemode/index.js.map +1 -0
  538. package/dist/extensions/codemode/renderer.d.ts +12 -0
  539. package/dist/extensions/codemode/renderer.d.ts.map +1 -0
  540. package/dist/extensions/codemode/renderer.js +137 -0
  541. package/dist/extensions/codemode/renderer.js.map +1 -0
  542. package/dist/extensions/codemode/tool.d.ts +123 -0
  543. package/dist/extensions/codemode/tool.d.ts.map +1 -0
  544. package/dist/extensions/codemode/tool.js +268 -0
  545. package/dist/extensions/codemode/tool.js.map +1 -0
  546. package/dist/extensions/codemode/worker.d.ts +7 -0
  547. package/dist/extensions/codemode/worker.d.ts.map +1 -0
  548. package/dist/extensions/codemode/worker.js +7 -0
  549. package/dist/extensions/codemode/worker.js.map +1 -0
  550. package/dist/extensions/index.d.ts +3 -0
  551. package/dist/extensions/index.d.ts.map +1 -0
  552. package/dist/extensions/index.js +19 -0
  553. package/dist/extensions/index.js.map +1 -0
  554. package/dist/extensions/intake/docx.d.ts +42 -0
  555. package/dist/extensions/intake/docx.d.ts.map +1 -0
  556. package/dist/extensions/intake/docx.js +148 -0
  557. package/dist/extensions/intake/docx.js.map +1 -0
  558. package/dist/extensions/intake/index.d.ts +17 -0
  559. package/dist/extensions/intake/index.d.ts.map +1 -0
  560. package/dist/extensions/intake/index.js +88 -0
  561. package/dist/extensions/intake/index.js.map +1 -0
  562. package/dist/extensions/intake/prompt.d.ts +6 -0
  563. package/dist/extensions/intake/prompt.d.ts.map +1 -0
  564. package/dist/extensions/intake/prompt.js +41 -0
  565. package/dist/extensions/intake/prompt.js.map +1 -0
  566. package/dist/extensions/intake/questionnaire.d.ts +84 -0
  567. package/dist/extensions/intake/questionnaire.d.ts.map +1 -0
  568. package/dist/extensions/intake/questionnaire.js +472 -0
  569. package/dist/extensions/intake/questionnaire.js.map +1 -0
  570. package/dist/extensions/laya/assessment.d.ts +40 -0
  571. package/dist/extensions/laya/assessment.d.ts.map +1 -0
  572. package/dist/extensions/laya/assessment.js +191 -0
  573. package/dist/extensions/laya/assessment.js.map +1 -0
  574. package/dist/extensions/laya/docker.d.ts +19 -0
  575. package/dist/extensions/laya/docker.d.ts.map +1 -0
  576. package/dist/extensions/laya/docker.js +44 -0
  577. package/dist/extensions/laya/docker.js.map +1 -0
  578. package/dist/extensions/laya/index.d.ts +43 -0
  579. package/dist/extensions/laya/index.d.ts.map +1 -0
  580. package/dist/extensions/laya/index.js +780 -0
  581. package/dist/extensions/laya/index.js.map +1 -0
  582. package/dist/extensions/laya/learn.d.ts +67 -0
  583. package/dist/extensions/laya/learn.d.ts.map +1 -0
  584. package/dist/extensions/laya/learn.js +263 -0
  585. package/dist/extensions/laya/learn.js.map +1 -0
  586. package/dist/extensions/laya/memory.d.ts +48 -0
  587. package/dist/extensions/laya/memory.d.ts.map +1 -0
  588. package/dist/extensions/laya/memory.js +107 -0
  589. package/dist/extensions/laya/memory.js.map +1 -0
  590. package/dist/extensions/laya/model-manifest.d.ts +7 -0
  591. package/dist/extensions/laya/model-manifest.d.ts.map +1 -0
  592. package/dist/extensions/laya/model-manifest.js +48 -0
  593. package/dist/extensions/laya/model-manifest.js.map +1 -0
  594. package/dist/extensions/laya/policy.d.ts +130 -0
  595. package/dist/extensions/laya/policy.d.ts.map +1 -0
  596. package/dist/extensions/laya/policy.js +222 -0
  597. package/dist/extensions/laya/policy.js.map +1 -0
  598. package/dist/extensions/laya/questions.d.ts +60 -0
  599. package/dist/extensions/laya/questions.d.ts.map +1 -0
  600. package/dist/extensions/laya/questions.js +189 -0
  601. package/dist/extensions/laya/questions.js.map +1 -0
  602. package/dist/extensions/laya/routers.d.ts +25 -0
  603. package/dist/extensions/laya/routers.d.ts.map +1 -0
  604. package/dist/extensions/laya/routers.js +121 -0
  605. package/dist/extensions/laya/routers.js.map +1 -0
  606. package/dist/extensions/laya/runtime.d.ts +58 -0
  607. package/dist/extensions/laya/runtime.d.ts.map +1 -0
  608. package/dist/extensions/laya/runtime.js +127 -0
  609. package/dist/extensions/laya/runtime.js.map +1 -0
  610. package/dist/extensions/laya/seed.d.ts +39 -0
  611. package/dist/extensions/laya/seed.d.ts.map +1 -0
  612. package/dist/extensions/laya/seed.js +358 -0
  613. package/dist/extensions/laya/seed.js.map +1 -0
  614. package/dist/extensions/laya/server.d.ts +50 -0
  615. package/dist/extensions/laya/server.d.ts.map +1 -0
  616. package/dist/extensions/laya/server.js +251 -0
  617. package/dist/extensions/laya/server.js.map +1 -0
  618. package/dist/extensions/laya/telemetry.d.ts +94 -0
  619. package/dist/extensions/laya/telemetry.d.ts.map +1 -0
  620. package/dist/extensions/laya/telemetry.js +107 -0
  621. package/dist/extensions/laya/telemetry.js.map +1 -0
  622. package/dist/extensions/laya/train-script.d.ts +8 -0
  623. package/dist/extensions/laya/train-script.d.ts.map +1 -0
  624. package/dist/extensions/laya/train-script.js +422 -0
  625. package/dist/extensions/laya/train-script.js.map +1 -0
  626. package/dist/extensions/laya/training.d.ts +176 -0
  627. package/dist/extensions/laya/training.d.ts.map +1 -0
  628. package/dist/extensions/laya/training.js +337 -0
  629. package/dist/extensions/laya/training.js.map +1 -0
  630. package/dist/extensions/llama/client.d.ts +69 -0
  631. package/dist/extensions/llama/client.d.ts.map +1 -0
  632. package/dist/extensions/llama/client.js +313 -0
  633. package/dist/extensions/llama/client.js.map +1 -0
  634. package/dist/extensions/llama/huggingface.d.ts +23 -0
  635. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  636. package/dist/extensions/llama/huggingface.js +141 -0
  637. package/dist/extensions/llama/huggingface.js.map +1 -0
  638. package/dist/extensions/llama/index.d.ts +3 -0
  639. package/dist/extensions/llama/index.d.ts.map +1 -0
  640. package/dist/extensions/llama/index.js +219 -0
  641. package/dist/extensions/llama/index.js.map +1 -0
  642. package/dist/extensions/llama/provider.d.ts +12 -0
  643. package/dist/extensions/llama/provider.d.ts.map +1 -0
  644. package/dist/extensions/llama/provider.js +213 -0
  645. package/dist/extensions/llama/provider.js.map +1 -0
  646. package/dist/extensions/llama/ui.d.ts +42 -0
  647. package/dist/extensions/llama/ui.d.ts.map +1 -0
  648. package/dist/extensions/llama/ui.js +416 -0
  649. package/dist/extensions/llama/ui.js.map +1 -0
  650. package/dist/extensions/mcp/cli.d.ts +21 -0
  651. package/dist/extensions/mcp/cli.d.ts.map +1 -0
  652. package/dist/extensions/mcp/cli.js +503 -0
  653. package/dist/extensions/mcp/cli.js.map +1 -0
  654. package/dist/extensions/mcp/cli.lazy.d.ts +3 -0
  655. package/dist/extensions/mcp/cli.lazy.d.ts.map +1 -0
  656. package/dist/extensions/mcp/cli.lazy.js +3 -0
  657. package/dist/extensions/mcp/cli.lazy.js.map +1 -0
  658. package/dist/extensions/mcp/config.d.ts +84 -0
  659. package/dist/extensions/mcp/config.d.ts.map +1 -0
  660. package/dist/extensions/mcp/config.js +194 -0
  661. package/dist/extensions/mcp/config.js.map +1 -0
  662. package/dist/extensions/mcp/index.d.ts +79 -0
  663. package/dist/extensions/mcp/index.d.ts.map +1 -0
  664. package/dist/extensions/mcp/index.js +1101 -0
  665. package/dist/extensions/mcp/index.js.map +1 -0
  666. package/dist/extensions/mcp/log.d.ts +16 -0
  667. package/dist/extensions/mcp/log.d.ts.map +1 -0
  668. package/dist/extensions/mcp/log.js +66 -0
  669. package/dist/extensions/mcp/log.js.map +1 -0
  670. package/dist/extensions/mcp/oauth.d.ts +98 -0
  671. package/dist/extensions/mcp/oauth.d.ts.map +1 -0
  672. package/dist/extensions/mcp/oauth.js +366 -0
  673. package/dist/extensions/mcp/oauth.js.map +1 -0
  674. package/dist/extensions/mcp/resources.d.ts +43 -0
  675. package/dist/extensions/mcp/resources.d.ts.map +1 -0
  676. package/dist/extensions/mcp/resources.js +262 -0
  677. package/dist/extensions/mcp/resources.js.map +1 -0
  678. package/dist/extensions/mcp/runtime.d.ts +98 -0
  679. package/dist/extensions/mcp/runtime.d.ts.map +1 -0
  680. package/dist/extensions/mcp/runtime.js +395 -0
  681. package/dist/extensions/mcp/runtime.js.map +1 -0
  682. package/dist/extensions/mcp/runtime.lazy.d.ts +3 -0
  683. package/dist/extensions/mcp/runtime.lazy.d.ts.map +1 -0
  684. package/dist/extensions/mcp/runtime.lazy.js +3 -0
  685. package/dist/extensions/mcp/runtime.lazy.js.map +1 -0
  686. package/dist/extensions/mcp/tools.d.ts +86 -0
  687. package/dist/extensions/mcp/tools.d.ts.map +1 -0
  688. package/dist/extensions/mcp/tools.js +252 -0
  689. package/dist/extensions/mcp/tools.js.map +1 -0
  690. package/dist/extensions/mcp/ui.d.ts +60 -0
  691. package/dist/extensions/mcp/ui.d.ts.map +1 -0
  692. package/dist/extensions/mcp/ui.js +178 -0
  693. package/dist/extensions/mcp/ui.js.map +1 -0
  694. package/dist/extensions/tool-search/index.d.ts +12 -0
  695. package/dist/extensions/tool-search/index.d.ts.map +1 -0
  696. package/dist/extensions/tool-search/index.js +15 -0
  697. package/dist/extensions/tool-search/index.js.map +1 -0
  698. package/dist/extensions/tool-search/tool.d.ts +73 -0
  699. package/dist/extensions/tool-search/tool.d.ts.map +1 -0
  700. package/dist/extensions/tool-search/tool.js +189 -0
  701. package/dist/extensions/tool-search/tool.js.map +1 -0
  702. package/dist/index.d.ts +44 -0
  703. package/dist/index.d.ts.map +1 -0
  704. package/dist/index.js +53 -0
  705. package/dist/index.js.map +1 -0
  706. package/dist/main.d.ts +16 -0
  707. package/dist/main.d.ts.map +1 -0
  708. package/dist/main.js +820 -0
  709. package/dist/main.js.map +1 -0
  710. package/dist/migrations.d.ts +33 -0
  711. package/dist/migrations.d.ts.map +1 -0
  712. package/dist/migrations.js +282 -0
  713. package/dist/migrations.js.map +1 -0
  714. package/dist/modes/index.d.ts +10 -0
  715. package/dist/modes/index.d.ts.map +1 -0
  716. package/dist/modes/index.js +8 -0
  717. package/dist/modes/index.js.map +1 -0
  718. package/dist/modes/interactive/assets/clankolas.png +0 -0
  719. package/dist/modes/interactive/bug-report.d.ts +16 -0
  720. package/dist/modes/interactive/bug-report.d.ts.map +1 -0
  721. package/dist/modes/interactive/bug-report.js +171 -0
  722. package/dist/modes/interactive/bug-report.js.map +1 -0
  723. package/dist/modes/interactive/chat-viewport.d.ts +20 -0
  724. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  725. package/dist/modes/interactive/chat-viewport.js +28 -0
  726. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  727. package/dist/modes/interactive/components/armin.d.ts +37 -0
  728. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  729. package/dist/modes/interactive/components/armin.js +335 -0
  730. package/dist/modes/interactive/components/armin.js.map +1 -0
  731. package/dist/modes/interactive/components/assistant-message.d.ts +26 -0
  732. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  733. package/dist/modes/interactive/components/assistant-message.js +158 -0
  734. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  735. package/dist/modes/interactive/components/auth-url.d.ts +14 -0
  736. package/dist/modes/interactive/components/auth-url.d.ts.map +1 -0
  737. package/dist/modes/interactive/components/auth-url.js +37 -0
  738. package/dist/modes/interactive/components/auth-url.js.map +1 -0
  739. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  740. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  741. package/dist/modes/interactive/components/bash-execution.js +175 -0
  742. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  743. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  744. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  745. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  746. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  747. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  748. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  749. package/dist/modes/interactive/components/branch-summary-message.js +51 -0
  750. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  751. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  752. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  753. package/dist/modes/interactive/components/compaction-summary-message.js +52 -0
  754. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  755. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  756. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  757. package/dist/modes/interactive/components/config-selector.js +772 -0
  758. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  759. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  760. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  761. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  762. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  763. package/dist/modes/interactive/components/custom-editor.d.ts +30 -0
  764. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  765. package/dist/modes/interactive/components/custom-editor.js +115 -0
  766. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  767. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  768. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  769. package/dist/modes/interactive/components/custom-entry.js +52 -0
  770. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  771. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  772. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  773. package/dist/modes/interactive/components/custom-message.js +87 -0
  774. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  775. package/dist/modes/interactive/components/diff.d.ts +12 -0
  776. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  777. package/dist/modes/interactive/components/diff.js +133 -0
  778. package/dist/modes/interactive/components/diff.js.map +1 -0
  779. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  780. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  781. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  782. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  783. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  784. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  785. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  786. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  787. package/dist/modes/interactive/components/easter-egg-3d.d.ts +104 -0
  788. package/dist/modes/interactive/components/easter-egg-3d.d.ts.map +1 -0
  789. package/dist/modes/interactive/components/easter-egg-3d.js +1141 -0
  790. package/dist/modes/interactive/components/easter-egg-3d.js.map +1 -0
  791. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts +6 -0
  792. package/dist/modes/interactive/components/easter-egg-3d.lazy.d.ts.map +1 -0
  793. package/dist/modes/interactive/components/easter-egg-3d.lazy.js +23 -0
  794. package/dist/modes/interactive/components/easter-egg-3d.lazy.js.map +1 -0
  795. package/dist/modes/interactive/components/extension-editor.d.ts +24 -0
  796. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  797. package/dist/modes/interactive/components/extension-editor.js +103 -0
  798. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  799. package/dist/modes/interactive/components/extension-input.d.ts +25 -0
  800. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  801. package/dist/modes/interactive/components/extension-input.js +67 -0
  802. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  803. package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
  804. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  805. package/dist/modes/interactive/components/extension-selector.js +87 -0
  806. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  807. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  808. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  809. package/dist/modes/interactive/components/first-time-setup.js +109 -0
  810. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  811. package/dist/modes/interactive/components/footer.d.ts +39 -0
  812. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  813. package/dist/modes/interactive/components/footer.js +265 -0
  814. package/dist/modes/interactive/components/footer.js.map +1 -0
  815. package/dist/modes/interactive/components/index.d.ts +33 -0
  816. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  817. package/dist/modes/interactive/components/index.js +34 -0
  818. package/dist/modes/interactive/components/index.js.map +1 -0
  819. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  820. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  821. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  822. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  823. package/dist/modes/interactive/components/login-dialog.d.ts +54 -0
  824. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  825. package/dist/modes/interactive/components/login-dialog.js +194 -0
  826. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  827. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  828. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  829. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  830. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  831. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  832. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  833. package/dist/modes/interactive/components/mermaid.js +75 -0
  834. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  835. package/dist/modes/interactive/components/model-selector.d.ts +60 -0
  836. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  837. package/dist/modes/interactive/components/model-selector.js +361 -0
  838. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  839. package/dist/modes/interactive/components/oauth-selector.d.ts +39 -0
  840. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  841. package/dist/modes/interactive/components/oauth-selector.js +166 -0
  842. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  843. package/dist/modes/interactive/components/relay-logo.d.ts +22 -0
  844. package/dist/modes/interactive/components/relay-logo.d.ts.map +1 -0
  845. package/dist/modes/interactive/components/relay-logo.js +63 -0
  846. package/dist/modes/interactive/components/relay-logo.js.map +1 -0
  847. package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
  848. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  849. package/dist/modes/interactive/components/scoped-models-selector.js +326 -0
  850. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  851. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  852. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  853. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  854. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  855. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  856. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  857. package/dist/modes/interactive/components/session-selector.js +893 -0
  858. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  859. package/dist/modes/interactive/components/settings-selector.d.ts +96 -0
  860. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  861. package/dist/modes/interactive/components/settings-selector.js +742 -0
  862. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  863. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  864. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  865. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  866. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  867. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  868. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  869. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  870. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  871. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  872. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  873. package/dist/modes/interactive/components/skill-invocation-message.js +54 -0
  874. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  875. package/dist/modes/interactive/components/status-indicator.d.ts +30 -0
  876. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  877. package/dist/modes/interactive/components/status-indicator.js +67 -0
  878. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  879. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  880. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  881. package/dist/modes/interactive/components/theme-selector.js +50 -0
  882. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  883. package/dist/modes/interactive/components/themed-text.d.ts +17 -0
  884. package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
  885. package/dist/modes/interactive/components/themed-text.js +29 -0
  886. package/dist/modes/interactive/components/themed-text.js.map +1 -0
  887. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  888. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  889. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  890. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  891. package/dist/modes/interactive/components/tool-execution.d.ts +68 -0
  892. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  893. package/dist/modes/interactive/components/tool-execution.js +314 -0
  894. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  895. package/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  896. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  897. package/dist/modes/interactive/components/tree-selector.js +1254 -0
  898. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  899. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  900. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  901. package/dist/modes/interactive/components/trust-selector.js +91 -0
  902. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  903. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  904. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  905. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  906. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  907. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  908. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  909. package/dist/modes/interactive/components/user-message.js +50 -0
  910. package/dist/modes/interactive/components/user-message.js.map +1 -0
  911. package/dist/modes/interactive/components/visual-truncate.d.ts +48 -0
  912. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  913. package/dist/modes/interactive/components/visual-truncate.js +66 -0
  914. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  915. package/dist/modes/interactive/external-editor.d.ts +12 -0
  916. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  917. package/dist/modes/interactive/external-editor.js +38 -0
  918. package/dist/modes/interactive/external-editor.js.map +1 -0
  919. package/dist/modes/interactive/interactive-mode.d.ts +482 -0
  920. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  921. package/dist/modes/interactive/interactive-mode.js +5861 -0
  922. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  923. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  924. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  925. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  926. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  927. package/dist/modes/interactive/model-search.d.ts +12 -0
  928. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  929. package/dist/modes/interactive/model-search.js +15 -0
  930. package/dist/modes/interactive/model-search.js.map +1 -0
  931. package/dist/modes/interactive/session-share.d.ts +16 -0
  932. package/dist/modes/interactive/session-share.d.ts.map +1 -0
  933. package/dist/modes/interactive/session-share.js +119 -0
  934. package/dist/modes/interactive/session-share.js.map +1 -0
  935. package/dist/modes/interactive/theme/dark.json +78 -0
  936. package/dist/modes/interactive/theme/light.json +78 -0
  937. package/dist/modes/interactive/theme/system-theme.d.ts +55 -0
  938. package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
  939. package/dist/modes/interactive/theme/system-theme.js +546 -0
  940. package/dist/modes/interactive/theme/system-theme.js.map +1 -0
  941. package/dist/modes/interactive/theme/theme-controller.d.ts +81 -0
  942. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  943. package/dist/modes/interactive/theme/theme-controller.js +210 -0
  944. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  945. package/dist/modes/interactive/theme/theme-json.d.ts +85 -0
  946. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  947. package/dist/modes/interactive/theme/theme-json.js +132 -0
  948. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  949. package/dist/modes/interactive/theme/theme-schema.json +361 -0
  950. package/dist/modes/interactive/theme/theme.d.ts +158 -0
  951. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  952. package/dist/modes/interactive/theme/theme.js +912 -0
  953. package/dist/modes/interactive/theme/theme.js.map +1 -0
  954. package/dist/modes/interactive/tui-renderer.d.ts +22 -0
  955. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  956. package/dist/modes/interactive/tui-renderer.js +67 -0
  957. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  958. package/dist/modes/json-event.d.ts +34 -0
  959. package/dist/modes/json-event.d.ts.map +1 -0
  960. package/dist/modes/json-event.js +29 -0
  961. package/dist/modes/json-event.js.map +1 -0
  962. package/dist/modes/print-mode.d.ts +28 -0
  963. package/dist/modes/print-mode.d.ts.map +1 -0
  964. package/dist/modes/print-mode.js +142 -0
  965. package/dist/modes/print-mode.js.map +1 -0
  966. package/dist/modes/rpc/jsonl.d.ts +17 -0
  967. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  968. package/dist/modes/rpc/jsonl.js +49 -0
  969. package/dist/modes/rpc/jsonl.js.map +1 -0
  970. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  971. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  972. package/dist/modes/rpc/rpc-client.js +499 -0
  973. package/dist/modes/rpc/rpc-client.js.map +1 -0
  974. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  975. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  976. package/dist/modes/rpc/rpc-mode.js +655 -0
  977. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  978. package/dist/modes/rpc/rpc-types.d.ts +478 -0
  979. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  980. package/dist/modes/rpc/rpc-types.js +8 -0
  981. package/dist/modes/rpc/rpc-types.js.map +1 -0
  982. package/dist/package-manager-cli.d.ts +8 -0
  983. package/dist/package-manager-cli.d.ts.map +1 -0
  984. package/dist/package-manager-cli.js +524 -0
  985. package/dist/package-manager-cli.js.map +1 -0
  986. package/dist/rpc-entry.d.ts +3 -0
  987. package/dist/rpc-entry.d.ts.map +1 -0
  988. package/dist/rpc-entry.js +11 -0
  989. package/dist/rpc-entry.js.map +1 -0
  990. package/dist/utils/abort.d.ts +5 -0
  991. package/dist/utils/abort.d.ts.map +1 -0
  992. package/dist/utils/abort.js +48 -0
  993. package/dist/utils/abort.js.map +1 -0
  994. package/dist/utils/ansi.d.ts +2 -0
  995. package/dist/utils/ansi.d.ts.map +1 -0
  996. package/dist/utils/ansi.js +52 -0
  997. package/dist/utils/ansi.js.map +1 -0
  998. package/dist/utils/changelog.d.ts +22 -0
  999. package/dist/utils/changelog.d.ts.map +1 -0
  1000. package/dist/utils/changelog.js +176 -0
  1001. package/dist/utils/changelog.js.map +1 -0
  1002. package/dist/utils/child-process.d.ts +18 -0
  1003. package/dist/utils/child-process.d.ts.map +1 -0
  1004. package/dist/utils/child-process.js +106 -0
  1005. package/dist/utils/child-process.js.map +1 -0
  1006. package/dist/utils/clipboard-command.d.ts +7 -0
  1007. package/dist/utils/clipboard-command.d.ts.map +1 -0
  1008. package/dist/utils/clipboard-command.js +45 -0
  1009. package/dist/utils/clipboard-command.js.map +1 -0
  1010. package/dist/utils/clipboard-image.d.ts +11 -0
  1011. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1012. package/dist/utils/clipboard-image.js +214 -0
  1013. package/dist/utils/clipboard-image.js.map +1 -0
  1014. package/dist/utils/clipboard.d.ts +6 -0
  1015. package/dist/utils/clipboard.d.ts.map +1 -0
  1016. package/dist/utils/clipboard.js +156 -0
  1017. package/dist/utils/clipboard.js.map +1 -0
  1018. package/dist/utils/deprecation.d.ts +4 -0
  1019. package/dist/utils/deprecation.d.ts.map +1 -0
  1020. package/dist/utils/deprecation.js +13 -0
  1021. package/dist/utils/deprecation.js.map +1 -0
  1022. package/dist/utils/exif-orientation.d.ts +5 -0
  1023. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1024. package/dist/utils/exif-orientation.js +157 -0
  1025. package/dist/utils/exif-orientation.js.map +1 -0
  1026. package/dist/utils/frontmatter.d.ts +8 -0
  1027. package/dist/utils/frontmatter.d.ts.map +1 -0
  1028. package/dist/utils/frontmatter.js +27 -0
  1029. package/dist/utils/frontmatter.js.map +1 -0
  1030. package/dist/utils/fs-watch.d.ts +5 -0
  1031. package/dist/utils/fs-watch.d.ts.map +1 -0
  1032. package/dist/utils/fs-watch.js +25 -0
  1033. package/dist/utils/fs-watch.js.map +1 -0
  1034. package/dist/utils/git.d.ts +26 -0
  1035. package/dist/utils/git.d.ts.map +1 -0
  1036. package/dist/utils/git.js +195 -0
  1037. package/dist/utils/git.js.map +1 -0
  1038. package/dist/utils/html.d.ts +7 -0
  1039. package/dist/utils/html.d.ts.map +1 -0
  1040. package/dist/utils/html.js +40 -0
  1041. package/dist/utils/html.js.map +1 -0
  1042. package/dist/utils/image-convert.d.ts +22 -0
  1043. package/dist/utils/image-convert.d.ts.map +1 -0
  1044. package/dist/utils/image-convert.js +84 -0
  1045. package/dist/utils/image-convert.js.map +1 -0
  1046. package/dist/utils/image-process.d.ts +18 -0
  1047. package/dist/utils/image-process.d.ts.map +1 -0
  1048. package/dist/utils/image-process.js +83 -0
  1049. package/dist/utils/image-process.js.map +1 -0
  1050. package/dist/utils/image-resize-core.d.ts +30 -0
  1051. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1052. package/dist/utils/image-resize-core.js +124 -0
  1053. package/dist/utils/image-resize-core.js.map +1 -0
  1054. package/dist/utils/image-resize-worker.d.ts +2 -0
  1055. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1056. package/dist/utils/image-resize-worker.js +31 -0
  1057. package/dist/utils/image-resize-worker.js.map +1 -0
  1058. package/dist/utils/image-resize.d.ts +16 -0
  1059. package/dist/utils/image-resize.d.ts.map +1 -0
  1060. package/dist/utils/image-resize.js +97 -0
  1061. package/dist/utils/image-resize.js.map +1 -0
  1062. package/dist/utils/json.d.ts +3 -0
  1063. package/dist/utils/json.d.ts.map +1 -0
  1064. package/dist/utils/json.js +7 -0
  1065. package/dist/utils/json.js.map +1 -0
  1066. package/dist/utils/management-http.d.ts +25 -0
  1067. package/dist/utils/management-http.d.ts.map +1 -0
  1068. package/dist/utils/management-http.js +54 -0
  1069. package/dist/utils/management-http.js.map +1 -0
  1070. package/dist/utils/mime.d.ts +3 -0
  1071. package/dist/utils/mime.d.ts.map +1 -0
  1072. package/dist/utils/mime.js +110 -0
  1073. package/dist/utils/mime.js.map +1 -0
  1074. package/dist/utils/open-browser.d.ts +9 -0
  1075. package/dist/utils/open-browser.d.ts.map +1 -0
  1076. package/dist/utils/open-browser.js +22 -0
  1077. package/dist/utils/open-browser.js.map +1 -0
  1078. package/dist/utils/output-files.d.ts +15 -0
  1079. package/dist/utils/output-files.d.ts.map +1 -0
  1080. package/dist/utils/output-files.js +30 -0
  1081. package/dist/utils/output-files.js.map +1 -0
  1082. package/dist/utils/paths.d.ts +34 -0
  1083. package/dist/utils/paths.d.ts.map +1 -0
  1084. package/dist/utils/paths.js +115 -0
  1085. package/dist/utils/paths.js.map +1 -0
  1086. package/dist/utils/photon.d.ts +21 -0
  1087. package/dist/utils/photon.d.ts.map +1 -0
  1088. package/dist/utils/photon.js +121 -0
  1089. package/dist/utils/photon.js.map +1 -0
  1090. package/dist/utils/relay-user-agent.d.ts +2 -0
  1091. package/dist/utils/relay-user-agent.d.ts.map +1 -0
  1092. package/dist/utils/relay-user-agent.js +5 -0
  1093. package/dist/utils/relay-user-agent.js.map +1 -0
  1094. package/dist/utils/shell.d.ts +32 -0
  1095. package/dist/utils/shell.d.ts.map +1 -0
  1096. package/dist/utils/shell.js +189 -0
  1097. package/dist/utils/shell.js.map +1 -0
  1098. package/dist/utils/sleep.d.ts +5 -0
  1099. package/dist/utils/sleep.d.ts.map +1 -0
  1100. package/dist/utils/sleep.js +17 -0
  1101. package/dist/utils/sleep.js.map +1 -0
  1102. package/dist/utils/syntax-highlight.d.ts +13 -0
  1103. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1104. package/dist/utils/syntax-highlight.js +179 -0
  1105. package/dist/utils/syntax-highlight.js.map +1 -0
  1106. package/dist/utils/text.d.ts +8 -0
  1107. package/dist/utils/text.d.ts.map +1 -0
  1108. package/dist/utils/text.js +9 -0
  1109. package/dist/utils/text.js.map +1 -0
  1110. package/dist/utils/tool-result-images.d.ts +21 -0
  1111. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1112. package/dist/utils/tool-result-images.js +48 -0
  1113. package/dist/utils/tool-result-images.js.map +1 -0
  1114. package/dist/utils/tools-manager.d.ts +13 -0
  1115. package/dist/utils/tools-manager.d.ts.map +1 -0
  1116. package/dist/utils/tools-manager.js +343 -0
  1117. package/dist/utils/tools-manager.js.map +1 -0
  1118. package/dist/utils/version-check.d.ts +17 -0
  1119. package/dist/utils/version-check.d.ts.map +1 -0
  1120. package/dist/utils/version-check.js +78 -0
  1121. package/dist/utils/version-check.js.map +1 -0
  1122. package/dist/utils/wsl.d.ts +3 -0
  1123. package/dist/utils/wsl.d.ts.map +1 -0
  1124. package/dist/utils/wsl.js +15 -0
  1125. package/dist/utils/wsl.js.map +1 -0
  1126. package/dist/utils/zip.d.ts +7 -0
  1127. package/dist/utils/zip.d.ts.map +1 -0
  1128. package/dist/utils/zip.js +60 -0
  1129. package/dist/utils/zip.js.map +1 -0
  1130. package/docs/cli-integration.md +106 -0
  1131. package/docs/cli.md +316 -0
  1132. package/docs/codemode.md +207 -0
  1133. package/docs/compaction.md +463 -0
  1134. package/docs/configuration.md +47 -0
  1135. package/docs/containerization.md +154 -0
  1136. package/docs/custom-provider.md +173 -0
  1137. package/docs/docs.json +224 -0
  1138. package/docs/environment-variables.md +97 -0
  1139. package/docs/extensions.md +274 -0
  1140. package/docs/harness-core.md +99 -0
  1141. package/docs/how-relay-works.md +49 -0
  1142. package/docs/images/doom-extension.png +0 -0
  1143. package/docs/images/exy.png +0 -0
  1144. package/docs/images/interactive-mode.png +0 -0
  1145. package/docs/images/tree-view.png +0 -0
  1146. package/docs/index.md +39 -0
  1147. package/docs/intake.md +40 -0
  1148. package/docs/json.md +226 -0
  1149. package/docs/keybindings.md +194 -0
  1150. package/docs/laya.md +152 -0
  1151. package/docs/llama-cpp.md +114 -0
  1152. package/docs/mcp.md +258 -0
  1153. package/docs/message-types.md +261 -0
  1154. package/docs/models.md +205 -0
  1155. package/docs/packages.md +129 -0
  1156. package/docs/prompt-templates.md +59 -0
  1157. package/docs/providers.md +187 -0
  1158. package/docs/quickstart.md +139 -0
  1159. package/docs/rpc-commands.md +860 -0
  1160. package/docs/rpc-extension-ui.md +200 -0
  1161. package/docs/rpc.md +193 -0
  1162. package/docs/sdk.md +147 -0
  1163. package/docs/security.md +99 -0
  1164. package/docs/session-format.md +293 -0
  1165. package/docs/sessions.md +66 -0
  1166. package/docs/settings.md +206 -0
  1167. package/docs/shell-aliases.md +93 -0
  1168. package/docs/skills.md +93 -0
  1169. package/docs/slash-commands.md +61 -0
  1170. package/docs/terminal-setup.md +219 -0
  1171. package/docs/termux.md +121 -0
  1172. package/docs/themes.md +136 -0
  1173. package/docs/tmux.md +55 -0
  1174. package/docs/tui.md +125 -0
  1175. package/docs/usage.md +94 -0
  1176. package/docs/virtual-models.md +114 -0
  1177. package/docs/windows.md +67 -0
  1178. package/examples/README.md +39 -0
  1179. package/examples/extensions/README.md +213 -0
  1180. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  1181. package/examples/extensions/bash-spawn-hook.ts +30 -0
  1182. package/examples/extensions/bookmark.ts +50 -0
  1183. package/examples/extensions/border-status-editor.ts +150 -0
  1184. package/examples/extensions/built-in-tool-renderer.ts +225 -0
  1185. package/examples/extensions/claude-rules.ts +86 -0
  1186. package/examples/extensions/commands.ts +72 -0
  1187. package/examples/extensions/confirm-destructive.ts +59 -0
  1188. package/examples/extensions/custom-compaction.ts +117 -0
  1189. package/examples/extensions/custom-footer.ts +64 -0
  1190. package/examples/extensions/custom-header.ts +73 -0
  1191. package/examples/extensions/custom-provider-anthropic/index.ts +617 -0
  1192. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  1193. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  1194. package/examples/extensions/custom-provider-gitlab-duo/index.ts +405 -0
  1195. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  1196. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  1197. package/examples/extensions/debug-provider.ts +90 -0
  1198. package/examples/extensions/dirty-repo-guard.ts +56 -0
  1199. package/examples/extensions/doom-overlay/README.md +46 -0
  1200. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  1201. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1202. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  1203. package/examples/extensions/doom-overlay/doom/doomgeneric_relay.c +72 -0
  1204. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  1205. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  1206. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  1207. package/examples/extensions/doom-overlay/index.ts +74 -0
  1208. package/examples/extensions/doom-overlay/wad-finder.ts +55 -0
  1209. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1210. package/examples/extensions/dynamic-resources/dynamic.json +81 -0
  1211. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1212. package/examples/extensions/dynamic-resources/index.ts +15 -0
  1213. package/examples/extensions/dynamic-tools.ts +74 -0
  1214. package/examples/extensions/entry-renderer.ts +41 -0
  1215. package/examples/extensions/event-bus.ts +43 -0
  1216. package/examples/extensions/file-trigger.ts +41 -0
  1217. package/examples/extensions/git-checkpoint.ts +53 -0
  1218. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  1219. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  1220. package/examples/extensions/handoff.ts +190 -0
  1221. package/examples/extensions/hello.ts +26 -0
  1222. package/examples/extensions/hidden-thinking-label.ts +53 -0
  1223. package/examples/extensions/inline-bash.ts +94 -0
  1224. package/examples/extensions/input-transform-streaming.ts +39 -0
  1225. package/examples/extensions/input-transform.ts +43 -0
  1226. package/examples/extensions/interactive-shell.ts +196 -0
  1227. package/examples/extensions/jev-router.ts +113 -0
  1228. package/examples/extensions/mac-system-theme.ts +47 -0
  1229. package/examples/extensions/message-renderer.ts +59 -0
  1230. package/examples/extensions/minimal-mode.ts +354 -0
  1231. package/examples/extensions/modal-editor.ts +85 -0
  1232. package/examples/extensions/model-status.ts +31 -0
  1233. package/examples/extensions/notify.ts +57 -0
  1234. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  1235. package/examples/extensions/overlay-test.ts +153 -0
  1236. package/examples/extensions/permission-gate.ts +34 -0
  1237. package/examples/extensions/pirate.ts +47 -0
  1238. package/examples/extensions/plan-mode/README.md +66 -0
  1239. package/examples/extensions/plan-mode/index.ts +390 -0
  1240. package/examples/extensions/plan-mode/utils.ts +168 -0
  1241. package/examples/extensions/preset.ts +436 -0
  1242. package/examples/extensions/project-trust.ts +64 -0
  1243. package/examples/extensions/prompt-customizer.ts +49 -0
  1244. package/examples/extensions/protected-paths.ts +30 -0
  1245. package/examples/extensions/provider-payload.ts +18 -0
  1246. package/examples/extensions/qna.ts +118 -0
  1247. package/examples/extensions/question.ts +278 -0
  1248. package/examples/extensions/questionnaire.ts +440 -0
  1249. package/examples/extensions/rainbow-editor.ts +88 -0
  1250. package/examples/extensions/reload-runtime.ts +37 -0
  1251. package/examples/extensions/rpc-demo.ts +118 -0
  1252. package/examples/extensions/sandbox/index.ts +321 -0
  1253. package/examples/extensions/sandbox/package-lock.json +92 -0
  1254. package/examples/extensions/sandbox/package.json +19 -0
  1255. package/examples/extensions/send-user-message.ts +97 -0
  1256. package/examples/extensions/session-name.ts +27 -0
  1257. package/examples/extensions/shutdown-command.ts +63 -0
  1258. package/examples/extensions/snake.ts +343 -0
  1259. package/examples/extensions/space-invaders.ts +560 -0
  1260. package/examples/extensions/ssh.ts +220 -0
  1261. package/examples/extensions/status-line.ts +32 -0
  1262. package/examples/extensions/structured-output.ts +65 -0
  1263. package/examples/extensions/subagent/README.md +196 -0
  1264. package/examples/extensions/subagent/agents/planner.md +37 -0
  1265. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1266. package/examples/extensions/subagent/agents/scout.md +50 -0
  1267. package/examples/extensions/subagent/agents/security-auditor.md +20 -0
  1268. package/examples/extensions/subagent/agents/verifier.md +31 -0
  1269. package/examples/extensions/subagent/agents/worker.md +24 -0
  1270. package/examples/extensions/subagent/agents.ts +157 -0
  1271. package/examples/extensions/subagent/index.ts +1038 -0
  1272. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1273. package/examples/extensions/subagent/prompts/implement-and-verify.md +10 -0
  1274. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1275. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1276. package/examples/extensions/subagent/skills/delegate/SKILL.md +48 -0
  1277. package/examples/extensions/subagent/skills/security-audit/SKILL.md +108 -0
  1278. package/examples/extensions/subagent/skills/security-audit/references/categories.md +130 -0
  1279. package/examples/extensions/subagent/skills/security-audit/references/report.md +38 -0
  1280. package/examples/extensions/summarize.ts +199 -0
  1281. package/examples/extensions/system-prompt-header.ts +17 -0
  1282. package/examples/extensions/tic-tac-toe.ts +1008 -0
  1283. package/examples/extensions/timed-confirm.ts +70 -0
  1284. package/examples/extensions/titlebar-spinner.ts +58 -0
  1285. package/examples/extensions/todo.ts +297 -0
  1286. package/examples/extensions/tool-override.ts +144 -0
  1287. package/examples/extensions/tools.ts +146 -0
  1288. package/examples/extensions/trigger-compact.ts +50 -0
  1289. package/examples/extensions/truncated-tool.ts +195 -0
  1290. package/examples/extensions/widget-placement.ts +9 -0
  1291. package/examples/extensions/with-deps/index.ts +32 -0
  1292. package/examples/extensions/with-deps/package-lock.json +31 -0
  1293. package/examples/extensions/with-deps/package.json +22 -0
  1294. package/examples/extensions/working-indicator.ts +123 -0
  1295. package/examples/extensions/working-message-test.ts +25 -0
  1296. package/examples/plugins/relay-example-plugin/README.md +38 -0
  1297. package/examples/plugins/relay-example-plugin/package.json +10 -0
  1298. package/examples/plugins/relay-example-plugin/src/contract.ts +13 -0
  1299. package/examples/plugins/relay-example-plugin/src/session.ts +24 -0
  1300. package/examples/plugins/relay-example-plugin/src/tui.ts +31 -0
  1301. package/examples/rpc-client.ts +35 -0
  1302. package/examples/rpc-extension-ui.ts +661 -0
  1303. package/examples/sdk/01-minimal.ts +26 -0
  1304. package/examples/sdk/02-custom-model.ts +49 -0
  1305. package/examples/sdk/03-custom-prompt.ts +70 -0
  1306. package/examples/sdk/04-skills.ts +55 -0
  1307. package/examples/sdk/05-tools.ts +48 -0
  1308. package/examples/sdk/06-extensions.ts +94 -0
  1309. package/examples/sdk/07-context-files.ts +42 -0
  1310. package/examples/sdk/08-prompt-templates.ts +51 -0
  1311. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  1312. package/examples/sdk/10-settings.ts +53 -0
  1313. package/examples/sdk/11-sessions.ts +52 -0
  1314. package/examples/sdk/12-full-control.ts +74 -0
  1315. package/examples/sdk/13-session-runtime.ts +67 -0
  1316. package/examples/sdk/14-codemode-mcp.ts +61 -0
  1317. package/examples/sdk/README.md +141 -0
  1318. package/package.json +111 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/extensions/laya/seed.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype AgentId,\n\tCAPABILITY_TIERS,\n\ttype CapabilityTier,\n\tREASONING_EFFORTS,\n\ttype TaskScope,\n\ttype TaskType,\n\ttype ToolRequirement,\n\ttype ValidationLevel,\n} from \"./questions.ts\";\n\n/**\n * Synthetic bootstrap exercises for training Laya before the harness has telemetry.\n *\n * Each template fixes the task profile; the tier and effort follow from it by the same rule for\n * every template, so the labels are consistent. These are opinion-based labels. Replace them over\n * time with evidence-based labels exported from telemetry (`/laya export`).\n */\n\ninterface Template {\n\ttype: TaskType;\n\t/** Indexes into the score levels of `questions.ts`. */\n\tcomplexity: 0 | 1 | 2 | 3 | 4;\n\tscope: TaskScope;\n\trisk: 0 | 1 | 2 | 3;\n\tambiguity: 0 | 1 | 2;\n\treasoning: 0 | 1 | 2 | 3 | 4;\n\tagent: AgentId;\n\tvalidation: ValidationLevel;\n\t/** w=write s=shell t=tests W=web b=browser d=database g=git */\n\ttools: string;\n\tsecurity?: boolean;\n\ttexts: string[];\n}\n\nconst TOOL_FLAGS: Record<string, ToolRequirement> = {\n\tw: \"requires_write\",\n\ts: \"requires_shell\",\n\tt: \"requires_tests\",\n\tW: \"requires_web\",\n\tb: \"requires_browser\",\n\td: \"requires_database\",\n\tg: \"requires_git\",\n};\n\nconst t = (\n\ttype: TaskType,\n\tcomplexity: Template[\"complexity\"],\n\tscope: TaskScope,\n\trisk: Template[\"risk\"],\n\tambiguity: Template[\"ambiguity\"],\n\treasoning: Template[\"reasoning\"],\n\tagent: AgentId,\n\tvalidation: ValidationLevel,\n\ttools: string,\n\ttexts: string[],\n\tsecurity = false,\n): Template => ({ type, complexity, scope, risk, ambiguity, reasoning, agent, validation, tools, texts, security });\n\nconst TEMPLATES: Template[] = [\n\tt(\"question\", 0, \"single_file\", 0, 0, 0, \"researcher\", \"none\", \"\", [\n\t\t\"What does the function {fn} in {file} return?\",\n\t\t\"O que a função {fn} em {file} retorna?\",\n\t\t\"Where is {fn} defined?\",\n\t\t\"Onde fica definida a função {fn}?\",\n\t]),\n\tt(\"question\", 1, \"module\", 0, 0, 1, \"researcher\", \"none\", \"\", [\n\t\t\"How does the {module} module load its configuration?\",\n\t\t\"Como o módulo {module} carrega a configuração?\",\n\t\t\"Explain how {module} handles errors.\",\n\t\t\"Explique como o {module} trata erros.\",\n\t]),\n\tt(\"question\", 2, \"repository\", 0, 1, 2, \"software-architect\", \"none\", \"\", [\n\t\t\"Why does the {module} package depend on {module2}? Is that coupling necessary?\",\n\t\t\"Por que o pacote {module} depende do {module2}? Esse acoplamento é necessário?\",\n\t]),\n\tt(\"question\", 1, \"single_file\", 0, 2, 1, \"researcher\", \"none\", \"\", [\n\t\t\"Is this approach ok?\",\n\t\t\"Isso está certo?\",\n\t\t\"Can you take a look at {file}?\",\n\t\t\"Dá uma olhada no {file}?\",\n\t]),\n\tt(\"code_edit\", 0, \"single_line\", 0, 0, 0, \"frontend-engineer\", \"syntax\", \"w\", [\n\t\t\"Change the text of the submit button to 'Save'.\",\n\t\t\"Corrija o texto deste botão para 'Salvar'.\",\n\t\t\"Fix the typo in the error message of {file}.\",\n\t\t\"Corrija o erro de digitação na mensagem de erro de {file}.\",\n\t]),\n\tt(\"code_edit\", 0, \"single_line\", 0, 0, 0, \"software-engineer\", \"compile\", \"wt\", [\n\t\t\"Rename the variable {var} to {var2} in {file}.\",\n\t\t\"Renomeie a variável {var} para {var2} em {file}.\",\n\t\t\"Change the default timeout in {file} from 30 to 60 seconds.\",\n\t\t\"Mude o timeout padrão em {file} de 30 para 60 segundos.\",\n\t]),\n\tt(\"code_edit\", 1, \"single_file\", 0, 0, 1, \"software-engineer\", \"compile\", \"wt\", [\n\t\t\"Remove the unused imports from {file}.\",\n\t\t\"Remova os imports não usados de {file}.\",\n\t\t\"Make {fn} in {file} async.\",\n\t\t\"Transforme {fn} em {file} em uma função assíncrona.\",\n\t]),\n\tt(\"code_edit\", 0, \"single_file\", 0, 0, 0, \"software-engineer\", \"none\", \"g\", [\n\t\t\"Commit the staged changes with a descriptive message.\",\n\t\t\"Faça o commit das mudanças com uma mensagem descritiva.\",\n\t\t\"Create a branch for this fix.\",\n\t\t\"Crie uma branch para essa correção.\",\n\t]),\n\tt(\"code_edit\", 1, \"single_file\", 1, 0, 1, \"devops-engineer\", \"compile\", \"ws\", [\n\t\t\"Bump Node to 22 in the Dockerfile.\",\n\t\t\"Atualize a versão do Node para 22 no Dockerfile.\",\n\t\t\"Add a cache step for npm in the CI workflow.\",\n\t\t\"Adicione cache do npm no workflow do CI.\",\n\t]),\n\tt(\"bug_fix\", 1, \"single_file\", 1, 0, 1, \"software-engineer\", \"unit_test\", \"wt\", [\n\t\t\"{fn} in {file} returns undefined when the list is empty; it should return an empty array.\",\n\t\t\"A função {fn} em {file} retorna undefined quando a lista está vazia; deveria retornar um array vazio.\",\n\t\t\"Off-by-one error in the pagination of {module}: the last page is skipped.\",\n\t\t\"Erro de off-by-one na paginação do {module}: a última página é pulada.\",\n\t]),\n\tt(\"bug_fix\", 1, \"single_file\", 0, 0, 1, \"frontend-engineer\", \"syntax\", \"w\", [\n\t\t\"The header is misaligned on small screens.\",\n\t\t\"O cabeçalho está desalinhado em telas pequenas.\",\n\t\t\"Fix the CSS so the footer sticks to the bottom.\",\n\t\t\"Arrume o CSS para o rodapé ficar no final da página.\",\n\t]),\n\tt(\"bug_fix\", 2, \"module\", 1, 1, 2, \"backend-engineer\", \"unit_test\", \"wt\", [\n\t\t\"The {module} API returns 500 when the request body has no 'email' field. It should return 400.\",\n\t\t\"A API do {module} retorna 500 quando o corpo não tem o campo 'email'. Deveria retornar 400.\",\n\t\t\"Dates are saved in local time instead of UTC in the {module} service.\",\n\t\t\"As datas são salvas no horário local em vez de UTC no serviço {module}.\",\n\t]),\n\tt(\"bug_fix\", 2, \"single_file\", 1, 1, 2, \"frontend-engineer\", \"integration_test\", \"wtb\", [\n\t\t\"The dropdown in the settings page closes immediately on mobile.\",\n\t\t\"O dropdown da página de configurações fecha sozinho no celular.\",\n\t\t\"The modal does not trap focus; keyboard users can tab behind it.\",\n\t\t\"O modal não prende o foco; quem usa teclado consegue navegar por trás dele.\",\n\t]),\n\tt(\"bug_fix\", 3, \"multi_module\", 2, 1, 3, \"backend-engineer\", \"integration_test\", \"wts\", [\n\t\t\"Race condition: two workers in {module} sometimes process the same job twice.\",\n\t\t\"Condição de corrida: dois workers do {module} às vezes processam o mesmo job duas vezes.\",\n\t\t\"Memory leak in the {module} cache under load; memory grows until the process is killed.\",\n\t\t\"Vazamento de memória no cache do {module} sob carga; a memória cresce até o processo cair.\",\n\t]),\n\tt(\"bug_fix\", 3, \"module\", 2, 1, 3, \"mobile-engineer\", \"integration_test\", \"wt\", [\n\t\t\"The Android app crashes on startup on Android 14 only.\",\n\t\t\"O app Android fecha ao abrir apenas no Android 14.\",\n\t]),\n\tt(\"debugging\", 2, \"single_file\", 1, 1, 2, \"software-engineer\", \"unit_test\", \"wts\", [\n\t\t\"I get 'TypeError: cannot read properties of undefined' when running the app. Help.\",\n\t\t\"Estou recebendo 'TypeError: cannot read properties of undefined' ao rodar o app. Ajuda.\",\n\t]),\n\tt(\"debugging\", 3, \"module\", 1, 2, 3, \"software-engineer\", \"unit_test\", \"wts\", [\n\t\t\"The test '{test}' fails only on CI with a timeout and passes locally. Find out why.\",\n\t\t\"O teste '{test}' falha só no CI com timeout e passa localmente. Descubra o motivo.\",\n\t\t\"Something broke after the last merge: {module} hangs on startup. Investigate.\",\n\t\t\"Alguma coisa quebrou depois do último merge: o {module} trava na inicialização. Investigue.\",\n\t]),\n\tt(\"debugging\", 4, \"multi_module\", 2, 2, 4, \"software-architect\", \"integration_test\", \"wts\", [\n\t\t\"Intermittent data corruption between the {module} and {module2} services, no clear reproduction. Find the root cause.\",\n\t\t\"Corrupção de dados intermitente entre os serviços {module} e {module2}, sem reprodução clara. Ache a causa raiz.\",\n\t\t\"Deadlock under high concurrency in the scheduler; it happens about once a day in production.\",\n\t\t\"Deadlock com alta concorrência no scheduler; acontece mais ou menos uma vez por dia em produção.\",\n\t]),\n\tt(\"refactor\", 1, \"single_file\", 0, 0, 1, \"software-engineer\", \"compile\", \"wt\", [\n\t\t\"Convert {file} from JavaScript to TypeScript.\",\n\t\t\"Converta {file} de JavaScript para TypeScript.\",\n\t\t\"Replace var with const and let in {file}.\",\n\t\t\"Troque var por const e let em {file}.\",\n\t]),\n\tt(\"refactor\", 2, \"single_file\", 1, 0, 2, \"software-engineer\", \"unit_test\", \"wt\", [\n\t\t\"Extract the validation logic of {file} into its own function.\",\n\t\t\"Extraia a lógica de validação de {file} para uma função separada.\",\n\t\t\"Split {file}; it has 1500 lines.\",\n\t\t\"Divida {file}, que tem 1500 linhas.\",\n\t]),\n\tt(\"refactor\", 3, \"multi_module\", 2, 1, 3, \"software-architect\", \"unit_test\", \"wt\", [\n\t\t\"Replace the global singleton config in {module} with dependency injection across the packages.\",\n\t\t\"Substitua o singleton global de configuração do {module} por injeção de dependência em todos os pacotes.\",\n\t\t\"Migrate all callbacks in {module} to async/await.\",\n\t\t\"Migre todos os callbacks do {module} para async/await.\",\n\t]),\n\tt(\"refactor\", 4, \"repository\", 2, 2, 4, \"software-architect\", \"integration_test\", \"wtg\", [\n\t\t\"Restructure the monorepo so {module} becomes an independent package without breaking consumers.\",\n\t\t\"Reestruture o monorepo para o {module} virar um pacote independente sem quebrar quem usa.\",\n\t]),\n\tt(\"feature\", 1, \"single_file\", 0, 0, 1, \"software-engineer\", \"unit_test\", \"wt\", [\n\t\t\"Add a --verbose flag to the CLI that prints debug logs.\",\n\t\t\"Adicione uma flag --verbose na CLI que imprima logs de debug.\",\n\t\t\"Add a helper in {file} that formats bytes as KB or MB.\",\n\t\t\"Crie em {file} uma função que formata bytes como KB ou MB.\",\n\t]),\n\tt(\"feature\", 2, \"module\", 1, 1, 2, \"backend-engineer\", \"unit_test\", \"wt\", [\n\t\t\"Add a GET /users/:id/orders endpoint with pagination.\",\n\t\t\"Crie um endpoint GET /users/:id/orders com paginação.\",\n\t\t\"Add retry with exponential backoff to the HTTP client in {module}.\",\n\t\t\"Adicione retry com backoff exponencial no cliente HTTP do {module}.\",\n\t]),\n\tt(\"feature\", 2, \"module\", 1, 1, 2, \"frontend-engineer\", \"integration_test\", \"wtb\", [\n\t\t\"Add a dark mode toggle to the settings page.\",\n\t\t\"Adicione um botão de modo escuro na página de configurações.\",\n\t\t\"Create a reusable date picker component.\",\n\t\t\"Crie um componente reutilizável de seleção de data.\",\n\t]),\n\tt(\"feature\", 2, \"module\", 1, 1, 2, \"mobile-engineer\", \"integration_test\", \"wt\", [\n\t\t\"Add push notifications to the Android app.\",\n\t\t\"Adicione notificações push no app Android.\",\n\t\t\"The iOS app needs offline caching of the feed.\",\n\t\t\"O app iOS precisa de cache offline do feed.\",\n\t]),\n\tt(\"feature\", 2, \"module\", 1, 1, 2, \"software-engineer\", \"unit_test\", \"wtW\", [\n\t\t\"Integrate the {tech} SDK following its official docs.\",\n\t\t\"Integre o SDK do {tech} seguindo a documentação oficial.\",\n\t]),\n\tt(\"feature\", 2, \"single_file\", 1, 0, 2, \"database-engineer\", \"unit_test\", \"wtd\", [\n\t\t\"Add an index to speed up the orders-by-customer query.\",\n\t\t\"Adicione um índice para acelerar a consulta de pedidos por cliente.\",\n\t\t\"Write a SQL query that returns monthly revenue per product.\",\n\t\t\"Escreva uma consulta SQL que retorne o faturamento mensal por produto.\",\n\t]),\n\tt(\n\t\t\"feature\",\n\t\t2,\n\t\t\"module\",\n\t\t3,\n\t\t1,\n\t\t3,\n\t\t\"database-engineer\",\n\t\t\"review\",\n\t\t\"wd\",\n\t\t[\n\t\t\t\"Write a migration that drops the legacy column from the production orders table.\",\n\t\t\t\"Escreva uma migration que remove a coluna legada da tabela de pedidos de produção.\",\n\t\t\t\"Run a data migration on the production database to backfill user emails.\",\n\t\t\t\"Rode uma migração de dados no banco de produção para preencher os e-mails dos usuários.\",\n\t\t],\n\t\ttrue,\n\t),\n\tt(\"feature\", 3, \"multi_module\", 2, 1, 3, \"backend-engineer\", \"integration_test\", \"wtsd\", [\n\t\t\"Implement multi-tenant support in {module}: every query must be scoped by tenant.\",\n\t\t\"Implemente suporte multi-tenant no {module}: toda consulta tem que filtrar pelo tenant.\",\n\t]),\n\tt(\"feature\", 3, \"repository\", 2, 1, 3, \"devops-engineer\", \"integration_test\", \"wsg\", [\n\t\t\"Set up a release pipeline that builds, tests and publishes the packages on tag.\",\n\t\t\"Monte um pipeline de release que compila, testa e publica os pacotes quando criar uma tag.\",\n\t\t\"Deploy the {module} service to Kubernetes with zero downtime.\",\n\t\t\"Faça o deploy do serviço {module} no Kubernetes sem downtime.\",\n\t]),\n\tt(\"feature\", 4, \"multi_module\", 2, 2, 4, \"software-architect\", \"integration_test\", \"wts\", [\n\t\t\"Build a plugin system so third parties can add commands at runtime.\",\n\t\t\"Crie um sistema de plugins para terceiros adicionarem comandos em tempo de execução.\",\n\t\t\"Implement a CRDT-based collaborative editing engine.\",\n\t\t\"Implemente um motor de edição colaborativa baseado em CRDT.\",\n\t]),\n\tt(\"test\", 0, \"single_file\", 0, 0, 0, \"qa-engineer\", \"unit_test\", \"t\", [\n\t\t\"Run the tests and tell me what fails.\",\n\t\t\"Rode os testes e me diga o que falha.\",\n\t\t\"Run the type checker.\",\n\t\t\"Rode a checagem de tipos.\",\n\t]),\n\tt(\"test\", 1, \"single_file\", 0, 0, 1, \"qa-engineer\", \"unit_test\", \"wt\", [\n\t\t\"Write unit tests for {fn} in {file}.\",\n\t\t\"Escreva testes unitários para {fn} em {file}.\",\n\t\t\"Add a regression test for the empty input case of {fn}.\",\n\t\t\"Adicione um teste de regressão para a entrada vazia de {fn}.\",\n\t]),\n\tt(\"test\", 2, \"module\", 1, 1, 2, \"qa-engineer\", \"integration_test\", \"wts\", [\n\t\t\"The test suite of {module} is flaky; stabilize the flaky tests.\",\n\t\t\"A suíte de testes do {module} está instável; estabilize os testes flaky.\",\n\t\t\"Add integration tests for the checkout flow.\",\n\t\t\"Adicione testes de integração para o fluxo de checkout.\",\n\t]),\n\tt(\"architecture\", 3, \"multi_module\", 1, 2, 3, \"software-architect\", \"review\", \"\", [\n\t\t\"Propose an event-driven architecture for the notification system of our services.\",\n\t\t\"Proponha uma arquitetura orientada a eventos para o sistema de notificações dos nossos serviços.\",\n\t\t\"Evaluate whether we should split {module} into microservices.\",\n\t\t\"Avalie se devemos dividir o {module} em microsserviços.\",\n\t]),\n\tt(\"architecture\", 4, \"multi_repository\", 2, 2, 4, \"software-architect\", \"review\", \"W\", [\n\t\t\"Design a distributed cache invalidation strategy across our three regions with strong consistency.\",\n\t\t\"Desenhe uma estratégia de invalidação de cache distribuído entre nossas três regiões com consistência forte.\",\n\t\t\"Analyze the concurrency model of the system and propose how to remove the global lock.\",\n\t\t\"Analise o modelo de concorrência do sistema e proponha como remover o lock global.\",\n\t]),\n\tt(\n\t\t\"security\",\n\t\t3,\n\t\t\"module\",\n\t\t3,\n\t\t1,\n\t\t3,\n\t\t\"security-engineer\",\n\t\t\"review\",\n\t\t\"wt\",\n\t\t[\n\t\t\t\"Fix the SQL injection in the search endpoint of {module}.\",\n\t\t\t\"Corrija o SQL injection no endpoint de busca do {module}.\",\n\t\t\t\"The password reset token never expires; fix it.\",\n\t\t\t\"O token de redefinição de senha nunca expira; corrija.\",\n\t\t],\n\t\ttrue,\n\t),\n\tt(\n\t\t\"security\",\n\t\t3,\n\t\t\"module\",\n\t\t3,\n\t\t1,\n\t\t3,\n\t\t\"security-engineer\",\n\t\t\"review\",\n\t\t\"\",\n\t\t[\n\t\t\t\"Review the authentication middleware for vulnerabilities.\",\n\t\t\t\"Revise o middleware de autenticação procurando vulnerabilidades.\",\n\t\t\t\"Audit how API keys are stored in {module}.\",\n\t\t\t\"Audite como as chaves de API são guardadas no {module}.\",\n\t\t],\n\t\ttrue,\n\t),\n\tt(\n\t\t\"security\",\n\t\t4,\n\t\t\"multi_module\",\n\t\t3,\n\t\t1,\n\t\t4,\n\t\t\"security-engineer\",\n\t\t\"review\",\n\t\t\"wtd\",\n\t\t[\n\t\t\t\"Implement OAuth2 login with refresh token rotation.\",\n\t\t\t\"Implemente login OAuth2 com rotação de refresh token.\",\n\t\t\t\"Add payment processing with Stripe webhooks and idempotency.\",\n\t\t\t\"Adicione processamento de pagamentos com webhooks do Stripe e idempotência.\",\n\t\t],\n\t\ttrue,\n\t),\n\tt(\"documentation\", 1, \"single_file\", 0, 0, 1, \"software-engineer\", \"syntax\", \"w\", [\n\t\t\"Update the README with the new installation steps.\",\n\t\t\"Atualize o README com os novos passos de instalação.\",\n\t\t\"Add doc comments to the public functions of {file}.\",\n\t\t\"Escreva a documentação da função {fn}.\",\n\t]),\n\tt(\"documentation\", 2, \"module\", 0, 1, 2, \"software-architect\", \"syntax\", \"w\", [\n\t\t\"Write an ADR documenting why we chose {tech} for the job queue.\",\n\t\t\"Escreva um ADR documentando por que escolhemos {tech} para a fila de jobs.\",\n\t]),\n\tt(\"research\", 1, \"single_file\", 0, 1, 2, \"researcher\", \"none\", \"W\", [\n\t\t\"Compare {tech} and {tech2} for our use case.\",\n\t\t\"Compare {tech} e {tech2} para o nosso caso.\",\n\t\t\"What changed in the latest version of {tech}?\",\n\t\t\"Pesquise as novidades da última versão do {tech}.\",\n\t]),\n\tt(\"research\", 2, \"repository\", 0, 1, 2, \"researcher\", \"none\", \"\", [\n\t\t\"Map every place where {module} writes to disk.\",\n\t\t\"Mapeie todos os lugares onde o {module} grava em disco.\",\n\t\t\"List the modules that would be affected by changing the signature of {fn}.\",\n\t\t\"Liste os módulos afetados se mudarmos a assinatura de {fn}.\",\n\t]),\n];\n\nconst SLOTS: Record<string, string[]> = {\n\tfile: [\n\t\t\"src/utils/date.ts\",\n\t\t\"app/models/user.py\",\n\t\t\"src/main/java/OrderService.java\",\n\t\t\"lib/cache.go\",\n\t\t\"src/components/Header.tsx\",\n\t\t\"internal/auth/token.go\",\n\t\t\"src/api/routes.ts\",\n\t\t\"services/billing.rb\",\n\t],\n\tfn: [\"parseDate\", \"calculateTotal\", \"getUser\", \"formatPrice\", \"loadConfig\", \"mergeOptions\", \"validateInput\"],\n\tmodule: [\"billing\", \"auth\", \"orders\", \"notifications\", \"search\", \"sync\", \"scheduler\", \"gateway\"],\n\tvar: [\"data\", \"tmp\", \"res\", \"cfg\"],\n\tvar2: [\"payload\", \"buffer\", \"response\", \"config\"],\n\ttest: [\"should refresh token\", \"renders header\", \"handles retries\"],\n\ttech: [\"Redis\", \"Kafka\", \"RabbitMQ\", \"PostgreSQL\", \"Stripe\", \"Sentry\"],\n};\n\n/** Optional stack mention appended to a request; it varies the text without changing the labels. */\nconst STACKS = [\"TypeScript\", \"Python\", \"Go\", \"Java\", \"Kotlin\", \"Swift\", \"Ruby\", \"Rust\"];\nconst STACK_FORMATS = [\"\", \" ({stack})\", \" [{stack}]\", \" - {stack}\"];\n\n/** Tier from the task profile: the cheapest tier for its difficulty, raised for risk and security. */\nexport function seedTier(template: Pick<Template, \"complexity\" | \"reasoning\" | \"risk\" | \"security\">): CapabilityTier {\n\tconst difficulty = Math.max(template.complexity, template.reasoning);\n\tlet index = difficulty <= 1 ? 0 : difficulty - 1;\n\tif (template.risk >= 2 || template.security) index = Math.max(index, 2);\n\treturn CAPABILITY_TIERS[Math.min(index, CAPABILITY_TIERS.length - 1)];\n}\n\n/** Deterministic PRNG (mulberry32), so the same count yields the same exercises. */\nfunction random(seed: number): () => number {\n\tlet state = seed;\n\treturn () => {\n\t\tstate = (state + 0x6d2b79f5) | 0;\n\t\tlet value = Math.imul(state ^ (state >>> 15), 1 | state);\n\t\tvalue = (value + Math.imul(value ^ (value >>> 7), 61 | value)) ^ value;\n\t\treturn ((value ^ (value >>> 14)) >>> 0) / 4294967296;\n\t};\n}\n\nexport interface SeedRow {\n\tstate: { request: string };\n\texpected: Record<string, string | number | boolean>;\n\tsource: \"synthetic\";\n}\n\n/**\n * Generates up to `count` distinct exercises in laya-trainer's dataset format, the same number per\n * template, so templates with many slot combinations do not crowd out the others.\n */\nexport function generateSeed(count: number, seed = 2026): SeedRow[] {\n\tconst next = random(seed);\n\tconst pick = <T>(values: readonly T[]): T => values[Math.floor(next() * values.length)];\n\tconst rows: SeedRow[] = [];\n\tconst seen = new Set<string>();\n\tconst quota = Math.ceil(count / TEMPLATES.length);\n\tconst produced = new Map<Template, number>();\n\tfor (let attempt = 0; rows.length < count && attempt < count * 50; attempt++) {\n\t\tconst template = TEMPLATES[attempt % TEMPLATES.length];\n\t\tif ((produced.get(template) ?? 0) >= quota) continue;\n\t\tconst module = pick(SLOTS.module);\n\t\tconst tech = pick(SLOTS.tech);\n\t\tconst stack = pick(STACK_FORMATS).replace(\"{stack}\", pick(STACKS));\n\t\tconst request =\n\t\t\tpick(template.texts).replace(/\\{(\\w+)\\}/g, (_, slot: string) => {\n\t\t\t\tif (slot === \"module\") return module;\n\t\t\t\tif (slot === \"module2\") return pick(SLOTS.module.filter((value) => value !== module));\n\t\t\t\tif (slot === \"tech\") return tech;\n\t\t\t\tif (slot === \"tech2\") return pick(SLOTS.tech.filter((value) => value !== tech));\n\t\t\t\treturn pick(SLOTS[slot]);\n\t\t\t}) + stack;\n\t\tif (seen.has(request)) continue;\n\t\tseen.add(request);\n\t\tproduced.set(template, (produced.get(template) ?? 0) + 1);\n\t\tconst tools = Object.fromEntries(\n\t\t\tObject.entries(TOOL_FLAGS).map(([flag, id]) => [id, template.tools.includes(flag)]),\n\t\t);\n\t\trows.push({\n\t\t\tstate: { request },\n\t\t\texpected: {\n\t\t\t\ttask_type: template.type,\n\t\t\t\tcomplexity: template.complexity,\n\t\t\t\tscope: template.scope,\n\t\t\t\trisk: template.risk,\n\t\t\t\tambiguity: template.ambiguity,\n\t\t\t\treasoning_requirement: template.reasoning,\n\t\t\t\tcapability_tier: seedTier(template),\n\t\t\t\treasoning_effort: REASONING_EFFORTS[template.reasoning],\n\t\t\t\tagent: template.agent,\n\t\t\t\tvalidation_level: template.validation,\n\t\t\t\t...tools,\n\t\t\t\tsecurity_sensitive: template.security ?? false,\n\t\t\t},\n\t\t\tsource: \"synthetic\",\n\t\t});\n\t}\n\treturn rows;\n}\n"]}
@@ -0,0 +1,50 @@
1
+ import { type DockerRun } from "./docker.ts";
2
+ export type LayaServerState =
3
+ /** Not checked yet in this process. */
4
+ "unknown"
5
+ /** The docker command is missing or its daemon does not answer. */
6
+ | "no-docker" | "installing" | "ready" | "failed";
7
+ export interface LayaServerOptions {
8
+ docker: DockerRun;
9
+ /** The configured System One URL, e.g. `http://127.0.0.1:8737/v1`. */
10
+ baseUrl: () => string;
11
+ /** Image to run. */
12
+ image: () => Promise<string>;
13
+ /** Model to serve, as a path inside the container. */
14
+ model: () => string;
15
+ fetch?: typeof fetch;
16
+ }
17
+ /** Whether a URL points at this machine, the only place Relay runs a server. */
18
+ export declare function isLocalUrl(url: string): boolean;
19
+ /**
20
+ * The Laya server container. `install()` pulls the image when it is missing and keeps one container
21
+ * running with the active model, published on the configured local port only. The container
22
+ * restarts with Docker, so later sessions find it answering. A server that answers without being
23
+ * ours (no container named relay-laya) is used as is, unless it serves other questions than Relay's.
24
+ */
25
+ export declare class LayaServer {
26
+ private readonly options;
27
+ private installing;
28
+ state: LayaServerState;
29
+ /** Why the server is not ready, for `/laya status`. */
30
+ detail: string | undefined;
31
+ /** Image of the running container. */
32
+ image: string | undefined;
33
+ constructor(options: LayaServerOptions);
34
+ /** The server's health answer, when it answers. */
35
+ private health;
36
+ isUp(): Promise<boolean>;
37
+ /** Makes the server answer: pulls, creates, replaces or starts the container. Concurrent calls share one run. */
38
+ install(report?: (message: string) => void, signal?: AbortSignal): Promise<boolean>;
39
+ private fail;
40
+ private run;
41
+ private ready;
42
+ private runArgs;
43
+ private inspect;
44
+ /** Frees the disk taken by images of earlier Relay versions. */
45
+ private removeOtherImages;
46
+ /** Stops the server container; the next install starts it again. */
47
+ stop(): Promise<void>;
48
+ describe(): string;
49
+ }
50
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/extensions/laya/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAe,MAAM,aAAa,CAAC;AAsB1E,MAAM,MAAM,eAAe;AAC1B,uCAAuC;AACrC,SAAS;AACX,mEAAmE;GACjE,WAAW,GACX,YAAY,GACZ,OAAO,GACP,QAAQ,CAAC;AAEZ,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,sEAAsE;IACtE,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,oBAAoB;IACpB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,sDAAsD;IACtD,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACrB;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAM/C;AASD;;;;;GAKG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,UAAU,CAA+B;IACjD,KAAK,EAAE,eAAe,CAAa;IACnC,uDAAuD;IACvD,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,sCAAsC;IACtC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1B,YAAY,OAAO,EAAE,iBAAiB,EAErC;IAED,mDAAmD;YACrC,MAAM;IAcd,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAE7B;IAED,iHAAiH;IACjH,OAAO,CAAC,MAAM,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAK5F;IAED,OAAO,CAAC,IAAI;YAME,GAAG;IAsGjB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,OAAO;YAyBD,OAAO;IAmBrB,gEAAgE;YAClD,iBAAiB;IAc/B,oEAAoE;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;IAED,QAAQ,IAAI,MAAM,CAajB;CACD"}
@@ -0,0 +1,251 @@
1
+ import { DOCKER_MISSING, dockerError } from "./docker.js";
2
+ import { LAYA_QUESTIONS } from "./questions.js";
3
+ import { LAYA_CONTAINER, LAYA_CONTAINER_PORT, LAYA_IMAGE_PATHS, LAYA_IMAGE_REPOSITORY, LAYA_MODELS_VOLUME, } from "./runtime.js";
4
+ const HEALTH_TIMEOUT_MS = 1500;
5
+ /** Loading the model on the CPU of a slow machine takes a while. */
6
+ const START_TIMEOUT_MS = 180_000;
7
+ const POLL_MS = 1000;
8
+ const PULL_TIMEOUT_MS = 60 * 60_000;
9
+ const COMMAND_TIMEOUT_MS = 60_000;
10
+ /** Labels that describe what a server container runs; a container whose labels differ is replaced. */
11
+ const LABEL_IMAGE = "relay.laya.image";
12
+ const LABEL_MODEL = "relay.laya.model";
13
+ const LABEL_ADDRESS = "relay.laya.address";
14
+ /** Whether a URL points at this machine, the only place Relay runs a server. */
15
+ export function isLocalUrl(url) {
16
+ try {
17
+ return ["127.0.0.1", "localhost", "[::1]"].includes(new URL(url).hostname);
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ /** Host address Docker publishes the server port on, from the configured URL. */
24
+ function publishAddress(baseUrl) {
25
+ const url = new URL(baseUrl);
26
+ const host = url.hostname === "[::1]" ? "[::1]" : "127.0.0.1";
27
+ return `${host}:${url.port || "80"}`;
28
+ }
29
+ /**
30
+ * The Laya server container. `install()` pulls the image when it is missing and keeps one container
31
+ * running with the active model, published on the configured local port only. The container
32
+ * restarts with Docker, so later sessions find it answering. A server that answers without being
33
+ * ours (no container named relay-laya) is used as is, unless it serves other questions than Relay's.
34
+ */
35
+ export class LayaServer {
36
+ options;
37
+ installing;
38
+ state = "unknown";
39
+ /** Why the server is not ready, for `/laya status`. */
40
+ detail;
41
+ /** Image of the running container. */
42
+ image;
43
+ constructor(options) {
44
+ this.options = options;
45
+ }
46
+ /** The server's health answer, when it answers. */
47
+ async health() {
48
+ const request = this.options.fetch ?? globalThis.fetch;
49
+ try {
50
+ const response = await request(new URL("/health", this.options.baseUrl()), {
51
+ signal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),
52
+ });
53
+ if (!response.ok)
54
+ return undefined;
55
+ const body = (await response.json());
56
+ return body.ok === true ? body : undefined;
57
+ }
58
+ catch {
59
+ return undefined;
60
+ }
61
+ }
62
+ async isUp() {
63
+ return (await this.health()) !== undefined;
64
+ }
65
+ /** Makes the server answer: pulls, creates, replaces or starts the container. Concurrent calls share one run. */
66
+ install(report = () => { }, signal) {
67
+ this.installing ??= this.run(report, signal).finally(() => {
68
+ this.installing = undefined;
69
+ });
70
+ return this.installing;
71
+ }
72
+ fail(state, detail) {
73
+ this.state = state;
74
+ this.detail = detail;
75
+ return false;
76
+ }
77
+ async run(report, signal) {
78
+ const { docker } = this.options;
79
+ const baseUrl = this.options.baseUrl();
80
+ if (!isLocalUrl(baseUrl)) {
81
+ // A remote server is not Relay's to manage.
82
+ const up = await this.isUp();
83
+ return up ? this.ready() : this.fail("failed", `${baseUrl} does not answer`);
84
+ }
85
+ this.state = "installing";
86
+ this.detail = undefined;
87
+ const version = await docker(["version", "--format", "{{.Server.Version}}"], {
88
+ signal,
89
+ timeout: COMMAND_TIMEOUT_MS,
90
+ });
91
+ if (version.code !== 0) {
92
+ return this.fail("no-docker", version.code === DOCKER_MISSING
93
+ ? "Docker is not installed"
94
+ : `Docker does not answer; start Docker Desktop or the Docker service (${dockerError(version)})`);
95
+ }
96
+ const container = await this.inspect(signal);
97
+ const foreign = container ? undefined : await this.health();
98
+ if (foreign) {
99
+ // Someone else's server on this port: use it, unless it says it answers other questions,
100
+ // like a laya-trainer server of another project.
101
+ const decisions = Array.isArray(foreign.decisions) ? foreign.decisions : undefined;
102
+ if (decisions && !Object.keys(LAYA_QUESTIONS).every((name) => decisions.includes(name))) {
103
+ return this.fail("failed", `another Laya server, which answers other questions, uses ${publishAddress(baseUrl)}; stop it or set laya.baseUrl to a free port`);
104
+ }
105
+ return this.ready();
106
+ }
107
+ const image = await this.options.image();
108
+ const present = await docker(["image", "inspect", "--format", "{{.Id}}", image], { signal });
109
+ if (present.code !== 0) {
110
+ report("downloading the Laya image");
111
+ let layers = 0;
112
+ let done = 0;
113
+ const pull = await docker(["pull", image], {
114
+ signal,
115
+ timeout: PULL_TIMEOUT_MS,
116
+ onLine: (line) => {
117
+ if (/: Pulling fs layer$/.test(line))
118
+ layers++;
119
+ else if (/: (Pull complete|Already exists)$/.test(line))
120
+ done++;
121
+ else
122
+ return;
123
+ report(`downloading the Laya image: ${done}/${layers} layers`);
124
+ },
125
+ });
126
+ if (pull.code !== 0)
127
+ return this.fail("failed", `Pulling ${image} failed: ${dockerError(pull)}`);
128
+ }
129
+ const labels = {
130
+ [LABEL_IMAGE]: image,
131
+ [LABEL_MODEL]: this.options.model(),
132
+ [LABEL_ADDRESS]: publishAddress(baseUrl),
133
+ };
134
+ const matches = container && Object.entries(labels).every(([key, value]) => container.labels[key] === value);
135
+ if (container && !matches) {
136
+ const removed = await docker(["rm", "--force", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });
137
+ if (removed.code !== 0)
138
+ return this.fail("failed", `Replacing the Laya container failed: ${dockerError(removed)}`);
139
+ }
140
+ if (!matches) {
141
+ report("starting the Laya server");
142
+ const created = await docker(this.runArgs(image, labels), { signal, timeout: COMMAND_TIMEOUT_MS });
143
+ // Another Relay created it at the same time: use theirs, it runs the same image and model.
144
+ if (created.code !== 0 && !(await this.inspect(signal))) {
145
+ return this.fail("failed", `Starting the Laya container failed: ${dockerError(created)}`);
146
+ }
147
+ }
148
+ else if (container && !container.running) {
149
+ report("starting the Laya server");
150
+ const started = await docker(["start", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });
151
+ if (started.code !== 0)
152
+ return this.fail("failed", `Starting the Laya container failed: ${dockerError(started)}`);
153
+ }
154
+ // A running container that matches is only checked; nothing new to report.
155
+ if (!matches || !container?.running)
156
+ report("loading the Laya model");
157
+ const deadline = Date.now() + START_TIMEOUT_MS;
158
+ while (Date.now() < deadline && !signal?.aborted) {
159
+ if (await this.isUp()) {
160
+ this.image = image;
161
+ await this.removeOtherImages(image);
162
+ return this.ready();
163
+ }
164
+ const current = await this.inspect(signal);
165
+ if (!current?.running) {
166
+ const logs = await docker(["logs", "--tail", "5", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });
167
+ return this.fail("failed", `The Laya container stopped: ${dockerError(logs)}`);
168
+ }
169
+ await new Promise((resolve) => setTimeout(resolve, POLL_MS));
170
+ }
171
+ return this.fail("failed", "The Laya server did not answer in time (see docker logs relay-laya)");
172
+ }
173
+ ready() {
174
+ this.state = "ready";
175
+ this.detail = undefined;
176
+ return true;
177
+ }
178
+ runArgs(image, labels) {
179
+ return [
180
+ "run",
181
+ "--detach",
182
+ "--name",
183
+ LAYA_CONTAINER,
184
+ "--restart",
185
+ "unless-stopped",
186
+ "--publish",
187
+ `${labels[LABEL_ADDRESS]}:${LAYA_CONTAINER_PORT}`,
188
+ "--volume",
189
+ `${LAYA_MODELS_VOLUME}:${LAYA_IMAGE_PATHS.trainedModels}`,
190
+ ...Object.entries(labels).flatMap(([key, value]) => ["--label", `${key}=${value}`]),
191
+ image,
192
+ "python",
193
+ LAYA_IMAGE_PATHS.serveScript,
194
+ "--model",
195
+ labels[LABEL_MODEL],
196
+ "--host",
197
+ "0.0.0.0",
198
+ "--port",
199
+ String(LAYA_CONTAINER_PORT),
200
+ ];
201
+ }
202
+ async inspect(signal) {
203
+ const result = await this.options.docker(["container", "inspect", "--format", "{{json .State.Running}} {{json .Config.Labels}}", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });
204
+ if (result.code !== 0)
205
+ return undefined;
206
+ const [running, ...labels] = result.stdout.trim().split(" ");
207
+ try {
208
+ return {
209
+ running: running === "true",
210
+ labels: JSON.parse(labels.join(" ")) ?? {},
211
+ };
212
+ }
213
+ catch {
214
+ return { running: running === "true", labels: {} };
215
+ }
216
+ }
217
+ /** Frees the disk taken by images of earlier Relay versions. */
218
+ async removeOtherImages(image) {
219
+ const listed = await this.options.docker(["image", "ls", LAYA_IMAGE_REPOSITORY, "--format", "{{.Repository}}:{{.Tag}}"], { timeout: COMMAND_TIMEOUT_MS });
220
+ if (listed.code !== 0)
221
+ return;
222
+ const others = listed.stdout
223
+ .split("\n")
224
+ .map((line) => line.trim())
225
+ .filter((ref) => ref && ref !== image && !ref.endsWith(":<none>"));
226
+ // An image still used by a training container is kept; rmi fails on it.
227
+ if (others.length > 0)
228
+ await this.options.docker(["rmi", ...others], { timeout: COMMAND_TIMEOUT_MS });
229
+ }
230
+ /** Stops the server container; the next install starts it again. */
231
+ async stop() {
232
+ await this.options.docker(["stop", LAYA_CONTAINER], { timeout: COMMAND_TIMEOUT_MS });
233
+ if (this.state === "ready")
234
+ this.state = "unknown";
235
+ }
236
+ describe() {
237
+ switch (this.state) {
238
+ case "ready":
239
+ return `running in Docker${this.image ? ` (${this.image}, model ${this.options.model()})` : ""}`;
240
+ case "installing":
241
+ return "installing in Docker";
242
+ case "no-docker":
243
+ return `not available: ${this.detail}`;
244
+ case "failed":
245
+ return `failed: ${this.detail}`;
246
+ default:
247
+ return "not checked yet";
248
+ }
249
+ }
250
+ }
251
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/extensions/laya/server.ts"],"names":[],"mappings":"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","sourcesContent":["import { DOCKER_MISSING, type DockerRun, dockerError } from \"./docker.ts\";\nimport { LAYA_QUESTIONS } from \"./questions.ts\";\nimport {\n\tLAYA_CONTAINER,\n\tLAYA_CONTAINER_PORT,\n\tLAYA_IMAGE_PATHS,\n\tLAYA_IMAGE_REPOSITORY,\n\tLAYA_MODELS_VOLUME,\n} from \"./runtime.ts\";\n\nconst HEALTH_TIMEOUT_MS = 1500;\n/** Loading the model on the CPU of a slow machine takes a while. */\nconst START_TIMEOUT_MS = 180_000;\nconst POLL_MS = 1000;\nconst PULL_TIMEOUT_MS = 60 * 60_000;\nconst COMMAND_TIMEOUT_MS = 60_000;\n\n/** Labels that describe what a server container runs; a container whose labels differ is replaced. */\nconst LABEL_IMAGE = \"relay.laya.image\";\nconst LABEL_MODEL = \"relay.laya.model\";\nconst LABEL_ADDRESS = \"relay.laya.address\";\n\nexport type LayaServerState =\n\t/** Not checked yet in this process. */\n\t| \"unknown\"\n\t/** The docker command is missing or its daemon does not answer. */\n\t| \"no-docker\"\n\t| \"installing\"\n\t| \"ready\"\n\t| \"failed\";\n\nexport interface LayaServerOptions {\n\tdocker: DockerRun;\n\t/** The configured System One URL, e.g. `http://127.0.0.1:8737/v1`. */\n\tbaseUrl: () => string;\n\t/** Image to run. */\n\timage: () => Promise<string>;\n\t/** Model to serve, as a path inside the container. */\n\tmodel: () => string;\n\tfetch?: typeof fetch;\n}\n\n/** Whether a URL points at this machine, the only place Relay runs a server. */\nexport function isLocalUrl(url: string): boolean {\n\ttry {\n\t\treturn [\"127.0.0.1\", \"localhost\", \"[::1]\"].includes(new URL(url).hostname);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/** Host address Docker publishes the server port on, from the configured URL. */\nfunction publishAddress(baseUrl: string): string {\n\tconst url = new URL(baseUrl);\n\tconst host = url.hostname === \"[::1]\" ? \"[::1]\" : \"127.0.0.1\";\n\treturn `${host}:${url.port || \"80\"}`;\n}\n\n/**\n * The Laya server container. `install()` pulls the image when it is missing and keeps one container\n * running with the active model, published on the configured local port only. The container\n * restarts with Docker, so later sessions find it answering. A server that answers without being\n * ours (no container named relay-laya) is used as is, unless it serves other questions than Relay's.\n */\nexport class LayaServer {\n\tprivate readonly options: LayaServerOptions;\n\tprivate installing: Promise<boolean> | undefined;\n\tstate: LayaServerState = \"unknown\";\n\t/** Why the server is not ready, for `/laya status`. */\n\tdetail: string | undefined;\n\t/** Image of the running container. */\n\timage: string | undefined;\n\n\tconstructor(options: LayaServerOptions) {\n\t\tthis.options = options;\n\t}\n\n\t/** The server's health answer, when it answers. */\n\tprivate async health(): Promise<{ ok?: boolean; decisions?: unknown } | undefined> {\n\t\tconst request = this.options.fetch ?? globalThis.fetch;\n\t\ttry {\n\t\t\tconst response = await request(new URL(\"/health\", this.options.baseUrl()), {\n\t\t\t\tsignal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),\n\t\t\t});\n\t\t\tif (!response.ok) return undefined;\n\t\t\tconst body = (await response.json()) as { ok?: boolean; decisions?: unknown };\n\t\t\treturn body.ok === true ? body : undefined;\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tasync isUp(): Promise<boolean> {\n\t\treturn (await this.health()) !== undefined;\n\t}\n\n\t/** Makes the server answer: pulls, creates, replaces or starts the container. Concurrent calls share one run. */\n\tinstall(report: (message: string) => void = () => {}, signal?: AbortSignal): Promise<boolean> {\n\t\tthis.installing ??= this.run(report, signal).finally(() => {\n\t\t\tthis.installing = undefined;\n\t\t});\n\t\treturn this.installing;\n\t}\n\n\tprivate fail(state: \"no-docker\" | \"failed\", detail: string): false {\n\t\tthis.state = state;\n\t\tthis.detail = detail;\n\t\treturn false;\n\t}\n\n\tprivate async run(report: (message: string) => void, signal?: AbortSignal): Promise<boolean> {\n\t\tconst { docker } = this.options;\n\t\tconst baseUrl = this.options.baseUrl();\n\t\tif (!isLocalUrl(baseUrl)) {\n\t\t\t// A remote server is not Relay's to manage.\n\t\t\tconst up = await this.isUp();\n\t\t\treturn up ? this.ready() : this.fail(\"failed\", `${baseUrl} does not answer`);\n\t\t}\n\t\tthis.state = \"installing\";\n\t\tthis.detail = undefined;\n\n\t\tconst version = await docker([\"version\", \"--format\", \"{{.Server.Version}}\"], {\n\t\t\tsignal,\n\t\t\ttimeout: COMMAND_TIMEOUT_MS,\n\t\t});\n\t\tif (version.code !== 0) {\n\t\t\treturn this.fail(\n\t\t\t\t\"no-docker\",\n\t\t\t\tversion.code === DOCKER_MISSING\n\t\t\t\t\t? \"Docker is not installed\"\n\t\t\t\t\t: `Docker does not answer; start Docker Desktop or the Docker service (${dockerError(version)})`,\n\t\t\t);\n\t\t}\n\n\t\tconst container = await this.inspect(signal);\n\t\tconst foreign = container ? undefined : await this.health();\n\t\tif (foreign) {\n\t\t\t// Someone else's server on this port: use it, unless it says it answers other questions,\n\t\t\t// like a laya-trainer server of another project.\n\t\t\tconst decisions = Array.isArray(foreign.decisions) ? foreign.decisions : undefined;\n\t\t\tif (decisions && !Object.keys(LAYA_QUESTIONS).every((name) => decisions.includes(name))) {\n\t\t\t\treturn this.fail(\n\t\t\t\t\t\"failed\",\n\t\t\t\t\t`another Laya server, which answers other questions, uses ${publishAddress(baseUrl)}; stop it or set laya.baseUrl to a free port`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn this.ready();\n\t\t}\n\n\t\tconst image = await this.options.image();\n\t\tconst present = await docker([\"image\", \"inspect\", \"--format\", \"{{.Id}}\", image], { signal });\n\t\tif (present.code !== 0) {\n\t\t\treport(\"downloading the Laya image\");\n\t\t\tlet layers = 0;\n\t\t\tlet done = 0;\n\t\t\tconst pull = await docker([\"pull\", image], {\n\t\t\t\tsignal,\n\t\t\t\ttimeout: PULL_TIMEOUT_MS,\n\t\t\t\tonLine: (line) => {\n\t\t\t\t\tif (/: Pulling fs layer$/.test(line)) layers++;\n\t\t\t\t\telse if (/: (Pull complete|Already exists)$/.test(line)) done++;\n\t\t\t\t\telse return;\n\t\t\t\t\treport(`downloading the Laya image: ${done}/${layers} layers`);\n\t\t\t\t},\n\t\t\t});\n\t\t\tif (pull.code !== 0) return this.fail(\"failed\", `Pulling ${image} failed: ${dockerError(pull)}`);\n\t\t}\n\n\t\tconst labels = {\n\t\t\t[LABEL_IMAGE]: image,\n\t\t\t[LABEL_MODEL]: this.options.model(),\n\t\t\t[LABEL_ADDRESS]: publishAddress(baseUrl),\n\t\t};\n\t\tconst matches = container && Object.entries(labels).every(([key, value]) => container.labels[key] === value);\n\t\tif (container && !matches) {\n\t\t\tconst removed = await docker([\"rm\", \"--force\", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });\n\t\t\tif (removed.code !== 0)\n\t\t\t\treturn this.fail(\"failed\", `Replacing the Laya container failed: ${dockerError(removed)}`);\n\t\t}\n\t\tif (!matches) {\n\t\t\treport(\"starting the Laya server\");\n\t\t\tconst created = await docker(this.runArgs(image, labels), { signal, timeout: COMMAND_TIMEOUT_MS });\n\t\t\t// Another Relay created it at the same time: use theirs, it runs the same image and model.\n\t\t\tif (created.code !== 0 && !(await this.inspect(signal))) {\n\t\t\t\treturn this.fail(\"failed\", `Starting the Laya container failed: ${dockerError(created)}`);\n\t\t\t}\n\t\t} else if (container && !container.running) {\n\t\t\treport(\"starting the Laya server\");\n\t\t\tconst started = await docker([\"start\", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });\n\t\t\tif (started.code !== 0)\n\t\t\t\treturn this.fail(\"failed\", `Starting the Laya container failed: ${dockerError(started)}`);\n\t\t}\n\n\t\t// A running container that matches is only checked; nothing new to report.\n\t\tif (!matches || !container?.running) report(\"loading the Laya model\");\n\t\tconst deadline = Date.now() + START_TIMEOUT_MS;\n\t\twhile (Date.now() < deadline && !signal?.aborted) {\n\t\t\tif (await this.isUp()) {\n\t\t\t\tthis.image = image;\n\t\t\t\tawait this.removeOtherImages(image);\n\t\t\t\treturn this.ready();\n\t\t\t}\n\t\t\tconst current = await this.inspect(signal);\n\t\t\tif (!current?.running) {\n\t\t\t\tconst logs = await docker([\"logs\", \"--tail\", \"5\", LAYA_CONTAINER], { signal, timeout: COMMAND_TIMEOUT_MS });\n\t\t\t\treturn this.fail(\"failed\", `The Laya container stopped: ${dockerError(logs)}`);\n\t\t\t}\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, POLL_MS));\n\t\t}\n\t\treturn this.fail(\"failed\", \"The Laya server did not answer in time (see docker logs relay-laya)\");\n\t}\n\n\tprivate ready(): true {\n\t\tthis.state = \"ready\";\n\t\tthis.detail = undefined;\n\t\treturn true;\n\t}\n\n\tprivate runArgs(image: string, labels: Record<string, string>): string[] {\n\t\treturn [\n\t\t\t\"run\",\n\t\t\t\"--detach\",\n\t\t\t\"--name\",\n\t\t\tLAYA_CONTAINER,\n\t\t\t\"--restart\",\n\t\t\t\"unless-stopped\",\n\t\t\t\"--publish\",\n\t\t\t`${labels[LABEL_ADDRESS]}:${LAYA_CONTAINER_PORT}`,\n\t\t\t\"--volume\",\n\t\t\t`${LAYA_MODELS_VOLUME}:${LAYA_IMAGE_PATHS.trainedModels}`,\n\t\t\t...Object.entries(labels).flatMap(([key, value]) => [\"--label\", `${key}=${value}`]),\n\t\t\timage,\n\t\t\t\"python\",\n\t\t\tLAYA_IMAGE_PATHS.serveScript,\n\t\t\t\"--model\",\n\t\t\tlabels[LABEL_MODEL],\n\t\t\t\"--host\",\n\t\t\t\"0.0.0.0\",\n\t\t\t\"--port\",\n\t\t\tString(LAYA_CONTAINER_PORT),\n\t\t];\n\t}\n\n\tprivate async inspect(\n\t\tsignal?: AbortSignal,\n\t): Promise<{ running: boolean; labels: Record<string, string> } | undefined> {\n\t\tconst result = await this.options.docker(\n\t\t\t[\"container\", \"inspect\", \"--format\", \"{{json .State.Running}} {{json .Config.Labels}}\", LAYA_CONTAINER],\n\t\t\t{ signal, timeout: COMMAND_TIMEOUT_MS },\n\t\t);\n\t\tif (result.code !== 0) return undefined;\n\t\tconst [running, ...labels] = result.stdout.trim().split(\" \");\n\t\ttry {\n\t\t\treturn {\n\t\t\t\trunning: running === \"true\",\n\t\t\t\tlabels: (JSON.parse(labels.join(\" \")) as Record<string, string> | null) ?? {},\n\t\t\t};\n\t\t} catch {\n\t\t\treturn { running: running === \"true\", labels: {} };\n\t\t}\n\t}\n\n\t/** Frees the disk taken by images of earlier Relay versions. */\n\tprivate async removeOtherImages(image: string): Promise<void> {\n\t\tconst listed = await this.options.docker(\n\t\t\t[\"image\", \"ls\", LAYA_IMAGE_REPOSITORY, \"--format\", \"{{.Repository}}:{{.Tag}}\"],\n\t\t\t{ timeout: COMMAND_TIMEOUT_MS },\n\t\t);\n\t\tif (listed.code !== 0) return;\n\t\tconst others = listed.stdout\n\t\t\t.split(\"\\n\")\n\t\t\t.map((line) => line.trim())\n\t\t\t.filter((ref) => ref && ref !== image && !ref.endsWith(\":<none>\"));\n\t\t// An image still used by a training container is kept; rmi fails on it.\n\t\tif (others.length > 0) await this.options.docker([\"rmi\", ...others], { timeout: COMMAND_TIMEOUT_MS });\n\t}\n\n\t/** Stops the server container; the next install starts it again. */\n\tasync stop(): Promise<void> {\n\t\tawait this.options.docker([\"stop\", LAYA_CONTAINER], { timeout: COMMAND_TIMEOUT_MS });\n\t\tif (this.state === \"ready\") this.state = \"unknown\";\n\t}\n\n\tdescribe(): string {\n\t\tswitch (this.state) {\n\t\t\tcase \"ready\":\n\t\t\t\treturn `running in Docker${this.image ? ` (${this.image}, model ${this.options.model()})` : \"\"}`;\n\t\t\tcase \"installing\":\n\t\t\t\treturn \"installing in Docker\";\n\t\t\tcase \"no-docker\":\n\t\t\t\treturn `not available: ${this.detail}`;\n\t\t\tcase \"failed\":\n\t\t\t\treturn `failed: ${this.detail}`;\n\t\t\tdefault:\n\t\t\t\treturn \"not checked yet\";\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,94 @@
1
+ import type { AgentMessage } from "@relay-harness/agent-core";
2
+ import type { TaskAssessment } from "./assessment.ts";
3
+ import { type EscalationReason, PerformanceHistory, type PolicyProfile } from "./policy.ts";
4
+ import type { CapabilityTier, TaskScope, TaskType } from "./questions.ts";
5
+ /** One routed request and its outcome, as written to `telemetry.jsonl`. */
6
+ export interface TelemetryRecord {
7
+ task_id: string;
8
+ timestamp: string;
9
+ /** The user's request, truncated. Kept locally to export training exercises. */
10
+ request: string;
11
+ classification: {
12
+ source: TaskAssessment["source"];
13
+ type: TaskType;
14
+ complexity: number;
15
+ risk: number;
16
+ ambiguity: number;
17
+ reasoning: number;
18
+ scope: TaskScope;
19
+ agent: string;
20
+ validation: string;
21
+ confidence: number;
22
+ recommended_tier: CapabilityTier;
23
+ recommended_effort: string;
24
+ };
25
+ policy: {
26
+ profile: PolicyProfile;
27
+ required_tier: CapabilityTier;
28
+ rules: string[];
29
+ };
30
+ selected: {
31
+ provider: string;
32
+ model: string;
33
+ tier: CapabilityTier;
34
+ thinking_level: string;
35
+ };
36
+ result: {
37
+ success: boolean;
38
+ outcome: "completed" | "error" | "aborted";
39
+ attempts: number;
40
+ escalations: Array<{
41
+ reason: EscalationReason;
42
+ from: CapabilityTier;
43
+ to: CapabilityTier;
44
+ }>;
45
+ tests_passed: boolean | null;
46
+ tool_failures: number;
47
+ };
48
+ usage: {
49
+ tokens: number;
50
+ cost: number;
51
+ duration_ms: number;
52
+ models: string[];
53
+ };
54
+ }
55
+ /** Reads `[laya:*]` and `[harness:*]` messages as harness text, not as the user's words. */
56
+ export declare const HARNESS_MESSAGE: RegExp;
57
+ /** Outcome of the latest check (test, type check, build, lint) run through bash, or null when none ran. */
58
+ export declare function lastCheckPassed(messages: readonly AgentMessage[]): boolean | null;
59
+ /** Outcome, usage and checks of one agent run. */
60
+ export declare function summarizeRun(messages: readonly AgentMessage[]): {
61
+ outcome: TelemetryRecord["result"]["outcome"];
62
+ testsPassed: boolean | null;
63
+ toolFailures: number;
64
+ tokens: number;
65
+ cost: number;
66
+ models: string[];
67
+ };
68
+ export declare function truncateRequest(request: string): string;
69
+ /** Append-only JSONL store. Unreadable lines are skipped. */
70
+ export declare class TelemetryStore {
71
+ readonly path: string;
72
+ constructor(path: string);
73
+ append(record: TelemetryRecord): void;
74
+ /** The newest `limit` records, oldest first. */
75
+ read(limit?: number): TelemetryRecord[];
76
+ }
77
+ export declare function historyKey(record: Pick<TelemetryRecord, "classification">): string;
78
+ /** Aborted runs say nothing about the model, so they are not counted. */
79
+ export declare function historyFromTelemetry(records: readonly TelemetryRecord[]): PerformanceHistory;
80
+ /**
81
+ * Training exercises with evidence-based tier labels: for each successful run, the tier that
82
+ * finished it. Only `capability_tier` is labeled; the other answers came from Laya itself and would
83
+ * teach it nothing new. Review the rows before adding them (`/laya-data`).
84
+ */
85
+ export declare function datasetFromTelemetry(records: readonly TelemetryRecord[]): Array<{
86
+ state: {
87
+ request: string;
88
+ };
89
+ expected: {
90
+ capability_tier: CapabilityTier;
91
+ };
92
+ source: "harness";
93
+ }>;
94
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/extensions/laya/telemetry.ts"],"names":[],"mappings":"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"}