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,699 +0,0 @@
1
- import { getSelectedGitRepository, selectedGitCwd } from "../dashboard.js";
2
- import { GitManager } from "../../core/git-manager.js";
3
- import { GitHubApiError, GitHubManager } from "../../core/github-manager.js";
4
- import { GitHubCliAuth } from "../../core/github-auth.js";
5
- import { readForm, readJson, requiredFormValue, sendJson, sendText } from "../http-utils.js";
6
- import { errorMessage, patternRoute, route } from "./context.js";
7
- import { requireGitHubContext, optionalGitHubContext } from "./github-context.js";
8
- const GITHUB_DEVICE_CODE_URL = "https://github.com/login/device/code";
9
- const GITHUB_ACCESS_TOKEN_URL = "https://github.com/login/oauth/access_token";
10
- const GITHUB_SCOPES = "repo workflow read:org";
11
- const DEFAULT_GITHUB_CLIENT_ID = "Ov23litfv3LE0LevxlT2";
12
- function getClientId() {
13
- return process.env.NOMOREIDE_GITHUB_CLIENT_ID?.trim() || DEFAULT_GITHUB_CLIENT_ID;
14
- }
15
- /**
16
- * Who a freshly stored token belongs to. Captured once at connect time so the
17
- * status route can report the account (and its avatar) without spending an API
18
- * call on every check. Best-effort: a failure here must not fail the login.
19
- */
20
- async function fetchGitHubProfile(token) {
21
- try {
22
- const viewer = await new GitHubManager(token, "", "").viewer();
23
- if (!viewer.login)
24
- return undefined;
25
- return { login: viewer.login, avatarUrl: viewer.avatar_url };
26
- }
27
- catch {
28
- return undefined;
29
- }
30
- }
31
- /** Public avatar for a login we know without having called the API. */
32
- function avatarForLogin(login) {
33
- return `https://github.com/${encodeURIComponent(login)}.png?size=64`;
34
- }
35
- async function buildPRTemplate(gitCwd, manager) {
36
- const git = new GitManager(gitCwd);
37
- const warnings = [];
38
- const status = await git.status().catch((error) => {
39
- warnings.push(`Could not read local Git status: ${errorMessage(error)}`);
40
- return null;
41
- });
42
- const repository = await manager.repoInfo().catch((error) => {
43
- warnings.push(`Could not read GitHub repository metadata: ${errorMessage(error)}`);
44
- return null;
45
- });
46
- const head = status?.branch ?? "";
47
- if (!head) {
48
- warnings.push("Current branch could not be detected. Enter the head branch manually.");
49
- }
50
- const base = repository?.default_branch ?? inferBaseFromUpstream(status?.upstream) ?? "main";
51
- let compare = {
52
- base,
53
- head,
54
- aheadBy: 0,
55
- headSha: null,
56
- commits: [],
57
- files: [],
58
- };
59
- if (base && head && base !== head) {
60
- compare = await readCompareSummary({ git, manager, base, head, warnings });
61
- }
62
- else if (head && base === head) {
63
- warnings.push("The current branch matches the base branch. Choose a feature branch before creating a PR.");
64
- }
65
- if (compare.headSha) {
66
- const ciStatus = await manager.getCommitChecks(compare.headSha).catch((error) => {
67
- warnings.push(`Could not read head CI status: ${errorMessage(error)}`);
68
- return null;
69
- });
70
- if (ciStatus) {
71
- compare = { ...compare, ciStatus };
72
- }
73
- }
74
- return {
75
- repository,
76
- currentBranch: head || null,
77
- suggestedBase: base,
78
- base,
79
- head,
80
- title: suggestPRTitle(head, compare.commits),
81
- body: suggestPRBody(compare),
82
- draft: false,
83
- compare,
84
- warnings,
85
- };
86
- }
87
- async function readCompareSummary({ git, manager, base, head, warnings, }) {
88
- try {
89
- const compare = await manager.compareBranches(base, head);
90
- return {
91
- base,
92
- head,
93
- aheadBy: compare.aheadBy,
94
- headSha: compare.headSha,
95
- commits: compare.commits,
96
- files: compare.files,
97
- };
98
- }
99
- catch (error) {
100
- warnings.push(`Could not compare pushed GitHub branches: ${errorMessage(error)}`);
101
- }
102
- for (const ref of [base, `origin/${base}`]) {
103
- try {
104
- return fromLocalCompare(base, head, await git.compareWithBase(ref));
105
- }
106
- catch (error) {
107
- if (ref === `origin/${base}`) {
108
- warnings.push(`Could not compare local branch with ${base}: ${errorMessage(error)}`);
109
- }
110
- }
111
- }
112
- return { base, head, aheadBy: 0, headSha: null, commits: [], files: [] };
113
- }
114
- function fromLocalCompare(base, head, compare) {
115
- return {
116
- base,
117
- head,
118
- aheadBy: compare.aheadBy,
119
- headSha: compare.headSha,
120
- commits: compare.commits,
121
- files: compare.files,
122
- };
123
- }
124
- function inferBaseFromUpstream(upstream) {
125
- if (!upstream)
126
- return undefined;
127
- return upstream.replace(/^origin\//, "") || undefined;
128
- }
129
- function suggestPRTitle(head, commits) {
130
- const latest = commits.at(-1)?.message.trim();
131
- if (latest)
132
- return latest;
133
- return branchTitle(head);
134
- }
135
- function branchTitle(head) {
136
- const leaf = head.split("/").filter(Boolean).at(-1) ?? head;
137
- return leaf
138
- .replace(/[-_]+/g, " ")
139
- .replace(/\s+/g, " ")
140
- .trim()
141
- .replace(/^\w/, (char) => char.toUpperCase());
142
- }
143
- function suggestPRBody(compare) {
144
- const lines = [];
145
- if (compare.commits.length > 0) {
146
- lines.push("## Commits");
147
- for (const commit of compare.commits.slice(-10)) {
148
- lines.push(`- ${commit.message}`);
149
- }
150
- }
151
- if (compare.files.length > 0) {
152
- if (lines.length > 0)
153
- lines.push("");
154
- lines.push("## Changed files");
155
- for (const file of compare.files.slice(0, 20)) {
156
- lines.push(`- ${file.status} ${file.path}`);
157
- }
158
- if (compare.files.length > 20) {
159
- lines.push(`- ${compare.files.length - 20} more files`);
160
- }
161
- }
162
- return lines.join("\n");
163
- }
164
- export const githubRoutes = [
165
- // --- Token management ---
166
- route("GET", "/api/github/token", async ({ response, configStore }) => {
167
- const config = await configStore.load();
168
- const token = configStore.getGithubToken(config);
169
- const selectedRepository = getSelectedGitRepository(config);
170
- const cliAccounts = await new GitHubCliAuth().listAccounts();
171
- const selected = selectedRepository?.githubCredential;
172
- const base = {
173
- ok: true,
174
- configured: !!token || selected?.source === "gh",
175
- storedConfigured: !!token,
176
- deviceFlowAvailable: !!getClientId(),
177
- accounts: cliAccounts.accounts,
178
- cliAvailable: cliAccounts.available,
179
- cliError: cliAccounts.error,
180
- selected,
181
- repositoryName: selectedRepository?.name,
182
- };
183
- if (!selectedRepository && !token) {
184
- sendJson(response, { ...base, status: "not_configured" });
185
- return;
186
- }
187
- // The account behind the connection, resolved without an API call whenever
188
- // possible: a stored token remembers who it belongs to from connect time,
189
- // and a `gh` credential already names its login (avatars are public).
190
- let profile = configStore.getGithubProfile(config);
191
- if (!profile && token) {
192
- // Backfill for tokens stored before identity was captured, so existing
193
- // installs pick up an avatar on their next status check instead of
194
- // needing a reconnect.
195
- profile = await fetchGitHubProfile(token);
196
- if (profile)
197
- await configStore.setGithubProfile("github.com", profile);
198
- }
199
- try {
200
- if (selectedRepository) {
201
- const context = await requireGitHubContext(configStore, selectedRepository.path);
202
- const login = context.credential?.source === "gh" ? context.credential.login : profile?.login;
203
- const user = login
204
- ? {
205
- login,
206
- avatarUrl: login === profile?.login && profile.avatarUrl
207
- ? profile.avatarUrl
208
- : avatarForLogin(login),
209
- }
210
- : undefined;
211
- const repositorySlug = `${context.owner}/${context.repo}`;
212
- let repository;
213
- try {
214
- repository = await context.manager.repoInfo();
215
- }
216
- catch (error) {
217
- // A 404 here is the credential working perfectly and answering "no
218
- // such repository for you" — the signed-in account simply can't see
219
- // this one. Reporting that as a failed connection sent people off to
220
- // reconnect an account that was never broken.
221
- if (!(error instanceof GitHubApiError) || error.status !== 404)
222
- throw error;
223
- sendJson(response, {
224
- ...base,
225
- configured: true,
226
- status: "repo_access",
227
- credential: context.credential,
228
- repositorySlug,
229
- user,
230
- error: errorMessage(error),
231
- });
232
- return;
233
- }
234
- sendJson(response, {
235
- ...base,
236
- configured: true,
237
- status: "connected",
238
- credential: context.credential,
239
- repository,
240
- repositorySlug,
241
- user,
242
- });
243
- return;
244
- }
245
- if (!token)
246
- throw new Error("No stored GitHub token configured.");
247
- let account = profile;
248
- if (!account) {
249
- const viewer = await new GitHubManager(token, "", "").viewer();
250
- account = { login: viewer.login, avatarUrl: viewer.avatar_url };
251
- }
252
- sendJson(response, {
253
- ...base,
254
- status: "connected",
255
- user: {
256
- login: account.login,
257
- avatarUrl: account.avatarUrl ?? avatarForLogin(account.login),
258
- },
259
- });
260
- }
261
- catch (error) {
262
- const status = error instanceof GitHubApiError && (error.status === 401 || error.status === 403)
263
- ? "auth_error"
264
- : "connection_error";
265
- sendJson(response, { ...base, status, error: errorMessage(error) });
266
- }
267
- }),
268
- route("GET", "/api/github/accounts", async ({ response }) => {
269
- const result = await new GitHubCliAuth().listAccounts();
270
- sendJson(response, { ok: true, ...result });
271
- }),
272
- route("PUT", "/api/github/account", async ({ request, response, configStore }) => {
273
- try {
274
- const body = await readJson(request);
275
- const repository = typeof body.repository === "string" ? body.repository.trim() : "";
276
- const candidate = body.credential;
277
- if (!repository || !candidate || typeof candidate !== "object") {
278
- throw new Error("repository and credential are required");
279
- }
280
- const value = candidate;
281
- const host = typeof value.host === "string" ? value.host.trim() : "";
282
- if (host && host !== "github.com") {
283
- throw new Error("The selected repository uses github.com; choose a github.com account.");
284
- }
285
- let credential;
286
- if (value.source === "gh") {
287
- const login = typeof value.login === "string" ? value.login.trim() : "";
288
- if (!host || !login)
289
- throw new Error("GitHub CLI host and login are required");
290
- await new GitHubCliAuth().token(host, login);
291
- credential = { source: "gh", host, login };
292
- }
293
- else if (value.source === "stored") {
294
- const config = await configStore.load();
295
- if (!host || !configStore.getGithubToken(config, host)) {
296
- throw new Error(`No stored GitHub token configured for ${host || "that host"}.`);
297
- }
298
- credential = { source: "stored", host };
299
- }
300
- else {
301
- throw new Error("Unsupported GitHub credential source");
302
- }
303
- await configStore.setGitHubCredential(repository, credential);
304
- sendJson(response, { ok: true });
305
- }
306
- catch (error) {
307
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
308
- }
309
- }),
310
- route("POST", "/api/github/token", async ({ request, response, configStore }) => {
311
- try {
312
- const form = await readForm(request);
313
- const host = form.get("host")?.trim() || "github.com";
314
- const token = requiredFormValue(form, "token");
315
- await configStore.setGithubToken(host, token, await fetchGitHubProfile(token));
316
- const config = await configStore.load();
317
- const selectedRepository = getSelectedGitRepository(config);
318
- if (selectedRepository) {
319
- await configStore.setGitHubCredential(selectedRepository.name, { source: "stored", host });
320
- }
321
- sendJson(response, { ok: true });
322
- }
323
- catch (error) {
324
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
325
- }
326
- }),
327
- patternRoute(/^\/api\/github\/token\/([^/]+)$/, ["host"], async ({ request, response, configStore, params }) => {
328
- if (request.method !== "DELETE") {
329
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
330
- return;
331
- }
332
- await configStore.removeGithubToken(decodeURIComponent(params.host));
333
- sendJson(response, { ok: true });
334
- }),
335
- // --- OAuth Device Flow ---
336
- route("POST", "/api/github/oauth/start", async ({ response }) => {
337
- const clientId = getClientId();
338
- if (!clientId) {
339
- sendJson(response, { ok: false, error: "NOMOREIDE_GITHUB_CLIENT_ID is not set." }, 400);
340
- return;
341
- }
342
- try {
343
- const res = await fetch(GITHUB_DEVICE_CODE_URL, {
344
- method: "POST",
345
- headers: { Accept: "application/json", "Content-Type": "application/json" },
346
- body: JSON.stringify({ client_id: clientId, scope: GITHUB_SCOPES }),
347
- });
348
- const data = await res.json();
349
- if (data.error) {
350
- sendJson(response, { ok: false, error: data.error_description ?? data.error }, 400);
351
- return;
352
- }
353
- sendJson(response, {
354
- ok: true,
355
- device_code: data.device_code,
356
- user_code: data.user_code,
357
- verification_uri: data.verification_uri,
358
- verification_uri_complete: data.verification_uri_complete ?? data.verification_uri,
359
- expires_in: data.expires_in ?? 900,
360
- interval: data.interval ?? 5,
361
- });
362
- }
363
- catch (error) {
364
- sendJson(response, { ok: false, error: errorMessage(error) }, 500);
365
- }
366
- }),
367
- route("POST", "/api/github/oauth/poll", async ({ request, response, configStore }) => {
368
- const clientId = getClientId();
369
- if (!clientId) {
370
- sendJson(response, { ok: false, error: "NOMOREIDE_GITHUB_CLIENT_ID is not set." }, 400);
371
- return;
372
- }
373
- try {
374
- const body = await readJson(request);
375
- const deviceCode = typeof body.device_code === "string" ? body.device_code : "";
376
- if (!deviceCode) {
377
- sendJson(response, { ok: false, error: "device_code is required" }, 400);
378
- return;
379
- }
380
- const res = await fetch(GITHUB_ACCESS_TOKEN_URL, {
381
- method: "POST",
382
- headers: { Accept: "application/json", "Content-Type": "application/json" },
383
- body: JSON.stringify({
384
- client_id: clientId,
385
- device_code: deviceCode,
386
- grant_type: "urn:ietf:params:oauth:grant-type:device_code",
387
- }),
388
- });
389
- const data = await res.json();
390
- if (data.access_token) {
391
- await configStore.setGithubToken("github.com", data.access_token, await fetchGitHubProfile(data.access_token));
392
- const config = await configStore.load();
393
- const selectedRepository = getSelectedGitRepository(config);
394
- if (selectedRepository) {
395
- await configStore.setGitHubCredential(selectedRepository.name, {
396
- source: "stored",
397
- host: "github.com",
398
- });
399
- }
400
- sendJson(response, { ok: true, done: true });
401
- return;
402
- }
403
- // authorization_pending and slow_down are expected — not errors
404
- const pending = data.error === "authorization_pending" || data.error === "slow_down";
405
- if (pending) {
406
- sendJson(response, { ok: true, done: false, slowDown: data.error === "slow_down" });
407
- return;
408
- }
409
- sendJson(response, {
410
- ok: false,
411
- error: data.error_description ?? data.error ?? "Authorization failed",
412
- }, 400);
413
- }
414
- catch (error) {
415
- sendJson(response, { ok: false, error: errorMessage(error) }, 500);
416
- }
417
- }),
418
- route("GET", "/api/github/branches", async ({ response, configStore, cwd }) => {
419
- try {
420
- const gitCwd = await selectedGitCwd(configStore, cwd);
421
- const { manager } = await requireGitHubContext(configStore, gitCwd);
422
- const [repository, branches, status] = await Promise.all([
423
- manager.repoInfo(),
424
- manager.listBranches(),
425
- new GitManager(gitCwd).status().catch(() => null),
426
- ]);
427
- sendJson(response, {
428
- ok: true,
429
- repository,
430
- defaultBranch: repository.default_branch ?? null,
431
- currentBranch: status?.branch || null,
432
- branches,
433
- });
434
- }
435
- catch (error) {
436
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
437
- }
438
- }),
439
- // --- Pull Requests ---
440
- route("GET", "/api/github/prs", async ({ response, url, configStore, cwd }) => {
441
- try {
442
- const gitCwd = await selectedGitCwd(configStore, cwd);
443
- const { manager } = await requireGitHubContext(configStore, gitCwd);
444
- const state = (url.searchParams.get("state") || "open");
445
- const page = Number(url.searchParams.get("page")) || 1;
446
- const prs = await manager.listPRs(state, page);
447
- sendJson(response, { ok: true, prs });
448
- }
449
- catch (error) {
450
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
451
- }
452
- }),
453
- route("GET", "/api/github/pr-template", async ({ response, configStore, cwd }) => {
454
- try {
455
- const gitCwd = await selectedGitCwd(configStore, cwd);
456
- const { manager } = await requireGitHubContext(configStore, gitCwd);
457
- const template = await buildPRTemplate(gitCwd, manager);
458
- sendJson(response, { ok: true, template });
459
- }
460
- catch (error) {
461
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
462
- }
463
- }),
464
- route("POST", "/api/github/prs", async ({ request, response, configStore, cwd }) => {
465
- try {
466
- const gitCwd = await selectedGitCwd(configStore, cwd);
467
- const { manager } = await requireGitHubContext(configStore, gitCwd);
468
- const body = await readJson(request);
469
- const title = typeof body.title === "string" ? body.title.trim() : "";
470
- const head = typeof body.head === "string" ? body.head.trim() : "";
471
- const base = typeof body.base === "string" ? body.base.trim() : "";
472
- if (!title || !head || !base) {
473
- sendJson(response, { ok: false, error: "title, head, and base are required" }, 400);
474
- return;
475
- }
476
- const pr = await manager.createPR({
477
- title,
478
- body: typeof body.body === "string" ? body.body : undefined,
479
- head,
480
- base,
481
- draft: body.draft === true,
482
- });
483
- sendJson(response, { ok: true, pr });
484
- }
485
- catch (error) {
486
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
487
- }
488
- }),
489
- patternRoute(/^\/api\/github\/prs\/(\d+)$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
490
- if (request.method !== "GET") {
491
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
492
- return;
493
- }
494
- try {
495
- const gitCwd = await selectedGitCwd(configStore, cwd);
496
- const { manager } = await requireGitHubContext(configStore, gitCwd);
497
- const pr = await manager.getPR(Number(params.number));
498
- sendJson(response, { ok: true, pr });
499
- }
500
- catch (error) {
501
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
502
- }
503
- }),
504
- patternRoute(/^\/api\/github\/prs\/(\d+)\/merge$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
505
- if (request.method !== "POST") {
506
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
507
- return;
508
- }
509
- try {
510
- const gitCwd = await selectedGitCwd(configStore, cwd);
511
- const { manager } = await requireGitHubContext(configStore, gitCwd);
512
- const body = await readJson(request).catch(() => ({}));
513
- const requested = typeof body.method === "string" ? body.method : "squash";
514
- const method = (["merge", "squash", "rebase"].includes(requested)
515
- ? requested
516
- : "squash");
517
- const result = await manager.mergePR(Number(params.number), {
518
- method,
519
- commitTitle: typeof body.commitTitle === "string" ? body.commitTitle : undefined,
520
- commitMessage: typeof body.commitMessage === "string" ? body.commitMessage : undefined,
521
- });
522
- sendJson(response, { ok: true, ...result });
523
- }
524
- catch (error) {
525
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
526
- }
527
- }),
528
- patternRoute(/^\/api\/github\/prs\/(\d+)\/review$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
529
- if (request.method !== "GET") {
530
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
531
- return;
532
- }
533
- try {
534
- const gitCwd = await selectedGitCwd(configStore, cwd);
535
- const { manager } = await requireGitHubContext(configStore, gitCwd);
536
- const number = Number(params.number);
537
- const pr = await manager.getPR(number);
538
- const [files, reviews, comments, checks] = await Promise.all([
539
- manager.listPRFiles(number),
540
- manager.listPRReviews(number),
541
- manager.listIssueComments(number),
542
- manager.getCommitChecks(pr.head.sha),
543
- ]);
544
- sendJson(response, {
545
- ok: true,
546
- cockpit: { pr, files, reviews, comments, checks },
547
- });
548
- }
549
- catch (error) {
550
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
551
- }
552
- }),
553
- patternRoute(/^\/api\/github\/prs\/(\d+)\/diff$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
554
- if (request.method !== "GET") {
555
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
556
- return;
557
- }
558
- try {
559
- const gitCwd = await selectedGitCwd(configStore, cwd);
560
- const { manager } = await requireGitHubContext(configStore, gitCwd);
561
- const diff = await manager.getPRDiff(Number(params.number));
562
- sendText(response, diff);
563
- }
564
- catch (error) {
565
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
566
- }
567
- }),
568
- // --- Issues ---
569
- route("GET", "/api/github/issues", async ({ response, url, configStore, cwd }) => {
570
- try {
571
- const gitCwd = await selectedGitCwd(configStore, cwd);
572
- const { manager } = await requireGitHubContext(configStore, gitCwd);
573
- const state = (url.searchParams.get("state") || "open");
574
- const page = Number(url.searchParams.get("page")) || 1;
575
- const issues = await manager.listIssues(state, page);
576
- sendJson(response, { ok: true, issues });
577
- }
578
- catch (error) {
579
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
580
- }
581
- }),
582
- route("POST", "/api/github/issues", async ({ request, response, configStore, cwd }) => {
583
- try {
584
- const gitCwd = await selectedGitCwd(configStore, cwd);
585
- const { manager } = await requireGitHubContext(configStore, gitCwd);
586
- const body = await readJson(request);
587
- const title = typeof body.title === "string" ? body.title.trim() : "";
588
- if (!title) {
589
- sendJson(response, { ok: false, error: "title is required" }, 400);
590
- return;
591
- }
592
- const issue = await manager.createIssue({
593
- title,
594
- body: typeof body.body === "string" ? body.body : undefined,
595
- });
596
- sendJson(response, { ok: true, issue });
597
- }
598
- catch (error) {
599
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
600
- }
601
- }),
602
- patternRoute(/^\/api\/github\/issues\/(\d+)$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
603
- if (request.method !== "GET") {
604
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
605
- return;
606
- }
607
- try {
608
- const gitCwd = await selectedGitCwd(configStore, cwd);
609
- const { manager } = await requireGitHubContext(configStore, gitCwd);
610
- const issue = await manager.getIssue(Number(params.number));
611
- sendJson(response, { ok: true, issue });
612
- }
613
- catch (error) {
614
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
615
- }
616
- }),
617
- patternRoute(/^\/api\/github\/issues\/(\d+)\/comments$/, ["number"], async ({ request, response, configStore, cwd, params }) => {
618
- const gitCwd = await selectedGitCwd(configStore, cwd);
619
- const number = Number(params.number);
620
- if (request.method === "GET") {
621
- try {
622
- const { manager } = await requireGitHubContext(configStore, gitCwd);
623
- const comments = await manager.listIssueComments(number);
624
- sendJson(response, { ok: true, comments });
625
- }
626
- catch (error) {
627
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
628
- }
629
- return;
630
- }
631
- if (request.method === "POST") {
632
- try {
633
- const { manager } = await requireGitHubContext(configStore, gitCwd);
634
- const body = await readJson(request);
635
- const text = typeof body.body === "string" ? body.body.trim() : "";
636
- if (!text) {
637
- sendJson(response, { ok: false, error: "body is required" }, 400);
638
- return;
639
- }
640
- const comment = await manager.addIssueComment(number, text);
641
- sendJson(response, { ok: true, comment });
642
- }
643
- catch (error) {
644
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
645
- }
646
- return;
647
- }
648
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
649
- }),
650
- // --- CI / Actions ---
651
- patternRoute(/^\/api\/github\/ci\/([0-9a-f]{4,64})$/, ["sha"], async ({ request, response, configStore, cwd, params }) => {
652
- if (request.method !== "GET") {
653
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
654
- return;
655
- }
656
- try {
657
- const gitCwd = await selectedGitCwd(configStore, cwd);
658
- const ctx = await optionalGitHubContext(configStore, gitCwd);
659
- if (!ctx) {
660
- sendJson(response, { ok: true, status: { sha: params.sha, state: "unknown", totalCount: 0, runs: [] } });
661
- return;
662
- }
663
- const status = await ctx.manager.getCommitChecks(params.sha);
664
- sendJson(response, { ok: true, status });
665
- }
666
- catch (error) {
667
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
668
- }
669
- }),
670
- route("GET", "/api/github/runs", async ({ response, url, configStore, cwd }) => {
671
- try {
672
- const gitCwd = await selectedGitCwd(configStore, cwd);
673
- const { manager } = await requireGitHubContext(configStore, gitCwd);
674
- const branch = url.searchParams.get("branch") || undefined;
675
- const page = Number(url.searchParams.get("page")) || 1;
676
- const runs = await manager.listWorkflowRuns(branch, page);
677
- sendJson(response, { ok: true, runs });
678
- }
679
- catch (error) {
680
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
681
- }
682
- }),
683
- patternRoute(/^\/api\/github\/runs\/(\d+)\/jobs$/, ["runId"], async ({ request, response, configStore, cwd, params }) => {
684
- if (request.method !== "GET") {
685
- sendJson(response, { ok: false, error: "Method not allowed" }, 405);
686
- return;
687
- }
688
- try {
689
- const gitCwd = await selectedGitCwd(configStore, cwd);
690
- const { manager } = await requireGitHubContext(configStore, gitCwd);
691
- const jobs = await manager.listWorkflowRunJobs(Number(params.runId));
692
- sendJson(response, { ok: true, jobs });
693
- }
694
- catch (error) {
695
- sendJson(response, { ok: false, error: errorMessage(error) }, 400);
696
- }
697
- }),
698
- ];
699
- //# sourceMappingURL=github-routes.js.map