nomoreide 0.2.0 → 0.3.2

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 (624) hide show
  1. package/README.md +12 -9
  2. package/bin/nomoreide.js +82 -0
  3. package/package.json +24 -132
  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 -359
  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 -258
  149. package/dist/core/cloudflare-manager.js +0 -414
  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 -348
  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 -84
  167. package/dist/core/daemon-client.js +0 -156
  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 -230
  254. package/dist/core/github-manager.js +0 -324
  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/api-base.d.ts +0 -24
  296. package/dist/core/providers/api-base.js +0 -44
  297. package/dist/core/providers/api-base.js.map +0 -1
  298. package/dist/core/providers/credentials.d.ts +0 -93
  299. package/dist/core/providers/credentials.js +0 -88
  300. package/dist/core/providers/credentials.js.map +0 -1
  301. package/dist/core/providers/deploy-provider.d.ts +0 -327
  302. package/dist/core/providers/deploy-provider.js +0 -25
  303. package/dist/core/providers/deploy-provider.js.map +0 -1
  304. package/dist/core/providers/egress.d.ts +0 -58
  305. package/dist/core/providers/egress.js +0 -124
  306. package/dist/core/providers/egress.js.map +0 -1
  307. package/dist/core/providers/host-bridge.d.ts +0 -20
  308. package/dist/core/providers/host-bridge.js +0 -57
  309. package/dist/core/providers/host-bridge.js.map +0 -1
  310. package/dist/core/providers/host-provider.d.ts +0 -160
  311. package/dist/core/providers/host-provider.js +0 -2
  312. package/dist/core/providers/host-provider.js.map +0 -1
  313. package/dist/core/providers/oauth.d.ts +0 -97
  314. package/dist/core/providers/oauth.js +0 -238
  315. package/dist/core/providers/oauth.js.map +0 -1
  316. package/dist/core/providers/project-resolution.d.ts +0 -81
  317. package/dist/core/providers/project-resolution.js +0 -101
  318. package/dist/core/providers/project-resolution.js.map +0 -1
  319. package/dist/core/providers/registry.d.ts +0 -73
  320. package/dist/core/providers/registry.js +0 -53
  321. package/dist/core/providers/registry.js.map +0 -1
  322. package/dist/core/providers/strings.d.ts +0 -95
  323. package/dist/core/providers/strings.js +0 -59
  324. package/dist/core/providers/strings.js.map +0 -1
  325. package/dist/core/public-config.d.ts +0 -18
  326. package/dist/core/public-config.js +0 -76
  327. package/dist/core/public-config.js.map +0 -1
  328. package/dist/core/read-only-files.d.ts +0 -28
  329. package/dist/core/read-only-files.js +0 -93
  330. package/dist/core/read-only-files.js.map +0 -1
  331. package/dist/core/repo-create.d.ts +0 -11
  332. package/dist/core/repo-create.js +0 -54
  333. package/dist/core/repo-create.js.map +0 -1
  334. package/dist/core/repo-match.d.ts +0 -12
  335. package/dist/core/repo-match.js +0 -40
  336. package/dist/core/repo-match.js.map +0 -1
  337. package/dist/core/repo-onboard.d.ts +0 -297
  338. package/dist/core/repo-onboard.js +0 -667
  339. package/dist/core/repo-onboard.js.map +0 -1
  340. package/dist/core/repro-bundle.d.ts +0 -30
  341. package/dist/core/repro-bundle.js +0 -116
  342. package/dist/core/repro-bundle.js.map +0 -1
  343. package/dist/core/service-graph.d.ts +0 -50
  344. package/dist/core/service-graph.js +0 -143
  345. package/dist/core/service-graph.js.map +0 -1
  346. package/dist/core/service-health.d.ts +0 -10
  347. package/dist/core/service-health.js +0 -46
  348. package/dist/core/service-health.js.map +0 -1
  349. package/dist/core/service-log-source.d.ts +0 -9
  350. package/dist/core/service-log-source.js +0 -49
  351. package/dist/core/service-log-source.js.map +0 -1
  352. package/dist/core/service-registry.d.ts +0 -52
  353. package/dist/core/service-registry.js +0 -101
  354. package/dist/core/service-registry.js.map +0 -1
  355. package/dist/core/snapshot-manager.d.ts +0 -62
  356. package/dist/core/snapshot-manager.js +0 -219
  357. package/dist/core/snapshot-manager.js.map +0 -1
  358. package/dist/core/ssh-servers.d.ts +0 -89
  359. package/dist/core/ssh-servers.js +0 -251
  360. package/dist/core/ssh-servers.js.map +0 -1
  361. package/dist/core/ssh-service-runner.d.ts +0 -7
  362. package/dist/core/ssh-service-runner.js +0 -36
  363. package/dist/core/ssh-service-runner.js.map +0 -1
  364. package/dist/core/ssh-setup.d.ts +0 -11
  365. package/dist/core/ssh-setup.js +0 -49
  366. package/dist/core/ssh-setup.js.map +0 -1
  367. package/dist/core/system-processes.d.ts +0 -29
  368. package/dist/core/system-processes.js +0 -119
  369. package/dist/core/system-processes.js.map +0 -1
  370. package/dist/core/terminal-manager.d.ts +0 -123
  371. package/dist/core/terminal-manager.js +0 -470
  372. package/dist/core/terminal-manager.js.map +0 -1
  373. package/dist/core/terminal-session.d.ts +0 -122
  374. package/dist/core/terminal-session.js +0 -242
  375. package/dist/core/terminal-session.js.map +0 -1
  376. package/dist/core/terminal-spawn.d.ts +0 -26
  377. package/dist/core/terminal-spawn.js +0 -63
  378. package/dist/core/terminal-spawn.js.map +0 -1
  379. package/dist/core/test-runner.d.ts +0 -69
  380. package/dist/core/test-runner.js +0 -199
  381. package/dist/core/test-runner.js.map +0 -1
  382. package/dist/core/timeline-store.d.ts +0 -20
  383. package/dist/core/timeline-store.js +0 -36
  384. package/dist/core/timeline-store.js.map +0 -1
  385. package/dist/core/tool-call-store.d.ts +0 -25
  386. package/dist/core/tool-call-store.js +0 -62
  387. package/dist/core/tool-call-store.js.map +0 -1
  388. package/dist/core/types.d.ts +0 -312
  389. package/dist/core/types.js +0 -2
  390. package/dist/core/types.js.map +0 -1
  391. package/dist/core/usage-history.d.ts +0 -81
  392. package/dist/core/usage-history.js +0 -149
  393. package/dist/core/usage-history.js.map +0 -1
  394. package/dist/core/vercel-actions.d.ts +0 -71
  395. package/dist/core/vercel-actions.js +0 -109
  396. package/dist/core/vercel-actions.js.map +0 -1
  397. package/dist/core/vercel-auth.d.ts +0 -40
  398. package/dist/core/vercel-auth.js +0 -88
  399. package/dist/core/vercel-auth.js.map +0 -1
  400. package/dist/core/vercel-context.d.ts +0 -2
  401. package/dist/core/vercel-context.js +0 -97
  402. package/dist/core/vercel-context.js.map +0 -1
  403. package/dist/core/vercel-manager.d.ts +0 -268
  404. package/dist/core/vercel-manager.js +0 -401
  405. package/dist/core/vercel-manager.js.map +0 -1
  406. package/dist/core/vercel-oauth.d.ts +0 -37
  407. package/dist/core/vercel-oauth.js +0 -57
  408. package/dist/core/vercel-oauth.js.map +0 -1
  409. package/dist/core/vercel-provider.d.ts +0 -23
  410. package/dist/core/vercel-provider.js +0 -276
  411. package/dist/core/vercel-provider.js.map +0 -1
  412. package/dist/core/vultr-actions.d.ts +0 -52
  413. package/dist/core/vultr-actions.js +0 -62
  414. package/dist/core/vultr-actions.js.map +0 -1
  415. package/dist/core/vultr-auth.d.ts +0 -32
  416. package/dist/core/vultr-auth.js +0 -54
  417. package/dist/core/vultr-auth.js.map +0 -1
  418. package/dist/core/vultr-context.d.ts +0 -2
  419. package/dist/core/vultr-context.js +0 -55
  420. package/dist/core/vultr-context.js.map +0 -1
  421. package/dist/core/vultr-manager.d.ts +0 -113
  422. package/dist/core/vultr-manager.js +0 -170
  423. package/dist/core/vultr-manager.js.map +0 -1
  424. package/dist/core/vultr-provider.d.ts +0 -69
  425. package/dist/core/vultr-provider.js +0 -226
  426. package/dist/core/vultr-provider.js.map +0 -1
  427. package/dist/core/workflow-triggers.d.ts +0 -139
  428. package/dist/core/workflow-triggers.js +0 -208
  429. package/dist/core/workflow-triggers.js.map +0 -1
  430. package/dist/core/workflows.d.ts +0 -290
  431. package/dist/core/workflows.js +0 -190
  432. package/dist/core/workflows.js.map +0 -1
  433. package/dist/index.d.ts +0 -2
  434. package/dist/index.js +0 -66
  435. package/dist/index.js.map +0 -1
  436. package/dist/mcp/server.d.ts +0 -37
  437. package/dist/mcp/server.js +0 -84
  438. package/dist/mcp/server.js.map +0 -1
  439. package/dist/mcp/tools/agent-env.d.ts +0 -9
  440. package/dist/mcp/tools/agent-env.js +0 -160
  441. package/dist/mcp/tools/agent-env.js.map +0 -1
  442. package/dist/mcp/tools/agent-profiles.d.ts +0 -9
  443. package/dist/mcp/tools/agent-profiles.js +0 -197
  444. package/dist/mcp/tools/agent-profiles.js.map +0 -1
  445. package/dist/mcp/tools/agent-registry.d.ts +0 -9
  446. package/dist/mcp/tools/agent-registry.js +0 -81
  447. package/dist/mcp/tools/agent-registry.js.map +0 -1
  448. package/dist/mcp/tools/agent.d.ts +0 -4
  449. package/dist/mcp/tools/agent.js +0 -29
  450. package/dist/mcp/tools/agent.js.map +0 -1
  451. package/dist/mcp/tools/context.d.ts +0 -36
  452. package/dist/mcp/tools/context.js +0 -69
  453. package/dist/mcp/tools/context.js.map +0 -1
  454. package/dist/mcp/tools/database.d.ts +0 -9
  455. package/dist/mcp/tools/database.js +0 -166
  456. package/dist/mcp/tools/database.js.map +0 -1
  457. package/dist/mcp/tools/docs.d.ts +0 -29
  458. package/dist/mcp/tools/docs.js +0 -134
  459. package/dist/mcp/tools/docs.js.map +0 -1
  460. package/dist/mcp/tools/errors.d.ts +0 -12
  461. package/dist/mcp/tools/errors.js +0 -47
  462. package/dist/mcp/tools/errors.js.map +0 -1
  463. package/dist/mcp/tools/git.d.ts +0 -4
  464. package/dist/mcp/tools/git.js +0 -209
  465. package/dist/mcp/tools/git.js.map +0 -1
  466. package/dist/mcp/tools/github.d.ts +0 -4
  467. package/dist/mcp/tools/github.js +0 -196
  468. package/dist/mcp/tools/github.js.map +0 -1
  469. package/dist/mcp/tools/index.d.ts +0 -36
  470. package/dist/mcp/tools/index.js +0 -61
  471. package/dist/mcp/tools/index.js.map +0 -1
  472. package/dist/mcp/tools/onboard.d.ts +0 -10
  473. package/dist/mcp/tools/onboard.js +0 -30
  474. package/dist/mcp/tools/onboard.js.map +0 -1
  475. package/dist/mcp/tools/provider.d.ts +0 -16
  476. package/dist/mcp/tools/provider.js +0 -110
  477. package/dist/mcp/tools/provider.js.map +0 -1
  478. package/dist/mcp/tools/services.d.ts +0 -13
  479. package/dist/mcp/tools/services.js +0 -204
  480. package/dist/mcp/tools/services.js.map +0 -1
  481. package/dist/mcp/tools/snapshots.d.ts +0 -8
  482. package/dist/mcp/tools/snapshots.js +0 -37
  483. package/dist/mcp/tools/snapshots.js.map +0 -1
  484. package/dist/mcp/tools/terminal.d.ts +0 -4
  485. package/dist/mcp/tools/terminal.js +0 -38
  486. package/dist/mcp/tools/terminal.js.map +0 -1
  487. package/dist/tui/app.d.ts +0 -22
  488. package/dist/tui/app.js +0 -138
  489. package/dist/tui/app.js.map +0 -1
  490. package/dist/web/agent-info.d.ts +0 -82
  491. package/dist/web/agent-info.js +0 -775
  492. package/dist/web/agent-info.js.map +0 -1
  493. package/dist/web/client/assets/SymbolsNerdFontMono-Regular-DDncdh2F.ttf +0 -0
  494. package/dist/web/client/assets/code-editor-TE0sjFGO.js +0 -30
  495. package/dist/web/client/assets/context-graph-B9MnBpp6.js +0 -7
  496. package/dist/web/client/assets/core-DhEqZVGG.js +0 -1
  497. package/dist/web/client/assets/event-BK_86lmQ.js +0 -1
  498. package/dist/web/client/assets/index-BhDAhmA1.js +0 -1
  499. package/dist/web/client/assets/index-CSo__8A6.css +0 -1
  500. package/dist/web/client/assets/index-DAJvBqn9.js +0 -352
  501. package/dist/web/client/assets/nomoreide-favicon-Ds7Tgj9p.svg +0 -24
  502. package/dist/web/client/assets/system-process-table-DetWu0Gj.js +0 -1
  503. package/dist/web/client/assets/window-DlR023_X.js +0 -1
  504. package/dist/web/client/index.html +0 -44
  505. package/dist/web/dashboard.d.ts +0 -61
  506. package/dist/web/dashboard.js +0 -221
  507. package/dist/web/dashboard.js.map +0 -1
  508. package/dist/web/directories.d.ts +0 -27
  509. package/dist/web/directories.js +0 -81
  510. package/dist/web/directories.js.map +0 -1
  511. package/dist/web/http-utils.d.ts +0 -13
  512. package/dist/web/http-utils.js +0 -72
  513. package/dist/web/http-utils.js.map +0 -1
  514. package/dist/web/routes/agent-chat-routes.d.ts +0 -3
  515. package/dist/web/routes/agent-chat-routes.js +0 -186
  516. package/dist/web/routes/agent-chat-routes.js.map +0 -1
  517. package/dist/web/routes/agent-env-routes.d.ts +0 -9
  518. package/dist/web/routes/agent-env-routes.js +0 -86
  519. package/dist/web/routes/agent-env-routes.js.map +0 -1
  520. package/dist/web/routes/agent-profile-routes.d.ts +0 -8
  521. package/dist/web/routes/agent-profile-routes.js +0 -211
  522. package/dist/web/routes/agent-profile-routes.js.map +0 -1
  523. package/dist/web/routes/agent-registry-routes.d.ts +0 -2
  524. package/dist/web/routes/agent-registry-routes.js +0 -375
  525. package/dist/web/routes/agent-registry-routes.js.map +0 -1
  526. package/dist/web/routes/agent-routes.d.ts +0 -3
  527. package/dist/web/routes/agent-routes.js +0 -73
  528. package/dist/web/routes/agent-routes.js.map +0 -1
  529. package/dist/web/routes/agent-settings-routes.d.ts +0 -8
  530. package/dist/web/routes/agent-settings-routes.js +0 -67
  531. package/dist/web/routes/agent-settings-routes.js.map +0 -1
  532. package/dist/web/routes/context-library-routes.d.ts +0 -2
  533. package/dist/web/routes/context-library-routes.js +0 -139
  534. package/dist/web/routes/context-library-routes.js.map +0 -1
  535. package/dist/web/routes/context.d.ts +0 -73
  536. package/dist/web/routes/context.js +0 -48
  537. package/dist/web/routes/context.js.map +0 -1
  538. package/dist/web/routes/dashboard-routes.d.ts +0 -3
  539. package/dist/web/routes/dashboard-routes.js +0 -47
  540. package/dist/web/routes/dashboard-routes.js.map +0 -1
  541. package/dist/web/routes/database-routes.d.ts +0 -3
  542. package/dist/web/routes/database-routes.js +0 -341
  543. package/dist/web/routes/database-routes.js.map +0 -1
  544. package/dist/web/routes/docker-routes.d.ts +0 -7
  545. package/dist/web/routes/docker-routes.js +0 -122
  546. package/dist/web/routes/docker-routes.js.map +0 -1
  547. package/dist/web/routes/errors-routes.d.ts +0 -3
  548. package/dist/web/routes/errors-routes.js +0 -77
  549. package/dist/web/routes/errors-routes.js.map +0 -1
  550. package/dist/web/routes/extensions-routes.d.ts +0 -14
  551. package/dist/web/routes/extensions-routes.js +0 -21
  552. package/dist/web/routes/extensions-routes.js.map +0 -1
  553. package/dist/web/routes/git-routes.d.ts +0 -3
  554. package/dist/web/routes/git-routes.js +0 -598
  555. package/dist/web/routes/git-routes.js.map +0 -1
  556. package/dist/web/routes/github-context.d.ts +0 -11
  557. package/dist/web/routes/github-context.js +0 -34
  558. package/dist/web/routes/github-context.js.map +0 -1
  559. package/dist/web/routes/github-routes.d.ts +0 -2
  560. package/dist/web/routes/github-routes.js +0 -699
  561. package/dist/web/routes/github-routes.js.map +0 -1
  562. package/dist/web/routes/host-routes.d.ts +0 -2
  563. package/dist/web/routes/host-routes.js +0 -188
  564. package/dist/web/routes/host-routes.js.map +0 -1
  565. package/dist/web/routes/index.d.ts +0 -10
  566. package/dist/web/routes/index.js +0 -72
  567. package/dist/web/routes/index.js.map +0 -1
  568. package/dist/web/routes/jetbrains-import-routes.d.ts +0 -2
  569. package/dist/web/routes/jetbrains-import-routes.js +0 -121
  570. package/dist/web/routes/jetbrains-import-routes.js.map +0 -1
  571. package/dist/web/routes/log-sources-routes.d.ts +0 -6
  572. package/dist/web/routes/log-sources-routes.js +0 -102
  573. package/dist/web/routes/log-sources-routes.js.map +0 -1
  574. package/dist/web/routes/metrics-routes.d.ts +0 -3
  575. package/dist/web/routes/metrics-routes.js +0 -60
  576. package/dist/web/routes/metrics-routes.js.map +0 -1
  577. package/dist/web/routes/onboard-routes.d.ts +0 -9
  578. package/dist/web/routes/onboard-routes.js +0 -146
  579. package/dist/web/routes/onboard-routes.js.map +0 -1
  580. package/dist/web/routes/overview-routes.d.ts +0 -2
  581. package/dist/web/routes/overview-routes.js +0 -36
  582. package/dist/web/routes/overview-routes.js.map +0 -1
  583. package/dist/web/routes/provider-routes.d.ts +0 -2
  584. package/dist/web/routes/provider-routes.js +0 -558
  585. package/dist/web/routes/provider-routes.js.map +0 -1
  586. package/dist/web/routes/service-routes.d.ts +0 -3
  587. package/dist/web/routes/service-routes.js +0 -511
  588. package/dist/web/routes/service-routes.js.map +0 -1
  589. package/dist/web/routes/settings-routes.d.ts +0 -2
  590. package/dist/web/routes/settings-routes.js +0 -151
  591. package/dist/web/routes/settings-routes.js.map +0 -1
  592. package/dist/web/routes/shell-routes.d.ts +0 -22
  593. package/dist/web/routes/shell-routes.js +0 -75
  594. package/dist/web/routes/shell-routes.js.map +0 -1
  595. package/dist/web/routes/skills-routes.d.ts +0 -2
  596. package/dist/web/routes/skills-routes.js +0 -49
  597. package/dist/web/routes/skills-routes.js.map +0 -1
  598. package/dist/web/routes/snapshot-routes.d.ts +0 -8
  599. package/dist/web/routes/snapshot-routes.js +0 -194
  600. package/dist/web/routes/snapshot-routes.js.map +0 -1
  601. package/dist/web/routes/ssh-server-routes.d.ts +0 -10
  602. package/dist/web/routes/ssh-server-routes.js +0 -163
  603. package/dist/web/routes/ssh-server-routes.js.map +0 -1
  604. package/dist/web/routes/terminal-routes.d.ts +0 -7
  605. package/dist/web/routes/terminal-routes.js +0 -313
  606. package/dist/web/routes/terminal-routes.js.map +0 -1
  607. package/dist/web/routes/workflow-routes.d.ts +0 -8
  608. package/dist/web/routes/workflow-routes.js +0 -45
  609. package/dist/web/routes/workflow-routes.js.map +0 -1
  610. package/dist/web/routes/workflow-trigger-routes.d.ts +0 -9
  611. package/dist/web/routes/workflow-trigger-routes.js +0 -78
  612. package/dist/web/routes/workflow-trigger-routes.js.map +0 -1
  613. package/dist/web/server.d.ts +0 -31
  614. package/dist/web/server.js +0 -325
  615. package/dist/web/server.js.map +0 -1
  616. package/dist/web/service-tester.d.ts +0 -16
  617. package/dist/web/service-tester.js +0 -107
  618. package/dist/web/service-tester.js.map +0 -1
  619. package/dist/web/static-assets.d.ts +0 -9
  620. package/dist/web/static-assets.js +0 -77
  621. package/dist/web/static-assets.js.map +0 -1
  622. package/dist/web/usage-info.d.ts +0 -56
  623. package/dist/web/usage-info.js +0 -265
  624. 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, githubOAuthBase } 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 DEVICE_CODE_PATH = "/login/device/code";
9
- const ACCESS_TOKEN_PATH = "/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(`${githubOAuthBase()}${DEVICE_CODE_PATH}`, {
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(`${githubOAuthBase()}${ACCESS_TOKEN_PATH}`, {
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