@atomic-chat/core 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (868) hide show
  1. package/README.md +46 -0
  2. package/dist/app-daemon.d.ts +2 -0
  3. package/dist/app-daemon.js +72 -0
  4. package/dist/app-daemon.js.map +1 -0
  5. package/dist/backend/catalog/archive.d.ts +70 -0
  6. package/dist/backend/catalog/archive.js +138 -0
  7. package/dist/backend/catalog/archive.js.map +1 -0
  8. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +2 -0
  9. package/dist/backend/catalog/bundled-manifest-baseline.js +49 -0
  10. package/dist/backend/catalog/bundled-manifest-baseline.js.map +1 -0
  11. package/dist/backend/catalog/cuda-family.d.ts +54 -0
  12. package/dist/backend/catalog/cuda-family.js +93 -0
  13. package/dist/backend/catalog/cuda-family.js.map +1 -0
  14. package/dist/backend/catalog/index.d.ts +6 -0
  15. package/dist/backend/catalog/index.js +7 -0
  16. package/dist/backend/catalog/index.js.map +1 -0
  17. package/dist/backend/catalog/manifest.d.ts +102 -0
  18. package/dist/backend/catalog/manifest.js +233 -0
  19. package/dist/backend/catalog/manifest.js.map +1 -0
  20. package/dist/backend/catalog/migrate.d.ts +40 -0
  21. package/dist/backend/catalog/migrate.js +135 -0
  22. package/dist/backend/catalog/migrate.js.map +1 -0
  23. package/dist/backend/index.d.ts +18 -0
  24. package/dist/backend/index.js +19 -0
  25. package/dist/backend/index.js.map +1 -0
  26. package/dist/backend/install/index.d.ts +3 -0
  27. package/dist/backend/install/index.js +4 -0
  28. package/dist/backend/install/index.js.map +1 -0
  29. package/dist/backend/install/runtime-backend.d.ts +22 -0
  30. package/dist/backend/install/runtime-backend.js +95 -0
  31. package/dist/backend/install/runtime-backend.js.map +1 -0
  32. package/dist/backend/install/service.d.ts +119 -0
  33. package/dist/backend/install/service.js +218 -0
  34. package/dist/backend/install/service.js.map +1 -0
  35. package/dist/backend/installed/index.d.ts +3 -0
  36. package/dist/backend/installed/index.js +4 -0
  37. package/dist/backend/installed/index.js.map +1 -0
  38. package/dist/backend/installed/installed.d.ts +93 -0
  39. package/dist/backend/installed/installed.js +209 -0
  40. package/dist/backend/installed/installed.js.map +1 -0
  41. package/dist/backend/installed/scan.d.ts +39 -0
  42. package/dist/backend/installed/scan.js +105 -0
  43. package/dist/backend/installed/scan.js.map +1 -0
  44. package/dist/backend/optimal/index.d.ts +3 -0
  45. package/dist/backend/optimal/index.js +4 -0
  46. package/dist/backend/optimal/index.js.map +1 -0
  47. package/dist/backend/optimal/optimal-cache.d.ts +90 -0
  48. package/dist/backend/optimal/optimal-cache.js +198 -0
  49. package/dist/backend/optimal/optimal-cache.js.map +1 -0
  50. package/dist/backend/optimal/optimal-store.d.ts +24 -0
  51. package/dist/backend/optimal/optimal-store.js +103 -0
  52. package/dist/backend/optimal/optimal-store.js.map +1 -0
  53. package/dist/backend/select/amd-rocm-pci-ids.d.ts +3 -0
  54. package/dist/backend/select/amd-rocm-pci-ids.js +57 -0
  55. package/dist/backend/select/amd-rocm-pci-ids.js.map +1 -0
  56. package/dist/backend/select/categories.d.ts +49 -0
  57. package/dist/backend/select/categories.js +178 -0
  58. package/dist/backend/select/categories.js.map +1 -0
  59. package/dist/backend/select/features.d.ts +81 -0
  60. package/dist/backend/select/features.js +221 -0
  61. package/dist/backend/select/features.js.map +1 -0
  62. package/dist/backend/select/index.d.ts +9 -0
  63. package/dist/backend/select/index.js +10 -0
  64. package/dist/backend/select/index.js.map +1 -0
  65. package/dist/backend/select/recovery.d.ts +51 -0
  66. package/dist/backend/select/recovery.js +108 -0
  67. package/dist/backend/select/recovery.js.map +1 -0
  68. package/dist/backend/select/tiers.d.ts +76 -0
  69. package/dist/backend/select/tiers.js +179 -0
  70. package/dist/backend/select/tiers.js.map +1 -0
  71. package/dist/backend/turboquant.d.ts +134 -0
  72. package/dist/backend/turboquant.js +587 -0
  73. package/dist/backend/turboquant.js.map +1 -0
  74. package/dist/backend/types.d.ts +139 -0
  75. package/dist/backend/types.js +13 -0
  76. package/dist/backend/types.js.map +1 -0
  77. package/dist/backend/version.d.ts +59 -0
  78. package/dist/backend/version.js +168 -0
  79. package/dist/backend/version.js.map +1 -0
  80. package/dist/cli/bin.d.ts +2 -0
  81. package/dist/cli/bin.js +10 -0
  82. package/dist/cli/bin.js.map +1 -0
  83. package/dist/cli/cloud.d.ts +13 -0
  84. package/dist/cli/cloud.js +146 -0
  85. package/dist/cli/cloud.js.map +1 -0
  86. package/dist/cli/commands/daemon.d.ts +4 -0
  87. package/dist/cli/commands/daemon.js +88 -0
  88. package/dist/cli/commands/daemon.js.map +1 -0
  89. package/dist/cli/commands/index.d.ts +16 -0
  90. package/dist/cli/commands/index.js +17 -0
  91. package/dist/cli/commands/index.js.map +1 -0
  92. package/dist/cli/commands/models.d.ts +4 -0
  93. package/dist/cli/commands/models.js +52 -0
  94. package/dist/cli/commands/models.js.map +1 -0
  95. package/dist/cli/commands/serve.d.ts +16 -0
  96. package/dist/cli/commands/serve.js +263 -0
  97. package/dist/cli/commands/serve.js.map +1 -0
  98. package/dist/cli/commands/server.d.ts +4 -0
  99. package/dist/cli/commands/server.js +126 -0
  100. package/dist/cli/commands/server.js.map +1 -0
  101. package/dist/cli/commands/shared.d.ts +10 -0
  102. package/dist/cli/commands/shared.js +34 -0
  103. package/dist/cli/commands/shared.js.map +1 -0
  104. package/dist/cli/commands/shutdown.d.ts +4 -0
  105. package/dist/cli/commands/shutdown.js +32 -0
  106. package/dist/cli/commands/shutdown.js.map +1 -0
  107. package/dist/cli/commands/telemetry.d.ts +8 -0
  108. package/dist/cli/commands/telemetry.js +50 -0
  109. package/dist/cli/commands/telemetry.js.map +1 -0
  110. package/dist/cli/index.d.ts +7 -0
  111. package/dist/cli/index.js +8 -0
  112. package/dist/cli/index.js.map +1 -0
  113. package/dist/cli/io.d.ts +46 -0
  114. package/dist/cli/io.js +101 -0
  115. package/dist/cli/io.js.map +1 -0
  116. package/dist/cli/launch.d.ts +50 -0
  117. package/dist/cli/launch.js +327 -0
  118. package/dist/cli/launch.js.map +1 -0
  119. package/dist/cli/main.d.ts +10 -0
  120. package/dist/cli/main.js +109 -0
  121. package/dist/cli/main.js.map +1 -0
  122. package/dist/cli/owner.d.ts +39 -0
  123. package/dist/cli/owner.js +179 -0
  124. package/dist/cli/owner.js.map +1 -0
  125. package/dist/client/control-client.d.ts +213 -0
  126. package/dist/client/control-client.js +368 -0
  127. package/dist/client/control-client.js.map +1 -0
  128. package/dist/client/index.d.ts +7 -0
  129. package/dist/client/index.js +8 -0
  130. package/dist/client/index.js.map +1 -0
  131. package/dist/cloud/chatgpt.d.ts +63 -0
  132. package/dist/cloud/chatgpt.js +233 -0
  133. package/dist/cloud/chatgpt.js.map +1 -0
  134. package/dist/cloud/index.d.ts +8 -0
  135. package/dist/cloud/index.js +9 -0
  136. package/dist/cloud/index.js.map +1 -0
  137. package/dist/cloud/registry.d.ts +51 -0
  138. package/dist/cloud/registry.js +148 -0
  139. package/dist/cloud/registry.js.map +1 -0
  140. package/dist/config/data-folder.d.ts +57 -0
  141. package/dist/config/data-folder.js +150 -0
  142. package/dist/config/data-folder.js.map +1 -0
  143. package/dist/config/index.d.ts +9 -0
  144. package/dist/config/index.js +10 -0
  145. package/dist/config/index.js.map +1 -0
  146. package/dist/config/paths.d.ts +98 -0
  147. package/dist/config/paths.js +109 -0
  148. package/dist/config/paths.js.map +1 -0
  149. package/dist/contracts/control-api.d.ts +61 -0
  150. package/dist/contracts/control-api.js +7 -0
  151. package/dist/contracts/control-api.js.map +1 -0
  152. package/dist/contracts/diffusion.d.ts +477 -0
  153. package/dist/contracts/diffusion.js +10 -0
  154. package/dist/contracts/diffusion.js.map +1 -0
  155. package/dist/contracts/errors.d.ts +61 -0
  156. package/dist/contracts/errors.js +70 -0
  157. package/dist/contracts/errors.js.map +1 -0
  158. package/dist/contracts/events.d.ts +270 -0
  159. package/dist/contracts/events.js +7 -0
  160. package/dist/contracts/events.js.map +1 -0
  161. package/dist/contracts/hardware.d.ts +53 -0
  162. package/dist/contracts/hardware.js +12 -0
  163. package/dist/contracts/hardware.js.map +1 -0
  164. package/dist/contracts/index.d.ts +12 -0
  165. package/dist/contracts/index.js +13 -0
  166. package/dist/contracts/index.js.map +1 -0
  167. package/dist/contracts/model-yml.d.ts +28 -0
  168. package/dist/contracts/model-yml.js +23 -0
  169. package/dist/contracts/model-yml.js.map +1 -0
  170. package/dist/contracts/remote-access.d.ts +43 -0
  171. package/dist/contracts/remote-access.js +12 -0
  172. package/dist/contracts/remote-access.js.map +1 -0
  173. package/dist/contracts/session.d.ts +39 -0
  174. package/dist/contracts/session.js +7 -0
  175. package/dist/contracts/session.js.map +1 -0
  176. package/dist/contracts/settings.d.ts +106 -0
  177. package/dist/contracts/settings.js +17 -0
  178. package/dist/contracts/settings.js.map +1 -0
  179. package/dist/core/atomic-core.d.ts +149 -0
  180. package/dist/core/atomic-core.js +289 -0
  181. package/dist/core/atomic-core.js.map +1 -0
  182. package/dist/core/create.d.ts +12 -0
  183. package/dist/core/create.js +393 -0
  184. package/dist/core/create.js.map +1 -0
  185. package/dist/core/index.d.ts +10 -0
  186. package/dist/core/index.js +9 -0
  187. package/dist/core/index.js.map +1 -0
  188. package/dist/core/public-server.d.ts +76 -0
  189. package/dist/core/public-server.js +143 -0
  190. package/dist/core/public-server.js.map +1 -0
  191. package/dist/core/reap-orphans.d.ts +7 -0
  192. package/dist/core/reap-orphans.js +40 -0
  193. package/dist/core/reap-orphans.js.map +1 -0
  194. package/dist/core/sessions.d.ts +60 -0
  195. package/dist/core/sessions.js +180 -0
  196. package/dist/core/sessions.js.map +1 -0
  197. package/dist/core/types.d.ts +61 -0
  198. package/dist/core/types.js +2 -0
  199. package/dist/core/types.js.map +1 -0
  200. package/dist/credentials/api-keys.d.ts +41 -0
  201. package/dist/credentials/api-keys.js +156 -0
  202. package/dist/credentials/api-keys.js.map +1 -0
  203. package/dist/credentials/chatgpt-auth.d.ts +73 -0
  204. package/dist/credentials/chatgpt-auth.js +167 -0
  205. package/dist/credentials/chatgpt-auth.js.map +1 -0
  206. package/dist/credentials/chatgpt-oauth.d.ts +97 -0
  207. package/dist/credentials/chatgpt-oauth.js +329 -0
  208. package/dist/credentials/chatgpt-oauth.js.map +1 -0
  209. package/dist/credentials/chatgpt-store.d.ts +33 -0
  210. package/dist/credentials/chatgpt-store.js +110 -0
  211. package/dist/credentials/chatgpt-store.js.map +1 -0
  212. package/dist/credentials/index.d.ts +11 -0
  213. package/dist/credentials/index.js +12 -0
  214. package/dist/credentials/index.js.map +1 -0
  215. package/dist/diffusion/args.d.ts +102 -0
  216. package/dist/diffusion/args.js +291 -0
  217. package/dist/diffusion/args.js.map +1 -0
  218. package/dist/diffusion/compat.d.ts +20 -0
  219. package/dist/diffusion/compat.js +58 -0
  220. package/dist/diffusion/compat.js.map +1 -0
  221. package/dist/diffusion/containment.d.ts +15 -0
  222. package/dist/diffusion/containment.js +32 -0
  223. package/dist/diffusion/containment.js.map +1 -0
  224. package/dist/diffusion/errors.d.ts +28 -0
  225. package/dist/diffusion/errors.js +63 -0
  226. package/dist/diffusion/errors.js.map +1 -0
  227. package/dist/diffusion/gallery.d.ts +76 -0
  228. package/dist/diffusion/gallery.js +307 -0
  229. package/dist/diffusion/gallery.js.map +1 -0
  230. package/dist/diffusion/http.d.ts +16 -0
  231. package/dist/diffusion/http.js +41 -0
  232. package/dist/diffusion/http.js.map +1 -0
  233. package/dist/diffusion/idle.d.ts +23 -0
  234. package/dist/diffusion/idle.js +45 -0
  235. package/dist/diffusion/idle.js.map +1 -0
  236. package/dist/diffusion/image-job.d.ts +25 -0
  237. package/dist/diffusion/image-job.js +176 -0
  238. package/dist/diffusion/image-job.js.map +1 -0
  239. package/dist/diffusion/index.d.ts +35 -0
  240. package/dist/diffusion/index.js +36 -0
  241. package/dist/diffusion/index.js.map +1 -0
  242. package/dist/diffusion/install.d.ts +61 -0
  243. package/dist/diffusion/install.js +287 -0
  244. package/dist/diffusion/install.js.map +1 -0
  245. package/dist/diffusion/job-kind.d.ts +74 -0
  246. package/dist/diffusion/job-kind.js +7 -0
  247. package/dist/diffusion/job-kind.js.map +1 -0
  248. package/dist/diffusion/jobs.d.ts +90 -0
  249. package/dist/diffusion/jobs.js +433 -0
  250. package/dist/diffusion/jobs.js.map +1 -0
  251. package/dist/diffusion/mutex.d.ts +16 -0
  252. package/dist/diffusion/mutex.js +46 -0
  253. package/dist/diffusion/mutex.js.map +1 -0
  254. package/dist/diffusion/parse.d.ts +19 -0
  255. package/dist/diffusion/parse.js +274 -0
  256. package/dist/diffusion/parse.js.map +1 -0
  257. package/dist/diffusion/png.d.ts +77 -0
  258. package/dist/diffusion/png.js +335 -0
  259. package/dist/diffusion/png.js.map +1 -0
  260. package/dist/diffusion/progress.d.ts +74 -0
  261. package/dist/diffusion/progress.js +223 -0
  262. package/dist/diffusion/progress.js.map +1 -0
  263. package/dist/diffusion/recipe.d.ts +26 -0
  264. package/dist/diffusion/recipe.js +206 -0
  265. package/dist/diffusion/recipe.js.map +1 -0
  266. package/dist/diffusion/server-process.d.ts +59 -0
  267. package/dist/diffusion/server-process.js +235 -0
  268. package/dist/diffusion/server-process.js.map +1 -0
  269. package/dist/diffusion/service.d.ts +107 -0
  270. package/dist/diffusion/service.js +431 -0
  271. package/dist/diffusion/service.js.map +1 -0
  272. package/dist/diffusion/session.d.ts +58 -0
  273. package/dist/diffusion/session.js +226 -0
  274. package/dist/diffusion/session.js.map +1 -0
  275. package/dist/diffusion/state.d.ts +90 -0
  276. package/dist/diffusion/state.js +122 -0
  277. package/dist/diffusion/state.js.map +1 -0
  278. package/dist/diffusion/tracker.d.ts +46 -0
  279. package/dist/diffusion/tracker.js +153 -0
  280. package/dist/diffusion/tracker.js.map +1 -0
  281. package/dist/diffusion/types.d.ts +62 -0
  282. package/dist/diffusion/types.js +10 -0
  283. package/dist/diffusion/types.js.map +1 -0
  284. package/dist/diffusion/validate.d.ts +36 -0
  285. package/dist/diffusion/validate.js +166 -0
  286. package/dist/diffusion/validate.js.map +1 -0
  287. package/dist/diffusion/video-gallery.d.ts +56 -0
  288. package/dist/diffusion/video-gallery.js +252 -0
  289. package/dist/diffusion/video-gallery.js.map +1 -0
  290. package/dist/diffusion/video-job.d.ts +33 -0
  291. package/dist/diffusion/video-job.js +150 -0
  292. package/dist/diffusion/video-job.js.map +1 -0
  293. package/dist/diffusion/video-recipe.d.ts +12 -0
  294. package/dist/diffusion/video-recipe.js +141 -0
  295. package/dist/diffusion/video-recipe.js.map +1 -0
  296. package/dist/diffusion/wiring.d.ts +24 -0
  297. package/dist/diffusion/wiring.js +38 -0
  298. package/dist/diffusion/wiring.js.map +1 -0
  299. package/dist/diffusion/workflow.d.ts +33 -0
  300. package/dist/diffusion/workflow.js +78 -0
  301. package/dist/diffusion/workflow.js.map +1 -0
  302. package/dist/downloads/archive.d.ts +15 -0
  303. package/dist/downloads/archive.js +121 -0
  304. package/dist/downloads/archive.js.map +1 -0
  305. package/dist/downloads/disk-space.d.ts +18 -0
  306. package/dist/downloads/disk-space.js +32 -0
  307. package/dist/downloads/disk-space.js.map +1 -0
  308. package/dist/downloads/disk.d.ts +38 -0
  309. package/dist/downloads/disk.js +88 -0
  310. package/dist/downloads/disk.js.map +1 -0
  311. package/dist/downloads/downloader.d.ts +75 -0
  312. package/dist/downloads/downloader.js +479 -0
  313. package/dist/downloads/downloader.js.map +1 -0
  314. package/dist/downloads/index.d.ts +14 -0
  315. package/dist/downloads/index.js +15 -0
  316. package/dist/downloads/index.js.map +1 -0
  317. package/dist/downloads/protocol.d.ts +52 -0
  318. package/dist/downloads/protocol.js +153 -0
  319. package/dist/downloads/protocol.js.map +1 -0
  320. package/dist/downloads/proxy-fetch.d.ts +45 -0
  321. package/dist/downloads/proxy-fetch.js +571 -0
  322. package/dist/downloads/proxy-fetch.js.map +1 -0
  323. package/dist/downloads/verify.d.ts +22 -0
  324. package/dist/downloads/verify.js +74 -0
  325. package/dist/downloads/verify.js.map +1 -0
  326. package/dist/events/emitter.d.ts +44 -0
  327. package/dist/events/emitter.js +104 -0
  328. package/dist/events/emitter.js.map +1 -0
  329. package/dist/events/index.d.ts +5 -0
  330. package/dist/events/index.js +6 -0
  331. package/dist/events/index.js.map +1 -0
  332. package/dist/hardware/index.d.ts +7 -0
  333. package/dist/hardware/index.js +8 -0
  334. package/dist/hardware/index.js.map +1 -0
  335. package/dist/hardware/override.d.ts +46 -0
  336. package/dist/hardware/override.js +81 -0
  337. package/dist/hardware/override.js.map +1 -0
  338. package/dist/host/index.d.ts +15 -0
  339. package/dist/host/index.js +16 -0
  340. package/dist/host/index.js.map +1 -0
  341. package/dist/index.d.ts +5 -0
  342. package/dist/index.js +6 -0
  343. package/dist/index.js.map +1 -0
  344. package/dist/integrations/catalog.d.ts +67 -0
  345. package/dist/integrations/catalog.js +385 -0
  346. package/dist/integrations/catalog.js.map +1 -0
  347. package/dist/integrations/config-io.d.ts +86 -0
  348. package/dist/integrations/config-io.js +229 -0
  349. package/dist/integrations/config-io.js.map +1 -0
  350. package/dist/integrations/configure/atomic-agent.d.ts +33 -0
  351. package/dist/integrations/configure/atomic-agent.js +127 -0
  352. package/dist/integrations/configure/atomic-agent.js.map +1 -0
  353. package/dist/integrations/configure/claude-code.d.ts +16 -0
  354. package/dist/integrations/configure/claude-code.js +45 -0
  355. package/dist/integrations/configure/claude-code.js.map +1 -0
  356. package/dist/integrations/configure/cline.d.ts +28 -0
  357. package/dist/integrations/configure/cline.js +70 -0
  358. package/dist/integrations/configure/cline.js.map +1 -0
  359. package/dist/integrations/configure/codex.d.ts +17 -0
  360. package/dist/integrations/configure/codex.js +43 -0
  361. package/dist/integrations/configure/codex.js.map +1 -0
  362. package/dist/integrations/configure/copilot.d.ts +10 -0
  363. package/dist/integrations/configure/copilot.js +14 -0
  364. package/dist/integrations/configure/copilot.js.map +1 -0
  365. package/dist/integrations/configure/droid.d.ts +12 -0
  366. package/dist/integrations/configure/droid.js +47 -0
  367. package/dist/integrations/configure/droid.js.map +1 -0
  368. package/dist/integrations/configure/dsh.d.ts +34 -0
  369. package/dist/integrations/configure/dsh.js +146 -0
  370. package/dist/integrations/configure/dsh.js.map +1 -0
  371. package/dist/integrations/configure/env-agent.d.ts +26 -0
  372. package/dist/integrations/configure/env-agent.js +41 -0
  373. package/dist/integrations/configure/env-agent.js.map +1 -0
  374. package/dist/integrations/configure/goose.d.ts +12 -0
  375. package/dist/integrations/configure/goose.js +16 -0
  376. package/dist/integrations/configure/goose.js.map +1 -0
  377. package/dist/integrations/configure/hermes.d.ts +41 -0
  378. package/dist/integrations/configure/hermes.js +247 -0
  379. package/dist/integrations/configure/hermes.js.map +1 -0
  380. package/dist/integrations/configure/index.d.ts +25 -0
  381. package/dist/integrations/configure/index.js +26 -0
  382. package/dist/integrations/configure/index.js.map +1 -0
  383. package/dist/integrations/configure/json-tree.d.ts +16 -0
  384. package/dist/integrations/configure/json-tree.js +19 -0
  385. package/dist/integrations/configure/json-tree.js.map +1 -0
  386. package/dist/integrations/configure/kilo.d.ts +9 -0
  387. package/dist/integrations/configure/kilo.js +19 -0
  388. package/dist/integrations/configure/kilo.js.map +1 -0
  389. package/dist/integrations/configure/mimo.d.ts +9 -0
  390. package/dist/integrations/configure/mimo.js +19 -0
  391. package/dist/integrations/configure/mimo.js.map +1 -0
  392. package/dist/integrations/configure/muse.d.ts +9 -0
  393. package/dist/integrations/configure/muse.js +13 -0
  394. package/dist/integrations/configure/muse.js.map +1 -0
  395. package/dist/integrations/configure/openclaude.d.ts +13 -0
  396. package/dist/integrations/configure/openclaude.js +56 -0
  397. package/dist/integrations/configure/openclaude.js.map +1 -0
  398. package/dist/integrations/configure/openclaw.d.ts +24 -0
  399. package/dist/integrations/configure/openclaw.js +99 -0
  400. package/dist/integrations/configure/openclaw.js.map +1 -0
  401. package/dist/integrations/configure/opencode-style.d.ts +25 -0
  402. package/dist/integrations/configure/opencode-style.js +43 -0
  403. package/dist/integrations/configure/opencode-style.js.map +1 -0
  404. package/dist/integrations/configure/opencode.d.ts +9 -0
  405. package/dist/integrations/configure/opencode.js +19 -0
  406. package/dist/integrations/configure/opencode.js.map +1 -0
  407. package/dist/integrations/configure/openhands.d.ts +8 -0
  408. package/dist/integrations/configure/openhands.js +12 -0
  409. package/dist/integrations/configure/openhands.js.map +1 -0
  410. package/dist/integrations/configure/pi.d.ts +14 -0
  411. package/dist/integrations/configure/pi.js +49 -0
  412. package/dist/integrations/configure/pi.js.map +1 -0
  413. package/dist/integrations/configure/poolside.d.ts +8 -0
  414. package/dist/integrations/configure/poolside.js +12 -0
  415. package/dist/integrations/configure/poolside.js.map +1 -0
  416. package/dist/integrations/configure/registry.d.ts +41 -0
  417. package/dist/integrations/configure/registry.js +50 -0
  418. package/dist/integrations/configure/registry.js.map +1 -0
  419. package/dist/integrations/configure/zcode.d.ts +59 -0
  420. package/dist/integrations/configure/zcode.js +260 -0
  421. package/dist/integrations/configure/zcode.js.map +1 -0
  422. package/dist/integrations/configure/zed.d.ts +16 -0
  423. package/dist/integrations/configure/zed.js +61 -0
  424. package/dist/integrations/configure/zed.js.map +1 -0
  425. package/dist/integrations/detect.d.ts +29 -0
  426. package/dist/integrations/detect.js +43 -0
  427. package/dist/integrations/detect.js.map +1 -0
  428. package/dist/integrations/index.d.ts +9 -0
  429. package/dist/integrations/index.js +10 -0
  430. package/dist/integrations/index.js.map +1 -0
  431. package/dist/lock/control-token.d.ts +19 -0
  432. package/dist/lock/control-token.js +58 -0
  433. package/dist/lock/control-token.js.map +1 -0
  434. package/dist/lock/index.d.ts +10 -0
  435. package/dist/lock/index.js +11 -0
  436. package/dist/lock/index.js.map +1 -0
  437. package/dist/lock/instance-lock.d.ts +93 -0
  438. package/dist/lock/instance-lock.js +244 -0
  439. package/dist/lock/instance-lock.js.map +1 -0
  440. package/dist/lock/legacy-guard.d.ts +46 -0
  441. package/dist/lock/legacy-guard.js +87 -0
  442. package/dist/lock/legacy-guard.js.map +1 -0
  443. package/dist/lock/model-claim.d.ts +20 -0
  444. package/dist/lock/model-claim.js +84 -0
  445. package/dist/lock/model-claim.js.map +1 -0
  446. package/dist/lock/process-identity.d.ts +48 -0
  447. package/dist/lock/process-identity.js +180 -0
  448. package/dist/lock/process-identity.js.map +1 -0
  449. package/dist/lock/process-journal.d.ts +56 -0
  450. package/dist/lock/process-journal.js +113 -0
  451. package/dist/lock/process-journal.js.map +1 -0
  452. package/dist/models/capabilities.d.ts +73 -0
  453. package/dist/models/capabilities.js +123 -0
  454. package/dist/models/capabilities.js.map +1 -0
  455. package/dist/models/embed.d.ts +30 -0
  456. package/dist/models/embed.js +83 -0
  457. package/dist/models/embed.js.map +1 -0
  458. package/dist/models/gguf/classify.d.ts +29 -0
  459. package/dist/models/gguf/classify.js +89 -0
  460. package/dist/models/gguf/classify.js.map +1 -0
  461. package/dist/models/gguf/index.d.ts +5 -0
  462. package/dist/models/gguf/index.js +6 -0
  463. package/dist/models/gguf/index.js.map +1 -0
  464. package/dist/models/gguf/kv-cache.d.ts +27 -0
  465. package/dist/models/gguf/kv-cache.js +101 -0
  466. package/dist/models/gguf/kv-cache.js.map +1 -0
  467. package/dist/models/gguf/read-file.d.ts +11 -0
  468. package/dist/models/gguf/read-file.js +21 -0
  469. package/dist/models/gguf/read-file.js.map +1 -0
  470. package/dist/models/gguf/reader.d.ts +40 -0
  471. package/dist/models/gguf/reader.js +271 -0
  472. package/dist/models/gguf/reader.js.map +1 -0
  473. package/dist/models/gguf/support.d.ts +47 -0
  474. package/dist/models/gguf/support.js +48 -0
  475. package/dist/models/gguf/support.js.map +1 -0
  476. package/dist/models/hf.d.ts +35 -0
  477. package/dist/models/hf.js +140 -0
  478. package/dist/models/hf.js.map +1 -0
  479. package/dist/models/index.d.ts +14 -0
  480. package/dist/models/index.js +15 -0
  481. package/dist/models/index.js.map +1 -0
  482. package/dist/models/model-yml.d.ts +22 -0
  483. package/dist/models/model-yml.js +63 -0
  484. package/dist/models/model-yml.js.map +1 -0
  485. package/dist/models/registry.d.ts +51 -0
  486. package/dist/models/registry.js +102 -0
  487. package/dist/models/registry.js.map +1 -0
  488. package/dist/models/shards.d.ts +20 -0
  489. package/dist/models/shards.js +46 -0
  490. package/dist/models/shards.js.map +1 -0
  491. package/dist/remote-access/cloudflared-args.d.ts +41 -0
  492. package/dist/remote-access/cloudflared-args.js +59 -0
  493. package/dist/remote-access/cloudflared-args.js.map +1 -0
  494. package/dist/remote-access/cloudflared-output.d.ts +26 -0
  495. package/dist/remote-access/cloudflared-output.js +51 -0
  496. package/dist/remote-access/cloudflared-output.js.map +1 -0
  497. package/dist/remote-access/index.d.ts +16 -0
  498. package/dist/remote-access/index.js +17 -0
  499. package/dist/remote-access/index.js.map +1 -0
  500. package/dist/remote-access/journal.d.ts +63 -0
  501. package/dist/remote-access/journal.js +140 -0
  502. package/dist/remote-access/journal.js.map +1 -0
  503. package/dist/remote-access/lan-probe.d.ts +28 -0
  504. package/dist/remote-access/lan-probe.js +63 -0
  505. package/dist/remote-access/lan-probe.js.map +1 -0
  506. package/dist/remote-access/lan.d.ts +31 -0
  507. package/dist/remote-access/lan.js +90 -0
  508. package/dist/remote-access/lan.js.map +1 -0
  509. package/dist/remote-access/manager.d.ts +111 -0
  510. package/dist/remote-access/manager.js +316 -0
  511. package/dist/remote-access/manager.js.map +1 -0
  512. package/dist/remote-access/probe.d.ts +92 -0
  513. package/dist/remote-access/probe.js +186 -0
  514. package/dist/remote-access/probe.js.map +1 -0
  515. package/dist/remote-access/process.d.ts +66 -0
  516. package/dist/remote-access/process.js +160 -0
  517. package/dist/remote-access/process.js.map +1 -0
  518. package/dist/remote-access/spawner.d.ts +25 -0
  519. package/dist/remote-access/spawner.js +49 -0
  520. package/dist/remote-access/spawner.js.map +1 -0
  521. package/dist/remote-access/status.d.ts +39 -0
  522. package/dist/remote-access/status.js +49 -0
  523. package/dist/remote-access/status.js.map +1 -0
  524. package/dist/remote-access/wiring.d.ts +34 -0
  525. package/dist/remote-access/wiring.js +47 -0
  526. package/dist/remote-access/wiring.js.map +1 -0
  527. package/dist/router/index.d.ts +7 -0
  528. package/dist/router/index.js +8 -0
  529. package/dist/router/index.js.map +1 -0
  530. package/dist/router/resolve.d.ts +41 -0
  531. package/dist/router/resolve.js +53 -0
  532. package/dist/router/resolve.js.map +1 -0
  533. package/dist/runtime/foundation-models/errors.d.ts +28 -0
  534. package/dist/runtime/foundation-models/errors.js +48 -0
  535. package/dist/runtime/foundation-models/errors.js.map +1 -0
  536. package/dist/runtime/foundation-models/index.d.ts +8 -0
  537. package/dist/runtime/foundation-models/index.js +9 -0
  538. package/dist/runtime/foundation-models/index.js.map +1 -0
  539. package/dist/runtime/foundation-models/runtime.d.ts +73 -0
  540. package/dist/runtime/foundation-models/runtime.js +186 -0
  541. package/dist/runtime/foundation-models/runtime.js.map +1 -0
  542. package/dist/runtime/index.d.ts +5 -0
  543. package/dist/runtime/index.js +6 -0
  544. package/dist/runtime/index.js.map +1 -0
  545. package/dist/runtime/llamacpp/args.d.ts +90 -0
  546. package/dist/runtime/llamacpp/args.js +379 -0
  547. package/dist/runtime/llamacpp/args.js.map +1 -0
  548. package/dist/runtime/llamacpp/ctx-ladder.d.ts +16 -0
  549. package/dist/runtime/llamacpp/ctx-ladder.js +28 -0
  550. package/dist/runtime/llamacpp/ctx-ladder.js.map +1 -0
  551. package/dist/runtime/llamacpp/devices.d.ts +26 -0
  552. package/dist/runtime/llamacpp/devices.js +86 -0
  553. package/dist/runtime/llamacpp/devices.js.map +1 -0
  554. package/dist/runtime/llamacpp/errors.d.ts +34 -0
  555. package/dist/runtime/llamacpp/errors.js +137 -0
  556. package/dist/runtime/llamacpp/errors.js.map +1 -0
  557. package/dist/runtime/llamacpp/index.d.ts +14 -0
  558. package/dist/runtime/llamacpp/index.js +15 -0
  559. package/dist/runtime/llamacpp/index.js.map +1 -0
  560. package/dist/runtime/llamacpp/load-plan.d.ts +113 -0
  561. package/dist/runtime/llamacpp/load-plan.js +259 -0
  562. package/dist/runtime/llamacpp/load-plan.js.map +1 -0
  563. package/dist/runtime/llamacpp/policy.d.ts +70 -0
  564. package/dist/runtime/llamacpp/policy.js +191 -0
  565. package/dist/runtime/llamacpp/policy.js.map +1 -0
  566. package/dist/runtime/llamacpp/probe.d.ts +13 -0
  567. package/dist/runtime/llamacpp/probe.js +35 -0
  568. package/dist/runtime/llamacpp/probe.js.map +1 -0
  569. package/dist/runtime/llamacpp/runtime-device.d.ts +33 -0
  570. package/dist/runtime/llamacpp/runtime-device.js +169 -0
  571. package/dist/runtime/llamacpp/runtime-device.js.map +1 -0
  572. package/dist/runtime/llamacpp/runtime.d.ts +151 -0
  573. package/dist/runtime/llamacpp/runtime.js +535 -0
  574. package/dist/runtime/llamacpp/runtime.js.map +1 -0
  575. package/dist/runtime/mlx/args.d.ts +10 -0
  576. package/dist/runtime/mlx/args.js +44 -0
  577. package/dist/runtime/mlx/args.js.map +1 -0
  578. package/dist/runtime/mlx/config.d.ts +71 -0
  579. package/dist/runtime/mlx/config.js +91 -0
  580. package/dist/runtime/mlx/config.js.map +1 -0
  581. package/dist/runtime/mlx/errors.d.ts +21 -0
  582. package/dist/runtime/mlx/errors.js +73 -0
  583. package/dist/runtime/mlx/errors.js.map +1 -0
  584. package/dist/runtime/mlx/index.d.ts +12 -0
  585. package/dist/runtime/mlx/index.js +13 -0
  586. package/dist/runtime/mlx/index.js.map +1 -0
  587. package/dist/runtime/mlx/model-files.d.ts +29 -0
  588. package/dist/runtime/mlx/model-files.js +82 -0
  589. package/dist/runtime/mlx/model-files.js.map +1 -0
  590. package/dist/runtime/mlx/runtime.d.ts +77 -0
  591. package/dist/runtime/mlx/runtime.js +223 -0
  592. package/dist/runtime/mlx/runtime.js.map +1 -0
  593. package/dist/runtime/mlx/shard-repair.d.ts +25 -0
  594. package/dist/runtime/mlx/shard-repair.js +44 -0
  595. package/dist/runtime/mlx/shard-repair.js.map +1 -0
  596. package/dist/runtime/shared/env.d.ts +49 -0
  597. package/dist/runtime/shared/env.js +155 -0
  598. package/dist/runtime/shared/env.js.map +1 -0
  599. package/dist/runtime/shared/external-sessions.d.ts +67 -0
  600. package/dist/runtime/shared/external-sessions.js +155 -0
  601. package/dist/runtime/shared/external-sessions.js.map +1 -0
  602. package/dist/runtime/shared/index.d.ts +17 -0
  603. package/dist/runtime/shared/index.js +18 -0
  604. package/dist/runtime/shared/index.js.map +1 -0
  605. package/dist/runtime/shared/load-cancel.d.ts +45 -0
  606. package/dist/runtime/shared/load-cancel.js +95 -0
  607. package/dist/runtime/shared/load-cancel.js.map +1 -0
  608. package/dist/runtime/shared/local-runtime.d.ts +68 -0
  609. package/dist/runtime/shared/local-runtime.js +12 -0
  610. package/dist/runtime/shared/local-runtime.js.map +1 -0
  611. package/dist/runtime/shared/log-stream.d.ts +4 -0
  612. package/dist/runtime/shared/log-stream.js +28 -0
  613. package/dist/runtime/shared/log-stream.js.map +1 -0
  614. package/dist/runtime/shared/paths.d.ts +21 -0
  615. package/dist/runtime/shared/paths.js +63 -0
  616. package/dist/runtime/shared/paths.js.map +1 -0
  617. package/dist/runtime/shared/ports.d.ts +26 -0
  618. package/dist/runtime/shared/ports.js +45 -0
  619. package/dist/runtime/shared/ports.js.map +1 -0
  620. package/dist/runtime/shared/process.d.ts +95 -0
  621. package/dist/runtime/shared/process.js +224 -0
  622. package/dist/runtime/shared/process.js.map +1 -0
  623. package/dist/runtime/shared/sidecar.d.ts +86 -0
  624. package/dist/runtime/shared/sidecar.js +214 -0
  625. package/dist/runtime/shared/sidecar.js.map +1 -0
  626. package/dist/server/clients.d.ts +40 -0
  627. package/dist/server/clients.js +74 -0
  628. package/dist/server/clients.js.map +1 -0
  629. package/dist/server/control/index.d.ts +12 -0
  630. package/dist/server/control/index.js +12 -0
  631. package/dist/server/control/index.js.map +1 -0
  632. package/dist/server/control/router.d.ts +9 -0
  633. package/dist/server/control/router.js +61 -0
  634. package/dist/server/control/router.js.map +1 -0
  635. package/dist/server/control/routes/backends.d.ts +4 -0
  636. package/dist/server/control/routes/backends.js +47 -0
  637. package/dist/server/control/routes/backends.js.map +1 -0
  638. package/dist/server/control/routes/clients.d.ts +4 -0
  639. package/dist/server/control/routes/clients.js +30 -0
  640. package/dist/server/control/routes/clients.js.map +1 -0
  641. package/dist/server/control/routes/cloud.d.ts +4 -0
  642. package/dist/server/control/routes/cloud.js +32 -0
  643. package/dist/server/control/routes/cloud.js.map +1 -0
  644. package/dist/server/control/routes/diffusion-video.d.ts +10 -0
  645. package/dist/server/control/routes/diffusion-video.js +33 -0
  646. package/dist/server/control/routes/diffusion-video.js.map +1 -0
  647. package/dist/server/control/routes/diffusion.d.ts +15 -0
  648. package/dist/server/control/routes/diffusion.js +71 -0
  649. package/dist/server/control/routes/diffusion.js.map +1 -0
  650. package/dist/server/control/routes/disk.d.ts +4 -0
  651. package/dist/server/control/routes/disk.js +11 -0
  652. package/dist/server/control/routes/disk.js.map +1 -0
  653. package/dist/server/control/routes/external-sessions.d.ts +4 -0
  654. package/dist/server/control/routes/external-sessions.js +27 -0
  655. package/dist/server/control/routes/external-sessions.js.map +1 -0
  656. package/dist/server/control/routes/hardware.d.ts +4 -0
  657. package/dist/server/control/routes/hardware.js +14 -0
  658. package/dist/server/control/routes/hardware.js.map +1 -0
  659. package/dist/server/control/routes/lifecycle.d.ts +12 -0
  660. package/dist/server/control/routes/lifecycle.js +67 -0
  661. package/dist/server/control/routes/lifecycle.js.map +1 -0
  662. package/dist/server/control/routes/models.d.ts +7 -0
  663. package/dist/server/control/routes/models.js +59 -0
  664. package/dist/server/control/routes/models.js.map +1 -0
  665. package/dist/server/control/routes/public-server.d.ts +4 -0
  666. package/dist/server/control/routes/public-server.js +30 -0
  667. package/dist/server/control/routes/public-server.js.map +1 -0
  668. package/dist/server/control/routes/remote-access.d.ts +7 -0
  669. package/dist/server/control/routes/remote-access.js +16 -0
  670. package/dist/server/control/routes/remote-access.js.map +1 -0
  671. package/dist/server/control/routes/settings.d.ts +4 -0
  672. package/dist/server/control/routes/settings.js +58 -0
  673. package/dist/server/control/routes/settings.js.map +1 -0
  674. package/dist/server/control/routes/telemetry.d.ts +7 -0
  675. package/dist/server/control/routes/telemetry.js +46 -0
  676. package/dist/server/control/routes/telemetry.js.map +1 -0
  677. package/dist/server/control/server.d.ts +26 -0
  678. package/dist/server/control/server.js +111 -0
  679. package/dist/server/control/server.js.map +1 -0
  680. package/dist/server/control/types.d.ts +271 -0
  681. package/dist/server/control/types.js +6 -0
  682. package/dist/server/control/types.js.map +1 -0
  683. package/dist/server/http.d.ts +62 -0
  684. package/dist/server/http.js +220 -0
  685. package/dist/server/http.js.map +1 -0
  686. package/dist/server/index.d.ts +9 -0
  687. package/dist/server/index.js +10 -0
  688. package/dist/server/index.js.map +1 -0
  689. package/dist/server/public/ctx.d.ts +23 -0
  690. package/dist/server/public/ctx.js +42 -0
  691. package/dist/server/public/ctx.js.map +1 -0
  692. package/dist/server/public/dynamic-hosts.d.ts +40 -0
  693. package/dist/server/public/dynamic-hosts.js +117 -0
  694. package/dist/server/public/dynamic-hosts.js.map +1 -0
  695. package/dist/server/public/errors.d.ts +36 -0
  696. package/dist/server/public/errors.js +120 -0
  697. package/dist/server/public/errors.js.map +1 -0
  698. package/dist/server/public/exchange.d.ts +42 -0
  699. package/dist/server/public/exchange.js +85 -0
  700. package/dist/server/public/exchange.js.map +1 -0
  701. package/dist/server/public/forward.d.ts +53 -0
  702. package/dist/server/public/forward.js +448 -0
  703. package/dist/server/public/forward.js.map +1 -0
  704. package/dist/server/public/gates.d.ts +49 -0
  705. package/dist/server/public/gates.js +181 -0
  706. package/dist/server/public/gates.js.map +1 -0
  707. package/dist/server/public/images-params.d.ts +50 -0
  708. package/dist/server/public/images-params.js +162 -0
  709. package/dist/server/public/images-params.js.map +1 -0
  710. package/dist/server/public/images.d.ts +12 -0
  711. package/dist/server/public/images.js +96 -0
  712. package/dist/server/public/images.js.map +1 -0
  713. package/dist/server/public/index.d.ts +58 -0
  714. package/dist/server/public/index.js +253 -0
  715. package/dist/server/public/index.js.map +1 -0
  716. package/dist/server/public/listing.d.ts +27 -0
  717. package/dist/server/public/listing.js +116 -0
  718. package/dist/server/public/listing.js.map +1 -0
  719. package/dist/server/public/responses.d.ts +11 -0
  720. package/dist/server/public/responses.js +158 -0
  721. package/dist/server/public/responses.js.map +1 -0
  722. package/dist/server/public/sse.d.ts +33 -0
  723. package/dist/server/public/sse.js +48 -0
  724. package/dist/server/public/sse.js.map +1 -0
  725. package/dist/server/public/static-assets.generated.d.ts +3 -0
  726. package/dist/server/public/static-assets.generated.js +6 -0
  727. package/dist/server/public/static-assets.generated.js.map +1 -0
  728. package/dist/server/public/static.d.ts +13 -0
  729. package/dist/server/public/static.js +75 -0
  730. package/dist/server/public/static.js.map +1 -0
  731. package/dist/server/public/subscription.d.ts +14 -0
  732. package/dist/server/public/subscription.js +56 -0
  733. package/dist/server/public/subscription.js.map +1 -0
  734. package/dist/server/public/telemetry.d.ts +65 -0
  735. package/dist/server/public/telemetry.js +284 -0
  736. package/dist/server/public/telemetry.js.map +1 -0
  737. package/dist/server/public/trace.d.ts +66 -0
  738. package/dist/server/public/trace.js +223 -0
  739. package/dist/server/public/trace.js.map +1 -0
  740. package/dist/server/public/types.d.ts +131 -0
  741. package/dist/server/public/types.js +9 -0
  742. package/dist/server/public/types.js.map +1 -0
  743. package/dist/server/public/videos-params.d.ts +95 -0
  744. package/dist/server/public/videos-params.js +220 -0
  745. package/dist/server/public/videos-params.js.map +1 -0
  746. package/dist/server/public/videos.d.ts +16 -0
  747. package/dist/server/public/videos.js +188 -0
  748. package/dist/server/public/videos.js.map +1 -0
  749. package/dist/server/public/wire.d.ts +53 -0
  750. package/dist/server/public/wire.js +174 -0
  751. package/dist/server/public/wire.js.map +1 -0
  752. package/dist/server/shims/anthropic.d.ts +52 -0
  753. package/dist/server/shims/anthropic.js +519 -0
  754. package/dist/server/shims/anthropic.js.map +1 -0
  755. package/dist/server/shims/chat-to-responses.d.ts +113 -0
  756. package/dist/server/shims/chat-to-responses.js +557 -0
  757. package/dist/server/shims/chat-to-responses.js.map +1 -0
  758. package/dist/server/shims/index.d.ts +8 -0
  759. package/dist/server/shims/index.js +9 -0
  760. package/dist/server/shims/index.js.map +1 -0
  761. package/dist/server/shims/json.d.ts +10 -0
  762. package/dist/server/shims/json.js +78 -0
  763. package/dist/server/shims/json.js.map +1 -0
  764. package/dist/server/shims/responses.d.ts +79 -0
  765. package/dist/server/shims/responses.js +543 -0
  766. package/dist/server/shims/responses.js.map +1 -0
  767. package/dist/server/state-file.d.ts +44 -0
  768. package/dist/server/state-file.js +107 -0
  769. package/dist/server/state-file.js.map +1 -0
  770. package/dist/settings/import.d.ts +61 -0
  771. package/dist/settings/import.js +104 -0
  772. package/dist/settings/import.js.map +1 -0
  773. package/dist/settings/index.d.ts +11 -0
  774. package/dist/settings/index.js +12 -0
  775. package/dist/settings/index.js.map +1 -0
  776. package/dist/settings/schema/foundation-models.json +1 -0
  777. package/dist/settings/schema/llamacpp-upstream.json +489 -0
  778. package/dist/settings/schema/llamacpp.json +475 -0
  779. package/dist/settings/schema/mlx.json +136 -0
  780. package/dist/settings/schema.d.ts +35 -0
  781. package/dist/settings/schema.js +196 -0
  782. package/dist/settings/schema.js.map +1 -0
  783. package/dist/settings/store.d.ts +168 -0
  784. package/dist/settings/store.js +350 -0
  785. package/dist/settings/store.js.map +1 -0
  786. package/dist/speculative/chat-template-overrides.d.ts +35 -0
  787. package/dist/speculative/chat-template-overrides.js +142 -0
  788. package/dist/speculative/chat-template-overrides.js.map +1 -0
  789. package/dist/speculative/dflash-registry.d.ts +50 -0
  790. package/dist/speculative/dflash-registry.js +258 -0
  791. package/dist/speculative/dflash-registry.js.map +1 -0
  792. package/dist/speculative/gemma-mtp-registry.d.ts +48 -0
  793. package/dist/speculative/gemma-mtp-registry.js +79 -0
  794. package/dist/speculative/gemma-mtp-registry.js.map +1 -0
  795. package/dist/speculative/index.d.ts +18 -0
  796. package/dist/speculative/index.js +19 -0
  797. package/dist/speculative/index.js.map +1 -0
  798. package/dist/speculative/mlx-dflash-registry.d.ts +39 -0
  799. package/dist/speculative/mlx-dflash-registry.js +230 -0
  800. package/dist/speculative/mlx-dflash-registry.js.map +1 -0
  801. package/dist/speculative/mlx-eagle3-registry.d.ts +24 -0
  802. package/dist/speculative/mlx-eagle3-registry.js +81 -0
  803. package/dist/speculative/mlx-eagle3-registry.js.map +1 -0
  804. package/dist/speculative/mlx-mtp-registry.d.ts +31 -0
  805. package/dist/speculative/mlx-mtp-registry.js +139 -0
  806. package/dist/speculative/mlx-mtp-registry.js.map +1 -0
  807. package/dist/speculative/transcription-registry.d.ts +72 -0
  808. package/dist/speculative/transcription-registry.js +94 -0
  809. package/dist/speculative/transcription-registry.js.map +1 -0
  810. package/dist/telemetry/config.d.ts +38 -0
  811. package/dist/telemetry/config.js +44 -0
  812. package/dist/telemetry/config.js.map +1 -0
  813. package/dist/telemetry/consent.d.ts +21 -0
  814. package/dist/telemetry/consent.js +35 -0
  815. package/dist/telemetry/consent.js.map +1 -0
  816. package/dist/telemetry/core-reporter.d.ts +47 -0
  817. package/dist/telemetry/core-reporter.js +72 -0
  818. package/dist/telemetry/core-reporter.js.map +1 -0
  819. package/dist/telemetry/daemon.d.ts +40 -0
  820. package/dist/telemetry/daemon.js +67 -0
  821. package/dist/telemetry/daemon.js.map +1 -0
  822. package/dist/telemetry/dsn.d.ts +15 -0
  823. package/dist/telemetry/dsn.js +32 -0
  824. package/dist/telemetry/dsn.js.map +1 -0
  825. package/dist/telemetry/envelope.d.ts +97 -0
  826. package/dist/telemetry/envelope.js +95 -0
  827. package/dist/telemetry/envelope.js.map +1 -0
  828. package/dist/telemetry/index.d.ts +18 -0
  829. package/dist/telemetry/index.js +19 -0
  830. package/dist/telemetry/index.js.map +1 -0
  831. package/dist/telemetry/policy.d.ts +39 -0
  832. package/dist/telemetry/policy.js +142 -0
  833. package/dist/telemetry/policy.js.map +1 -0
  834. package/dist/telemetry/reporter.d.ts +80 -0
  835. package/dist/telemetry/reporter.js +0 -0
  836. package/dist/telemetry/reporter.js.map +1 -0
  837. package/dist/telemetry/reports.d.ts +68 -0
  838. package/dist/telemetry/reports.js +212 -0
  839. package/dist/telemetry/reports.js.map +1 -0
  840. package/dist/telemetry/scrub.d.ts +19 -0
  841. package/dist/telemetry/scrub.js +75 -0
  842. package/dist/telemetry/scrub.js.map +1 -0
  843. package/dist/telemetry/stack.d.ts +21 -0
  844. package/dist/telemetry/stack.js +68 -0
  845. package/dist/telemetry/stack.js.map +1 -0
  846. package/dist/telemetry/store.d.ts +17 -0
  847. package/dist/telemetry/store.js +51 -0
  848. package/dist/telemetry/store.js.map +1 -0
  849. package/dist/telemetry/subscribe.d.ts +13 -0
  850. package/dist/telemetry/subscribe.js +19 -0
  851. package/dist/telemetry/subscribe.js.map +1 -0
  852. package/dist/telemetry/types.d.ts +40 -0
  853. package/dist/telemetry/types.js +2 -0
  854. package/dist/telemetry/types.js.map +1 -0
  855. package/dist/util/index.d.ts +5 -0
  856. package/dist/util/index.js +6 -0
  857. package/dist/util/index.js.map +1 -0
  858. package/dist/util/rust-number.d.ts +27 -0
  859. package/dist/util/rust-number.js +101 -0
  860. package/dist/util/rust-number.js.map +1 -0
  861. package/dist/version.d.ts +2 -0
  862. package/dist/version.js +3 -0
  863. package/dist/version.js.map +1 -0
  864. package/package.json +86 -0
  865. package/src/settings/schema/foundation-models.json +1 -0
  866. package/src/settings/schema/llamacpp-upstream.json +489 -0
  867. package/src/settings/schema/llamacpp.json +475 -0
  868. package/src/settings/schema/mlx.json +136 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Ported verbatim from: extensions/llamacpp-upstream-extension/src/transcriptionRegistry.ts
3
+ * The voice model.
4
+ *
5
+ * Voice input transcribes on the same bundled llama.cpp engine that runs chat:
6
+ * its `libmtmd` already carries the `voxtral` audio projector, and `llama-server`
7
+ * already serves an OpenAI-compatible `/v1/audio/transcriptions`. So the model
8
+ * is the only thing that has to be fetched, and it goes through the ordinary
9
+ * download pipeline like any other GGUF.
10
+ *
11
+ * One model, deliberately. A tier picker would be a second thing to explain in
12
+ * the setup wizard, and the sizes here are already dominated by the weights.
13
+ */
14
+ /** Model id, and the llama-server alias (`-a`) it is loaded under. */
15
+ export const TRANSCRIPTION_MODEL_ID = 'ggml-org/Voxtral-Mini-3B-2507-Q4_K_M';
16
+ export const TRANSCRIPTION_MODEL_HF_REPO = 'ggml-org/Voxtral-Mini-3B-2507-GGUF';
17
+ const HF_BASE = `https://huggingface.co/${TRANSCRIPTION_MODEL_HF_REPO}/resolve/main`;
18
+ export const TRANSCRIPTION_MODEL_URL = `${HF_BASE}/Voxtral-Mini-3B-2507-Q4_K_M.gguf`;
19
+ export const TRANSCRIPTION_MMPROJ_URL = `${HF_BASE}/mmproj-Voxtral-Mini-3B-2507-Q8_0.gguf`;
20
+ /** Exact sizes from the Hugging Face API, so the progress bar has a real total. */
21
+ export const TRANSCRIPTION_MODEL_BYTES = 2_473_001_920;
22
+ export const TRANSCRIPTION_MMPROJ_BYTES = 715_714_080;
23
+ export const TRANSCRIPTION_TOTAL_BYTES = TRANSCRIPTION_MODEL_BYTES + TRANSCRIPTION_MMPROJ_BYTES;
24
+ /**
25
+ * Chat template the voice server is loaded with.
26
+ *
27
+ * Two things make this mandatory rather than a nicety.
28
+ *
29
+ * 1. The template embedded in `ggml-org/Voxtral-Mini-3B-2507-Q4_K_M.gguf` is an
30
+ * Unsloth *Devstral* template. It defaults every conversation to a ~1200
31
+ * token "You are Devstral, a helpful agentic model … using the OpenHands
32
+ * scaffold" system prompt, which llama.cpp then prepends to every
33
+ * `/v1/audio/transcriptions` request (that endpoint is a chat completion
34
+ * underneath). The model duly behaves like a chat agent: it *hears* the
35
+ * audio and answers it — "I'm unable to transcribe audio directly. However,
36
+ * I can guide you on how to use Descript, Rev, Amazon Transcribe…" — instead
37
+ * of transcribing. Every phrase then trips the plugin's plausibility guard
38
+ * and is dropped, so dictation inserts nothing at all.
39
+ *
40
+ * 2. Voxtral has a dedicated transcription mode, entered by ending the user
41
+ * turn with the `[TRANSCRIBE]` token instead of closing it with `[/INST]`.
42
+ * Closing the turn normally — with or without a "transcribe this" prompt —
43
+ * leaves the model in conversational mode, where it answers, refuses, or
44
+ * returns nothing depending on the clip.
45
+ *
46
+ * So: no system prompt, and `[INST]` … `[TRANSCRIBE]` around whatever the
47
+ * endpoint puts in the user turn (the audio marker, then the caller's `prompt`,
48
+ * which is where the `lang:xx` directive lands). This server only ever serves
49
+ * transcription, so treating every message as a transcription turn is honest.
50
+ *
51
+ * `String.raw` for consistency with `chatTemplateOverrides.ts`: minja, not JS,
52
+ * interprets any escapes inside the Jinja source.
53
+ */
54
+ export const VOXTRAL_TRANSCRIPTION_CHAT_TEMPLATE = String.raw `{%- for message in messages %}
55
+ {%- set content = namespace(text='') %}
56
+ {%- if message['content'] is string %}
57
+ {%- set content.text = message['content'] %}
58
+ {%- else %}
59
+ {%- for block in message['content'] %}
60
+ {%- if block['type'] == 'text' %}
61
+ {%- set content.text = content.text + block['text'] %}
62
+ {%- endif %}
63
+ {%- endfor %}
64
+ {%- endif %}
65
+ {%- if message['role'] == 'assistant' %}
66
+ {{- content.text }}{{- eos_token }}
67
+ {%- else %}
68
+ {{- '[INST]' + content.text + '[TRANSCRIBE]' }}
69
+ {%- endif %}
70
+ {%- endfor %}`;
71
+ /**
72
+ * Load overrides for the voice server.
73
+ *
74
+ * Deliberately small and deterministic: one 30 s `libmtmd` audio window is a few
75
+ * hundred tokens, a transcript is never long, and this process runs *alongside*
76
+ * the user's chat model — so it must not size itself to the free VRAM the way a
77
+ * chat load does.
78
+ */
79
+ export const TRANSCRIPTION_LOAD_OVERRIDES = {
80
+ fit: false,
81
+ ctx_size: 4096,
82
+ n_predict: 512,
83
+ parallel: 1,
84
+ cont_batching: false,
85
+ // Not optional — see the constant's own note. Without it the model answers
86
+ // the audio instead of transcribing it and dictation produces nothing.
87
+ chat_template: VOXTRAL_TRANSCRIPTION_CHAT_TEMPLATE,
88
+ // Warmup would generate a throwaway token through the audio path for no
89
+ // benefit; the first real segment arrives seconds later anyway.
90
+ extra_args: '--no-warmup',
91
+ };
92
+ /** Unload the voice model after this long without a phrase. */
93
+ export const TRANSCRIPTION_IDLE_UNLOAD_MS = 5 * 60_000;
94
+ //# sourceMappingURL=transcription-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcription-registry.js","sourceRoot":"","sources":["../../src/speculative/transcription-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,sEAAsE;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,sCAAsC,CAAA;AAE5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,oCAAoC,CAAA;AAE/E,MAAM,OAAO,GAAG,0BAA0B,2BAA2B,eAAe,CAAA;AAEpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,OAAO,mCAAmC,CAAA;AACpF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,OAAO,wCAAwC,CAAA;AAE1F,mFAAmF;AACnF,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAA;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAA;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,GAAG,0BAA0B,CAAA;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;cAgB/C,CAAA;AAEd;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,KAAK;IACpB,2EAA2E;IAC3E,uEAAuE;IACvE,aAAa,EAAE,mCAAmC;IAClD,wEAAwE;IACxE,gEAAgE;IAChE,UAAU,EAAE,aAAa;CACjB,CAAA;AAEV,+DAA+D;AAC/D,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,GAAG,MAAM,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { ParsedDsn } from './dsn.js';
2
+ /**
3
+ * The core's own Sentry project (`atomic-chat/atomic-chat-core`). A DSN is a public ingest key —
4
+ * every shipped binary carries it — so it lives in the source: the core reports by itself however it
5
+ * is run, as the app's daemon, as the CLI, or as a library inside another program.
6
+ */
7
+ export declare const CORE_SENTRY_DSN = "https://8a1c01c8fc1288ec3e008c639cb00488@o4511535281012736.ingest.us.sentry.io/4512125097476096";
8
+ export interface BakedTelemetry {
9
+ dsn?: string;
10
+ environment?: string;
11
+ gitSha?: string;
12
+ }
13
+ /** What the release build baked into this binary. Empty in development and in tests. */
14
+ export declare const BAKED_TELEMETRY: BakedTelemetry;
15
+ export interface TelemetryConfig {
16
+ dsn: ParsedDsn;
17
+ /** `production` for a release binary, `source` for anything built from source (a library user's). */
18
+ environment: string;
19
+ /** `atomic-chat-core@<version>`: one release per published core, like the app's git-SHA release. */
20
+ release: string;
21
+ /** The commit the binary was built from, when the build knew it. */
22
+ dist?: string;
23
+ }
24
+ /** A test runner: the built-in project must never hear from one. */
25
+ export declare function isTestRun(env: NodeJS.ProcessEnv): boolean;
26
+ /**
27
+ * Where error reports go, or null when they go nowhere. An explicit DSN (environment, then the
28
+ * build) wins; otherwise the core's own project, except under a test runner. Release builds say
29
+ * `production`, everything else `source`, so a library user's or a developer's build never mixes
30
+ * with shipped binaries. The `development` environment turns reporting off, as it does in the app.
31
+ */
32
+ export declare function resolveTelemetryConfig(input: {
33
+ baked: BakedTelemetry;
34
+ env: NodeJS.ProcessEnv;
35
+ version: string;
36
+ /** Set when the process itself runs under a test runner, whatever `env` was injected. */
37
+ testRun?: boolean;
38
+ }): TelemetryConfig | null;
@@ -0,0 +1,44 @@
1
+ import { parseDsn } from './dsn.js';
2
+ /**
3
+ * The core's own Sentry project (`atomic-chat/atomic-chat-core`). A DSN is a public ingest key —
4
+ * every shipped binary carries it — so it lives in the source: the core reports by itself however it
5
+ * is run, as the app's daemon, as the CLI, or as a library inside another program.
6
+ */
7
+ export const CORE_SENTRY_DSN = 'https://8a1c01c8fc1288ec3e008c639cb00488@o4511535281012736.ingest.us.sentry.io/4512125097476096';
8
+ /** What the release build baked into this binary. Empty in development and in tests. */
9
+ export const BAKED_TELEMETRY = {
10
+ ...(typeof __ATOMIC_CORE_SENTRY_DSN__ === 'string' ? { dsn: __ATOMIC_CORE_SENTRY_DSN__ } : {}),
11
+ ...(typeof __ATOMIC_CORE_SENTRY_ENVIRONMENT__ === 'string'
12
+ ? { environment: __ATOMIC_CORE_SENTRY_ENVIRONMENT__ }
13
+ : {}),
14
+ ...(typeof __ATOMIC_CORE_GIT_SHA__ === 'string' ? { gitSha: __ATOMIC_CORE_GIT_SHA__ } : {}),
15
+ };
16
+ /** A test runner: the built-in project must never hear from one. */
17
+ export function isTestRun(env) {
18
+ return env['VITEST'] !== undefined || env['NODE_ENV'] === 'test';
19
+ }
20
+ /**
21
+ * Where error reports go, or null when they go nowhere. An explicit DSN (environment, then the
22
+ * build) wins; otherwise the core's own project, except under a test runner. Release builds say
23
+ * `production`, everything else `source`, so a library user's or a developer's build never mixes
24
+ * with shipped binaries. The `development` environment turns reporting off, as it does in the app.
25
+ */
26
+ export function resolveTelemetryConfig(input) {
27
+ const { baked, env } = input;
28
+ const explicit = env['ATOMIC_CORE_SENTRY_DSN']?.trim() || baked.dsn;
29
+ const testRun = input.testRun === true || isTestRun(env);
30
+ const dsn = parseDsn(explicit || (testRun ? undefined : CORE_SENTRY_DSN));
31
+ if (!dsn)
32
+ return null;
33
+ const environment = env['ATOMIC_CORE_SENTRY_ENVIRONMENT']?.trim() || baked.environment || 'source';
34
+ if (environment === 'development')
35
+ return null;
36
+ const dist = baked.gitSha?.trim().slice(0, 12);
37
+ return {
38
+ dsn,
39
+ environment,
40
+ release: `atomic-chat-core@${input.version}`,
41
+ ...(dist ? { dist } : {}),
42
+ };
43
+ }
44
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/telemetry/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAC1B,iGAAiG,CAAA;AAenG,wFAAwF;AACxF,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,GAAG,CAAC,OAAO,0BAA0B,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,GAAG,CAAC,OAAO,kCAAkC,KAAK,QAAQ;QACxD,CAAC,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE;QACrD,CAAC,CAAC,EAAE,CAAC;IACP,GAAG,CAAC,OAAO,uBAAuB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5F,CAAA;AAYD,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,GAAsB;IAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAMtC;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,CAAA;IACnE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAA;IACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAA;IACzE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,WAAW,GAAG,GAAG,CAAC,gCAAgC,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAA;IAClG,IAAI,WAAW,KAAK,aAAa;QAAE,OAAO,IAAI,CAAA;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9C,OAAO;QACL,GAAG;QACH,WAAW;QACX,OAAO,EAAE,oBAAoB,KAAK,CAAC,OAAO,EAAE;QAC5C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1B,CAAA;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Who decided whether error reports are sent. */
2
+ export type ConsentSource = 'env' | 'host' | 'stored' | 'default';
3
+ /**
4
+ * What the environment says: `DO_NOT_TRACK` (the cross-tool convention) only ever turns reports off;
5
+ * `ATOMIC_CORE_TELEMETRY` turns them on or off. Undefined when neither says anything.
6
+ */
7
+ export declare function envConsent(env: NodeJS.ProcessEnv): boolean | undefined;
8
+ /**
9
+ * Whether reports are sent, and why. The core decides for itself, whoever embeds it: on unless
10
+ * something says off. An "off" from the environment is the user's own and beats everything; after it
11
+ * comes the host (the app's `productAnalytic` consent, `--telemetry`, `PUT /telemetry`), then an
12
+ * environment "on", then what the user stored with `atomic-chat-core telemetry on|off`.
13
+ */
14
+ export declare function resolveConsent(input: {
15
+ env?: boolean | undefined;
16
+ host?: boolean | undefined;
17
+ stored?: boolean | undefined;
18
+ }): {
19
+ enabled: boolean;
20
+ source: ConsentSource;
21
+ };
@@ -0,0 +1,35 @@
1
+ const TRUTHY = new Set(['1', 'true', 'on', 'yes']);
2
+ const FALSY = new Set(['0', 'false', 'off', 'no']);
3
+ /**
4
+ * What the environment says: `DO_NOT_TRACK` (the cross-tool convention) only ever turns reports off;
5
+ * `ATOMIC_CORE_TELEMETRY` turns them on or off. Undefined when neither says anything.
6
+ */
7
+ export function envConsent(env) {
8
+ const dnt = env['DO_NOT_TRACK']?.trim().toLowerCase();
9
+ if (dnt && TRUTHY.has(dnt))
10
+ return false;
11
+ const own = env['ATOMIC_CORE_TELEMETRY']?.trim().toLowerCase();
12
+ if (own && FALSY.has(own))
13
+ return false;
14
+ if (own && TRUTHY.has(own))
15
+ return true;
16
+ return undefined;
17
+ }
18
+ /**
19
+ * Whether reports are sent, and why. The core decides for itself, whoever embeds it: on unless
20
+ * something says off. An "off" from the environment is the user's own and beats everything; after it
21
+ * comes the host (the app's `productAnalytic` consent, `--telemetry`, `PUT /telemetry`), then an
22
+ * environment "on", then what the user stored with `atomic-chat-core telemetry on|off`.
23
+ */
24
+ export function resolveConsent(input) {
25
+ if (input.env === false)
26
+ return { enabled: false, source: 'env' };
27
+ if (input.host !== undefined)
28
+ return { enabled: input.host, source: 'host' };
29
+ if (input.env === true)
30
+ return { enabled: true, source: 'env' };
31
+ if (input.stored !== undefined)
32
+ return { enabled: input.stored, source: 'stored' };
33
+ return { enabled: true, source: 'default' };
34
+ }
35
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/telemetry/consent.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;AAClD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAElD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAsB;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACrD,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,MAAM,GAAG,GAAG,GAAG,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9D,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACvC,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAI9B;IACC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACjE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;IAC5E,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The reporter a core builds for itself, whoever embeds it: the app's daemon (`atomic-chat`), the CLI
3
+ * (`cli`) or a program that imports the library (`library`, or the name it gives). The host may say
4
+ * on or off; the environment and the user's stored choice are read here; without any of them the
5
+ * core reports (see `resolveConsent`).
6
+ */
7
+ import type { BakedTelemetry } from './config.js';
8
+ import type { SystemContext } from './envelope.js';
9
+ import { ErrorReporter } from './reporter.js';
10
+ /** What `node:os` says about this machine, without anything that names it or its user. */
11
+ export declare function systemContext(): SystemContext;
12
+ export interface CoreReporterInput {
13
+ /** `atomic-chat`, `cli`, `library`, or the embedding program's own name. */
14
+ host: string;
15
+ hostVersion?: string | undefined;
16
+ ownerScope?: 'app' | 'cli' | undefined;
17
+ /** The host's consent, when it gave one (`--telemetry on|off`, `AtomicCore.create({ telemetry })`). */
18
+ enabled?: boolean | undefined;
19
+ dataFolder: string;
20
+ /** `<data>/atomic-core/telemetry.json` (`DataLayout.core.telemetry`). */
21
+ telemetryFile: string;
22
+ homeDir: string;
23
+ env: NodeJS.ProcessEnv;
24
+ platform: NodeJS.Platform;
25
+ arch: string;
26
+ version: string;
27
+ warn: (message: string) => void;
28
+ baked?: BakedTelemetry | undefined;
29
+ fetch?: typeof fetch | undefined;
30
+ system?: SystemContext | undefined;
31
+ /** Overrides the check of the real process for a test runner (tests of this very function). */
32
+ testRun?: boolean | undefined;
33
+ }
34
+ export declare function createCoreReporter(input: CoreReporterInput): Promise<ErrorReporter>;
35
+ /** What the CLI prints once per data folder, the first time the core reports because nobody said no. */
36
+ export declare const FIRST_RUN_NOTICE: string;
37
+ /**
38
+ * Whether to show `FIRST_RUN_NOTICE` now: reports would go out, only because nobody said no, and the
39
+ * notice was never shown for this data folder. Showing it is recorded.
40
+ */
41
+ export declare function takeFirstRunNotice(input: {
42
+ telemetryFile: string;
43
+ env: NodeJS.ProcessEnv;
44
+ version: string;
45
+ baked?: BakedTelemetry | undefined;
46
+ testRun?: boolean | undefined;
47
+ }): Promise<boolean>;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * The reporter a core builds for itself, whoever embeds it: the app's daemon (`atomic-chat`), the CLI
3
+ * (`cli`) or a program that imports the library (`library`, or the name it gives). The host may say
4
+ * on or off; the environment and the user's stored choice are read here; without any of them the
5
+ * core reports (see `resolveConsent`).
6
+ */
7
+ import { cpus, release, totalmem } from 'node:os';
8
+ import { BAKED_TELEMETRY, isTestRun, resolveTelemetryConfig } from './config.js';
9
+ import { envConsent, resolveConsent } from './consent.js';
10
+ import { ErrorReporter } from './reporter.js';
11
+ import { ensureInstallId, readTelemetryFile, writeTelemetryFile } from './store.js';
12
+ /** What `node:os` says about this machine, without anything that names it or its user. */
13
+ export function systemContext() {
14
+ const cpu = cpus()[0]?.model?.trim();
15
+ return {
16
+ osRelease: release(),
17
+ ...(cpu ? { cpuModel: cpu } : {}),
18
+ memoryMb: Math.round(totalmem() / (1024 * 1024)),
19
+ };
20
+ }
21
+ export async function createCoreReporter(input) {
22
+ const config = resolveTelemetryConfig({
23
+ baked: input.baked ?? BAKED_TELEMETRY,
24
+ env: input.env,
25
+ version: input.version,
26
+ testRun: input.testRun ?? isTestRun(process.env),
27
+ });
28
+ const stored = await readTelemetryFile(input.telemetryFile);
29
+ // The install id is written only when something could be reported with it.
30
+ const installId = config ? await ensureInstallId(input.telemetryFile, stored) : undefined;
31
+ return new ErrorReporter({
32
+ config,
33
+ coreVersion: input.version,
34
+ platform: input.platform,
35
+ arch: input.arch,
36
+ ownerScope: input.ownerScope,
37
+ host: input.host,
38
+ hostVersion: input.hostVersion,
39
+ enabled: input.enabled,
40
+ envConsent: envConsent(input.env),
41
+ storedConsent: stored.enabled,
42
+ installId,
43
+ system: input.system ?? systemContext(),
44
+ scrub: { dataFolder: input.dataFolder, homeDir: input.homeDir },
45
+ fetch: input.fetch,
46
+ onSendError: input.warn,
47
+ });
48
+ }
49
+ /** What the CLI prints once per data folder, the first time the core reports because nobody said no. */
50
+ export const FIRST_RUN_NOTICE = 'Atomic Chat core sends anonymous crash and error reports (no prompts, file paths or personal data) ' +
51
+ 'to help fix failures. Turn them off with `atomic-chat-core telemetry off` or DO_NOT_TRACK=1.\n';
52
+ /**
53
+ * Whether to show `FIRST_RUN_NOTICE` now: reports would go out, only because nobody said no, and the
54
+ * notice was never shown for this data folder. Showing it is recorded.
55
+ */
56
+ export async function takeFirstRunNotice(input) {
57
+ const config = resolveTelemetryConfig({
58
+ baked: input.baked ?? BAKED_TELEMETRY,
59
+ env: input.env,
60
+ version: input.version,
61
+ testRun: input.testRun ?? isTestRun(process.env),
62
+ });
63
+ if (!config)
64
+ return false;
65
+ const stored = await readTelemetryFile(input.telemetryFile);
66
+ if (stored.notice_shown ||
67
+ resolveConsent({ env: envConsent(input.env), stored: stored.enabled }).source !== 'default')
68
+ return false;
69
+ await writeTelemetryFile(input.telemetryFile, { ...stored, notice_shown: true });
70
+ return true;
71
+ }
72
+ //# sourceMappingURL=core-reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-reporter.js","sourceRoot":"","sources":["../../src/telemetry/core-reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEhF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEnF,0FAA0F;AAC1F,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACpC,OAAO;QACL,SAAS,EAAE,OAAO,EAAE;QACpB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KACjD,CAAA;AACH,CAAC;AAyBD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAwB;IAC/D,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe;QACrC,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;KACjD,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC3D,2EAA2E;IAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzF,OAAO,IAAI,aAAa,CAAC;QACvB,MAAM;QACN,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC,OAAO;QAC7B,SAAS;QACT,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE;QACvC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QAC/D,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,WAAW,EAAE,KAAK,CAAC,IAAI;KACxB,CAAC,CAAA;AACJ,CAAC;AAED,wGAAwG;AACxG,MAAM,CAAC,MAAM,gBAAgB,GAC3B,qGAAqG;IACrG,gGAAgG,CAAA;AAElG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAMxC;IACC,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,eAAe;QACrC,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;KACjD,CAAC,CAAA;IACF,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC3D,IACE,MAAM,CAAC,YAAY;QACnB,cAAc,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS;QAE3F,OAAO,KAAK,CAAA;IACd,MAAM,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;IAChF,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The process-level side of error reporting for a core that owns its process — the app's daemon
3
+ * and the CLI's: the `--telemetry` flag, and the handlers that report what nothing else caught.
4
+ * A program that imports the library keeps its own process and gets none of this.
5
+ */
6
+ import type { ProcessFailureSource } from './reports.js';
7
+ import type { ErrorSink } from './types.js';
8
+ /**
9
+ * `daemon --telemetry on|off`: the host's consent. Absent means the host said nothing, and the core
10
+ * decides for itself (on, unless the environment or the user's stored choice says off).
11
+ */
12
+ export declare function parseTelemetryFlag(value: string | undefined): boolean | undefined;
13
+ export interface FatalDeps {
14
+ reporter: ErrorSink & {
15
+ flush(timeoutMs?: number): Promise<void>;
16
+ };
17
+ writeStderr: (text: string) => unknown;
18
+ exit: (code: number) => unknown;
19
+ flushTimeoutMs?: number;
20
+ }
21
+ /**
22
+ * The end of the daemon: say why on stderr (the app keeps it as `core-start.log`), report it, give the
23
+ * report up to two seconds to leave, exit 1 — the exit code an uncaught throw has without handlers.
24
+ */
25
+ export declare function failFatally(source: ProcessFailureSource, error: unknown, deps: FatalDeps): Promise<void>;
26
+ export interface ProcessEvents {
27
+ on(event: 'uncaughtException' | 'unhandledRejection', listener: (error: unknown) => void): unknown;
28
+ }
29
+ /**
30
+ * Report an uncaught exception or an unhandled rejection, then exit 1 either way. Without this a
31
+ * capture-only rejection handler would leave Bun running (and exiting 0 later) where it died before.
32
+ * A second failure while the first is being reported does not start another exit.
33
+ */
34
+ export declare function installProcessHandlers(target: ProcessEvents, deps: FatalDeps): void;
35
+ /** `installProcessHandlers` for one process, given where its stderr goes and how it exits. */
36
+ export declare function processHandlersFor(target: ProcessEvents, writeStderr: (text: string) => unknown, exit: (code: number) => unknown): (deps: Omit<FatalDeps, 'writeStderr' | 'exit'>) => void;
37
+ /** A core logger that also leaves its warn and error lines as the breadcrumbs of the next report. */
38
+ export declare function breadcrumbLogger(reporter: {
39
+ breadcrumb(level: 'warning' | 'error', message: string): void;
40
+ }, write: (level: 'info' | 'warn' | 'error', message: string) => void): (level: 'info' | 'warn' | 'error', message: string) => void;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * The process-level side of error reporting for a core that owns its process — the app's daemon
3
+ * and the CLI's: the `--telemetry` flag, and the handlers that report what nothing else caught.
4
+ * A program that imports the library keeps its own process and gets none of this.
5
+ */
6
+ import { inspect } from 'node:util';
7
+ import { processFailureReport } from './reports.js';
8
+ /**
9
+ * `daemon --telemetry on|off`: the host's consent. Absent means the host said nothing, and the core
10
+ * decides for itself (on, unless the environment or the user's stored choice says off).
11
+ */
12
+ export function parseTelemetryFlag(value) {
13
+ if (value === undefined)
14
+ return undefined;
15
+ if (value === 'on')
16
+ return true;
17
+ if (value === 'off')
18
+ return false;
19
+ throw new Error(`--telemetry takes "on" or "off", not "${value}".`);
20
+ }
21
+ /**
22
+ * The end of the daemon: say why on stderr (the app keeps it as `core-start.log`), report it, give the
23
+ * report up to two seconds to leave, exit 1 — the exit code an uncaught throw has without handlers.
24
+ */
25
+ export async function failFatally(source, error, deps) {
26
+ try {
27
+ deps.writeStderr(`${inspect(error)}\n`);
28
+ }
29
+ catch {
30
+ // stderr is gone; the report is all that is left
31
+ }
32
+ const report = processFailureReport(source, error);
33
+ if (report) {
34
+ deps.reporter.capture(report);
35
+ await deps.reporter.flush(deps.flushTimeoutMs ?? 2_000);
36
+ }
37
+ deps.exit(1);
38
+ }
39
+ /**
40
+ * Report an uncaught exception or an unhandled rejection, then exit 1 either way. Without this a
41
+ * capture-only rejection handler would leave Bun running (and exiting 0 later) where it died before.
42
+ * A second failure while the first is being reported does not start another exit.
43
+ */
44
+ export function installProcessHandlers(target, deps) {
45
+ let failing = false;
46
+ const handle = (source) => (error) => {
47
+ if (failing)
48
+ return;
49
+ failing = true;
50
+ void failFatally(source, error, deps);
51
+ };
52
+ target.on('uncaughtException', handle('uncaught_exception'));
53
+ target.on('unhandledRejection', handle('unhandled_rejection'));
54
+ }
55
+ /** `installProcessHandlers` for one process, given where its stderr goes and how it exits. */
56
+ export function processHandlersFor(target, writeStderr, exit) {
57
+ return (deps) => installProcessHandlers(target, { ...deps, writeStderr, exit });
58
+ }
59
+ /** A core logger that also leaves its warn and error lines as the breadcrumbs of the next report. */
60
+ export function breadcrumbLogger(reporter, write) {
61
+ return (level, message) => {
62
+ write(level, message);
63
+ if (level !== 'info')
64
+ reporter.breadcrumb(level === 'warn' ? 'warning' : 'error', message);
65
+ };
66
+ }
67
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/telemetry/daemon.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAInD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACjC,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,IAAI,CAAC,CAAA;AACrE,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAA4B,EAC5B,KAAc,EACd,IAAe;IAEf,IAAI,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC7B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,CAAA;IACzD,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACd,CAAC;AAMD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAqB,EAAE,IAAe;IAC3E,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,MAAM,GAAG,CAAC,MAA4B,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE;QAClE,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,IAAI,CAAA;QACd,KAAK,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC,CAAA;IACD,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC5D,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,WAAsC,EACtC,IAA+B;IAE/B,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;AACjF,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,gBAAgB,CAC9B,QAA2E,EAC3E,KAAkE;IAElE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QACrB,IAAI,KAAK,KAAK,MAAM;YAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5F,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** A Sentry DSN split into what an envelope POST needs. */
2
+ export interface ParsedDsn {
3
+ /** The original DSN; it goes into the envelope header. */
4
+ dsn: string;
5
+ publicKey: string;
6
+ host: string;
7
+ projectId: string;
8
+ /** `<scheme>//<host>[<path>]/api/<project>/envelope/` */
9
+ envelopeUrl: string;
10
+ }
11
+ /**
12
+ * Parse `<scheme>://<public key>@<host>[/<path>]/<project id>`. Returns null for anything else, so a
13
+ * malformed secret leaves reporting off instead of throwing at start-up.
14
+ */
15
+ export declare function parseDsn(raw: string | undefined): ParsedDsn | null;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Parse `<scheme>://<public key>@<host>[/<path>]/<project id>`. Returns null for anything else, so a
3
+ * malformed secret leaves reporting off instead of throwing at start-up.
4
+ */
5
+ export function parseDsn(raw) {
6
+ if (!raw)
7
+ return null;
8
+ let url;
9
+ try {
10
+ url = new URL(raw.trim());
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ if (url.protocol !== 'https:' && url.protocol !== 'http:')
16
+ return null;
17
+ if (!url.username)
18
+ return null;
19
+ const segments = url.pathname.split('/').filter(Boolean);
20
+ const projectId = segments.pop();
21
+ if (!projectId || !/^\d+$/.test(projectId))
22
+ return null;
23
+ const basePath = segments.length ? `/${segments.join('/')}` : '';
24
+ return {
25
+ dsn: raw.trim(),
26
+ publicKey: decodeURIComponent(url.username),
27
+ host: url.host,
28
+ projectId,
29
+ envelopeUrl: `${url.protocol}//${url.host}${basePath}/api/${projectId}/envelope/`,
30
+ };
31
+ }
32
+ //# sourceMappingURL=dsn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsn.js","sourceRoot":"","sources":["../../src/telemetry/dsn.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAuB;IAC9C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IACtE,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;IAChC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAChE,OAAO;QACL,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;QACf,SAAS,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3C,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS;QACT,WAAW,EAAE,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,GAAG,QAAQ,QAAQ,SAAS,YAAY;KAClF,CAAA;AACH,CAAC"}
@@ -0,0 +1,97 @@
1
+ import type { TelemetryConfig } from './config.js';
2
+ import type { ParsedDsn } from './dsn.js';
3
+ import type { ScrubContext } from './scrub.js';
4
+ import type { StackFrame } from './stack.js';
5
+ import type { ErrorReport, ReportLevel } from './types.js';
6
+ export interface Breadcrumb {
7
+ timestamp: number;
8
+ level: 'warning' | 'error';
9
+ message: string;
10
+ }
11
+ /** What the core finds out about the machine by itself (`node:os`), host or no host. */
12
+ export interface SystemContext {
13
+ /** The kernel release (`os.release()`). */
14
+ osRelease?: string | undefined;
15
+ cpuModel?: string | undefined;
16
+ memoryMb?: number | undefined;
17
+ }
18
+ /** Everything about the process an event is stamped with. */
19
+ export interface EventContext {
20
+ config: TelemetryConfig;
21
+ eventId: string;
22
+ /** Seconds since the epoch. */
23
+ timestamp: number;
24
+ platform: NodeJS.Platform;
25
+ arch: string;
26
+ coreVersion: string;
27
+ ownerScope?: string | undefined;
28
+ /** Who embeds the core (`atomic-chat`, `cli`, `library`, …) and its version when it said. */
29
+ host?: string | undefined;
30
+ hostVersion?: string | undefined;
31
+ /** The host's anonymous user id, else this data folder's install id: the only user identifier. */
32
+ userId?: string | undefined;
33
+ /** Already sanitised tags from the host. They win over the core's own on the same key. */
34
+ appTags: Record<string, string>;
35
+ system?: SystemContext | undefined;
36
+ breadcrumbs: readonly Breadcrumb[];
37
+ scrub: ScrubContext;
38
+ }
39
+ export interface SentryException {
40
+ type: string;
41
+ value: string;
42
+ mechanism: {
43
+ type: string;
44
+ handled: boolean;
45
+ };
46
+ stacktrace?: {
47
+ frames: StackFrame[];
48
+ };
49
+ }
50
+ export interface SentryEvent {
51
+ event_id: string;
52
+ timestamp: number;
53
+ platform: 'node';
54
+ level: ReportLevel;
55
+ logger: 'atomic-chat-core';
56
+ release: string;
57
+ dist?: string;
58
+ environment: string;
59
+ sdk: {
60
+ name: string;
61
+ version: string;
62
+ };
63
+ user: {
64
+ id?: string;
65
+ ip_address: null;
66
+ };
67
+ contexts: {
68
+ os: {
69
+ name: string;
70
+ version?: string;
71
+ };
72
+ device: {
73
+ arch: string;
74
+ memory_size?: number;
75
+ };
76
+ };
77
+ tags: Record<string, string>;
78
+ fingerprint?: string[];
79
+ exception: {
80
+ values: SentryException[];
81
+ };
82
+ breadcrumbs?: {
83
+ values: Array<Breadcrumb & {
84
+ category: 'log';
85
+ }>;
86
+ };
87
+ extra?: Record<string, string>;
88
+ }
89
+ /**
90
+ * The Sentry event for one report. Zero-PII by construction: no server name, no IP, no local
91
+ * variables, no URL or body; every string passes the scrubber; tags are allow-listed and short.
92
+ */
93
+ export declare function buildEvent(report: ErrorReport, ctx: EventContext): SentryEvent;
94
+ /** A single-event envelope: envelope header, item header, payload, newline-separated. */
95
+ export declare function buildEnvelope(event: SentryEvent, dsn: ParsedDsn, sentAt: Date): string;
96
+ /** The `X-Sentry-Auth` header of an envelope POST. */
97
+ export declare function authHeader(dsn: ParsedDsn, version: string): string;