nomoreide 0.1.103 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/README.md +72 -20
  2. package/bin/nomoreide.js +82 -0
  3. package/package.json +24 -90
  4. package/dist/cli/agents.d.ts +0 -2
  5. package/dist/cli/agents.js +0 -43
  6. package/dist/cli/agents.js.map +0 -1
  7. package/dist/cli/commands.d.ts +0 -11
  8. package/dist/cli/commands.js +0 -235
  9. package/dist/cli/commands.js.map +0 -1
  10. package/dist/cli/daemon.d.ts +0 -15
  11. package/dist/cli/daemon.js +0 -139
  12. package/dist/cli/daemon.js.map +0 -1
  13. package/dist/cli/database.d.ts +0 -2
  14. package/dist/cli/database.js +0 -145
  15. package/dist/cli/database.js.map +0 -1
  16. package/dist/cli/errors.d.ts +0 -2
  17. package/dist/cli/errors.js +0 -3
  18. package/dist/cli/errors.js.map +0 -1
  19. package/dist/cli/flags.d.ts +0 -1
  20. package/dist/cli/flags.js +0 -19
  21. package/dist/cli/flags.js.map +0 -1
  22. package/dist/cli/git.d.ts +0 -2
  23. package/dist/cli/git.js +0 -113
  24. package/dist/cli/git.js.map +0 -1
  25. package/dist/cli/profile.d.ts +0 -2
  26. package/dist/cli/profile.js +0 -171
  27. package/dist/cli/profile.js.map +0 -1
  28. package/dist/core/agent-context.d.ts +0 -9
  29. package/dist/core/agent-context.js +0 -43
  30. package/dist/core/agent-context.js.map +0 -1
  31. package/dist/core/agent-env/antigravity-reader.d.ts +0 -7
  32. package/dist/core/agent-env/antigravity-reader.js +0 -86
  33. package/dist/core/agent-env/antigravity-reader.js.map +0 -1
  34. package/dist/core/agent-env/availability.d.ts +0 -6
  35. package/dist/core/agent-env/availability.js +0 -79
  36. package/dist/core/agent-env/availability.js.map +0 -1
  37. package/dist/core/agent-env/claude-reader.d.ts +0 -7
  38. package/dist/core/agent-env/claude-reader.js +0 -101
  39. package/dist/core/agent-env/claude-reader.js.map +0 -1
  40. package/dist/core/agent-env/codex-reader.d.ts +0 -11
  41. package/dist/core/agent-env/codex-reader.js +0 -164
  42. package/dist/core/agent-env/codex-reader.js.map +0 -1
  43. package/dist/core/agent-env/index.d.ts +0 -9
  44. package/dist/core/agent-env/index.js +0 -29
  45. package/dist/core/agent-env/index.js.map +0 -1
  46. package/dist/core/agent-env/managed-plugins.d.ts +0 -18
  47. package/dist/core/agent-env/managed-plugins.js +0 -68
  48. package/dist/core/agent-env/managed-plugins.js.map +0 -1
  49. package/dist/core/agent-env/plugin-reader.d.ts +0 -9
  50. package/dist/core/agent-env/plugin-reader.js +0 -174
  51. package/dist/core/agent-env/plugin-reader.js.map +0 -1
  52. package/dist/core/agent-env/shared.d.ts +0 -26
  53. package/dist/core/agent-env/shared.js +0 -116
  54. package/dist/core/agent-env/shared.js.map +0 -1
  55. package/dist/core/agent-env/types.d.ts +0 -66
  56. package/dist/core/agent-env/types.js +0 -7
  57. package/dist/core/agent-env/types.js.map +0 -1
  58. package/dist/core/agent-env-actions.d.ts +0 -117
  59. package/dist/core/agent-env-actions.js +0 -273
  60. package/dist/core/agent-env-actions.js.map +0 -1
  61. package/dist/core/agent-env-plugin-uninstall.d.ts +0 -11
  62. package/dist/core/agent-env-plugin-uninstall.js +0 -189
  63. package/dist/core/agent-env-plugin-uninstall.js.map +0 -1
  64. package/dist/core/agent-env-writers.d.ts +0 -71
  65. package/dist/core/agent-env-writers.js +0 -632
  66. package/dist/core/agent-env-writers.js.map +0 -1
  67. package/dist/core/agent-profiles/apply.d.ts +0 -57
  68. package/dist/core/agent-profiles/apply.js +0 -209
  69. package/dist/core/agent-profiles/apply.js.map +0 -1
  70. package/dist/core/agent-profiles/builtin.d.ts +0 -8
  71. package/dist/core/agent-profiles/builtin.js +0 -33
  72. package/dist/core/agent-profiles/builtin.js.map +0 -1
  73. package/dist/core/agent-profiles/credentials.d.ts +0 -26
  74. package/dist/core/agent-profiles/credentials.js +0 -151
  75. package/dist/core/agent-profiles/credentials.js.map +0 -1
  76. package/dist/core/agent-profiles/debug-setup.d.ts +0 -18
  77. package/dist/core/agent-profiles/debug-setup.js +0 -237
  78. package/dist/core/agent-profiles/debug-setup.js.map +0 -1
  79. package/dist/core/agent-profiles/index.d.ts +0 -18
  80. package/dist/core/agent-profiles/index.js +0 -19
  81. package/dist/core/agent-profiles/index.js.map +0 -1
  82. package/dist/core/agent-profiles/plugin-apply.d.ts +0 -16
  83. package/dist/core/agent-profiles/plugin-apply.js +0 -383
  84. package/dist/core/agent-profiles/plugin-apply.js.map +0 -1
  85. package/dist/core/agent-profiles/plugin-bundle.d.ts +0 -6
  86. package/dist/core/agent-profiles/plugin-bundle.js +0 -32
  87. package/dist/core/agent-profiles/plugin-bundle.js.map +0 -1
  88. package/dist/core/agent-profiles/publication.d.ts +0 -105
  89. package/dist/core/agent-profiles/publication.js +0 -126
  90. package/dist/core/agent-profiles/publication.js.map +0 -1
  91. package/dist/core/agent-profiles/registry-auth.d.ts +0 -25
  92. package/dist/core/agent-profiles/registry-auth.js +0 -78
  93. package/dist/core/agent-profiles/registry-auth.js.map +0 -1
  94. package/dist/core/agent-profiles/registry-client.d.ts +0 -98
  95. package/dist/core/agent-profiles/registry-client.js +0 -109
  96. package/dist/core/agent-profiles/registry-client.js.map +0 -1
  97. package/dist/core/agent-profiles/registry-config.d.ts +0 -62
  98. package/dist/core/agent-profiles/registry-config.js +0 -221
  99. package/dist/core/agent-profiles/registry-config.js.map +0 -1
  100. package/dist/core/agent-profiles/registry-transfer.d.ts +0 -42
  101. package/dist/core/agent-profiles/registry-transfer.js +0 -133
  102. package/dist/core/agent-profiles/registry-transfer.js.map +0 -1
  103. package/dist/core/agent-profiles/store.d.ts +0 -62
  104. package/dist/core/agent-profiles/store.js +0 -479
  105. package/dist/core/agent-profiles/store.js.map +0 -1
  106. package/dist/core/agent-profiles/transfer.d.ts +0 -27
  107. package/dist/core/agent-profiles/transfer.js +0 -354
  108. package/dist/core/agent-profiles/transfer.js.map +0 -1
  109. package/dist/core/agent-profiles/types.d.ts +0 -364
  110. package/dist/core/agent-profiles/types.js +0 -79
  111. package/dist/core/agent-profiles/types.js.map +0 -1
  112. package/dist/core/agent-runtime.d.ts +0 -114
  113. package/dist/core/agent-runtime.js +0 -494
  114. package/dist/core/agent-runtime.js.map +0 -1
  115. package/dist/core/agent-sessions.d.ts +0 -46
  116. package/dist/core/agent-sessions.js +0 -109
  117. package/dist/core/agent-sessions.js.map +0 -1
  118. package/dist/core/agent-settings.d.ts +0 -31
  119. package/dist/core/agent-settings.js +0 -129
  120. package/dist/core/agent-settings.js.map +0 -1
  121. package/dist/core/agent-terminal.d.ts +0 -22
  122. package/dist/core/agent-terminal.js +0 -62
  123. package/dist/core/agent-terminal.js.map +0 -1
  124. package/dist/core/agent-transcripts.d.ts +0 -29
  125. package/dist/core/agent-transcripts.js +0 -281
  126. package/dist/core/agent-transcripts.js.map +0 -1
  127. package/dist/core/app-settings.d.ts +0 -74
  128. package/dist/core/app-settings.js +0 -118
  129. package/dist/core/app-settings.js.map +0 -1
  130. package/dist/core/app-version.d.ts +0 -2
  131. package/dist/core/app-version.js +0 -16
  132. package/dist/core/app-version.js.map +0 -1
  133. package/dist/core/approval-broker.d.ts +0 -29
  134. package/dist/core/approval-broker.js +0 -48
  135. package/dist/core/approval-broker.js.map +0 -1
  136. package/dist/core/claude-settings.d.ts +0 -18
  137. package/dist/core/claude-settings.js +0 -48
  138. package/dist/core/claude-settings.js.map +0 -1
  139. package/dist/core/cloudflare-actions.d.ts +0 -90
  140. package/dist/core/cloudflare-actions.js +0 -178
  141. package/dist/core/cloudflare-actions.js.map +0 -1
  142. package/dist/core/cloudflare-auth.d.ts +0 -61
  143. package/dist/core/cloudflare-auth.js +0 -149
  144. package/dist/core/cloudflare-auth.js.map +0 -1
  145. package/dist/core/cloudflare-context.d.ts +0 -2
  146. package/dist/core/cloudflare-context.js +0 -106
  147. package/dist/core/cloudflare-context.js.map +0 -1
  148. package/dist/core/cloudflare-manager.d.ts +0 -256
  149. package/dist/core/cloudflare-manager.js +0 -409
  150. package/dist/core/cloudflare-manager.js.map +0 -1
  151. package/dist/core/cloudflare-provider.d.ts +0 -64
  152. package/dist/core/cloudflare-provider.js +0 -343
  153. package/dist/core/cloudflare-provider.js.map +0 -1
  154. package/dist/core/config-files.d.ts +0 -27
  155. package/dist/core/config-files.js +0 -154
  156. package/dist/core/config-files.js.map +0 -1
  157. package/dist/core/config-store.d.ts +0 -181
  158. package/dist/core/config-store.js +0 -1026
  159. package/dist/core/config-store.js.map +0 -1
  160. package/dist/core/context-library.d.ts +0 -53
  161. package/dist/core/context-library.js +0 -605
  162. package/dist/core/context-library.js.map +0 -1
  163. package/dist/core/context-types.d.ts +0 -83
  164. package/dist/core/context-types.js +0 -9
  165. package/dist/core/context-types.js.map +0 -1
  166. package/dist/core/daemon-client.d.ts +0 -70
  167. package/dist/core/daemon-client.js +0 -136
  168. package/dist/core/daemon-client.js.map +0 -1
  169. package/dist/core/daemon-lifecycle.d.ts +0 -59
  170. package/dist/core/daemon-lifecycle.js +0 -147
  171. package/dist/core/daemon-lifecycle.js.map +0 -1
  172. package/dist/core/db/catalog.d.ts +0 -57
  173. package/dist/core/db/catalog.js +0 -38
  174. package/dist/core/db/catalog.js.map +0 -1
  175. package/dist/core/db/data-masking.d.ts +0 -3
  176. package/dist/core/db/data-masking.js +0 -14
  177. package/dist/core/db/data-masking.js.map +0 -1
  178. package/dist/core/db/driver.d.ts +0 -151
  179. package/dist/core/db/driver.js +0 -209
  180. package/dist/core/db/driver.js.map +0 -1
  181. package/dist/core/db/export.d.ts +0 -17
  182. package/dist/core/db/export.js +0 -67
  183. package/dist/core/db/export.js.map +0 -1
  184. package/dist/core/db/mysql-driver.d.ts +0 -33
  185. package/dist/core/db/mysql-driver.js +0 -364
  186. package/dist/core/db/mysql-driver.js.map +0 -1
  187. package/dist/core/db/postgres-driver.d.ts +0 -34
  188. package/dist/core/db/postgres-driver.js +0 -430
  189. package/dist/core/db/postgres-driver.js.map +0 -1
  190. package/dist/core/db/sqlite-driver.d.ts +0 -30
  191. package/dist/core/db/sqlite-driver.js +0 -301
  192. package/dist/core/db/sqlite-driver.js.map +0 -1
  193. package/dist/core/db-peek.d.ts +0 -99
  194. package/dist/core/db-peek.js +0 -322
  195. package/dist/core/db-peek.js.map +0 -1
  196. package/dist/core/db-write.d.ts +0 -45
  197. package/dist/core/db-write.js +0 -190
  198. package/dist/core/db-write.js.map +0 -1
  199. package/dist/core/docker-inspect.d.ts +0 -34
  200. package/dist/core/docker-inspect.js +0 -108
  201. package/dist/core/docker-inspect.js.map +0 -1
  202. package/dist/core/docker-resources.d.ts +0 -28
  203. package/dist/core/docker-resources.js +0 -59
  204. package/dist/core/docker-resources.js.map +0 -1
  205. package/dist/core/docker-service-runner.d.ts +0 -21
  206. package/dist/core/docker-service-runner.js +0 -80
  207. package/dist/core/docker-service-runner.js.map +0 -1
  208. package/dist/core/docker-stats.d.ts +0 -24
  209. package/dist/core/docker-stats.js +0 -76
  210. package/dist/core/docker-stats.js.map +0 -1
  211. package/dist/core/docker.d.ts +0 -75
  212. package/dist/core/docker.js +0 -219
  213. package/dist/core/docker.js.map +0 -1
  214. package/dist/core/env-file.d.ts +0 -24
  215. package/dist/core/env-file.js +0 -123
  216. package/dist/core/env-file.js.map +0 -1
  217. package/dist/core/env-runtime.d.ts +0 -32
  218. package/dist/core/env-runtime.js +0 -42
  219. package/dist/core/env-runtime.js.map +0 -1
  220. package/dist/core/error-inbox.d.ts +0 -91
  221. package/dist/core/error-inbox.js +0 -292
  222. package/dist/core/error-inbox.js.map +0 -1
  223. package/dist/core/extensions.d.ts +0 -78
  224. package/dist/core/extensions.js +0 -41
  225. package/dist/core/extensions.js.map +0 -1
  226. package/dist/core/external-terminal.d.ts +0 -60
  227. package/dist/core/external-terminal.js +0 -429
  228. package/dist/core/external-terminal.js.map +0 -1
  229. package/dist/core/fix-loop.d.ts +0 -55
  230. package/dist/core/fix-loop.js +0 -73
  231. package/dist/core/fix-loop.js.map +0 -1
  232. package/dist/core/git-actions.d.ts +0 -69
  233. package/dist/core/git-actions.js +0 -161
  234. package/dist/core/git-actions.js.map +0 -1
  235. package/dist/core/git-graph-layout.d.ts +0 -34
  236. package/dist/core/git-graph-layout.js +0 -94
  237. package/dist/core/git-graph-layout.js.map +0 -1
  238. package/dist/core/git-identity.d.ts +0 -78
  239. package/dist/core/git-identity.js +0 -178
  240. package/dist/core/git-identity.js.map +0 -1
  241. package/dist/core/git-manager.d.ts +0 -129
  242. package/dist/core/git-manager.js +0 -509
  243. package/dist/core/git-manager.js.map +0 -1
  244. package/dist/core/git-worktrees.d.ts +0 -35
  245. package/dist/core/git-worktrees.js +0 -142
  246. package/dist/core/git-worktrees.js.map +0 -1
  247. package/dist/core/github-auth.d.ts +0 -28
  248. package/dist/core/github-auth.js +0 -134
  249. package/dist/core/github-auth.js.map +0 -1
  250. package/dist/core/github-context.d.ts +0 -12
  251. package/dist/core/github-context.js +0 -36
  252. package/dist/core/github-context.js.map +0 -1
  253. package/dist/core/github-manager.d.ts +0 -223
  254. package/dist/core/github-manager.js +0 -285
  255. package/dist/core/github-manager.js.map +0 -1
  256. package/dist/core/host-metrics.d.ts +0 -41
  257. package/dist/core/host-metrics.js +0 -93
  258. package/dist/core/host-metrics.js.map +0 -1
  259. package/dist/core/http-inspector.d.ts +0 -20
  260. package/dist/core/http-inspector.js +0 -106
  261. package/dist/core/http-inspector.js.map +0 -1
  262. package/dist/core/jetbrains-import.d.ts +0 -85
  263. package/dist/core/jetbrains-import.js +0 -599
  264. package/dist/core/jetbrains-import.js.map +0 -1
  265. package/dist/core/log-sources.d.ts +0 -21
  266. package/dist/core/log-sources.js +0 -219
  267. package/dist/core/log-sources.js.map +0 -1
  268. package/dist/core/log-store.d.ts +0 -33
  269. package/dist/core/log-store.js +0 -94
  270. package/dist/core/log-store.js.map +0 -1
  271. package/dist/core/log-volume.d.ts +0 -41
  272. package/dist/core/log-volume.js +0 -81
  273. package/dist/core/log-volume.js.map +0 -1
  274. package/dist/core/mcp-auth.d.ts +0 -27
  275. package/dist/core/mcp-auth.js +0 -90
  276. package/dist/core/mcp-auth.js.map +0 -1
  277. package/dist/core/metrics-store.d.ts +0 -74
  278. package/dist/core/metrics-store.js +0 -187
  279. package/dist/core/metrics-store.js.map +0 -1
  280. package/dist/core/one-time-skills.d.ts +0 -27
  281. package/dist/core/one-time-skills.js +0 -185
  282. package/dist/core/one-time-skills.js.map +0 -1
  283. package/dist/core/port-utils.d.ts +0 -23
  284. package/dist/core/port-utils.js +0 -83
  285. package/dist/core/port-utils.js.map +0 -1
  286. package/dist/core/process-manager.d.ts +0 -99
  287. package/dist/core/process-manager.js +0 -738
  288. package/dist/core/process-manager.js.map +0 -1
  289. package/dist/core/process-tree.d.ts +0 -17
  290. package/dist/core/process-tree.js +0 -64
  291. package/dist/core/process-tree.js.map +0 -1
  292. package/dist/core/project-overview.d.ts +0 -52
  293. package/dist/core/project-overview.js +0 -122
  294. package/dist/core/project-overview.js.map +0 -1
  295. package/dist/core/providers/credentials.d.ts +0 -93
  296. package/dist/core/providers/credentials.js +0 -88
  297. package/dist/core/providers/credentials.js.map +0 -1
  298. package/dist/core/providers/deploy-provider.d.ts +0 -327
  299. package/dist/core/providers/deploy-provider.js +0 -25
  300. package/dist/core/providers/deploy-provider.js.map +0 -1
  301. package/dist/core/providers/egress.d.ts +0 -58
  302. package/dist/core/providers/egress.js +0 -115
  303. package/dist/core/providers/egress.js.map +0 -1
  304. package/dist/core/providers/host-bridge.d.ts +0 -20
  305. package/dist/core/providers/host-bridge.js +0 -57
  306. package/dist/core/providers/host-bridge.js.map +0 -1
  307. package/dist/core/providers/host-provider.d.ts +0 -160
  308. package/dist/core/providers/host-provider.js +0 -2
  309. package/dist/core/providers/host-provider.js.map +0 -1
  310. package/dist/core/providers/oauth.d.ts +0 -97
  311. package/dist/core/providers/oauth.js +0 -238
  312. package/dist/core/providers/oauth.js.map +0 -1
  313. package/dist/core/providers/project-resolution.d.ts +0 -81
  314. package/dist/core/providers/project-resolution.js +0 -101
  315. package/dist/core/providers/project-resolution.js.map +0 -1
  316. package/dist/core/providers/registry.d.ts +0 -73
  317. package/dist/core/providers/registry.js +0 -53
  318. package/dist/core/providers/registry.js.map +0 -1
  319. package/dist/core/providers/strings.d.ts +0 -95
  320. package/dist/core/providers/strings.js +0 -59
  321. package/dist/core/providers/strings.js.map +0 -1
  322. package/dist/core/public-config.d.ts +0 -18
  323. package/dist/core/public-config.js +0 -76
  324. package/dist/core/public-config.js.map +0 -1
  325. package/dist/core/read-only-files.d.ts +0 -28
  326. package/dist/core/read-only-files.js +0 -93
  327. package/dist/core/read-only-files.js.map +0 -1
  328. package/dist/core/repo-create.d.ts +0 -11
  329. package/dist/core/repo-create.js +0 -54
  330. package/dist/core/repo-create.js.map +0 -1
  331. package/dist/core/repo-match.d.ts +0 -12
  332. package/dist/core/repo-match.js +0 -40
  333. package/dist/core/repo-match.js.map +0 -1
  334. package/dist/core/repo-onboard.d.ts +0 -297
  335. package/dist/core/repo-onboard.js +0 -667
  336. package/dist/core/repo-onboard.js.map +0 -1
  337. package/dist/core/repro-bundle.d.ts +0 -30
  338. package/dist/core/repro-bundle.js +0 -116
  339. package/dist/core/repro-bundle.js.map +0 -1
  340. package/dist/core/service-graph.d.ts +0 -50
  341. package/dist/core/service-graph.js +0 -143
  342. package/dist/core/service-graph.js.map +0 -1
  343. package/dist/core/service-health.d.ts +0 -10
  344. package/dist/core/service-health.js +0 -46
  345. package/dist/core/service-health.js.map +0 -1
  346. package/dist/core/service-log-source.d.ts +0 -9
  347. package/dist/core/service-log-source.js +0 -49
  348. package/dist/core/service-log-source.js.map +0 -1
  349. package/dist/core/service-registry.d.ts +0 -52
  350. package/dist/core/service-registry.js +0 -101
  351. package/dist/core/service-registry.js.map +0 -1
  352. package/dist/core/snapshot-manager.d.ts +0 -62
  353. package/dist/core/snapshot-manager.js +0 -219
  354. package/dist/core/snapshot-manager.js.map +0 -1
  355. package/dist/core/ssh-servers.d.ts +0 -89
  356. package/dist/core/ssh-servers.js +0 -251
  357. package/dist/core/ssh-servers.js.map +0 -1
  358. package/dist/core/ssh-service-runner.d.ts +0 -7
  359. package/dist/core/ssh-service-runner.js +0 -36
  360. package/dist/core/ssh-service-runner.js.map +0 -1
  361. package/dist/core/ssh-setup.d.ts +0 -11
  362. package/dist/core/ssh-setup.js +0 -49
  363. package/dist/core/ssh-setup.js.map +0 -1
  364. package/dist/core/system-processes.d.ts +0 -29
  365. package/dist/core/system-processes.js +0 -119
  366. package/dist/core/system-processes.js.map +0 -1
  367. package/dist/core/terminal-manager.d.ts +0 -123
  368. package/dist/core/terminal-manager.js +0 -470
  369. package/dist/core/terminal-manager.js.map +0 -1
  370. package/dist/core/terminal-session.d.ts +0 -122
  371. package/dist/core/terminal-session.js +0 -242
  372. package/dist/core/terminal-session.js.map +0 -1
  373. package/dist/core/terminal-spawn.d.ts +0 -26
  374. package/dist/core/terminal-spawn.js +0 -63
  375. package/dist/core/terminal-spawn.js.map +0 -1
  376. package/dist/core/test-runner.d.ts +0 -69
  377. package/dist/core/test-runner.js +0 -199
  378. package/dist/core/test-runner.js.map +0 -1
  379. package/dist/core/timeline-store.d.ts +0 -20
  380. package/dist/core/timeline-store.js +0 -36
  381. package/dist/core/timeline-store.js.map +0 -1
  382. package/dist/core/tool-call-store.d.ts +0 -25
  383. package/dist/core/tool-call-store.js +0 -62
  384. package/dist/core/tool-call-store.js.map +0 -1
  385. package/dist/core/types.d.ts +0 -312
  386. package/dist/core/types.js +0 -2
  387. package/dist/core/types.js.map +0 -1
  388. package/dist/core/usage-history.d.ts +0 -81
  389. package/dist/core/usage-history.js +0 -149
  390. package/dist/core/usage-history.js.map +0 -1
  391. package/dist/core/vercel-actions.d.ts +0 -71
  392. package/dist/core/vercel-actions.js +0 -109
  393. package/dist/core/vercel-actions.js.map +0 -1
  394. package/dist/core/vercel-auth.d.ts +0 -40
  395. package/dist/core/vercel-auth.js +0 -88
  396. package/dist/core/vercel-auth.js.map +0 -1
  397. package/dist/core/vercel-context.d.ts +0 -2
  398. package/dist/core/vercel-context.js +0 -97
  399. package/dist/core/vercel-context.js.map +0 -1
  400. package/dist/core/vercel-manager.d.ts +0 -266
  401. package/dist/core/vercel-manager.js +0 -389
  402. package/dist/core/vercel-manager.js.map +0 -1
  403. package/dist/core/vercel-oauth.d.ts +0 -37
  404. package/dist/core/vercel-oauth.js +0 -51
  405. package/dist/core/vercel-oauth.js.map +0 -1
  406. package/dist/core/vercel-provider.d.ts +0 -23
  407. package/dist/core/vercel-provider.js +0 -271
  408. package/dist/core/vercel-provider.js.map +0 -1
  409. package/dist/core/vultr-actions.d.ts +0 -52
  410. package/dist/core/vultr-actions.js +0 -62
  411. package/dist/core/vultr-actions.js.map +0 -1
  412. package/dist/core/vultr-auth.d.ts +0 -32
  413. package/dist/core/vultr-auth.js +0 -54
  414. package/dist/core/vultr-auth.js.map +0 -1
  415. package/dist/core/vultr-context.d.ts +0 -2
  416. package/dist/core/vultr-context.js +0 -55
  417. package/dist/core/vultr-context.js.map +0 -1
  418. package/dist/core/vultr-manager.d.ts +0 -105
  419. package/dist/core/vultr-manager.js +0 -159
  420. package/dist/core/vultr-manager.js.map +0 -1
  421. package/dist/core/vultr-provider.d.ts +0 -69
  422. package/dist/core/vultr-provider.js +0 -224
  423. package/dist/core/vultr-provider.js.map +0 -1
  424. package/dist/core/workflow-triggers.d.ts +0 -139
  425. package/dist/core/workflow-triggers.js +0 -208
  426. package/dist/core/workflow-triggers.js.map +0 -1
  427. package/dist/core/workflows.d.ts +0 -290
  428. package/dist/core/workflows.js +0 -190
  429. package/dist/core/workflows.js.map +0 -1
  430. package/dist/index.d.ts +0 -2
  431. package/dist/index.js +0 -56
  432. package/dist/index.js.map +0 -1
  433. package/dist/mcp/server.d.ts +0 -37
  434. package/dist/mcp/server.js +0 -84
  435. package/dist/mcp/server.js.map +0 -1
  436. package/dist/mcp/tools/agent-env.d.ts +0 -9
  437. package/dist/mcp/tools/agent-env.js +0 -160
  438. package/dist/mcp/tools/agent-env.js.map +0 -1
  439. package/dist/mcp/tools/agent-profiles.d.ts +0 -9
  440. package/dist/mcp/tools/agent-profiles.js +0 -197
  441. package/dist/mcp/tools/agent-profiles.js.map +0 -1
  442. package/dist/mcp/tools/agent-registry.d.ts +0 -9
  443. package/dist/mcp/tools/agent-registry.js +0 -81
  444. package/dist/mcp/tools/agent-registry.js.map +0 -1
  445. package/dist/mcp/tools/agent.d.ts +0 -4
  446. package/dist/mcp/tools/agent.js +0 -29
  447. package/dist/mcp/tools/agent.js.map +0 -1
  448. package/dist/mcp/tools/context.d.ts +0 -36
  449. package/dist/mcp/tools/context.js +0 -69
  450. package/dist/mcp/tools/context.js.map +0 -1
  451. package/dist/mcp/tools/database.d.ts +0 -9
  452. package/dist/mcp/tools/database.js +0 -166
  453. package/dist/mcp/tools/database.js.map +0 -1
  454. package/dist/mcp/tools/docs.d.ts +0 -29
  455. package/dist/mcp/tools/docs.js +0 -125
  456. package/dist/mcp/tools/docs.js.map +0 -1
  457. package/dist/mcp/tools/errors.d.ts +0 -5
  458. package/dist/mcp/tools/errors.js +0 -40
  459. package/dist/mcp/tools/errors.js.map +0 -1
  460. package/dist/mcp/tools/git.d.ts +0 -4
  461. package/dist/mcp/tools/git.js +0 -208
  462. package/dist/mcp/tools/git.js.map +0 -1
  463. package/dist/mcp/tools/github.d.ts +0 -4
  464. package/dist/mcp/tools/github.js +0 -196
  465. package/dist/mcp/tools/github.js.map +0 -1
  466. package/dist/mcp/tools/index.d.ts +0 -20
  467. package/dist/mcp/tools/index.js +0 -60
  468. package/dist/mcp/tools/index.js.map +0 -1
  469. package/dist/mcp/tools/onboard.d.ts +0 -10
  470. package/dist/mcp/tools/onboard.js +0 -30
  471. package/dist/mcp/tools/onboard.js.map +0 -1
  472. package/dist/mcp/tools/provider.d.ts +0 -16
  473. package/dist/mcp/tools/provider.js +0 -110
  474. package/dist/mcp/tools/provider.js.map +0 -1
  475. package/dist/mcp/tools/services.d.ts +0 -11
  476. package/dist/mcp/tools/services.js +0 -200
  477. package/dist/mcp/tools/services.js.map +0 -1
  478. package/dist/mcp/tools/snapshots.d.ts +0 -8
  479. package/dist/mcp/tools/snapshots.js +0 -37
  480. package/dist/mcp/tools/snapshots.js.map +0 -1
  481. package/dist/mcp/tools/terminal.d.ts +0 -4
  482. package/dist/mcp/tools/terminal.js +0 -38
  483. package/dist/mcp/tools/terminal.js.map +0 -1
  484. package/dist/tui/app.d.ts +0 -22
  485. package/dist/tui/app.js +0 -138
  486. package/dist/tui/app.js.map +0 -1
  487. package/dist/web/agent-info.d.ts +0 -82
  488. package/dist/web/agent-info.js +0 -775
  489. package/dist/web/agent-info.js.map +0 -1
  490. package/dist/web/client/assets/SymbolsNerdFontMono-Regular-DDncdh2F.ttf +0 -0
  491. package/dist/web/client/assets/code-editor-B2_SPkzS.js +0 -30
  492. package/dist/web/client/assets/context-graph-DVrWyUaG.js +0 -7
  493. package/dist/web/client/assets/core-DhEqZVGG.js +0 -1
  494. package/dist/web/client/assets/event-BK_86lmQ.js +0 -1
  495. package/dist/web/client/assets/index-BhDAhmA1.js +0 -1
  496. package/dist/web/client/assets/index-DIspyq1R.js +0 -352
  497. package/dist/web/client/assets/index-DT9Uq0bE.css +0 -1
  498. package/dist/web/client/assets/nomoreide-favicon-Ds7Tgj9p.svg +0 -24
  499. package/dist/web/client/assets/system-process-table-CWZIisGo.js +0 -1
  500. package/dist/web/client/assets/window-DlR023_X.js +0 -1
  501. package/dist/web/client/index.html +0 -44
  502. package/dist/web/dashboard.d.ts +0 -61
  503. package/dist/web/dashboard.js +0 -221
  504. package/dist/web/dashboard.js.map +0 -1
  505. package/dist/web/directories.d.ts +0 -27
  506. package/dist/web/directories.js +0 -81
  507. package/dist/web/directories.js.map +0 -1
  508. package/dist/web/http-utils.d.ts +0 -13
  509. package/dist/web/http-utils.js +0 -72
  510. package/dist/web/http-utils.js.map +0 -1
  511. package/dist/web/routes/agent-chat-routes.d.ts +0 -3
  512. package/dist/web/routes/agent-chat-routes.js +0 -186
  513. package/dist/web/routes/agent-chat-routes.js.map +0 -1
  514. package/dist/web/routes/agent-env-routes.d.ts +0 -9
  515. package/dist/web/routes/agent-env-routes.js +0 -86
  516. package/dist/web/routes/agent-env-routes.js.map +0 -1
  517. package/dist/web/routes/agent-profile-routes.d.ts +0 -8
  518. package/dist/web/routes/agent-profile-routes.js +0 -211
  519. package/dist/web/routes/agent-profile-routes.js.map +0 -1
  520. package/dist/web/routes/agent-registry-routes.d.ts +0 -2
  521. package/dist/web/routes/agent-registry-routes.js +0 -361
  522. package/dist/web/routes/agent-registry-routes.js.map +0 -1
  523. package/dist/web/routes/agent-routes.d.ts +0 -3
  524. package/dist/web/routes/agent-routes.js +0 -73
  525. package/dist/web/routes/agent-routes.js.map +0 -1
  526. package/dist/web/routes/agent-settings-routes.d.ts +0 -8
  527. package/dist/web/routes/agent-settings-routes.js +0 -67
  528. package/dist/web/routes/agent-settings-routes.js.map +0 -1
  529. package/dist/web/routes/context-library-routes.d.ts +0 -2
  530. package/dist/web/routes/context-library-routes.js +0 -139
  531. package/dist/web/routes/context-library-routes.js.map +0 -1
  532. package/dist/web/routes/context.d.ts +0 -73
  533. package/dist/web/routes/context.js +0 -48
  534. package/dist/web/routes/context.js.map +0 -1
  535. package/dist/web/routes/dashboard-routes.d.ts +0 -3
  536. package/dist/web/routes/dashboard-routes.js +0 -47
  537. package/dist/web/routes/dashboard-routes.js.map +0 -1
  538. package/dist/web/routes/database-routes.d.ts +0 -3
  539. package/dist/web/routes/database-routes.js +0 -341
  540. package/dist/web/routes/database-routes.js.map +0 -1
  541. package/dist/web/routes/docker-routes.d.ts +0 -7
  542. package/dist/web/routes/docker-routes.js +0 -122
  543. package/dist/web/routes/docker-routes.js.map +0 -1
  544. package/dist/web/routes/errors-routes.d.ts +0 -3
  545. package/dist/web/routes/errors-routes.js +0 -77
  546. package/dist/web/routes/errors-routes.js.map +0 -1
  547. package/dist/web/routes/extensions-routes.d.ts +0 -14
  548. package/dist/web/routes/extensions-routes.js +0 -21
  549. package/dist/web/routes/extensions-routes.js.map +0 -1
  550. package/dist/web/routes/git-routes.d.ts +0 -3
  551. package/dist/web/routes/git-routes.js +0 -598
  552. package/dist/web/routes/git-routes.js.map +0 -1
  553. package/dist/web/routes/github-context.d.ts +0 -11
  554. package/dist/web/routes/github-context.js +0 -34
  555. package/dist/web/routes/github-context.js.map +0 -1
  556. package/dist/web/routes/github-routes.d.ts +0 -2
  557. package/dist/web/routes/github-routes.js +0 -699
  558. package/dist/web/routes/github-routes.js.map +0 -1
  559. package/dist/web/routes/host-routes.d.ts +0 -2
  560. package/dist/web/routes/host-routes.js +0 -188
  561. package/dist/web/routes/host-routes.js.map +0 -1
  562. package/dist/web/routes/index.d.ts +0 -10
  563. package/dist/web/routes/index.js +0 -72
  564. package/dist/web/routes/index.js.map +0 -1
  565. package/dist/web/routes/jetbrains-import-routes.d.ts +0 -2
  566. package/dist/web/routes/jetbrains-import-routes.js +0 -121
  567. package/dist/web/routes/jetbrains-import-routes.js.map +0 -1
  568. package/dist/web/routes/log-sources-routes.d.ts +0 -6
  569. package/dist/web/routes/log-sources-routes.js +0 -102
  570. package/dist/web/routes/log-sources-routes.js.map +0 -1
  571. package/dist/web/routes/metrics-routes.d.ts +0 -3
  572. package/dist/web/routes/metrics-routes.js +0 -60
  573. package/dist/web/routes/metrics-routes.js.map +0 -1
  574. package/dist/web/routes/onboard-routes.d.ts +0 -9
  575. package/dist/web/routes/onboard-routes.js +0 -146
  576. package/dist/web/routes/onboard-routes.js.map +0 -1
  577. package/dist/web/routes/overview-routes.d.ts +0 -2
  578. package/dist/web/routes/overview-routes.js +0 -36
  579. package/dist/web/routes/overview-routes.js.map +0 -1
  580. package/dist/web/routes/provider-routes.d.ts +0 -2
  581. package/dist/web/routes/provider-routes.js +0 -558
  582. package/dist/web/routes/provider-routes.js.map +0 -1
  583. package/dist/web/routes/service-routes.d.ts +0 -3
  584. package/dist/web/routes/service-routes.js +0 -511
  585. package/dist/web/routes/service-routes.js.map +0 -1
  586. package/dist/web/routes/settings-routes.d.ts +0 -2
  587. package/dist/web/routes/settings-routes.js +0 -151
  588. package/dist/web/routes/settings-routes.js.map +0 -1
  589. package/dist/web/routes/shell-routes.d.ts +0 -22
  590. package/dist/web/routes/shell-routes.js +0 -75
  591. package/dist/web/routes/shell-routes.js.map +0 -1
  592. package/dist/web/routes/skills-routes.d.ts +0 -2
  593. package/dist/web/routes/skills-routes.js +0 -49
  594. package/dist/web/routes/skills-routes.js.map +0 -1
  595. package/dist/web/routes/snapshot-routes.d.ts +0 -8
  596. package/dist/web/routes/snapshot-routes.js +0 -194
  597. package/dist/web/routes/snapshot-routes.js.map +0 -1
  598. package/dist/web/routes/ssh-server-routes.d.ts +0 -10
  599. package/dist/web/routes/ssh-server-routes.js +0 -163
  600. package/dist/web/routes/ssh-server-routes.js.map +0 -1
  601. package/dist/web/routes/terminal-routes.d.ts +0 -7
  602. package/dist/web/routes/terminal-routes.js +0 -313
  603. package/dist/web/routes/terminal-routes.js.map +0 -1
  604. package/dist/web/routes/workflow-routes.d.ts +0 -8
  605. package/dist/web/routes/workflow-routes.js +0 -45
  606. package/dist/web/routes/workflow-routes.js.map +0 -1
  607. package/dist/web/routes/workflow-trigger-routes.d.ts +0 -9
  608. package/dist/web/routes/workflow-trigger-routes.js +0 -78
  609. package/dist/web/routes/workflow-trigger-routes.js.map +0 -1
  610. package/dist/web/server.d.ts +0 -31
  611. package/dist/web/server.js +0 -325
  612. package/dist/web/server.js.map +0 -1
  613. package/dist/web/service-tester.d.ts +0 -16
  614. package/dist/web/service-tester.js +0 -107
  615. package/dist/web/service-tester.js.map +0 -1
  616. package/dist/web/static-assets.d.ts +0 -3
  617. package/dist/web/static-assets.js +0 -64
  618. package/dist/web/static-assets.js.map +0 -1
  619. package/dist/web/usage-info.d.ts +0 -56
  620. package/dist/web/usage-info.js +0 -265
  621. package/dist/web/usage-info.js.map +0 -1
@@ -1,159 +0,0 @@
1
- /**
2
- * Read-safe Vultr API v2 client — the observable half of the integration.
3
- *
4
- * Like `git-manager.ts` and `cloudflare-manager.ts`, this module deliberately
5
- * contains no operation that changes a machine. Start / halt / reboot live in
6
- * `vultr-actions.ts`, and destructive operations (delete, reinstall, restore)
7
- * are not implemented at all — the same line `GitManager` draws around
8
- * `reset --hard`.
9
- *
10
- * Every field and path below comes from Vultr's official Go SDK
11
- * (`github.com/vultr/govultr`), which is generated against the same API the
12
- * docs describe.
13
- */
14
- export class VultrApiError extends Error {
15
- status;
16
- path;
17
- constructor(message, status, path) {
18
- super(message);
19
- this.status = status;
20
- this.path = path;
21
- this.name = "VultrApiError";
22
- }
23
- }
24
- /** Vultr caps `per_page` at 500; one page covers any realistic account. */
25
- const PER_PAGE = 500;
26
- /** A hard stop on cursor following, so a pathological account cannot hang a request. */
27
- const MAX_PAGES = 10;
28
- export class VultrManager {
29
- token;
30
- baseUrl;
31
- fetchImpl;
32
- constructor(token, baseUrl = "https://api.vultr.com/v2",
33
- /** The provider's scoped `fetch`; global `fetch` when built outside the registry. */
34
- fetchImpl) {
35
- this.token = token;
36
- this.baseUrl = baseUrl;
37
- this.fetchImpl = fetchImpl;
38
- }
39
- /**
40
- * The account this API key belongs to.
41
- *
42
- * Vultr gives an account no id — the email is what identifies one — so that
43
- * is what the neutral `ProviderAccount.id` carries.
44
- */
45
- async account() {
46
- const { account } = await this.request("/account");
47
- return {
48
- name: account.name ?? "",
49
- email: account.email ?? "",
50
- acls: account.acls ?? [],
51
- };
52
- }
53
- /**
54
- * Every instance on the account, following Vultr's cursor pagination.
55
- *
56
- * The whole list rather than a page: the caller is building an SSH server
57
- * list, and a partial one would silently hide machines.
58
- */
59
- async listInstances(opts = {}) {
60
- const instances = [];
61
- let cursor;
62
- for (let page = 0; page < MAX_PAGES; page += 1) {
63
- const query = new URLSearchParams({ per_page: String(PER_PAGE) });
64
- if (opts.label)
65
- query.set("label", opts.label);
66
- if (opts.tag)
67
- query.set("tag", opts.tag);
68
- if (opts.region)
69
- query.set("region", opts.region);
70
- if (cursor)
71
- query.set("cursor", cursor);
72
- const body = await this.request(`/instances?${query.toString()}`);
73
- instances.push(...(body.instances ?? []).map(normalizeInstance));
74
- cursor = body.meta?.links?.next || undefined;
75
- if (!cursor)
76
- break;
77
- }
78
- return instances;
79
- }
80
- async getInstance(id) {
81
- const { instance } = await this.request(`/instances/${encodeURIComponent(id)}`);
82
- return normalizeInstance(instance);
83
- }
84
- request(path, opts) {
85
- return vultrRequest({ token: this.token, baseUrl: this.baseUrl, fetch: this.fetchImpl }, path, opts);
86
- }
87
- }
88
- /**
89
- * The one place a Vultr API call is made. Shared with `vultr-actions.ts` so
90
- * auth and error shaping stay identical across the read and write halves — the
91
- * read/write boundary is which module exposes an operation, not which one can
92
- * reach the network.
93
- */
94
- export async function vultrRequest(auth, path, opts) {
95
- const url = path.startsWith("http") ? path : `${auth.baseUrl ?? "https://api.vultr.com/v2"}${path}`;
96
- const headers = {
97
- Authorization: `Bearer ${auth.token}`,
98
- Accept: "application/json",
99
- };
100
- const init = { method: opts?.method ?? "GET", headers };
101
- if (opts?.body !== undefined) {
102
- headers["Content-Type"] = "application/json";
103
- init.body = JSON.stringify(opts.body);
104
- }
105
- const response = await (auth.fetch ?? fetch)(url, init);
106
- // Power actions answer 204 with no body, so the body is only read when there
107
- // is one to read.
108
- const text = await response.text().catch(() => "");
109
- if (!response.ok) {
110
- const failure = safeParse(text);
111
- throw new VultrApiError(failure?.error || `Vultr returned ${response.status} for ${path}`, response.status, path);
112
- }
113
- return (safeParse(text) ?? {});
114
- }
115
- function safeParse(text) {
116
- if (!text.trim())
117
- return undefined;
118
- try {
119
- return JSON.parse(text);
120
- }
121
- catch {
122
- return undefined;
123
- }
124
- }
125
- /**
126
- * Vultr writes "no address" as the empty string rather than omitting the field,
127
- * and `0.0.0.0` while an instance is still being built. Both mean the same
128
- * thing to a caller trying to reach the machine.
129
- */
130
- function address(value) {
131
- const trimmed = value?.trim();
132
- if (!trimmed || trimmed === "0.0.0.0" || trimmed === "::")
133
- return undefined;
134
- return trimmed;
135
- }
136
- function normalizeInstance(instance) {
137
- const createdAt = Date.parse(instance.date_created ?? "");
138
- return {
139
- id: instance.id,
140
- label: instance.label ?? "",
141
- hostname: instance.hostname ?? "",
142
- status: instance.status ?? "pending",
143
- powerStatus: instance.power_status ?? "",
144
- serverStatus: instance.server_status ?? "",
145
- mainIp: address(instance.main_ip),
146
- v6MainIp: address(instance.v6_main_ip),
147
- internalIp: address(instance.internal_ip),
148
- region: instance.region ?? "",
149
- plan: instance.plan ?? "",
150
- os: instance.os ?? "",
151
- vcpuCount: instance.vcpu_count ?? 0,
152
- ramMb: instance.ram ?? 0,
153
- diskGb: instance.disk ?? 0,
154
- tags: instance.tags ?? [],
155
- createdAt: Number.isNaN(createdAt) ? undefined : createdAt,
156
- userScheme: instance.user_scheme ?? "root",
157
- };
158
- }
159
- //# sourceMappingURL=vultr-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vultr-manager.js","sourceRoot":"","sources":["../../src/core/vultr-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4CH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IAHlB,YACE,OAAe,EACC,MAAc,EACd,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,wFAAwF;AACxF,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,OAAO,YAAY;IAEJ;IACA;IAEA;IAJnB,YACmB,KAAa,EACb,UAAU,0BAA0B;IACrD,qFAAqF;IACpE,SAAyB;QAHzB,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAA6B;QAEpC,cAAS,GAAT,SAAS,CAAgB;IACzC,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAA0B,UAAU,CAAC,CAAC;QAC5E,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;SACzB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAA0D,EAAE;QAG9E,MAAM,SAAS,GAAoB,EAAE,CAAC;QACtC,IAAI,MAA0B,CAAC;QAC/B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,GAAG;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,MAAM;gBAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkB,cAAc,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACnF,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,SAAS,CAAC;YAC7C,IAAI,CAAC,MAAM;gBAAE,MAAM;QACrB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CACrC,cAAc,kBAAkB,CAAC,EAAE,CAAC,EAAE,CACvC,CAAC;QACF,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAEO,OAAO,CAAI,IAAY,EAAE,IAA0C;QACzE,OAAO,YAAY,CACjB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EACnE,IAAI,EACJ,IAAI,CACL,CAAC;IACJ,CAAC;CACF;AAaD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAsB,EACtB,IAAY,EACZ,IAA0C;IAE1C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,0BAA0B,GAAG,IAAI,EAAE,CAAC;IACpG,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;QACrC,MAAM,EAAE,kBAAkB;KAC3B,CAAC;IACF,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;IACrE,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxD,6EAA6E;IAC7E,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAmC,CAAC;QAClE,MAAM,IAAI,aAAa,CACrB,OAAO,EAAE,KAAK,IAAI,kBAAkB,QAAQ,CAAC,MAAM,QAAQ,IAAI,EAAE,EACjE,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAkCD;;;;GAIG;AACH,SAAS,OAAO,CAAC,KAAyB;IACxC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAqB;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAC1D,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,MAAM,EAAG,QAAQ,CAAC,MAA8B,IAAI,SAAS;QAC7D,WAAW,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACxC,YAAY,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE;QAC1C,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzC,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,EAAE;QAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;QACzB,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE;QACrB,SAAS,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;QACzB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC1D,UAAU,EAAE,QAAQ,CAAC,WAAW,IAAI,MAAM;KAC3C,CAAC;AACJ,CAAC"}
@@ -1,69 +0,0 @@
1
- import type { HostInstance, HostInstanceState, HostProvider, HostProviderActions, HostProviderManifest, HostSshTarget } from "./providers/host-provider.js";
2
- import { type VultrActions } from "./vultr-actions.js";
3
- import type { VultrInstance, VultrManager } from "./vultr-manager.js";
4
- /**
5
- * Vultr as `HostProvider` implementation #1 — the provider that tests whether
6
- * the *second* contract was shaped by the problem or by the first one.
7
- *
8
- * A pure adapter, like `vercel-provider.ts` and `cloudflare-provider.ts`: every
9
- * method delegates to `VultrManager` or `VultrActions` and only reshapes the
10
- * result.
11
- *
12
- * What writing it surfaced:
13
- *
14
- * 1. **A host provider is not repo-scoped.** `DeployProvider` needs a working
15
- * directory to answer anything, because a deployment belongs to the project
16
- * a repository is linked to. An instance belongs to an account. So there is
17
- * no project-resolution ladder here, no link file, no `repoUrl` hook — the
18
- * whole of `providers/project-resolution.ts` is simply not part of this
19
- * contract, which is why the split into two contracts was right.
20
- * 2. **`toSshTarget` needs the machine's login, not just its address.** Hence
21
- * `HostInstance.defaultUser`: Vultr builds an instance with either `root` or
22
- * an unprivileged `linuxuser`, and a target that omits it is one `ssh` tries
23
- * as the *local* username, which fails for every Vultr instance.
24
- * 3. **The shared credential layer carried over untouched.** Vultr reuses
25
- * `providers/credentials.ts` exactly, despite being neither a deploy
26
- * platform nor an OAuth one — the first evidence that layer generalized
27
- * beyond the contract it was extracted from.
28
- */
29
- export declare const VULTR_MANIFEST: HostProviderManifest;
30
- /**
31
- * Vultr's three-field state onto the five neutral ones.
32
- *
33
- * Vultr describes a machine with `status` (the subscription's lifecycle),
34
- * `power_status` (whether the VM is switched on) and `server_status` (how far
35
- * the OS install has got). Only their combination says whether the machine can
36
- * be reached: an `active` instance that is `running` is still unreachable while
37
- * `server_status` is `installingbooting`.
38
- *
39
- * `suspended` has no neutral equivalent — it is Vultr locking the machine, and
40
- * the user has to go and deal with it — so it maps to `error` and survives
41
- * verbatim in `rawState`, the same pressure valve `skipped` used on Cloudflare.
42
- */
43
- export declare function toInstanceState(instance: VultrInstance): HostInstanceState;
44
- /**
45
- * The word Vultr's own dashboard shows, so `rawState` reads as something the
46
- * user recognizes rather than as a field dump: the lifecycle status while the
47
- * instance is not yet `active`, then the install stage, then the power state.
48
- */
49
- export declare function toRawState(instance: VultrInstance): string;
50
- /**
51
- * Vultr's `user_scheme` onto the account name actually present on the machine.
52
- * `limited` provisions a sudo-capable `linuxuser` instead of enabling `root`.
53
- */
54
- export declare function toDefaultUser(instance: VultrInstance): string;
55
- export declare function toHostInstance(instance: VultrInstance): HostInstance;
56
- /**
57
- * The instance as an SSH host — the payoff this contract exists for.
58
- *
59
- * Exported and pure so the mapping is testable on its own, and shared by the
60
- * provider below.
61
- */
62
- export declare function toVultrSshTarget(instance: HostInstance): HostSshTarget | null;
63
- /** The read-safe half, over an already-authenticated `VultrManager`. */
64
- export declare function createVultrHostProvider(manager: VultrManager): HostProvider;
65
- /**
66
- * The write-capable half. Kept a separate factory, resolved separately, and
67
- * never handed to an MCP tool — the same boundary `VultrActions` has.
68
- */
69
- export declare function createVultrHostActions(actions: VultrActions): HostProviderActions;
@@ -1,224 +0,0 @@
1
- import { PRODUCTION_AFFECTING_ACTIONS, VULTR_ACTIONS, } from "./vultr-actions.js";
2
- import { VULTR_PROVIDER_ID } from "./vultr-auth.js";
3
- /**
4
- * Vultr as `HostProvider` implementation #1 — the provider that tests whether
5
- * the *second* contract was shaped by the problem or by the first one.
6
- *
7
- * A pure adapter, like `vercel-provider.ts` and `cloudflare-provider.ts`: every
8
- * method delegates to `VultrManager` or `VultrActions` and only reshapes the
9
- * result.
10
- *
11
- * What writing it surfaced:
12
- *
13
- * 1. **A host provider is not repo-scoped.** `DeployProvider` needs a working
14
- * directory to answer anything, because a deployment belongs to the project
15
- * a repository is linked to. An instance belongs to an account. So there is
16
- * no project-resolution ladder here, no link file, no `repoUrl` hook — the
17
- * whole of `providers/project-resolution.ts` is simply not part of this
18
- * contract, which is why the split into two contracts was right.
19
- * 2. **`toSshTarget` needs the machine's login, not just its address.** Hence
20
- * `HostInstance.defaultUser`: Vultr builds an instance with either `root` or
21
- * an unprivileged `linuxuser`, and a target that omits it is one `ssh` tries
22
- * as the *local* username, which fails for every Vultr instance.
23
- * 3. **The shared credential layer carried over untouched.** Vultr reuses
24
- * `providers/credentials.ts` exactly, despite being neither a deploy
25
- * platform nor an OAuth one — the first evidence that layer generalized
26
- * beyond the contract it was extracted from.
27
- */
28
- export const VULTR_MANIFEST = {
29
- id: VULTR_PROVIDER_ID,
30
- name: "Vultr",
31
- kind: "host",
32
- // Three action names that share not one word with either deploy provider,
33
- // which is the clearest evidence for why these strings belong to the plugin:
34
- // no host catalogue written for Vercel could ever have contained "halt".
35
- // No `scope.label` — a host provider has no scopes.
36
- strings: {
37
- en: {
38
- "action.start": "Start",
39
- "action.start.done": "Instance starting.",
40
- "action.halt": "Stop",
41
- "action.halt.done": "Instance stopping.",
42
- "action.halt.confirmTitle": "Stop this instance?",
43
- "action.halt.confirm": "The machine powers off immediately. Anything running on it stops.",
44
- "action.reboot": "Reboot",
45
- "action.reboot.done": "Instance rebooting.",
46
- "action.reboot.confirmTitle": "Reboot this instance?",
47
- "action.reboot.confirm": "The machine restarts immediately. Anything running on it stops.",
48
- },
49
- zh: {
50
- "action.start": "启动",
51
- "action.start.done": "实例正在启动。",
52
- "action.halt": "停止",
53
- "action.halt.done": "实例正在停止。",
54
- "action.halt.confirmTitle": "停止该实例?",
55
- "action.halt.confirm": "机器将立即关机,其上运行的一切都会停止。",
56
- "action.reboot": "重启",
57
- "action.reboot.done": "实例正在重启。",
58
- "action.reboot.confirmTitle": "重启该实例?",
59
- "action.reboot.confirm": "机器将立即重启,其上运行的一切都会停止。",
60
- },
61
- },
62
- actions: [...VULTR_ACTIONS],
63
- productionAffecting: [...PRODUCTION_AFFECTING_ACTIONS],
64
- // The API only. An adopted instance is reached over SSH by `ssh-servers.ts`,
65
- // which is the host's own transport and never goes through this fetch — so no
66
- // instance address belongs here.
67
- api: { hosts: ["api.vultr.com"] },
68
- };
69
- /**
70
- * Vultr's three-field state onto the five neutral ones.
71
- *
72
- * Vultr describes a machine with `status` (the subscription's lifecycle),
73
- * `power_status` (whether the VM is switched on) and `server_status` (how far
74
- * the OS install has got). Only their combination says whether the machine can
75
- * be reached: an `active` instance that is `running` is still unreachable while
76
- * `server_status` is `installingbooting`.
77
- *
78
- * `suspended` has no neutral equivalent — it is Vultr locking the machine, and
79
- * the user has to go and deal with it — so it maps to `error` and survives
80
- * verbatim in `rawState`, the same pressure valve `skipped` used on Cloudflare.
81
- */
82
- export function toInstanceState(instance) {
83
- switch (instance.status) {
84
- case "pending":
85
- case "resizing":
86
- return "provisioning";
87
- case "suspended":
88
- return "error";
89
- case "active":
90
- break;
91
- default:
92
- return "unknown";
93
- }
94
- if (instance.serverStatus === "installingbooting")
95
- return "provisioning";
96
- if (instance.serverStatus === "locked")
97
- return "provisioning";
98
- if (instance.powerStatus === "running")
99
- return "running";
100
- if (instance.powerStatus === "stopped")
101
- return "stopped";
102
- return "unknown";
103
- }
104
- /**
105
- * The word Vultr's own dashboard shows, so `rawState` reads as something the
106
- * user recognizes rather than as a field dump: the lifecycle status while the
107
- * instance is not yet `active`, then the install stage, then the power state.
108
- */
109
- export function toRawState(instance) {
110
- if (instance.status !== "active")
111
- return instance.status;
112
- if (instance.serverStatus === "installingbooting")
113
- return "installing";
114
- if (instance.serverStatus === "locked")
115
- return "locked";
116
- return instance.powerStatus || "unknown";
117
- }
118
- /**
119
- * Vultr's `user_scheme` onto the account name actually present on the machine.
120
- * `limited` provisions a sudo-capable `linuxuser` instead of enabling `root`.
121
- */
122
- export function toDefaultUser(instance) {
123
- return instance.userScheme === "limited" ? "linuxuser" : "root";
124
- }
125
- export function toHostInstance(instance) {
126
- return {
127
- id: instance.id,
128
- // A Vultr instance may be created with no label at all, in which case its
129
- // hostname is the only human-readable thing about it.
130
- label: instance.label || instance.hostname || instance.id,
131
- state: toInstanceState(instance),
132
- rawState: toRawState(instance),
133
- ipv4: instance.mainIp,
134
- ipv6: instance.v6MainIp,
135
- hostname: instance.hostname || undefined,
136
- region: instance.region || undefined,
137
- plan: instance.plan || undefined,
138
- os: instance.os || undefined,
139
- specs: {
140
- vcpus: instance.vcpuCount || undefined,
141
- memoryMb: instance.ramMb || undefined,
142
- diskGb: instance.diskGb || undefined,
143
- },
144
- tags: instance.tags,
145
- createdAt: instance.createdAt,
146
- defaultUser: toDefaultUser(instance),
147
- };
148
- }
149
- /**
150
- * The instance as an SSH host — the payoff this contract exists for.
151
- *
152
- * Exported and pure so the mapping is testable on its own, and shared by the
153
- * provider below.
154
- */
155
- export function toVultrSshTarget(instance) {
156
- // IPv4 first: a v6-only target only works from a v6-capable client, and an
157
- // instance without either address is still being built.
158
- const address = instance.ipv4 ?? instance.ipv6;
159
- if (!address)
160
- return null;
161
- return {
162
- host: instance.defaultUser ? `${instance.defaultUser}@${address}` : address,
163
- name: instance.label,
164
- // `environment` is deliberately left unset. Vultr tags are free-form and
165
- // mean whatever the account owner decided, so inferring "Production" from
166
- // one would eventually put that label on the wrong machine. A user-saved
167
- // value wins in the merge anyway, so this is a blank the user can fill.
168
- instance: {
169
- providerId: VULTR_PROVIDER_ID,
170
- providerName: VULTR_MANIFEST.name,
171
- instanceId: instance.id,
172
- state: instance.state,
173
- rawState: instance.rawState,
174
- region: instance.region,
175
- },
176
- };
177
- }
178
- /** The read-safe half, over an already-authenticated `VultrManager`. */
179
- export function createVultrHostProvider(manager) {
180
- return {
181
- async account() {
182
- const account = await manager.account();
183
- return {
184
- // Vultr gives an account no id of its own; the email is what identifies
185
- // one, and is what its dashboard shows.
186
- id: account.email,
187
- username: account.email,
188
- name: account.name || null,
189
- email: account.email || null,
190
- };
191
- },
192
- async listInstances() {
193
- return (await manager.listInstances()).map(toHostInstance);
194
- },
195
- async getInstance(id) {
196
- return toHostInstance(await manager.getInstance(id));
197
- },
198
- toSshTarget: toVultrSshTarget,
199
- };
200
- }
201
- /**
202
- * The write-capable half. Kept a separate factory, resolved separately, and
203
- * never handed to an MCP tool — the same boundary `VultrActions` has.
204
- */
205
- export function createVultrHostActions(actions) {
206
- return {
207
- async run(action, instanceId) {
208
- switch (action) {
209
- case "start":
210
- await actions.start(instanceId);
211
- return;
212
- case "halt":
213
- await actions.halt(instanceId);
214
- return;
215
- case "reboot":
216
- await actions.reboot(instanceId);
217
- return;
218
- default:
219
- throw new Error(`Vultr does not support the action "${action}".`);
220
- }
221
- },
222
- };
223
- }
224
- //# sourceMappingURL=vultr-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vultr-provider.js","sourceRoot":"","sources":["../../src/core/vultr-provider.ts"],"names":[],"mappings":"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"}
@@ -1,139 +0,0 @@
1
- import { z } from "zod";
2
- import type { ConfigStore } from "./config-store.js";
3
- import type { ErrorInbox } from "./error-inbox.js";
4
- import type { TimelineStore } from "./timeline-store.js";
5
- /**
6
- * Event-driven workflow triggers (IDEAS #16). Workflows are user-run today; a
7
- * trigger binds an app-detected event to a workflow so it fires automatically.
8
- *
9
- * The workflow runner lives client-side (agent steps run through the dock), so a
10
- * trigger can't run a workflow on the server. Instead a fired trigger enqueues a
11
- * **pending run** here; the open dashboard drains the queue and drives the
12
- * existing client runner. Pending runs survive until a browser claims them, so
13
- * an event detected while no tab is open isn't lost.
14
- *
15
- * Event sources:
16
- * - `error-incident` — {@link ErrorInbox} surfaces a new/repeated incident (push).
17
- * - `service-crash` — {@link TimelineStore} records a `service.lifecycle`
18
- * event with `severity: "error"` (non-zero exit not initiated by the user) (push).
19
- * - `ci-failure` — the only **polled** source: an optional `ciSource`
20
- * reports the current branch's failing CI on an interval. It fires at most
21
- * once per commit sha (a failing run isn't re-enqueued every poll).
22
- */
23
- export declare const triggerEventSchema: z.ZodEnum<["error-incident", "service-crash", "ci-failure"]>;
24
- export type TriggerEvent = z.infer<typeof triggerEventSchema>;
25
- /**
26
- * A non-null result means the current branch's CI is failing on `sha`. The
27
- * source returns `null` whenever CI is green, still running, or GitHub is
28
- * unavailable (no token / remote) — i.e. "nothing to fire".
29
- */
30
- export interface CiFailureSnapshot {
31
- sha: string;
32
- branch: string;
33
- /** Names of the checks / workflow runs that failed. */
34
- failingChecks: string[];
35
- }
36
- export declare const workflowTriggerSchema: z.ZodObject<{
37
- id: z.ZodString;
38
- /** The workflow (built-in or user-saved) to run when this fires. */
39
- workflowId: z.ZodString;
40
- event: z.ZodEnum<["error-incident", "service-crash", "ci-failure"]>;
41
- /** Disabled triggers stay configured but never fire. */
42
- enabled: z.ZodDefault<z.ZodBoolean>;
43
- /**
44
- * Optional case-insensitive substring matched against the event's service
45
- * name (and, for incidents, the incident title). Empty/absent = match all.
46
- */
47
- filter: z.ZodOptional<z.ZodString>;
48
- /**
49
- * When true the dashboard starts the run automatically; otherwise the pending
50
- * run is surfaced for the user to start with one click.
51
- */
52
- autoRun: z.ZodDefault<z.ZodBoolean>;
53
- }, "strip", z.ZodTypeAny, {
54
- id: string;
55
- workflowId: string;
56
- event: "error-incident" | "service-crash" | "ci-failure";
57
- enabled: boolean;
58
- autoRun: boolean;
59
- filter?: string | undefined;
60
- }, {
61
- id: string;
62
- workflowId: string;
63
- event: "error-incident" | "service-crash" | "ci-failure";
64
- filter?: string | undefined;
65
- enabled?: boolean | undefined;
66
- autoRun?: boolean | undefined;
67
- }>;
68
- export type WorkflowTrigger = z.infer<typeof workflowTriggerSchema>;
69
- export interface PendingRun {
70
- id: string;
71
- triggerId: string;
72
- workflowId: string;
73
- event: TriggerEvent;
74
- /** Human-readable reason this fired, shown in the dashboard. */
75
- summary: string;
76
- /** `triggerId:cause` dedupe key, collapsing a burst into one pending run. */
77
- signature: string;
78
- autoRun: boolean;
79
- createdAt: string;
80
- }
81
- type PendingListener = (pending: PendingRun) => void;
82
- interface WorkflowTriggerManagerOptions {
83
- configStore: ConfigStore;
84
- errorInbox: ErrorInbox;
85
- timelineStore: TimelineStore;
86
- /**
87
- * Polled CI source for `ci-failure` triggers. Omit to disable the source
88
- * (e.g. tests that don't exercise CI, or when GitHub is never configured).
89
- */
90
- ciSource?: () => Promise<CiFailureSnapshot | null>;
91
- /**
92
- * How often {@link ciSource} is polled. `0` disables the internal timer —
93
- * tests drive {@link WorkflowTriggerManager.pollCiOnce} by hand instead.
94
- */
95
- ciPollIntervalMs?: number;
96
- /** Max pending runs kept; older ones drop off the front. */
97
- capacity?: number;
98
- /** A repeat of the same signature within this window is ignored. */
99
- dedupeWindowMs?: number;
100
- /** Injectable clock for tests. */
101
- now?: () => number;
102
- }
103
- export declare class WorkflowTriggerManager {
104
- private readonly configStore;
105
- private readonly errorInbox;
106
- private readonly timelineStore;
107
- private readonly ciSource?;
108
- private readonly ciPollIntervalMs;
109
- private readonly capacity;
110
- private readonly dedupeWindowMs;
111
- private readonly now;
112
- private readonly pending;
113
- private readonly lastFiredAt;
114
- private readonly listeners;
115
- private readonly unsubscribers;
116
- private ciTimer?;
117
- private started;
118
- constructor(options: WorkflowTriggerManagerOptions);
119
- /** Subscribe to the live event sources. Idempotent. */
120
- start(): void;
121
- stop(): void;
122
- subscribe(listener: PendingListener): () => void;
123
- /** Pending runs, newest first. */
124
- listPending(): PendingRun[];
125
- /** Drop a pending run once the dashboard has started (or dismissed) it. */
126
- ackPending(id: string): boolean;
127
- private onIncident;
128
- private onTimelineEvent;
129
- /**
130
- * Poll the CI source once and enqueue a run per matching `ci-failure`
131
- * trigger. Public so tests can drive it without timers; a no-op when no CI
132
- * source is wired or no `ci-failure` trigger is enabled (skips the network
133
- * call entirely in that case).
134
- */
135
- pollCiOnce(): Promise<void>;
136
- private triggersFor;
137
- private enqueue;
138
- }
139
- export {};