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,101 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { GitManager } from "../git-manager.js";
4
- import { matchRegisteredRepository } from "../repo-match.js";
5
- /**
6
- * The project this repository deploys, in order of confidence:
7
- *
8
- * 1. an explicit pin the user chose in the dashboard;
9
- * 2. the vendor CLI's own link file — the same file the CLI trusts, so a linked
10
- * repo needs no configuration here at all;
11
- * 3. a lookup by the repo's git remote, which is how the provider itself keys
12
- * an imported project.
13
- *
14
- * Returns undefined rather than guessing when none of those answer, since the
15
- * wrong project would show deployments for unrelated code.
16
- */
17
- export async function resolveProviderProject(options) {
18
- const { providerId, hooks, config, gitCwd, getProject, findByRepoUrl } = options;
19
- const git = new GitManager(gitCwd);
20
- const topLevel = await git.root().catch(() => gitCwd);
21
- const repository = await matchRegisteredRepository(config, topLevel).catch(() => undefined);
22
- const pinned = repository?.providerProjects?.[providerId];
23
- if (pinned) {
24
- const project = await getProject(pinned).catch(() => undefined);
25
- if (project)
26
- return project;
27
- }
28
- if (hooks.linkFile) {
29
- const linkedId = await readLinkedProjectId(topLevel, hooks.linkFile);
30
- if (linkedId) {
31
- const project = await getProject(linkedId).catch(() => undefined);
32
- if (project)
33
- return project;
34
- }
35
- }
36
- const remoteUrl = await git.remoteUrl("origin").catch(() => null);
37
- const repoUrl = remoteUrl ? hooks.repoUrl(remoteUrl) : null;
38
- if (repoUrl) {
39
- const project = await findByRepoUrl(repoUrl).catch(() => undefined);
40
- if (project)
41
- return project;
42
- }
43
- return undefined;
44
- }
45
- /** The project id recorded by the vendor CLI's link command, when present. */
46
- export async function readLinkedProjectId(repoRoot, linkFile) {
47
- try {
48
- const raw = await readFile(join(repoRoot, ...linkFile.path.split("/")), "utf8");
49
- const parsed = JSON.parse(raw);
50
- const value = parsed[linkFile.field];
51
- return typeof value === "string" && value.trim() ? value.trim() : undefined;
52
- }
53
- catch {
54
- return undefined;
55
- }
56
- }
57
- /** The working directory provider operations run against — mirrors the GitHub seam. */
58
- export function selectedProviderCwd(config, fallbackCwd) {
59
- const repository = config.gitRepositories.find((entry) => entry.name === config.selectedGitRepository)
60
- ?? config.gitRepositories[0];
61
- return repository?.activeWorktreePath ?? repository?.path ?? fallbackCwd;
62
- }
63
- /**
64
- * The scope to use when the user has never chosen one.
65
- *
66
- * Vercel puts a personal account's projects under an implicit "<name>'s
67
- * projects" team, not under the account itself, so an unscoped client lists
68
- * nothing at all — which reads as "no projects" rather than "wrong scope". Any
69
- * provider with an implicit default scope has this problem. A `cli` connection
70
- * avoids it by inheriting the CLI's own scope; a browser sign-in or a pasted
71
- * token has nothing to inherit, so the sole scope is adopted here and
72
- * persisted, making this a one-time lookup.
73
- *
74
- * With several scopes there is no unambiguous answer, so none is chosen and the
75
- * dashboard's scope switcher is left to ask. Failures are swallowed: an
76
- * unscoped client still works, and the caller's own request should be what
77
- * surfaces an auth problem.
78
- */
79
- export async function adoptSoleScope(options) {
80
- const fromCli = options.source === "cli";
81
- // A `cli` connection to a CLI that selects its own scope has already had it
82
- // inherited, so there is nothing to adopt and persisting would override the
83
- // vendor's own `switch` command from then on.
84
- if (fromCli && (options.cliSelectsScope ?? true))
85
- return undefined;
86
- try {
87
- const scopes = await options.listScopes();
88
- if (scopes.length !== 1)
89
- return undefined;
90
- const [scope] = scopes;
91
- // Adopted in memory either way; written to config only when nothing in the
92
- // user's environment has a better claim to the answer.
93
- if (!fromCli)
94
- await options.persist({ scopeId: scope.id, scopeSlug: scope.slug });
95
- return scope.id;
96
- }
97
- catch {
98
- return undefined;
99
- }
100
- }
101
- //# sourceMappingURL=project-resolution.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-resolution.js","sourceRoot":"","sources":["../../../src/core/providers/project-resolution.ts"],"names":[],"mappings":"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"}
@@ -1,73 +0,0 @@
1
- import type { ConfigStore } from "../config-store.js";
2
- import type { ProviderAuthSpec, ProviderCredential } from "./credentials.js";
3
- import type { DeployProvider, DeployProviderActions, DeployProviderHooks, DeployProviderManifest, ProviderProject } from "./deploy-provider.js";
4
- import type { HostProvider, HostProviderActions, HostProviderManifest } from "./host-provider.js";
5
- /**
6
- * The in-tree provider registry.
7
- *
8
- * This is the file a new provider is added to, and — apart from its own
9
- * directory — the *only* one. That is the whole point of the exercise: adding
10
- * Cloudflare should not mean editing `server.ts`, `app.tsx`, `routes/index.ts`,
11
- * `mcp/tools/index.ts`, `en.ts`, `zh.ts` and `mock-api.ts` the way adding
12
- * Vercel did.
13
- *
14
- * Two kinds live here, because there are two contracts: deploy platforms
15
- * (`DeployProvider`) and infrastructure hosts (`HostProvider`). They share the
16
- * credential layer and nothing else, so they get separate arrays and separate
17
- * lookups rather than a union that every caller would have to narrow.
18
- *
19
- * Deliberately static arrays rather than a loader. Third-party providers are
20
- * out of scope until three implementations have shaped the contract — see §7 of
21
- * `docs/plans/2026-08-13-provider-registry-design.md`.
22
- */
23
- /** A connected provider client plus whatever project resolves for the repo. */
24
- export interface ProviderContext {
25
- provider: DeployProvider;
26
- credential: ProviderCredential;
27
- /** Absent when connected but no project is linked to this repo yet. */
28
- project?: ProviderProject;
29
- }
30
- export interface RegisteredDeployProvider {
31
- manifest: DeployProviderManifest;
32
- auth: ProviderAuthSpec;
33
- hooks: DeployProviderHooks;
34
- /** Throws when the provider is not connected; a missing project does not. */
35
- context(configStore: ConfigStore, gitCwd: string): Promise<ProviderContext>;
36
- /** The write-capable half, resolved separately and never given to an MCP tool. */
37
- actions(configStore: ConfigStore): Promise<DeployProviderActions>;
38
- }
39
- export declare const deployProviders: RegisteredDeployProvider[];
40
- export declare function findDeployProvider(id: string): RegisteredDeployProvider | undefined;
41
- /** Throws with the id the caller asked for, which is what the route reports. */
42
- export declare function requireDeployProvider(id: string): RegisteredDeployProvider;
43
- export declare const deployProviderManifests: () => DeployProviderManifest[];
44
- /** A connected client for `providerId`, or a throw naming what is not connected. */
45
- export declare function requireProviderContext(providerId: string, configStore: ConfigStore, gitCwd: string): Promise<ProviderContext>;
46
- /** The same, for callers that treat "not connected" as "nothing to show". */
47
- export declare function optionalProviderContext(providerId: string, configStore: ConfigStore, gitCwd: string): Promise<ProviderContext | null>;
48
- export declare function requireProviderActions(providerId: string, configStore: ConfigStore): Promise<DeployProviderActions>;
49
- /**
50
- * A connected host client. Deliberately has no project and no working
51
- * directory: an instance belongs to an account, not to a repository, which is
52
- * the shape difference that made this a second contract rather than a wider
53
- * first one.
54
- */
55
- export interface HostContext {
56
- provider: HostProvider;
57
- credential: ProviderCredential;
58
- }
59
- export interface RegisteredHostProvider {
60
- manifest: HostProviderManifest;
61
- auth: ProviderAuthSpec;
62
- /** Throws when the provider is not connected. */
63
- context(configStore: ConfigStore): Promise<HostContext>;
64
- /** The write-capable half, resolved separately and never given to an MCP tool. */
65
- actions(configStore: ConfigStore): Promise<HostProviderActions>;
66
- }
67
- export declare const hostProviders: RegisteredHostProvider[];
68
- export declare function findHostProvider(id: string): RegisteredHostProvider | undefined;
69
- /** Throws with the id the caller asked for, which is what the route reports. */
70
- export declare function requireHostProvider(id: string): RegisteredHostProvider;
71
- export declare const hostProviderManifests: () => HostProviderManifest[];
72
- export declare function requireHostContext(providerId: string, configStore: ConfigStore): Promise<HostContext>;
73
- export declare function requireHostActions(providerId: string, configStore: ConfigStore): Promise<HostProviderActions>;
@@ -1,53 +0,0 @@
1
- import { cloudflareDeployProvider } from "../cloudflare-context.js";
2
- import { vercelDeployProvider } from "../vercel-context.js";
3
- import { vultrHostProvider } from "../vultr-context.js";
4
- export const deployProviders = [
5
- vercelDeployProvider,
6
- cloudflareDeployProvider,
7
- ];
8
- export function findDeployProvider(id) {
9
- return deployProviders.find((provider) => provider.manifest.id === id);
10
- }
11
- /** Throws with the id the caller asked for, which is what the route reports. */
12
- export function requireDeployProvider(id) {
13
- const provider = findDeployProvider(id);
14
- if (!provider)
15
- throw new Error(`Unknown provider "${id}".`);
16
- return provider;
17
- }
18
- export const deployProviderManifests = () => deployProviders.map((provider) => provider.manifest);
19
- /** A connected client for `providerId`, or a throw naming what is not connected. */
20
- export function requireProviderContext(providerId, configStore, gitCwd) {
21
- return requireDeployProvider(providerId).context(configStore, gitCwd);
22
- }
23
- /** The same, for callers that treat "not connected" as "nothing to show". */
24
- export async function optionalProviderContext(providerId, configStore, gitCwd) {
25
- try {
26
- return await requireProviderContext(providerId, configStore, gitCwd);
27
- }
28
- catch {
29
- return null;
30
- }
31
- }
32
- export function requireProviderActions(providerId, configStore) {
33
- return requireDeployProvider(providerId).actions(configStore);
34
- }
35
- export const hostProviders = [vultrHostProvider];
36
- export function findHostProvider(id) {
37
- return hostProviders.find((provider) => provider.manifest.id === id);
38
- }
39
- /** Throws with the id the caller asked for, which is what the route reports. */
40
- export function requireHostProvider(id) {
41
- const provider = findHostProvider(id);
42
- if (!provider)
43
- throw new Error(`Unknown host provider "${id}".`);
44
- return provider;
45
- }
46
- export const hostProviderManifests = () => hostProviders.map((provider) => provider.manifest);
47
- export function requireHostContext(providerId, configStore) {
48
- return requireHostProvider(providerId).context(configStore);
49
- }
50
- export function requireHostActions(providerId, configStore) {
51
- return requireHostProvider(providerId).actions(configStore);
52
- }
53
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAoDxD,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,oBAAoB;IACpB,wBAAwB;CACzB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAA6B,EAAE,CACpE,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEvD,oFAAoF;AACpF,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,WAAwB,EACxB,MAAc;IAEd,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAkB,EAClB,WAAwB,EACxB,MAAc;IAEd,IAAI,CAAC;QACH,OAAO,MAAM,sBAAsB,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,WAAwB;IAExB,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChE,CAAC;AAwBD,MAAM,CAAC,MAAM,aAAa,GAA6B,CAAC,iBAAiB,CAAC,CAAC;AAE3E,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAA2B,EAAE,CAChE,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAErD,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,WAAwB;IAExB,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,WAAwB;IAExB,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,95 +0,0 @@
1
- /**
2
- * A provider's own words, carried in its manifest instead of in the host's
3
- * translation catalogue.
4
- *
5
- * This is §11 gate item 2. The rule that decides where a string lives is not
6
- * "is it about a provider" — most of the deploy view is — but **who determines
7
- * the set of keys**:
8
- *
9
- * - "No deployments yet." is one sentence for every provider. The host owns it,
10
- * it stays in `i18n/en.ts`, and adding a provider does not touch it.
11
- * - "Promote" is one of *Vercel's* four action names. Cloudflare has two of
12
- * them, Vultr has three entirely different ones, and provider #4 will invent
13
- * a word nobody has typed yet. The host cannot hold a key it cannot know, so
14
- * the provider carries it.
15
- *
16
- * Before this, `provider.action.promote` sat in `en.ts`/`zh.ts` and the view
17
- * hard-coded the union `"redeploy" | "cancel" | "promote" | "rollback"` — which
18
- * is why a provider declaring `actions: ["publish"]` got a `t()` call returning
19
- * the raw key and no button to put it on. That is tax #2, and paying it is what
20
- * makes the declarative half of the manifest genuinely declarative.
21
- *
22
- * `scopeLabel` moved here for a sharper reason: it was a **raw English string
23
- * in the manifest** (`"Team"` / `"Account"`) rendered straight into the DOM, so
24
- * it was never translated at all. A zh user read "Team". Moving it into a
25
- * locale bundle is the difference between a translated app and one that merely
26
- * looks translated.
27
- */
28
- /**
29
- * The locales a manifest may carry — deliberately the same two as the client's
30
- * `Language`, and no wider.
31
- *
32
- * Re-declared here rather than imported because `src/core` must not depend on
33
- * `src/web/client` (the client is excluded from the server tsconfig and built
34
- * separately). `test/provider-strings.test.ts` asserts the two lists agree, so
35
- * adding a third language to the client fails there rather than silently
36
- * leaving every provider unable to speak it.
37
- */
38
- export type ProviderLocale = "en" | "zh";
39
- export declare const PROVIDER_LOCALES: readonly ProviderLocale[];
40
- /**
41
- * One locale's worth of a provider's strings.
42
- *
43
- * Keys are flat and namespaced by what they describe:
44
- *
45
- * | Key | Required when |
46
- * | --- | --- |
47
- * | `scope.label` | the provider has scopes (deploy providers) |
48
- * | `action.<name>` | for every name in `manifest.actions` — the button |
49
- * | `action.<name>.done` | for every name in `manifest.actions` — the toast |
50
- * | `action.<name>.confirmTitle` | for every name in `productionAffecting` |
51
- * | `action.<name>.confirm` | for every name in `productionAffecting` |
52
- *
53
- * "Required" is enforced by `test/provider-strings.test.ts`, not by the type: a
54
- * `Record<string, string>` is what a manifest parsed from JSON produces, and
55
- * stage 3 of §12 is where that JSON arrives. A type cannot check a key set that
56
- * depends on the value of a sibling field anyway.
57
- */
58
- export type ProviderStringBundle = Record<string, string>;
59
- /**
60
- * A manifest's strings, one bundle per locale.
61
- *
62
- * **`en` is required and the rest are optional, and that asymmetry is the whole
63
- * design.** It mirrors the host's own catalogue exactly — `en.ts` defines the
64
- * key type, `zh.ts` is a `Partial` — so there is one mental model rather than
65
- * two. It also states the right thing about third-party plugins: an author in
66
- * one country can ship English only and their plugin works, because lookup
67
- * falls back rather than failing.
68
- *
69
- * The cost of that generosity is the one §9 named: a partial locale is
70
- * *silent*. So the leniency lives in the type, where a plugin needs it, and the
71
- * strictness lives in the test, which covers what this repo ships — every
72
- * in-tree provider must be complete in every locale, and a missing zh key fails
73
- * CI instead of quietly rendering English.
74
- */
75
- export interface ProviderStrings {
76
- en: ProviderStringBundle;
77
- zh?: ProviderStringBundle;
78
- }
79
- /**
80
- * Resolve one key, falling back through locale → English → undefined.
81
- *
82
- * Returning `undefined` rather than the key itself is deliberate, and differs
83
- * from the host's `t()`, which renders the key as a loud dev tell. Here the
84
- * caller has something better to fall back to: an action's own name is a
85
- * serviceable button label, so a plugin that forgot `action.publish` shows
86
- * "publish" rather than "action.publish". The host has no such fallback for its
87
- * own keys, which is why the two resolvers differ.
88
- */
89
- export declare function providerString(strings: ProviderStrings | undefined, locale: ProviderLocale, key: string): string | undefined;
90
- /** The keys a manifest must define, given the actions it declares. */
91
- export declare function requiredStringKeys(manifest: {
92
- actions: readonly string[];
93
- productionAffecting: readonly string[];
94
- kind: string;
95
- }): string[];
@@ -1,59 +0,0 @@
1
- /**
2
- * A provider's own words, carried in its manifest instead of in the host's
3
- * translation catalogue.
4
- *
5
- * This is §11 gate item 2. The rule that decides where a string lives is not
6
- * "is it about a provider" — most of the deploy view is — but **who determines
7
- * the set of keys**:
8
- *
9
- * - "No deployments yet." is one sentence for every provider. The host owns it,
10
- * it stays in `i18n/en.ts`, and adding a provider does not touch it.
11
- * - "Promote" is one of *Vercel's* four action names. Cloudflare has two of
12
- * them, Vultr has three entirely different ones, and provider #4 will invent
13
- * a word nobody has typed yet. The host cannot hold a key it cannot know, so
14
- * the provider carries it.
15
- *
16
- * Before this, `provider.action.promote` sat in `en.ts`/`zh.ts` and the view
17
- * hard-coded the union `"redeploy" | "cancel" | "promote" | "rollback"` — which
18
- * is why a provider declaring `actions: ["publish"]` got a `t()` call returning
19
- * the raw key and no button to put it on. That is tax #2, and paying it is what
20
- * makes the declarative half of the manifest genuinely declarative.
21
- *
22
- * `scopeLabel` moved here for a sharper reason: it was a **raw English string
23
- * in the manifest** (`"Team"` / `"Account"`) rendered straight into the DOM, so
24
- * it was never translated at all. A zh user read "Team". Moving it into a
25
- * locale bundle is the difference between a translated app and one that merely
26
- * looks translated.
27
- */
28
- export const PROVIDER_LOCALES = ["en", "zh"];
29
- /**
30
- * Resolve one key, falling back through locale → English → undefined.
31
- *
32
- * Returning `undefined` rather than the key itself is deliberate, and differs
33
- * from the host's `t()`, which renders the key as a loud dev tell. Here the
34
- * caller has something better to fall back to: an action's own name is a
35
- * serviceable button label, so a plugin that forgot `action.publish` shows
36
- * "publish" rather than "action.publish". The host has no such fallback for its
37
- * own keys, which is why the two resolvers differ.
38
- */
39
- export function providerString(strings, locale, key) {
40
- if (!strings)
41
- return undefined;
42
- return strings[locale]?.[key] ?? strings.en[key];
43
- }
44
- /** The keys a manifest must define, given the actions it declares. */
45
- export function requiredStringKeys(manifest) {
46
- const keys = [];
47
- // Only deploy providers have scopes; a host provider's instances are not
48
- // grouped under anything the user picks between.
49
- if (manifest.kind === "deploy")
50
- keys.push("scope.label");
51
- for (const action of manifest.actions) {
52
- keys.push(`action.${action}`, `action.${action}.done`);
53
- }
54
- for (const action of manifest.productionAffecting) {
55
- keys.push(`action.${action}.confirmTitle`, `action.${action}.confirm`);
56
- }
57
- return keys;
58
- }
59
- //# sourceMappingURL=strings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/core/providers/strings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAcH,MAAM,CAAC,MAAM,gBAAgB,GAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AA2CxE;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAoC,EACpC,MAAsB,EACtB,GAAW;IAEX,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,QAIlC;IACC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,yEAAyE;IACzE,iDAAiD;IACjD,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,EAAE,EAAE,UAAU,MAAM,OAAO,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,eAAe,EAAE,UAAU,MAAM,UAAU,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { NoMoreIdeConfig, ProviderConnection, ServiceDefinition } from "./types.js";
2
- export type PublicServiceDefinition = Omit<ServiceDefinition, "env">;
3
- export type PublicProviderConnection = Omit<ProviderConnection, "token" | "refreshToken">;
4
- export interface PublicNoMoreIdeConfig extends Omit<NoMoreIdeConfig, "services" | "databases" | "githubTokens" | "connections"> {
5
- services: PublicServiceDefinition[];
6
- databases: NoMoreIdeConfig["databases"];
7
- githubTokens: Array<Omit<NoMoreIdeConfig["githubTokens"][number], "token">>;
8
- connections: Record<string, PublicProviderConnection>;
9
- }
10
- /**
11
- * Project configuration safe to send to a dashboard client.
12
- *
13
- * The full config is intentionally a server-side capability: it contains
14
- * process environment values, database credentials, GitHub tokens, and
15
- * provider access/refresh tokens. Dashboard consumers only need the metadata
16
- * around those values, never the credentials themselves.
17
- */
18
- export declare function publicConfig(config: NoMoreIdeConfig): PublicNoMoreIdeConfig;
@@ -1,76 +0,0 @@
1
- import { maskConnectionUrl } from "./db-peek.js";
2
- /**
3
- * Project configuration safe to send to a dashboard client.
4
- *
5
- * The full config is intentionally a server-side capability: it contains
6
- * process environment values, database credentials, GitHub tokens, and
7
- * provider access/refresh tokens. Dashboard consumers only need the metadata
8
- * around those values, never the credentials themselves.
9
- */
10
- export function publicConfig(config) {
11
- return {
12
- version: config.version,
13
- services: config.services.map((service) => ({
14
- name: service.name,
15
- ...(service.kind === undefined ? {} : { kind: service.kind }),
16
- ...(service.port === undefined ? {} : { port: service.port }),
17
- ...(service.description === undefined ? {} : { description: service.description }),
18
- ...(service.test === undefined ? {} : { test: service.test }),
19
- ...(service.dependsOn === undefined ? {} : { dependsOn: service.dependsOn }),
20
- ...(service.projectPath === undefined ? {} : { projectPath: service.projectPath }),
21
- ...(service.command === undefined ? {} : { command: service.command }),
22
- ...(service.args === undefined ? {} : { args: service.args }),
23
- ...(service.cwd === undefined ? {} : { cwd: service.cwd }),
24
- ...(service.composeFile === undefined ? {} : { composeFile: service.composeFile }),
25
- ...(service.composeService === undefined
26
- ? {}
27
- : { composeService: service.composeService }),
28
- ...(service.host === undefined ? {} : { host: service.host }),
29
- })),
30
- bundles: config.bundles,
31
- gitRepositories: config.gitRepositories,
32
- ...(config.selectedGitRepository === undefined
33
- ? {}
34
- : { selectedGitRepository: config.selectedGitRepository }),
35
- ...(config.gitBoardRepositories === undefined
36
- ? {}
37
- : { gitBoardRepositories: config.gitBoardRepositories }),
38
- databases: config.databases.map((database) => ({
39
- name: database.name,
40
- engine: database.engine,
41
- url: maskConnectionUrl(database.engine, database.url),
42
- ...(database.writeUnlocked === undefined
43
- ? {}
44
- : { writeUnlocked: database.writeUnlocked }),
45
- ...(database.projectPath === undefined ? {} : { projectPath: database.projectPath }),
46
- })),
47
- logSources: config.logSources,
48
- sshServers: config.sshServers,
49
- githubTokens: config.githubTokens.map((entry) => ({
50
- host: entry.host,
51
- ...(entry.login === undefined ? {} : { login: entry.login }),
52
- ...(entry.avatarUrl === undefined ? {} : { avatarUrl: entry.avatarUrl }),
53
- })),
54
- githubIdentities: config.githubIdentities,
55
- connections: Object.fromEntries(Object.entries(config.connections).map(([id, connection]) => [
56
- id,
57
- publicProviderConnection(connection),
58
- ])),
59
- workflows: config.workflows,
60
- workflowTriggers: config.workflowTriggers,
61
- ...(config.chatProvider === undefined ? {} : { chatProvider: config.chatProvider }),
62
- ...(config.chatModels === undefined ? {} : { chatModels: config.chatModels }),
63
- ...(config.preferences === undefined ? {} : { preferences: config.preferences }),
64
- };
65
- }
66
- function publicProviderConnection(connection) {
67
- return {
68
- source: connection.source,
69
- ...(connection.expiresAt === undefined ? {} : { expiresAt: connection.expiresAt }),
70
- ...(connection.clientId === undefined ? {} : { clientId: connection.clientId }),
71
- ...(connection.scopeId === undefined ? {} : { scopeId: connection.scopeId }),
72
- ...(connection.scopeSlug === undefined ? {} : { scopeSlug: connection.scopeSlug }),
73
- ...(connection.username === undefined ? {} : { username: connection.username }),
74
- };
75
- }
76
- //# sourceMappingURL=public-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"public-config.js","sourceRoot":"","sources":["../../src/core/public-config.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- export declare const FILE_PREVIEW_BYTES: number;
2
- export declare const FILE_READ_TIMEOUT_MS = 10000;
3
- export type ReadOnlyFileType = "directory" | "file" | "symlink" | "other";
4
- export interface ReadOnlyFileEntry {
5
- name: string;
6
- path: string;
7
- type: ReadOnlyFileType;
8
- size: number;
9
- modifiedAt: number | null;
10
- }
11
- export interface ReadOnlyDirectoryListing {
12
- path: string;
13
- entries: ReadOnlyFileEntry[];
14
- }
15
- export interface ReadOnlyFileContent {
16
- path: string;
17
- content: string;
18
- size: number;
19
- binary: boolean;
20
- truncated: boolean;
21
- }
22
- /** Script shared by SSH and `docker exec`; emits machine-readable NUL fields. */
23
- export declare const READ_DIRECTORY_SCRIPT: string;
24
- /** Return a bounded preview plus the full byte size in a NUL-delimited header. */
25
- export declare const READ_FILE_SCRIPT: string;
26
- export declare function assertReadOnlyPath(path: string, requireAbsolute?: boolean): void;
27
- export declare function parseReadOnlyDirectory(output: Buffer, includeHidden?: boolean): ReadOnlyDirectoryListing;
28
- export declare function parseReadOnlyFile(path: string, output: Buffer): ReadOnlyFileContent;
@@ -1,93 +0,0 @@
1
- export const FILE_PREVIEW_BYTES = 256 * 1024;
2
- export const FILE_READ_TIMEOUT_MS = 10_000;
3
- /** Script shared by SSH and `docker exec`; emits machine-readable NUL fields. */
4
- export const READ_DIRECTORY_SCRIPT = String.raw `target=$1
5
- cd "$target" || exit 1
6
- printf 'NMI_PATH\0%s\0' "$PWD"
7
- find . -mindepth 1 -maxdepth 1 -printf 'NMI_ENTRY\0%f\0%y\0%s\0%T@\0\0'`;
8
- /** Return a bounded preview plus the full byte size in a NUL-delimited header. */
9
- export const READ_FILE_SCRIPT = String.raw `target=$1
10
- test -f "$target" || { printf '%s\n' 'Path is not a regular file.' >&2; exit 1; }
11
- size=$(wc -c < "$target") || exit 1
12
- printf 'NMI_FILE\0%s\0' "$size"
13
- head -c ${FILE_PREVIEW_BYTES + 1} -- "$target"`;
14
- export function assertReadOnlyPath(path, requireAbsolute = false) {
15
- if (!path || path.includes("\0") || (requireAbsolute && !path.startsWith("/"))) {
16
- throw new Error(requireAbsolute ? "File path must be absolute." : "File path is invalid.");
17
- }
18
- if (path !== "." && !path.startsWith("/")) {
19
- throw new Error("File path must be absolute.");
20
- }
21
- }
22
- export function parseReadOnlyDirectory(output, includeHidden = false) {
23
- const fields = output.toString("utf8").split("\0");
24
- if (fields[0] !== "NMI_PATH" || !fields[1]?.startsWith("/")) {
25
- throw new Error("Directory returned an unexpected response.");
26
- }
27
- const path = fields[1];
28
- const entries = [];
29
- for (let index = 2; index < fields.length; index += 6) {
30
- if (!fields[index])
31
- break;
32
- if (fields[index] !== "NMI_ENTRY") {
33
- throw new Error("Directory entry is malformed.");
34
- }
35
- const name = fields[index + 1] ?? "";
36
- const rawType = fields[index + 2] ?? "";
37
- const size = Number(fields[index + 3]);
38
- const modifiedSeconds = Number(fields[index + 4]);
39
- if (!name || name.includes("/") || !Number.isFinite(size)) {
40
- throw new Error("Directory entry is malformed.");
41
- }
42
- if (!includeHidden && name.startsWith("."))
43
- continue;
44
- entries.push({
45
- name,
46
- path: path === "/" ? `/${name}` : `${path}/${name}`,
47
- type: readOnlyFileType(rawType),
48
- size,
49
- modifiedAt: Number.isFinite(modifiedSeconds) ? Math.round(modifiedSeconds * 1000) : null,
50
- });
51
- }
52
- entries.sort((left, right) => {
53
- if (left.type !== right.type) {
54
- if (left.type === "directory")
55
- return -1;
56
- if (right.type === "directory")
57
- return 1;
58
- }
59
- return left.name.localeCompare(right.name);
60
- });
61
- return { path, entries };
62
- }
63
- export function parseReadOnlyFile(path, output) {
64
- const firstNull = output.indexOf(0);
65
- const secondNull = output.indexOf(0, firstNull + 1);
66
- if (firstNull < 0 || secondNull < 0 || output.subarray(0, firstNull).toString() !== "NMI_FILE") {
67
- throw new Error("File returned an unexpected response.");
68
- }
69
- const size = Number(output.subarray(firstNull + 1, secondNull).toString());
70
- if (!Number.isFinite(size) || size < 0) {
71
- throw new Error("File returned an invalid size.");
72
- }
73
- const bytes = output.subarray(secondNull + 1);
74
- const preview = bytes.subarray(0, FILE_PREVIEW_BYTES);
75
- const binary = preview.subarray(0, 8 * 1024).includes(0);
76
- return {
77
- path,
78
- content: binary ? "" : preview.toString("utf8"),
79
- size,
80
- binary,
81
- truncated: size > preview.length,
82
- };
83
- }
84
- function readOnlyFileType(value) {
85
- if (value === "d")
86
- return "directory";
87
- if (value === "f")
88
- return "file";
89
- if (value === "l")
90
- return "symlink";
91
- return "other";
92
- }
93
- //# sourceMappingURL=read-only-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read-only-files.js","sourceRoot":"","sources":["../../src/core/read-only-files.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAyB3C,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;wEAGyB,CAAC;AAEzE,kFAAkF;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;UAIhC,kBAAkB,GAAG,CAAC,eAAe,CAAC;AAEhD,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,eAAe,GAAG,KAAK;IACtE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,aAAa,GAAG,KAAK;IAErB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,MAAM;QAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACrD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI;YACJ,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;YACnD,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;YAC/B,IAAI;YACJ,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SACzF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,CAAC,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAc;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IACpD,IAAI,SAAS,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,UAAU,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/C,IAAI;QACJ,MAAM;QACN,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,WAAW,CAAC;IACtC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IACjC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC"}