@powerhousedao/ph-cli 6.0.0-dev.23 → 6.0.0-dev.231

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 (311) hide show
  1. package/README.md +2 -2
  2. package/dist/assign-env-vars-DZMMuzB2.mjs +15 -0
  3. package/dist/assign-env-vars-DZMMuzB2.mjs.map +1 -0
  4. package/dist/auth-Ch5B5mNU.mjs +15 -0
  5. package/dist/auth-Ch5B5mNU.mjs.map +1 -0
  6. package/dist/auth-Dq7JjwYn.mjs +2 -0
  7. package/dist/build-CWcQj0YI.mjs +2 -0
  8. package/dist/build-DCXpFtjA.mjs +46 -0
  9. package/dist/build-DCXpFtjA.mjs.map +1 -0
  10. package/dist/cli-CVcTOWqn.mjs +140 -0
  11. package/dist/cli-CVcTOWqn.mjs.map +1 -0
  12. package/dist/cli.d.mts +1 -0
  13. package/dist/cli.mjs +920 -0
  14. package/dist/cli.mjs.map +1 -0
  15. package/dist/connect-build-6yhCIKkQ.mjs +35 -0
  16. package/dist/connect-build-6yhCIKkQ.mjs.map +1 -0
  17. package/dist/connect-preview-CaEiWmqU.mjs +27 -0
  18. package/dist/connect-preview-CaEiWmqU.mjs.map +1 -0
  19. package/dist/connect-studio-BaqbrWYQ.mjs +28 -0
  20. package/dist/connect-studio-BaqbrWYQ.mjs.map +1 -0
  21. package/dist/connect-studio-Dndkp0Q_.mjs +3 -0
  22. package/dist/generate-all-DaXXjoms.mjs +12 -0
  23. package/dist/generate-all-DaXXjoms.mjs.map +1 -0
  24. package/dist/generate-app-GvQeAG4w.mjs +35 -0
  25. package/dist/generate-app-GvQeAG4w.mjs.map +1 -0
  26. package/dist/generate-document-model-Dnik0rKd.mjs +21 -0
  27. package/dist/generate-document-model-Dnik0rKd.mjs.map +1 -0
  28. package/dist/generate-editor-BNN2OmmX.mjs +35 -0
  29. package/dist/generate-editor-BNN2OmmX.mjs.map +1 -0
  30. package/dist/generate-processor-CCSW2Ed2.mjs +26 -0
  31. package/dist/generate-processor-CCSW2Ed2.mjs.map +1 -0
  32. package/dist/generate-subgraph-B-d3J6hU.mjs +24 -0
  33. package/dist/generate-subgraph-B-d3J6hU.mjs.map +1 -0
  34. package/dist/init-8FtJDKxG.mjs +125 -0
  35. package/dist/init-8FtJDKxG.mjs.map +1 -0
  36. package/dist/inspect-BwkihsT7.mjs +45 -0
  37. package/dist/inspect-BwkihsT7.mjs.map +1 -0
  38. package/dist/logout-XEyvdASS.mjs +232 -0
  39. package/dist/logout-XEyvdASS.mjs.map +1 -0
  40. package/dist/migrate-B-O6P7jA.mjs +59 -0
  41. package/dist/migrate-B-O6P7jA.mjs.map +1 -0
  42. package/dist/registry-auth-BX9_n8hE.mjs +22 -0
  43. package/dist/registry-auth-BX9_n8hE.mjs.map +1 -0
  44. package/dist/scripts/generate-commands-docs.ts +16 -8
  45. package/dist/scripts/setup.sh +2 -2
  46. package/dist/switchboard-CJMoMzWx.mjs +72 -0
  47. package/dist/switchboard-CJMoMzWx.mjs.map +1 -0
  48. package/dist/switchboard-iRFugh8I.mjs +2 -0
  49. package/dist/switchboard-migrate-BRgCgg7N.mjs +50 -0
  50. package/dist/switchboard-migrate-BRgCgg7N.mjs.map +1 -0
  51. package/dist/utils-D7x443W6.mjs +162 -0
  52. package/dist/utils-D7x443W6.mjs.map +1 -0
  53. package/dist/utils-DkOZWO0i.mjs +2 -0
  54. package/dist/vetra-xk2hwf6X.mjs +420 -0
  55. package/dist/vetra-xk2hwf6X.mjs.map +1 -0
  56. package/package.json +44 -46
  57. package/dist/scripts/generate-commands-docs.d.ts +0 -2
  58. package/dist/scripts/generate-commands-docs.d.ts.map +0 -1
  59. package/dist/scripts/generate-commands-docs.js +0 -47
  60. package/dist/scripts/generate-commands-docs.js.map +0 -1
  61. package/dist/scripts/generate-docs-legacy.d.ts +0 -2
  62. package/dist/scripts/generate-docs-legacy.d.ts.map +0 -1
  63. package/dist/scripts/generate-docs-legacy.js +0 -72
  64. package/dist/scripts/generate-docs-legacy.js.map +0 -1
  65. package/dist/scripts/generate-docs-legacy.ts +0 -84
  66. package/dist/scripts/generate-version.d.ts +0 -2
  67. package/dist/scripts/generate-version.d.ts.map +0 -1
  68. package/dist/scripts/generate-version.js +0 -13
  69. package/dist/scripts/generate-version.js.map +0 -1
  70. package/dist/scripts/generate-version.ts +0 -22
  71. package/dist/src/cli.d.ts +0 -3
  72. package/dist/src/cli.d.ts.map +0 -1
  73. package/dist/src/cli.js +0 -29
  74. package/dist/src/cli.js.map +0 -1
  75. package/dist/src/cli.old.d.ts +0 -3
  76. package/dist/src/cli.old.d.ts.map +0 -1
  77. package/dist/src/cli.old.js +0 -43
  78. package/dist/src/cli.old.js.map +0 -1
  79. package/dist/src/commands/access-token.d.ts +0 -14
  80. package/dist/src/commands/access-token.d.ts.map +0 -1
  81. package/dist/src/commands/access-token.js +0 -142
  82. package/dist/src/commands/access-token.js.map +0 -1
  83. package/dist/src/commands/connect.d.ts +0 -249
  84. package/dist/src/commands/connect.d.ts.map +0 -1
  85. package/dist/src/commands/connect.js +0 -60
  86. package/dist/src/commands/connect.js.map +0 -1
  87. package/dist/src/commands/generate.d.ts +0 -58
  88. package/dist/src/commands/generate.d.ts.map +0 -1
  89. package/dist/src/commands/generate.js +0 -25
  90. package/dist/src/commands/generate.js.map +0 -1
  91. package/dist/src/commands/get-package-manager.d.ts +0 -30
  92. package/dist/src/commands/get-package-manager.d.ts.map +0 -1
  93. package/dist/src/commands/get-package-manager.js +0 -8
  94. package/dist/src/commands/get-package-manager.js.map +0 -1
  95. package/dist/src/commands/index.d.ts +0 -13
  96. package/dist/src/commands/index.d.ts.map +0 -1
  97. package/dist/src/commands/index.js +0 -25
  98. package/dist/src/commands/index.js.map +0 -1
  99. package/dist/src/commands/inspect.d.ts +0 -12
  100. package/dist/src/commands/inspect.d.ts.map +0 -1
  101. package/dist/src/commands/inspect.js +0 -27
  102. package/dist/src/commands/inspect.js.map +0 -1
  103. package/dist/src/commands/install.d.ts +0 -22
  104. package/dist/src/commands/install.d.ts.map +0 -1
  105. package/dist/src/commands/install.js +0 -75
  106. package/dist/src/commands/install.js.map +0 -1
  107. package/dist/src/commands/legacy/access-token.old.d.ts +0 -9
  108. package/dist/src/commands/legacy/access-token.old.d.ts.map +0 -1
  109. package/dist/src/commands/legacy/access-token.old.js +0 -110
  110. package/dist/src/commands/legacy/access-token.old.js.map +0 -1
  111. package/dist/src/commands/legacy/connect.old.d.ts +0 -19
  112. package/dist/src/commands/legacy/connect.old.d.ts.map +0 -1
  113. package/dist/src/commands/legacy/connect.old.js +0 -85
  114. package/dist/src/commands/legacy/connect.old.js.map +0 -1
  115. package/dist/src/commands/legacy/generate.old.d.ts +0 -9
  116. package/dist/src/commands/legacy/generate.old.d.ts.map +0 -1
  117. package/dist/src/commands/legacy/generate.old.js +0 -41
  118. package/dist/src/commands/legacy/generate.old.js.map +0 -1
  119. package/dist/src/commands/legacy/help.old.d.ts +0 -3
  120. package/dist/src/commands/legacy/help.old.d.ts.map +0 -1
  121. package/dist/src/commands/legacy/help.old.js +0 -9
  122. package/dist/src/commands/legacy/help.old.js.map +0 -1
  123. package/dist/src/commands/legacy/inspect.old.d.ts +0 -6
  124. package/dist/src/commands/legacy/inspect.old.d.ts.map +0 -1
  125. package/dist/src/commands/legacy/inspect.old.js +0 -21
  126. package/dist/src/commands/legacy/inspect.old.js.map +0 -1
  127. package/dist/src/commands/legacy/install.old.d.ts +0 -15
  128. package/dist/src/commands/legacy/install.old.d.ts.map +0 -1
  129. package/dist/src/commands/legacy/install.old.js +0 -127
  130. package/dist/src/commands/legacy/install.old.js.map +0 -1
  131. package/dist/src/commands/legacy/login.old.d.ts +0 -12
  132. package/dist/src/commands/legacy/login.old.d.ts.map +0 -1
  133. package/dist/src/commands/legacy/login.old.js +0 -208
  134. package/dist/src/commands/legacy/login.old.js.map +0 -1
  135. package/dist/src/commands/legacy/migrate.old.d.ts +0 -11
  136. package/dist/src/commands/legacy/migrate.old.d.ts.map +0 -1
  137. package/dist/src/commands/legacy/migrate.old.js +0 -15
  138. package/dist/src/commands/legacy/migrate.old.js.map +0 -1
  139. package/dist/src/commands/legacy/service.old.d.ts +0 -5
  140. package/dist/src/commands/legacy/service.old.d.ts.map +0 -1
  141. package/dist/src/commands/legacy/service.old.js +0 -67
  142. package/dist/src/commands/legacy/service.old.js.map +0 -1
  143. package/dist/src/commands/legacy/switchboard.old.d.ts +0 -9
  144. package/dist/src/commands/legacy/switchboard.old.d.ts.map +0 -1
  145. package/dist/src/commands/legacy/switchboard.old.js +0 -78
  146. package/dist/src/commands/legacy/switchboard.old.js.map +0 -1
  147. package/dist/src/commands/legacy/uninstall.old.d.ts +0 -15
  148. package/dist/src/commands/legacy/uninstall.old.d.ts.map +0 -1
  149. package/dist/src/commands/legacy/uninstall.old.js +0 -120
  150. package/dist/src/commands/legacy/uninstall.old.js.map +0 -1
  151. package/dist/src/commands/legacy/vetra.old.d.ts +0 -23
  152. package/dist/src/commands/legacy/vetra.old.d.ts.map +0 -1
  153. package/dist/src/commands/legacy/vetra.old.js +0 -35
  154. package/dist/src/commands/legacy/vetra.old.js.map +0 -1
  155. package/dist/src/commands/list.d.ts +0 -10
  156. package/dist/src/commands/list.d.ts.map +0 -1
  157. package/dist/src/commands/list.js +0 -42
  158. package/dist/src/commands/list.js.map +0 -1
  159. package/dist/src/commands/list.old.d.ts +0 -9
  160. package/dist/src/commands/list.old.d.ts.map +0 -1
  161. package/dist/src/commands/list.old.js +0 -36
  162. package/dist/src/commands/list.old.js.map +0 -1
  163. package/dist/src/commands/login.d.ts +0 -20
  164. package/dist/src/commands/login.d.ts.map +0 -1
  165. package/dist/src/commands/login.js +0 -209
  166. package/dist/src/commands/login.js.map +0 -1
  167. package/dist/src/commands/migrate.d.ts +0 -12
  168. package/dist/src/commands/migrate.d.ts.map +0 -1
  169. package/dist/src/commands/migrate.js +0 -16
  170. package/dist/src/commands/migrate.js.map +0 -1
  171. package/dist/src/commands/ph-cli-commands.d.ts +0 -410
  172. package/dist/src/commands/ph-cli-commands.d.ts.map +0 -1
  173. package/dist/src/commands/ph-cli-commands.js +0 -25
  174. package/dist/src/commands/ph-cli-commands.js.map +0 -1
  175. package/dist/src/commands/ph-cli-help.d.ts +0 -396
  176. package/dist/src/commands/ph-cli-help.d.ts.map +0 -1
  177. package/dist/src/commands/ph-cli-help.js +0 -12
  178. package/dist/src/commands/ph-cli-help.js.map +0 -1
  179. package/dist/src/commands/ph-cli.d.ts +0 -490
  180. package/dist/src/commands/ph-cli.d.ts.map +0 -1
  181. package/dist/src/commands/ph-cli.js +0 -12
  182. package/dist/src/commands/ph-cli.js.map +0 -1
  183. package/dist/src/commands/register-commands.d.ts +0 -5
  184. package/dist/src/commands/register-commands.d.ts.map +0 -1
  185. package/dist/src/commands/register-commands.js +0 -32
  186. package/dist/src/commands/register-commands.js.map +0 -1
  187. package/dist/src/commands/service.d.ts +0 -12
  188. package/dist/src/commands/service.d.ts.map +0 -1
  189. package/dist/src/commands/service.js +0 -79
  190. package/dist/src/commands/service.js.map +0 -1
  191. package/dist/src/commands/switchboard.d.ts +0 -46
  192. package/dist/src/commands/switchboard.d.ts.map +0 -1
  193. package/dist/src/commands/switchboard.js +0 -43
  194. package/dist/src/commands/switchboard.js.map +0 -1
  195. package/dist/src/commands/uninstall.d.ts +0 -22
  196. package/dist/src/commands/uninstall.d.ts.map +0 -1
  197. package/dist/src/commands/uninstall.js +0 -71
  198. package/dist/src/commands/uninstall.js.map +0 -1
  199. package/dist/src/commands/vetra.d.ts +0 -64
  200. package/dist/src/commands/vetra.d.ts.map +0 -1
  201. package/dist/src/commands/vetra.js +0 -24
  202. package/dist/src/commands/vetra.js.map +0 -1
  203. package/dist/src/get-version.d.ts +0 -2
  204. package/dist/src/get-version.d.ts.map +0 -1
  205. package/dist/src/get-version.js +0 -7
  206. package/dist/src/get-version.js.map +0 -1
  207. package/dist/src/help.d.ts +0 -65
  208. package/dist/src/help.d.ts.map +0 -1
  209. package/dist/src/help.js +0 -770
  210. package/dist/src/help.js.map +0 -1
  211. package/dist/src/index.d.ts +0 -4
  212. package/dist/src/index.d.ts.map +0 -1
  213. package/dist/src/index.js +0 -4
  214. package/dist/src/index.js.map +0 -1
  215. package/dist/src/services/auth.d.ts +0 -69
  216. package/dist/src/services/auth.d.ts.map +0 -1
  217. package/dist/src/services/auth.js +0 -171
  218. package/dist/src/services/auth.js.map +0 -1
  219. package/dist/src/services/connect.d.ts +0 -5
  220. package/dist/src/services/connect.d.ts.map +0 -1
  221. package/dist/src/services/connect.js +0 -90
  222. package/dist/src/services/connect.js.map +0 -1
  223. package/dist/src/services/generate.d.ts +0 -3
  224. package/dist/src/services/generate.d.ts.map +0 -1
  225. package/dist/src/services/generate.js +0 -80
  226. package/dist/src/services/generate.js.map +0 -1
  227. package/dist/src/services/inspect.d.ts +0 -3
  228. package/dist/src/services/inspect.d.ts.map +0 -1
  229. package/dist/src/services/inspect.js +0 -50
  230. package/dist/src/services/inspect.js.map +0 -1
  231. package/dist/src/services/legacy/connect.old.d.ts +0 -2
  232. package/dist/src/services/legacy/connect.old.d.ts.map +0 -1
  233. package/dist/src/services/legacy/connect.old.js +0 -2
  234. package/dist/src/services/legacy/connect.old.js.map +0 -1
  235. package/dist/src/services/legacy/generate.old.d.ts +0 -30
  236. package/dist/src/services/legacy/generate.old.d.ts.map +0 -1
  237. package/dist/src/services/legacy/generate.old.js +0 -107
  238. package/dist/src/services/legacy/generate.old.js.map +0 -1
  239. package/dist/src/services/legacy/inspect.old.d.ts +0 -5
  240. package/dist/src/services/legacy/inspect.old.d.ts.map +0 -1
  241. package/dist/src/services/legacy/inspect.old.js +0 -49
  242. package/dist/src/services/legacy/inspect.old.js.map +0 -1
  243. package/dist/src/services/legacy/migrate.old.d.ts +0 -3
  244. package/dist/src/services/legacy/migrate.old.d.ts.map +0 -1
  245. package/dist/src/services/legacy/migrate.old.js +0 -289
  246. package/dist/src/services/legacy/migrate.old.js.map +0 -1
  247. package/dist/src/services/legacy/switchboard.old.d.ts +0 -54
  248. package/dist/src/services/legacy/switchboard.old.d.ts.map +0 -1
  249. package/dist/src/services/legacy/switchboard.old.js +0 -79
  250. package/dist/src/services/legacy/switchboard.old.js.map +0 -1
  251. package/dist/src/services/legacy/vetra.old.d.ts +0 -15
  252. package/dist/src/services/legacy/vetra.old.d.ts.map +0 -1
  253. package/dist/src/services/legacy/vetra.old.js +0 -176
  254. package/dist/src/services/legacy/vetra.old.js.map +0 -1
  255. package/dist/src/services/migrate.d.ts +0 -3
  256. package/dist/src/services/migrate.d.ts.map +0 -1
  257. package/dist/src/services/migrate.js +0 -327
  258. package/dist/src/services/migrate.js.map +0 -1
  259. package/dist/src/services/switchboard-migrate.d.ts +0 -7
  260. package/dist/src/services/switchboard-migrate.d.ts.map +0 -1
  261. package/dist/src/services/switchboard-migrate.js +0 -60
  262. package/dist/src/services/switchboard-migrate.js.map +0 -1
  263. package/dist/src/services/switchboard.d.ts +0 -22
  264. package/dist/src/services/switchboard.d.ts.map +0 -1
  265. package/dist/src/services/switchboard.js +0 -77
  266. package/dist/src/services/switchboard.js.map +0 -1
  267. package/dist/src/services/vetra.d.ts +0 -3
  268. package/dist/src/services/vetra.d.ts.map +0 -1
  269. package/dist/src/services/vetra.js +0 -169
  270. package/dist/src/services/vetra.js.map +0 -1
  271. package/dist/src/types.d.ts +0 -31
  272. package/dist/src/types.d.ts.map +0 -1
  273. package/dist/src/types.js +0 -2
  274. package/dist/src/types.js.map +0 -1
  275. package/dist/src/utils/configure-vetra-github-url.d.ts +0 -12
  276. package/dist/src/utils/configure-vetra-github-url.d.ts.map +0 -1
  277. package/dist/src/utils/configure-vetra-github-url.js +0 -230
  278. package/dist/src/utils/configure-vetra-github-url.js.map +0 -1
  279. package/dist/src/utils/constants.d.ts +0 -2
  280. package/dist/src/utils/constants.d.ts.map +0 -1
  281. package/dist/src/utils/constants.js +0 -2
  282. package/dist/src/utils/constants.js.map +0 -1
  283. package/dist/src/utils/file-system.d.ts +0 -2
  284. package/dist/src/utils/file-system.d.ts.map +0 -1
  285. package/dist/src/utils/file-system.js +0 -15
  286. package/dist/src/utils/file-system.js.map +0 -1
  287. package/dist/src/utils/index.d.ts +0 -3
  288. package/dist/src/utils/index.d.ts.map +0 -1
  289. package/dist/src/utils/index.js +0 -3
  290. package/dist/src/utils/index.js.map +0 -1
  291. package/dist/src/utils/projects.d.ts +0 -19
  292. package/dist/src/utils/projects.d.ts.map +0 -1
  293. package/dist/src/utils/projects.js +0 -93
  294. package/dist/src/utils/projects.js.map +0 -1
  295. package/dist/src/utils.d.ts +0 -112
  296. package/dist/src/utils.d.ts.map +0 -1
  297. package/dist/src/utils.js +0 -261
  298. package/dist/src/utils.js.map +0 -1
  299. package/dist/src/version.d.ts +0 -2
  300. package/dist/src/version.d.ts.map +0 -1
  301. package/dist/src/version.js +0 -3
  302. package/dist/src/version.js.map +0 -1
  303. package/dist/test/utils.test.d.ts +0 -2
  304. package/dist/test/utils.test.d.ts.map +0 -1
  305. package/dist/test/utils.test.js +0 -133
  306. package/dist/test/utils.test.js.map +0 -1
  307. package/dist/tsconfig.tsbuildinfo +0 -1
  308. package/dist/vitest.config.d.ts +0 -3
  309. package/dist/vitest.config.d.ts.map +0 -1
  310. package/dist/vitest.config.js +0 -7
  311. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ import { s as getProjectInfo } from "./utils-D7x443W6.mjs";
2
+ import fs from "node:fs";
3
+ //#region src/services/inspect.ts
4
+ function startInspect(args) {
5
+ if (args.debug) console.log(">>> command arguments", args);
6
+ const projectInfo = getProjectInfo(args.debug);
7
+ const { packageName } = args;
8
+ if (args.debug) console.log("\n>>> projectInfo", projectInfo);
9
+ try {
10
+ const loadManifest = (path) => JSON.parse(fs.readFileSync(path, "utf-8"));
11
+ const manifest = loadManifest(`${process.cwd()}/node_modules/${packageName}/dist/powerhouse.manifest.json`);
12
+ console.log(manifest.name);
13
+ if (manifest.documentModels) {
14
+ console.log("\nDocument Models:");
15
+ manifest.documentModels.forEach((model) => {
16
+ console.log(`- ${model.name} (${model.id})`);
17
+ });
18
+ }
19
+ if (manifest.editors) {
20
+ console.log("\nEditors:");
21
+ manifest.editors.forEach((editor) => {
22
+ console.log(`- ${editor.name} (${editor.id})`);
23
+ });
24
+ }
25
+ if (manifest.processors) {
26
+ console.log("\nProcessors:");
27
+ manifest.processors.forEach((processor) => {
28
+ console.log(`- ${processor.name} (${processor.id})`);
29
+ });
30
+ }
31
+ if (manifest.subgraphs) {
32
+ console.log("\nSubgraphs:");
33
+ manifest.subgraphs.forEach((subgraph) => {
34
+ console.log(`- ${subgraph.name} (${subgraph.id})`);
35
+ });
36
+ }
37
+ } catch (e) {
38
+ if (args.debug) console.error(e);
39
+ else console.log("No manifest found in the package");
40
+ }
41
+ }
42
+ //#endregion
43
+ export { startInspect };
44
+
45
+ //# sourceMappingURL=inspect-BwkihsT7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect-BwkihsT7.mjs","names":[],"sources":["../src/services/inspect.ts"],"sourcesContent":["import type { Manifest } from \"@powerhousedao/shared/document-model\";\nimport fs from \"node:fs\";\nimport type { InspectArgs } from \"../types.js\";\nimport { getProjectInfo } from \"../utils.js\";\nexport function startInspect(args: InspectArgs) {\n if (args.debug) {\n console.log(\">>> command arguments\", args);\n }\n\n const projectInfo = getProjectInfo(args.debug);\n const { packageName } = args;\n\n if (args.debug) {\n console.log(\"\\n>>> projectInfo\", projectInfo);\n }\n\n try {\n const loadManifest = (path: string) =>\n JSON.parse(fs.readFileSync(path, \"utf-8\")) as Manifest;\n const manifest = loadManifest(\n `${process.cwd()}/node_modules/${packageName}/dist/powerhouse.manifest.json`,\n );\n\n console.log(manifest.name);\n if (manifest.documentModels) {\n console.log(\"\\nDocument Models:\");\n manifest.documentModels.forEach((model) => {\n console.log(`- ${model.name} (${model.id})`);\n });\n }\n\n if (manifest.editors) {\n console.log(\"\\nEditors:\");\n manifest.editors.forEach((editor) => {\n console.log(`- ${editor.name} (${editor.id})`);\n });\n }\n\n if (manifest.processors) {\n console.log(\"\\nProcessors:\");\n manifest.processors.forEach((processor) => {\n console.log(`- ${processor.name} (${processor.id})`);\n });\n }\n\n if (manifest.subgraphs) {\n console.log(\"\\nSubgraphs:\");\n manifest.subgraphs.forEach((subgraph) => {\n console.log(`- ${subgraph.name} (${subgraph.id})`);\n });\n }\n } catch (e) {\n if (args.debug) {\n console.error(e);\n } else {\n console.log(\"No manifest found in the package\");\n }\n }\n}\n"],"mappings":";;;AAIA,SAAgB,aAAa,MAAmB;AAC9C,KAAI,KAAK,MACP,SAAQ,IAAI,yBAAyB,KAAK;CAG5C,MAAM,cAAc,eAAe,KAAK,MAAM;CAC9C,MAAM,EAAE,gBAAgB;AAExB,KAAI,KAAK,MACP,SAAQ,IAAI,qBAAqB,YAAY;AAG/C,KAAI;EACF,MAAM,gBAAgB,SACpB,KAAK,MAAM,GAAG,aAAa,MAAM,QAAQ,CAAC;EAC5C,MAAM,WAAW,aACf,GAAG,QAAQ,KAAK,CAAC,gBAAgB,YAAY,gCAC9C;AAED,UAAQ,IAAI,SAAS,KAAK;AAC1B,MAAI,SAAS,gBAAgB;AAC3B,WAAQ,IAAI,qBAAqB;AACjC,YAAS,eAAe,SAAS,UAAU;AACzC,YAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,GAAG;KAC5C;;AAGJ,MAAI,SAAS,SAAS;AACpB,WAAQ,IAAI,aAAa;AACzB,YAAS,QAAQ,SAAS,WAAW;AACnC,YAAQ,IAAI,KAAK,OAAO,KAAK,IAAI,OAAO,GAAG,GAAG;KAC9C;;AAGJ,MAAI,SAAS,YAAY;AACvB,WAAQ,IAAI,gBAAgB;AAC5B,YAAS,WAAW,SAAS,cAAc;AACzC,YAAQ,IAAI,KAAK,UAAU,KAAK,IAAI,UAAU,GAAG,GAAG;KACpD;;AAGJ,MAAI,SAAS,WAAW;AACtB,WAAQ,IAAI,eAAe;AAC3B,YAAS,UAAU,SAAS,aAAa;AACvC,YAAQ,IAAI,KAAK,SAAS,KAAK,IAAI,SAAS,GAAG,GAAG;KAClD;;UAEG,GAAG;AACV,MAAI,KAAK,MACP,SAAQ,MAAM,EAAE;MAEhB,SAAQ,IAAI,mCAAmC"}
@@ -0,0 +1,232 @@
1
+ import { command } from "cmd-ts";
2
+ import { accessTokenArgs, listArgs, loginArgs } from "@powerhousedao/shared/clis/args";
3
+ import { DEFAULT_EXPIRY_SECONDS } from "@powerhousedao/shared/clis/constants";
4
+ //#region src/get-version.ts
5
+ function getVersion() {
6
+ return "6.0.0-dev.231";
7
+ }
8
+ //#endregion
9
+ //#region src/commands/access-token.ts
10
+ const accessToken = command({
11
+ name: "access-token",
12
+ description: `
13
+ The access-token command generates a bearer token for API authentication. This token
14
+ can be used to authenticate requests to Powerhouse APIs like reactor-api (Switchboard).
15
+
16
+ This command:
17
+ 1. Uses your CLI's cryptographic identity (DID) to sign a verifiable credential
18
+ 2. Creates a JWT bearer token with configurable expiration
19
+ 3. Outputs the token to stdout (info to stderr) for easy piping
20
+
21
+ Prerequisites:
22
+ You must have a cryptographic identity. Run 'ph login' first to:
23
+ - Generate a keypair (stored in .ph/.keypair.json)
24
+ - Optionally link your Ethereum address (stored in .ph/.renown.json)
25
+
26
+ Token Details:
27
+ The generated token is a JWT (JSON Web Token) containing:
28
+ - Issuer (iss): Your CLI's DID (did:key:...)
29
+ - Subject (sub): Your CLI's DID
30
+ - Credential Subject: Chain ID, network ID, and address (if authenticated)
31
+ - Expiration (exp): Based on --expiry option
32
+ - Audience (aud): If --audience is specified
33
+
34
+ Output:
35
+ - Token information (DID, address, expiry) is printed to stderr
36
+ - The token itself is printed to stdout for easy piping/copying
37
+
38
+ This allows you to use the command in scripts:
39
+ TOKEN=$(ph access-token)
40
+ curl -H "Authorization: Bearer $TOKEN" http://localhost:4001/graphql
41
+
42
+ Usage with APIs:
43
+ Generate token and use with curl
44
+ TOKEN=$(ph access-token --expiry 1d)
45
+ curl -X POST http://localhost:4001/graphql \\
46
+ -H "Content-Type: application/json" \\
47
+ -H "Authorization: Bearer $TOKEN" \\
48
+ -d '{"query": "{ drives { id name } }"}'
49
+
50
+ Export as environment variable
51
+ export PH_ACCESS_TOKEN=$(ph access-token)
52
+
53
+ Notes:
54
+ - Tokens are self-signed using your CLI's private key
55
+ - No network request is made; tokens are generated locally
56
+ - The recipient API must trust your CLI's DID to accept the token
57
+ - For reactor-api, ensure AUTH_ENABLED=true to require authentication
58
+ `,
59
+ args: accessTokenArgs,
60
+ handler: async (args) => {
61
+ if (args.debug) console.log(args);
62
+ const { generateAccessToken, parseExpiry, formatExpiry } = await import("@renown/sdk/node");
63
+ const { getRenown } = await import("./auth-Dq7JjwYn.mjs");
64
+ const renown = await getRenown();
65
+ let expiresIn = DEFAULT_EXPIRY_SECONDS;
66
+ if (args.expiry) expiresIn = parseExpiry(args.expiry);
67
+ const result = await generateAccessToken(renown, {
68
+ expiresIn,
69
+ aud: args.audience
70
+ });
71
+ console.error(`CLI DID: ${result.did}`);
72
+ console.error(`ETH Address: ${result.address}`);
73
+ console.error(`Token expires in: ${formatExpiry(expiresIn)}`);
74
+ console.error("");
75
+ console.log(result.token);
76
+ process.exit(0);
77
+ }
78
+ });
79
+ //#endregion
80
+ //#region src/commands/list.ts
81
+ const list = command({
82
+ name: "list",
83
+ description: `
84
+ The list command displays information about installed Powerhouse packages in your project.
85
+ It reads the powerhouse.config.json file and shows the packages that are currently installed.
86
+
87
+ This command:
88
+ 1. Examines your project configuration
89
+ 2. Lists all installed Powerhouse packages
90
+ 3. Provides a clear overview of your project's dependencies
91
+ 4. Helps you manage and track your Powerhouse components
92
+ `,
93
+ aliases: ["l"],
94
+ args: listArgs,
95
+ handler: async (args) => {
96
+ if (args.debug) console.log(args);
97
+ try {
98
+ const { getPowerhouseProjectInfo } = await import("@powerhousedao/shared/clis");
99
+ const projectInfo = await getPowerhouseProjectInfo();
100
+ console.log("\n>>> projectInfo", projectInfo);
101
+ const { getConfig } = await import("@powerhousedao/config/node");
102
+ const phConfig = getConfig(projectInfo.projectPath + "/powerhouse.config.json");
103
+ if (!phConfig.packages || phConfig.packages.length === 0) {
104
+ console.log("No packages found in the project");
105
+ return;
106
+ }
107
+ console.log("Installed Packages:\n");
108
+ phConfig.packages.forEach((pkg) => {
109
+ console.log(pkg.packageName);
110
+ });
111
+ } catch (e) {
112
+ console.log("No packages found in the project");
113
+ }
114
+ process.exit(0);
115
+ }
116
+ });
117
+ //#endregion
118
+ //#region src/commands/login.ts
119
+ const login = command({
120
+ name: "login",
121
+ description: `
122
+ The login command authenticates you with Renown using your Ethereum wallet. This enables
123
+ the CLI to act on behalf of your Ethereum identity for authenticated operations.
124
+
125
+ This command:
126
+ 1. Generates or loads a cryptographic identity (DID) for the CLI
127
+ 2. Opens your browser to the Renown authentication page
128
+ 3. You authorize the CLI's DID to act on behalf of your Ethereum address
129
+ 4. Stores the credentials locally in .ph/.renown.json
130
+ `,
131
+ args: loginArgs,
132
+ handler: async (args) => {
133
+ if (args.debug) console.log(args);
134
+ const { getRenown } = await import("./auth-Dq7JjwYn.mjs");
135
+ const renown = await getRenown(args.renownUrl);
136
+ if (args.showDid) {
137
+ console.log(renown.did);
138
+ process.exit(0);
139
+ }
140
+ if (args.status) {
141
+ const { getAuthStatus } = await import("@renown/sdk/node");
142
+ const status = getAuthStatus(renown);
143
+ if (!status.authenticated || !status.address) {
144
+ console.log("Not authenticated with an Ethereum address.");
145
+ console.log("Run \"ph login\" to authenticate.");
146
+ } else {
147
+ console.log("Authenticated");
148
+ console.log(` ETH Address: ${status.address}`);
149
+ console.log(` User DID: ${status.userDid}`);
150
+ console.log(` Chain ID: ${status.chainId}`);
151
+ console.log(` CLI DID: ${status.cliDid}`);
152
+ console.log(` Authenticated at: ${status.authenticatedAt?.toLocaleString()}`);
153
+ console.log(` Renown URL: ${status.baseUrl}`);
154
+ }
155
+ process.exit(0);
156
+ }
157
+ if (args.logout) {
158
+ await handleLogout();
159
+ process.exit(0);
160
+ }
161
+ const { browserLogin } = await import("@renown/sdk/node");
162
+ console.debug("Initializing cryptographic identity...");
163
+ console.log(`CLI DID: ${renown.did}`);
164
+ try {
165
+ const timeoutMs = args.timeout ? args.timeout * 1e3 : void 0;
166
+ const result = await browserLogin(renown, {
167
+ renownUrl: args.renownUrl,
168
+ timeoutMs,
169
+ onLoginUrl: (url, sessionId) => {
170
+ console.log("Opening browser for authentication...");
171
+ console.log(`Session ID: ${sessionId.slice(0, 8)}...`);
172
+ console.log(`Login URL: ${url}`);
173
+ console.log();
174
+ console.log("Waiting for authentication in browser");
175
+ console.log(`(timeout in ${(timeoutMs ?? 3e5) / 1e3} seconds)`);
176
+ console.log();
177
+ console.log("Please connect your wallet and authorize this CLI to act on your behalf.");
178
+ console.log();
179
+ process.stdout.write("Waiting");
180
+ },
181
+ onPollTick: () => process.stdout.write("."),
182
+ onBrowserOpenFailed: (url) => {
183
+ console.error("Failed to open browser automatically.");
184
+ console.log(`Please open this URL manually: ${url}`);
185
+ }
186
+ });
187
+ console.log();
188
+ console.log();
189
+ console.log("Successfully authenticated!");
190
+ console.log(` ETH Address: ${result.user.address}`);
191
+ console.log(` User DID: ${result.user.did}`);
192
+ console.log(` CLI DID: ${result.cliDid}`);
193
+ console.log();
194
+ console.log("The CLI can now act on behalf of your Ethereum identity.");
195
+ } catch (error) {
196
+ console.log();
197
+ throw error;
198
+ }
199
+ process.exit(0);
200
+ }
201
+ });
202
+ async function handleLogout() {
203
+ const { getRenown } = await import("./auth-Dq7JjwYn.mjs");
204
+ const renown = await getRenown();
205
+ if (!renown.user) {
206
+ console.log("Not currently authenticated.");
207
+ return;
208
+ }
209
+ try {
210
+ await renown.logout();
211
+ console.log("Successfully logged out.");
212
+ } catch (error) {
213
+ console.error("Failed to clear credentials.");
214
+ console.debug(error);
215
+ }
216
+ }
217
+ //#endregion
218
+ //#region src/commands/logout.ts
219
+ const logout = command({
220
+ name: "logout",
221
+ description: `
222
+ The logout command removes an existing session created with 'ph login'`,
223
+ args: {},
224
+ handler: async () => {
225
+ await handleLogout();
226
+ process.exit(0);
227
+ }
228
+ });
229
+ //#endregion
230
+ export { getVersion as a, accessToken as i, login as n, list as r, logout as t };
231
+
232
+ //# sourceMappingURL=logout-XEyvdASS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout-XEyvdASS.mjs","names":[],"sources":["../src/get-version.ts","../src/commands/access-token.ts","../src/commands/list.ts","../src/commands/login.ts","../src/commands/logout.ts"],"sourcesContent":["declare const CLI_VERSION: string | undefined;\ndeclare const CLI_GIT_SHA: string | undefined;\n\nexport function getVersion() {\n if (typeof CLI_VERSION !== \"undefined\") return CLI_VERSION;\n return (\n process.env.WORKSPACE_VERSION ||\n process.env.npm_package_version ||\n \"unknown\"\n );\n}\n\nexport function getGitHash() {\n if (typeof CLI_GIT_SHA !== \"undefined\") return CLI_GIT_SHA;\n return process.env.WORKSPACE_GIT_SHA || \"unknown\";\n}\n","import { accessTokenArgs } from \"@powerhousedao/shared/clis/args\";\nimport { DEFAULT_EXPIRY_SECONDS } from \"@powerhousedao/shared/clis/constants\";\nimport { command } from \"cmd-ts\";\n\nexport const accessToken = command({\n name: \"access-token\",\n description: `\nThe access-token command generates a bearer token for API authentication. This token\ncan be used to authenticate requests to Powerhouse APIs like reactor-api (Switchboard).\n\nThis command:\n1. Uses your CLI's cryptographic identity (DID) to sign a verifiable credential\n2. Creates a JWT bearer token with configurable expiration\n3. Outputs the token to stdout (info to stderr) for easy piping\n\nPrerequisites:\n You must have a cryptographic identity. Run 'ph login' first to:\n - Generate a keypair (stored in .ph/.keypair.json)\n - Optionally link your Ethereum address (stored in .ph/.renown.json)\n\nToken Details:\n The generated token is a JWT (JSON Web Token) containing:\n - Issuer (iss): Your CLI's DID (did:key:...)\n - Subject (sub): Your CLI's DID\n - Credential Subject: Chain ID, network ID, and address (if authenticated)\n - Expiration (exp): Based on --expiry option\n - Audience (aud): If --audience is specified\n\nOutput:\n- Token information (DID, address, expiry) is printed to stderr\n- The token itself is printed to stdout for easy piping/copying\n\nThis allows you to use the command in scripts:\n TOKEN=$(ph access-token)\n curl -H \"Authorization: Bearer $TOKEN\" http://localhost:4001/graphql\n\nUsage with APIs:\n Generate token and use with curl\n TOKEN=$(ph access-token --expiry 1d)\n curl -X POST http://localhost:4001/graphql \\\\\n -H \"Content-Type: application/json\" \\\\\n -H \"Authorization: Bearer $TOKEN\" \\\\\n -d '{\"query\": \"{ drives { id name } }\"}'\n\n Export as environment variable\n export PH_ACCESS_TOKEN=$(ph access-token)\n\nNotes:\n - Tokens are self-signed using your CLI's private key\n - No network request is made; tokens are generated locally\n - The recipient API must trust your CLI's DID to accept the token\n - For reactor-api, ensure AUTH_ENABLED=true to require authentication\n`,\n args: accessTokenArgs,\n handler: async (args) => {\n if (args.debug) {\n console.log(args);\n }\n\n const { generateAccessToken, parseExpiry, formatExpiry } =\n await import(\"@renown/sdk/node\");\n const { getRenown } = await import(\"../services/auth.js\");\n const renown = await getRenown();\n\n let expiresIn = DEFAULT_EXPIRY_SECONDS;\n if (args.expiry) expiresIn = parseExpiry(args.expiry);\n\n const result = await generateAccessToken(renown, {\n expiresIn,\n aud: args.audience,\n });\n\n // Output token info to stderr, token itself to stdout for piping\n console.error(`CLI DID: ${result.did}`);\n console.error(`ETH Address: ${result.address}`);\n console.error(`Token expires in: ${formatExpiry(expiresIn)}`);\n console.error(\"\");\n\n console.log(result.token);\n process.exit(0);\n },\n});\n","import { listArgs } from \"@powerhousedao/shared/clis/args\";\nimport { command } from \"cmd-ts\";\n\nexport const list = command({\n name: \"list\",\n description: `\nThe list command displays information about installed Powerhouse packages in your project.\nIt reads the powerhouse.config.json file and shows the packages that are currently installed.\n\nThis command:\n1. Examines your project configuration\n2. Lists all installed Powerhouse packages\n3. Provides a clear overview of your project's dependencies\n4. Helps you manage and track your Powerhouse components\n`,\n aliases: [\"l\"],\n args: listArgs,\n handler: async (args) => {\n if (args.debug) {\n console.log(args);\n }\n\n try {\n const { getPowerhouseProjectInfo } =\n await import(\"@powerhousedao/shared/clis\");\n const projectInfo = await getPowerhouseProjectInfo();\n console.log(\"\\n>>> projectInfo\", projectInfo);\n\n const { getConfig } = await import(\"@powerhousedao/config/node\");\n const phConfig = getConfig(\n projectInfo.projectPath + \"/powerhouse.config.json\",\n );\n\n if (!phConfig.packages || phConfig.packages.length === 0) {\n console.log(\"No packages found in the project\");\n return;\n }\n\n console.log(\"Installed Packages:\\n\");\n phConfig.packages.forEach((pkg) => {\n console.log(pkg.packageName);\n });\n } catch (e) {\n console.log(\"No packages found in the project\");\n }\n process.exit(0);\n },\n});\n","import { loginArgs } from \"@powerhousedao/shared/clis/args\";\nimport { command } from \"cmd-ts\";\n\nexport const login = command({\n name: \"login\",\n description: `\nThe login command authenticates you with Renown using your Ethereum wallet. This enables\nthe CLI to act on behalf of your Ethereum identity for authenticated operations.\n\nThis command:\n1. Generates or loads a cryptographic identity (DID) for the CLI\n2. Opens your browser to the Renown authentication page\n3. You authorize the CLI's DID to act on behalf of your Ethereum address\n4. Stores the credentials locally in .ph/.renown.json\n `,\n args: loginArgs,\n handler: async (args) => {\n if (args.debug) {\n console.log(args);\n }\n\n const { getRenown } = await import(\"../services/auth.js\");\n const renown = await getRenown(args.renownUrl);\n\n if (args.showDid) {\n console.log(renown.did);\n process.exit(0);\n }\n\n if (args.status) {\n const { getAuthStatus } = await import(\"@renown/sdk/node\");\n const status = getAuthStatus(renown);\n if (!status.authenticated || !status.address) {\n console.log(\"Not authenticated with an Ethereum address.\");\n console.log('Run \"ph login\" to authenticate.');\n } else {\n console.log(\"Authenticated\");\n console.log(` ETH Address: ${status.address}`);\n console.log(` User DID: ${status.userDid}`);\n console.log(` Chain ID: ${status.chainId}`);\n console.log(` CLI DID: ${status.cliDid}`);\n console.log(\n ` Authenticated at: ${status.authenticatedAt?.toLocaleString()}`,\n );\n console.log(` Renown URL: ${status.baseUrl}`);\n }\n process.exit(0);\n }\n\n if (args.logout) {\n await handleLogout();\n process.exit(0);\n }\n\n const { browserLogin } = await import(\"@renown/sdk/node\");\n\n console.debug(\"Initializing cryptographic identity...\");\n console.log(`CLI DID: ${renown.did}`);\n\n try {\n const timeoutMs = args.timeout ? args.timeout * 1000 : undefined;\n\n const result = await browserLogin(renown, {\n renownUrl: args.renownUrl,\n timeoutMs,\n onLoginUrl: (url, sessionId) => {\n console.log(\"Opening browser for authentication...\");\n console.log(`Session ID: ${sessionId.slice(0, 8)}...`);\n console.log(`Login URL: ${url}`);\n console.log();\n console.log(\"Waiting for authentication in browser\");\n console.log(`(timeout in ${(timeoutMs ?? 300_000) / 1000} seconds)`);\n console.log();\n console.log(\n \"Please connect your wallet and authorize this CLI to act on your behalf.\",\n );\n console.log();\n process.stdout.write(\"Waiting\");\n },\n onPollTick: () => process.stdout.write(\".\"),\n onBrowserOpenFailed: (url) => {\n console.error(\"Failed to open browser automatically.\");\n console.log(`Please open this URL manually: ${url}`);\n },\n });\n\n console.log(); // New line after dots\n console.log();\n console.log(\"Successfully authenticated!\");\n console.log(` ETH Address: ${result.user.address}`);\n console.log(` User DID: ${result.user.did}`);\n console.log(` CLI DID: ${result.cliDid}`);\n console.log();\n console.log(\"The CLI can now act on behalf of your Ethereum identity.\");\n } catch (error) {\n console.log(); // New line after dots\n throw error;\n }\n\n process.exit(0);\n },\n});\n\nexport async function handleLogout() {\n const { getRenown } = await import(\"../services/auth.js\");\n const renown = await getRenown();\n if (!renown.user) {\n console.log(\"Not currently authenticated.\");\n return;\n }\n\n try {\n await renown.logout();\n console.log(\"Successfully logged out.\");\n } catch (error) {\n console.error(\"Failed to clear credentials.\");\n console.debug(error);\n }\n}\n","import { command } from \"cmd-ts\";\nimport { handleLogout } from \"./login.js\";\n\nexport const logout = command({\n name: \"logout\",\n description: `\nThe logout command removes an existing session created with 'ph login'`,\n args: {},\n handler: async () => {\n await handleLogout();\n process.exit(0);\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { execSync } from "node:child_process";
2
+ import { fetchPackageVersionFromNpmRegistry } from "@powerhousedao/shared/clis";
3
+ import { dirname, join } from "node:path";
4
+ import { detect, resolveCommand } from "package-manager-detector";
5
+ import { readFileSync } from "node:fs";
6
+ import { fileURLToPath } from "node:url";
7
+ //#region src/services/migrate.ts
8
+ function getBundledPhCliVersion() {
9
+ let dir = dirname(fileURLToPath(import.meta.url));
10
+ for (let i = 0; i < 5; i++) {
11
+ try {
12
+ const pkg = JSON.parse(readFileSync(join(dir, "package.json"), "utf8"));
13
+ if (pkg.name === "@powerhousedao/ph-cli") return pkg.version;
14
+ } catch {}
15
+ dir = dirname(dir);
16
+ }
17
+ }
18
+ async function startMigrate({ versionPositional, version, force, debug }) {
19
+ const requested = versionPositional ?? version;
20
+ if (debug) console.log(`[migrate] requested version: ${requested}`);
21
+ let targetVersion;
22
+ try {
23
+ targetVersion = await fetchPackageVersionFromNpmRegistry(`@powerhousedao/ph-cli@${requested}`);
24
+ } catch (error) {
25
+ const reason = error instanceof Error ? error.message : String(error);
26
+ if (!force) throw new Error(`Failed to resolve "${requested}" from the npm registry: ${reason}\nRe-run with --force to migrate using the installed version.`);
27
+ if (debug) console.log(`[migrate] failed to resolve target version, --force is set, falling back to bundled codegen: ${reason}`);
28
+ }
29
+ const bundledVersion = getBundledPhCliVersion();
30
+ if (debug) {
31
+ console.log(`[migrate] resolved target version: ${targetVersion ?? "(unknown)"}`);
32
+ console.log(`[migrate] current ph-cli version: ${bundledVersion ?? "(unknown)"}`);
33
+ }
34
+ if (!targetVersion || force || targetVersion === bundledVersion) {
35
+ if (debug) console.log(`[migrate] running migrate from bundled codegen`);
36
+ const { migrate } = await import("@powerhousedao/codegen");
37
+ await migrate(targetVersion ?? requested);
38
+ return;
39
+ }
40
+ const agent = (await detect())?.agent ?? "npm";
41
+ const resolved = resolveCommand(agent, "execute", [
42
+ `@powerhousedao/ph-cli@${targetVersion}`,
43
+ "migrate",
44
+ "--version",
45
+ targetVersion,
46
+ ...debug ? ["--debug"] : []
47
+ ]);
48
+ if (!resolved) throw new Error(`Failed to resolve execute command for package manager "${agent}".`);
49
+ const command = `${resolved.command} ${resolved.args.join(" ")}`;
50
+ if (debug) {
51
+ console.log(`[migrate] detected package manager: ${agent}`);
52
+ console.log(`[migrate] re-executing: ${command}`);
53
+ }
54
+ execSync(command, { stdio: "inherit" });
55
+ }
56
+ //#endregion
57
+ export { startMigrate };
58
+
59
+ //# sourceMappingURL=migrate-B-O6P7jA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-B-O6P7jA.mjs","names":[],"sources":["../src/services/migrate.ts"],"sourcesContent":["import { fetchPackageVersionFromNpmRegistry } from \"@powerhousedao/shared/clis\";\nimport { execSync } from \"node:child_process\";\nimport { readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { detect, resolveCommand } from \"package-manager-detector\";\nimport type { MigrateArgs } from \"../types.js\";\n\nfunction getBundledPhCliVersion(): string | undefined {\n let dir = dirname(fileURLToPath(import.meta.url));\n for (let i = 0; i < 5; i++) {\n try {\n const pkg = JSON.parse(\n readFileSync(join(dir, \"package.json\"), \"utf8\"),\n ) as { name?: string; version?: string };\n if (pkg.name === \"@powerhousedao/ph-cli\") return pkg.version;\n } catch {\n // keep walking\n }\n dir = dirname(dir);\n }\n}\n\nexport async function startMigrate({\n versionPositional,\n version,\n force,\n debug,\n}: MigrateArgs) {\n const requested = versionPositional ?? version;\n if (debug) console.log(`[migrate] requested version: ${requested}`);\n\n let targetVersion: string | undefined;\n try {\n targetVersion = await fetchPackageVersionFromNpmRegistry(\n `@powerhousedao/ph-cli@${requested}`,\n );\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n if (!force) {\n throw new Error(\n `Failed to resolve \"${requested}\" from the npm registry: ${reason}\\nRe-run with --force to migrate using the installed version.`,\n );\n }\n if (debug) {\n console.log(\n `[migrate] failed to resolve target version, --force is set, falling back to bundled codegen: ${reason}`,\n );\n }\n }\n\n const bundledVersion = getBundledPhCliVersion();\n if (debug) {\n console.log(\n `[migrate] resolved target version: ${targetVersion ?? \"(unknown)\"}`,\n );\n console.log(\n `[migrate] current ph-cli version: ${bundledVersion ?? \"(unknown)\"}`,\n );\n }\n\n if (!targetVersion || force || targetVersion === bundledVersion) {\n if (debug) console.log(`[migrate] running migrate from bundled codegen`);\n const { migrate } = await import(\"@powerhousedao/codegen\");\n await migrate(targetVersion ?? requested);\n return;\n }\n\n const agent = (await detect())?.agent ?? \"npm\";\n const resolved = resolveCommand(agent, \"execute\", [\n `@powerhousedao/ph-cli@${targetVersion}`,\n \"migrate\",\n \"--version\",\n targetVersion,\n ...(debug ? [\"--debug\"] : []),\n ]);\n if (!resolved) {\n throw new Error(\n `Failed to resolve execute command for package manager \"${agent}\".`,\n );\n }\n\n const command = `${resolved.command} ${resolved.args.join(\" \")}`;\n if (debug) {\n console.log(`[migrate] detected package manager: ${agent}`);\n console.log(`[migrate] re-executing: ${command}`);\n }\n execSync(command, { stdio: \"inherit\" });\n}\n"],"mappings":";;;;;;;AAQA,SAAS,yBAA6C;CACpD,IAAI,MAAM,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;AACjD,MAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,MAAI;GACF,MAAM,MAAM,KAAK,MACf,aAAa,KAAK,KAAK,eAAe,EAAE,OAAO,CAChD;AACD,OAAI,IAAI,SAAS,wBAAyB,QAAO,IAAI;UAC/C;AAGR,QAAM,QAAQ,IAAI;;;AAItB,eAAsB,aAAa,EACjC,mBACA,SACA,OACA,SACc;CACd,MAAM,YAAY,qBAAqB;AACvC,KAAI,MAAO,SAAQ,IAAI,gCAAgC,YAAY;CAEnE,IAAI;AACJ,KAAI;AACF,kBAAgB,MAAM,mCACpB,yBAAyB,YAC1B;UACM,OAAO;EACd,MAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACrE,MAAI,CAAC,MACH,OAAM,IAAI,MACR,sBAAsB,UAAU,2BAA2B,OAAO,+DACnE;AAEH,MAAI,MACF,SAAQ,IACN,gGAAgG,SACjG;;CAIL,MAAM,iBAAiB,wBAAwB;AAC/C,KAAI,OAAO;AACT,UAAQ,IACN,sCAAsC,iBAAiB,cACxD;AACD,UAAQ,IACN,qCAAqC,kBAAkB,cACxD;;AAGH,KAAI,CAAC,iBAAiB,SAAS,kBAAkB,gBAAgB;AAC/D,MAAI,MAAO,SAAQ,IAAI,iDAAiD;EACxE,MAAM,EAAE,YAAY,MAAM,OAAO;AACjC,QAAM,QAAQ,iBAAiB,UAAU;AACzC;;CAGF,MAAM,SAAS,MAAM,QAAQ,GAAG,SAAS;CACzC,MAAM,WAAW,eAAe,OAAO,WAAW;EAChD,yBAAyB;EACzB;EACA;EACA;EACA,GAAI,QAAQ,CAAC,UAAU,GAAG,EAAE;EAC7B,CAAC;AACF,KAAI,CAAC,SACH,OAAM,IAAI,MACR,0DAA0D,MAAM,IACjE;CAGH,MAAM,UAAU,GAAG,SAAS,QAAQ,GAAG,SAAS,KAAK,KAAK,IAAI;AAC9D,KAAI,OAAO;AACT,UAAQ,IAAI,uCAAuC,QAAQ;AAC3D,UAAQ,IAAI,2BAA2B,UAAU;;AAEnD,UAAS,SAAS,EAAE,OAAO,WAAW,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { t as getRenown } from "./auth-Ch5B5mNU.mjs";
2
+ import { generateAccessToken } from "@renown/sdk/node";
3
+ //#region src/services/registry-auth.ts
4
+ /**
5
+ * Mint a Renown bearer token bound to the given registry URL via the JWT
6
+ * `aud` claim. Throws if the user is not authenticated (`ph login` first).
7
+ *
8
+ * The audience binding is what lets the registry distinguish a token minted
9
+ * for it from one minted for a different service or registry.
10
+ */
11
+ async function mintRegistryAuthToken(registryUrl, expiresInSeconds) {
12
+ const renown = await getRenown();
13
+ if (!renown.user) throw new Error("Not authenticated with Renown. Run 'ph login' first.");
14
+ return (await generateAccessToken(renown, {
15
+ expiresIn: expiresInSeconds,
16
+ aud: registryUrl
17
+ })).token;
18
+ }
19
+ //#endregion
20
+ export { mintRegistryAuthToken };
21
+
22
+ //# sourceMappingURL=registry-auth-BX9_n8hE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-auth-BX9_n8hE.mjs","names":[],"sources":["../src/services/registry-auth.ts"],"sourcesContent":["import { generateAccessToken } from \"@renown/sdk/node\";\nimport { getRenown } from \"./auth.js\";\n\n/**\n * Mint a Renown bearer token bound to the given registry URL via the JWT\n * `aud` claim. Throws if the user is not authenticated (`ph login` first).\n *\n * The audience binding is what lets the registry distinguish a token minted\n * for it from one minted for a different service or registry.\n */\nexport async function mintRegistryAuthToken(\n registryUrl: string,\n expiresInSeconds: number,\n): Promise<string> {\n const renown = await getRenown();\n if (!renown.user) {\n throw new Error(\"Not authenticated with Renown. Run 'ph login' first.\");\n }\n const result = await generateAccessToken(renown, {\n expiresIn: expiresInSeconds,\n aud: registryUrl,\n });\n return result.token;\n}\n"],"mappings":";;;;;;;;;;AAUA,eAAsB,sBACpB,aACA,kBACiB;CACjB,MAAM,SAAS,MAAM,WAAW;AAChC,KAAI,CAAC,OAAO,KACV,OAAM,IAAI,MAAM,uDAAuD;AAMzE,SAJe,MAAM,oBAAoB,QAAQ;EAC/C,WAAW;EACX,KAAK;EACN,CAAC,EACY"}
@@ -1,7 +1,13 @@
1
1
  import { writeCliDocsMarkdownFile } from "@powerhousedao/codegen/file-builders";
2
- import process from "process";
3
2
  import { accessToken } from "../src/commands/access-token.js";
4
3
  import { build, connect, preview, studio } from "../src/commands/connect.js";
4
+ import { generateAllCmd } from "../src/commands/generate-all.js";
5
+ import { generateAppCmd } from "../src/commands/generate-app.js";
6
+ import { generateDocumentModelCmd } from "../src/commands/generate-document-model.js";
7
+ import { generateEditorCmd } from "../src/commands/generate-editor.js";
8
+ import { generateMigrationFileCmd } from "../src/commands/generate-migration-file.js";
9
+ import { generateProcessorCmd } from "../src/commands/generate-processor.js";
10
+ import { generateSubgraphCmd } from "../src/commands/generate-subgraph.js";
5
11
  import { generate } from "../src/commands/generate.js";
6
12
  import { inspect } from "../src/commands/inspect.js";
7
13
  import { install } from "../src/commands/install.js";
@@ -15,6 +21,13 @@ import { vetra } from "../src/commands/vetra.js";
15
21
 
16
22
  const commands = [
17
23
  { name: "generate", command: generate },
24
+ { name: "all", command: generateAllCmd },
25
+ { name: "document-model", command: generateDocumentModelCmd },
26
+ { name: "editor", command: generateEditorCmd },
27
+ { name: "app", command: generateAppCmd },
28
+ { name: "processor", command: generateProcessorCmd },
29
+ { name: "subgraph", command: generateSubgraphCmd },
30
+ { name: "migration-file", command: generateMigrationFileCmd },
18
31
  { name: "vetra", command: vetra },
19
32
  { name: "connect", command: connect },
20
33
  { name: "connect studio", command: studio },
@@ -35,7 +48,7 @@ const cliDescription = phCli.description ?? "";
35
48
  async function main() {
36
49
  await writeCliDocsMarkdownFile({
37
50
  filePath: "COMMANDS.md",
38
- docsTitle: "Powerhouse CLI Commands",
51
+ docsTitle: `Powerhouse CLI Commands (${process.env.WORKSPACE_VERSION || process.env.npm_package_version})`,
39
52
  docsIntroduction:
40
53
  "This document provides detailed information about the available commands in the Powerhouse CLI.",
41
54
  cliDescription,
@@ -43,9 +56,4 @@ async function main() {
43
56
  });
44
57
  }
45
58
 
46
- main()
47
- .then(() => process.exit(0))
48
- .catch((e) => {
49
- console.error(e);
50
- process.exit(1);
51
- });
59
+ await main();
@@ -5,11 +5,11 @@ export NVM_DIR="$HOME/.nvm"
5
5
  [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
6
6
  [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
7
7
  nvm --version
8
- nvm install 22
8
+ nvm install 24
9
9
  curl -fsSL https://get.pnpm.io/install.sh | sh -
10
10
  export PNPM_HOME="/home/$USER/.local/share/pnpm"
11
11
  export PATH="$PNPM_HOME:$PATH"
12
- pnpm install -g ph-cmd
12
+ pnpm add -g ph-cmd
13
13
  echo ""
14
14
  echo " 🎉 Setup Complete! 🎉"
15
15
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -0,0 +1,72 @@
1
+ import path from "node:path";
2
+ import { startSwitchboard } from "@powerhousedao/switchboard/server";
3
+ //#region src/services/switchboard.ts
4
+ const defaultSwitchboardOptions = {
5
+ port: 4001,
6
+ dbPath: path.join(process.cwd(), ".ph/read-model.db"),
7
+ drive: {
8
+ id: "powerhouse",
9
+ slug: "powerhouse",
10
+ global: {
11
+ name: "Powerhouse",
12
+ icon: "https://ipfs.io/ipfs/QmcaTDBYn8X2psGaXe7iQ6qd8q6oqHLgxvMX9yXf7f9uP7"
13
+ },
14
+ local: {
15
+ availableOffline: true,
16
+ listeners: [],
17
+ sharingType: "public",
18
+ triggers: []
19
+ }
20
+ },
21
+ mcp: true
22
+ };
23
+ function getDefaultVetraSwitchboardOptions(vetraDriveId) {
24
+ return {
25
+ port: 4001,
26
+ dbPath: path.join(process.cwd(), ".ph/read-model.db"),
27
+ drive: {
28
+ id: vetraDriveId,
29
+ slug: vetraDriveId,
30
+ global: {
31
+ name: "Vetra",
32
+ icon: "https://azure-elderly-tortoise-212.mypinata.cloud/ipfs/bafkreibf2xokjqqtomqjd2w2xxmmhvogq4262csevclxh6sbrjgmjfre5u"
33
+ },
34
+ preferredEditor: "vetra-drive-app",
35
+ local: {
36
+ availableOffline: true,
37
+ listeners: [],
38
+ sharingType: "public",
39
+ triggers: []
40
+ }
41
+ }
42
+ };
43
+ }
44
+ async function startSwitchboard$1(options, logger) {
45
+ const { packages: packagesString, remoteDrives, useVetraDrive, vetraDriveId, useIdentity, keypairPath, requireIdentity, ...serverOptions } = options;
46
+ const defaultOptions = useVetraDrive ? getDefaultVetraSwitchboardOptions(vetraDriveId) : defaultSwitchboardOptions;
47
+ const identity = useIdentity || keypairPath || requireIdentity ? {
48
+ keypairPath,
49
+ requireExisting: requireIdentity
50
+ } : void 0;
51
+ const packages = packagesString?.split(",");
52
+ return await startSwitchboard(remoteDrives.length > 0 ? {
53
+ ...defaultOptions,
54
+ drive: void 0,
55
+ ...serverOptions,
56
+ remoteDrives,
57
+ identity,
58
+ packages,
59
+ logger
60
+ } : {
61
+ ...defaultOptions,
62
+ ...serverOptions,
63
+ remoteDrives,
64
+ identity,
65
+ packages,
66
+ logger
67
+ });
68
+ }
69
+ //#endregion
70
+ export { startSwitchboard$1 as n, defaultSwitchboardOptions as t };
71
+
72
+ //# sourceMappingURL=switchboard-CJMoMzWx.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchboard-CJMoMzWx.mjs","names":["startSwitchboard","startSwitchboardServer"],"sources":["../src/services/switchboard.ts"],"sourcesContent":["import type {\n IdentityOptions,\n StartServerOptions,\n} from \"@powerhousedao/switchboard/server\";\nimport { startSwitchboard as startSwitchboardServer } from \"@powerhousedao/switchboard/server\";\nimport type { ILogger } from \"document-model\";\nimport path from \"node:path\";\nimport type { SwitchboardArgs } from \"../types.js\";\n\nexport const defaultSwitchboardOptions = {\n port: 4001,\n dbPath: path.join(process.cwd(), \".ph/read-model.db\"),\n drive: {\n id: \"powerhouse\",\n slug: \"powerhouse\",\n global: {\n name: \"Powerhouse\",\n icon: \"https://ipfs.io/ipfs/QmcaTDBYn8X2psGaXe7iQ6qd8q6oqHLgxvMX9yXf7f9uP7\",\n },\n local: {\n availableOffline: true,\n listeners: [],\n sharingType: \"public\",\n triggers: [],\n },\n },\n mcp: true,\n} satisfies StartServerOptions;\n\nfunction getDefaultVetraSwitchboardOptions(\n vetraDriveId: string,\n): Partial<StartServerOptions> {\n return {\n port: 4001,\n dbPath: path.join(process.cwd(), \".ph/read-model.db\"),\n drive: {\n id: vetraDriveId,\n slug: vetraDriveId,\n global: {\n name: \"Vetra\",\n icon: \"https://azure-elderly-tortoise-212.mypinata.cloud/ipfs/bafkreibf2xokjqqtomqjd2w2xxmmhvogq4262csevclxh6sbrjgmjfre5u\",\n },\n preferredEditor: \"vetra-drive-app\",\n local: {\n availableOffline: true,\n listeners: [],\n sharingType: \"public\",\n triggers: [],\n },\n },\n };\n}\n\nexport async function startSwitchboard(\n options: SwitchboardArgs & {\n strictPort?: boolean;\n processorConfig?: Map<string, unknown>;\n },\n logger?: ILogger,\n) {\n const {\n packages: packagesString,\n remoteDrives,\n useVetraDrive,\n vetraDriveId,\n useIdentity,\n keypairPath,\n requireIdentity,\n ...serverOptions\n } = options;\n\n // Choose the appropriate default configuration\n const defaultOptions = useVetraDrive\n ? getDefaultVetraSwitchboardOptions(vetraDriveId)\n : defaultSwitchboardOptions;\n\n // Build identity options if enabled\n const identity: IdentityOptions | undefined =\n useIdentity || keypairPath || requireIdentity\n ? {\n keypairPath,\n requireExisting: requireIdentity,\n }\n : undefined;\n\n const packages = packagesString?.split(\",\");\n\n // Only include the default drive if no remote drives are provided\n const finalOptions =\n remoteDrives.length > 0\n ? {\n ...defaultOptions,\n drive: undefined, // Don't create default drive when syncing with remote\n ...serverOptions,\n remoteDrives,\n identity,\n packages,\n logger,\n }\n : {\n ...defaultOptions,\n ...serverOptions,\n remoteDrives,\n identity,\n packages,\n logger,\n };\n\n const reactor = await startSwitchboardServer(finalOptions);\n\n return reactor;\n}\n"],"mappings":";;;AASA,MAAa,4BAA4B;CACvC,MAAM;CACN,QAAQ,KAAK,KAAK,QAAQ,KAAK,EAAE,oBAAoB;CACrD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,QAAQ;GACN,MAAM;GACN,MAAM;GACP;EACD,OAAO;GACL,kBAAkB;GAClB,WAAW,EAAE;GACb,aAAa;GACb,UAAU,EAAE;GACb;EACF;CACD,KAAK;CACN;AAED,SAAS,kCACP,cAC6B;AAC7B,QAAO;EACL,MAAM;EACN,QAAQ,KAAK,KAAK,QAAQ,KAAK,EAAE,oBAAoB;EACrD,OAAO;GACL,IAAI;GACJ,MAAM;GACN,QAAQ;IACN,MAAM;IACN,MAAM;IACP;GACD,iBAAiB;GACjB,OAAO;IACL,kBAAkB;IAClB,WAAW,EAAE;IACb,aAAa;IACb,UAAU,EAAE;IACb;GACF;EACF;;AAGH,eAAsBA,mBACpB,SAIA,QACA;CACA,MAAM,EACJ,UAAU,gBACV,cACA,eACA,cACA,aACA,aACA,iBACA,GAAG,kBACD;CAGJ,MAAM,iBAAiB,gBACnB,kCAAkC,aAAa,GAC/C;CAGJ,MAAM,WACJ,eAAe,eAAe,kBAC1B;EACE;EACA,iBAAiB;EAClB,GACD,KAAA;CAEN,MAAM,WAAW,gBAAgB,MAAM,IAAI;AAyB3C,QAFgB,MAAMC,iBAnBpB,aAAa,SAAS,IAClB;EACE,GAAG;EACH,OAAO,KAAA;EACP,GAAG;EACH;EACA;EACA;EACA;EACD,GACD;EACE,GAAG;EACH,GAAG;EACH;EACA;EACA;EACA;EACD,CAEmD"}
@@ -0,0 +1,2 @@
1
+ import { n as startSwitchboard } from "./switchboard-CJMoMzWx.mjs";
2
+ export { startSwitchboard };
@@ -0,0 +1,50 @@
1
+ import { Kysely, PostgresDialect } from "kysely";
2
+ import { Pool } from "pg";
3
+ import { REACTOR_SCHEMA, getMigrationStatus, runMigrations } from "@powerhousedao/reactor";
4
+ //#region src/services/switchboard-migrate.ts
5
+ function isPostgresUrl(url) {
6
+ return url.startsWith("postgresql://") || url.startsWith("postgres://");
7
+ }
8
+ async function runSwitchboardMigrations(options) {
9
+ const dbPath = options.dbPath ?? process.env.PH_REACTOR_DATABASE_URL ?? process.env.DATABASE_URL;
10
+ if (!dbPath || !isPostgresUrl(dbPath)) {
11
+ console.log("No PostgreSQL URL configured. Skipping migrations.");
12
+ console.log("(PGlite migrations are handled automatically on startup)");
13
+ return;
14
+ }
15
+ console.log(`Database: ${dbPath}`);
16
+ const db = new Kysely({ dialect: new PostgresDialect({ pool: new Pool({ connectionString: dbPath }) }) });
17
+ try {
18
+ if (options.statusOnly) {
19
+ console.log("\nChecking migration status...");
20
+ const migrations = await getMigrationStatus(db, REACTOR_SCHEMA);
21
+ console.log("\nMigration Status:");
22
+ console.log("=================");
23
+ for (const migration of migrations) {
24
+ const status = migration.executedAt ? `[OK] Executed at ${migration.executedAt.toISOString()}` : "[--] Pending";
25
+ console.log(`${status} - ${migration.name}`);
26
+ }
27
+ } else {
28
+ console.log("\nRunning migrations...");
29
+ const result = await runMigrations(db, REACTOR_SCHEMA);
30
+ if (!result.success) {
31
+ console.error("Migration failed:", result.error?.message);
32
+ process.exit(1);
33
+ }
34
+ if (result.migrationsExecuted.length === 0) console.log("No migrations to run - database is up to date");
35
+ else {
36
+ console.log(`Successfully executed ${result.migrationsExecuted.length} migration(s):`);
37
+ for (const name of result.migrationsExecuted) console.log(` - ${name}`);
38
+ }
39
+ }
40
+ } catch (error) {
41
+ console.error("Error:", error instanceof Error ? error.message : String(error));
42
+ process.exit(1);
43
+ } finally {
44
+ await db.destroy();
45
+ }
46
+ }
47
+ //#endregion
48
+ export { runSwitchboardMigrations };
49
+
50
+ //# sourceMappingURL=switchboard-migrate-BRgCgg7N.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchboard-migrate-BRgCgg7N.mjs","names":[],"sources":["../src/services/switchboard-migrate.ts"],"sourcesContent":["import { Kysely, PostgresDialect } from \"kysely\";\nimport { Pool } from \"pg\";\nimport {\n runMigrations,\n getMigrationStatus,\n REACTOR_SCHEMA,\n} from \"@powerhousedao/reactor\";\n\ninterface MigrationOptions {\n dbPath?: string;\n statusOnly?: boolean;\n}\n\nfunction isPostgresUrl(url: string): boolean {\n return url.startsWith(\"postgresql://\") || url.startsWith(\"postgres://\");\n}\n\nexport async function runSwitchboardMigrations(\n options: MigrationOptions,\n): Promise<void> {\n const dbPath =\n options.dbPath ??\n process.env.PH_REACTOR_DATABASE_URL ??\n process.env.DATABASE_URL;\n\n if (!dbPath || !isPostgresUrl(dbPath)) {\n console.log(\"No PostgreSQL URL configured. Skipping migrations.\");\n console.log(\"(PGlite migrations are handled automatically on startup)\");\n return;\n }\n\n console.log(`Database: ${dbPath}`);\n\n const pool = new Pool({ connectionString: dbPath });\n\n const db = new Kysely<any>({\n dialect: new PostgresDialect({ pool }),\n });\n\n try {\n if (options.statusOnly) {\n console.log(\"\\nChecking migration status...\");\n const migrations = await getMigrationStatus(db, REACTOR_SCHEMA);\n\n console.log(\"\\nMigration Status:\");\n console.log(\"=================\");\n\n for (const migration of migrations) {\n const status = migration.executedAt\n ? `[OK] Executed at ${migration.executedAt.toISOString()}`\n : \"[--] Pending\";\n console.log(`${status} - ${migration.name}`);\n }\n } else {\n console.log(\"\\nRunning migrations...\");\n const result = await runMigrations(db, REACTOR_SCHEMA);\n\n if (!result.success) {\n console.error(\"Migration failed:\", result.error?.message);\n process.exit(1);\n }\n\n if (result.migrationsExecuted.length === 0) {\n console.log(\"No migrations to run - database is up to date\");\n } else {\n console.log(\n `Successfully executed ${result.migrationsExecuted.length} migration(s):`,\n );\n for (const name of result.migrationsExecuted) {\n console.log(` - ${name}`);\n }\n }\n }\n } catch (error) {\n console.error(\n \"Error:\",\n error instanceof Error ? error.message : String(error),\n );\n process.exit(1);\n } finally {\n await db.destroy();\n }\n}\n"],"mappings":";;;;AAaA,SAAS,cAAc,KAAsB;AAC3C,QAAO,IAAI,WAAW,gBAAgB,IAAI,IAAI,WAAW,cAAc;;AAGzE,eAAsB,yBACpB,SACe;CACf,MAAM,SACJ,QAAQ,UACR,QAAQ,IAAI,2BACZ,QAAQ,IAAI;AAEd,KAAI,CAAC,UAAU,CAAC,cAAc,OAAO,EAAE;AACrC,UAAQ,IAAI,qDAAqD;AACjE,UAAQ,IAAI,2DAA2D;AACvE;;AAGF,SAAQ,IAAI,aAAa,SAAS;CAIlC,MAAM,KAAK,IAAI,OAAY,EACzB,SAAS,IAAI,gBAAgB,EAAE,MAHpB,IAAI,KAAK,EAAE,kBAAkB,QAAQ,CAAC,EAGZ,CAAC,EACvC,CAAC;AAEF,KAAI;AACF,MAAI,QAAQ,YAAY;AACtB,WAAQ,IAAI,iCAAiC;GAC7C,MAAM,aAAa,MAAM,mBAAmB,IAAI,eAAe;AAE/D,WAAQ,IAAI,sBAAsB;AAClC,WAAQ,IAAI,oBAAoB;AAEhC,QAAK,MAAM,aAAa,YAAY;IAClC,MAAM,SAAS,UAAU,aACrB,oBAAoB,UAAU,WAAW,aAAa,KACtD;AACJ,YAAQ,IAAI,GAAG,OAAO,KAAK,UAAU,OAAO;;SAEzC;AACL,WAAQ,IAAI,0BAA0B;GACtC,MAAM,SAAS,MAAM,cAAc,IAAI,eAAe;AAEtD,OAAI,CAAC,OAAO,SAAS;AACnB,YAAQ,MAAM,qBAAqB,OAAO,OAAO,QAAQ;AACzD,YAAQ,KAAK,EAAE;;AAGjB,OAAI,OAAO,mBAAmB,WAAW,EACvC,SAAQ,IAAI,gDAAgD;QACvD;AACL,YAAQ,IACN,yBAAyB,OAAO,mBAAmB,OAAO,gBAC3D;AACD,SAAK,MAAM,QAAQ,OAAO,mBACxB,SAAQ,IAAI,OAAO,OAAO;;;UAIzB,OAAO;AACd,UAAQ,MACN,UACA,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CACvD;AACD,UAAQ,KAAK,EAAE;WACP;AACR,QAAM,GAAG,SAAS"}