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,775 +0,0 @@
1
- import { open, readdir, readFile, stat } from "node:fs/promises";
2
- import { homedir } from "node:os";
3
- import { basename, join, resolve } from "node:path";
4
- import { execFile } from "node:child_process";
5
- import { promisify } from "node:util";
6
- const execFileAsync = promisify(execFile);
7
- const PREVIEW_BYTES = 1200;
8
- export async function buildAgentInfo(cwd) {
9
- const detected = await detectAgent();
10
- const home = homedir();
11
- const codexHome = process.env.CODEX_HOME || join(home, ".codex");
12
- const [claudeProject, claudeSkills, claudePlugins, claudeHooks, claudeJson, codexProject, codexSkills, codexConfig, codexProjects,] = await Promise.all([
13
- collectClaudeProjectMemory(cwd, home),
14
- collectClaudeSkills(home, cwd),
15
- collectClaudePlugins(home),
16
- collectClaudeHooks(home, cwd),
17
- readClaudeJson(home),
18
- collectCodexProjectMemory(cwd, codexHome),
19
- collectCodexSkills(codexHome, cwd),
20
- readCodexConfig(codexHome),
21
- collectCodexProjects(codexHome, cwd),
22
- ]);
23
- const codexHooks = await collectCodexHooks(codexHome, cwd, codexConfig);
24
- const claudeProfile = {
25
- project: claudeProject,
26
- skills: claudeSkills,
27
- mcpServers: collectClaudeMcpServers(claudeJson, cwd),
28
- plugins: claudePlugins,
29
- hooks: claudeHooks,
30
- projects: collectClaudeProjects(claudeJson, cwd),
31
- };
32
- const codexProfile = {
33
- project: codexProject,
34
- skills: codexSkills,
35
- mcpServers: collectCodexMcpServers(codexConfig),
36
- plugins: [],
37
- hooks: codexHooks,
38
- projects: mergeCodexProjects(codexConfig, codexProjects, cwd),
39
- };
40
- const activeProfile = detected.name === "codex" ? codexProfile : claudeProfile;
41
- return {
42
- detected,
43
- ...activeProfile,
44
- agents: {
45
- "claude-code": claudeProfile,
46
- codex: codexProfile,
47
- },
48
- };
49
- }
50
- export async function detectAgent() {
51
- const env = process.env;
52
- const signals = [];
53
- let name = "unknown";
54
- let label = "Unknown agent";
55
- if (env.CLAUDECODE === "1" || env.CLAUDE_CODE_ENTRYPOINT || env.CLAUDE_PROJECT_DIR) {
56
- name = "claude-code";
57
- label = "Claude Code";
58
- if (env.CLAUDECODE === "1")
59
- signals.push("CLAUDECODE=1");
60
- if (env.CLAUDE_CODE_ENTRYPOINT)
61
- signals.push(`CLAUDE_CODE_ENTRYPOINT=${env.CLAUDE_CODE_ENTRYPOINT}`);
62
- if (env.CLAUDE_PROJECT_DIR)
63
- signals.push("CLAUDE_PROJECT_DIR set");
64
- }
65
- else if (env.CODEX_HOME || env.CODEX_SANDBOX || env.CODEX_CLI) {
66
- name = "codex";
67
- label = "OpenAI Codex CLI";
68
- if (env.CODEX_HOME)
69
- signals.push("CODEX_HOME set");
70
- if (env.CODEX_SANDBOX)
71
- signals.push("CODEX_SANDBOX set");
72
- }
73
- else if (env.GEMINI_API_KEY || env.GEMINI_CLI || env.GOOGLE_GENAI_USE_VERTEXAI) {
74
- name = "gemini";
75
- label = "Gemini CLI";
76
- if (env.GEMINI_CLI)
77
- signals.push("GEMINI_CLI set");
78
- }
79
- let parentProcess;
80
- try {
81
- const ppid = process.ppid;
82
- if (ppid && ppid > 1) {
83
- const { stdout } = await execFileAsync("ps", ["-o", "command=", "-p", String(ppid)], {
84
- timeout: 1000,
85
- });
86
- parentProcess = stdout.trim().split("\n")[0]?.slice(0, 240);
87
- if (parentProcess && name === "unknown") {
88
- const lower = parentProcess.toLowerCase();
89
- if (lower.includes("claude")) {
90
- name = "claude-code";
91
- label = "Claude Code";
92
- signals.push(`parent: ${parentProcess}`);
93
- }
94
- else if (lower.includes("codex")) {
95
- name = "codex";
96
- label = "OpenAI Codex CLI";
97
- signals.push(`parent: ${parentProcess}`);
98
- }
99
- else if (lower.includes("gemini")) {
100
- name = "gemini";
101
- label = "Gemini CLI";
102
- signals.push(`parent: ${parentProcess}`);
103
- }
104
- }
105
- }
106
- }
107
- catch {
108
- // ignore ps failures
109
- }
110
- return { name, label, signals, parentProcess };
111
- }
112
- function projectSlug(cwd) {
113
- // Claude Code encodes project dirs by replacing path separators with "-"
114
- return cwd.replace(/[/\\]/g, "-").replace(/\s+/g, "-");
115
- }
116
- async function collectClaudeProjectMemory(cwd, home) {
117
- const result = {
118
- cwd,
119
- memoryFiles: [],
120
- };
121
- const claudeMdPath = resolve(cwd, "CLAUDE.md");
122
- const claudeMdContent = await safeReadPreview(claudeMdPath);
123
- if (claudeMdContent !== undefined) {
124
- result.claudeMdPath = claudeMdPath;
125
- result.claudeMdPreview = claudeMdContent;
126
- result.instructionFilePath = claudeMdPath;
127
- result.instructionFileName = "CLAUDE.md";
128
- result.instructionFilePreview = claudeMdContent;
129
- }
130
- const slug = projectSlug(cwd);
131
- const memoryDir = join(home, ".claude", "projects", slug, "memory");
132
- try {
133
- const entries = await readdir(memoryDir);
134
- result.memoryDir = memoryDir;
135
- const files = await Promise.all(entries
136
- .filter((name) => name.endsWith(".md"))
137
- .map(async (name) => {
138
- const filePath = join(memoryDir, name);
139
- const [s, preview] = await Promise.all([
140
- stat(filePath).catch(() => null),
141
- safeReadPreview(filePath),
142
- ]);
143
- if (!s || preview === undefined)
144
- return null;
145
- return {
146
- path: filePath,
147
- name,
148
- size: s.size,
149
- preview,
150
- };
151
- }));
152
- result.memoryFiles = files.filter((file) => file !== null);
153
- result.memoryFiles.sort((a, b) => {
154
- if (a.name === "MEMORY.md")
155
- return -1;
156
- if (b.name === "MEMORY.md")
157
- return 1;
158
- return a.name.localeCompare(b.name);
159
- });
160
- }
161
- catch {
162
- // memory dir doesn't exist for this project
163
- }
164
- return result;
165
- }
166
- async function collectCodexProjectMemory(cwd, codexHome) {
167
- const result = {
168
- cwd,
169
- memoryFiles: [],
170
- };
171
- const agentsMdPath = resolve(cwd, "AGENTS.md");
172
- const agentsMdContent = await safeReadPreview(agentsMdPath);
173
- if (agentsMdContent !== undefined) {
174
- result.instructionFilePath = agentsMdPath;
175
- result.instructionFileName = "AGENTS.md";
176
- result.instructionFilePreview = agentsMdContent;
177
- }
178
- await readMemoryFiles(join(codexHome, "memories"), result);
179
- await readMemoryFiles(join(cwd, ".codex", "memories"), result);
180
- result.memoryFiles.sort((a, b) => a.name.localeCompare(b.name));
181
- return result;
182
- }
183
- async function readMemoryFiles(dir, out) {
184
- try {
185
- const entries = await readdir(dir);
186
- out.memoryDir ??= dir;
187
- const files = await Promise.all(entries
188
- .filter((name) => name.endsWith(".md"))
189
- .map(async (name) => {
190
- const filePath = join(dir, name);
191
- const [s, preview] = await Promise.all([
192
- stat(filePath).catch(() => null),
193
- safeReadPreview(filePath),
194
- ]);
195
- if (!s || preview === undefined)
196
- return null;
197
- return {
198
- path: filePath,
199
- name,
200
- size: s.size,
201
- preview,
202
- };
203
- }));
204
- out.memoryFiles.push(...files.filter((file) => file !== null));
205
- }
206
- catch {
207
- // memory dir doesn't exist for this agent/project
208
- }
209
- }
210
- async function collectClaudeSkills(home, cwd) {
211
- const skills = [];
212
- const userSkills = join(home, ".claude", "skills");
213
- const projectSkills = join(cwd, ".claude", "skills");
214
- const pluginsDir = join(home, ".claude", "plugins", "data");
215
- await Promise.all([
216
- readSkillsDir(userSkills, "user", skills),
217
- readSkillsDir(projectSkills, "project", skills),
218
- readPluginSkills(pluginsDir, skills),
219
- ]);
220
- skills.sort((a, b) => a.name.localeCompare(b.name));
221
- return skills;
222
- }
223
- async function collectCodexSkills(codexHome, cwd) {
224
- const skills = [];
225
- // Codex reads the Agent Skills standard dirs (~/.agents/skills, .agents/skills)
226
- // alongside its legacy CODEX_HOME locations.
227
- await Promise.all([
228
- readSkillsDir(join(homedir(), ".agents", "skills"), "user", skills, true),
229
- readSkillsDir(join(codexHome, "skills"), "user", skills, true),
230
- readSkillsDir(join(codexHome, "skills", ".system"), "system", skills),
231
- readSkillsDir(join(cwd, ".agents", "skills"), "project", skills),
232
- readSkillsDir(join(cwd, ".codex", "skills"), "project", skills),
233
- ]);
234
- // Same skill name in the standard and legacy dir → keep one entry.
235
- const seen = new Set();
236
- const deduped = skills.filter((skill) => {
237
- const key = `${skill.scope}:${skill.name}`;
238
- if (seen.has(key))
239
- return false;
240
- seen.add(key);
241
- return true;
242
- });
243
- skills.length = 0;
244
- skills.push(...deduped);
245
- skills.sort((a, b) => {
246
- if (a.scope !== b.scope)
247
- return a.scope.localeCompare(b.scope);
248
- return a.name.localeCompare(b.name);
249
- });
250
- return skills;
251
- }
252
- async function readSkillsDir(dir, scope, out, skipDotDirs = false) {
253
- try {
254
- const entries = await readdir(dir, { withFileTypes: true });
255
- for (const entry of entries) {
256
- if (!entry.isDirectory())
257
- continue;
258
- if (skipDotDirs && entry.name.startsWith("."))
259
- continue;
260
- const skillDir = join(dir, entry.name);
261
- const description = await readSkillDescription(skillDir);
262
- out.push({ name: entry.name, scope, path: skillDir, description });
263
- }
264
- }
265
- catch {
266
- // ignore
267
- }
268
- }
269
- async function readPluginSkills(pluginsDataDir, out) {
270
- try {
271
- const entries = await readdir(pluginsDataDir, { withFileTypes: true });
272
- for (const entry of entries) {
273
- if (!entry.isDirectory())
274
- continue;
275
- const skillsDir = join(pluginsDataDir, entry.name, "skills");
276
- try {
277
- const skillEntries = await readdir(skillsDir, { withFileTypes: true });
278
- for (const skillEntry of skillEntries) {
279
- if (!skillEntry.isDirectory())
280
- continue;
281
- const skillDir = join(skillsDir, skillEntry.name);
282
- const description = await readSkillDescription(skillDir);
283
- out.push({
284
- name: `${entry.name}:${skillEntry.name}`,
285
- scope: "plugin",
286
- path: skillDir,
287
- description,
288
- });
289
- }
290
- }
291
- catch {
292
- // not a skill-bearing plugin
293
- }
294
- }
295
- }
296
- catch {
297
- // ignore
298
- }
299
- }
300
- /**
301
- * Claude's plugin registry lives at ~/.claude/plugins/installed_plugins.json,
302
- * keyed by "<name>@<marketplace>". Each record points at an `installPath` whose
303
- * `skills/`, `commands/`, `agents/`, and `.mcp.json` we enumerate so the UI can
304
- * show what each plugin contributes. (Mirrors brainctl's plugin-skill-reader.)
305
- */
306
- async function collectClaudePlugins(home) {
307
- const registryPath = join(home, ".claude", "plugins", "installed_plugins.json");
308
- let data;
309
- try {
310
- data = JSON.parse(await readFile(registryPath, "utf8"));
311
- }
312
- catch {
313
- return [];
314
- }
315
- const plugins = await Promise.all(Object.entries(data.plugins ?? {}).map(async ([key, records]) => {
316
- const atIndex = key.lastIndexOf("@");
317
- const name = atIndex > 0 ? key.slice(0, atIndex) : key;
318
- const marketplace = atIndex > 0 ? key.slice(atIndex + 1) : undefined;
319
- const record = records?.[0];
320
- const installPath = record?.installPath;
321
- const [skills, commands, agents, mcpServers, description] = await Promise.all([
322
- installPath ? readPluginEntryNames(join(installPath, "skills"), "dir") : [],
323
- installPath ? readPluginEntryNames(join(installPath, "commands"), "md") : [],
324
- installPath ? readPluginEntryNames(join(installPath, "agents"), "md") : [],
325
- installPath ? readPluginMcpKeys(installPath) : [],
326
- installPath ? readPluginDescription(installPath) : undefined,
327
- ]);
328
- return {
329
- name,
330
- marketplace,
331
- scope: record?.scope === "project" ? "project" : "user",
332
- version: record?.version,
333
- installPath,
334
- description,
335
- skills,
336
- commands,
337
- agents,
338
- mcpServers,
339
- };
340
- }));
341
- plugins.sort((a, b) => a.name.localeCompare(b.name));
342
- return plugins;
343
- }
344
- /** List a plugin sub-dir's contributions: child directories, or *.md basenames. */
345
- async function readPluginEntryNames(dir, kind) {
346
- try {
347
- const entries = await readdir(dir, { withFileTypes: true });
348
- const names = entries
349
- .filter((entry) => {
350
- if (entry.name.startsWith("."))
351
- return false;
352
- return kind === "dir"
353
- ? entry.isDirectory()
354
- : entry.isFile() && entry.name.endsWith(".md");
355
- })
356
- .map((entry) => (kind === "dir" ? entry.name : entry.name.replace(/\.md$/, "")));
357
- return Array.from(new Set(names)).sort((a, b) => a.localeCompare(b));
358
- }
359
- catch {
360
- return [];
361
- }
362
- }
363
- /** MCP server keys a plugin ships in its bundled `.mcp.json`. */
364
- async function readPluginMcpKeys(installPath) {
365
- try {
366
- const raw = await readFile(join(installPath, ".mcp.json"), "utf8");
367
- const parsed = JSON.parse(raw);
368
- const servers = parsed.mcpServers && typeof parsed.mcpServers === "object" && !Array.isArray(parsed.mcpServers)
369
- ? parsed.mcpServers
370
- : parsed;
371
- return Object.keys(servers).sort((a, b) => a.localeCompare(b));
372
- }
373
- catch {
374
- return [];
375
- }
376
- }
377
- async function readPluginDescription(installPath) {
378
- const content = await safeReadPreview(join(installPath, ".claude-plugin", "plugin.json"), 4000);
379
- if (!content)
380
- return undefined;
381
- try {
382
- const parsed = JSON.parse(content);
383
- return typeof parsed.description === "string" ? parsed.description : undefined;
384
- }
385
- catch {
386
- return undefined;
387
- }
388
- }
389
- async function collectClaudeHooks(home, cwd) {
390
- const hooks = (await Promise.all([
391
- readHooksFile(join(home, ".claude", "settings.json"), "user"),
392
- readHooksFile(join(home, ".claude", "settings.local.json"), "user"),
393
- readHooksFile(join(cwd, ".claude", "settings.json"), "project"),
394
- readHooksFile(join(cwd, ".claude", "settings.local.json"), "project"),
395
- ])).flat();
396
- return sortHooks(hooks);
397
- }
398
- async function collectCodexHooks(codexHome, cwd, config) {
399
- const hooks = (await Promise.all([
400
- readHooksFile(join(codexHome, "hooks.json"), "user"),
401
- readHooksFile(join(cwd, ".codex", "hooks.json"), "project"),
402
- ])).flat();
403
- for (const hook of hooks) {
404
- const state = config.hooksState[hook.id] ?? config.hooksState[normalizeHookStateId(hook.id)];
405
- hook.status = hookStatus(state);
406
- if (state)
407
- hook.trusted = typeof state.trusted_hash === "string";
408
- }
409
- return sortHooks(hooks);
410
- }
411
- function sortHooks(hooks) {
412
- hooks.sort((a, b) => {
413
- const event = a.event.localeCompare(b.event);
414
- if (event !== 0)
415
- return event;
416
- const matcher = (a.matcher ?? "").localeCompare(b.matcher ?? "");
417
- if (matcher !== 0)
418
- return matcher;
419
- return (a.command ?? "").localeCompare(b.command ?? "");
420
- });
421
- return hooks;
422
- }
423
- async function readHooksFile(settingsPath, scope) {
424
- let parsed;
425
- try {
426
- parsed = JSON.parse(await readFile(settingsPath, "utf8"));
427
- }
428
- catch {
429
- return [];
430
- }
431
- const root = parsed && typeof parsed === "object" ? parsed : {};
432
- const hooksRoot = root.hooks && typeof root.hooks === "object" && !Array.isArray(root.hooks)
433
- ? root.hooks
434
- : {};
435
- const hooks = [];
436
- for (const [event, rawEntries] of Object.entries(hooksRoot)) {
437
- if (!Array.isArray(rawEntries))
438
- continue;
439
- for (const [entryIndex, rawEntry] of rawEntries.entries()) {
440
- if (!rawEntry || typeof rawEntry !== "object")
441
- continue;
442
- const entry = rawEntry;
443
- const matcher = typeof entry.matcher === "string" ? entry.matcher : undefined;
444
- const rawHooks = Array.isArray(entry.hooks) ? entry.hooks : [];
445
- for (const [hookIndex, rawHook] of rawHooks.entries()) {
446
- if (!rawHook || typeof rawHook !== "object")
447
- continue;
448
- const hook = rawHook;
449
- hooks.push({
450
- id: `${settingsPath}:${event}:${entryIndex}:${hookIndex}`,
451
- event,
452
- scope,
453
- settingsPath,
454
- matcher,
455
- type: typeof hook.type === "string" ? hook.type : undefined,
456
- command: typeof hook.command === "string" ? hook.command : undefined,
457
- status: "default",
458
- });
459
- }
460
- }
461
- }
462
- return hooks;
463
- }
464
- async function readSkillDescription(skillDir) {
465
- const skillFile = join(skillDir, "SKILL.md");
466
- const content = await safeReadPreview(skillFile, 400);
467
- if (!content)
468
- return undefined;
469
- const match = content.match(/^description:\s*(.+)$/m);
470
- if (match)
471
- return match[1].trim().replace(/^["']|["']$/g, "");
472
- return undefined;
473
- }
474
- async function readClaudeJson(home) {
475
- try {
476
- const raw = await readFile(join(home, ".claude.json"), "utf8");
477
- return JSON.parse(raw);
478
- }
479
- catch {
480
- return null;
481
- }
482
- }
483
- function collectClaudeMcpServers(claudeJson, cwd) {
484
- if (!claudeJson)
485
- return [];
486
- const results = [];
487
- for (const [name, raw] of Object.entries(claudeJson.mcpServers ?? {})) {
488
- results.push(mcpEntry(name, "user", raw));
489
- }
490
- const projectEntry = claudeJson.projects?.[cwd];
491
- for (const [name, raw] of Object.entries(projectEntry?.mcpServers ?? {})) {
492
- results.push(mcpEntry(name, "project", raw));
493
- }
494
- results.sort((a, b) => a.name.localeCompare(b.name));
495
- return results;
496
- }
497
- function mcpEntry(name, scope, raw) {
498
- const entry = { name, scope };
499
- if (raw && typeof raw === "object") {
500
- const value = raw;
501
- if (typeof value.command === "string")
502
- entry.command = value.command;
503
- if (Array.isArray(value.args)) {
504
- entry.args = value.args.filter((item) => typeof item === "string");
505
- }
506
- if (typeof value.type === "string")
507
- entry.type = value.type;
508
- if (typeof value.url === "string")
509
- entry.url = value.url;
510
- }
511
- return entry;
512
- }
513
- function collectClaudeProjects(claudeJson, cwd) {
514
- if (!claudeJson?.projects)
515
- return [];
516
- const entries = Object.entries(claudeJson.projects).map(([path, value]) => ({
517
- path,
518
- current: path === cwd,
519
- lastSessionFirstPrompt: value.lastSessionFirstPrompt,
520
- lastSessionModified: value.lastSessionModified,
521
- mcpServerCount: Object.keys(value.mcpServers ?? {}).length,
522
- }));
523
- entries.sort((a, b) => {
524
- if (a.current && !b.current)
525
- return -1;
526
- if (!a.current && b.current)
527
- return 1;
528
- const aTime = a.lastSessionModified ? Date.parse(a.lastSessionModified) : 0;
529
- const bTime = b.lastSessionModified ? Date.parse(b.lastSessionModified) : 0;
530
- if (aTime !== bTime)
531
- return bTime - aTime;
532
- return basename(a.path).localeCompare(basename(b.path));
533
- });
534
- return entries.slice(0, 25);
535
- }
536
- async function readCodexConfig(codexHome) {
537
- const result = { mcpServers: {}, projects: {}, hooksState: {} };
538
- try {
539
- const raw = await readFile(join(codexHome, "config.toml"), "utf8");
540
- const sections = parseTomlSections(raw);
541
- for (const [section, values] of Object.entries(sections)) {
542
- const parts = splitTomlSection(section);
543
- if (parts[0] === "mcp_servers" && parts.length === 2) {
544
- result.mcpServers[parts[1]] = values;
545
- }
546
- else if (parts[0] === "projects" && parts.length === 2) {
547
- result.projects[parts[1]] = values;
548
- }
549
- else if (parts[0] === "hooks" && parts[1] === "state" && parts.length === 3) {
550
- result.hooksState[parts[2]] = values;
551
- }
552
- }
553
- }
554
- catch {
555
- // Codex config is optional.
556
- }
557
- return result;
558
- }
559
- function normalizeHookStateId(id) {
560
- const parts = id.split(":");
561
- if (parts.length < 4)
562
- return id;
563
- const hookIndex = parts.pop();
564
- const entryIndex = parts.pop();
565
- const event = parts.pop();
566
- return `${parts.join(":")}:${camelToSnake(event ?? "").toLowerCase()}:${entryIndex}:${hookIndex}`;
567
- }
568
- function camelToSnake(value) {
569
- return value.replace(/([a-z0-9])([A-Z])/g, "$1_$2");
570
- }
571
- function hookStatus(state) {
572
- if (!state || typeof state.enabled !== "boolean")
573
- return "default";
574
- return state.enabled ? "enabled" : "disabled";
575
- }
576
- function collectCodexMcpServers(config) {
577
- return Object.entries(config.mcpServers)
578
- .map(([name, raw]) => mcpEntry(name, "user", raw))
579
- .sort((a, b) => a.name.localeCompare(b.name));
580
- }
581
- async function collectCodexProjects(codexHome, cwd) {
582
- const files = [];
583
- await collectJsonlFiles(join(codexHome, "sessions"), files);
584
- const byPath = new Map();
585
- for (const file of files) {
586
- const meta = await readCodexSessionMeta(file);
587
- if (!meta?.cwd)
588
- continue;
589
- const existing = byPath.get(meta.cwd);
590
- const nextTime = meta.timestamp ? Date.parse(meta.timestamp) : 0;
591
- const existingTime = existing?.lastSessionModified
592
- ? Date.parse(existing.lastSessionModified)
593
- : 0;
594
- if (!existing || nextTime >= existingTime) {
595
- byPath.set(meta.cwd, {
596
- path: meta.cwd,
597
- current: meta.cwd === cwd,
598
- lastSessionModified: meta.timestamp,
599
- mcpServerCount: 0,
600
- });
601
- }
602
- }
603
- return Array.from(byPath.values());
604
- }
605
- function mergeCodexProjects(config, sessionProjects, cwd) {
606
- const byPath = new Map();
607
- for (const path of Object.keys(config.projects)) {
608
- byPath.set(path, {
609
- path,
610
- current: path === cwd,
611
- mcpServerCount: 0,
612
- });
613
- }
614
- for (const project of sessionProjects) {
615
- byPath.set(project.path, {
616
- ...byPath.get(project.path),
617
- ...project,
618
- current: project.path === cwd,
619
- });
620
- }
621
- const entries = Array.from(byPath.values());
622
- entries.sort((a, b) => {
623
- if (a.current && !b.current)
624
- return -1;
625
- if (!a.current && b.current)
626
- return 1;
627
- const aTime = a.lastSessionModified ? Date.parse(a.lastSessionModified) : 0;
628
- const bTime = b.lastSessionModified ? Date.parse(b.lastSessionModified) : 0;
629
- if (aTime !== bTime)
630
- return bTime - aTime;
631
- return basename(a.path).localeCompare(basename(b.path));
632
- });
633
- return entries.slice(0, 25);
634
- }
635
- async function collectJsonlFiles(dir, out) {
636
- try {
637
- const entries = await readdir(dir, { withFileTypes: true });
638
- await Promise.all(entries.map(async (entry) => {
639
- const path = join(dir, entry.name);
640
- if (entry.isDirectory()) {
641
- await collectJsonlFiles(path, out);
642
- }
643
- else if (entry.isFile() && entry.name.endsWith(".jsonl")) {
644
- out.push(path);
645
- }
646
- }));
647
- }
648
- catch {
649
- // sessions are optional
650
- }
651
- }
652
- async function readCodexSessionMeta(path) {
653
- const firstLine = await readFirstLine(path);
654
- if (!firstLine)
655
- return undefined;
656
- try {
657
- const event = JSON.parse(firstLine);
658
- if (event.type !== "session_meta")
659
- return undefined;
660
- return {
661
- cwd: event.payload?.cwd,
662
- timestamp: event.payload?.timestamp ?? event.timestamp,
663
- };
664
- }
665
- catch {
666
- return undefined;
667
- }
668
- }
669
- async function readFirstLine(path) {
670
- let handle;
671
- try {
672
- handle = await open(path, "r");
673
- const buffer = Buffer.alloc(64 * 1024);
674
- const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
675
- if (!bytesRead)
676
- return undefined;
677
- return buffer.toString("utf8", 0, bytesRead).split(/\r?\n/, 1)[0];
678
- }
679
- catch {
680
- return undefined;
681
- }
682
- finally {
683
- await handle?.close();
684
- }
685
- }
686
- function parseTomlSections(raw) {
687
- const sections = {};
688
- let current;
689
- for (const line of raw.split(/\r?\n/)) {
690
- const trimmed = line.trim();
691
- if (!trimmed || trimmed.startsWith("#"))
692
- continue;
693
- const sectionMatch = trimmed.match(/^\[([^\]]+)]$/);
694
- if (sectionMatch) {
695
- current = sectionMatch[1];
696
- sections[current] ??= {};
697
- continue;
698
- }
699
- if (!current)
700
- continue;
701
- const valueMatch = trimmed.match(/^("[^"]+"|[\w.-]+)\s*=\s*(.+)$/);
702
- if (!valueMatch)
703
- continue;
704
- sections[current][unquoteToml(valueMatch[1])] = parseTomlValue(valueMatch[2]);
705
- }
706
- return sections;
707
- }
708
- function splitTomlSection(section) {
709
- const parts = [];
710
- let current = "";
711
- let quoted = false;
712
- for (let index = 0; index < section.length; index += 1) {
713
- const char = section[index];
714
- if (char === '"') {
715
- quoted = !quoted;
716
- current += char;
717
- }
718
- else if (char === "." && !quoted) {
719
- parts.push(unquoteToml(current));
720
- current = "";
721
- }
722
- else {
723
- current += char;
724
- }
725
- }
726
- if (current)
727
- parts.push(unquoteToml(current));
728
- return parts;
729
- }
730
- function parseTomlValue(value) {
731
- const trimmed = stripTomlComment(value.trim());
732
- if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
733
- const body = trimmed.slice(1, -1).trim();
734
- if (!body)
735
- return [];
736
- return body
737
- .split(",")
738
- .map((item) => parseTomlValue(item.trim()))
739
- .filter((item) => typeof item === "string");
740
- }
741
- if (trimmed === "true")
742
- return true;
743
- if (trimmed === "false")
744
- return false;
745
- return unquoteToml(trimmed);
746
- }
747
- function stripTomlComment(value) {
748
- let quoted = false;
749
- for (let index = 0; index < value.length; index += 1) {
750
- const char = value[index];
751
- if (char === '"')
752
- quoted = !quoted;
753
- if (char === "#" && !quoted)
754
- return value.slice(0, index).trim();
755
- }
756
- return value;
757
- }
758
- function unquoteToml(value) {
759
- const trimmed = value.trim();
760
- if (trimmed.startsWith('"') && trimmed.endsWith('"'))
761
- return trimmed.slice(1, -1);
762
- return trimmed;
763
- }
764
- async function safeReadPreview(path, bytes = PREVIEW_BYTES) {
765
- try {
766
- const content = await readFile(path, "utf8");
767
- if (content.length <= bytes)
768
- return content;
769
- return `${content.slice(0, bytes)}\n…[truncated]`;
770
- }
771
- catch {
772
- return undefined;
773
- }
774
- }
775
- //# sourceMappingURL=agent-info.js.map