nomoreide 0.2.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/README.md +12 -9
  2. package/bin/nomoreide.js +82 -0
  3. package/package.json +24 -132
  4. package/dist/cli/agents.d.ts +0 -2
  5. package/dist/cli/agents.js +0 -43
  6. package/dist/cli/agents.js.map +0 -1
  7. package/dist/cli/commands.d.ts +0 -11
  8. package/dist/cli/commands.js +0 -235
  9. package/dist/cli/commands.js.map +0 -1
  10. package/dist/cli/daemon.d.ts +0 -15
  11. package/dist/cli/daemon.js +0 -139
  12. package/dist/cli/daemon.js.map +0 -1
  13. package/dist/cli/database.d.ts +0 -2
  14. package/dist/cli/database.js +0 -145
  15. package/dist/cli/database.js.map +0 -1
  16. package/dist/cli/errors.d.ts +0 -2
  17. package/dist/cli/errors.js +0 -3
  18. package/dist/cli/errors.js.map +0 -1
  19. package/dist/cli/flags.d.ts +0 -1
  20. package/dist/cli/flags.js +0 -19
  21. package/dist/cli/flags.js.map +0 -1
  22. package/dist/cli/git.d.ts +0 -2
  23. package/dist/cli/git.js +0 -113
  24. package/dist/cli/git.js.map +0 -1
  25. package/dist/cli/profile.d.ts +0 -2
  26. package/dist/cli/profile.js +0 -171
  27. package/dist/cli/profile.js.map +0 -1
  28. package/dist/core/agent-context.d.ts +0 -9
  29. package/dist/core/agent-context.js +0 -43
  30. package/dist/core/agent-context.js.map +0 -1
  31. package/dist/core/agent-env/antigravity-reader.d.ts +0 -7
  32. package/dist/core/agent-env/antigravity-reader.js +0 -86
  33. package/dist/core/agent-env/antigravity-reader.js.map +0 -1
  34. package/dist/core/agent-env/availability.d.ts +0 -6
  35. package/dist/core/agent-env/availability.js +0 -79
  36. package/dist/core/agent-env/availability.js.map +0 -1
  37. package/dist/core/agent-env/claude-reader.d.ts +0 -7
  38. package/dist/core/agent-env/claude-reader.js +0 -101
  39. package/dist/core/agent-env/claude-reader.js.map +0 -1
  40. package/dist/core/agent-env/codex-reader.d.ts +0 -11
  41. package/dist/core/agent-env/codex-reader.js +0 -164
  42. package/dist/core/agent-env/codex-reader.js.map +0 -1
  43. package/dist/core/agent-env/index.d.ts +0 -9
  44. package/dist/core/agent-env/index.js +0 -29
  45. package/dist/core/agent-env/index.js.map +0 -1
  46. package/dist/core/agent-env/managed-plugins.d.ts +0 -18
  47. package/dist/core/agent-env/managed-plugins.js +0 -68
  48. package/dist/core/agent-env/managed-plugins.js.map +0 -1
  49. package/dist/core/agent-env/plugin-reader.d.ts +0 -9
  50. package/dist/core/agent-env/plugin-reader.js +0 -174
  51. package/dist/core/agent-env/plugin-reader.js.map +0 -1
  52. package/dist/core/agent-env/shared.d.ts +0 -26
  53. package/dist/core/agent-env/shared.js +0 -116
  54. package/dist/core/agent-env/shared.js.map +0 -1
  55. package/dist/core/agent-env/types.d.ts +0 -66
  56. package/dist/core/agent-env/types.js +0 -7
  57. package/dist/core/agent-env/types.js.map +0 -1
  58. package/dist/core/agent-env-actions.d.ts +0 -117
  59. package/dist/core/agent-env-actions.js +0 -273
  60. package/dist/core/agent-env-actions.js.map +0 -1
  61. package/dist/core/agent-env-plugin-uninstall.d.ts +0 -11
  62. package/dist/core/agent-env-plugin-uninstall.js +0 -189
  63. package/dist/core/agent-env-plugin-uninstall.js.map +0 -1
  64. package/dist/core/agent-env-writers.d.ts +0 -71
  65. package/dist/core/agent-env-writers.js +0 -632
  66. package/dist/core/agent-env-writers.js.map +0 -1
  67. package/dist/core/agent-profiles/apply.d.ts +0 -57
  68. package/dist/core/agent-profiles/apply.js +0 -209
  69. package/dist/core/agent-profiles/apply.js.map +0 -1
  70. package/dist/core/agent-profiles/builtin.d.ts +0 -8
  71. package/dist/core/agent-profiles/builtin.js +0 -33
  72. package/dist/core/agent-profiles/builtin.js.map +0 -1
  73. package/dist/core/agent-profiles/credentials.d.ts +0 -26
  74. package/dist/core/agent-profiles/credentials.js +0 -151
  75. package/dist/core/agent-profiles/credentials.js.map +0 -1
  76. package/dist/core/agent-profiles/debug-setup.d.ts +0 -18
  77. package/dist/core/agent-profiles/debug-setup.js +0 -237
  78. package/dist/core/agent-profiles/debug-setup.js.map +0 -1
  79. package/dist/core/agent-profiles/index.d.ts +0 -18
  80. package/dist/core/agent-profiles/index.js +0 -19
  81. package/dist/core/agent-profiles/index.js.map +0 -1
  82. package/dist/core/agent-profiles/plugin-apply.d.ts +0 -16
  83. package/dist/core/agent-profiles/plugin-apply.js +0 -383
  84. package/dist/core/agent-profiles/plugin-apply.js.map +0 -1
  85. package/dist/core/agent-profiles/plugin-bundle.d.ts +0 -6
  86. package/dist/core/agent-profiles/plugin-bundle.js +0 -32
  87. package/dist/core/agent-profiles/plugin-bundle.js.map +0 -1
  88. package/dist/core/agent-profiles/publication.d.ts +0 -105
  89. package/dist/core/agent-profiles/publication.js +0 -126
  90. package/dist/core/agent-profiles/publication.js.map +0 -1
  91. package/dist/core/agent-profiles/registry-auth.d.ts +0 -25
  92. package/dist/core/agent-profiles/registry-auth.js +0 -78
  93. package/dist/core/agent-profiles/registry-auth.js.map +0 -1
  94. package/dist/core/agent-profiles/registry-client.d.ts +0 -98
  95. package/dist/core/agent-profiles/registry-client.js +0 -109
  96. package/dist/core/agent-profiles/registry-client.js.map +0 -1
  97. package/dist/core/agent-profiles/registry-config.d.ts +0 -62
  98. package/dist/core/agent-profiles/registry-config.js +0 -221
  99. package/dist/core/agent-profiles/registry-config.js.map +0 -1
  100. package/dist/core/agent-profiles/registry-transfer.d.ts +0 -42
  101. package/dist/core/agent-profiles/registry-transfer.js +0 -133
  102. package/dist/core/agent-profiles/registry-transfer.js.map +0 -1
  103. package/dist/core/agent-profiles/store.d.ts +0 -62
  104. package/dist/core/agent-profiles/store.js +0 -479
  105. package/dist/core/agent-profiles/store.js.map +0 -1
  106. package/dist/core/agent-profiles/transfer.d.ts +0 -27
  107. package/dist/core/agent-profiles/transfer.js +0 -359
  108. package/dist/core/agent-profiles/transfer.js.map +0 -1
  109. package/dist/core/agent-profiles/types.d.ts +0 -364
  110. package/dist/core/agent-profiles/types.js +0 -79
  111. package/dist/core/agent-profiles/types.js.map +0 -1
  112. package/dist/core/agent-runtime.d.ts +0 -114
  113. package/dist/core/agent-runtime.js +0 -494
  114. package/dist/core/agent-runtime.js.map +0 -1
  115. package/dist/core/agent-sessions.d.ts +0 -46
  116. package/dist/core/agent-sessions.js +0 -109
  117. package/dist/core/agent-sessions.js.map +0 -1
  118. package/dist/core/agent-settings.d.ts +0 -31
  119. package/dist/core/agent-settings.js +0 -129
  120. package/dist/core/agent-settings.js.map +0 -1
  121. package/dist/core/agent-terminal.d.ts +0 -22
  122. package/dist/core/agent-terminal.js +0 -62
  123. package/dist/core/agent-terminal.js.map +0 -1
  124. package/dist/core/agent-transcripts.d.ts +0 -29
  125. package/dist/core/agent-transcripts.js +0 -281
  126. package/dist/core/agent-transcripts.js.map +0 -1
  127. package/dist/core/app-settings.d.ts +0 -74
  128. package/dist/core/app-settings.js +0 -118
  129. package/dist/core/app-settings.js.map +0 -1
  130. package/dist/core/app-version.d.ts +0 -2
  131. package/dist/core/app-version.js +0 -16
  132. package/dist/core/app-version.js.map +0 -1
  133. package/dist/core/approval-broker.d.ts +0 -29
  134. package/dist/core/approval-broker.js +0 -48
  135. package/dist/core/approval-broker.js.map +0 -1
  136. package/dist/core/claude-settings.d.ts +0 -18
  137. package/dist/core/claude-settings.js +0 -48
  138. package/dist/core/claude-settings.js.map +0 -1
  139. package/dist/core/cloudflare-actions.d.ts +0 -90
  140. package/dist/core/cloudflare-actions.js +0 -178
  141. package/dist/core/cloudflare-actions.js.map +0 -1
  142. package/dist/core/cloudflare-auth.d.ts +0 -61
  143. package/dist/core/cloudflare-auth.js +0 -149
  144. package/dist/core/cloudflare-auth.js.map +0 -1
  145. package/dist/core/cloudflare-context.d.ts +0 -2
  146. package/dist/core/cloudflare-context.js +0 -106
  147. package/dist/core/cloudflare-context.js.map +0 -1
  148. package/dist/core/cloudflare-manager.d.ts +0 -258
  149. package/dist/core/cloudflare-manager.js +0 -414
  150. package/dist/core/cloudflare-manager.js.map +0 -1
  151. package/dist/core/cloudflare-provider.d.ts +0 -64
  152. package/dist/core/cloudflare-provider.js +0 -348
  153. package/dist/core/cloudflare-provider.js.map +0 -1
  154. package/dist/core/config-files.d.ts +0 -27
  155. package/dist/core/config-files.js +0 -154
  156. package/dist/core/config-files.js.map +0 -1
  157. package/dist/core/config-store.d.ts +0 -181
  158. package/dist/core/config-store.js +0 -1026
  159. package/dist/core/config-store.js.map +0 -1
  160. package/dist/core/context-library.d.ts +0 -53
  161. package/dist/core/context-library.js +0 -605
  162. package/dist/core/context-library.js.map +0 -1
  163. package/dist/core/context-types.d.ts +0 -83
  164. package/dist/core/context-types.js +0 -9
  165. package/dist/core/context-types.js.map +0 -1
  166. package/dist/core/daemon-client.d.ts +0 -84
  167. package/dist/core/daemon-client.js +0 -156
  168. package/dist/core/daemon-client.js.map +0 -1
  169. package/dist/core/daemon-lifecycle.d.ts +0 -59
  170. package/dist/core/daemon-lifecycle.js +0 -147
  171. package/dist/core/daemon-lifecycle.js.map +0 -1
  172. package/dist/core/db/catalog.d.ts +0 -57
  173. package/dist/core/db/catalog.js +0 -38
  174. package/dist/core/db/catalog.js.map +0 -1
  175. package/dist/core/db/data-masking.d.ts +0 -3
  176. package/dist/core/db/data-masking.js +0 -14
  177. package/dist/core/db/data-masking.js.map +0 -1
  178. package/dist/core/db/driver.d.ts +0 -151
  179. package/dist/core/db/driver.js +0 -209
  180. package/dist/core/db/driver.js.map +0 -1
  181. package/dist/core/db/export.d.ts +0 -17
  182. package/dist/core/db/export.js +0 -67
  183. package/dist/core/db/export.js.map +0 -1
  184. package/dist/core/db/mysql-driver.d.ts +0 -33
  185. package/dist/core/db/mysql-driver.js +0 -364
  186. package/dist/core/db/mysql-driver.js.map +0 -1
  187. package/dist/core/db/postgres-driver.d.ts +0 -34
  188. package/dist/core/db/postgres-driver.js +0 -430
  189. package/dist/core/db/postgres-driver.js.map +0 -1
  190. package/dist/core/db/sqlite-driver.d.ts +0 -30
  191. package/dist/core/db/sqlite-driver.js +0 -301
  192. package/dist/core/db/sqlite-driver.js.map +0 -1
  193. package/dist/core/db-peek.d.ts +0 -99
  194. package/dist/core/db-peek.js +0 -322
  195. package/dist/core/db-peek.js.map +0 -1
  196. package/dist/core/db-write.d.ts +0 -45
  197. package/dist/core/db-write.js +0 -190
  198. package/dist/core/db-write.js.map +0 -1
  199. package/dist/core/docker-inspect.d.ts +0 -34
  200. package/dist/core/docker-inspect.js +0 -108
  201. package/dist/core/docker-inspect.js.map +0 -1
  202. package/dist/core/docker-resources.d.ts +0 -28
  203. package/dist/core/docker-resources.js +0 -59
  204. package/dist/core/docker-resources.js.map +0 -1
  205. package/dist/core/docker-service-runner.d.ts +0 -21
  206. package/dist/core/docker-service-runner.js +0 -80
  207. package/dist/core/docker-service-runner.js.map +0 -1
  208. package/dist/core/docker-stats.d.ts +0 -24
  209. package/dist/core/docker-stats.js +0 -76
  210. package/dist/core/docker-stats.js.map +0 -1
  211. package/dist/core/docker.d.ts +0 -75
  212. package/dist/core/docker.js +0 -219
  213. package/dist/core/docker.js.map +0 -1
  214. package/dist/core/env-file.d.ts +0 -24
  215. package/dist/core/env-file.js +0 -123
  216. package/dist/core/env-file.js.map +0 -1
  217. package/dist/core/env-runtime.d.ts +0 -32
  218. package/dist/core/env-runtime.js +0 -42
  219. package/dist/core/env-runtime.js.map +0 -1
  220. package/dist/core/error-inbox.d.ts +0 -91
  221. package/dist/core/error-inbox.js +0 -292
  222. package/dist/core/error-inbox.js.map +0 -1
  223. package/dist/core/extensions.d.ts +0 -78
  224. package/dist/core/extensions.js +0 -41
  225. package/dist/core/extensions.js.map +0 -1
  226. package/dist/core/external-terminal.d.ts +0 -60
  227. package/dist/core/external-terminal.js +0 -429
  228. package/dist/core/external-terminal.js.map +0 -1
  229. package/dist/core/fix-loop.d.ts +0 -55
  230. package/dist/core/fix-loop.js +0 -73
  231. package/dist/core/fix-loop.js.map +0 -1
  232. package/dist/core/git-actions.d.ts +0 -69
  233. package/dist/core/git-actions.js +0 -161
  234. package/dist/core/git-actions.js.map +0 -1
  235. package/dist/core/git-graph-layout.d.ts +0 -34
  236. package/dist/core/git-graph-layout.js +0 -94
  237. package/dist/core/git-graph-layout.js.map +0 -1
  238. package/dist/core/git-identity.d.ts +0 -78
  239. package/dist/core/git-identity.js +0 -178
  240. package/dist/core/git-identity.js.map +0 -1
  241. package/dist/core/git-manager.d.ts +0 -129
  242. package/dist/core/git-manager.js +0 -509
  243. package/dist/core/git-manager.js.map +0 -1
  244. package/dist/core/git-worktrees.d.ts +0 -35
  245. package/dist/core/git-worktrees.js +0 -142
  246. package/dist/core/git-worktrees.js.map +0 -1
  247. package/dist/core/github-auth.d.ts +0 -28
  248. package/dist/core/github-auth.js +0 -134
  249. package/dist/core/github-auth.js.map +0 -1
  250. package/dist/core/github-context.d.ts +0 -12
  251. package/dist/core/github-context.js +0 -36
  252. package/dist/core/github-context.js.map +0 -1
  253. package/dist/core/github-manager.d.ts +0 -230
  254. package/dist/core/github-manager.js +0 -324
  255. package/dist/core/github-manager.js.map +0 -1
  256. package/dist/core/host-metrics.d.ts +0 -41
  257. package/dist/core/host-metrics.js +0 -93
  258. package/dist/core/host-metrics.js.map +0 -1
  259. package/dist/core/http-inspector.d.ts +0 -20
  260. package/dist/core/http-inspector.js +0 -106
  261. package/dist/core/http-inspector.js.map +0 -1
  262. package/dist/core/jetbrains-import.d.ts +0 -85
  263. package/dist/core/jetbrains-import.js +0 -599
  264. package/dist/core/jetbrains-import.js.map +0 -1
  265. package/dist/core/log-sources.d.ts +0 -21
  266. package/dist/core/log-sources.js +0 -219
  267. package/dist/core/log-sources.js.map +0 -1
  268. package/dist/core/log-store.d.ts +0 -33
  269. package/dist/core/log-store.js +0 -94
  270. package/dist/core/log-store.js.map +0 -1
  271. package/dist/core/log-volume.d.ts +0 -41
  272. package/dist/core/log-volume.js +0 -81
  273. package/dist/core/log-volume.js.map +0 -1
  274. package/dist/core/mcp-auth.d.ts +0 -27
  275. package/dist/core/mcp-auth.js +0 -90
  276. package/dist/core/mcp-auth.js.map +0 -1
  277. package/dist/core/metrics-store.d.ts +0 -74
  278. package/dist/core/metrics-store.js +0 -187
  279. package/dist/core/metrics-store.js.map +0 -1
  280. package/dist/core/one-time-skills.d.ts +0 -27
  281. package/dist/core/one-time-skills.js +0 -185
  282. package/dist/core/one-time-skills.js.map +0 -1
  283. package/dist/core/port-utils.d.ts +0 -23
  284. package/dist/core/port-utils.js +0 -83
  285. package/dist/core/port-utils.js.map +0 -1
  286. package/dist/core/process-manager.d.ts +0 -99
  287. package/dist/core/process-manager.js +0 -738
  288. package/dist/core/process-manager.js.map +0 -1
  289. package/dist/core/process-tree.d.ts +0 -17
  290. package/dist/core/process-tree.js +0 -64
  291. package/dist/core/process-tree.js.map +0 -1
  292. package/dist/core/project-overview.d.ts +0 -52
  293. package/dist/core/project-overview.js +0 -122
  294. package/dist/core/project-overview.js.map +0 -1
  295. package/dist/core/providers/api-base.d.ts +0 -24
  296. package/dist/core/providers/api-base.js +0 -44
  297. package/dist/core/providers/api-base.js.map +0 -1
  298. package/dist/core/providers/credentials.d.ts +0 -93
  299. package/dist/core/providers/credentials.js +0 -88
  300. package/dist/core/providers/credentials.js.map +0 -1
  301. package/dist/core/providers/deploy-provider.d.ts +0 -327
  302. package/dist/core/providers/deploy-provider.js +0 -25
  303. package/dist/core/providers/deploy-provider.js.map +0 -1
  304. package/dist/core/providers/egress.d.ts +0 -58
  305. package/dist/core/providers/egress.js +0 -124
  306. package/dist/core/providers/egress.js.map +0 -1
  307. package/dist/core/providers/host-bridge.d.ts +0 -20
  308. package/dist/core/providers/host-bridge.js +0 -57
  309. package/dist/core/providers/host-bridge.js.map +0 -1
  310. package/dist/core/providers/host-provider.d.ts +0 -160
  311. package/dist/core/providers/host-provider.js +0 -2
  312. package/dist/core/providers/host-provider.js.map +0 -1
  313. package/dist/core/providers/oauth.d.ts +0 -97
  314. package/dist/core/providers/oauth.js +0 -238
  315. package/dist/core/providers/oauth.js.map +0 -1
  316. package/dist/core/providers/project-resolution.d.ts +0 -81
  317. package/dist/core/providers/project-resolution.js +0 -101
  318. package/dist/core/providers/project-resolution.js.map +0 -1
  319. package/dist/core/providers/registry.d.ts +0 -73
  320. package/dist/core/providers/registry.js +0 -53
  321. package/dist/core/providers/registry.js.map +0 -1
  322. package/dist/core/providers/strings.d.ts +0 -95
  323. package/dist/core/providers/strings.js +0 -59
  324. package/dist/core/providers/strings.js.map +0 -1
  325. package/dist/core/public-config.d.ts +0 -18
  326. package/dist/core/public-config.js +0 -76
  327. package/dist/core/public-config.js.map +0 -1
  328. package/dist/core/read-only-files.d.ts +0 -28
  329. package/dist/core/read-only-files.js +0 -93
  330. package/dist/core/read-only-files.js.map +0 -1
  331. package/dist/core/repo-create.d.ts +0 -11
  332. package/dist/core/repo-create.js +0 -54
  333. package/dist/core/repo-create.js.map +0 -1
  334. package/dist/core/repo-match.d.ts +0 -12
  335. package/dist/core/repo-match.js +0 -40
  336. package/dist/core/repo-match.js.map +0 -1
  337. package/dist/core/repo-onboard.d.ts +0 -297
  338. package/dist/core/repo-onboard.js +0 -667
  339. package/dist/core/repo-onboard.js.map +0 -1
  340. package/dist/core/repro-bundle.d.ts +0 -30
  341. package/dist/core/repro-bundle.js +0 -116
  342. package/dist/core/repro-bundle.js.map +0 -1
  343. package/dist/core/service-graph.d.ts +0 -50
  344. package/dist/core/service-graph.js +0 -143
  345. package/dist/core/service-graph.js.map +0 -1
  346. package/dist/core/service-health.d.ts +0 -10
  347. package/dist/core/service-health.js +0 -46
  348. package/dist/core/service-health.js.map +0 -1
  349. package/dist/core/service-log-source.d.ts +0 -9
  350. package/dist/core/service-log-source.js +0 -49
  351. package/dist/core/service-log-source.js.map +0 -1
  352. package/dist/core/service-registry.d.ts +0 -52
  353. package/dist/core/service-registry.js +0 -101
  354. package/dist/core/service-registry.js.map +0 -1
  355. package/dist/core/snapshot-manager.d.ts +0 -62
  356. package/dist/core/snapshot-manager.js +0 -219
  357. package/dist/core/snapshot-manager.js.map +0 -1
  358. package/dist/core/ssh-servers.d.ts +0 -89
  359. package/dist/core/ssh-servers.js +0 -251
  360. package/dist/core/ssh-servers.js.map +0 -1
  361. package/dist/core/ssh-service-runner.d.ts +0 -7
  362. package/dist/core/ssh-service-runner.js +0 -36
  363. package/dist/core/ssh-service-runner.js.map +0 -1
  364. package/dist/core/ssh-setup.d.ts +0 -11
  365. package/dist/core/ssh-setup.js +0 -49
  366. package/dist/core/ssh-setup.js.map +0 -1
  367. package/dist/core/system-processes.d.ts +0 -29
  368. package/dist/core/system-processes.js +0 -119
  369. package/dist/core/system-processes.js.map +0 -1
  370. package/dist/core/terminal-manager.d.ts +0 -123
  371. package/dist/core/terminal-manager.js +0 -470
  372. package/dist/core/terminal-manager.js.map +0 -1
  373. package/dist/core/terminal-session.d.ts +0 -122
  374. package/dist/core/terminal-session.js +0 -242
  375. package/dist/core/terminal-session.js.map +0 -1
  376. package/dist/core/terminal-spawn.d.ts +0 -26
  377. package/dist/core/terminal-spawn.js +0 -63
  378. package/dist/core/terminal-spawn.js.map +0 -1
  379. package/dist/core/test-runner.d.ts +0 -69
  380. package/dist/core/test-runner.js +0 -199
  381. package/dist/core/test-runner.js.map +0 -1
  382. package/dist/core/timeline-store.d.ts +0 -20
  383. package/dist/core/timeline-store.js +0 -36
  384. package/dist/core/timeline-store.js.map +0 -1
  385. package/dist/core/tool-call-store.d.ts +0 -25
  386. package/dist/core/tool-call-store.js +0 -62
  387. package/dist/core/tool-call-store.js.map +0 -1
  388. package/dist/core/types.d.ts +0 -312
  389. package/dist/core/types.js +0 -2
  390. package/dist/core/types.js.map +0 -1
  391. package/dist/core/usage-history.d.ts +0 -81
  392. package/dist/core/usage-history.js +0 -149
  393. package/dist/core/usage-history.js.map +0 -1
  394. package/dist/core/vercel-actions.d.ts +0 -71
  395. package/dist/core/vercel-actions.js +0 -109
  396. package/dist/core/vercel-actions.js.map +0 -1
  397. package/dist/core/vercel-auth.d.ts +0 -40
  398. package/dist/core/vercel-auth.js +0 -88
  399. package/dist/core/vercel-auth.js.map +0 -1
  400. package/dist/core/vercel-context.d.ts +0 -2
  401. package/dist/core/vercel-context.js +0 -97
  402. package/dist/core/vercel-context.js.map +0 -1
  403. package/dist/core/vercel-manager.d.ts +0 -268
  404. package/dist/core/vercel-manager.js +0 -401
  405. package/dist/core/vercel-manager.js.map +0 -1
  406. package/dist/core/vercel-oauth.d.ts +0 -37
  407. package/dist/core/vercel-oauth.js +0 -57
  408. package/dist/core/vercel-oauth.js.map +0 -1
  409. package/dist/core/vercel-provider.d.ts +0 -23
  410. package/dist/core/vercel-provider.js +0 -276
  411. package/dist/core/vercel-provider.js.map +0 -1
  412. package/dist/core/vultr-actions.d.ts +0 -52
  413. package/dist/core/vultr-actions.js +0 -62
  414. package/dist/core/vultr-actions.js.map +0 -1
  415. package/dist/core/vultr-auth.d.ts +0 -32
  416. package/dist/core/vultr-auth.js +0 -54
  417. package/dist/core/vultr-auth.js.map +0 -1
  418. package/dist/core/vultr-context.d.ts +0 -2
  419. package/dist/core/vultr-context.js +0 -55
  420. package/dist/core/vultr-context.js.map +0 -1
  421. package/dist/core/vultr-manager.d.ts +0 -113
  422. package/dist/core/vultr-manager.js +0 -170
  423. package/dist/core/vultr-manager.js.map +0 -1
  424. package/dist/core/vultr-provider.d.ts +0 -69
  425. package/dist/core/vultr-provider.js +0 -226
  426. package/dist/core/vultr-provider.js.map +0 -1
  427. package/dist/core/workflow-triggers.d.ts +0 -139
  428. package/dist/core/workflow-triggers.js +0 -208
  429. package/dist/core/workflow-triggers.js.map +0 -1
  430. package/dist/core/workflows.d.ts +0 -290
  431. package/dist/core/workflows.js +0 -190
  432. package/dist/core/workflows.js.map +0 -1
  433. package/dist/index.d.ts +0 -2
  434. package/dist/index.js +0 -66
  435. package/dist/index.js.map +0 -1
  436. package/dist/mcp/server.d.ts +0 -37
  437. package/dist/mcp/server.js +0 -84
  438. package/dist/mcp/server.js.map +0 -1
  439. package/dist/mcp/tools/agent-env.d.ts +0 -9
  440. package/dist/mcp/tools/agent-env.js +0 -160
  441. package/dist/mcp/tools/agent-env.js.map +0 -1
  442. package/dist/mcp/tools/agent-profiles.d.ts +0 -9
  443. package/dist/mcp/tools/agent-profiles.js +0 -197
  444. package/dist/mcp/tools/agent-profiles.js.map +0 -1
  445. package/dist/mcp/tools/agent-registry.d.ts +0 -9
  446. package/dist/mcp/tools/agent-registry.js +0 -81
  447. package/dist/mcp/tools/agent-registry.js.map +0 -1
  448. package/dist/mcp/tools/agent.d.ts +0 -4
  449. package/dist/mcp/tools/agent.js +0 -29
  450. package/dist/mcp/tools/agent.js.map +0 -1
  451. package/dist/mcp/tools/context.d.ts +0 -36
  452. package/dist/mcp/tools/context.js +0 -69
  453. package/dist/mcp/tools/context.js.map +0 -1
  454. package/dist/mcp/tools/database.d.ts +0 -9
  455. package/dist/mcp/tools/database.js +0 -166
  456. package/dist/mcp/tools/database.js.map +0 -1
  457. package/dist/mcp/tools/docs.d.ts +0 -29
  458. package/dist/mcp/tools/docs.js +0 -134
  459. package/dist/mcp/tools/docs.js.map +0 -1
  460. package/dist/mcp/tools/errors.d.ts +0 -12
  461. package/dist/mcp/tools/errors.js +0 -47
  462. package/dist/mcp/tools/errors.js.map +0 -1
  463. package/dist/mcp/tools/git.d.ts +0 -4
  464. package/dist/mcp/tools/git.js +0 -209
  465. package/dist/mcp/tools/git.js.map +0 -1
  466. package/dist/mcp/tools/github.d.ts +0 -4
  467. package/dist/mcp/tools/github.js +0 -196
  468. package/dist/mcp/tools/github.js.map +0 -1
  469. package/dist/mcp/tools/index.d.ts +0 -36
  470. package/dist/mcp/tools/index.js +0 -61
  471. package/dist/mcp/tools/index.js.map +0 -1
  472. package/dist/mcp/tools/onboard.d.ts +0 -10
  473. package/dist/mcp/tools/onboard.js +0 -30
  474. package/dist/mcp/tools/onboard.js.map +0 -1
  475. package/dist/mcp/tools/provider.d.ts +0 -16
  476. package/dist/mcp/tools/provider.js +0 -110
  477. package/dist/mcp/tools/provider.js.map +0 -1
  478. package/dist/mcp/tools/services.d.ts +0 -13
  479. package/dist/mcp/tools/services.js +0 -204
  480. package/dist/mcp/tools/services.js.map +0 -1
  481. package/dist/mcp/tools/snapshots.d.ts +0 -8
  482. package/dist/mcp/tools/snapshots.js +0 -37
  483. package/dist/mcp/tools/snapshots.js.map +0 -1
  484. package/dist/mcp/tools/terminal.d.ts +0 -4
  485. package/dist/mcp/tools/terminal.js +0 -38
  486. package/dist/mcp/tools/terminal.js.map +0 -1
  487. package/dist/tui/app.d.ts +0 -22
  488. package/dist/tui/app.js +0 -138
  489. package/dist/tui/app.js.map +0 -1
  490. package/dist/web/agent-info.d.ts +0 -82
  491. package/dist/web/agent-info.js +0 -775
  492. package/dist/web/agent-info.js.map +0 -1
  493. package/dist/web/client/assets/SymbolsNerdFontMono-Regular-DDncdh2F.ttf +0 -0
  494. package/dist/web/client/assets/code-editor-TE0sjFGO.js +0 -30
  495. package/dist/web/client/assets/context-graph-B9MnBpp6.js +0 -7
  496. package/dist/web/client/assets/core-DhEqZVGG.js +0 -1
  497. package/dist/web/client/assets/event-BK_86lmQ.js +0 -1
  498. package/dist/web/client/assets/index-BhDAhmA1.js +0 -1
  499. package/dist/web/client/assets/index-CSo__8A6.css +0 -1
  500. package/dist/web/client/assets/index-DAJvBqn9.js +0 -352
  501. package/dist/web/client/assets/nomoreide-favicon-Ds7Tgj9p.svg +0 -24
  502. package/dist/web/client/assets/system-process-table-DetWu0Gj.js +0 -1
  503. package/dist/web/client/assets/window-DlR023_X.js +0 -1
  504. package/dist/web/client/index.html +0 -44
  505. package/dist/web/dashboard.d.ts +0 -61
  506. package/dist/web/dashboard.js +0 -221
  507. package/dist/web/dashboard.js.map +0 -1
  508. package/dist/web/directories.d.ts +0 -27
  509. package/dist/web/directories.js +0 -81
  510. package/dist/web/directories.js.map +0 -1
  511. package/dist/web/http-utils.d.ts +0 -13
  512. package/dist/web/http-utils.js +0 -72
  513. package/dist/web/http-utils.js.map +0 -1
  514. package/dist/web/routes/agent-chat-routes.d.ts +0 -3
  515. package/dist/web/routes/agent-chat-routes.js +0 -186
  516. package/dist/web/routes/agent-chat-routes.js.map +0 -1
  517. package/dist/web/routes/agent-env-routes.d.ts +0 -9
  518. package/dist/web/routes/agent-env-routes.js +0 -86
  519. package/dist/web/routes/agent-env-routes.js.map +0 -1
  520. package/dist/web/routes/agent-profile-routes.d.ts +0 -8
  521. package/dist/web/routes/agent-profile-routes.js +0 -211
  522. package/dist/web/routes/agent-profile-routes.js.map +0 -1
  523. package/dist/web/routes/agent-registry-routes.d.ts +0 -2
  524. package/dist/web/routes/agent-registry-routes.js +0 -375
  525. package/dist/web/routes/agent-registry-routes.js.map +0 -1
  526. package/dist/web/routes/agent-routes.d.ts +0 -3
  527. package/dist/web/routes/agent-routes.js +0 -73
  528. package/dist/web/routes/agent-routes.js.map +0 -1
  529. package/dist/web/routes/agent-settings-routes.d.ts +0 -8
  530. package/dist/web/routes/agent-settings-routes.js +0 -67
  531. package/dist/web/routes/agent-settings-routes.js.map +0 -1
  532. package/dist/web/routes/context-library-routes.d.ts +0 -2
  533. package/dist/web/routes/context-library-routes.js +0 -139
  534. package/dist/web/routes/context-library-routes.js.map +0 -1
  535. package/dist/web/routes/context.d.ts +0 -73
  536. package/dist/web/routes/context.js +0 -48
  537. package/dist/web/routes/context.js.map +0 -1
  538. package/dist/web/routes/dashboard-routes.d.ts +0 -3
  539. package/dist/web/routes/dashboard-routes.js +0 -47
  540. package/dist/web/routes/dashboard-routes.js.map +0 -1
  541. package/dist/web/routes/database-routes.d.ts +0 -3
  542. package/dist/web/routes/database-routes.js +0 -341
  543. package/dist/web/routes/database-routes.js.map +0 -1
  544. package/dist/web/routes/docker-routes.d.ts +0 -7
  545. package/dist/web/routes/docker-routes.js +0 -122
  546. package/dist/web/routes/docker-routes.js.map +0 -1
  547. package/dist/web/routes/errors-routes.d.ts +0 -3
  548. package/dist/web/routes/errors-routes.js +0 -77
  549. package/dist/web/routes/errors-routes.js.map +0 -1
  550. package/dist/web/routes/extensions-routes.d.ts +0 -14
  551. package/dist/web/routes/extensions-routes.js +0 -21
  552. package/dist/web/routes/extensions-routes.js.map +0 -1
  553. package/dist/web/routes/git-routes.d.ts +0 -3
  554. package/dist/web/routes/git-routes.js +0 -598
  555. package/dist/web/routes/git-routes.js.map +0 -1
  556. package/dist/web/routes/github-context.d.ts +0 -11
  557. package/dist/web/routes/github-context.js +0 -34
  558. package/dist/web/routes/github-context.js.map +0 -1
  559. package/dist/web/routes/github-routes.d.ts +0 -2
  560. package/dist/web/routes/github-routes.js +0 -699
  561. package/dist/web/routes/github-routes.js.map +0 -1
  562. package/dist/web/routes/host-routes.d.ts +0 -2
  563. package/dist/web/routes/host-routes.js +0 -188
  564. package/dist/web/routes/host-routes.js.map +0 -1
  565. package/dist/web/routes/index.d.ts +0 -10
  566. package/dist/web/routes/index.js +0 -72
  567. package/dist/web/routes/index.js.map +0 -1
  568. package/dist/web/routes/jetbrains-import-routes.d.ts +0 -2
  569. package/dist/web/routes/jetbrains-import-routes.js +0 -121
  570. package/dist/web/routes/jetbrains-import-routes.js.map +0 -1
  571. package/dist/web/routes/log-sources-routes.d.ts +0 -6
  572. package/dist/web/routes/log-sources-routes.js +0 -102
  573. package/dist/web/routes/log-sources-routes.js.map +0 -1
  574. package/dist/web/routes/metrics-routes.d.ts +0 -3
  575. package/dist/web/routes/metrics-routes.js +0 -60
  576. package/dist/web/routes/metrics-routes.js.map +0 -1
  577. package/dist/web/routes/onboard-routes.d.ts +0 -9
  578. package/dist/web/routes/onboard-routes.js +0 -146
  579. package/dist/web/routes/onboard-routes.js.map +0 -1
  580. package/dist/web/routes/overview-routes.d.ts +0 -2
  581. package/dist/web/routes/overview-routes.js +0 -36
  582. package/dist/web/routes/overview-routes.js.map +0 -1
  583. package/dist/web/routes/provider-routes.d.ts +0 -2
  584. package/dist/web/routes/provider-routes.js +0 -558
  585. package/dist/web/routes/provider-routes.js.map +0 -1
  586. package/dist/web/routes/service-routes.d.ts +0 -3
  587. package/dist/web/routes/service-routes.js +0 -511
  588. package/dist/web/routes/service-routes.js.map +0 -1
  589. package/dist/web/routes/settings-routes.d.ts +0 -2
  590. package/dist/web/routes/settings-routes.js +0 -151
  591. package/dist/web/routes/settings-routes.js.map +0 -1
  592. package/dist/web/routes/shell-routes.d.ts +0 -22
  593. package/dist/web/routes/shell-routes.js +0 -75
  594. package/dist/web/routes/shell-routes.js.map +0 -1
  595. package/dist/web/routes/skills-routes.d.ts +0 -2
  596. package/dist/web/routes/skills-routes.js +0 -49
  597. package/dist/web/routes/skills-routes.js.map +0 -1
  598. package/dist/web/routes/snapshot-routes.d.ts +0 -8
  599. package/dist/web/routes/snapshot-routes.js +0 -194
  600. package/dist/web/routes/snapshot-routes.js.map +0 -1
  601. package/dist/web/routes/ssh-server-routes.d.ts +0 -10
  602. package/dist/web/routes/ssh-server-routes.js +0 -163
  603. package/dist/web/routes/ssh-server-routes.js.map +0 -1
  604. package/dist/web/routes/terminal-routes.d.ts +0 -7
  605. package/dist/web/routes/terminal-routes.js +0 -313
  606. package/dist/web/routes/terminal-routes.js.map +0 -1
  607. package/dist/web/routes/workflow-routes.d.ts +0 -8
  608. package/dist/web/routes/workflow-routes.js +0 -45
  609. package/dist/web/routes/workflow-routes.js.map +0 -1
  610. package/dist/web/routes/workflow-trigger-routes.d.ts +0 -9
  611. package/dist/web/routes/workflow-trigger-routes.js +0 -78
  612. package/dist/web/routes/workflow-trigger-routes.js.map +0 -1
  613. package/dist/web/server.d.ts +0 -31
  614. package/dist/web/server.js +0 -325
  615. package/dist/web/server.js.map +0 -1
  616. package/dist/web/service-tester.d.ts +0 -16
  617. package/dist/web/service-tester.js +0 -107
  618. package/dist/web/service-tester.js.map +0 -1
  619. package/dist/web/static-assets.d.ts +0 -9
  620. package/dist/web/static-assets.js +0 -77
  621. package/dist/web/static-assets.js.map +0 -1
  622. package/dist/web/usage-info.d.ts +0 -56
  623. package/dist/web/usage-info.js +0 -265
  624. package/dist/web/usage-info.js.map +0 -1
@@ -1,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
- * `apps/dashboard` (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":"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"}