primitive-admin 1.1.0-alpha.7 → 1.1.0-alpha.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 (438) hide show
  1. package/README.md +404 -80
  2. package/assets/skill/skills/primitive-platform/SKILL.md +808 -0
  3. package/dist/bin/primitive.d.ts +2 -0
  4. package/dist/bin/primitive.js +294 -21
  5. package/dist/bin/primitive.js.map +1 -1
  6. package/dist/src/commands/admins.d.ts +2 -0
  7. package/dist/src/commands/admins.js +138 -19
  8. package/dist/src/commands/admins.js.map +1 -1
  9. package/dist/src/commands/analytics.d.ts +2 -0
  10. package/dist/src/commands/analytics.js +544 -55
  11. package/dist/src/commands/analytics.js.map +1 -1
  12. package/dist/src/commands/apps.d.ts +2 -0
  13. package/dist/src/commands/apps.js +51 -96
  14. package/dist/src/commands/apps.js.map +1 -1
  15. package/dist/src/commands/auth.d.ts +2 -0
  16. package/dist/src/commands/auth.js +177 -7
  17. package/dist/src/commands/auth.js.map +1 -1
  18. package/dist/src/commands/blob-buckets.d.ts +2 -0
  19. package/dist/src/commands/blob-buckets.js +330 -0
  20. package/dist/src/commands/blob-buckets.js.map +1 -0
  21. package/dist/src/commands/catalog.d.ts +2 -0
  22. package/dist/src/commands/catalog.js +37 -38
  23. package/dist/src/commands/catalog.js.map +1 -1
  24. package/dist/src/commands/collection-type-configs.d.ts +2 -0
  25. package/dist/src/commands/collection-type-configs.js +92 -0
  26. package/dist/src/commands/collection-type-configs.js.map +1 -0
  27. package/dist/src/commands/collections.d.ts +2 -0
  28. package/dist/src/commands/collections.js +565 -0
  29. package/dist/src/commands/collections.js.map +1 -0
  30. package/dist/src/commands/comparisons.d.ts +2 -0
  31. package/dist/src/commands/comparisons.js +6 -6
  32. package/dist/src/commands/comparisons.js.map +1 -1
  33. package/dist/src/commands/config.d.ts +46 -0
  34. package/dist/src/commands/config.js +479 -0
  35. package/dist/src/commands/config.js.map +1 -0
  36. package/dist/src/commands/connections.d.ts +2 -0
  37. package/dist/src/commands/connections.js +100 -0
  38. package/dist/src/commands/connections.js.map +1 -0
  39. package/dist/src/commands/cron-triggers.d.ts +2 -0
  40. package/dist/src/commands/cron-triggers.js +265 -0
  41. package/dist/src/commands/cron-triggers.js.map +1 -0
  42. package/dist/src/commands/database-type-configs.d.ts +2 -0
  43. package/dist/src/commands/database-type-configs.js +171 -0
  44. package/dist/src/commands/database-type-configs.js.map +1 -0
  45. package/dist/src/commands/database-types.d.ts +2 -0
  46. package/dist/src/commands/database-types.js +471 -0
  47. package/dist/src/commands/database-types.js.map +1 -0
  48. package/dist/src/commands/databases.d.ts +65 -0
  49. package/dist/src/commands/databases.js +2140 -112
  50. package/dist/src/commands/databases.js.map +1 -1
  51. package/dist/src/commands/documents.d.ts +2 -0
  52. package/dist/src/commands/documents.js +1357 -19
  53. package/dist/src/commands/documents.js.map +1 -1
  54. package/dist/src/commands/email-templates.d.ts +2 -0
  55. package/dist/src/commands/email-templates.js +174 -0
  56. package/dist/src/commands/email-templates.js.map +1 -0
  57. package/dist/src/commands/env.d.ts +23 -0
  58. package/dist/src/commands/env.js +333 -0
  59. package/dist/src/commands/env.js.map +1 -0
  60. package/dist/src/commands/feature-flags.d.ts +14 -0
  61. package/dist/src/commands/feature-flags.js +116 -0
  62. package/dist/src/commands/feature-flags.js.map +1 -0
  63. package/dist/src/commands/group-type-configs.d.ts +2 -0
  64. package/dist/src/commands/group-type-configs.js +86 -0
  65. package/dist/src/commands/group-type-configs.js.map +1 -0
  66. package/dist/src/commands/groups.d.ts +2 -0
  67. package/dist/src/commands/groups.js +38 -99
  68. package/dist/src/commands/groups.js.map +1 -1
  69. package/dist/src/commands/guides.d.ts +223 -0
  70. package/dist/src/commands/guides.js +617 -65
  71. package/dist/src/commands/guides.js.map +1 -1
  72. package/dist/src/commands/init.d.ts +25 -0
  73. package/dist/src/commands/init.js +1605 -208
  74. package/dist/src/commands/init.js.map +1 -1
  75. package/dist/src/commands/integrations.d.ts +2 -0
  76. package/dist/src/commands/integrations.js +380 -178
  77. package/dist/src/commands/integrations.js.map +1 -1
  78. package/dist/src/commands/llm.d.ts +2 -0
  79. package/dist/src/commands/llm.js +4 -2
  80. package/dist/src/commands/llm.js.map +1 -1
  81. package/dist/src/commands/locks.d.ts +8 -0
  82. package/dist/src/commands/locks.js +160 -0
  83. package/dist/src/commands/locks.js.map +1 -0
  84. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  85. package/dist/src/commands/metadata-category-configs.js +112 -0
  86. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  87. package/dist/src/commands/metadata.d.ts +2 -0
  88. package/dist/src/commands/metadata.js +281 -0
  89. package/dist/src/commands/metadata.js.map +1 -0
  90. package/dist/src/commands/prompts.d.ts +2 -0
  91. package/dist/src/commands/prompts.js +225 -584
  92. package/dist/src/commands/prompts.js.map +1 -1
  93. package/dist/src/commands/rule-sets.d.ts +3 -0
  94. package/dist/src/commands/rule-sets.js +272 -0
  95. package/dist/src/commands/rule-sets.js.map +1 -0
  96. package/dist/src/commands/scripts.d.ts +20 -0
  97. package/dist/src/commands/scripts.js +554 -0
  98. package/dist/src/commands/scripts.js.map +1 -0
  99. package/dist/src/commands/secrets.d.ts +2 -0
  100. package/dist/src/commands/secrets.js +108 -0
  101. package/dist/src/commands/secrets.js.map +1 -0
  102. package/dist/src/commands/sessions.d.ts +2 -0
  103. package/dist/src/commands/sessions.js +75 -0
  104. package/dist/src/commands/sessions.js.map +1 -0
  105. package/dist/src/commands/skill.d.ts +2 -0
  106. package/dist/src/commands/skill.js +29 -0
  107. package/dist/src/commands/skill.js.map +1 -0
  108. package/dist/src/commands/sync-app-settings.d.ts +158 -0
  109. package/dist/src/commands/sync-app-settings.js +330 -0
  110. package/dist/src/commands/sync-app-settings.js.map +1 -0
  111. package/dist/src/commands/sync.d.ts +2323 -0
  112. package/dist/src/commands/sync.js +15065 -843
  113. package/dist/src/commands/sync.js.map +1 -1
  114. package/dist/src/commands/tokens.d.ts +2 -0
  115. package/dist/src/commands/tokens.js +130 -21
  116. package/dist/src/commands/tokens.js.map +1 -1
  117. package/dist/src/commands/users.d.ts +2 -0
  118. package/dist/src/commands/users.js +532 -23
  119. package/dist/src/commands/users.js.map +1 -1
  120. package/dist/src/commands/vars.d.ts +8 -0
  121. package/dist/src/commands/vars.js +96 -0
  122. package/dist/src/commands/vars.js.map +1 -0
  123. package/dist/src/commands/waitlist.d.ts +2 -0
  124. package/dist/src/commands/waitlist.js +10 -10
  125. package/dist/src/commands/waitlist.js.map +1 -1
  126. package/dist/src/commands/webhooks.d.ts +2 -0
  127. package/dist/src/commands/webhooks.js +562 -0
  128. package/dist/src/commands/webhooks.js.map +1 -0
  129. package/dist/src/commands/workflows.d.ts +116 -0
  130. package/dist/src/commands/workflows.js +1583 -681
  131. package/dist/src/commands/workflows.js.map +1 -1
  132. package/dist/src/lib/access-rule-display.d.ts +21 -0
  133. package/dist/src/lib/access-rule-display.js +34 -0
  134. package/dist/src/lib/access-rule-display.js.map +1 -0
  135. package/dist/src/lib/api-client.d.ts +1936 -0
  136. package/dist/src/lib/api-client.js +1826 -138
  137. package/dist/src/lib/api-client.js.map +1 -1
  138. package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
  139. package/dist/src/lib/app-settings-descriptor.js +575 -0
  140. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  141. package/dist/src/lib/auth-flow.d.ts +8 -0
  142. package/dist/src/lib/batch.d.ts +26 -0
  143. package/dist/src/lib/batch.js +32 -0
  144. package/dist/src/lib/batch.js.map +1 -0
  145. package/dist/src/lib/block-layout.d.ts +160 -0
  146. package/dist/src/lib/block-layout.js +451 -0
  147. package/dist/src/lib/block-layout.js.map +1 -0
  148. package/dist/src/lib/canonical-json.d.ts +12 -0
  149. package/dist/src/lib/canonical-json.js +35 -0
  150. package/dist/src/lib/canonical-json.js.map +1 -0
  151. package/dist/src/lib/channel.d.ts +30 -0
  152. package/dist/src/lib/channel.js +68 -0
  153. package/dist/src/lib/channel.js.map +1 -0
  154. package/dist/src/lib/cli-manifest.d.ts +68 -0
  155. package/dist/src/lib/cli-manifest.js +71 -0
  156. package/dist/src/lib/cli-manifest.js.map +1 -0
  157. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
  158. package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
  159. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
  160. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  161. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  162. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  163. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +68 -0
  164. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +168 -0
  165. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
  166. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  167. package/dist/src/lib/config-object-descriptor.js +658 -0
  168. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  169. package/dist/src/lib/config-payload.d.ts +85 -0
  170. package/dist/src/lib/config-payload.js +116 -0
  171. package/dist/src/lib/config-payload.js.map +1 -0
  172. package/dist/src/lib/config-surface.d.ts +130 -0
  173. package/dist/src/lib/config-surface.js +300 -0
  174. package/dist/src/lib/config-surface.js.map +1 -0
  175. package/dist/src/lib/config-toml.d.ts +10 -0
  176. package/dist/src/lib/config-toml.js +42 -0
  177. package/dist/src/lib/config-toml.js.map +1 -0
  178. package/dist/src/lib/config.d.ts +53 -0
  179. package/dist/src/lib/config.js +92 -53
  180. package/dist/src/lib/config.js.map +1 -1
  181. package/dist/src/lib/confirm-prompt.d.ts +83 -0
  182. package/dist/src/lib/confirm-prompt.js +110 -0
  183. package/dist/src/lib/confirm-prompt.js.map +1 -0
  184. package/dist/src/lib/constants.d.ts +11 -0
  185. package/dist/src/lib/constants.js +12 -0
  186. package/dist/src/lib/constants.js.map +1 -0
  187. package/dist/src/lib/crash-handlers.d.ts +20 -0
  188. package/dist/src/lib/crash-handlers.js +49 -0
  189. package/dist/src/lib/crash-handlers.js.map +1 -0
  190. package/dist/src/lib/credentials-store.d.ts +89 -0
  191. package/dist/src/lib/credentials-store.js +330 -0
  192. package/dist/src/lib/credentials-store.js.map +1 -0
  193. package/dist/src/lib/csv.d.ts +47 -0
  194. package/dist/src/lib/csv.js +172 -0
  195. package/dist/src/lib/csv.js.map +1 -0
  196. package/dist/src/lib/data-input.d.ts +23 -0
  197. package/dist/src/lib/data-input.js +50 -0
  198. package/dist/src/lib/data-input.js.map +1 -0
  199. package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
  200. package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
  201. package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
  202. package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
  203. package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
  204. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
  205. package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
  206. package/dist/src/lib/db-codegen/dbNaming.js +180 -0
  207. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
  208. package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
  209. package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
  210. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
  211. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
  212. package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
  213. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
  214. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
  215. package/dist/src/lib/db-codegen/dbTypeIR.js +517 -0
  216. package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
  217. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
  218. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
  219. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
  220. package/dist/src/lib/env-resolver-core.d.ts +147 -0
  221. package/dist/src/lib/env-resolver-core.js +265 -0
  222. package/dist/src/lib/env-resolver-core.js.map +1 -0
  223. package/dist/src/lib/env-resolver.d.ts +84 -0
  224. package/dist/src/lib/env-resolver.js +133 -0
  225. package/dist/src/lib/env-resolver.js.map +1 -0
  226. package/dist/src/lib/fetch.d.ts +5 -0
  227. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  228. package/dist/src/lib/generated-allowlist.js +277 -0
  229. package/dist/src/lib/generated-allowlist.js.map +1 -0
  230. package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
  231. package/dist/src/lib/generated-config-surfaces.js +4058 -0
  232. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  233. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  234. package/dist/src/lib/generated-template-lint.js +624 -0
  235. package/dist/src/lib/generated-template-lint.js.map +1 -0
  236. package/dist/src/lib/init-adopt.d.ts +16 -0
  237. package/dist/src/lib/init-adopt.js +34 -0
  238. package/dist/src/lib/init-adopt.js.map +1 -0
  239. package/dist/src/lib/init-assets.d.ts +39 -0
  240. package/dist/src/lib/init-assets.js +97 -0
  241. package/dist/src/lib/init-assets.js.map +1 -0
  242. package/dist/src/lib/init-config.d.ts +98 -0
  243. package/dist/src/lib/init-config.js +186 -0
  244. package/dist/src/lib/init-config.js.map +1 -0
  245. package/dist/src/lib/init-ios-links.d.ts +50 -0
  246. package/dist/src/lib/init-ios-links.js +153 -0
  247. package/dist/src/lib/init-ios-links.js.map +1 -0
  248. package/dist/src/lib/init-plan.d.ts +80 -0
  249. package/dist/src/lib/init-plan.js +95 -0
  250. package/dist/src/lib/init-plan.js.map +1 -0
  251. package/dist/src/lib/init-production-env.d.ts +48 -0
  252. package/dist/src/lib/init-production-env.js +59 -0
  253. package/dist/src/lib/init-production-env.js.map +1 -0
  254. package/dist/src/lib/init-schema.d.ts +74 -0
  255. package/dist/src/lib/init-schema.js +358 -0
  256. package/dist/src/lib/init-schema.js.map +1 -0
  257. package/dist/src/lib/init-xcode.d.ts +33 -0
  258. package/dist/src/lib/init-xcode.js +114 -0
  259. package/dist/src/lib/init-xcode.js.map +1 -0
  260. package/dist/src/lib/integration-request-config.d.ts +30 -0
  261. package/dist/src/lib/integration-request-config.js +145 -0
  262. package/dist/src/lib/integration-request-config.js.map +1 -0
  263. package/dist/src/lib/local-state.d.ts +55 -0
  264. package/dist/src/lib/local-state.js +167 -0
  265. package/dist/src/lib/local-state.js.map +1 -0
  266. package/dist/src/lib/log-inspection.d.ts +568 -0
  267. package/dist/src/lib/log-inspection.js +639 -0
  268. package/dist/src/lib/log-inspection.js.map +1 -0
  269. package/dist/src/lib/migration-nag.d.ts +49 -0
  270. package/dist/src/lib/migration-nag.js +163 -0
  271. package/dist/src/lib/migration-nag.js.map +1 -0
  272. package/dist/src/lib/object-status-filter.d.ts +22 -0
  273. package/dist/src/lib/object-status-filter.js +45 -0
  274. package/dist/src/lib/object-status-filter.js.map +1 -0
  275. package/dist/src/lib/output.d.ts +109 -0
  276. package/dist/src/lib/output.js +191 -8
  277. package/dist/src/lib/output.js.map +1 -1
  278. package/dist/src/lib/package-manager.d.ts +140 -0
  279. package/dist/src/lib/package-manager.js +305 -0
  280. package/dist/src/lib/package-manager.js.map +1 -0
  281. package/dist/src/lib/paginate.d.ts +83 -0
  282. package/dist/src/lib/paginate.js +95 -0
  283. package/dist/src/lib/paginate.js.map +1 -0
  284. package/dist/src/lib/platform-owned.d.ts +63 -0
  285. package/dist/src/lib/platform-owned.js +85 -0
  286. package/dist/src/lib/platform-owned.js.map +1 -0
  287. package/dist/src/lib/project-config.d.ts +97 -0
  288. package/dist/src/lib/project-config.js +217 -0
  289. package/dist/src/lib/project-config.js.map +1 -0
  290. package/dist/src/lib/query-operators.d.ts +43 -0
  291. package/dist/src/lib/query-operators.js +80 -0
  292. package/dist/src/lib/query-operators.js.map +1 -0
  293. package/dist/src/lib/record-filter.d.ts +18 -0
  294. package/dist/src/lib/record-filter.js +55 -0
  295. package/dist/src/lib/record-filter.js.map +1 -0
  296. package/dist/src/lib/refresh-admin-credentials.d.ts +65 -0
  297. package/dist/src/lib/refresh-admin-credentials.js +103 -0
  298. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  299. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  300. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  301. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  302. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  303. package/dist/src/lib/resolve-init-server.js +77 -0
  304. package/dist/src/lib/resolve-init-server.js.map +1 -0
  305. package/dist/src/lib/resolve-platform.d.ts +74 -0
  306. package/dist/src/lib/resolve-platform.js +105 -0
  307. package/dist/src/lib/resolve-platform.js.map +1 -0
  308. package/dist/src/lib/run-status.d.ts +19 -0
  309. package/dist/src/lib/run-status.generated.d.ts +39 -0
  310. package/dist/src/lib/run-status.generated.js +66 -0
  311. package/dist/src/lib/run-status.generated.js.map +1 -0
  312. package/dist/src/lib/run-status.js +19 -0
  313. package/dist/src/lib/run-status.js.map +1 -0
  314. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  315. package/dist/src/lib/server-text-normalization.js +90 -0
  316. package/dist/src/lib/server-text-normalization.js.map +1 -0
  317. package/dist/src/lib/server-url.d.ts +22 -0
  318. package/dist/src/lib/server-url.js +33 -0
  319. package/dist/src/lib/server-url.js.map +1 -0
  320. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  321. package/dist/src/lib/signing-secret-status.js +116 -0
  322. package/dist/src/lib/signing-secret-status.js.map +1 -0
  323. package/dist/src/lib/skill-installer.d.ts +25 -0
  324. package/dist/src/lib/skill-installer.js +266 -0
  325. package/dist/src/lib/skill-installer.js.map +1 -0
  326. package/dist/src/lib/snapshots.d.ts +99 -0
  327. package/dist/src/lib/snapshots.js +357 -0
  328. package/dist/src/lib/snapshots.js.map +1 -0
  329. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
  330. package/dist/src/lib/swift-codegen/dbGenerator.js +914 -0
  331. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  332. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  333. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  334. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  335. package/dist/src/lib/swift-codegen/generator.d.ts +94 -0
  336. package/dist/src/lib/swift-codegen/generator.js +440 -0
  337. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  338. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
  339. package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -0
  340. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  341. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
  342. package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
  343. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  344. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  345. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  346. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  347. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  348. package/dist/src/lib/sync-dir-selector.js +30 -0
  349. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  350. package/dist/src/lib/sync-paths.d.ts +111 -0
  351. package/dist/src/lib/sync-paths.js +198 -0
  352. package/dist/src/lib/sync-paths.js.map +1 -0
  353. package/dist/src/lib/sync-resource-types.d.ts +544 -0
  354. package/dist/src/lib/sync-resource-types.js +975 -0
  355. package/dist/src/lib/sync-resource-types.js.map +1 -0
  356. package/dist/src/lib/sync-selectors.d.ts +95 -0
  357. package/dist/src/lib/sync-selectors.js +228 -0
  358. package/dist/src/lib/sync-selectors.js.map +1 -0
  359. package/dist/src/lib/template.d.ts +170 -0
  360. package/dist/src/lib/template.js +484 -68
  361. package/dist/src/lib/template.js.map +1 -1
  362. package/dist/src/lib/test-case-keys.d.ts +29 -0
  363. package/dist/src/lib/test-case-keys.js +55 -0
  364. package/dist/src/lib/test-case-keys.js.map +1 -0
  365. package/dist/src/lib/test-case-variables.d.ts +15 -0
  366. package/dist/src/lib/test-case-variables.js +29 -0
  367. package/dist/src/lib/test-case-variables.js.map +1 -0
  368. package/dist/src/lib/token-inject.d.ts +56 -0
  369. package/dist/src/lib/token-inject.js +204 -0
  370. package/dist/src/lib/token-inject.js.map +1 -0
  371. package/dist/src/lib/toml-database-config.d.ts +123 -0
  372. package/dist/src/lib/toml-database-config.js +527 -0
  373. package/dist/src/lib/toml-database-config.js.map +1 -0
  374. package/dist/src/lib/toml-metadata-config.d.ts +151 -0
  375. package/dist/src/lib/toml-metadata-config.js +476 -0
  376. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  377. package/dist/src/lib/toml-native-form.d.ts +46 -0
  378. package/dist/src/lib/toml-native-form.js +78 -0
  379. package/dist/src/lib/toml-native-form.js.map +1 -0
  380. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  381. package/dist/src/lib/toml-params-validator.js +298 -0
  382. package/dist/src/lib/toml-params-validator.js.map +1 -0
  383. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  384. package/dist/src/lib/toml-scalar-edit.js +283 -0
  385. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  386. package/dist/src/lib/user-selector.d.ts +24 -0
  387. package/dist/src/lib/user-selector.js +33 -0
  388. package/dist/src/lib/user-selector.js.map +1 -0
  389. package/dist/src/lib/version-check.d.ts +35 -0
  390. package/dist/src/lib/version-check.js +241 -0
  391. package/dist/src/lib/version-check.js.map +1 -0
  392. package/dist/src/lib/watch.d.ts +121 -0
  393. package/dist/src/lib/watch.js +169 -0
  394. package/dist/src/lib/watch.js.map +1 -0
  395. package/dist/src/lib/workflow-apply.d.ts +110 -0
  396. package/dist/src/lib/workflow-apply.js +164 -0
  397. package/dist/src/lib/workflow-apply.js.map +1 -0
  398. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
  399. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
  400. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
  401. package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
  402. package/dist/src/lib/workflow-codegen/generator.js +361 -0
  403. package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
  404. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
  405. package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
  406. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  407. package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
  408. package/dist/src/lib/workflow-codegen/naming.js +81 -0
  409. package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
  410. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
  411. package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
  412. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
  413. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  414. package/dist/src/lib/workflow-config-apply.js +137 -0
  415. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  416. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  417. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  418. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  419. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  420. package/dist/src/lib/workflow-defaults.js +41 -0
  421. package/dist/src/lib/workflow-defaults.js.map +1 -0
  422. package/dist/src/lib/workflow-fragments.d.ts +64 -0
  423. package/dist/src/lib/workflow-fragments.js +342 -0
  424. package/dist/src/lib/workflow-fragments.js.map +1 -0
  425. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  426. package/dist/src/lib/workflow-include-preserve.js +286 -0
  427. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  428. package/dist/src/lib/workflow-payload.d.ts +98 -0
  429. package/dist/src/lib/workflow-payload.js +178 -0
  430. package/dist/src/lib/workflow-payload.js.map +1 -0
  431. package/dist/src/lib/workflow-toml-validator.d.ts +202 -0
  432. package/dist/src/lib/workflow-toml-validator.js +757 -0
  433. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  434. package/dist/src/types/index.d.ts +581 -0
  435. package/dist/src/validators.d.ts +65 -0
  436. package/dist/src/validators.js +64 -0
  437. package/dist/src/validators.js.map +1 -0
  438. package/package.json +32 -8
@@ -0,0 +1,211 @@
1
+ /**
2
+ * GENERATED FILE — DO NOT EDIT BY HAND.
3
+ *
4
+ * Vendored byte-for-byte from the canonical server module
5
+ * `src/app-api/controllers/operation-definition-descriptor.ts` — the SAME
6
+ * allow-lists the server validator (`validateDefinition` / `validateParams`)
7
+ * enforces. The client operation-definition types
8
+ * (`src/client/api/operationDefinition.ts`) hand-author the matching union;
9
+ * a key-parity test compares them against this committed copy.
10
+ *
11
+ * Regenerate with:
12
+ * node cli/scripts/gen-operation-def-descriptor.mjs (runs at CLI prebuild)
13
+ *
14
+ * A CI freshness guard
15
+ * (`cli/scripts/gen-operation-def-descriptor.mjs --check`, also asserted by
16
+ * `cli/tests/unit/operation-def-descriptor-drift-guard.test.ts`) fails if
17
+ * this committed copy does not match the source — see issue #1544 / #1442.
18
+ */
19
+ /**
20
+ * Canonical, dependency-free descriptor of the database operation-definition
21
+ * schema (issue #1544).
22
+ *
23
+ * The server validator (`validateDefinition` / `validateParams` in
24
+ * `database-type-operations-controller.ts`) and the CLIENT operation-definition
25
+ * types (`src/client/api/operationDefinition.ts`, consumed by
26
+ * `createOperation` / `updateOperation` / `DatabaseOperationInfo`) must agree on
27
+ * the set of operation types and the allowed keys for each definition shape —
28
+ * otherwise a hand-authored `OperationDefinition` member promises a key the
29
+ * runtime rejects (or omits one the runtime accepts).
30
+ *
31
+ * This module is the single source of that declarative contract: the op-type
32
+ * list, the per-type allowed definition-key sets, the per-type mutation/action
33
+ * op-name enums, and the param-schema key/type enums. The validator imports
34
+ * these constants directly (so a change here changes what the server enforces),
35
+ * and the CLI vendors a byte-for-byte copy as a committed artifact via
36
+ * `cli/scripts/gen-operation-def-descriptor.mjs` (the #1442 workflow
37
+ * schema-descriptor pattern). A drift-guard test runs that generator in
38
+ * `--check` mode, and a key-parity test asserts the hand-authored client type
39
+ * members' keys equal the corresponding allow-lists here — so the validator and
40
+ * the client types can never silently diverge. The CLI never imports server
41
+ * `src/` at runtime; only the build-time generator reads this file.
42
+ *
43
+ * The value-shape checks that are NOT purely declarative (requiredness, nested
44
+ * object structure, CEL parsing) stay imperative in the validator. This
45
+ * descriptor captures the declarative allow-lists — the part that is genuinely
46
+ * shared between the runtime boundary and the descriptive client types.
47
+ *
48
+ * Ordering is significant: the validator joins these arrays into its 400-level
49
+ * error messages (`Must be one of: ${X.join(", ")}`), so reordering an array
50
+ * changes an error string. Keep entries in their current order.
51
+ */
52
+ /** The operation `type` values accepted by `createOperation` / `updateOperation`. */
53
+ export const OPERATION_TYPES = [
54
+ "query",
55
+ "mutation",
56
+ "count",
57
+ "aggregate",
58
+ "pipeline",
59
+ "applyToQuery",
60
+ ];
61
+ // ── Per-type definition key allow-lists ──
62
+ /** Allowed top-level keys in a `query` definition. `cache` (#1247) is query-only. */
63
+ export const QUERY_DEF_KEYS = [
64
+ "filter",
65
+ "sort",
66
+ "limit",
67
+ "projection",
68
+ "include",
69
+ "cache",
70
+ ];
71
+ /** Allowed top-level keys in a `mutation` definition. */
72
+ export const MUTATION_DEF_KEYS = ["operations"];
73
+ /** Allowed top-level keys in a `count` definition. */
74
+ export const COUNT_DEF_KEYS = ["filter"];
75
+ /** Allowed top-level keys in an `aggregate` definition. */
76
+ export const AGGREGATE_DEF_KEYS = [
77
+ "groupBy",
78
+ "operations",
79
+ "filter",
80
+ "limit",
81
+ "sort",
82
+ ];
83
+ /** Allowed top-level keys in a `pipeline` definition. */
84
+ export const PIPELINE_DEF_KEYS = ["steps", "return"];
85
+ /** Allowed top-level keys in an `applyToQuery` definition. */
86
+ export const APPLY_TO_QUERY_DEF_KEYS = ["source", "action"];
87
+ // ── Op-name enums nested inside definitions ──
88
+ /** Mutation op names allowed in a `mutation` definition's `operations[]`. */
89
+ export const MUTATION_OPS = [
90
+ "save",
91
+ "patch",
92
+ "delete",
93
+ "increment",
94
+ "addToSet",
95
+ "removeFromSet",
96
+ ];
97
+ /**
98
+ * Aggregate op `type` names allowed in an `aggregate` definition's
99
+ * `operations[]`.
100
+ */
101
+ export const AGGREGATE_OP_TYPES = [
102
+ "count",
103
+ "sum",
104
+ "avg",
105
+ "min",
106
+ "max",
107
+ ];
108
+ /**
109
+ * Allowed keys on a single nested aggregate op (an entry in an `aggregate`
110
+ * definition's `operations[]`, and in a pipeline `aggregate` step's
111
+ * `operations[]`). Only `type` and `field` are honored by the runtime — the
112
+ * aggregate SELECT always aliases columns to the fixed output names
113
+ * (`count` / `<type>_<field>`), so there is no supported way to rename an
114
+ * output. `outputField` was historically accepted here but read by no code
115
+ * (issue #1767); any key outside this list is now rejected at registration so
116
+ * dead config can't be silently stored.
117
+ */
118
+ export const AGGREGATE_OP_KEYS = ["type", "field"];
119
+ /**
120
+ * `applyToQuery` action ops. Only mutation ops that operate on existing matched
121
+ * records — `save` is excluded because it makes no sense in a find-and-mutate
122
+ * flow.
123
+ */
124
+ export const APPLY_TO_QUERY_ACTIONS = [
125
+ "delete",
126
+ "patch",
127
+ "increment",
128
+ "addToSet",
129
+ "removeFromSet",
130
+ ];
131
+ /** Allowed keys in an `applyToQuery` `source` block. */
132
+ export const APPLY_TO_QUERY_SOURCE_KEYS = [
133
+ "filter",
134
+ "sort",
135
+ "limit",
136
+ ];
137
+ /** Allowed keys in an `applyToQuery` `action` block. */
138
+ export const APPLY_TO_QUERY_ACTION_KEYS = [
139
+ "op",
140
+ "data",
141
+ "fields",
142
+ "stringSets",
143
+ ];
144
+ // ── Pipeline step allow-lists ──
145
+ /** Step `type` values allowed inside a `pipeline` definition's `steps[]`. */
146
+ export const PIPELINE_STEP_TYPES = [
147
+ "query",
148
+ "count",
149
+ "aggregate",
150
+ ];
151
+ /** Allowed keys on a pipeline `query` step. */
152
+ export const PIPELINE_QUERY_STEP_KEYS = [
153
+ "name",
154
+ "type",
155
+ "modelName",
156
+ "filter",
157
+ "sort",
158
+ "limit",
159
+ "projection",
160
+ "include",
161
+ ];
162
+ /** Allowed keys on a pipeline `count` step. */
163
+ export const PIPELINE_COUNT_STEP_KEYS = [
164
+ "name",
165
+ "type",
166
+ "modelName",
167
+ "filter",
168
+ ];
169
+ /** Allowed keys on a pipeline `aggregate` step. */
170
+ export const PIPELINE_AGGREGATE_STEP_KEYS = [
171
+ "name",
172
+ "type",
173
+ "modelName",
174
+ "groupBy",
175
+ "operations",
176
+ "filter",
177
+ "limit",
178
+ "sort",
179
+ ];
180
+ // ── Param-schema enums ──
181
+ /**
182
+ * Built-in param types. `integer` (#1488) is accepted here and by the runtime
183
+ * coercion path. `array` (#1488) declares a list param with a scalar `items`
184
+ * element type. Keep in step with the runtime coercion list
185
+ * (`MODEL_PARAM_SCALAR_TYPES` in `database-operations-controller.ts`).
186
+ */
187
+ export const PARAM_TYPES = [
188
+ "string",
189
+ "number",
190
+ "boolean",
191
+ "integer",
192
+ "object",
193
+ "array",
194
+ ];
195
+ /** Scalar element types allowed for an `array` param's `items` (#1488). */
196
+ export const ARRAY_ELEMENT_TYPES = [
197
+ "string",
198
+ "number",
199
+ "boolean",
200
+ "integer",
201
+ ];
202
+ /** Allowed keys in a single param definition. */
203
+ export const PARAM_DEF_KEYS = [
204
+ "type",
205
+ "required",
206
+ "access",
207
+ "coerce",
208
+ "enum",
209
+ "items",
210
+ ];
211
+ //# sourceMappingURL=generated-operation-def-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-operation-def-descriptor.js","sourceRoot":"","sources":["../../../../src/lib/db-codegen/generated-operation-def-descriptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * The shared Primitive environment resolver (#2873).
3
+ *
4
+ * Three surfaces have to agree on which backend/app a project is pointed at:
5
+ * the CLI, the Vue build (`primitive-app`'s `primitiveEnv()` plugin), and the
6
+ * Swift template's pre-build script. This module is the single algorithm they
7
+ * share. The CLI owns it; `packages/primitive-app` carries a byte-identical
8
+ * GENERATED copy (`cli/scripts/gen-primitive-env-resolver.mjs`, checked for
9
+ * freshness by `cli/tests/unit/env-resolver-copy-drift-guard.test.ts`); the
10
+ * Swift script is an independent bash+python3 port pinned by a parity test.
11
+ *
12
+ * ── COPYABILITY (load-bearing) ────────────────────────────────────────────
13
+ * This file MUST stay self-contained: node builtins only, ZERO relative
14
+ * imports. The generator copies it verbatim into a package that cannot depend
15
+ * on the CLI, so any `./x.js` import here would break that copy at runtime.
16
+ * The drift guard asserts this.
17
+ *
18
+ * Scope: config discovery, the schema `version` check, structural validation,
19
+ * the local selection, the precedence, and the http→ws scheme swap. It
20
+ * deliberately does NOT duplicate the CLI's full field-level validation
21
+ * (`validateProjectConfig` in `project-config.ts`) — the CLI wrapper runs that
22
+ * first, and the other readers only need "version understood, shape sane, fail
23
+ * loudly otherwise".
24
+ *
25
+ * Precedence (one order, everywhere):
26
+ * 1. an explicit name (`--env` / `--primitive-env`)
27
+ * 2. PRIMITIVE_ENV (per-invocation intent, keeps CI working)
28
+ * 3. .primitive/local.json (this machine's `primitive env use`)
29
+ * 4. defaultEnvironment (the committed team default)
30
+ * 5. the sole environment, if there is exactly one
31
+ */
32
+ /** Schema version of `.primitive/config.json` this core understands. */
33
+ export declare const PRIMITIVE_CONFIG_VERSION = 1;
34
+ /** Schema version of `.primitive/local.json` this core writes and reads. */
35
+ export declare const PRIMITIVE_LOCAL_STATE_VERSION = 1;
36
+ export declare const PROJECT_CONFIG_DIR = ".primitive";
37
+ export declare const PROJECT_CONFIG_FILENAME = "config.json";
38
+ export declare const LOCAL_STATE_FILENAME = "local.json";
39
+ export declare const PROJECT_CONFIG_DISPLAY_NAME = ".primitive/config.json";
40
+ export declare const LOCAL_STATE_DISPLAY_NAME = ".primitive/local.json";
41
+ /**
42
+ * Error kinds callers branch on. Every failure is one of these — no reader is
43
+ * ever left guessing what a broken config meant.
44
+ */
45
+ export type PrimitiveEnvErrorKind = "missing-config" | "malformed-config" | "unsupported-version" | "corrupt-local-state" | "unknown-environment" | "no-selection" | "missing-app-id";
46
+ export declare class PrimitiveEnvError extends Error {
47
+ readonly kind: PrimitiveEnvErrorKind;
48
+ readonly path?: string;
49
+ constructor(kind: PrimitiveEnvErrorKind, message: string, path?: string);
50
+ }
51
+ export interface CoreEnvironmentEntry {
52
+ apiUrl: string;
53
+ appId?: string;
54
+ appName?: string;
55
+ description?: string;
56
+ }
57
+ export interface CoreProjectConfig {
58
+ version: number;
59
+ defaultEnvironment?: string;
60
+ environments: Record<string, CoreEnvironmentEntry>;
61
+ }
62
+ /** Which precedence step picked the environment. Printed in the build banner. */
63
+ export type PrimitiveEnvSource = "explicit" | "env-var" | "local" | "default" | "sole";
64
+ export interface ResolvedPrimitiveEnv {
65
+ name: string;
66
+ apiUrl: string;
67
+ /** Derived from apiUrl by scheme swap — never authored separately. */
68
+ wsUrl: string;
69
+ appId?: string;
70
+ appName?: string;
71
+ description?: string;
72
+ source: PrimitiveEnvSource;
73
+ configPath: string;
74
+ localStatePath: string;
75
+ projectRoot: string;
76
+ }
77
+ export interface ResolveOptions {
78
+ /** Directory to start the upward walk from. Defaults to process.cwd(). */
79
+ cwd?: string;
80
+ /** Environment variables to read. Defaults to process.env. */
81
+ env?: Record<string, string | undefined>;
82
+ /** An explicit `--env` / `--primitive-env` value, if the caller has one. */
83
+ explicitEnvName?: string | null;
84
+ /** Use this config file instead of discovering one. */
85
+ configPath?: string;
86
+ /**
87
+ * Identity consumers (the Vite plugin, cf-deploy, the Swift script) cannot
88
+ * work without an app ID; plain CLI resolution can, and always could.
89
+ */
90
+ requireAppId?: boolean;
91
+ }
92
+ /**
93
+ * Derives the WebSocket URL from the API URL. Every apiUrl/wsUrl pair in
94
+ * practice is the same host with the scheme swapped, so it is derived rather
95
+ * than authored — one less thing to get out of sync.
96
+ */
97
+ export declare function deriveWsUrl(apiUrl: string): string;
98
+ /**
99
+ * Finds `.primitive/config.json` by walking up from `cwd`, or returns the
100
+ * PRIMITIVE_PROJECT_CONFIG override when it is set (and exists).
101
+ */
102
+ export declare function findPrimitiveConfigPath(options?: {
103
+ cwd?: string;
104
+ env?: Record<string, string | undefined>;
105
+ }): string | null;
106
+ /**
107
+ * The project root for a config path: the parent of `.primitive/`, or the
108
+ * containing directory when the config was pointed at directly (a fixture via
109
+ * PRIMITIVE_PROJECT_CONFIG, which is not inside a `.primitive/` directory).
110
+ */
111
+ export declare function projectRootForConfigPath(configPath: string): string;
112
+ /**
113
+ * Local state lives beside the config it belongs to, so a fixture-pointed
114
+ * config never picks up a real project's selection and vice versa.
115
+ */
116
+ export declare function localStatePathForConfigPath(configPath: string): string;
117
+ /**
118
+ * Reads and structurally validates `.primitive/config.json`. Throws rather
119
+ * than guessing: a config that cannot be understood is always louder than a
120
+ * silent fallback to the wrong backend.
121
+ */
122
+ export declare function readCoreProjectConfig(configPath: string): CoreProjectConfig;
123
+ /**
124
+ * Reads this machine's selection from `.primitive/local.json`. Returns null
125
+ * when there is no file or no selection in it; throws when the file exists but
126
+ * cannot be read as the shape `primitive env use` writes.
127
+ */
128
+ export declare function readLocalSelection(configPath: string): string | null;
129
+ /**
130
+ * Applies the precedence to an already-loaded config. Exposed separately so
131
+ * the CLI wrapper can run its own field-level validation first and still share
132
+ * one ordering with every other reader.
133
+ */
134
+ export declare function selectEnvironmentName(config: CoreProjectConfig, options: {
135
+ explicitEnvName?: string | null;
136
+ envVarName?: string | null;
137
+ localSelection?: string | null;
138
+ configPath?: string;
139
+ }): {
140
+ name: string;
141
+ source: PrimitiveEnvSource;
142
+ };
143
+ /**
144
+ * The whole algorithm end to end: discover the config, read the selection,
145
+ * apply the precedence, derive the WebSocket URL.
146
+ */
147
+ export declare function resolvePrimitiveEnv(options?: ResolveOptions): ResolvedPrimitiveEnv;
@@ -0,0 +1,265 @@
1
+ /**
2
+ * The shared Primitive environment resolver (#2873).
3
+ *
4
+ * Three surfaces have to agree on which backend/app a project is pointed at:
5
+ * the CLI, the Vue build (`primitive-app`'s `primitiveEnv()` plugin), and the
6
+ * Swift template's pre-build script. This module is the single algorithm they
7
+ * share. The CLI owns it; `packages/primitive-app` carries a byte-identical
8
+ * GENERATED copy (`cli/scripts/gen-primitive-env-resolver.mjs`, checked for
9
+ * freshness by `cli/tests/unit/env-resolver-copy-drift-guard.test.ts`); the
10
+ * Swift script is an independent bash+python3 port pinned by a parity test.
11
+ *
12
+ * ── COPYABILITY (load-bearing) ────────────────────────────────────────────
13
+ * This file MUST stay self-contained: node builtins only, ZERO relative
14
+ * imports. The generator copies it verbatim into a package that cannot depend
15
+ * on the CLI, so any `./x.js` import here would break that copy at runtime.
16
+ * The drift guard asserts this.
17
+ *
18
+ * Scope: config discovery, the schema `version` check, structural validation,
19
+ * the local selection, the precedence, and the http→ws scheme swap. It
20
+ * deliberately does NOT duplicate the CLI's full field-level validation
21
+ * (`validateProjectConfig` in `project-config.ts`) — the CLI wrapper runs that
22
+ * first, and the other readers only need "version understood, shape sane, fail
23
+ * loudly otherwise".
24
+ *
25
+ * Precedence (one order, everywhere):
26
+ * 1. an explicit name (`--env` / `--primitive-env`)
27
+ * 2. PRIMITIVE_ENV (per-invocation intent, keeps CI working)
28
+ * 3. .primitive/local.json (this machine's `primitive env use`)
29
+ * 4. defaultEnvironment (the committed team default)
30
+ * 5. the sole environment, if there is exactly one
31
+ */
32
+ import { existsSync, readFileSync } from "node:fs";
33
+ import { basename, dirname, join, resolve } from "node:path";
34
+ /** Schema version of `.primitive/config.json` this core understands. */
35
+ export const PRIMITIVE_CONFIG_VERSION = 1;
36
+ /** Schema version of `.primitive/local.json` this core writes and reads. */
37
+ export const PRIMITIVE_LOCAL_STATE_VERSION = 1;
38
+ export const PROJECT_CONFIG_DIR = ".primitive";
39
+ export const PROJECT_CONFIG_FILENAME = "config.json";
40
+ export const LOCAL_STATE_FILENAME = "local.json";
41
+ export const PROJECT_CONFIG_DISPLAY_NAME = ".primitive/config.json";
42
+ export const LOCAL_STATE_DISPLAY_NAME = ".primitive/local.json";
43
+ export class PrimitiveEnvError extends Error {
44
+ kind;
45
+ path;
46
+ constructor(kind, message, path) {
47
+ super(message);
48
+ this.name = "PrimitiveEnvError";
49
+ this.kind = kind;
50
+ this.path = path;
51
+ }
52
+ }
53
+ /**
54
+ * Derives the WebSocket URL from the API URL. Every apiUrl/wsUrl pair in
55
+ * practice is the same host with the scheme swapped, so it is derived rather
56
+ * than authored — one less thing to get out of sync.
57
+ */
58
+ export function deriveWsUrl(apiUrl) {
59
+ if (apiUrl.startsWith("https://"))
60
+ return "wss://" + apiUrl.slice("https://".length);
61
+ if (apiUrl.startsWith("http://"))
62
+ return "ws://" + apiUrl.slice("http://".length);
63
+ return apiUrl;
64
+ }
65
+ /**
66
+ * Finds `.primitive/config.json` by walking up from `cwd`, or returns the
67
+ * PRIMITIVE_PROJECT_CONFIG override when it is set (and exists).
68
+ */
69
+ export function findPrimitiveConfigPath(options = {}) {
70
+ const env = options.env ?? process.env;
71
+ const override = env.PRIMITIVE_PROJECT_CONFIG;
72
+ if (override) {
73
+ const forced = resolve(override);
74
+ return existsSync(forced) ? forced : null;
75
+ }
76
+ let current = resolve(options.cwd ?? process.cwd());
77
+ while (true) {
78
+ const candidate = join(current, PROJECT_CONFIG_DIR, PROJECT_CONFIG_FILENAME);
79
+ if (existsSync(candidate))
80
+ return candidate;
81
+ const parent = dirname(current);
82
+ if (parent === current)
83
+ return null;
84
+ current = parent;
85
+ }
86
+ }
87
+ /**
88
+ * The project root for a config path: the parent of `.primitive/`, or the
89
+ * containing directory when the config was pointed at directly (a fixture via
90
+ * PRIMITIVE_PROJECT_CONFIG, which is not inside a `.primitive/` directory).
91
+ */
92
+ export function projectRootForConfigPath(configPath) {
93
+ const dir = dirname(configPath);
94
+ return basename(dir) === PROJECT_CONFIG_DIR ? dirname(dir) : dir;
95
+ }
96
+ /**
97
+ * Local state lives beside the config it belongs to, so a fixture-pointed
98
+ * config never picks up a real project's selection and vice versa.
99
+ */
100
+ export function localStatePathForConfigPath(configPath) {
101
+ return join(dirname(configPath), LOCAL_STATE_FILENAME);
102
+ }
103
+ /**
104
+ * Reads and structurally validates `.primitive/config.json`. Throws rather
105
+ * than guessing: a config that cannot be understood is always louder than a
106
+ * silent fallback to the wrong backend.
107
+ */
108
+ export function readCoreProjectConfig(configPath) {
109
+ if (!existsSync(configPath)) {
110
+ throw new PrimitiveEnvError("missing-config", `No ${PROJECT_CONFIG_DISPLAY_NAME} found at ${configPath}. Run 'primitive init' to create one.`, configPath);
111
+ }
112
+ let raw;
113
+ try {
114
+ raw = readFileSync(configPath, "utf-8");
115
+ }
116
+ catch (err) {
117
+ throw new PrimitiveEnvError("malformed-config", `Failed to read ${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}): ${err.message}`, configPath);
118
+ }
119
+ let parsed;
120
+ try {
121
+ parsed = JSON.parse(raw);
122
+ }
123
+ catch (err) {
124
+ throw new PrimitiveEnvError("malformed-config", `Failed to parse ${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}): ${err.message}`, configPath);
125
+ }
126
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
127
+ throw new PrimitiveEnvError("malformed-config", `${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}) must contain a JSON object at the top level.`, configPath);
128
+ }
129
+ const obj = parsed;
130
+ if (typeof obj.version !== "number" || !Number.isInteger(obj.version)) {
131
+ throw new PrimitiveEnvError("malformed-config", `${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}) is missing required integer field "version".`, configPath);
132
+ }
133
+ if (obj.version !== PRIMITIVE_CONFIG_VERSION) {
134
+ throw new PrimitiveEnvError("unsupported-version", `${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}) has version ${obj.version}, but this tool understands version ${PRIMITIVE_CONFIG_VERSION}.`, configPath);
135
+ }
136
+ if (!obj.environments || typeof obj.environments !== "object" || Array.isArray(obj.environments)) {
137
+ throw new PrimitiveEnvError("malformed-config", `${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}) is missing required "environments" object.`, configPath);
138
+ }
139
+ const environments = {};
140
+ for (const [name, entry] of Object.entries(obj.environments)) {
141
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
142
+ throw new PrimitiveEnvError("malformed-config", `Environment "${name}" must be an object in ${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}).`, configPath);
143
+ }
144
+ const e = entry;
145
+ if (typeof e.apiUrl !== "string" || !e.apiUrl) {
146
+ throw new PrimitiveEnvError("malformed-config", `Environment "${name}" must have a non-empty "apiUrl" string in ${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}).`, configPath);
147
+ }
148
+ environments[name] = {
149
+ apiUrl: e.apiUrl.replace(/\/$/, ""),
150
+ appId: typeof e.appId === "string" ? e.appId : undefined,
151
+ appName: typeof e.appName === "string" ? e.appName : undefined,
152
+ description: typeof e.description === "string" ? e.description : undefined,
153
+ };
154
+ }
155
+ return {
156
+ version: obj.version,
157
+ defaultEnvironment: typeof obj.defaultEnvironment === "string" && obj.defaultEnvironment
158
+ ? obj.defaultEnvironment
159
+ : undefined,
160
+ environments,
161
+ };
162
+ }
163
+ /**
164
+ * Reads this machine's selection from `.primitive/local.json`. Returns null
165
+ * when there is no file or no selection in it; throws when the file exists but
166
+ * cannot be read as the shape `primitive env use` writes.
167
+ */
168
+ export function readLocalSelection(configPath) {
169
+ const path = localStatePathForConfigPath(configPath);
170
+ if (!existsSync(path))
171
+ return null;
172
+ const corrupt = (detail) => {
173
+ throw new PrimitiveEnvError("corrupt-local-state", `${LOCAL_STATE_DISPLAY_NAME} (${path}) is unreadable: ${detail}. Delete the file or re-run 'primitive env use <name>'.`, path);
174
+ };
175
+ let parsed;
176
+ try {
177
+ parsed = JSON.parse(readFileSync(path, "utf-8"));
178
+ }
179
+ catch (err) {
180
+ return corrupt(err.message);
181
+ }
182
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
183
+ return corrupt("expected a JSON object");
184
+ }
185
+ const obj = parsed;
186
+ const selected = obj.selectedEnvironment;
187
+ if (selected === undefined || selected === null || selected === "")
188
+ return null;
189
+ if (typeof selected !== "string") {
190
+ return corrupt(`"selectedEnvironment" must be a string`);
191
+ }
192
+ return selected;
193
+ }
194
+ /**
195
+ * Applies the precedence to an already-loaded config. Exposed separately so
196
+ * the CLI wrapper can run its own field-level validation first and still share
197
+ * one ordering with every other reader.
198
+ */
199
+ export function selectEnvironmentName(config, options) {
200
+ const available = Object.keys(config.environments);
201
+ const list = available.join(", ") || "(none)";
202
+ const where = options.configPath
203
+ ? `${PROJECT_CONFIG_DISPLAY_NAME} (${options.configPath})`
204
+ : PROJECT_CONFIG_DISPLAY_NAME;
205
+ const requireKnown = (name, source, origin) => {
206
+ if (!config.environments[name]) {
207
+ throw new PrimitiveEnvError("unknown-environment", `Environment "${name}" is not defined in ${where} (selected ${origin}). Available: ${list}`, options.configPath);
208
+ }
209
+ return { name, source };
210
+ };
211
+ if (options.explicitEnvName) {
212
+ return requireKnown(options.explicitEnvName, "explicit", "explicitly");
213
+ }
214
+ if (options.envVarName) {
215
+ return requireKnown(options.envVarName, "env-var", "via PRIMITIVE_ENV");
216
+ }
217
+ if (options.localSelection) {
218
+ return requireKnown(options.localSelection, "local", `in ${LOCAL_STATE_DISPLAY_NAME}`);
219
+ }
220
+ if (config.defaultEnvironment) {
221
+ return requireKnown(config.defaultEnvironment, "default", `as "defaultEnvironment"`);
222
+ }
223
+ if (available.length === 1) {
224
+ return { name: available[0], source: "sole" };
225
+ }
226
+ if (available.length === 0) {
227
+ throw new PrimitiveEnvError("no-selection", `${where} has no environments defined. Run 'primitive env add <name>' or 'primitive init'.`, options.configPath);
228
+ }
229
+ throw new PrimitiveEnvError("no-selection", `No environment selected. Run 'primitive env use <name>', set "defaultEnvironment" in ${where}, or export PRIMITIVE_ENV. Available: ${list}`, options.configPath);
230
+ }
231
+ /**
232
+ * The whole algorithm end to end: discover the config, read the selection,
233
+ * apply the precedence, derive the WebSocket URL.
234
+ */
235
+ export function resolvePrimitiveEnv(options = {}) {
236
+ const env = options.env ?? process.env;
237
+ const configPath = options.configPath ?? findPrimitiveConfigPath({ cwd: options.cwd, env });
238
+ if (!configPath) {
239
+ throw new PrimitiveEnvError("missing-config", `No ${PROJECT_CONFIG_DISPLAY_NAME} found in ${options.cwd ?? process.cwd()} or any parent directory. Run 'primitive init' to create one, or 'primitive env add <name>' to add an environment.`);
240
+ }
241
+ const config = readCoreProjectConfig(configPath);
242
+ const { name, source } = selectEnvironmentName(config, {
243
+ explicitEnvName: options.explicitEnvName || null,
244
+ envVarName: env.PRIMITIVE_ENV || null,
245
+ localSelection: readLocalSelection(configPath),
246
+ configPath,
247
+ });
248
+ const entry = config.environments[name];
249
+ if (options.requireAppId && !entry.appId) {
250
+ throw new PrimitiveEnvError("missing-app-id", `Environment "${name}" in ${PROJECT_CONFIG_DISPLAY_NAME} (${configPath}) has no "appId", which this build needs. Add one with 'primitive env add ${name} --api-url ${entry.apiUrl} --app-id <id>' or edit the config.`, configPath);
251
+ }
252
+ return {
253
+ name,
254
+ apiUrl: entry.apiUrl,
255
+ wsUrl: deriveWsUrl(entry.apiUrl),
256
+ appId: entry.appId,
257
+ appName: entry.appName,
258
+ description: entry.description,
259
+ source,
260
+ configPath,
261
+ localStatePath: localStatePathForConfigPath(configPath),
262
+ projectRoot: projectRootForConfigPath(configPath),
263
+ };
264
+ }
265
+ //# sourceMappingURL=env-resolver-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-resolver-core.js","sourceRoot":"","sources":["../../../src/lib/env-resolver-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAehE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAwB;IAC5B,IAAI,CAAU;IAEvB,YAAY,IAA2B,EAAE,OAAe,EAAE,IAAa;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAgDD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAsE,EAAE;IAExE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,wBAAwB,CAAC;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,EAChB,MAAM,2BAA2B,aAAa,UAAU,uCAAuC,EAC/F,UAAU,CACX,CAAC;IACJ,CAAC;IAED,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,kBAAkB,2BAA2B,KAAK,UAAU,MAAM,GAAG,CAAC,OAAO,EAAE,EAC/E,UAAU,CACX,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,mBAAmB,2BAA2B,KAAK,UAAU,MAAM,GAAG,CAAC,OAAO,EAAE,EAChF,UAAU,CACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,GAAG,2BAA2B,KAAK,UAAU,gDAAgD,EAC7F,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,GAAG,2BAA2B,KAAK,UAAU,gDAAgD,EAC7F,UAAU,CACX,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,OAAO,KAAK,wBAAwB,EAAE,CAAC;QAC7C,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,GAAG,2BAA2B,KAAK,UAAU,iBAAiB,GAAG,CAAC,OAAO,uCAAuC,wBAAwB,GAAG,EAC3I,UAAU,CACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,GAAG,2BAA2B,KAAK,UAAU,8CAA8C,EAC3F,UAAU,CACX,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAyC,EAAE,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAuC,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,gBAAgB,IAAI,0BAA0B,2BAA2B,KAAK,UAAU,IAAI,EAC5F,UAAU,CACX,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,IAAI,iBAAiB,CACzB,kBAAkB,EAClB,gBAAgB,IAAI,8CAA8C,2BAA2B,KAAK,UAAU,IAAI,EAChH,UAAU,CACX,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,IAAI,CAAC,GAAG;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACnC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACxD,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC9D,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SAC3E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,kBAAkB,EAChB,OAAO,GAAG,CAAC,kBAAkB,KAAK,QAAQ,IAAI,GAAG,CAAC,kBAAkB;YAClE,CAAC,CAAC,GAAG,CAAC,kBAAkB;YACxB,CAAC,CAAC,SAAS;QACf,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,IAAI,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,OAAO,GAAG,CAAC,MAAc,EAAS,EAAE;QACxC,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,GAAG,wBAAwB,KAAK,IAAI,oBAAoB,MAAM,yDAAyD,EACvH,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,QAAQ,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACzC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAChF,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAyB,EACzB,OAKC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU;QAC9B,CAAC,CAAC,GAAG,2BAA2B,KAAK,OAAO,CAAC,UAAU,GAAG;QAC1D,CAAC,CAAC,2BAA2B,CAAC;IAEhC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAA0B,EAAE,MAAc,EAAE,EAAE;QAChF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,gBAAgB,IAAI,uBAAuB,KAAK,cAAc,MAAM,iBAAiB,IAAI,EAAE,EAC3F,OAAO,CAAC,UAAU,CACnB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,wBAAwB,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,EAAE,yBAAyB,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,iBAAiB,CACzB,cAAc,EACd,GAAG,KAAK,mFAAmF,EAC3F,OAAO,CAAC,UAAU,CACnB,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,iBAAiB,CACzB,cAAc,EACd,wFAAwF,KAAK,yCAAyC,IAAI,EAAE,EAC5I,OAAO,CAAC,UAAU,CACnB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA0B,EAAE;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,IAAI,uBAAuB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,EAChB,MAAM,2BAA2B,aAAa,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,oHAAoH,CAC/L,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAAC,MAAM,EAAE;QACrD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;QAChD,UAAU,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;QACrC,cAAc,EAAE,kBAAkB,CAAC,UAAU,CAAC;QAC9C,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,EAChB,gBAAgB,IAAI,QAAQ,2BAA2B,KAAK,UAAU,6EAA6E,IAAI,cAAc,KAAK,CAAC,MAAM,qCAAqC,EACtN,UAAU,CACX,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM;QACN,UAAU;QACV,cAAc,EAAE,2BAA2B,CAAC,UAAU,CAAC;QACvD,WAAW,EAAE,wBAAwB,CAAC,UAAU,CAAC;KAClD,CAAC;AACJ,CAAC"}