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,160 +0,0 @@
1
- import type { SshServerDefinition } from "../types.js";
2
- import type { ProviderAccount } from "./deploy-provider.js";
3
- import type { ProviderApiSpec } from "./egress.js";
4
- import type { ProviderStrings } from "./strings.js";
5
- /**
6
- * The contract an infrastructure host implements — Vultr today, DigitalOcean
7
- * and Hetzner next.
8
- *
9
- * This is the *second* contract, and it exists because the first one could not
10
- * hold it. A Vultr instance has no projects, no deployments, no build logs and
11
- * no environment variables; what it has is an address, a power state, and a
12
- * shell. One `Plugin` interface wide enough for both would have been a union of
13
- * two disjoint halves, so `DeployProvider` and `HostProvider` stay separate and
14
- * narrow — see §2 of `docs/plans/2026-08-13-provider-registry-design.md`.
15
- *
16
- * What the two contracts *do* share is deliberately shared rather than
17
- * re-declared: {@link ProviderAccount}, the whole of `providers/credentials.ts`
18
- * (a host provider's token resolves through the same three-source model), and
19
- * the read-safe / write-capable split. That overlap is the evidence the
20
- * provider layer generalized rather than just being renamed.
21
- *
22
- * {@link HostProvider.toSshTarget} is why this contract earns its keep: a
23
- * provider instance becomes a row in the SSH server list the user already has,
24
- * with the existing probe, metrics and terminal working against it, without
25
- * anyone registering it by hand.
26
- */
27
- /**
28
- * Normalized power state, chosen — like {@link
29
- * import("./deploy-provider.js").ProviderDeploymentState} — to be the
30
- * intersection that drives an icon and a filter. Anything finer belongs in
31
- * `rawState`.
32
- *
33
- * There is no `suspended`: a vendor lock (Vultr's `suspended`, and whatever
34
- * each other IaaS calls it) is something the user must act on, which is what
35
- * `error` already means to the UI, and the vendor's own word survives in
36
- * `rawState`. That is the pressure valve the deploy contract added on day one
37
- * and this one inherits.
38
- */
39
- export type HostInstanceState = "running" | "stopped" | "provisioning" | "error" | "unknown";
40
- /** One virtual machine. */
41
- export interface HostInstance {
42
- id: string;
43
- /** What the user named it, falling back to its hostname or id. */
44
- label: string;
45
- /** Drives the icon and the filter. */
46
- state: HostInstanceState;
47
- /** The vendor's own word for the state, shown in the UI detail. */
48
- rawState: string;
49
- /**
50
- * Public IPv4. Absent while the instance is still being provisioned, which
51
- * is exactly when it has no address to be reached at.
52
- */
53
- ipv4?: string;
54
- ipv6?: string;
55
- /** The instance's own hostname, when the vendor reports one. */
56
- hostname?: string;
57
- /** The vendor's region code — `ewr`, `nyc3`, `fsn1`. */
58
- region?: string;
59
- /** The vendor's plan / size id. */
60
- plan?: string;
61
- /** Operating system, as the vendor describes it. */
62
- os?: string;
63
- specs?: {
64
- vcpus?: number;
65
- memoryMb?: number;
66
- diskGb?: number;
67
- };
68
- tags: string[];
69
- createdAt?: number;
70
- /**
71
- * The login the vendor created on the machine — `root` for Vultr's default
72
- * scheme, `linuxuser` for its unprivileged one, `ubuntu` or `ec2-user`
73
- * elsewhere. Neutral because every IaaS builds an image with *some* account
74
- * on it, and load-bearing because {@link HostProvider.toSshTarget} without it
75
- * produces a host that `ssh` tries to reach as the local username.
76
- */
77
- defaultUser?: string;
78
- }
79
- /** Which provider instance backs an SSH host, carried into the servers list. */
80
- export interface HostInstanceRef {
81
- providerId: string;
82
- /** The provider's display name, so the row can be labelled without a lookup. */
83
- providerName: string;
84
- instanceId: string;
85
- state: HostInstanceState;
86
- rawState: string;
87
- region?: string;
88
- }
89
- /**
90
- * An SSH target adopted from a provider instance — a plain
91
- * {@link SshServerDefinition}, which is the point: everything downstream
92
- * (`probeSshServer`, `readRemoteHostMetrics`, the terminal route, the remote
93
- * service runner) already takes one and needs no knowledge of providers.
94
- */
95
- export interface HostSshTarget extends SshServerDefinition {
96
- instance: HostInstanceRef;
97
- }
98
- /** The read-safe half. Nothing here starts, stops or destroys a machine. */
99
- export interface HostProvider {
100
- /** Signed-in account. Reuses the deploy contract's type — an account is an account. */
101
- account(): Promise<ProviderAccount>;
102
- listInstances(): Promise<HostInstance[]>;
103
- getInstance(id: string): Promise<HostInstance>;
104
- /**
105
- * The instance as an SSH host, or null when there is nothing to connect to
106
- * yet.
107
- *
108
- * Nullable because a machine that is still provisioning genuinely has no
109
- * address, and the alternative — inventing a placeholder host — would put a
110
- * row in the servers list that can only ever fail to connect. A *stopped*
111
- * instance still returns a target: it keeps its address, and being able to
112
- * see it in the list is how the user notices it is down.
113
- */
114
- toSshTarget(instance: HostInstance): HostSshTarget | null;
115
- }
116
- /**
117
- * The write-capable half — dashboard-only, never an MCP tool.
118
- *
119
- * Split from {@link HostProvider} for the same reason `git-actions.ts` is split
120
- * from `git-manager.ts`: halting a production database server is not something
121
- * an agent holding read tools should be one call away from. §7 of the design
122
- * plan sketched `run?()` on the read interface; writing it that way would have
123
- * been the first crack in a boundary the rest of the codebase keeps.
124
- *
125
- * Named actions rather than `start()`/`stop()`/`reboot()` for the reason the
126
- * deploy contract gives: "halt" is Vultr's word, "power_off" is DigitalOcean's,
127
- * and the manifest is where a vendor's vocabulary belongs.
128
- */
129
- export interface HostProviderActions {
130
- run(action: string, instanceId: string): Promise<void>;
131
- }
132
- /**
133
- * The declarative half — what a generic view needs to render a host provider
134
- * without knowing which one it is.
135
- */
136
- export interface HostProviderManifest {
137
- id: string;
138
- name: string;
139
- kind: "host";
140
- /**
141
- * This provider's own words, per locale — the same field, the same meaning
142
- * and the same enforcement as a deploy provider's.
143
- *
144
- * A host provider needs it at least as much: "halt" is Vultr's word,
145
- * "power_off" is DigitalOcean's, and neither is a sentence a host catalogue
146
- * could have been written to contain. No `scope.label` here — a host
147
- * provider's instances are not grouped under anything the user picks between.
148
- */
149
- strings: ProviderStrings;
150
- /** Action names accepted by {@link HostProviderActions.run}. */
151
- actions: string[];
152
- /** The subset of `actions` that interrupts a running machine; the UI confirms these first. */
153
- productionAffecting: string[];
154
- /**
155
- * The egress allowlist — every host this provider may reach. Identical in
156
- * meaning and enforcement to a deploy provider's, and one of the few fields
157
- * the two contracts share, because the daemon it runs inside is the same one.
158
- */
159
- api: ProviderApiSpec;
160
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=host-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"host-provider.js","sourceRoot":"","sources":["../../../src/core/providers/host-provider.ts"],"names":[],"mappings":""}
@@ -1,97 +0,0 @@
1
- /** Refresh a little early so a call never starts with an about-to-expire token. */
2
- export declare const TOKEN_REFRESH_SKEW_MS: number;
3
- /**
4
- * The vendor-specific half of a browser sign-in.
5
- *
6
- * Deliberately four plain values and no behaviour: this is the shape that has
7
- * to survive being read out of a provider manifest rather than compiled in.
8
- */
9
- export interface ProviderOAuthSpec {
10
- /** Display name, used verbatim in every message the user may see. */
11
- name: string;
12
- /** Issuer whose `/.well-known/openid-configuration` is read. */
13
- issuer: string;
14
- /** Scopes requested at authorize time, space-separated. */
15
- scope: string;
16
- /** Path the loopback redirect points at, e.g. `/api/providers/vercel/oauth/callback`. */
17
- callbackPath: string;
18
- /** Name registered with the authorization server. */
19
- clientName?: string;
20
- }
21
- export interface OAuthMetadata {
22
- authorizationEndpoint: string;
23
- tokenEndpoint: string;
24
- registrationEndpoint?: string;
25
- userinfoEndpoint?: string;
26
- }
27
- export interface OAuthTokens {
28
- accessToken: string;
29
- refreshToken?: string;
30
- /** Epoch ms at which `accessToken` stops being accepted. */
31
- expiresAt: number;
32
- }
33
- export interface PendingLogin {
34
- state: string;
35
- verifier: string;
36
- clientId: string;
37
- redirectUri: string;
38
- authorizeUrl: string;
39
- createdAt: number;
40
- }
41
- /** Injected in tests; defaults to the global `fetch`. */
42
- export interface OAuthDeps {
43
- fetchImpl?: typeof fetch;
44
- now?: () => number;
45
- }
46
- export declare const clock: (deps: OAuthDeps | undefined) => number;
47
- /**
48
- * Exposed for tests, which must not inherit another case's cached discovery.
49
- * With no argument every issuer is cleared.
50
- */
51
- export declare function resetOAuthDiscoveryCache(issuer?: string): void;
52
- /**
53
- * The issuer's advertised endpoints. Discovered rather than hard-coded so a
54
- * move of the token or registration endpoint doesn't silently break sign-in.
55
- */
56
- export declare function discoverOAuth(spec: ProviderOAuthSpec, deps?: OAuthDeps): Promise<OAuthMetadata>;
57
- /**
58
- * Registers a client for `redirectUri` (RFC 7591).
59
- *
60
- * Called immediately before every sign-in rather than once at install time:
61
- * the endpoint may hand back a shared client whose redirect list is replaced by
62
- * whatever was registered last, so re-registering is what guarantees our own
63
- * redirect is the one in force when we send the user to the consent screen.
64
- */
65
- export declare function registerOAuthClient(spec: ProviderOAuthSpec, metadata: OAuthMetadata, redirectUri: string, deps?: OAuthDeps): Promise<string>;
66
- /** Registers a client and builds the URL the user's browser must open. */
67
- export declare function beginLogin(spec: ProviderOAuthSpec, redirectUri: string, deps?: OAuthDeps): Promise<PendingLogin>;
68
- /** Exchanges the authorization code the callback received for tokens. */
69
- export declare function completeLogin(spec: ProviderOAuthSpec, pending: PendingLogin, code: string, deps?: OAuthDeps): Promise<OAuthTokens>;
70
- /**
71
- * Trades a refresh token for a fresh access token. Treat the returned
72
- * `refreshToken` as replacing the one passed in — providers rotate on use.
73
- */
74
- export declare function refreshOAuthTokens(spec: ProviderOAuthSpec, clientId: string, refreshToken: string, deps?: OAuthDeps): Promise<OAuthTokens>;
75
- /**
76
- * The sign-ins awaiting their callback. Kept in memory, never on disk: the
77
- * PKCE verifier is only meaningful for the minutes between the redirect and
78
- * the callback, and a restart mid-login is better restarted than resumed.
79
- */
80
- export declare class LoginSessions {
81
- private readonly now;
82
- private readonly pending;
83
- constructor(now?: () => number);
84
- remember(login: PendingLogin): void;
85
- /** Returns and forgets the login for `state`; a code is only redeemable once. */
86
- take(state: string): PendingLogin | undefined;
87
- private sweep;
88
- }
89
- /**
90
- * The loopback callback URL for a request that arrived on `host`.
91
- *
92
- * Derived from the incoming Host header so the flow works on whatever port the
93
- * daemon (or the Vite dev proxy) is actually serving, and rejected unless it is
94
- * loopback — a redirect pointing anywhere else would hand the code to a host
95
- * that is not this machine.
96
- */
97
- export declare function loopbackCallbackUrl(spec: ProviderOAuthSpec, host: string | undefined): string;
@@ -1,238 +0,0 @@
1
- import { createHash, randomBytes } from "node:crypto";
2
- /**
3
- * Browser sign-in for a deploy/host provider: OAuth 2.0 authorization code +
4
- * PKCE against a loopback redirect (RFC 8252, "OAuth 2.0 for Native Apps").
5
- *
6
- * Every provider that offers a browser sign-in needs the same seven things —
7
- * discovery, dynamic client registration, a PKCE challenge, the authorize URL,
8
- * the code exchange, a rotating refresh, and somewhere to park the verifier
9
- * between the redirect and the callback. None of that is vendor-specific. What
10
- * *is* vendor-specific is four constants, which arrive as a
11
- * {@link ProviderOAuthSpec}.
12
- *
13
- * Two behaviours this module is built around, both first met in Vercel's
14
- * authorization server and both common enough to be the default:
15
- *
16
- * 1. `offline_access` (or the provider's equivalent) is **required**. Without
17
- * it the grant comes back with no refresh token and dies after an hour,
18
- * forcing the user to sign in again. Hence `scope` is not optional.
19
- * 2. Refresh may **rotate**: a refresh can return a new refresh token and
20
- * invalidate the previous one, so the caller must persist what comes back.
21
- * Callers must treat the returned `refreshToken` as replacing the one they
22
- * passed in, whether or not their provider rotates.
23
- */
24
- const DISCOVERY_TTL_MS = 60 * 60 * 1000;
25
- const PENDING_LOGIN_TTL_MS = 10 * 60 * 1000;
26
- /** Refresh a little early so a call never starts with an about-to-expire token. */
27
- export const TOKEN_REFRESH_SKEW_MS = 60 * 1000;
28
- const DEFAULT_CLIENT_NAME = "NoMoreIDE";
29
- const call = (deps) => deps?.fetchImpl ?? fetch;
30
- export const clock = (deps) => (deps?.now ?? Date.now)();
31
- /**
32
- * Discovered metadata per issuer. Keyed rather than a single slot because two
33
- * providers signed in at once would otherwise serve each other's endpoints.
34
- */
35
- const cachedMetadata = new Map();
36
- /**
37
- * Exposed for tests, which must not inherit another case's cached discovery.
38
- * With no argument every issuer is cleared.
39
- */
40
- export function resetOAuthDiscoveryCache(issuer) {
41
- if (issuer)
42
- cachedMetadata.delete(issuer);
43
- else
44
- cachedMetadata.clear();
45
- }
46
- /**
47
- * The issuer's advertised endpoints. Discovered rather than hard-coded so a
48
- * move of the token or registration endpoint doesn't silently break sign-in.
49
- */
50
- export async function discoverOAuth(spec, deps) {
51
- const now = clock(deps);
52
- const cached = cachedMetadata.get(spec.issuer);
53
- if (cached && now - cached.fetchedAt < DISCOVERY_TTL_MS)
54
- return cached.value;
55
- const response = await call(deps)(`${spec.issuer}/.well-known/openid-configuration`, {
56
- headers: { Accept: "application/json" },
57
- });
58
- if (!response.ok) {
59
- throw new Error(`${spec.name} OAuth discovery failed (HTTP ${response.status}).`);
60
- }
61
- const body = (await response.json());
62
- const authorizationEndpoint = stringField(body, "authorization_endpoint");
63
- const tokenEndpoint = stringField(body, "token_endpoint");
64
- if (!authorizationEndpoint || !tokenEndpoint) {
65
- throw new Error(`${spec.name} OAuth discovery is missing its authorization or token endpoint.`);
66
- }
67
- const value = {
68
- authorizationEndpoint,
69
- tokenEndpoint,
70
- registrationEndpoint: stringField(body, "registration_endpoint"),
71
- userinfoEndpoint: stringField(body, "userinfo_endpoint"),
72
- };
73
- cachedMetadata.set(spec.issuer, { value, fetchedAt: now });
74
- return value;
75
- }
76
- /**
77
- * Registers a client for `redirectUri` (RFC 7591).
78
- *
79
- * Called immediately before every sign-in rather than once at install time:
80
- * the endpoint may hand back a shared client whose redirect list is replaced by
81
- * whatever was registered last, so re-registering is what guarantees our own
82
- * redirect is the one in force when we send the user to the consent screen.
83
- */
84
- export async function registerOAuthClient(spec, metadata, redirectUri, deps) {
85
- if (!metadata.registrationEndpoint) {
86
- throw new Error(`${spec.name} does not advertise a client registration endpoint.`);
87
- }
88
- const response = await call(deps)(metadata.registrationEndpoint, {
89
- method: "POST",
90
- headers: { "Content-Type": "application/json", Accept: "application/json" },
91
- body: JSON.stringify({
92
- client_name: spec.clientName ?? DEFAULT_CLIENT_NAME,
93
- redirect_uris: [redirectUri],
94
- grant_types: ["authorization_code", "refresh_token"],
95
- response_types: ["code"],
96
- token_endpoint_auth_method: "none",
97
- application_type: "native",
98
- }),
99
- });
100
- const body = (await response.json().catch(() => ({})));
101
- if (!response.ok) {
102
- throw new Error(oauthErrorMessage(body) ?? `Client registration failed (HTTP ${response.status}).`);
103
- }
104
- const clientId = stringField(body, "client_id");
105
- if (!clientId)
106
- throw new Error(`${spec.name} returned no client_id.`);
107
- return clientId;
108
- }
109
- /** Registers a client and builds the URL the user's browser must open. */
110
- export async function beginLogin(spec, redirectUri, deps) {
111
- const metadata = await discoverOAuth(spec, deps);
112
- const clientId = await registerOAuthClient(spec, metadata, redirectUri, deps);
113
- const verifier = base64Url(randomBytes(32));
114
- const state = base64Url(randomBytes(16));
115
- const challenge = base64Url(createHash("sha256").update(verifier).digest());
116
- const authorizeUrl = new URL(metadata.authorizationEndpoint);
117
- authorizeUrl.searchParams.set("client_id", clientId);
118
- authorizeUrl.searchParams.set("redirect_uri", redirectUri);
119
- authorizeUrl.searchParams.set("response_type", "code");
120
- authorizeUrl.searchParams.set("code_challenge", challenge);
121
- authorizeUrl.searchParams.set("code_challenge_method", "S256");
122
- authorizeUrl.searchParams.set("state", state);
123
- authorizeUrl.searchParams.set("scope", spec.scope);
124
- return {
125
- state,
126
- verifier,
127
- clientId,
128
- redirectUri,
129
- authorizeUrl: authorizeUrl.toString(),
130
- createdAt: clock(deps),
131
- };
132
- }
133
- /** Exchanges the authorization code the callback received for tokens. */
134
- export async function completeLogin(spec, pending, code, deps) {
135
- return tokenRequest(spec, new URLSearchParams({
136
- grant_type: "authorization_code",
137
- code,
138
- redirect_uri: pending.redirectUri,
139
- client_id: pending.clientId,
140
- code_verifier: pending.verifier,
141
- }), deps);
142
- }
143
- /**
144
- * Trades a refresh token for a fresh access token. Treat the returned
145
- * `refreshToken` as replacing the one passed in — providers rotate on use.
146
- */
147
- export async function refreshOAuthTokens(spec, clientId, refreshToken, deps) {
148
- return tokenRequest(spec, new URLSearchParams({
149
- grant_type: "refresh_token",
150
- refresh_token: refreshToken,
151
- client_id: clientId,
152
- }), deps);
153
- }
154
- async function tokenRequest(spec, body, deps) {
155
- const metadata = await discoverOAuth(spec, deps);
156
- const response = await call(deps)(metadata.tokenEndpoint, {
157
- method: "POST",
158
- headers: { "Content-Type": "application/x-www-form-urlencoded", Accept: "application/json" },
159
- body,
160
- });
161
- const parsed = (await response.json().catch(() => ({})));
162
- if (!response.ok) {
163
- throw new Error(oauthErrorMessage(parsed) ?? `${spec.name} token request failed (HTTP ${response.status}).`);
164
- }
165
- const accessToken = stringField(parsed, "access_token");
166
- if (!accessToken)
167
- throw new Error(`${spec.name} returned no access token.`);
168
- const expiresIn = typeof parsed.expires_in === "number" ? parsed.expires_in : 3600;
169
- return {
170
- accessToken,
171
- refreshToken: stringField(parsed, "refresh_token"),
172
- expiresAt: clock(deps) + expiresIn * 1000,
173
- };
174
- }
175
- /**
176
- * The sign-ins awaiting their callback. Kept in memory, never on disk: the
177
- * PKCE verifier is only meaningful for the minutes between the redirect and
178
- * the callback, and a restart mid-login is better restarted than resumed.
179
- */
180
- export class LoginSessions {
181
- now;
182
- pending = new Map();
183
- constructor(now = Date.now) {
184
- this.now = now;
185
- }
186
- remember(login) {
187
- this.sweep();
188
- this.pending.set(login.state, login);
189
- }
190
- /** Returns and forgets the login for `state`; a code is only redeemable once. */
191
- take(state) {
192
- this.sweep();
193
- const login = this.pending.get(state);
194
- if (login)
195
- this.pending.delete(state);
196
- return login;
197
- }
198
- sweep() {
199
- const cutoff = this.now() - PENDING_LOGIN_TTL_MS;
200
- for (const [state, login] of this.pending) {
201
- if (login.createdAt < cutoff)
202
- this.pending.delete(state);
203
- }
204
- }
205
- }
206
- /**
207
- * The loopback callback URL for a request that arrived on `host`.
208
- *
209
- * Derived from the incoming Host header so the flow works on whatever port the
210
- * daemon (or the Vite dev proxy) is actually serving, and rejected unless it is
211
- * loopback — a redirect pointing anywhere else would hand the code to a host
212
- * that is not this machine.
213
- */
214
- export function loopbackCallbackUrl(spec, host) {
215
- const hostname = host?.trim().replace(/^\[|\]$/g, "").split(":")[0];
216
- if (!host || !hostname || !isLoopbackHost(hostname)) {
217
- throw new Error(`${spec.name} sign-in requires a loopback address (localhost or 127.0.0.1).`);
218
- }
219
- return `http://${host}${spec.callbackPath}`;
220
- }
221
- function isLoopbackHost(hostname) {
222
- return hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1";
223
- }
224
- function base64Url(buffer) {
225
- return buffer.toString("base64url");
226
- }
227
- function stringField(body, field) {
228
- const value = body[field];
229
- return typeof value === "string" && value.trim() ? value.trim() : undefined;
230
- }
231
- function oauthErrorMessage(body) {
232
- const description = stringField(body, "error_description");
233
- const error = stringField(body, "error");
234
- if (description && error)
235
- return `${description} (${error})`;
236
- return description ?? error;
237
- }
238
- //# sourceMappingURL=oauth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/core/providers/oauth.ts"],"names":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- import type { NoMoreIdeConfig } from "../types.js";
2
- import type { DeployProviderHooks, ProviderScope } from "./deploy-provider.js";
3
- /**
4
- * Which provider project a repository deploys, and which scope to open on.
5
- *
6
- * Both algorithms below came from `vercel-context.ts` and neither is
7
- * vendor-specific — what varies is only the two hooks in
8
- * {@link DeployProviderHooks}. They are generic over the project and scope
9
- * types so a caller holding a vendor-shaped client can use them before the
10
- * `DeployProvider` adapter is wired through to the HTTP surface.
11
- */
12
- export interface ResolveProjectOptions<P> {
13
- providerId: string;
14
- hooks: DeployProviderHooks;
15
- config: NoMoreIdeConfig;
16
- gitCwd: string;
17
- /** Reads one project by id. Rejecting means "not this one", not a failure. */
18
- getProject: (id: string) => Promise<P>;
19
- /** Looks a project up by the URL the vendor keys imports by. */
20
- findByRepoUrl: (repoUrl: string) => Promise<P | undefined>;
21
- }
22
- /**
23
- * The project this repository deploys, in order of confidence:
24
- *
25
- * 1. an explicit pin the user chose in the dashboard;
26
- * 2. the vendor CLI's own link file — the same file the CLI trusts, so a linked
27
- * repo needs no configuration here at all;
28
- * 3. a lookup by the repo's git remote, which is how the provider itself keys
29
- * an imported project.
30
- *
31
- * Returns undefined rather than guessing when none of those answer, since the
32
- * wrong project would show deployments for unrelated code.
33
- */
34
- export declare function resolveProviderProject<P>(options: ResolveProjectOptions<P>): Promise<P | undefined>;
35
- /** The project id recorded by the vendor CLI's link command, when present. */
36
- export declare function readLinkedProjectId(repoRoot: string, linkFile: {
37
- path: string;
38
- field: string;
39
- }): Promise<string | undefined>;
40
- /** The working directory provider operations run against — mirrors the GitHub seam. */
41
- export declare function selectedProviderCwd(config: NoMoreIdeConfig, fallbackCwd: string): string;
42
- export interface AdoptSoleScopeOptions<S extends Pick<ProviderScope, "id" | "slug">> {
43
- /** A `cli` credential follows the vendor CLI's own scope; see below. */
44
- source: "cli" | "stored" | "oauth";
45
- listScopes: () => Promise<S[]>;
46
- persist: (scope: {
47
- scopeId: string;
48
- scopeSlug: string;
49
- }) => Promise<void>;
50
- /**
51
- * Whether the vendor's CLI selects a scope of its own that ours must not
52
- * override. True by default, which is Vercel: `vercel switch` writes a
53
- * current team, the credential resolver has already inherited it, and a scope
54
- * written here would outrank it from then on — so a `cli` credential adopts
55
- * nothing at all.
56
- *
57
- * False says the CLI has no such notion (Wrangler has no account switch; the
58
- * account comes from the environment). Then the sole scope *is* adopted for a
59
- * `cli` credential — a provider that needs a scope for every call would
60
- * otherwise have no way to get one — but still never persisted, because a
61
- * saved scope would outrank the environment variable that should win.
62
- */
63
- cliSelectsScope?: boolean;
64
- }
65
- /**
66
- * The scope to use when the user has never chosen one.
67
- *
68
- * Vercel puts a personal account's projects under an implicit "<name>'s
69
- * projects" team, not under the account itself, so an unscoped client lists
70
- * nothing at all — which reads as "no projects" rather than "wrong scope". Any
71
- * provider with an implicit default scope has this problem. A `cli` connection
72
- * avoids it by inheriting the CLI's own scope; a browser sign-in or a pasted
73
- * token has nothing to inherit, so the sole scope is adopted here and
74
- * persisted, making this a one-time lookup.
75
- *
76
- * With several scopes there is no unambiguous answer, so none is chosen and the
77
- * dashboard's scope switcher is left to ask. Failures are swallowed: an
78
- * unscoped client still works, and the caller's own request should be what
79
- * surfaces an auth problem.
80
- */
81
- export declare function adoptSoleScope<S extends Pick<ProviderScope, "id" | "slug">>(options: AdoptSoleScopeOptions<S>): Promise<string | undefined>;