@powerhousedao/shared 6.2.2-dev.7 → 6.2.2-dev.71

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 (224) hide show
  1. package/dist/clis/args/access-token--9H57y8J.d.mts +18 -0
  2. package/dist/clis/args/access-token--9H57y8J.d.mts.map +1 -0
  3. package/dist/clis/args/access-token-To5LaIfL.mjs +22 -0
  4. package/dist/clis/args/access-token-To5LaIfL.mjs.map +1 -0
  5. package/dist/clis/args/access-token.d.mts +2 -18
  6. package/dist/clis/args/access-token.mjs +1 -21
  7. package/dist/clis/args/{common-dbsvksvf.mjs → common-CcYbXrBx.mjs} +7 -2
  8. package/dist/clis/args/common-CcYbXrBx.mjs.map +1 -0
  9. package/dist/clis/args/{common-DfMf08ur.d.mts → common-zPBoTNJF.d.mts} +7 -4
  10. package/dist/clis/args/{common-DfMf08ur.d.mts.map → common-zPBoTNJF.d.mts.map} +1 -1
  11. package/dist/clis/args/common.d.mts +2 -2
  12. package/dist/clis/args/common.mjs +2 -2
  13. package/dist/clis/args/connect-BVVvCmL9.mjs +198 -0
  14. package/dist/clis/args/connect-BVVvCmL9.mjs.map +1 -0
  15. package/dist/clis/args/connect-BtU0MTTc.d.mts +443 -0
  16. package/dist/clis/args/connect-BtU0MTTc.d.mts.map +1 -0
  17. package/dist/clis/args/connect.d.mts +2 -434
  18. package/dist/clis/args/connect.mjs +1 -196
  19. package/dist/clis/args/{generate-Cs5okckF.mjs → generate-CA916Fvj.mjs} +2 -2
  20. package/dist/clis/args/{generate-Cs5okckF.mjs.map → generate-CA916Fvj.mjs.map} +1 -1
  21. package/dist/clis/args/generate-DnV-bfXt.d.mts +87 -0
  22. package/dist/clis/args/generate-DnV-bfXt.d.mts.map +1 -0
  23. package/dist/clis/args/generate.d.mts +2 -87
  24. package/dist/clis/args/generate.mjs +1 -1
  25. package/dist/clis/args/{help-BkF9Cxud.mjs → help-Bqbgbalu.mjs} +15 -15
  26. package/dist/clis/args/{help-BkF9Cxud.mjs.map → help-Bqbgbalu.mjs.map} +1 -1
  27. package/dist/clis/args/{help-CYjFrzIJ.d.mts → help-CjAsudUn.d.mts} +1 -1
  28. package/dist/clis/args/{help-CYjFrzIJ.d.mts.map → help-CjAsudUn.d.mts.map} +1 -1
  29. package/dist/clis/args/help.d.mts +1 -1
  30. package/dist/clis/args/help.mjs +1 -13
  31. package/dist/clis/args/index.d.mts +19 -19
  32. package/dist/clis/args/index.mjs +19 -19
  33. package/dist/clis/args/init-CUXyfquF.d.mts +55 -0
  34. package/dist/clis/args/init-CUXyfquF.d.mts.map +1 -0
  35. package/dist/clis/args/init-rz9Ei7nq.mjs +67 -0
  36. package/dist/clis/args/init-rz9Ei7nq.mjs.map +1 -0
  37. package/dist/clis/args/init.d.mts +2 -55
  38. package/dist/clis/args/init.mjs +1 -66
  39. package/dist/clis/args/inspect-DtZeoA5c.d.mts +15 -0
  40. package/dist/clis/args/inspect-DtZeoA5c.d.mts.map +1 -0
  41. package/dist/clis/args/inspect-tckH8mSw.mjs +15 -0
  42. package/dist/clis/args/inspect-tckH8mSw.mjs.map +1 -0
  43. package/dist/clis/args/inspect.d.mts +2 -15
  44. package/dist/clis/args/inspect.mjs +1 -14
  45. package/dist/clis/args/install-CkP8zcHb.d.mts +40 -0
  46. package/dist/clis/args/install-CkP8zcHb.d.mts.map +1 -0
  47. package/dist/clis/args/install-Sz2DlCHh.mjs +32 -0
  48. package/dist/clis/args/install-Sz2DlCHh.mjs.map +1 -0
  49. package/dist/clis/args/install.d.mts +2 -40
  50. package/dist/clis/args/install.mjs +1 -31
  51. package/dist/clis/args/list-BGf8s_gj.d.mts +12 -0
  52. package/dist/clis/args/list-BGf8s_gj.d.mts.map +1 -0
  53. package/dist/clis/args/list-DM2d6f1m.mjs +7 -0
  54. package/dist/clis/args/list-DM2d6f1m.mjs.map +1 -0
  55. package/dist/clis/args/list.d.mts +2 -12
  56. package/dist/clis/args/list.mjs +1 -6
  57. package/dist/clis/args/login-DNsHwvqk.d.mts +27 -0
  58. package/dist/clis/args/login-DNsHwvqk.d.mts.map +1 -0
  59. package/dist/clis/args/login-DiKT5Jfu.mjs +40 -0
  60. package/dist/clis/args/login-DiKT5Jfu.mjs.map +1 -0
  61. package/dist/clis/args/login.d.mts +2 -27
  62. package/dist/clis/args/login.mjs +1 -39
  63. package/dist/clis/args/magic-string.es-h_0HDQBQ.mjs +1013 -0
  64. package/dist/clis/args/magic-string.es-h_0HDQBQ.mjs.map +1 -0
  65. package/dist/clis/args/migrate-CG_gWc4k.mjs +29 -0
  66. package/dist/clis/args/migrate-CG_gWc4k.mjs.map +1 -0
  67. package/dist/clis/args/migrate-sixkWhxm.d.mts +21 -0
  68. package/dist/clis/args/migrate-sixkWhxm.d.mts.map +1 -0
  69. package/dist/clis/args/migrate.d.mts +2 -21
  70. package/dist/clis/args/migrate.mjs +1 -28
  71. package/dist/clis/args/publish-DDZYsUfV.mjs +19 -0
  72. package/dist/clis/args/publish-DDZYsUfV.mjs.map +1 -0
  73. package/dist/clis/args/publish-Dqe5DUst.d.mts +18 -0
  74. package/dist/clis/args/publish-Dqe5DUst.d.mts.map +1 -0
  75. package/dist/clis/args/publish.d.mts +2 -18
  76. package/dist/clis/args/publish.mjs +1 -18
  77. package/dist/clis/args/registry-C_OVFQmI.mjs +23 -0
  78. package/dist/clis/args/registry-C_OVFQmI.mjs.map +1 -0
  79. package/dist/clis/args/registry-C_RfTsKB.d.mts +19 -0
  80. package/dist/clis/args/registry-C_RfTsKB.d.mts.map +1 -0
  81. package/dist/clis/args/registry.d.mts +2 -19
  82. package/dist/clis/args/registry.mjs +1 -22
  83. package/dist/clis/args/service-CHOOr0Gg.mjs +11 -0
  84. package/dist/clis/args/service-CHOOr0Gg.mjs.map +1 -0
  85. package/dist/clis/args/{service-C88bN_g_.d.mts → service-DhIkf8-O.d.mts} +1 -1
  86. package/dist/clis/args/{service-C88bN_g_.d.mts.map → service-DhIkf8-O.d.mts.map} +1 -1
  87. package/dist/clis/args/service.d.mts +1 -1
  88. package/dist/clis/args/service.mjs +1 -10
  89. package/dist/clis/args/switchboard-BlPaq2at.d.mts +72 -0
  90. package/dist/clis/args/switchboard-BlPaq2at.d.mts.map +1 -0
  91. package/dist/clis/args/switchboard-Dsp7nosi.mjs +85 -0
  92. package/dist/clis/args/switchboard-Dsp7nosi.mjs.map +1 -0
  93. package/dist/clis/args/switchboard.d.mts +2 -72
  94. package/dist/clis/args/switchboard.mjs +1 -84
  95. package/dist/clis/args/uninstall-BpA3YYbw.d.mts +31 -0
  96. package/dist/clis/args/uninstall-BpA3YYbw.d.mts.map +1 -0
  97. package/dist/clis/args/uninstall-CTwTX0u_.mjs +16 -0
  98. package/dist/clis/args/uninstall-CTwTX0u_.mjs.map +1 -0
  99. package/dist/clis/args/uninstall.d.mts +2 -31
  100. package/dist/clis/args/uninstall.mjs +1 -15
  101. package/dist/clis/args/unpublish-BPMkGEg5.mjs +30 -0
  102. package/dist/clis/args/unpublish-BPMkGEg5.mjs.map +1 -0
  103. package/dist/clis/args/unpublish-CvwaIimG.d.mts +24 -0
  104. package/dist/clis/args/unpublish-CvwaIimG.d.mts.map +1 -0
  105. package/dist/clis/args/unpublish.d.mts +2 -24
  106. package/dist/clis/args/unpublish.mjs +1 -29
  107. package/dist/clis/args/vetra-CoMvTJK7.d.mts +113 -0
  108. package/dist/clis/args/vetra-CoMvTJK7.d.mts.map +1 -0
  109. package/dist/clis/args/vetra-b4KUu1Ax.mjs +126 -0
  110. package/dist/clis/args/vetra-b4KUu1Ax.mjs.map +1 -0
  111. package/dist/clis/args/vetra-ports.test.d.mts +1 -0
  112. package/dist/clis/args/vetra-ports.test.mjs +13249 -0
  113. package/dist/clis/args/vetra-ports.test.mjs.map +1 -0
  114. package/dist/clis/args/vetra.d.mts +2 -102
  115. package/dist/clis/args/vetra.mjs +2 -75
  116. package/dist/clis/build-config.d.mts +1 -1
  117. package/dist/clis/build-config.d.mts.map +1 -1
  118. package/dist/clis/constants.d.mts +185 -53
  119. package/dist/clis/constants.d.mts.map +1 -1
  120. package/dist/clis/constants.mjs +11 -3
  121. package/dist/clis/constants.mjs.map +1 -1
  122. package/dist/clis/index.d.mts +518 -7
  123. package/dist/clis/index.d.mts.map +1 -1
  124. package/dist/clis/index.mjs +379 -14
  125. package/dist/clis/index.mjs.map +1 -1
  126. package/dist/clis/project-env.d.mts +27 -0
  127. package/dist/clis/project-env.d.mts.map +1 -0
  128. package/dist/clis/project-env.mjs +44 -0
  129. package/dist/clis/project-env.mjs.map +1 -0
  130. package/dist/clis/project-ports.d.mts +40 -0
  131. package/dist/clis/project-ports.d.mts.map +1 -0
  132. package/dist/clis/project-ports.mjs +90 -0
  133. package/dist/clis/project-ports.mjs.map +1 -0
  134. package/dist/{config-loader-19K8n4DO.js → config-loader-Dw3syw7r.js} +10 -14
  135. package/dist/config-loader-Dw3syw7r.js.map +1 -0
  136. package/dist/connect/config-loader.d.ts +2 -1
  137. package/dist/connect/config-loader.d.ts.map +1 -1
  138. package/dist/connect/config-loader.js +1 -1
  139. package/dist/connect/index.d.ts +435 -14
  140. package/dist/connect/index.d.ts.map +1 -1
  141. package/dist/connect/index.js +498 -2
  142. package/dist/connect/index.js.map +1 -1
  143. package/dist/connect/json-adapter.d.ts.map +1 -1
  144. package/dist/{constants-C_EQX4DY.d.ts → constants-BP_gjn8g.d.ts} +1 -1
  145. package/dist/constants-BP_gjn8g.d.ts.map +1 -0
  146. package/dist/constants.d.ts +1 -1
  147. package/dist/document-drive/index.d.ts +2 -2
  148. package/dist/document-model/index.d.ts +4 -5
  149. package/dist/document-model/index.js +1302 -131
  150. package/dist/document-model/index.js.map +1 -1
  151. package/dist/document-model/mock.d.ts +22 -2
  152. package/dist/document-model/mock.d.ts.map +1 -0
  153. package/dist/document-model/mock.js +32 -3
  154. package/dist/document-model/mock.js.map +1 -1
  155. package/dist/document-model/utils.d.ts +1 -2
  156. package/dist/document-model/utils.js +1 -2
  157. package/dist/{index-CQDIrK1k.d.ts → index-C_iVZe7f.d.ts} +1 -1
  158. package/dist/index-C_iVZe7f.d.ts.map +1 -0
  159. package/dist/index-XtLa2ItI.d.ts +814 -0
  160. package/dist/index-XtLa2ItI.d.ts.map +1 -0
  161. package/dist/index.d.ts +5 -6
  162. package/dist/processors/index.d.ts +2 -2
  163. package/dist/registry/index.d.ts +5 -4
  164. package/dist/registry/index.d.ts.map +1 -1
  165. package/dist/registry/index.js +9 -8
  166. package/dist/registry/index.js.map +1 -1
  167. package/dist/registry/manifest-slim.d.ts +1 -1
  168. package/dist/registry/urls.d.ts +11 -0
  169. package/dist/registry/urls.d.ts.map +1 -0
  170. package/dist/registry/urls.js +15 -0
  171. package/dist/registry/urls.js.map +1 -0
  172. package/dist/{types-DXsYu6Tq.d.ts → types-BWwUHbmn.d.ts} +464 -15
  173. package/dist/types-BWwUHbmn.d.ts.map +1 -0
  174. package/dist/{types-DvWPqxJr.d.ts → types-DagTInbG.d.ts} +29 -3
  175. package/dist/{types-DvWPqxJr.d.ts.map → types-DagTInbG.d.ts.map} +1 -1
  176. package/dist/utils-DP122OSS.d.ts +18 -0
  177. package/dist/utils-DP122OSS.d.ts.map +1 -0
  178. package/dist/{utils-DKOFCM0Q.js → utils-aaTmfxFW.js} +45 -2
  179. package/dist/utils-aaTmfxFW.js.map +1 -0
  180. package/package.json +12 -1
  181. package/dist/clis/args/access-token.d.mts.map +0 -1
  182. package/dist/clis/args/access-token.mjs.map +0 -1
  183. package/dist/clis/args/common-dbsvksvf.mjs.map +0 -1
  184. package/dist/clis/args/connect.d.mts.map +0 -1
  185. package/dist/clis/args/connect.mjs.map +0 -1
  186. package/dist/clis/args/generate.d.mts.map +0 -1
  187. package/dist/clis/args/init.d.mts.map +0 -1
  188. package/dist/clis/args/init.mjs.map +0 -1
  189. package/dist/clis/args/inspect.d.mts.map +0 -1
  190. package/dist/clis/args/inspect.mjs.map +0 -1
  191. package/dist/clis/args/install.d.mts.map +0 -1
  192. package/dist/clis/args/install.mjs.map +0 -1
  193. package/dist/clis/args/list.d.mts.map +0 -1
  194. package/dist/clis/args/list.mjs.map +0 -1
  195. package/dist/clis/args/login.d.mts.map +0 -1
  196. package/dist/clis/args/login.mjs.map +0 -1
  197. package/dist/clis/args/migrate.d.mts.map +0 -1
  198. package/dist/clis/args/migrate.mjs.map +0 -1
  199. package/dist/clis/args/publish.d.mts.map +0 -1
  200. package/dist/clis/args/publish.mjs.map +0 -1
  201. package/dist/clis/args/registry.d.mts.map +0 -1
  202. package/dist/clis/args/registry.mjs.map +0 -1
  203. package/dist/clis/args/service.mjs.map +0 -1
  204. package/dist/clis/args/switchboard.d.mts.map +0 -1
  205. package/dist/clis/args/switchboard.mjs.map +0 -1
  206. package/dist/clis/args/uninstall.d.mts.map +0 -1
  207. package/dist/clis/args/uninstall.mjs.map +0 -1
  208. package/dist/clis/args/unpublish.d.mts.map +0 -1
  209. package/dist/clis/args/unpublish.mjs.map +0 -1
  210. package/dist/clis/args/vetra.d.mts.map +0 -1
  211. package/dist/clis/args/vetra.mjs.map +0 -1
  212. package/dist/config-loader-19K8n4DO.js.map +0 -1
  213. package/dist/constants-C_EQX4DY.d.ts.map +0 -1
  214. package/dist/index-CQDIrK1k.d.ts.map +0 -1
  215. package/dist/index-Dz7JrBXs.d.ts +0 -399
  216. package/dist/index-Dz7JrBXs.d.ts.map +0 -1
  217. package/dist/mock-CBcf78ra.d.ts +0 -7
  218. package/dist/mock-CBcf78ra.d.ts.map +0 -1
  219. package/dist/types-D0NNBVGA.d.ts +0 -167
  220. package/dist/types-D0NNBVGA.d.ts.map +0 -1
  221. package/dist/types-DXsYu6Tq.d.ts.map +0 -1
  222. package/dist/utils-BEByNOHo.d.ts +0 -9
  223. package/dist/utils-BEByNOHo.d.ts.map +0 -1
  224. package/dist/utils-DKOFCM0Q.js.map +0 -1
@@ -0,0 +1,27 @@
1
+ //#region clis/project-env.d.ts
2
+ /**
3
+ * Load the project's `.env.local` and `.env` into `process.env`.
4
+ *
5
+ * `dotenv` never overwrites a variable that is already set, so loading
6
+ * `.env.local` first and `.env` second produces the precedence the CLI
7
+ * documents: a real `process.env` value beats `.env.local`, which beats
8
+ * `.env`. One `process.env` lookup afterwards therefore covers all three
9
+ * sources.
10
+ *
11
+ * Idempotent per directory — CLI argument defaults call it lazily and may
12
+ * call it more than once per process.
13
+ */
14
+ declare function loadProjectEnv(cwd?: string): void;
15
+ /** Test seam: forget which directory has already been loaded. */
16
+ declare function resetProjectEnvForTests(): void;
17
+ /**
18
+ * Read an environment variable as a TCP port.
19
+ *
20
+ * Anything that is not a plain integer in 1-65535 is ignored rather than
21
+ * throwing: a typo in `.env` should fall through to the next source in the
22
+ * precedence chain, not break the CLI.
23
+ */
24
+ declare function readPortEnv(name: string): number | undefined;
25
+ //#endregion
26
+ export { loadProjectEnv, readPortEnv, resetProjectEnvForTests };
27
+ //# sourceMappingURL=project-env.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-env.d.mts","names":[],"sources":["../../clis/project-env.ts"],"mappings":";;AAiBA;;;;;AAUA;;;;;AAWA;iBArBgB,cAAA,CAAe,GAAA;;iBAUf,uBAAA,CAAA;;;;;;;;iBAWA,WAAA,CAAY,IAAA"}
@@ -0,0 +1,44 @@
1
+ import { join } from "node:path";
2
+ import dotenv from "dotenv";
3
+ //#region clis/project-env.ts
4
+ let loadedFor;
5
+ /**
6
+ * Load the project's `.env.local` and `.env` into `process.env`.
7
+ *
8
+ * `dotenv` never overwrites a variable that is already set, so loading
9
+ * `.env.local` first and `.env` second produces the precedence the CLI
10
+ * documents: a real `process.env` value beats `.env.local`, which beats
11
+ * `.env`. One `process.env` lookup afterwards therefore covers all three
12
+ * sources.
13
+ *
14
+ * Idempotent per directory — CLI argument defaults call it lazily and may
15
+ * call it more than once per process.
16
+ */
17
+ function loadProjectEnv(cwd = process.cwd()) {
18
+ if (loadedFor === cwd) return;
19
+ loadedFor = cwd;
20
+ dotenv.config({ path: join(cwd, ".env.local") });
21
+ dotenv.config({ path: join(cwd, ".env") });
22
+ }
23
+ /** Test seam: forget which directory has already been loaded. */
24
+ function resetProjectEnvForTests() {
25
+ loadedFor = void 0;
26
+ }
27
+ /**
28
+ * Read an environment variable as a TCP port.
29
+ *
30
+ * Anything that is not a plain integer in 1-65535 is ignored rather than
31
+ * throwing: a typo in `.env` should fall through to the next source in the
32
+ * precedence chain, not break the CLI.
33
+ */
34
+ function readPortEnv(name) {
35
+ const raw = process.env[name]?.trim();
36
+ if (!raw || !/^\d+$/.test(raw)) return void 0;
37
+ const port = Number(raw);
38
+ if (port < 1 || port > 65535) return void 0;
39
+ return port;
40
+ }
41
+ //#endregion
42
+ export { loadProjectEnv, readPortEnv, resetProjectEnvForTests };
43
+
44
+ //# sourceMappingURL=project-env.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-env.mjs","names":[],"sources":["../../clis/project-env.ts"],"sourcesContent":["import dotenv from \"dotenv\";\nimport { join } from \"node:path\";\n\nlet loadedFor: string | undefined;\n\n/**\n * Load the project's `.env.local` and `.env` into `process.env`.\n *\n * `dotenv` never overwrites a variable that is already set, so loading\n * `.env.local` first and `.env` second produces the precedence the CLI\n * documents: a real `process.env` value beats `.env.local`, which beats\n * `.env`. One `process.env` lookup afterwards therefore covers all three\n * sources.\n *\n * Idempotent per directory — CLI argument defaults call it lazily and may\n * call it more than once per process.\n */\nexport function loadProjectEnv(cwd: string = process.cwd()): void {\n if (loadedFor === cwd) return;\n loadedFor = cwd;\n // dotenv 16 logs nothing for a missing file, so no suppression option is\n // needed here (and none exists before dotenv 17).\n dotenv.config({ path: join(cwd, \".env.local\") });\n dotenv.config({ path: join(cwd, \".env\") });\n}\n\n/** Test seam: forget which directory has already been loaded. */\nexport function resetProjectEnvForTests(): void {\n loadedFor = undefined;\n}\n\n/**\n * Read an environment variable as a TCP port.\n *\n * Anything that is not a plain integer in 1-65535 is ignored rather than\n * throwing: a typo in `.env` should fall through to the next source in the\n * precedence chain, not break the CLI.\n */\nexport function readPortEnv(name: string): number | undefined {\n const raw = process.env[name]?.trim();\n if (!raw || !/^\\d+$/.test(raw)) return undefined;\n const port = Number(raw);\n if (port < 1 || port > 65535) return undefined;\n return port;\n}\n"],"mappings":";;;AAGA,IAAI;;;;;;;;;;;;;AAcJ,SAAgB,eAAe,MAAc,QAAQ,KAAK,EAAQ;AAChE,KAAI,cAAc,IAAK;AACvB,aAAY;AAGZ,QAAO,OAAO,EAAE,MAAM,KAAK,KAAK,aAAa,EAAE,CAAC;AAChD,QAAO,OAAO,EAAE,MAAM,KAAK,KAAK,OAAO,EAAE,CAAC;;;AAI5C,SAAgB,0BAAgC;AAC9C,aAAY,KAAA;;;;;;;;;AAUd,SAAgB,YAAY,MAAkC;CAC5D,MAAM,MAAM,QAAQ,IAAI,OAAO,MAAM;AACrC,KAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAE,QAAO,KAAA;CACvC,MAAM,OAAO,OAAO,IAAI;AACxB,KAAI,OAAO,KAAK,OAAO,MAAO,QAAO,KAAA;AACrC,QAAO"}
@@ -0,0 +1,40 @@
1
+ //#region clis/project-ports.d.ts
2
+ type ProjectPorts = {
3
+ switchboardPort: number;
4
+ studioPort: number;
5
+ vetraConnectPort: number;
6
+ };
7
+ /**
8
+ * Offsets whose derived port would land on something a developer machine
9
+ * plausibly already holds. Skipped rather than assigned, so a project never
10
+ * starts life needing a port override.
11
+ *
12
+ * Two sources: ports the Powerhouse repos themselves reference inside these
13
+ * bands, and well-known services. Being generous here is nearly free — the
14
+ * whole list costs 83 of 1000 offsets.
15
+ */
16
+ declare const PROJECT_PORT_DENYLIST: ReadonlySet<number>;
17
+ /**
18
+ * Derive a project's dev-server port triple from its package name.
19
+ *
20
+ * Name-derived rather than path-derived on purpose: the switchboard port is
21
+ * written literally into the project's committed `.mcp.json`, because an MCP
22
+ * client resolves that file at session start and cannot read the project
23
+ * config or `.env`. A path-derived value would differ on every machine that
24
+ * clones the repo.
25
+ *
26
+ * The three ports share one offset, so a project's numbers end in the same
27
+ * three digits (`my-package` gets 7834 / 6834 / 2834). When any of the three
28
+ * would hit {@link PROJECT_PORT_DENYLIST}, the offset advances deterministically
29
+ * until all three are clear — so the result stays reproducible from the name
30
+ * alone.
31
+ */
32
+ declare function deriveProjectPorts(projectName: string): ProjectPorts;
33
+ /** Every port this scheme can hand out, for cross-checking against other tools. */
34
+ declare function projectPortBands(): {
35
+ from: number;
36
+ to: number;
37
+ }[];
38
+ //#endregion
39
+ export { PROJECT_PORT_DENYLIST, ProjectPorts, deriveProjectPorts, projectPortBands };
40
+ //# sourceMappingURL=project-ports.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-ports.d.mts","names":[],"sources":["../../clis/project-ports.ts"],"mappings":";KAQY,YAAA;EACV,eAAA;EACA,UAAA;EACA,gBAAA;AAAA;;;;;;AAsBF;;;;cAAa,qBAAA,EAAuB,WAAA;AAuDpC;;;;;AAsBA;;;;;;;;;;AAtBA,iBAAgB,kBAAA,CAAmB,WAAA,WAAsB,YAAA;;iBAsBzC,gBAAA,CAAA;EAAsB,IAAA;EAAc,EAAA;AAAA"}
@@ -0,0 +1,90 @@
1
+ import { PROJECT_PORT_BAND_SIZE, PROJECT_PORT_BAND_STUDIO, PROJECT_PORT_BAND_SWITCHBOARD, PROJECT_PORT_BAND_VETRA_CONNECT } from "./constants.mjs";
2
+ import fnv1a from "@sindresorhus/fnv1a";
3
+ //#region clis/project-ports.ts
4
+ const BANDS = [
5
+ PROJECT_PORT_BAND_SWITCHBOARD,
6
+ PROJECT_PORT_BAND_STUDIO,
7
+ PROJECT_PORT_BAND_VETRA_CONNECT
8
+ ];
9
+ function inclusive(from, to) {
10
+ return Array.from({ length: to - from + 1 }, (_, i) => from + i);
11
+ }
12
+ /**
13
+ * Offsets whose derived port would land on something a developer machine
14
+ * plausibly already holds. Skipped rather than assigned, so a project never
15
+ * starts life needing a port override.
16
+ *
17
+ * Two sources: ports the Powerhouse repos themselves reference inside these
18
+ * bands, and well-known services. Being generous here is nearly free — the
19
+ * whole list costs 83 of 1000 offsets.
20
+ */
21
+ const PROJECT_PORT_DENYLIST = new Set([
22
+ 2e3,
23
+ 2049,
24
+ 2181,
25
+ 2222,
26
+ 2375,
27
+ 2376,
28
+ 2377,
29
+ 2483,
30
+ 2484,
31
+ ...inclusive(6e3, 6063),
32
+ 6006,
33
+ 6060,
34
+ 6100,
35
+ 6200,
36
+ 6300,
37
+ 6500,
38
+ 6379,
39
+ 6443,
40
+ 6666,
41
+ 6667,
42
+ 7e3,
43
+ 7001,
44
+ 7077,
45
+ 7474,
46
+ 7687,
47
+ 7777
48
+ ]);
49
+ function portsForOffset(offset) {
50
+ return {
51
+ switchboardPort: PROJECT_PORT_BAND_SWITCHBOARD + offset,
52
+ studioPort: PROJECT_PORT_BAND_STUDIO + offset,
53
+ vetraConnectPort: PROJECT_PORT_BAND_VETRA_CONNECT + offset
54
+ };
55
+ }
56
+ /**
57
+ * Derive a project's dev-server port triple from its package name.
58
+ *
59
+ * Name-derived rather than path-derived on purpose: the switchboard port is
60
+ * written literally into the project's committed `.mcp.json`, because an MCP
61
+ * client resolves that file at session start and cannot read the project
62
+ * config or `.env`. A path-derived value would differ on every machine that
63
+ * clones the repo.
64
+ *
65
+ * The three ports share one offset, so a project's numbers end in the same
66
+ * three digits (`my-package` gets 7834 / 6834 / 2834). When any of the three
67
+ * would hit {@link PROJECT_PORT_DENYLIST}, the offset advances deterministically
68
+ * until all three are clear — so the result stays reproducible from the name
69
+ * alone.
70
+ */
71
+ function deriveProjectPorts(projectName) {
72
+ if (!projectName.trim()) throw new Error("A project name is required to derive project ports.");
73
+ const start = Number(fnv1a(projectName, { size: 32 }) % BigInt(PROJECT_PORT_BAND_SIZE));
74
+ for (let step = 0; step < PROJECT_PORT_BAND_SIZE; step++) {
75
+ const ports = portsForOffset((start + step) % PROJECT_PORT_BAND_SIZE);
76
+ if (!Object.values(ports).some((port) => PROJECT_PORT_DENYLIST.has(port))) return ports;
77
+ }
78
+ throw new Error(`No free port offset for project "${projectName}" — every offset in the ${PROJECT_PORT_BAND_SIZE}-wide band is denied.`);
79
+ }
80
+ /** Every port this scheme can hand out, for cross-checking against other tools. */
81
+ function projectPortBands() {
82
+ return BANDS.map((base) => ({
83
+ from: base,
84
+ to: base + PROJECT_PORT_BAND_SIZE - 1
85
+ }));
86
+ }
87
+ //#endregion
88
+ export { PROJECT_PORT_DENYLIST, deriveProjectPorts, projectPortBands };
89
+
90
+ //# sourceMappingURL=project-ports.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-ports.mjs","names":[],"sources":["../../clis/project-ports.ts"],"sourcesContent":["import fnv1a from \"@sindresorhus/fnv1a\";\nimport {\n PROJECT_PORT_BAND_SIZE,\n PROJECT_PORT_BAND_STUDIO,\n PROJECT_PORT_BAND_SWITCHBOARD,\n PROJECT_PORT_BAND_VETRA_CONNECT,\n} from \"./constants.js\";\n\nexport type ProjectPorts = {\n switchboardPort: number;\n studioPort: number;\n vetraConnectPort: number;\n};\n\nconst BANDS = [\n PROJECT_PORT_BAND_SWITCHBOARD,\n PROJECT_PORT_BAND_STUDIO,\n PROJECT_PORT_BAND_VETRA_CONNECT,\n] as const;\n\nfunction inclusive(from: number, to: number): number[] {\n return Array.from({ length: to - from + 1 }, (_, i) => from + i);\n}\n\n/**\n * Offsets whose derived port would land on something a developer machine\n * plausibly already holds. Skipped rather than assigned, so a project never\n * starts life needing a port override.\n *\n * Two sources: ports the Powerhouse repos themselves reference inside these\n * bands, and well-known services. Being generous here is nearly free — the\n * whole list costs 83 of 1000 offsets.\n */\nexport const PROJECT_PORT_DENYLIST: ReadonlySet<number> = new Set<number>([\n // 2000 band\n 2000, // Cisco SCCP\n 2049, // NFS\n 2181, // ZooKeeper\n 2222, // alternate SSH\n 2375,\n 2376,\n 2377, // Docker daemon and Swarm\n 2483,\n 2484, // Oracle DB\n // 6000 band\n ...inclusive(6000, 6063), // X11 TCP listeners\n 6006, // Storybook / TensorBoard\n 6060, // Go pprof\n 6100,\n 6200,\n 6300,\n 6500, // referenced elsewhere in the Powerhouse repos\n 6379, // Redis\n 6443, // Kubernetes API server\n 6666,\n 6667, // IRC\n // 7000 band\n 7000,\n 7001, // macOS AirPlay receiver / Cassandra\n 7077, // Spark\n 7474,\n 7687, // Neo4j HTTP and Bolt\n 7777, // referenced elsewhere in the Powerhouse repos\n]);\n\nfunction portsForOffset(offset: number): ProjectPorts {\n return {\n switchboardPort: PROJECT_PORT_BAND_SWITCHBOARD + offset,\n studioPort: PROJECT_PORT_BAND_STUDIO + offset,\n vetraConnectPort: PROJECT_PORT_BAND_VETRA_CONNECT + offset,\n };\n}\n\n/**\n * Derive a project's dev-server port triple from its package name.\n *\n * Name-derived rather than path-derived on purpose: the switchboard port is\n * written literally into the project's committed `.mcp.json`, because an MCP\n * client resolves that file at session start and cannot read the project\n * config or `.env`. A path-derived value would differ on every machine that\n * clones the repo.\n *\n * The three ports share one offset, so a project's numbers end in the same\n * three digits (`my-package` gets 7834 / 6834 / 2834). When any of the three\n * would hit {@link PROJECT_PORT_DENYLIST}, the offset advances deterministically\n * until all three are clear — so the result stays reproducible from the name\n * alone.\n */\nexport function deriveProjectPorts(projectName: string): ProjectPorts {\n if (!projectName.trim()) {\n throw new Error(\"A project name is required to derive project ports.\");\n }\n const start = Number(\n fnv1a(projectName, { size: 32 }) % BigInt(PROJECT_PORT_BAND_SIZE),\n );\n for (let step = 0; step < PROJECT_PORT_BAND_SIZE; step++) {\n const offset = (start + step) % PROJECT_PORT_BAND_SIZE;\n const ports = portsForOffset(offset);\n if (!Object.values(ports).some((port) => PROJECT_PORT_DENYLIST.has(port))) {\n return ports;\n }\n }\n // Unreachable: the denylist covers far fewer offsets than the band holds.\n throw new Error(\n `No free port offset for project \"${projectName}\" — every offset in the ` +\n `${PROJECT_PORT_BAND_SIZE}-wide band is denied.`,\n );\n}\n\n/** Every port this scheme can hand out, for cross-checking against other tools. */\nexport function projectPortBands(): { from: number; to: number }[] {\n return BANDS.map((base) => ({\n from: base,\n to: base + PROJECT_PORT_BAND_SIZE - 1,\n }));\n}\n"],"mappings":";;;AAcA,MAAM,QAAQ;CACZ;CACA;CACA;CACD;AAED,SAAS,UAAU,MAAc,IAAsB;AACrD,QAAO,MAAM,KAAK,EAAE,QAAQ,KAAK,OAAO,GAAG,GAAG,GAAG,MAAM,OAAO,EAAE;;;;;;;;;;;AAYlE,MAAa,wBAA6C,IAAI,IAAY;CAExE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,GAAG,UAAU,KAAM,KAAK;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,eAAe,QAA8B;AACpD,QAAO;EACL,iBAAiB,gCAAgC;EACjD,YAAY,2BAA2B;EACvC,kBAAkB,kCAAkC;EACrD;;;;;;;;;;;;;;;;;AAkBH,SAAgB,mBAAmB,aAAmC;AACpE,KAAI,CAAC,YAAY,MAAM,CACrB,OAAM,IAAI,MAAM,sDAAsD;CAExE,MAAM,QAAQ,OACZ,MAAM,aAAa,EAAE,MAAM,IAAI,CAAC,GAAG,OAAO,uBAAuB,CAClE;AACD,MAAK,IAAI,OAAO,GAAG,OAAO,wBAAwB,QAAQ;EAExD,MAAM,QAAQ,gBADE,QAAQ,QAAQ,uBACI;AACpC,MAAI,CAAC,OAAO,OAAO,MAAM,CAAC,MAAM,SAAS,sBAAsB,IAAI,KAAK,CAAC,CACvE,QAAO;;AAIX,OAAM,IAAI,MACR,oCAAoC,YAAY,0BAC3C,uBAAuB,uBAC7B;;;AAIH,SAAgB,mBAAmD;AACjE,QAAO,MAAM,KAAK,UAAU;EAC1B,MAAM;EACN,IAAI,OAAO,yBAAyB;EACrC,EAAE"}
@@ -1,17 +1,7 @@
1
1
  import { isPlainObject } from "remeda";
2
2
  //#region connect/runtime-config.ts
3
- /**
4
- * Default values for every Connect-relevant field. Merged with the
5
- * `connect.*` block of whatever `powerhouse.config.json` Connect is pointed
6
- * at, so the SPA never has to guard against undefined fields.
7
- *
8
- * Scoped to fields Connect actually reads at runtime — build-time concerns
9
- * (studio port, switchboard port, reactor.*, auth.*) live in the source
10
- * config but are not Connect's business and not represented here.
11
- *
12
- * Single source of truth for defaults across Connect's runtime read (via
13
- * ConfigLoader merge), the dist emitter, and the codegen scaffold template.
14
- */
3
+ /** Defaults for every field Connect reads at runtime, merged into the
4
+ * `connect.*` block at boot; also the dist emitter's and the scaffold's base. */
15
5
  const DEFAULT_CONNECT_CONFIG = {
16
6
  branding: {
17
7
  appName: "Powerhouse Connect",
@@ -56,7 +46,13 @@ const DEFAULT_CONNECT_CONFIG = {
56
46
  instance: {
57
47
  namespace: null,
58
48
  reactorWorker: false
59
- }
49
+ },
50
+ reactor: { featureFlags: {
51
+ documentDecisions: false,
52
+ authEnforcement: false,
53
+ authGroups: false,
54
+ authConditions: false
55
+ } }
60
56
  };
61
57
  function buildRuntimeConfig(source, projectInfo) {
62
58
  const result = {
@@ -147,4 +143,4 @@ var ConfigLoader = class {
147
143
  //#endregion
148
144
  export { buildRuntimeConfig as i, deepMerge as n, DEFAULT_CONNECT_CONFIG as r, ConfigLoader as t };
149
145
 
150
- //# sourceMappingURL=config-loader-19K8n4DO.js.map
146
+ //# sourceMappingURL=config-loader-Dw3syw7r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-Dw3syw7r.js","names":[],"sources":["../connect/runtime-config.ts","../connect/config-loader.ts"],"sourcesContent":["import type {\n PHConnectRuntimeConfig,\n PowerhouseConfig,\n PowerhousePackage,\n} from \"../clis/types.js\";\n\nexport type RuntimePowerhouseConfig = {\n schemaVersion: 2;\n packages: PowerhousePackage[];\n packageRegistryUrl?: string;\n localPackage: { name: string; version: string } | null;\n connect: PHConnectRuntimeConfig;\n};\n\n/** Defaults for every field Connect reads at runtime, merged into the\n * `connect.*` block at boot; also the dist emitter's and the scaffold's base. */\nexport const DEFAULT_CONNECT_CONFIG: PHConnectRuntimeConfig = {\n branding: {\n appName: \"Powerhouse Connect\",\n homeBackground: null,\n },\n app: {\n logLevel: \"info\",\n basePath: \"/\",\n offline: true,\n studioMode: false,\n },\n packages: {\n externalEnabled: true,\n liveReload: false,\n },\n drives: {\n allowAddDrive: true,\n defaultDrives: [],\n sections: {\n remote: { enabled: true, allowAdd: true, allowDelete: true },\n local: { enabled: true, allowAdd: true, allowDelete: true },\n },\n },\n renown: {\n url: \"https://www.renown.id\",\n networkId: \"eip155\",\n chainId: 1,\n },\n sentry: {\n // `dsn: null` is the disabled-Sentry state — the SPA never loads the\n // Sentry SDK chunk. Override via `ph connect config --sentry-dsn ...`\n // or by including `connect.sentry.dsn` in PH_CONNECT_CONFIG_JSON.\n dsn: null,\n env: \"dev\",\n tracing: false,\n },\n instance: {\n namespace: null,\n reactorWorker: false,\n },\n reactor: {\n featureFlags: {\n documentDecisions: false,\n authEnforcement: false,\n authGroups: false,\n authConditions: false,\n },\n },\n};\n\nexport function buildRuntimeConfig(\n source: Pick<PowerhouseConfig, \"packages\" | \"connect\" | \"packageRegistryUrl\">,\n projectInfo: { name: string; version: string } | null,\n): RuntimePowerhouseConfig {\n const result: RuntimePowerhouseConfig = {\n schemaVersion: 2,\n packages: source.packages ?? [],\n localPackage: projectInfo,\n connect: source.connect ?? {},\n };\n if (\n typeof source.packageRegistryUrl === \"string\" &&\n source.packageRegistryUrl !== \"\"\n ) {\n result.packageRegistryUrl = source.packageRegistryUrl;\n }\n return result;\n}\n","// Environment-neutral config loader. Wraps a `ConfigAdapter` (the IO layer)\n// with in-process caching and deep-merge-with-defaults reads.\n//\n// No validation. The loader trusts that whatever bytes the adapter returns\n// can be merged into the default Connect config; missing or partial fields\n// fall back to DEFAULT_CONNECT_CONFIG, so the SPA always sees a complete\n// `connect.*` block.\n//\n// Top-level fields outside `connect.*` (e.g. `studio.port` in the source\n// powerhouse.config.json) pass through untouched on both read and write.\n// They're not Connect's concern, but a write-back round-trip preserves\n// them so editing tools don't accidentally drop them.\n\nimport { isPlainObject } from \"remeda\";\nimport type { PHConnectRuntimeConfig } from \"../clis/types.js\";\nimport { DEFAULT_CONNECT_CONFIG } from \"./runtime-config.js\";\n\n/** Recursive Partial. Arrays are leaves — `write({ packages: [...] })`\n * replaces the array, it doesn't merge. */\nexport type DeepPartial<T> =\n T extends Array<infer U>\n ? Array<U>\n : T extends object\n ? { [K in keyof T]?: DeepPartial<T[K]> }\n : T;\n\n/**\n * Shape returned by `ConfigLoader.read()`. The loader is Connect-scoped:\n * it guarantees `connect` is present and fully populated from\n * DEFAULT_CONNECT_CONFIG, but lets any other top-level fields pass\n * through unchanged so source-config-only fields (studio, reactor, auth,\n * documentModelsDir, etc.) survive a read+write round-trip.\n */\nexport type ConfigShape = Record<string, unknown> & {\n connect: PHConnectRuntimeConfig;\n};\n\n/**\n * Abstract IO layer for `powerhouse.config.json`.\n *\n * Implementations decide where bytes come from and go to. The shipped\n * adapter is `JsonConfigAdapter` (reads via fetch in the browser, fs in\n * Node; writes via fs in Node, throws in the browser). Future adapters\n * (remote-JSON, GraphQL) plug in without changing the loader or any\n * consumer.\n */\nexport interface ConfigAdapter {\n /** Read raw JSON-parsed payload from the backing store. */\n read(): Promise<unknown>;\n /** Persist a fully-formed config. */\n write(next: ConfigShape): Promise<void>;\n /** Human-readable description used in errors and logs. */\n readonly source: string;\n}\n\n/**\n * Deep-merge `patch` into `base`. Object fields recurse; arrays and\n * primitives replace. `undefined` in patch leaves the base value\n * untouched (no unset). `null` in patch overwrites with null.\n *\n * Exported for unit tests; consumers use ConfigLoader.write() which\n * applies this internally.\n */\nexport function deepMerge<T>(base: T, patch: DeepPartial<T>): T {\n if (!isPlainObject(base) || !isPlainObject(patch)) {\n return patch as T;\n }\n const result: Record<string, unknown> = { ...base };\n for (const [key, patchValue] of Object.entries(patch)) {\n if (patchValue === undefined) continue;\n const baseValue = result[key];\n if (isPlainObject(baseValue) && isPlainObject(patchValue)) {\n result[key] = deepMerge(\n baseValue,\n patchValue as DeepPartial<typeof baseValue>,\n );\n } else {\n result[key] = patchValue;\n }\n }\n return result as T;\n}\n\n/**\n * Pluggable loader on top of a `ConfigAdapter`.\n *\n * Responsibilities:\n * - merge-with-defaults on read (so consumers never see a partial connect block)\n * - in-process caching (call `invalidate()` to force re-read)\n * - deep-merge for partial writes; writes the merged whole back through the adapter\n *\n * The cache is module-instance scoped — every `new ConfigLoader(...)` has\n * its own cache. The browser SPA constructs the loader once at boot; the\n * CLI typically constructs a fresh loader per command.\n */\nexport class ConfigLoader {\n private cache: ConfigShape | undefined;\n\n constructor(\n private readonly adapter: ConfigAdapter,\n private readonly defaults: PHConnectRuntimeConfig = DEFAULT_CONNECT_CONFIG,\n ) {}\n\n /** Returns the config with the default connect block merged in.\n * Cached after the first successful call. */\n async read(): Promise<ConfigShape> {\n if (this.cache) return this.cache;\n const raw = await this.adapter.read();\n const obj = isPlainObject(raw) ? raw : {};\n const connectRaw = isPlainObject(obj.connect) ? obj.connect : {};\n this.cache = {\n ...obj,\n connect: deepMerge(\n this.defaults,\n connectRaw as DeepPartial<PHConnectRuntimeConfig>,\n ),\n };\n return this.cache;\n }\n\n /**\n * Returns the cached config synchronously. Throws if `read()` has not\n * resolved yet — matches Connect's `getRuntimeConfig()` shape.\n */\n getCached(): ConfigShape {\n if (!this.cache) {\n throw new Error(\n `ConfigLoader (${this.adapter.source}): cache empty; call read() first.`,\n );\n }\n return this.cache;\n }\n\n /** Drop the in-memory cache. Next `read()` re-fetches from the adapter. */\n invalidate(): void {\n this.cache = undefined;\n }\n\n /**\n * Deep-merge `patch` into the current config and persist via the adapter.\n * Returns the new full config (also updates the cache). Arrays in `patch`\n * replace — they do NOT append.\n */\n async write(patch: DeepPartial<ConfigShape>): Promise<ConfigShape> {\n const current = await this.read();\n const next = deepMerge(current, patch);\n await this.adapter.write(next);\n this.cache = next;\n return next;\n }\n}\n"],"mappings":";;;;AAgBA,MAAa,yBAAiD;CAC5D,UAAU;EACR,SAAS;EACT,gBAAgB;EACjB;CACD,KAAK;EACH,UAAU;EACV,UAAU;EACV,SAAS;EACT,YAAY;EACb;CACD,UAAU;EACR,iBAAiB;EACjB,YAAY;EACb;CACD,QAAQ;EACN,eAAe;EACf,eAAe,EAAE;EACjB,UAAU;GACR,QAAQ;IAAE,SAAS;IAAM,UAAU;IAAM,aAAa;IAAM;GAC5D,OAAO;IAAE,SAAS;IAAM,UAAU;IAAM,aAAa;IAAM;GAC5D;EACF;CACD,QAAQ;EACN,KAAK;EACL,WAAW;EACX,SAAS;EACV;CACD,QAAQ;EAIN,KAAK;EACL,KAAK;EACL,SAAS;EACV;CACD,UAAU;EACR,WAAW;EACX,eAAe;EAChB;CACD,SAAS,EACP,cAAc;EACZ,mBAAmB;EACnB,iBAAiB;EACjB,YAAY;EACZ,gBAAgB;EACjB,EACF;CACF;AAED,SAAgB,mBACd,QACA,aACyB;CACzB,MAAM,SAAkC;EACtC,eAAe;EACf,UAAU,OAAO,YAAY,EAAE;EAC/B,cAAc;EACd,SAAS,OAAO,WAAW,EAAE;EAC9B;AACD,KACE,OAAO,OAAO,uBAAuB,YACrC,OAAO,uBAAuB,GAE9B,QAAO,qBAAqB,OAAO;AAErC,QAAO;;;;;;;;;;;;ACnBT,SAAgB,UAAa,MAAS,OAA0B;AAC9D,KAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,MAAM,CAC/C,QAAO;CAET,MAAM,SAAkC,EAAE,GAAG,MAAM;AACnD,MAAK,MAAM,CAAC,KAAK,eAAe,OAAO,QAAQ,MAAM,EAAE;AACrD,MAAI,eAAe,KAAA,EAAW;EAC9B,MAAM,YAAY,OAAO;AACzB,MAAI,cAAc,UAAU,IAAI,cAAc,WAAW,CACvD,QAAO,OAAO,UACZ,WACA,WACD;MAED,QAAO,OAAO;;AAGlB,QAAO;;;;;;;;;;;;;;AAeT,IAAa,eAAb,MAA0B;CACxB;CAEA,YACE,SACA,WAAoD,wBACpD;AAFiB,OAAA,UAAA;AACA,OAAA,WAAA;;;;CAKnB,MAAM,OAA6B;AACjC,MAAI,KAAK,MAAO,QAAO,KAAK;EAC5B,MAAM,MAAM,MAAM,KAAK,QAAQ,MAAM;EACrC,MAAM,MAAM,cAAc,IAAI,GAAG,MAAM,EAAE;EACzC,MAAM,aAAa,cAAc,IAAI,QAAQ,GAAG,IAAI,UAAU,EAAE;AAChE,OAAK,QAAQ;GACX,GAAG;GACH,SAAS,UACP,KAAK,UACL,WACD;GACF;AACD,SAAO,KAAK;;;;;;CAOd,YAAyB;AACvB,MAAI,CAAC,KAAK,MACR,OAAM,IAAI,MACR,iBAAiB,KAAK,QAAQ,OAAO,oCACtC;AAEH,SAAO,KAAK;;;CAId,aAAmB;AACjB,OAAK,QAAQ,KAAA;;;;;;;CAQf,MAAM,MAAM,OAAuD;EAEjE,MAAM,OAAO,UADG,MAAM,KAAK,MAAM,EACD,MAAM;AACtC,QAAM,KAAK,QAAQ,MAAM,KAAK;AAC9B,OAAK,QAAQ;AACb,SAAO"}
@@ -1,4 +1,5 @@
1
- import { m as PHConnectRuntimeConfig } from "../types-D0NNBVGA.js";
1
+ import { w as PHConnectRuntimeConfig } from "../types-BWwUHbmn.js";
2
+
2
3
  //#region connect/config-loader.d.ts
3
4
  /** Recursive Partial. Arrays are leaves — `write({ packages: [...] })`
4
5
  * replaces the array, it doesn't merge. */
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","names":[],"sources":["../../connect/config-loader.ts"],"mappings":";;;;KAmBY,WAAA,MACV,CAAA,SAAU,KAAA,YACN,KAAA,CAAM,CAAA,IACN,CAAA,gCACgB,CAAA,IAAK,WAAA,CAAY,CAAA,CAAE,CAAA,OACjC,CAAA;;;;;;;;KASI,WAAA,GAAc,MAAA;EACxB,OAAA,EAAS,sBAAA;AAAA;;;;;;;;;;UAYM,aAAA;EAvBN;EAyBT,IAAA,IAAQ,OAAA;EAzBiB;EA2BzB,KAAA,CAAM,IAAA,EAAM,WAAA,GAAc,OAAA;EA3Ba;EAAA,SA6B9B,MAAA;AAAA;;AAnBX;;;;;;;iBA8BgB,SAAA,GAAA,CAAa,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,WAAA,CAAY,CAAA,IAAK,CAAA;;AAjB9D;;;;;;;;;;;cAiDa,YAAA;EAAA,iBAIQ,OAAA;EAAA,iBACA,QAAA;EAAA,QAJX,KAAA;cAGW,OAAA,EAAS,aAAA,EACT,QAAA,GAAU,sBAAA;EAhDd;AAWjB;EA0CQ,IAAA,CAAA,GAAQ,OAAA,CAAQ,WAAA;EA1CC;;;;EA6DvB,SAAA,CAAA,GAAa,WAAA;EA7DgD;EAuE7D,UAAA,CAAA;EAvEwB;;;;;EAgFlB,KAAA,CAAM,KAAA,EAAO,WAAA,CAAY,WAAA,IAAe,OAAA,CAAQ,WAAA;AAAA"}
1
+ {"version":3,"file":"config-loader.d.ts","names":[],"sources":["../../connect/config-loader.ts"],"mappings":";;;;;KAmBY,WAAA,MACV,CAAA,SAAU,KAAA,YACN,KAAA,CAAM,CAAA,IACN,CAAA,gCACgB,CAAA,IAAK,WAAA,CAAY,CAAA,CAAE,CAAA,OACjC,CAAA;;;;;;;;KASI,WAAA,GAAc,MAAA;EACxB,OAAA,EAAS,sBAAA;AAAA;;;;;;;;;;UAYM,aAAA;EAvBK;EAyBpB,IAAA,IAAQ,OAAA;EAzB6B;EA2BrC,KAAA,CAAM,IAAA,EAAM,WAAA,GAAc,OAAA;EA1BpB;EAAA,SA4BG,MAAA;AAAA;AAnBX;;;;;;;;AAAA,iBA8BgB,SAAA,GAAA,CAAa,IAAA,EAAM,CAAA,EAAG,KAAA,EAAO,WAAA,CAAY,CAAA,IAAK,CAAA;AAjB9D;;;;;;;;;;;;AAAA,cAiDa,YAAA;EAAA,iBAIQ,OAAA;EAAA,iBACA,QAAA;EAAA,QAJX,KAAA;cAGW,OAAA,EAAS,aAAA,EACT,QAAA,GAAU,sBAAA;EArCf;;EA0CR,IAAA,CAAA,GAAQ,OAAA,CAAQ,WAAA;EA1CW;;;;EA6DjC,SAAA,CAAA,GAAa,WAAA;EA7DgD;EAuE7D,UAAA,CAAA;EAvEiC;;;;;EAgF3B,KAAA,CAAM,KAAA,EAAO,WAAA,CAAY,WAAA,IAAe,OAAA,CAAQ,WAAA;AAAA"}
@@ -1,2 +1,2 @@
1
- import { n as deepMerge, t as ConfigLoader } from "../config-loader-19K8n4DO.js";
1
+ import { n as deepMerge, t as ConfigLoader } from "../config-loader-Dw3syw7r.js";
2
2
  export { ConfigLoader, deepMerge };