nomoreide 0.1.103 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/README.md +72 -20
  2. package/bin/nomoreide.js +82 -0
  3. package/package.json +24 -90
  4. package/dist/cli/agents.d.ts +0 -2
  5. package/dist/cli/agents.js +0 -43
  6. package/dist/cli/agents.js.map +0 -1
  7. package/dist/cli/commands.d.ts +0 -11
  8. package/dist/cli/commands.js +0 -235
  9. package/dist/cli/commands.js.map +0 -1
  10. package/dist/cli/daemon.d.ts +0 -15
  11. package/dist/cli/daemon.js +0 -139
  12. package/dist/cli/daemon.js.map +0 -1
  13. package/dist/cli/database.d.ts +0 -2
  14. package/dist/cli/database.js +0 -145
  15. package/dist/cli/database.js.map +0 -1
  16. package/dist/cli/errors.d.ts +0 -2
  17. package/dist/cli/errors.js +0 -3
  18. package/dist/cli/errors.js.map +0 -1
  19. package/dist/cli/flags.d.ts +0 -1
  20. package/dist/cli/flags.js +0 -19
  21. package/dist/cli/flags.js.map +0 -1
  22. package/dist/cli/git.d.ts +0 -2
  23. package/dist/cli/git.js +0 -113
  24. package/dist/cli/git.js.map +0 -1
  25. package/dist/cli/profile.d.ts +0 -2
  26. package/dist/cli/profile.js +0 -171
  27. package/dist/cli/profile.js.map +0 -1
  28. package/dist/core/agent-context.d.ts +0 -9
  29. package/dist/core/agent-context.js +0 -43
  30. package/dist/core/agent-context.js.map +0 -1
  31. package/dist/core/agent-env/antigravity-reader.d.ts +0 -7
  32. package/dist/core/agent-env/antigravity-reader.js +0 -86
  33. package/dist/core/agent-env/antigravity-reader.js.map +0 -1
  34. package/dist/core/agent-env/availability.d.ts +0 -6
  35. package/dist/core/agent-env/availability.js +0 -79
  36. package/dist/core/agent-env/availability.js.map +0 -1
  37. package/dist/core/agent-env/claude-reader.d.ts +0 -7
  38. package/dist/core/agent-env/claude-reader.js +0 -101
  39. package/dist/core/agent-env/claude-reader.js.map +0 -1
  40. package/dist/core/agent-env/codex-reader.d.ts +0 -11
  41. package/dist/core/agent-env/codex-reader.js +0 -164
  42. package/dist/core/agent-env/codex-reader.js.map +0 -1
  43. package/dist/core/agent-env/index.d.ts +0 -9
  44. package/dist/core/agent-env/index.js +0 -29
  45. package/dist/core/agent-env/index.js.map +0 -1
  46. package/dist/core/agent-env/managed-plugins.d.ts +0 -18
  47. package/dist/core/agent-env/managed-plugins.js +0 -68
  48. package/dist/core/agent-env/managed-plugins.js.map +0 -1
  49. package/dist/core/agent-env/plugin-reader.d.ts +0 -9
  50. package/dist/core/agent-env/plugin-reader.js +0 -174
  51. package/dist/core/agent-env/plugin-reader.js.map +0 -1
  52. package/dist/core/agent-env/shared.d.ts +0 -26
  53. package/dist/core/agent-env/shared.js +0 -116
  54. package/dist/core/agent-env/shared.js.map +0 -1
  55. package/dist/core/agent-env/types.d.ts +0 -66
  56. package/dist/core/agent-env/types.js +0 -7
  57. package/dist/core/agent-env/types.js.map +0 -1
  58. package/dist/core/agent-env-actions.d.ts +0 -117
  59. package/dist/core/agent-env-actions.js +0 -273
  60. package/dist/core/agent-env-actions.js.map +0 -1
  61. package/dist/core/agent-env-plugin-uninstall.d.ts +0 -11
  62. package/dist/core/agent-env-plugin-uninstall.js +0 -189
  63. package/dist/core/agent-env-plugin-uninstall.js.map +0 -1
  64. package/dist/core/agent-env-writers.d.ts +0 -71
  65. package/dist/core/agent-env-writers.js +0 -632
  66. package/dist/core/agent-env-writers.js.map +0 -1
  67. package/dist/core/agent-profiles/apply.d.ts +0 -57
  68. package/dist/core/agent-profiles/apply.js +0 -209
  69. package/dist/core/agent-profiles/apply.js.map +0 -1
  70. package/dist/core/agent-profiles/builtin.d.ts +0 -8
  71. package/dist/core/agent-profiles/builtin.js +0 -33
  72. package/dist/core/agent-profiles/builtin.js.map +0 -1
  73. package/dist/core/agent-profiles/credentials.d.ts +0 -26
  74. package/dist/core/agent-profiles/credentials.js +0 -151
  75. package/dist/core/agent-profiles/credentials.js.map +0 -1
  76. package/dist/core/agent-profiles/debug-setup.d.ts +0 -18
  77. package/dist/core/agent-profiles/debug-setup.js +0 -237
  78. package/dist/core/agent-profiles/debug-setup.js.map +0 -1
  79. package/dist/core/agent-profiles/index.d.ts +0 -18
  80. package/dist/core/agent-profiles/index.js +0 -19
  81. package/dist/core/agent-profiles/index.js.map +0 -1
  82. package/dist/core/agent-profiles/plugin-apply.d.ts +0 -16
  83. package/dist/core/agent-profiles/plugin-apply.js +0 -383
  84. package/dist/core/agent-profiles/plugin-apply.js.map +0 -1
  85. package/dist/core/agent-profiles/plugin-bundle.d.ts +0 -6
  86. package/dist/core/agent-profiles/plugin-bundle.js +0 -32
  87. package/dist/core/agent-profiles/plugin-bundle.js.map +0 -1
  88. package/dist/core/agent-profiles/publication.d.ts +0 -105
  89. package/dist/core/agent-profiles/publication.js +0 -126
  90. package/dist/core/agent-profiles/publication.js.map +0 -1
  91. package/dist/core/agent-profiles/registry-auth.d.ts +0 -25
  92. package/dist/core/agent-profiles/registry-auth.js +0 -78
  93. package/dist/core/agent-profiles/registry-auth.js.map +0 -1
  94. package/dist/core/agent-profiles/registry-client.d.ts +0 -98
  95. package/dist/core/agent-profiles/registry-client.js +0 -109
  96. package/dist/core/agent-profiles/registry-client.js.map +0 -1
  97. package/dist/core/agent-profiles/registry-config.d.ts +0 -62
  98. package/dist/core/agent-profiles/registry-config.js +0 -221
  99. package/dist/core/agent-profiles/registry-config.js.map +0 -1
  100. package/dist/core/agent-profiles/registry-transfer.d.ts +0 -42
  101. package/dist/core/agent-profiles/registry-transfer.js +0 -133
  102. package/dist/core/agent-profiles/registry-transfer.js.map +0 -1
  103. package/dist/core/agent-profiles/store.d.ts +0 -62
  104. package/dist/core/agent-profiles/store.js +0 -479
  105. package/dist/core/agent-profiles/store.js.map +0 -1
  106. package/dist/core/agent-profiles/transfer.d.ts +0 -27
  107. package/dist/core/agent-profiles/transfer.js +0 -354
  108. package/dist/core/agent-profiles/transfer.js.map +0 -1
  109. package/dist/core/agent-profiles/types.d.ts +0 -364
  110. package/dist/core/agent-profiles/types.js +0 -79
  111. package/dist/core/agent-profiles/types.js.map +0 -1
  112. package/dist/core/agent-runtime.d.ts +0 -114
  113. package/dist/core/agent-runtime.js +0 -494
  114. package/dist/core/agent-runtime.js.map +0 -1
  115. package/dist/core/agent-sessions.d.ts +0 -46
  116. package/dist/core/agent-sessions.js +0 -109
  117. package/dist/core/agent-sessions.js.map +0 -1
  118. package/dist/core/agent-settings.d.ts +0 -31
  119. package/dist/core/agent-settings.js +0 -129
  120. package/dist/core/agent-settings.js.map +0 -1
  121. package/dist/core/agent-terminal.d.ts +0 -22
  122. package/dist/core/agent-terminal.js +0 -62
  123. package/dist/core/agent-terminal.js.map +0 -1
  124. package/dist/core/agent-transcripts.d.ts +0 -29
  125. package/dist/core/agent-transcripts.js +0 -281
  126. package/dist/core/agent-transcripts.js.map +0 -1
  127. package/dist/core/app-settings.d.ts +0 -74
  128. package/dist/core/app-settings.js +0 -118
  129. package/dist/core/app-settings.js.map +0 -1
  130. package/dist/core/app-version.d.ts +0 -2
  131. package/dist/core/app-version.js +0 -16
  132. package/dist/core/app-version.js.map +0 -1
  133. package/dist/core/approval-broker.d.ts +0 -29
  134. package/dist/core/approval-broker.js +0 -48
  135. package/dist/core/approval-broker.js.map +0 -1
  136. package/dist/core/claude-settings.d.ts +0 -18
  137. package/dist/core/claude-settings.js +0 -48
  138. package/dist/core/claude-settings.js.map +0 -1
  139. package/dist/core/cloudflare-actions.d.ts +0 -90
  140. package/dist/core/cloudflare-actions.js +0 -178
  141. package/dist/core/cloudflare-actions.js.map +0 -1
  142. package/dist/core/cloudflare-auth.d.ts +0 -61
  143. package/dist/core/cloudflare-auth.js +0 -149
  144. package/dist/core/cloudflare-auth.js.map +0 -1
  145. package/dist/core/cloudflare-context.d.ts +0 -2
  146. package/dist/core/cloudflare-context.js +0 -106
  147. package/dist/core/cloudflare-context.js.map +0 -1
  148. package/dist/core/cloudflare-manager.d.ts +0 -256
  149. package/dist/core/cloudflare-manager.js +0 -409
  150. package/dist/core/cloudflare-manager.js.map +0 -1
  151. package/dist/core/cloudflare-provider.d.ts +0 -64
  152. package/dist/core/cloudflare-provider.js +0 -343
  153. package/dist/core/cloudflare-provider.js.map +0 -1
  154. package/dist/core/config-files.d.ts +0 -27
  155. package/dist/core/config-files.js +0 -154
  156. package/dist/core/config-files.js.map +0 -1
  157. package/dist/core/config-store.d.ts +0 -181
  158. package/dist/core/config-store.js +0 -1026
  159. package/dist/core/config-store.js.map +0 -1
  160. package/dist/core/context-library.d.ts +0 -53
  161. package/dist/core/context-library.js +0 -605
  162. package/dist/core/context-library.js.map +0 -1
  163. package/dist/core/context-types.d.ts +0 -83
  164. package/dist/core/context-types.js +0 -9
  165. package/dist/core/context-types.js.map +0 -1
  166. package/dist/core/daemon-client.d.ts +0 -70
  167. package/dist/core/daemon-client.js +0 -136
  168. package/dist/core/daemon-client.js.map +0 -1
  169. package/dist/core/daemon-lifecycle.d.ts +0 -59
  170. package/dist/core/daemon-lifecycle.js +0 -147
  171. package/dist/core/daemon-lifecycle.js.map +0 -1
  172. package/dist/core/db/catalog.d.ts +0 -57
  173. package/dist/core/db/catalog.js +0 -38
  174. package/dist/core/db/catalog.js.map +0 -1
  175. package/dist/core/db/data-masking.d.ts +0 -3
  176. package/dist/core/db/data-masking.js +0 -14
  177. package/dist/core/db/data-masking.js.map +0 -1
  178. package/dist/core/db/driver.d.ts +0 -151
  179. package/dist/core/db/driver.js +0 -209
  180. package/dist/core/db/driver.js.map +0 -1
  181. package/dist/core/db/export.d.ts +0 -17
  182. package/dist/core/db/export.js +0 -67
  183. package/dist/core/db/export.js.map +0 -1
  184. package/dist/core/db/mysql-driver.d.ts +0 -33
  185. package/dist/core/db/mysql-driver.js +0 -364
  186. package/dist/core/db/mysql-driver.js.map +0 -1
  187. package/dist/core/db/postgres-driver.d.ts +0 -34
  188. package/dist/core/db/postgres-driver.js +0 -430
  189. package/dist/core/db/postgres-driver.js.map +0 -1
  190. package/dist/core/db/sqlite-driver.d.ts +0 -30
  191. package/dist/core/db/sqlite-driver.js +0 -301
  192. package/dist/core/db/sqlite-driver.js.map +0 -1
  193. package/dist/core/db-peek.d.ts +0 -99
  194. package/dist/core/db-peek.js +0 -322
  195. package/dist/core/db-peek.js.map +0 -1
  196. package/dist/core/db-write.d.ts +0 -45
  197. package/dist/core/db-write.js +0 -190
  198. package/dist/core/db-write.js.map +0 -1
  199. package/dist/core/docker-inspect.d.ts +0 -34
  200. package/dist/core/docker-inspect.js +0 -108
  201. package/dist/core/docker-inspect.js.map +0 -1
  202. package/dist/core/docker-resources.d.ts +0 -28
  203. package/dist/core/docker-resources.js +0 -59
  204. package/dist/core/docker-resources.js.map +0 -1
  205. package/dist/core/docker-service-runner.d.ts +0 -21
  206. package/dist/core/docker-service-runner.js +0 -80
  207. package/dist/core/docker-service-runner.js.map +0 -1
  208. package/dist/core/docker-stats.d.ts +0 -24
  209. package/dist/core/docker-stats.js +0 -76
  210. package/dist/core/docker-stats.js.map +0 -1
  211. package/dist/core/docker.d.ts +0 -75
  212. package/dist/core/docker.js +0 -219
  213. package/dist/core/docker.js.map +0 -1
  214. package/dist/core/env-file.d.ts +0 -24
  215. package/dist/core/env-file.js +0 -123
  216. package/dist/core/env-file.js.map +0 -1
  217. package/dist/core/env-runtime.d.ts +0 -32
  218. package/dist/core/env-runtime.js +0 -42
  219. package/dist/core/env-runtime.js.map +0 -1
  220. package/dist/core/error-inbox.d.ts +0 -91
  221. package/dist/core/error-inbox.js +0 -292
  222. package/dist/core/error-inbox.js.map +0 -1
  223. package/dist/core/extensions.d.ts +0 -78
  224. package/dist/core/extensions.js +0 -41
  225. package/dist/core/extensions.js.map +0 -1
  226. package/dist/core/external-terminal.d.ts +0 -60
  227. package/dist/core/external-terminal.js +0 -429
  228. package/dist/core/external-terminal.js.map +0 -1
  229. package/dist/core/fix-loop.d.ts +0 -55
  230. package/dist/core/fix-loop.js +0 -73
  231. package/dist/core/fix-loop.js.map +0 -1
  232. package/dist/core/git-actions.d.ts +0 -69
  233. package/dist/core/git-actions.js +0 -161
  234. package/dist/core/git-actions.js.map +0 -1
  235. package/dist/core/git-graph-layout.d.ts +0 -34
  236. package/dist/core/git-graph-layout.js +0 -94
  237. package/dist/core/git-graph-layout.js.map +0 -1
  238. package/dist/core/git-identity.d.ts +0 -78
  239. package/dist/core/git-identity.js +0 -178
  240. package/dist/core/git-identity.js.map +0 -1
  241. package/dist/core/git-manager.d.ts +0 -129
  242. package/dist/core/git-manager.js +0 -509
  243. package/dist/core/git-manager.js.map +0 -1
  244. package/dist/core/git-worktrees.d.ts +0 -35
  245. package/dist/core/git-worktrees.js +0 -142
  246. package/dist/core/git-worktrees.js.map +0 -1
  247. package/dist/core/github-auth.d.ts +0 -28
  248. package/dist/core/github-auth.js +0 -134
  249. package/dist/core/github-auth.js.map +0 -1
  250. package/dist/core/github-context.d.ts +0 -12
  251. package/dist/core/github-context.js +0 -36
  252. package/dist/core/github-context.js.map +0 -1
  253. package/dist/core/github-manager.d.ts +0 -223
  254. package/dist/core/github-manager.js +0 -285
  255. package/dist/core/github-manager.js.map +0 -1
  256. package/dist/core/host-metrics.d.ts +0 -41
  257. package/dist/core/host-metrics.js +0 -93
  258. package/dist/core/host-metrics.js.map +0 -1
  259. package/dist/core/http-inspector.d.ts +0 -20
  260. package/dist/core/http-inspector.js +0 -106
  261. package/dist/core/http-inspector.js.map +0 -1
  262. package/dist/core/jetbrains-import.d.ts +0 -85
  263. package/dist/core/jetbrains-import.js +0 -599
  264. package/dist/core/jetbrains-import.js.map +0 -1
  265. package/dist/core/log-sources.d.ts +0 -21
  266. package/dist/core/log-sources.js +0 -219
  267. package/dist/core/log-sources.js.map +0 -1
  268. package/dist/core/log-store.d.ts +0 -33
  269. package/dist/core/log-store.js +0 -94
  270. package/dist/core/log-store.js.map +0 -1
  271. package/dist/core/log-volume.d.ts +0 -41
  272. package/dist/core/log-volume.js +0 -81
  273. package/dist/core/log-volume.js.map +0 -1
  274. package/dist/core/mcp-auth.d.ts +0 -27
  275. package/dist/core/mcp-auth.js +0 -90
  276. package/dist/core/mcp-auth.js.map +0 -1
  277. package/dist/core/metrics-store.d.ts +0 -74
  278. package/dist/core/metrics-store.js +0 -187
  279. package/dist/core/metrics-store.js.map +0 -1
  280. package/dist/core/one-time-skills.d.ts +0 -27
  281. package/dist/core/one-time-skills.js +0 -185
  282. package/dist/core/one-time-skills.js.map +0 -1
  283. package/dist/core/port-utils.d.ts +0 -23
  284. package/dist/core/port-utils.js +0 -83
  285. package/dist/core/port-utils.js.map +0 -1
  286. package/dist/core/process-manager.d.ts +0 -99
  287. package/dist/core/process-manager.js +0 -738
  288. package/dist/core/process-manager.js.map +0 -1
  289. package/dist/core/process-tree.d.ts +0 -17
  290. package/dist/core/process-tree.js +0 -64
  291. package/dist/core/process-tree.js.map +0 -1
  292. package/dist/core/project-overview.d.ts +0 -52
  293. package/dist/core/project-overview.js +0 -122
  294. package/dist/core/project-overview.js.map +0 -1
  295. package/dist/core/providers/credentials.d.ts +0 -93
  296. package/dist/core/providers/credentials.js +0 -88
  297. package/dist/core/providers/credentials.js.map +0 -1
  298. package/dist/core/providers/deploy-provider.d.ts +0 -327
  299. package/dist/core/providers/deploy-provider.js +0 -25
  300. package/dist/core/providers/deploy-provider.js.map +0 -1
  301. package/dist/core/providers/egress.d.ts +0 -58
  302. package/dist/core/providers/egress.js +0 -115
  303. package/dist/core/providers/egress.js.map +0 -1
  304. package/dist/core/providers/host-bridge.d.ts +0 -20
  305. package/dist/core/providers/host-bridge.js +0 -57
  306. package/dist/core/providers/host-bridge.js.map +0 -1
  307. package/dist/core/providers/host-provider.d.ts +0 -160
  308. package/dist/core/providers/host-provider.js +0 -2
  309. package/dist/core/providers/host-provider.js.map +0 -1
  310. package/dist/core/providers/oauth.d.ts +0 -97
  311. package/dist/core/providers/oauth.js +0 -238
  312. package/dist/core/providers/oauth.js.map +0 -1
  313. package/dist/core/providers/project-resolution.d.ts +0 -81
  314. package/dist/core/providers/project-resolution.js +0 -101
  315. package/dist/core/providers/project-resolution.js.map +0 -1
  316. package/dist/core/providers/registry.d.ts +0 -73
  317. package/dist/core/providers/registry.js +0 -53
  318. package/dist/core/providers/registry.js.map +0 -1
  319. package/dist/core/providers/strings.d.ts +0 -95
  320. package/dist/core/providers/strings.js +0 -59
  321. package/dist/core/providers/strings.js.map +0 -1
  322. package/dist/core/public-config.d.ts +0 -18
  323. package/dist/core/public-config.js +0 -76
  324. package/dist/core/public-config.js.map +0 -1
  325. package/dist/core/read-only-files.d.ts +0 -28
  326. package/dist/core/read-only-files.js +0 -93
  327. package/dist/core/read-only-files.js.map +0 -1
  328. package/dist/core/repo-create.d.ts +0 -11
  329. package/dist/core/repo-create.js +0 -54
  330. package/dist/core/repo-create.js.map +0 -1
  331. package/dist/core/repo-match.d.ts +0 -12
  332. package/dist/core/repo-match.js +0 -40
  333. package/dist/core/repo-match.js.map +0 -1
  334. package/dist/core/repo-onboard.d.ts +0 -297
  335. package/dist/core/repo-onboard.js +0 -667
  336. package/dist/core/repo-onboard.js.map +0 -1
  337. package/dist/core/repro-bundle.d.ts +0 -30
  338. package/dist/core/repro-bundle.js +0 -116
  339. package/dist/core/repro-bundle.js.map +0 -1
  340. package/dist/core/service-graph.d.ts +0 -50
  341. package/dist/core/service-graph.js +0 -143
  342. package/dist/core/service-graph.js.map +0 -1
  343. package/dist/core/service-health.d.ts +0 -10
  344. package/dist/core/service-health.js +0 -46
  345. package/dist/core/service-health.js.map +0 -1
  346. package/dist/core/service-log-source.d.ts +0 -9
  347. package/dist/core/service-log-source.js +0 -49
  348. package/dist/core/service-log-source.js.map +0 -1
  349. package/dist/core/service-registry.d.ts +0 -52
  350. package/dist/core/service-registry.js +0 -101
  351. package/dist/core/service-registry.js.map +0 -1
  352. package/dist/core/snapshot-manager.d.ts +0 -62
  353. package/dist/core/snapshot-manager.js +0 -219
  354. package/dist/core/snapshot-manager.js.map +0 -1
  355. package/dist/core/ssh-servers.d.ts +0 -89
  356. package/dist/core/ssh-servers.js +0 -251
  357. package/dist/core/ssh-servers.js.map +0 -1
  358. package/dist/core/ssh-service-runner.d.ts +0 -7
  359. package/dist/core/ssh-service-runner.js +0 -36
  360. package/dist/core/ssh-service-runner.js.map +0 -1
  361. package/dist/core/ssh-setup.d.ts +0 -11
  362. package/dist/core/ssh-setup.js +0 -49
  363. package/dist/core/ssh-setup.js.map +0 -1
  364. package/dist/core/system-processes.d.ts +0 -29
  365. package/dist/core/system-processes.js +0 -119
  366. package/dist/core/system-processes.js.map +0 -1
  367. package/dist/core/terminal-manager.d.ts +0 -123
  368. package/dist/core/terminal-manager.js +0 -470
  369. package/dist/core/terminal-manager.js.map +0 -1
  370. package/dist/core/terminal-session.d.ts +0 -122
  371. package/dist/core/terminal-session.js +0 -242
  372. package/dist/core/terminal-session.js.map +0 -1
  373. package/dist/core/terminal-spawn.d.ts +0 -26
  374. package/dist/core/terminal-spawn.js +0 -63
  375. package/dist/core/terminal-spawn.js.map +0 -1
  376. package/dist/core/test-runner.d.ts +0 -69
  377. package/dist/core/test-runner.js +0 -199
  378. package/dist/core/test-runner.js.map +0 -1
  379. package/dist/core/timeline-store.d.ts +0 -20
  380. package/dist/core/timeline-store.js +0 -36
  381. package/dist/core/timeline-store.js.map +0 -1
  382. package/dist/core/tool-call-store.d.ts +0 -25
  383. package/dist/core/tool-call-store.js +0 -62
  384. package/dist/core/tool-call-store.js.map +0 -1
  385. package/dist/core/types.d.ts +0 -312
  386. package/dist/core/types.js +0 -2
  387. package/dist/core/types.js.map +0 -1
  388. package/dist/core/usage-history.d.ts +0 -81
  389. package/dist/core/usage-history.js +0 -149
  390. package/dist/core/usage-history.js.map +0 -1
  391. package/dist/core/vercel-actions.d.ts +0 -71
  392. package/dist/core/vercel-actions.js +0 -109
  393. package/dist/core/vercel-actions.js.map +0 -1
  394. package/dist/core/vercel-auth.d.ts +0 -40
  395. package/dist/core/vercel-auth.js +0 -88
  396. package/dist/core/vercel-auth.js.map +0 -1
  397. package/dist/core/vercel-context.d.ts +0 -2
  398. package/dist/core/vercel-context.js +0 -97
  399. package/dist/core/vercel-context.js.map +0 -1
  400. package/dist/core/vercel-manager.d.ts +0 -266
  401. package/dist/core/vercel-manager.js +0 -389
  402. package/dist/core/vercel-manager.js.map +0 -1
  403. package/dist/core/vercel-oauth.d.ts +0 -37
  404. package/dist/core/vercel-oauth.js +0 -51
  405. package/dist/core/vercel-oauth.js.map +0 -1
  406. package/dist/core/vercel-provider.d.ts +0 -23
  407. package/dist/core/vercel-provider.js +0 -271
  408. package/dist/core/vercel-provider.js.map +0 -1
  409. package/dist/core/vultr-actions.d.ts +0 -52
  410. package/dist/core/vultr-actions.js +0 -62
  411. package/dist/core/vultr-actions.js.map +0 -1
  412. package/dist/core/vultr-auth.d.ts +0 -32
  413. package/dist/core/vultr-auth.js +0 -54
  414. package/dist/core/vultr-auth.js.map +0 -1
  415. package/dist/core/vultr-context.d.ts +0 -2
  416. package/dist/core/vultr-context.js +0 -55
  417. package/dist/core/vultr-context.js.map +0 -1
  418. package/dist/core/vultr-manager.d.ts +0 -105
  419. package/dist/core/vultr-manager.js +0 -159
  420. package/dist/core/vultr-manager.js.map +0 -1
  421. package/dist/core/vultr-provider.d.ts +0 -69
  422. package/dist/core/vultr-provider.js +0 -224
  423. package/dist/core/vultr-provider.js.map +0 -1
  424. package/dist/core/workflow-triggers.d.ts +0 -139
  425. package/dist/core/workflow-triggers.js +0 -208
  426. package/dist/core/workflow-triggers.js.map +0 -1
  427. package/dist/core/workflows.d.ts +0 -290
  428. package/dist/core/workflows.js +0 -190
  429. package/dist/core/workflows.js.map +0 -1
  430. package/dist/index.d.ts +0 -2
  431. package/dist/index.js +0 -56
  432. package/dist/index.js.map +0 -1
  433. package/dist/mcp/server.d.ts +0 -37
  434. package/dist/mcp/server.js +0 -84
  435. package/dist/mcp/server.js.map +0 -1
  436. package/dist/mcp/tools/agent-env.d.ts +0 -9
  437. package/dist/mcp/tools/agent-env.js +0 -160
  438. package/dist/mcp/tools/agent-env.js.map +0 -1
  439. package/dist/mcp/tools/agent-profiles.d.ts +0 -9
  440. package/dist/mcp/tools/agent-profiles.js +0 -197
  441. package/dist/mcp/tools/agent-profiles.js.map +0 -1
  442. package/dist/mcp/tools/agent-registry.d.ts +0 -9
  443. package/dist/mcp/tools/agent-registry.js +0 -81
  444. package/dist/mcp/tools/agent-registry.js.map +0 -1
  445. package/dist/mcp/tools/agent.d.ts +0 -4
  446. package/dist/mcp/tools/agent.js +0 -29
  447. package/dist/mcp/tools/agent.js.map +0 -1
  448. package/dist/mcp/tools/context.d.ts +0 -36
  449. package/dist/mcp/tools/context.js +0 -69
  450. package/dist/mcp/tools/context.js.map +0 -1
  451. package/dist/mcp/tools/database.d.ts +0 -9
  452. package/dist/mcp/tools/database.js +0 -166
  453. package/dist/mcp/tools/database.js.map +0 -1
  454. package/dist/mcp/tools/docs.d.ts +0 -29
  455. package/dist/mcp/tools/docs.js +0 -125
  456. package/dist/mcp/tools/docs.js.map +0 -1
  457. package/dist/mcp/tools/errors.d.ts +0 -5
  458. package/dist/mcp/tools/errors.js +0 -40
  459. package/dist/mcp/tools/errors.js.map +0 -1
  460. package/dist/mcp/tools/git.d.ts +0 -4
  461. package/dist/mcp/tools/git.js +0 -208
  462. package/dist/mcp/tools/git.js.map +0 -1
  463. package/dist/mcp/tools/github.d.ts +0 -4
  464. package/dist/mcp/tools/github.js +0 -196
  465. package/dist/mcp/tools/github.js.map +0 -1
  466. package/dist/mcp/tools/index.d.ts +0 -20
  467. package/dist/mcp/tools/index.js +0 -60
  468. package/dist/mcp/tools/index.js.map +0 -1
  469. package/dist/mcp/tools/onboard.d.ts +0 -10
  470. package/dist/mcp/tools/onboard.js +0 -30
  471. package/dist/mcp/tools/onboard.js.map +0 -1
  472. package/dist/mcp/tools/provider.d.ts +0 -16
  473. package/dist/mcp/tools/provider.js +0 -110
  474. package/dist/mcp/tools/provider.js.map +0 -1
  475. package/dist/mcp/tools/services.d.ts +0 -11
  476. package/dist/mcp/tools/services.js +0 -200
  477. package/dist/mcp/tools/services.js.map +0 -1
  478. package/dist/mcp/tools/snapshots.d.ts +0 -8
  479. package/dist/mcp/tools/snapshots.js +0 -37
  480. package/dist/mcp/tools/snapshots.js.map +0 -1
  481. package/dist/mcp/tools/terminal.d.ts +0 -4
  482. package/dist/mcp/tools/terminal.js +0 -38
  483. package/dist/mcp/tools/terminal.js.map +0 -1
  484. package/dist/tui/app.d.ts +0 -22
  485. package/dist/tui/app.js +0 -138
  486. package/dist/tui/app.js.map +0 -1
  487. package/dist/web/agent-info.d.ts +0 -82
  488. package/dist/web/agent-info.js +0 -775
  489. package/dist/web/agent-info.js.map +0 -1
  490. package/dist/web/client/assets/SymbolsNerdFontMono-Regular-DDncdh2F.ttf +0 -0
  491. package/dist/web/client/assets/code-editor-B2_SPkzS.js +0 -30
  492. package/dist/web/client/assets/context-graph-DVrWyUaG.js +0 -7
  493. package/dist/web/client/assets/core-DhEqZVGG.js +0 -1
  494. package/dist/web/client/assets/event-BK_86lmQ.js +0 -1
  495. package/dist/web/client/assets/index-BhDAhmA1.js +0 -1
  496. package/dist/web/client/assets/index-DIspyq1R.js +0 -352
  497. package/dist/web/client/assets/index-DT9Uq0bE.css +0 -1
  498. package/dist/web/client/assets/nomoreide-favicon-Ds7Tgj9p.svg +0 -24
  499. package/dist/web/client/assets/system-process-table-CWZIisGo.js +0 -1
  500. package/dist/web/client/assets/window-DlR023_X.js +0 -1
  501. package/dist/web/client/index.html +0 -44
  502. package/dist/web/dashboard.d.ts +0 -61
  503. package/dist/web/dashboard.js +0 -221
  504. package/dist/web/dashboard.js.map +0 -1
  505. package/dist/web/directories.d.ts +0 -27
  506. package/dist/web/directories.js +0 -81
  507. package/dist/web/directories.js.map +0 -1
  508. package/dist/web/http-utils.d.ts +0 -13
  509. package/dist/web/http-utils.js +0 -72
  510. package/dist/web/http-utils.js.map +0 -1
  511. package/dist/web/routes/agent-chat-routes.d.ts +0 -3
  512. package/dist/web/routes/agent-chat-routes.js +0 -186
  513. package/dist/web/routes/agent-chat-routes.js.map +0 -1
  514. package/dist/web/routes/agent-env-routes.d.ts +0 -9
  515. package/dist/web/routes/agent-env-routes.js +0 -86
  516. package/dist/web/routes/agent-env-routes.js.map +0 -1
  517. package/dist/web/routes/agent-profile-routes.d.ts +0 -8
  518. package/dist/web/routes/agent-profile-routes.js +0 -211
  519. package/dist/web/routes/agent-profile-routes.js.map +0 -1
  520. package/dist/web/routes/agent-registry-routes.d.ts +0 -2
  521. package/dist/web/routes/agent-registry-routes.js +0 -361
  522. package/dist/web/routes/agent-registry-routes.js.map +0 -1
  523. package/dist/web/routes/agent-routes.d.ts +0 -3
  524. package/dist/web/routes/agent-routes.js +0 -73
  525. package/dist/web/routes/agent-routes.js.map +0 -1
  526. package/dist/web/routes/agent-settings-routes.d.ts +0 -8
  527. package/dist/web/routes/agent-settings-routes.js +0 -67
  528. package/dist/web/routes/agent-settings-routes.js.map +0 -1
  529. package/dist/web/routes/context-library-routes.d.ts +0 -2
  530. package/dist/web/routes/context-library-routes.js +0 -139
  531. package/dist/web/routes/context-library-routes.js.map +0 -1
  532. package/dist/web/routes/context.d.ts +0 -73
  533. package/dist/web/routes/context.js +0 -48
  534. package/dist/web/routes/context.js.map +0 -1
  535. package/dist/web/routes/dashboard-routes.d.ts +0 -3
  536. package/dist/web/routes/dashboard-routes.js +0 -47
  537. package/dist/web/routes/dashboard-routes.js.map +0 -1
  538. package/dist/web/routes/database-routes.d.ts +0 -3
  539. package/dist/web/routes/database-routes.js +0 -341
  540. package/dist/web/routes/database-routes.js.map +0 -1
  541. package/dist/web/routes/docker-routes.d.ts +0 -7
  542. package/dist/web/routes/docker-routes.js +0 -122
  543. package/dist/web/routes/docker-routes.js.map +0 -1
  544. package/dist/web/routes/errors-routes.d.ts +0 -3
  545. package/dist/web/routes/errors-routes.js +0 -77
  546. package/dist/web/routes/errors-routes.js.map +0 -1
  547. package/dist/web/routes/extensions-routes.d.ts +0 -14
  548. package/dist/web/routes/extensions-routes.js +0 -21
  549. package/dist/web/routes/extensions-routes.js.map +0 -1
  550. package/dist/web/routes/git-routes.d.ts +0 -3
  551. package/dist/web/routes/git-routes.js +0 -598
  552. package/dist/web/routes/git-routes.js.map +0 -1
  553. package/dist/web/routes/github-context.d.ts +0 -11
  554. package/dist/web/routes/github-context.js +0 -34
  555. package/dist/web/routes/github-context.js.map +0 -1
  556. package/dist/web/routes/github-routes.d.ts +0 -2
  557. package/dist/web/routes/github-routes.js +0 -699
  558. package/dist/web/routes/github-routes.js.map +0 -1
  559. package/dist/web/routes/host-routes.d.ts +0 -2
  560. package/dist/web/routes/host-routes.js +0 -188
  561. package/dist/web/routes/host-routes.js.map +0 -1
  562. package/dist/web/routes/index.d.ts +0 -10
  563. package/dist/web/routes/index.js +0 -72
  564. package/dist/web/routes/index.js.map +0 -1
  565. package/dist/web/routes/jetbrains-import-routes.d.ts +0 -2
  566. package/dist/web/routes/jetbrains-import-routes.js +0 -121
  567. package/dist/web/routes/jetbrains-import-routes.js.map +0 -1
  568. package/dist/web/routes/log-sources-routes.d.ts +0 -6
  569. package/dist/web/routes/log-sources-routes.js +0 -102
  570. package/dist/web/routes/log-sources-routes.js.map +0 -1
  571. package/dist/web/routes/metrics-routes.d.ts +0 -3
  572. package/dist/web/routes/metrics-routes.js +0 -60
  573. package/dist/web/routes/metrics-routes.js.map +0 -1
  574. package/dist/web/routes/onboard-routes.d.ts +0 -9
  575. package/dist/web/routes/onboard-routes.js +0 -146
  576. package/dist/web/routes/onboard-routes.js.map +0 -1
  577. package/dist/web/routes/overview-routes.d.ts +0 -2
  578. package/dist/web/routes/overview-routes.js +0 -36
  579. package/dist/web/routes/overview-routes.js.map +0 -1
  580. package/dist/web/routes/provider-routes.d.ts +0 -2
  581. package/dist/web/routes/provider-routes.js +0 -558
  582. package/dist/web/routes/provider-routes.js.map +0 -1
  583. package/dist/web/routes/service-routes.d.ts +0 -3
  584. package/dist/web/routes/service-routes.js +0 -511
  585. package/dist/web/routes/service-routes.js.map +0 -1
  586. package/dist/web/routes/settings-routes.d.ts +0 -2
  587. package/dist/web/routes/settings-routes.js +0 -151
  588. package/dist/web/routes/settings-routes.js.map +0 -1
  589. package/dist/web/routes/shell-routes.d.ts +0 -22
  590. package/dist/web/routes/shell-routes.js +0 -75
  591. package/dist/web/routes/shell-routes.js.map +0 -1
  592. package/dist/web/routes/skills-routes.d.ts +0 -2
  593. package/dist/web/routes/skills-routes.js +0 -49
  594. package/dist/web/routes/skills-routes.js.map +0 -1
  595. package/dist/web/routes/snapshot-routes.d.ts +0 -8
  596. package/dist/web/routes/snapshot-routes.js +0 -194
  597. package/dist/web/routes/snapshot-routes.js.map +0 -1
  598. package/dist/web/routes/ssh-server-routes.d.ts +0 -10
  599. package/dist/web/routes/ssh-server-routes.js +0 -163
  600. package/dist/web/routes/ssh-server-routes.js.map +0 -1
  601. package/dist/web/routes/terminal-routes.d.ts +0 -7
  602. package/dist/web/routes/terminal-routes.js +0 -313
  603. package/dist/web/routes/terminal-routes.js.map +0 -1
  604. package/dist/web/routes/workflow-routes.d.ts +0 -8
  605. package/dist/web/routes/workflow-routes.js +0 -45
  606. package/dist/web/routes/workflow-routes.js.map +0 -1
  607. package/dist/web/routes/workflow-trigger-routes.d.ts +0 -9
  608. package/dist/web/routes/workflow-trigger-routes.js +0 -78
  609. package/dist/web/routes/workflow-trigger-routes.js.map +0 -1
  610. package/dist/web/server.d.ts +0 -31
  611. package/dist/web/server.js +0 -325
  612. package/dist/web/server.js.map +0 -1
  613. package/dist/web/service-tester.d.ts +0 -16
  614. package/dist/web/service-tester.js +0 -107
  615. package/dist/web/service-tester.js.map +0 -1
  616. package/dist/web/static-assets.d.ts +0 -3
  617. package/dist/web/static-assets.js +0 -64
  618. package/dist/web/static-assets.js.map +0 -1
  619. package/dist/web/usage-info.d.ts +0 -56
  620. package/dist/web/usage-info.js +0 -265
  621. package/dist/web/usage-info.js.map +0 -1
@@ -1,221 +0,0 @@
1
- import { basename } from "node:path";
2
- import { isGitWorktree } from "../core/config-store.js";
3
- import { GitManager } from "../core/git-manager.js";
4
- import { getPortBindingStatus, } from "../core/port-utils.js";
5
- import { publicConfig } from "../core/public-config.js";
6
- import { computeServiceHealth } from "../core/service-health.js";
7
- /** How much of each service's tail health reasons over. */
8
- const LOG_TAIL = 80;
9
- /**
10
- * How much of each service's tail rides along in the payload.
11
- *
12
- * Shorter than what health reads, because this one is multiplied by every
13
- * service that has ever logged and goes over the wire on every poll. Forty
14
- * lines is more than the Logs panel shows and more than the agent context
15
- * quotes, so nothing downstream is short of material.
16
- */
17
- const PAYLOAD_TAIL = 40;
18
- export async function buildDashboardPayload(options) {
19
- let config = await options.configStore.load();
20
- let selectedGitRepository = getSelectedGitRepository(config);
21
- // If the user has no Git projects registered yet, auto-adopt the process cwd
22
- // when it's a real Git worktree. If it isn't, leave the repo unselected so the
23
- // UI can show its empty state (matching the Database tab) instead of pointing
24
- // at a non-repo folder.
25
- if (!selectedGitRepository && config.gitRepositories.length === 0) {
26
- if (await isGitWorktree(options.cwd)) {
27
- try {
28
- config = await options.configStore.registerGitRepository({
29
- name: basename(options.cwd) || "repo",
30
- path: options.cwd,
31
- });
32
- selectedGitRepository = getSelectedGitRepository(config);
33
- }
34
- catch {
35
- // Fall through — empty state will be shown.
36
- }
37
- }
38
- }
39
- const gitCwd = selectedGitRepository
40
- ? await selectedGitCwd(options.configStore, selectedGitRepository.path)
41
- : "";
42
- const runtime = await options.manager.statusWithResources();
43
- const [gitStatus, branches, ports] = await Promise.all([
44
- gitCwd ? readGitStatus(gitCwd) : Promise.resolve(undefined),
45
- gitCwd ? readGitBranches(gitCwd) : Promise.resolve(undefined),
46
- buildPortOverview(config, runtime.services),
47
- ]);
48
- const timeline = options.timelineStore.read(120);
49
- const serviceLogs = readServiceLogs(config, options.logStore);
50
- const health = buildHealthOverview({
51
- config,
52
- ports,
53
- runtimeServices: runtime.services,
54
- serviceLogs,
55
- timeline,
56
- });
57
- return {
58
- ok: true,
59
- cwd: options.cwd,
60
- config: publicConfig(config),
61
- runtime,
62
- ports,
63
- health,
64
- timeline,
65
- logs: mergeServiceLogs(serviceLogs),
66
- git: {
67
- cwd: gitCwd,
68
- selectedRepository: selectedGitRepository ?? null,
69
- status: gitStatus ?? null,
70
- branches: branches ?? [],
71
- error: !gitCwd
72
- ? undefined
73
- : gitStatus
74
- ? undefined
75
- : `Not a Git repository: ${gitCwd}`,
76
- },
77
- };
78
- }
79
- /**
80
- * Every registered service's tail, read once.
81
- *
82
- * Health wants it per service and the Output panel wants the liveliest one, so
83
- * reading the ring buffer twice would only be a way for the two to disagree
84
- * about the same in-memory array.
85
- */
86
- function readServiceLogs(config, logStore) {
87
- return new Map(config.services.map((service) => [service.name, logStore.read(service.name, LOG_TAIL)]));
88
- }
89
- /**
90
- * Every service's tail, in one chronological list.
91
- *
92
- * This field used to carry a single service — `config.services[0]`, which is
93
- * registration order and therefore arbitrary. It meant the Logs panel could
94
- * only ever show one service, and *which* one came down to a race: two services
95
- * started 200ms apart, and the later one hid the other completely.
96
- *
97
- * Carrying all of them lets the panel offer a tab per service and lets the
98
- * agent context quote whichever service is being asked about, without either
99
- * needing a request of its own. Consumers that want one service filter by
100
- * `entry.service` — `project-scope.ts` already did.
101
- *
102
- * Timestamps are compared as strings because `LogStore` writes them all with
103
- * `toISOString()` — same width, same UTC offset, so lexical order is
104
- * chronological order. The sort is stable, so a service's own lines keep their
105
- * relative order even when a burst shares a millisecond.
106
- */
107
- export function mergeServiceLogs(serviceLogs) {
108
- return [...serviceLogs.values()]
109
- .flatMap((lines) => lines.slice(-PAYLOAD_TAIL))
110
- .sort((a, b) => (a.timestamp < b.timestamp ? -1 : a.timestamp > b.timestamp ? 1 : 0));
111
- }
112
- function buildHealthOverview(options) {
113
- return Object.fromEntries(options.config.services.map((service) => [
114
- service.name,
115
- computeServiceHealth({
116
- service,
117
- status: options.runtimeServices[service.name],
118
- ports: options.ports.filter((port) => port.services.includes(service.name)),
119
- logs: options.serviceLogs.get(service.name) ?? [],
120
- timeline: options.timeline.filter((event) => event.service === service.name),
121
- }),
122
- ]));
123
- }
124
- async function buildPortOverview(config, runtimeServices) {
125
- const ports = new Map();
126
- for (const service of config.services) {
127
- if (service.port) {
128
- const entry = getPortEntry(ports, service.port);
129
- entry.services.add(service.name);
130
- }
131
- }
132
- for (const status of Object.values(runtimeServices)) {
133
- if (!status.url)
134
- continue;
135
- const port = portFromUrl(status.url);
136
- if (!port)
137
- continue;
138
- const entry = getPortEntry(ports, port);
139
- entry.services.add(status.name);
140
- entry.urls.add(status.url);
141
- }
142
- return Promise.all([...ports.entries()]
143
- .sort(([left], [right]) => left - right)
144
- .map(async ([port, entry]) => {
145
- const binding = await getPortBindingStatus(port);
146
- const managed = [...entry.services].some((serviceName) => {
147
- const status = runtimeServices[serviceName];
148
- const urlPort = portFromUrl(status?.url);
149
- return (status?.state === "running" &&
150
- (urlPort === port ||
151
- (urlPort === undefined &&
152
- config.services.some((service) => service.name === serviceName && service.port === port))));
153
- });
154
- return {
155
- port,
156
- available: binding.available,
157
- hosts: binding.hosts,
158
- state: managed ? "managed" : binding.available ? "available" : "occupied",
159
- services: [...entry.services].sort(),
160
- urls: [...entry.urls].sort(),
161
- };
162
- }));
163
- }
164
- function getPortEntry(ports, port) {
165
- let entry = ports.get(port);
166
- if (!entry) {
167
- entry = { services: new Set(), urls: new Set() };
168
- ports.set(port, entry);
169
- }
170
- return entry;
171
- }
172
- function portFromUrl(url) {
173
- if (!url)
174
- return undefined;
175
- try {
176
- const parsed = new URL(url);
177
- return parsed.port ? Number(parsed.port) : undefined;
178
- }
179
- catch {
180
- return undefined;
181
- }
182
- }
183
- export function getSelectedGitRepository(config) {
184
- return (config.gitRepositories.find((repository) => repository.name === config.selectedGitRepository) ?? config.gitRepositories[0]);
185
- }
186
- async function readGitStatus(cwd) {
187
- try {
188
- return await new GitManager(cwd).status();
189
- }
190
- catch {
191
- return undefined;
192
- }
193
- }
194
- async function readGitBranches(cwd) {
195
- try {
196
- return await new GitManager(cwd).branches();
197
- }
198
- catch {
199
- return undefined;
200
- }
201
- }
202
- export async function readGitDiff(cwd, path) {
203
- try {
204
- return await new GitManager(cwd).diff(path);
205
- }
206
- catch {
207
- return undefined;
208
- }
209
- }
210
- export async function selectedGitCwd(configStore, fallbackCwd) {
211
- const config = await configStore.load();
212
- const repository = getSelectedGitRepository(config);
213
- if (!repository)
214
- return fallbackCwd;
215
- if (repository.activeWorktreePath &&
216
- await isGitWorktree(repository.activeWorktreePath)) {
217
- return repository.activeWorktreePath;
218
- }
219
- return repository.path;
220
- }
221
- //# sourceMappingURL=dashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/web/dashboard.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Virtual "This PC" root shown above the drive letters on Windows. `dirname`
3
- * treats a drive root (`C:\`) as its own parent, so without this sentinel the
4
- * picker dead-ends on whichever drive it started on and can never reach `D:\`
5
- * etc. We surface this as the parent of any drive root and, when asked to list
6
- * it, enumerate the available drives instead of hitting the filesystem.
7
- */
8
- export declare const WINDOWS_DRIVES_ROOT = "This PC";
9
- /**
10
- * List the contents of a directory for in-app browsing. Folders only by
11
- * default (the service cwd / repo pickers); pass `includeFiles` for the agent
12
- * dock's file picker, which needs to attach individual files too.
13
- */
14
- export declare function listDirectories(path: string, { includeFiles }?: {
15
- includeFiles?: boolean;
16
- }): Promise<{
17
- ok: boolean;
18
- path: string;
19
- parent: string;
20
- entries: {
21
- name: string;
22
- path: string;
23
- isDir: boolean;
24
- }[];
25
- }>;
26
- /** Parent of a path, or the drives root on Windows when at a drive root. */
27
- export declare function parentOf(resolvedPath: string): string;
@@ -1,81 +0,0 @@
1
- import { access, readdir } from "node:fs/promises";
2
- import { posix, win32 } from "node:path";
3
- const ignoredDirectoryNames = new Set([".git", "node_modules"]);
4
- // Evaluated per-call (not cached) so tests can exercise the Windows path.
5
- const isWindows = () => process.platform === "win32";
6
- // Resolve paths with the platform's own rules. On real Windows `node:path`
7
- // already maps to `win32`; selecting it explicitly means a `win32`-stubbed
8
- // test runs genuine Windows path semantics on any host (POSIX `dirname("C:\\")`
9
- // is `"."`, whereas `win32.dirname("C:\\")` is `"C:\\"` — the whole bug).
10
- const pathLib = () => (isWindows() ? win32 : posix);
11
- /**
12
- * Virtual "This PC" root shown above the drive letters on Windows. `dirname`
13
- * treats a drive root (`C:\`) as its own parent, so without this sentinel the
14
- * picker dead-ends on whichever drive it started on and can never reach `D:\`
15
- * etc. We surface this as the parent of any drive root and, when asked to list
16
- * it, enumerate the available drives instead of hitting the filesystem.
17
- */
18
- export const WINDOWS_DRIVES_ROOT = "This PC";
19
- /**
20
- * List the contents of a directory for in-app browsing. Folders only by
21
- * default (the service cwd / repo pickers); pass `includeFiles` for the agent
22
- * dock's file picker, which needs to attach individual files too.
23
- */
24
- export async function listDirectories(path, { includeFiles = false } = {}) {
25
- if (isWindows() && path === WINDOWS_DRIVES_ROOT) {
26
- return listWindowsDrives();
27
- }
28
- const resolvedPath = pathLib().resolve(path);
29
- const dirents = await readdir(resolvedPath, { withFileTypes: true });
30
- const entries = dirents
31
- .filter((entry) => entry.isDirectory()
32
- ? !ignoredDirectoryNames.has(entry.name)
33
- : includeFiles && entry.isFile())
34
- .map((entry) => ({
35
- name: entry.name,
36
- path: pathLib().resolve(resolvedPath, entry.name),
37
- isDir: entry.isDirectory(),
38
- }))
39
- // Folders first, then files, each alphabetical.
40
- .sort((left, right) => left.isDir === right.isDir
41
- ? left.name.localeCompare(right.name)
42
- : left.isDir
43
- ? -1
44
- : 1);
45
- return {
46
- ok: true,
47
- path: resolvedPath,
48
- parent: parentOf(resolvedPath),
49
- entries,
50
- };
51
- }
52
- /** Parent of a path, or the drives root on Windows when at a drive root. */
53
- export function parentOf(resolvedPath) {
54
- const parent = pathLib().dirname(resolvedPath);
55
- if (isWindows() && parent === resolvedPath)
56
- return WINDOWS_DRIVES_ROOT;
57
- return parent;
58
- }
59
- /** Enumerate available Windows drive letters as a "This PC" listing. */
60
- async function listWindowsDrives() {
61
- // Skip A:/B: to avoid the legacy "no floppy disk" prompt; C:–Z: covers every
62
- // realistic fixed/removable/network drive.
63
- const letters = Array.from({ length: 24 }, (_, i) => String.fromCharCode(67 + i));
64
- const drives = await Promise.all(letters.map(async (letter) => {
65
- const root = `${letter}:\\`;
66
- try {
67
- await access(root);
68
- return { name: `${letter}:`, path: root, isDir: true };
69
- }
70
- catch {
71
- return null;
72
- }
73
- }));
74
- return {
75
- ok: true,
76
- path: WINDOWS_DRIVES_ROOT,
77
- parent: WINDOWS_DRIVES_ROOT,
78
- entries: drives.filter((drive) => drive !== null),
79
- };
80
- }
81
- //# sourceMappingURL=directories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directories.js","sourceRoot":"","sources":["../../src/web/directories.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { IncomingMessage, ServerResponse } from "node:http";
2
- export declare function sendHtml(response: ServerResponse, html: string, status?: number): void;
3
- export declare function sendText(response: ServerResponse, text: string, status?: number): void;
4
- export declare function sendHead(response: ServerResponse, contentType: string, status?: number): void;
5
- export declare function sendJson(response: ServerResponse, data: unknown, status?: number): void;
6
- export declare function readForm(request: IncomingMessage): Promise<URLSearchParams>;
7
- /** Read a JSON request body, returning `{}` for an empty or invalid payload. */
8
- export declare function readJson(request: IncomingMessage, maxBytes?: number): Promise<Record<string, unknown>>;
9
- export declare class RequestBodyTooLargeError extends Error {
10
- constructor();
11
- }
12
- export declare function requiredFormValue(form: URLSearchParams, key: string): string;
13
- export declare function optionalFormValue(form: URLSearchParams, key: string): string | undefined;
@@ -1,72 +0,0 @@
1
- export function sendHtml(response, html, status = 200) {
2
- response.writeHead(status, {
3
- "content-type": "text/html; charset=utf-8",
4
- });
5
- response.end(html);
6
- }
7
- export function sendText(response, text, status = 200) {
8
- response.writeHead(status, {
9
- "content-type": "text/plain; charset=utf-8",
10
- });
11
- response.end(text);
12
- }
13
- export function sendHead(response, contentType, status = 200) {
14
- response.writeHead(status, {
15
- "content-type": contentType,
16
- });
17
- response.end();
18
- }
19
- export function sendJson(response, data, status = 200) {
20
- response.writeHead(status, {
21
- "content-type": "application/json; charset=utf-8",
22
- });
23
- response.end(JSON.stringify(data));
24
- }
25
- export async function readForm(request) {
26
- const chunks = [];
27
- for await (const chunk of request) {
28
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
29
- }
30
- return new URLSearchParams(Buffer.concat(chunks).toString("utf8"));
31
- }
32
- /** Read a JSON request body, returning `{}` for an empty or invalid payload. */
33
- export async function readJson(request, maxBytes = Number.POSITIVE_INFINITY) {
34
- const chunks = [];
35
- let bytes = 0;
36
- for await (const chunk of request) {
37
- const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
38
- bytes += buffer.length;
39
- if (bytes > maxBytes)
40
- throw new RequestBodyTooLargeError();
41
- chunks.push(buffer);
42
- }
43
- const raw = Buffer.concat(chunks).toString("utf8").trim();
44
- if (!raw)
45
- return {};
46
- try {
47
- const parsed = JSON.parse(raw);
48
- return parsed && typeof parsed === "object"
49
- ? parsed
50
- : {};
51
- }
52
- catch {
53
- return {};
54
- }
55
- }
56
- export class RequestBodyTooLargeError extends Error {
57
- constructor() {
58
- super("Request body is too large.");
59
- }
60
- }
61
- export function requiredFormValue(form, key) {
62
- const value = form.get(key)?.trim();
63
- if (!value) {
64
- throw new Error(`${key} is required`);
65
- }
66
- return value;
67
- }
68
- export function optionalFormValue(form, key) {
69
- const value = form.get(key)?.trim();
70
- return value || undefined;
71
- }
72
- //# sourceMappingURL=http-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../../src/web/http-utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CACtB,QAAwB,EACxB,IAAY,EACZ,MAAM,GAAG,GAAG;IAEZ,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;QACzB,cAAc,EAAE,0BAA0B;KAC3C,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,QAAwB,EACxB,IAAY,EACZ,MAAM,GAAG,GAAG;IAEZ,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;QACzB,cAAc,EAAE,2BAA2B;KAC5C,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,QAAwB,EACxB,WAAmB,EACnB,MAAM,GAAG,GAAG;IAEZ,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;QACzB,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,QAAwB,EACxB,IAAa,EACb,MAAM,GAAG,GAAG;IAEZ,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;QACzB,cAAc,EAAE,iCAAiC;KAClD,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAwB;IAExB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAwB,EACxB,QAAQ,GAAG,MAAM,CAAC,iBAAiB;IAEnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,KAAK,GAAG,QAAQ;YAAE,MAAM,IAAI,wBAAwB,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YACzC,CAAC,CAAE,MAAkC;YACrC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAqB,EACrB,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAAqB,EACrB,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IACpC,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type Route } from "./context.js";
2
- /** Headless agent runtime used by workflows and structured result generators. */
3
- export declare const agentChatRoutes: Route[];
@@ -1,186 +0,0 @@
1
- import { AgentRuntime, approvalsEnabled, CHAT_PROVIDERS, isAgentAvailable, providerById, publicProviderInfo, resolveChatProvider, } from "../../core/agent-runtime.js";
2
- import { detectAgent } from "../agent-info.js";
3
- import { sendJson } from "../http-utils.js";
4
- import { errorMessage, route } from "./context.js";
5
- /** Headless agent runtime used by workflows and structured result generators. */
6
- export const agentChatRoutes = [
7
- route("GET", "/api/agent/chat/status", async ({ response, configStore }) => {
8
- const [detected, config] = await Promise.all([detectAgent(), configStore.load()]);
9
- const provider = resolveChatProvider(detected.name, config.chatProvider);
10
- // Probe every provider so terminal and headless tasks can select an installed CLI.
11
- const providers = await Promise.all(CHAT_PROVIDERS.map(async (candidate) => ({
12
- ...publicProviderInfo(candidate),
13
- configured: await isAgentAvailable(candidate),
14
- })));
15
- sendJson(response, {
16
- ok: true,
17
- configured: await isAgentAvailable(provider),
18
- approvals: approvalsEnabled(provider),
19
- provider: publicProviderInfo(provider),
20
- providers,
21
- models: config.chatModels ?? {},
22
- });
23
- }),
24
- // Persist the model new sessions spawn with, per provider. A null/absent
25
- // model clears the pin rather than storing an empty string.
26
- route("POST", "/api/agent/chat/model", async ({ request, response, configStore }) => {
27
- let body;
28
- try {
29
- body = (await readJsonBody(request));
30
- }
31
- catch (error) {
32
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
33
- return;
34
- }
35
- const provider = providerById(typeof body.provider === "string" ? body.provider : undefined);
36
- if (!provider) {
37
- sendJson(response, { ok: false, error: "Unknown chat provider." }, 400);
38
- return;
39
- }
40
- if (body.model !== undefined && body.model !== null && typeof body.model !== "string") {
41
- sendJson(response, { ok: false, error: "Model must be a string." }, 400);
42
- return;
43
- }
44
- const requested = typeof body.model === "string" ? body.model.trim() : "";
45
- if (requested.length > 64) {
46
- sendJson(response, { ok: false, error: "Model name is too long." }, 400);
47
- return;
48
- }
49
- const config = await configStore.setChatModel(provider.id, requested || null);
50
- sendJson(response, { ok: true, models: config.chatModels ?? {} });
51
- }),
52
- // Persist the user's provider choice so it sticks across CLI/web/desktop.
53
- route("POST", "/api/agent/chat/provider", async ({ request, response, configStore }) => {
54
- let body;
55
- try {
56
- body = (await readJsonBody(request));
57
- }
58
- catch (error) {
59
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
60
- return;
61
- }
62
- const provider = providerById(typeof body.provider === "string" ? body.provider : undefined);
63
- if (!provider) {
64
- sendJson(response, { ok: false, error: "Unknown chat provider." }, 400);
65
- return;
66
- }
67
- await configStore.setChatProvider(provider.id);
68
- sendJson(response, { ok: true, provider: publicProviderInfo(provider) });
69
- }),
70
- route("POST", "/api/agent/chat", async (ctx) => {
71
- const { request, response, cwd, agentApprovals, configStore } = ctx;
72
- let payload;
73
- try {
74
- payload = parsePayload(await readJsonBody(request));
75
- }
76
- catch (error) {
77
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
78
- return;
79
- }
80
- // The turn's provider wins; else the saved choice; else startup detection.
81
- const config = await configStore.load();
82
- const provider = resolveChatProvider((await detectAgent()).name, payload.provider ?? config.chatProvider);
83
- if (!(await isAgentAvailable(provider))) {
84
- sendJson(response, {
85
- ok: false,
86
- error: `${provider.label} (\`${provider.commandName}\`) is not installed or not on PATH.`,
87
- }, 503);
88
- return;
89
- }
90
- // Server-Sent Events: one JSON-encoded AgentStreamEvent per `data:` line.
91
- response.writeHead(200, {
92
- "content-type": "text/event-stream",
93
- "cache-control": "no-cache, no-transform",
94
- connection: "keep-alive",
95
- });
96
- response.write("retry: 2000\n\n");
97
- const controller = new AbortController();
98
- request.on("close", () => controller.abort());
99
- const send = (event) => {
100
- if (!response.writableEnded)
101
- response.write(`data: ${JSON.stringify(event)}\n\n`);
102
- };
103
- // The hook (a child of the spawned `claude`) POSTs back to this same server.
104
- const host = request.headers.host ?? "127.0.0.1:4317";
105
- const approvalUrl = `http://${host}/api/agent/chat/approval`;
106
- const runtime = new AgentRuntime({ cwd, provider });
107
- try {
108
- await runtime.run(payload.message, payload.resumeSessionId, send, {
109
- signal: controller.signal,
110
- approval: { broker: agentApprovals, url: approvalUrl },
111
- autoApprove: payload.autoApprove,
112
- });
113
- }
114
- catch (error) {
115
- send({ type: "error", message: errorMessage(error) });
116
- }
117
- finally {
118
- if (!response.writableEnded)
119
- response.end();
120
- }
121
- }),
122
- // Called by the PreToolUse hook; held open until the user decides.
123
- route("POST", "/api/agent/chat/approval", async ({ request, response, agentApprovals }) => {
124
- let body;
125
- try {
126
- body = (await readJsonBody(request));
127
- }
128
- catch {
129
- sendJson(response, { decision: "deny", reason: "Malformed approval request." });
130
- return;
131
- }
132
- if (typeof body.requestId !== "string") {
133
- sendJson(response, { decision: "deny", reason: "Missing request id." });
134
- return;
135
- }
136
- const decision = await agentApprovals.requestApproval(body.sessionId, body.requestId, typeof body.toolName === "string" ? body.toolName : "tool", body.toolInput);
137
- sendJson(response, decision);
138
- }),
139
- // Called by a headless task runner when it resolves an approval request.
140
- route("POST", "/api/agent/chat/approve", async ({ request, response, agentApprovals }) => {
141
- let body;
142
- try {
143
- body = (await readJsonBody(request));
144
- }
145
- catch (error) {
146
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
147
- return;
148
- }
149
- if (typeof body.sessionId !== "string" || typeof body.requestId !== "string") {
150
- sendJson(response, { ok: false, error: "sessionId and requestId are required." }, 400);
151
- return;
152
- }
153
- const decision = body.decision === "allow" ? "allow" : "deny";
154
- const ok = agentApprovals.resolve(body.sessionId, body.requestId, {
155
- decision,
156
- reason: typeof body.reason === "string" ? body.reason : undefined,
157
- });
158
- sendJson(response, { ok });
159
- }),
160
- ];
161
- async function readJsonBody(request) {
162
- const chunks = [];
163
- for await (const chunk of request) {
164
- chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
165
- }
166
- const raw = Buffer.concat(chunks).toString("utf8").trim();
167
- if (!raw)
168
- return {};
169
- return JSON.parse(raw);
170
- }
171
- function parsePayload(body) {
172
- const message = body?.message;
173
- const resumeSessionId = body?.resumeSessionId;
174
- const autoApprove = body?.autoApprove;
175
- const provider = body?.provider;
176
- if (typeof message !== "string" || !message.trim()) {
177
- throw new Error("Request must include a non-empty `message` string.");
178
- }
179
- return {
180
- message,
181
- resumeSessionId: typeof resumeSessionId === "string" ? resumeSessionId : undefined,
182
- autoApprove: autoApprove === true,
183
- provider: typeof provider === "string" ? provider : undefined,
184
- };
185
- }
186
- //# sourceMappingURL=agent-chat-routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-chat-routes.js","sourceRoot":"","sources":["../../../src/web/routes/agent-chat-routes.ts"],"names":[],"mappings":"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"}