primitive-admin 1.1.0-alpha.9 → 1.2.0-alpha.0

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 (609) hide show
  1. package/README.md +530 -116
  2. package/assets/skill/skills/primitive-platform/SKILL.md +295 -0
  3. package/dist/bin/primitive.d.ts +2 -0
  4. package/dist/bin/primitive.js +372 -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 +136 -30
  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 +713 -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 +65 -100
  14. package/dist/src/commands/apps.js.map +1 -1
  15. package/dist/src/commands/auth-sessions.d.ts +7 -0
  16. package/dist/src/commands/auth-sessions.js +144 -0
  17. package/dist/src/commands/auth-sessions.js.map +1 -0
  18. package/dist/src/commands/auth.d.ts +2 -0
  19. package/dist/src/commands/auth.js +238 -108
  20. package/dist/src/commands/auth.js.map +1 -1
  21. package/dist/src/commands/blob-buckets.d.ts +2 -0
  22. package/dist/src/commands/blob-buckets.js +331 -0
  23. package/dist/src/commands/blob-buckets.js.map +1 -0
  24. package/dist/src/commands/catalog.d.ts +2 -0
  25. package/dist/src/commands/catalog.js +63 -48
  26. package/dist/src/commands/catalog.js.map +1 -1
  27. package/dist/src/commands/collection-type-configs.d.ts +2 -0
  28. package/dist/src/commands/collection-type-configs.js +85 -0
  29. package/dist/src/commands/collection-type-configs.js.map +1 -0
  30. package/dist/src/commands/collections.d.ts +2 -0
  31. package/dist/src/commands/collections.js +1285 -0
  32. package/dist/src/commands/collections.js.map +1 -0
  33. package/dist/src/commands/comparisons.d.ts +2 -0
  34. package/dist/src/commands/comparisons.js +6 -6
  35. package/dist/src/commands/comparisons.js.map +1 -1
  36. package/dist/src/commands/config.d.ts +46 -0
  37. package/dist/src/commands/config.js +465 -0
  38. package/dist/src/commands/config.js.map +1 -0
  39. package/dist/src/commands/connections.d.ts +2 -0
  40. package/dist/src/commands/connections.js +99 -0
  41. package/dist/src/commands/connections.js.map +1 -0
  42. package/dist/src/commands/cron-triggers.d.ts +2 -0
  43. package/dist/src/commands/cron-triggers.js +266 -0
  44. package/dist/src/commands/cron-triggers.js.map +1 -0
  45. package/dist/src/commands/database-type-configs.d.ts +2 -0
  46. package/dist/src/commands/database-type-configs.js +164 -0
  47. package/dist/src/commands/database-type-configs.js.map +1 -0
  48. package/dist/src/commands/database-types.d.ts +2 -0
  49. package/dist/src/commands/database-types.js +171 -0
  50. package/dist/src/commands/database-types.js.map +1 -0
  51. package/dist/src/commands/databases.d.ts +65 -0
  52. package/dist/src/commands/databases.js +1868 -243
  53. package/dist/src/commands/databases.js.map +1 -1
  54. package/dist/src/commands/documents.d.ts +60 -0
  55. package/dist/src/commands/documents.js +2888 -22
  56. package/dist/src/commands/documents.js.map +1 -1
  57. package/dist/src/commands/email-templates.d.ts +2 -0
  58. package/dist/src/commands/email-templates.js +175 -0
  59. package/dist/src/commands/email-templates.js.map +1 -0
  60. package/dist/src/commands/env.d.ts +23 -0
  61. package/dist/src/commands/env.js +395 -0
  62. package/dist/src/commands/env.js.map +1 -0
  63. package/dist/src/commands/feature-flags.d.ts +14 -0
  64. package/dist/src/commands/feature-flags.js +117 -0
  65. package/dist/src/commands/feature-flags.js.map +1 -0
  66. package/dist/src/commands/functions.d.ts +20 -0
  67. package/dist/src/commands/functions.js +1630 -0
  68. package/dist/src/commands/functions.js.map +1 -0
  69. package/dist/src/commands/group-type-configs.d.ts +2 -0
  70. package/dist/src/commands/group-type-configs.js +87 -0
  71. package/dist/src/commands/group-type-configs.js.map +1 -0
  72. package/dist/src/commands/groups.d.ts +2 -0
  73. package/dist/src/commands/groups.js +81 -113
  74. package/dist/src/commands/groups.js.map +1 -1
  75. package/dist/src/commands/guides.d.ts +223 -0
  76. package/dist/src/commands/guides.js +627 -69
  77. package/dist/src/commands/guides.js.map +1 -1
  78. package/dist/src/commands/init.d.ts +37 -0
  79. package/dist/src/commands/init.js +1693 -208
  80. package/dist/src/commands/init.js.map +1 -1
  81. package/dist/src/commands/integrations.d.ts +2 -0
  82. package/dist/src/commands/integrations.js +428 -187
  83. package/dist/src/commands/integrations.js.map +1 -1
  84. package/dist/src/commands/llm.d.ts +2 -0
  85. package/dist/src/commands/llm.js +13 -8
  86. package/dist/src/commands/llm.js.map +1 -1
  87. package/dist/src/commands/locks.d.ts +8 -0
  88. package/dist/src/commands/locks.js +175 -0
  89. package/dist/src/commands/locks.js.map +1 -0
  90. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  91. package/dist/src/commands/metadata-category-configs.js +113 -0
  92. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  93. package/dist/src/commands/metadata.d.ts +2 -0
  94. package/dist/src/commands/metadata.js +288 -0
  95. package/dist/src/commands/metadata.js.map +1 -0
  96. package/dist/src/commands/prompts.d.ts +2 -0
  97. package/dist/src/commands/prompts.js +322 -634
  98. package/dist/src/commands/prompts.js.map +1 -1
  99. package/dist/src/commands/rule-sets.d.ts +3 -0
  100. package/dist/src/commands/rule-sets.js +139 -148
  101. package/dist/src/commands/rule-sets.js.map +1 -1
  102. package/dist/src/commands/scripts.d.ts +30 -0
  103. package/dist/src/commands/scripts.js +688 -0
  104. package/dist/src/commands/scripts.js.map +1 -0
  105. package/dist/src/commands/secrets.d.ts +2 -0
  106. package/dist/src/commands/secrets.js +109 -0
  107. package/dist/src/commands/secrets.js.map +1 -0
  108. package/dist/src/commands/sessions.d.ts +2 -0
  109. package/dist/src/commands/sessions.js +76 -0
  110. package/dist/src/commands/sessions.js.map +1 -0
  111. package/dist/src/commands/settings.d.ts +18 -0
  112. package/dist/src/commands/settings.js +54 -0
  113. package/dist/src/commands/settings.js.map +1 -0
  114. package/dist/src/commands/skill.d.ts +2 -0
  115. package/dist/src/commands/skill.js +29 -0
  116. package/dist/src/commands/skill.js.map +1 -0
  117. package/dist/src/commands/sync-app-settings.d.ts +158 -0
  118. package/dist/src/commands/sync-app-settings.js +328 -0
  119. package/dist/src/commands/sync-app-settings.js.map +1 -0
  120. package/dist/src/commands/sync.d.ts +2667 -0
  121. package/dist/src/commands/sync.js +17141 -834
  122. package/dist/src/commands/sync.js.map +1 -1
  123. package/dist/src/commands/tokens.d.ts +2 -0
  124. package/dist/src/commands/tokens.js +132 -22
  125. package/dist/src/commands/tokens.js.map +1 -1
  126. package/dist/src/commands/users.d.ts +2 -0
  127. package/dist/src/commands/users.js +542 -24
  128. package/dist/src/commands/users.js.map +1 -1
  129. package/dist/src/commands/vars.d.ts +8 -0
  130. package/dist/src/commands/vars.js +97 -0
  131. package/dist/src/commands/vars.js.map +1 -0
  132. package/dist/src/commands/waitlist.d.ts +2 -0
  133. package/dist/src/commands/waitlist.js +12 -11
  134. package/dist/src/commands/waitlist.js.map +1 -1
  135. package/dist/src/commands/webhooks.d.ts +31 -0
  136. package/dist/src/commands/webhooks.js +633 -0
  137. package/dist/src/commands/webhooks.js.map +1 -0
  138. package/dist/src/commands/workflows.d.ts +88 -0
  139. package/dist/src/commands/workflows.js +1568 -742
  140. package/dist/src/commands/workflows.js.map +1 -1
  141. package/dist/src/lib/access-rule-display.d.ts +21 -0
  142. package/dist/src/lib/access-rule-display.js +34 -0
  143. package/dist/src/lib/access-rule-display.js.map +1 -0
  144. package/dist/src/lib/api-client.d.ts +2513 -0
  145. package/dist/src/lib/api-client.js +2456 -162
  146. package/dist/src/lib/api-client.js.map +1 -1
  147. package/dist/src/lib/app-match-guard.d.ts +44 -0
  148. package/dist/src/lib/app-match-guard.js +72 -0
  149. package/dist/src/lib/app-match-guard.js.map +1 -0
  150. package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
  151. package/dist/src/lib/app-settings-descriptor.js +583 -0
  152. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  153. package/dist/src/lib/auth-flow.d.ts +8 -0
  154. package/dist/src/lib/batch.d.ts +26 -0
  155. package/dist/src/lib/batch.js +32 -0
  156. package/dist/src/lib/batch.js.map +1 -0
  157. package/dist/src/lib/block-layout.d.ts +160 -0
  158. package/dist/src/lib/block-layout.js +451 -0
  159. package/dist/src/lib/block-layout.js.map +1 -0
  160. package/dist/src/lib/block-selector.d.ts +58 -0
  161. package/dist/src/lib/block-selector.js +92 -0
  162. package/dist/src/lib/block-selector.js.map +1 -0
  163. package/dist/src/lib/canonical-json.d.ts +12 -0
  164. package/dist/src/lib/canonical-json.js +35 -0
  165. package/dist/src/lib/canonical-json.js.map +1 -0
  166. package/dist/src/lib/channel.d.ts +30 -0
  167. package/dist/src/lib/channel.js +68 -0
  168. package/dist/src/lib/channel.js.map +1 -0
  169. package/dist/src/lib/cli-manifest.d.ts +68 -0
  170. package/dist/src/lib/cli-manifest.js +71 -0
  171. package/dist/src/lib/cli-manifest.js.map +1 -0
  172. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
  173. package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
  174. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
  175. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  176. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  177. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  178. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
  179. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
  180. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
  181. package/dist/src/lib/collection-export.d.ts +212 -0
  182. package/dist/src/lib/collection-export.js +288 -0
  183. package/dist/src/lib/collection-export.js.map +1 -0
  184. package/dist/src/lib/config-json-field.d.ts +28 -0
  185. package/dist/src/lib/config-json-field.js +56 -0
  186. package/dist/src/lib/config-json-field.js.map +1 -0
  187. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  188. package/dist/src/lib/config-object-descriptor.js +740 -0
  189. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  190. package/dist/src/lib/config-payload.d.ts +92 -0
  191. package/dist/src/lib/config-payload.js +161 -0
  192. package/dist/src/lib/config-payload.js.map +1 -0
  193. package/dist/src/lib/config-surface.d.ts +141 -0
  194. package/dist/src/lib/config-surface.js +368 -0
  195. package/dist/src/lib/config-surface.js.map +1 -0
  196. package/dist/src/lib/config-toml.d.ts +10 -0
  197. package/dist/src/lib/config-toml.js +42 -0
  198. package/dist/src/lib/config-toml.js.map +1 -0
  199. package/dist/src/lib/config.d.ts +71 -0
  200. package/dist/src/lib/config.js +71 -68
  201. package/dist/src/lib/config.js.map +1 -1
  202. package/dist/src/lib/confirm-prompt.d.ts +83 -0
  203. package/dist/src/lib/confirm-prompt.js +110 -0
  204. package/dist/src/lib/confirm-prompt.js.map +1 -0
  205. package/dist/src/lib/constants.d.ts +11 -0
  206. package/dist/src/lib/constants.js +12 -0
  207. package/dist/src/lib/constants.js.map +1 -0
  208. package/dist/src/lib/crash-handlers.d.ts +20 -0
  209. package/dist/src/lib/crash-handlers.js +49 -0
  210. package/dist/src/lib/crash-handlers.js.map +1 -0
  211. package/dist/src/lib/credentials-store.d.ts +104 -0
  212. package/dist/src/lib/credentials-store.js +336 -0
  213. package/dist/src/lib/credentials-store.js.map +1 -0
  214. package/dist/src/lib/csv.d.ts +47 -0
  215. package/dist/src/lib/csv.js +172 -0
  216. package/dist/src/lib/csv.js.map +1 -0
  217. package/dist/src/lib/data-input.d.ts +23 -0
  218. package/dist/src/lib/data-input.js +50 -0
  219. package/dist/src/lib/data-input.js.map +1 -0
  220. package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
  221. package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
  222. package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
  223. package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
  224. package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
  225. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
  226. package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
  227. package/dist/src/lib/db-codegen/dbNaming.js +180 -0
  228. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
  229. package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
  230. package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
  231. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
  232. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
  233. package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
  234. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
  235. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
  236. package/dist/src/lib/db-codegen/dbTypeIR.js +525 -0
  237. package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
  238. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
  239. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
  240. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
  241. package/dist/src/lib/deprecation.d.ts +22 -0
  242. package/dist/src/lib/deprecation.js +43 -0
  243. package/dist/src/lib/deprecation.js.map +1 -0
  244. package/dist/src/lib/document-export-permissions.d.ts +30 -0
  245. package/dist/src/lib/document-export-permissions.js +54 -0
  246. package/dist/src/lib/document-export-permissions.js.map +1 -0
  247. package/dist/src/lib/document-ingest-artifact.d.ts +120 -0
  248. package/dist/src/lib/document-ingest-artifact.js +505 -0
  249. package/dist/src/lib/document-ingest-artifact.js.map +1 -0
  250. package/dist/src/lib/document-ingest-input.d.ts +51 -0
  251. package/dist/src/lib/document-ingest-input.js +132 -0
  252. package/dist/src/lib/document-ingest-input.js.map +1 -0
  253. package/dist/src/lib/document-ingest-rows.d.ts +137 -0
  254. package/dist/src/lib/document-ingest-rows.js +181 -0
  255. package/dist/src/lib/document-ingest-rows.js.map +1 -0
  256. package/dist/src/lib/document-ingest.d.ts +101 -0
  257. package/dist/src/lib/document-ingest.js +384 -0
  258. package/dist/src/lib/document-ingest.js.map +1 -0
  259. package/dist/src/lib/env-resolver-core.d.ts +258 -0
  260. package/dist/src/lib/env-resolver-core.js +447 -0
  261. package/dist/src/lib/env-resolver-core.js.map +1 -0
  262. package/dist/src/lib/env-resolver.d.ts +99 -0
  263. package/dist/src/lib/env-resolver.js +153 -0
  264. package/dist/src/lib/env-resolver.js.map +1 -0
  265. package/dist/src/lib/fetch.d.ts +5 -0
  266. package/dist/src/lib/function-bundle.d.ts +147 -0
  267. package/dist/src/lib/function-bundle.js +341 -0
  268. package/dist/src/lib/function-bundle.js.map +1 -0
  269. package/dist/src/lib/function-collect.d.ts +123 -0
  270. package/dist/src/lib/function-collect.js +610 -0
  271. package/dist/src/lib/function-collect.js.map +1 -0
  272. package/dist/src/lib/function-db-types.d.ts +202 -0
  273. package/dist/src/lib/function-db-types.js +870 -0
  274. package/dist/src/lib/function-db-types.js.map +1 -0
  275. package/dist/src/lib/function-document-types.d.ts +144 -0
  276. package/dist/src/lib/function-document-types.js +370 -0
  277. package/dist/src/lib/function-document-types.js.map +1 -0
  278. package/dist/src/lib/function-grants-preflight.d.ts +64 -0
  279. package/dist/src/lib/function-grants-preflight.js +105 -0
  280. package/dist/src/lib/function-grants-preflight.js.map +1 -0
  281. package/dist/src/lib/function-log-lines.d.ts +76 -0
  282. package/dist/src/lib/function-log-lines.js +160 -0
  283. package/dist/src/lib/function-log-lines.js.map +1 -0
  284. package/dist/src/lib/function-log-row.d.ts +29 -0
  285. package/dist/src/lib/function-log-row.js +73 -0
  286. package/dist/src/lib/function-log-row.js.map +1 -0
  287. package/dist/src/lib/function-log-tail.d.ts +132 -0
  288. package/dist/src/lib/function-log-tail.js +262 -0
  289. package/dist/src/lib/function-log-tail.js.map +1 -0
  290. package/dist/src/lib/function-run.d.ts +289 -0
  291. package/dist/src/lib/function-run.js +389 -0
  292. package/dist/src/lib/function-run.js.map +1 -0
  293. package/dist/src/lib/function-schema-codegen.d.ts +143 -0
  294. package/dist/src/lib/function-schema-codegen.js +420 -0
  295. package/dist/src/lib/function-schema-codegen.js.map +1 -0
  296. package/dist/src/lib/function-sync.d.ts +459 -0
  297. package/dist/src/lib/function-sync.js +1258 -0
  298. package/dist/src/lib/function-sync.js.map +1 -0
  299. package/dist/src/lib/function-trigger-listing.d.ts +27 -0
  300. package/dist/src/lib/function-trigger-listing.js +70 -0
  301. package/dist/src/lib/function-trigger-listing.js.map +1 -0
  302. package/dist/src/lib/function-triggers.d.ts +66 -0
  303. package/dist/src/lib/function-triggers.js +285 -0
  304. package/dist/src/lib/function-triggers.js.map +1 -0
  305. package/dist/src/lib/function-typecheck.d.ts +86 -0
  306. package/dist/src/lib/function-typecheck.js +370 -0
  307. package/dist/src/lib/function-typecheck.js.map +1 -0
  308. package/dist/src/lib/function-versions.d.ts +122 -0
  309. package/dist/src/lib/function-versions.js +182 -0
  310. package/dist/src/lib/function-versions.js.map +1 -0
  311. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  312. package/dist/src/lib/generated-allowlist.js +280 -0
  313. package/dist/src/lib/generated-allowlist.js.map +1 -0
  314. package/dist/src/lib/generated-config-surfaces.d.ts +2936 -0
  315. package/dist/src/lib/generated-config-surfaces.js +10593 -0
  316. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  317. package/dist/src/lib/generated-sdk-types.d.ts +12 -0
  318. package/dist/src/lib/generated-sdk-types.js +13 -0
  319. package/dist/src/lib/generated-sdk-types.js.map +1 -0
  320. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  321. package/dist/src/lib/generated-template-lint.js +624 -0
  322. package/dist/src/lib/generated-template-lint.js.map +1 -0
  323. package/dist/src/lib/generated-workflow-model-fields.d.ts +20 -0
  324. package/dist/src/lib/generated-workflow-model-fields.js +53 -0
  325. package/dist/src/lib/generated-workflow-model-fields.js.map +1 -0
  326. package/dist/src/lib/google-client-secret-status.d.ts +35 -0
  327. package/dist/src/lib/google-client-secret-status.js +56 -0
  328. package/dist/src/lib/google-client-secret-status.js.map +1 -0
  329. package/dist/src/lib/init-adopt.d.ts +16 -0
  330. package/dist/src/lib/init-adopt.js +34 -0
  331. package/dist/src/lib/init-adopt.js.map +1 -0
  332. package/dist/src/lib/init-assets.d.ts +39 -0
  333. package/dist/src/lib/init-assets.js +97 -0
  334. package/dist/src/lib/init-assets.js.map +1 -0
  335. package/dist/src/lib/init-client-platforms.d.ts +14 -0
  336. package/dist/src/lib/init-client-platforms.js +71 -0
  337. package/dist/src/lib/init-client-platforms.js.map +1 -0
  338. package/dist/src/lib/init-config.d.ts +98 -0
  339. package/dist/src/lib/init-config.js +186 -0
  340. package/dist/src/lib/init-config.js.map +1 -0
  341. package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
  342. package/dist/src/lib/init-email-redirect-uris.js +46 -0
  343. package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
  344. package/dist/src/lib/init-ios-links.d.ts +91 -0
  345. package/dist/src/lib/init-ios-links.js +219 -0
  346. package/dist/src/lib/init-ios-links.js.map +1 -0
  347. package/dist/src/lib/init-plan.d.ts +80 -0
  348. package/dist/src/lib/init-plan.js +95 -0
  349. package/dist/src/lib/init-plan.js.map +1 -0
  350. package/dist/src/lib/init-production-env.d.ts +48 -0
  351. package/dist/src/lib/init-production-env.js +59 -0
  352. package/dist/src/lib/init-production-env.js.map +1 -0
  353. package/dist/src/lib/init-schema.d.ts +74 -0
  354. package/dist/src/lib/init-schema.js +358 -0
  355. package/dist/src/lib/init-schema.js.map +1 -0
  356. package/dist/src/lib/init-xcode.d.ts +34 -0
  357. package/dist/src/lib/init-xcode.js +138 -0
  358. package/dist/src/lib/init-xcode.js.map +1 -0
  359. package/dist/src/lib/integration-request-config.d.ts +30 -0
  360. package/dist/src/lib/integration-request-config.js +145 -0
  361. package/dist/src/lib/integration-request-config.js.map +1 -0
  362. package/dist/src/lib/integration-selector.d.ts +42 -0
  363. package/dist/src/lib/integration-selector.js +46 -0
  364. package/dist/src/lib/integration-selector.js.map +1 -0
  365. package/dist/src/lib/ios-app-id.d.ts +34 -0
  366. package/dist/src/lib/ios-app-id.js +69 -0
  367. package/dist/src/lib/ios-app-id.js.map +1 -0
  368. package/dist/src/lib/list-options.d.ts +68 -0
  369. package/dist/src/lib/list-options.js +89 -0
  370. package/dist/src/lib/list-options.js.map +1 -0
  371. package/dist/src/lib/local-state.d.ts +55 -0
  372. package/dist/src/lib/local-state.js +167 -0
  373. package/dist/src/lib/local-state.js.map +1 -0
  374. package/dist/src/lib/local-test-cases.d.ts +63 -0
  375. package/dist/src/lib/local-test-cases.js +136 -0
  376. package/dist/src/lib/local-test-cases.js.map +1 -0
  377. package/dist/src/lib/log-inspection.d.ts +710 -0
  378. package/dist/src/lib/log-inspection.js +814 -0
  379. package/dist/src/lib/log-inspection.js.map +1 -0
  380. package/dist/src/lib/logout-admin-session.d.ts +33 -0
  381. package/dist/src/lib/logout-admin-session.js +70 -0
  382. package/dist/src/lib/logout-admin-session.js.map +1 -0
  383. package/dist/src/lib/migration-nag.d.ts +49 -0
  384. package/dist/src/lib/migration-nag.js +164 -0
  385. package/dist/src/lib/migration-nag.js.map +1 -0
  386. package/dist/src/lib/object-status-filter.d.ts +22 -0
  387. package/dist/src/lib/object-status-filter.js +45 -0
  388. package/dist/src/lib/object-status-filter.js.map +1 -0
  389. package/dist/src/lib/output.d.ts +124 -0
  390. package/dist/src/lib/output.js +219 -8
  391. package/dist/src/lib/output.js.map +1 -1
  392. package/dist/src/lib/package-manager.d.ts +140 -0
  393. package/dist/src/lib/package-manager.js +305 -0
  394. package/dist/src/lib/package-manager.js.map +1 -0
  395. package/dist/src/lib/paginate.d.ts +82 -0
  396. package/dist/src/lib/paginate.js +99 -0
  397. package/dist/src/lib/paginate.js.map +1 -0
  398. package/dist/src/lib/platform-owned.d.ts +63 -0
  399. package/dist/src/lib/platform-owned.js +85 -0
  400. package/dist/src/lib/platform-owned.js.map +1 -0
  401. package/dist/src/lib/project-config.d.ts +122 -0
  402. package/dist/src/lib/project-config.js +244 -0
  403. package/dist/src/lib/project-config.js.map +1 -0
  404. package/dist/src/lib/prompt-cost-format.d.ts +11 -0
  405. package/dist/src/lib/prompt-cost-format.js +41 -0
  406. package/dist/src/lib/prompt-cost-format.js.map +1 -0
  407. package/dist/src/lib/prompt-schema-codegen.d.ts +147 -0
  408. package/dist/src/lib/prompt-schema-codegen.js +462 -0
  409. package/dist/src/lib/prompt-schema-codegen.js.map +1 -0
  410. package/dist/src/lib/query-operators.d.ts +43 -0
  411. package/dist/src/lib/query-operators.js +80 -0
  412. package/dist/src/lib/query-operators.js.map +1 -0
  413. package/dist/src/lib/record-filter.d.ts +18 -0
  414. package/dist/src/lib/record-filter.js +55 -0
  415. package/dist/src/lib/record-filter.js.map +1 -0
  416. package/dist/src/lib/refresh-admin-credentials.d.ts +73 -0
  417. package/dist/src/lib/refresh-admin-credentials.js +123 -0
  418. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  419. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  420. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  421. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  422. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  423. package/dist/src/lib/resolve-init-server.js +77 -0
  424. package/dist/src/lib/resolve-init-server.js.map +1 -0
  425. package/dist/src/lib/resolve-owner.d.ts +19 -0
  426. package/dist/src/lib/resolve-owner.js +20 -0
  427. package/dist/src/lib/resolve-owner.js.map +1 -0
  428. package/dist/src/lib/resolve-platform.d.ts +74 -0
  429. package/dist/src/lib/resolve-platform.js +105 -0
  430. package/dist/src/lib/resolve-platform.js.map +1 -0
  431. package/dist/src/lib/run-status.d.ts +19 -0
  432. package/dist/src/lib/run-status.generated.d.ts +39 -0
  433. package/dist/src/lib/run-status.generated.js +66 -0
  434. package/dist/src/lib/run-status.generated.js.map +1 -0
  435. package/dist/src/lib/run-status.js +19 -0
  436. package/dist/src/lib/run-status.js.map +1 -0
  437. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  438. package/dist/src/lib/server-text-normalization.js +90 -0
  439. package/dist/src/lib/server-text-normalization.js.map +1 -0
  440. package/dist/src/lib/server-url.d.ts +22 -0
  441. package/dist/src/lib/server-url.js +33 -0
  442. package/dist/src/lib/server-url.js.map +1 -0
  443. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  444. package/dist/src/lib/signing-secret-status.js +116 -0
  445. package/dist/src/lib/signing-secret-status.js.map +1 -0
  446. package/dist/src/lib/skill-installer.d.ts +71 -0
  447. package/dist/src/lib/skill-installer.js +441 -0
  448. package/dist/src/lib/skill-installer.js.map +1 -0
  449. package/dist/src/lib/snapshot-audit-source.d.ts +45 -0
  450. package/dist/src/lib/snapshot-audit-source.js +58 -0
  451. package/dist/src/lib/snapshot-audit-source.js.map +1 -0
  452. package/dist/src/lib/snapshot-audit-store.d.ts +52 -0
  453. package/dist/src/lib/snapshot-audit-store.js +196 -0
  454. package/dist/src/lib/snapshot-audit-store.js.map +1 -0
  455. package/dist/src/lib/snapshot-audit.d.ts +207 -0
  456. package/dist/src/lib/snapshot-audit.js +431 -0
  457. package/dist/src/lib/snapshot-audit.js.map +1 -0
  458. package/dist/src/lib/snapshot-build-rows.d.ts +60 -0
  459. package/dist/src/lib/snapshot-build-rows.js +87 -0
  460. package/dist/src/lib/snapshot-build-rows.js.map +1 -0
  461. package/dist/src/lib/snapshot-build.d.ts +50 -0
  462. package/dist/src/lib/snapshot-build.js +111 -0
  463. package/dist/src/lib/snapshot-build.js.map +1 -0
  464. package/dist/src/lib/snapshot-manifest-layout.d.ts +61 -0
  465. package/dist/src/lib/snapshot-manifest-layout.js +70 -0
  466. package/dist/src/lib/snapshot-manifest-layout.js.map +1 -0
  467. package/dist/src/lib/snapshots.d.ts +98 -0
  468. package/dist/src/lib/snapshots.js +294 -0
  469. package/dist/src/lib/snapshots.js.map +1 -0
  470. package/dist/src/lib/step-run-table.d.ts +43 -0
  471. package/dist/src/lib/step-run-table.js +129 -0
  472. package/dist/src/lib/step-run-table.js.map +1 -0
  473. package/dist/src/lib/storage-pending-retry.d.ts +26 -0
  474. package/dist/src/lib/storage-pending-retry.js +42 -0
  475. package/dist/src/lib/storage-pending-retry.js.map +1 -0
  476. package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
  477. package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
  478. package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
  479. package/dist/src/lib/swift-codegen/banners.d.ts +24 -0
  480. package/dist/src/lib/swift-codegen/banners.js +25 -0
  481. package/dist/src/lib/swift-codegen/banners.js.map +1 -0
  482. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
  483. package/dist/src/lib/swift-codegen/dbGenerator.js +926 -0
  484. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  485. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  486. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  487. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  488. package/dist/src/lib/swift-codegen/functionGenerator.d.ts +139 -0
  489. package/dist/src/lib/swift-codegen/functionGenerator.js +462 -0
  490. package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -0
  491. package/dist/src/lib/swift-codegen/generator.d.ts +100 -0
  492. package/dist/src/lib/swift-codegen/generator.js +457 -0
  493. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  494. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +87 -0
  495. package/dist/src/lib/swift-codegen/schemaToSwift.js +661 -0
  496. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  497. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
  498. package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
  499. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  500. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  501. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  502. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  503. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  504. package/dist/src/lib/sync-dir-selector.js +30 -0
  505. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  506. package/dist/src/lib/sync-paths.d.ts +128 -0
  507. package/dist/src/lib/sync-paths.js +195 -0
  508. package/dist/src/lib/sync-paths.js.map +1 -0
  509. package/dist/src/lib/sync-resource-types.d.ts +563 -0
  510. package/dist/src/lib/sync-resource-types.js +1073 -0
  511. package/dist/src/lib/sync-resource-types.js.map +1 -0
  512. package/dist/src/lib/sync-selectors.d.ts +138 -0
  513. package/dist/src/lib/sync-selectors.js +289 -0
  514. package/dist/src/lib/sync-selectors.js.map +1 -0
  515. package/dist/src/lib/template.d.ts +170 -0
  516. package/dist/src/lib/template.js +484 -68
  517. package/dist/src/lib/template.js.map +1 -1
  518. package/dist/src/lib/test-case-file-names.d.ts +40 -0
  519. package/dist/src/lib/test-case-file-names.js +91 -0
  520. package/dist/src/lib/test-case-file-names.js.map +1 -0
  521. package/dist/src/lib/test-case-keys.d.ts +29 -0
  522. package/dist/src/lib/test-case-keys.js +55 -0
  523. package/dist/src/lib/test-case-keys.js.map +1 -0
  524. package/dist/src/lib/test-case-variables.d.ts +29 -0
  525. package/dist/src/lib/test-case-variables.js +71 -0
  526. package/dist/src/lib/test-case-variables.js.map +1 -0
  527. package/dist/src/lib/token-inject.d.ts +56 -0
  528. package/dist/src/lib/token-inject.js +204 -0
  529. package/dist/src/lib/token-inject.js.map +1 -0
  530. package/dist/src/lib/toml-database-config.d.ts +123 -0
  531. package/dist/src/lib/toml-database-config.js +544 -0
  532. package/dist/src/lib/toml-database-config.js.map +1 -0
  533. package/dist/src/lib/toml-metadata-config.d.ts +151 -0
  534. package/dist/src/lib/toml-metadata-config.js +476 -0
  535. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  536. package/dist/src/lib/toml-native-form.d.ts +46 -0
  537. package/dist/src/lib/toml-native-form.js +78 -0
  538. package/dist/src/lib/toml-native-form.js.map +1 -0
  539. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  540. package/dist/src/lib/toml-params-validator.js +298 -0
  541. package/dist/src/lib/toml-params-validator.js.map +1 -0
  542. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  543. package/dist/src/lib/toml-scalar-edit.js +283 -0
  544. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  545. package/dist/src/lib/user-selector.d.ts +24 -0
  546. package/dist/src/lib/user-selector.js +33 -0
  547. package/dist/src/lib/user-selector.js.map +1 -0
  548. package/dist/src/lib/version-check.d.ts +35 -0
  549. package/dist/src/lib/version-check.js +241 -0
  550. package/dist/src/lib/version-check.js.map +1 -0
  551. package/dist/src/lib/watch.d.ts +121 -0
  552. package/dist/src/lib/watch.js +169 -0
  553. package/dist/src/lib/watch.js.map +1 -0
  554. package/dist/src/lib/web-url.d.ts +40 -0
  555. package/dist/src/lib/web-url.js +76 -0
  556. package/dist/src/lib/web-url.js.map +1 -0
  557. package/dist/src/lib/webhook-deliver.d.ts +209 -0
  558. package/dist/src/lib/webhook-deliver.js +519 -0
  559. package/dist/src/lib/webhook-deliver.js.map +1 -0
  560. package/dist/src/lib/workflow-apply.d.ts +110 -0
  561. package/dist/src/lib/workflow-apply.js +164 -0
  562. package/dist/src/lib/workflow-apply.js.map +1 -0
  563. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
  564. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
  565. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
  566. package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
  567. package/dist/src/lib/workflow-codegen/generator.js +361 -0
  568. package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
  569. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
  570. package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
  571. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  572. package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
  573. package/dist/src/lib/workflow-codegen/naming.js +81 -0
  574. package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
  575. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
  576. package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
  577. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
  578. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  579. package/dist/src/lib/workflow-config-apply.js +137 -0
  580. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  581. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  582. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  583. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  584. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  585. package/dist/src/lib/workflow-defaults.js +41 -0
  586. package/dist/src/lib/workflow-defaults.js.map +1 -0
  587. package/dist/src/lib/workflow-field-descriptor.d.ts +91 -0
  588. package/dist/src/lib/workflow-field-descriptor.js +153 -0
  589. package/dist/src/lib/workflow-field-descriptor.js.map +1 -0
  590. package/dist/src/lib/workflow-fragments.d.ts +64 -0
  591. package/dist/src/lib/workflow-fragments.js +342 -0
  592. package/dist/src/lib/workflow-fragments.js.map +1 -0
  593. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  594. package/dist/src/lib/workflow-include-preserve.js +286 -0
  595. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  596. package/dist/src/lib/workflow-payload.d.ts +98 -0
  597. package/dist/src/lib/workflow-payload.js +178 -0
  598. package/dist/src/lib/workflow-payload.js.map +1 -0
  599. package/dist/src/lib/workflow-toml-validator.d.ts +211 -0
  600. package/dist/src/lib/workflow-toml-validator.js +770 -0
  601. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  602. package/dist/src/lib/workflow-usage.d.ts +196 -0
  603. package/dist/src/lib/workflow-usage.js +310 -0
  604. package/dist/src/lib/workflow-usage.js.map +1 -0
  605. package/dist/src/types/index.d.ts +591 -0
  606. package/dist/src/validators.d.ts +65 -0
  607. package/dist/src/validators.js +64 -0
  608. package/dist/src/validators.js.map +1 -0
  609. package/package.json +34 -9
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Shared source-directory resolution for the CLI codegen commands
3
+ * (`workflows codegen` #1442, `databases codegen` #814, `databases schema
4
+ * generate` #666, issue #1510).
5
+ *
6
+ * Each of them reads a set of `*.toml` schemas out of one synced sub-directory
7
+ * (`workflows/`, `database-type-configs/`) and renders `*.generated.ts` beside
8
+ * them. It used to take four branches to say which directory that was: a
9
+ * `--dir` override, the resolved environment, an `--app`-alone fallback, and —
10
+ * when none of those answered — a SCAN of every `primitive/<env>/<subdir>` that resolved
11
+ * if exactly one environment happened to have the directory. The scan is how
12
+ * `PRIMITIVE_ENV=dev workflows codegen` could generate from the `alpha` TOML,
13
+ * and how two codegen commands in one run could read two different
14
+ * environments.
15
+ *
16
+ * There is one branch now (#3154, intent criterion 4): the sub-directory of
17
+ * the environment's own tree. `resolveSyncDir()` refuses rather than guesses,
18
+ * so an ambiguous project, an unknown `--env` and no project at all each reach
19
+ * the user as themselves.
20
+ *
21
+ * Design notes that survive:
22
+ * - Throw plain `Error`s; the calling commands keep their existing
23
+ * `error(); process.exit(1)` convention (they catch at the boundary). A
24
+ * `PrimitiveEnvError` from the resolver is an Error too, and its message is
25
+ * already the one the user needs.
26
+ * - Do NOT use `resolveAppId()` — it is auth-oriented, and codegen is
27
+ * offline.
28
+ */
29
+ export interface ResolveCodegenSourceDirArgs {
30
+ /** The synced sub-directory to resolve, e.g. "workflows" or "database-type-configs". */
31
+ subdir: string;
32
+ }
33
+ /**
34
+ * The single source directory a codegen command reads its `*.toml` schemas
35
+ * from. Throws with a user-facing message when the environment cannot be
36
+ * resolved or the directory is not there.
37
+ */
38
+ export declare function resolveCodegenSourceDir(args: ResolveCodegenSourceDirArgs): string;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Shared source-directory resolution for the CLI codegen commands
3
+ * (`workflows codegen` #1442, `databases codegen` #814, `databases schema
4
+ * generate` #666, issue #1510).
5
+ *
6
+ * Each of them reads a set of `*.toml` schemas out of one synced sub-directory
7
+ * (`workflows/`, `database-type-configs/`) and renders `*.generated.ts` beside
8
+ * them. It used to take four branches to say which directory that was: a
9
+ * `--dir` override, the resolved environment, an `--app`-alone fallback, and —
10
+ * when none of those answered — a SCAN of every `primitive/<env>/<subdir>` that resolved
11
+ * if exactly one environment happened to have the directory. The scan is how
12
+ * `PRIMITIVE_ENV=dev workflows codegen` could generate from the `alpha` TOML,
13
+ * and how two codegen commands in one run could read two different
14
+ * environments.
15
+ *
16
+ * There is one branch now (#3154, intent criterion 4): the sub-directory of
17
+ * the environment's own tree. `resolveSyncDir()` refuses rather than guesses,
18
+ * so an ambiguous project, an unknown `--env` and no project at all each reach
19
+ * the user as themselves.
20
+ *
21
+ * Design notes that survive:
22
+ * - Throw plain `Error`s; the calling commands keep their existing
23
+ * `error(); process.exit(1)` convention (they catch at the boundary). A
24
+ * `PrimitiveEnvError` from the resolver is an Error too, and its message is
25
+ * already the one the user needs.
26
+ * - Do NOT use `resolveAppId()` — it is auth-oriented, and codegen is
27
+ * offline.
28
+ */
29
+ import { existsSync } from "fs";
30
+ import { join } from "path";
31
+ import { resolveSyncDir } from "../sync-paths.js";
32
+ /**
33
+ * The single source directory a codegen command reads its `*.toml` schemas
34
+ * from. Throws with a user-facing message when the environment cannot be
35
+ * resolved or the directory is not there.
36
+ */
37
+ export function resolveCodegenSourceDir(args) {
38
+ const { subdir } = args;
39
+ const dir = join(resolveSyncDir(), subdir);
40
+ if (!existsSync(dir)) {
41
+ throw new Error(`No ${subdir}/ directory in ${dir}. Run \`primitive config pull\` first, ` +
42
+ `or select another environment with --env <name>.`);
43
+ }
44
+ return dir;
45
+ }
46
+ //# sourceMappingURL=resolveCodegenSourceDir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveCodegenSourceDir.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/resolveCodegenSourceDir.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiC;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,MAAM,MAAM,kBAAkB,GAAG,yCAAyC;YACxE,kDAAkD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * The `collections.json` artifact, and the decisions an import makes from it
3
+ * (#3643).
4
+ *
5
+ * `documents export-all` / `documents import` carry Yjs state, blobs,
6
+ * permissions and aliases, but nothing about collections: which exist, what
7
+ * each contains, who its members are and at what level, its group grants, and
8
+ * who owns it. This module is the half of `collections export` /
9
+ * `collections import` that needs no server — the file's shape, the plan the
10
+ * import builds from it, the comparisons that plan rests on, and the exit
11
+ * rule — so each is checkable on its own, as `document-ingest-rows` and
12
+ * `snapshot-build-rows` are for their commands.
13
+ *
14
+ * The one thing that does NOT live here is resolution: which userId an email
15
+ * answers to, whether a document exists, whether a group exists. Those are
16
+ * reads against a real server, they are the facts the plan is built from, and
17
+ * the command performs them and hands the answers in.
18
+ */
19
+ /** The only file version this CLI reads or writes. */
20
+ export declare const COLLECTION_EXPORT_VERSION = 1;
21
+ /** Its name inside an export directory, beside `manifest.json`. */
22
+ export declare const COLLECTION_EXPORT_FILENAME = "collections.json";
23
+ export type CollectionPermission = "reader" | "read-write";
24
+ export interface ExportedOwner {
25
+ /** The SOURCE app's userId. Meaningful in the target only for a same-app import. */
26
+ userId: string;
27
+ /** Present when the source server could resolve it; the only cross-app identity. */
28
+ email?: string;
29
+ }
30
+ export interface ExportedMember extends ExportedOwner {
31
+ permission: CollectionPermission;
32
+ }
33
+ export interface ExportedGroupGrant {
34
+ groupType: string;
35
+ groupId: string;
36
+ permission: CollectionPermission;
37
+ }
38
+ export interface ExportedCollectionDocument {
39
+ documentId: string;
40
+ addedAt?: string | null;
41
+ }
42
+ export interface ExportedCollection {
43
+ collectionId: string;
44
+ name: string;
45
+ description: string | null;
46
+ collectionType: string | null;
47
+ createdAt: string | null;
48
+ owner: ExportedOwner | null;
49
+ documents: ExportedCollectionDocument[];
50
+ members: ExportedMember[];
51
+ groups: ExportedGroupGrant[];
52
+ }
53
+ export interface CollectionExportFile {
54
+ version: number;
55
+ exportedAt: string;
56
+ sourceAppId: string;
57
+ collectionCount: number;
58
+ collections: ExportedCollection[];
59
+ }
60
+ /** A file as the import reads it: the file, plus what reading it counted. */
61
+ export interface ReadCollectionExportFile extends CollectionExportFile {
62
+ /**
63
+ * How many collections in the file carry a non-empty `contextId`. Files
64
+ * exported before the platform removed the field (#3926) still have one; it
65
+ * is read only to be counted, so the import can say once that it is not
66
+ * carried across. Never written.
67
+ */
68
+ legacyContextIdCount: number;
69
+ }
70
+ /**
71
+ * Resolve the `<path>` an import was given to the file it must read.
72
+ *
73
+ * Both forms work: an export DIRECTORY (the one `documents export-all` also
74
+ * wrote into) and the file itself.
75
+ */
76
+ export declare function resolveCollectionExportPath(inputPath: string): string;
77
+ /**
78
+ * Read and validate `collections.json`.
79
+ *
80
+ * Every refusal here happens BEFORE any request: a file this CLI cannot read
81
+ * is not a reason to start writing collections into the target app.
82
+ */
83
+ export declare function readCollectionExportFile(inputPath: string): ReadCollectionExportFile;
84
+ export type CollectionImportAction = "create" | "merge" | "skip" | "refused";
85
+ /** Which part of a collection a per-item problem is about. */
86
+ export type CollectionProblemKind = "owner" | "collection" | "document" | "member" | "group";
87
+ export interface CollectionImportProblem {
88
+ sourceCollectionId: string;
89
+ name: string;
90
+ kind: CollectionProblemKind;
91
+ /** The offending identity: a userId, an email, a documentId, `type/id`. */
92
+ id: string;
93
+ reason: string;
94
+ }
95
+ /** The target collection a name match found, as far as compatibility cares. */
96
+ export interface ExistingTargetCollection {
97
+ collectionId: string;
98
+ createdBy: string;
99
+ collectionType: string | null;
100
+ }
101
+ export interface CollectionResolution {
102
+ /** The userId the owner resolved to in the TARGET app, or null. */
103
+ ownerUserId: string | null;
104
+ /** Why the owner could not be resolved — becomes the refusal's reason. */
105
+ ownerReason?: string;
106
+ /** The ONE target collection carrying this exact name, if any. */
107
+ existing?: ExistingTargetCollection | null;
108
+ /**
109
+ * Every target collection id carrying this exact name, when more than one
110
+ * does. A name is a label, not an identity (#3925), so matching by name
111
+ * cannot choose between them.
112
+ */
113
+ ambiguousTargetIds?: string[] | null;
114
+ /** The source id of an earlier collection in the same file with this name. */
115
+ duplicateOfSourceId?: string | null;
116
+ }
117
+ export interface CollectionPlanRow {
118
+ sourceCollectionId: string;
119
+ name: string;
120
+ action: CollectionImportAction;
121
+ /** Why it was refused or skipped. Absent for `create`/`merge`. */
122
+ reason?: string;
123
+ /** Where it lands: known up front only for a `merge`. */
124
+ targetCollectionId?: string;
125
+ /** The resolved owner, for a `create`. */
126
+ ownerUserId?: string;
127
+ /** A refusal that must also be REPORTED as a problem carries it here. */
128
+ problem?: Omit<CollectionImportProblem, "sourceCollectionId" | "name">;
129
+ }
130
+ /**
131
+ * Which of `createdBy` and `collectionType` a name match differs on — the
132
+ * fields the server will never let an update change (`collections-controller.ts`
133
+ * rejects a type change; `createdBy` is immutable), so a difference cannot be
134
+ * merged away (F2). A `contextId` an older file still carries is not compared:
135
+ * the platform removed the field (#3926), so it is no difference at all.
136
+ *
137
+ * Returns null when the match is compatible.
138
+ */
139
+ export declare function incompatibleField(collection: Pick<ExportedCollection, "collectionType">, existing: ExistingTargetCollection, ownerUserId: string): "owner" | "collectionType" | null;
140
+ /** What to do about one recorded group grant, given the target's grants. */
141
+ export type GrantDisposition = "grant" | "already-applied" | "update";
142
+ /**
143
+ * Compare a recorded grant with the target's.
144
+ *
145
+ * A grant already at the recorded level counts as applied without a write. A
146
+ * grant at a DIFFERENT level is sent: #3163 recomputes each document's
147
+ * materialized `DocumentGroupPermission` from its live sources on every
148
+ * collection-wide change, so the new level reaches what the group's members can
149
+ * actually do. Before that it did not — `materializeDGP` left an existing row
150
+ * alone once the collection was one of its sources — which is why the import
151
+ * used to report such a grant instead of changing it (F3).
152
+ */
153
+ export declare function grantDisposition(wanted: ExportedGroupGrant, targetGrants: ExportedGroupGrant[]): GrantDisposition;
154
+ /** The line a level change is announced with, named from and to. */
155
+ export declare function grantUpdateLine(groupLabel: string, existingPermission: string, wantedPermission: string): string;
156
+ /**
157
+ * What a server refusal reads as in a per-item problem.
158
+ *
159
+ * The prose alone is not enough to act on. `COLLECTION_FANOUT_LIMIT` is the
160
+ * case that matters here: past `COLLECTION_GROUP_FANOUT_MAX` documents the
161
+ * server refuses a collection-wide group change whole (#3163), and the remedy —
162
+ * split the collection, or grant its documents one at a time — is nothing like
163
+ * the remedy for a 404 group. Carrying the code makes the two tellable apart by
164
+ * a script as well as by a reader.
165
+ */
166
+ export declare function serverReason(err: any): string;
167
+ /**
168
+ * Decide what happens to one collection, from the facts the resolve phase read.
169
+ *
170
+ * Nothing here talks to a server: every input is already an answer.
171
+ */
172
+ export declare function planCollection(collection: ExportedCollection, resolution: CollectionResolution, options: {
173
+ overwrite: boolean;
174
+ }): CollectionPlanRow;
175
+ /**
176
+ * The source ids of earlier same-named collections, keyed by source id.
177
+ *
178
+ * The FIRST collection with a name is the one that may land; every later one
179
+ * maps to it here and is refused.
180
+ */
181
+ export declare function duplicateNameSources(collections: ExportedCollection[]): Map<string, string>;
182
+ /**
183
+ * The target app's collections grouped by name, in listing order.
184
+ *
185
+ * A name is a label, not an identity (#3925), so one name may map to several
186
+ * collections; the resolve phase passes a lone match on as `existing` and more
187
+ * than one as `ambiguousTargetIds`.
188
+ */
189
+ export declare function groupTargetsByName(rows: Array<{
190
+ collectionId: string;
191
+ name: string;
192
+ createdBy: string;
193
+ collectionType?: string | null;
194
+ }>): Map<string, ExistingTargetCollection[]>;
195
+ export interface CollectionImportSummary {
196
+ created: number;
197
+ merged: number;
198
+ skipped: number;
199
+ refused: number;
200
+ groupsGranted: number;
201
+ membersAdded: number;
202
+ documentsAdded: number;
203
+ }
204
+ export declare function emptyImportSummary(): CollectionImportSummary;
205
+ /**
206
+ * The exit rule, in one place: 1 when any per-item problem was reported.
207
+ *
208
+ * A skip for a name collision is NOT a problem — it is the documented way to
209
+ * re-run an import without `--overwrite`. A refusal is, because something the
210
+ * operator asked for did not happen.
211
+ */
212
+ export declare function importExitCode(problems: CollectionImportProblem[]): number;
@@ -0,0 +1,288 @@
1
+ /**
2
+ * The `collections.json` artifact, and the decisions an import makes from it
3
+ * (#3643).
4
+ *
5
+ * `documents export-all` / `documents import` carry Yjs state, blobs,
6
+ * permissions and aliases, but nothing about collections: which exist, what
7
+ * each contains, who its members are and at what level, its group grants, and
8
+ * who owns it. This module is the half of `collections export` /
9
+ * `collections import` that needs no server — the file's shape, the plan the
10
+ * import builds from it, the comparisons that plan rests on, and the exit
11
+ * rule — so each is checkable on its own, as `document-ingest-rows` and
12
+ * `snapshot-build-rows` are for their commands.
13
+ *
14
+ * The one thing that does NOT live here is resolution: which userId an email
15
+ * answers to, whether a document exists, whether a group exists. Those are
16
+ * reads against a real server, they are the facts the plan is built from, and
17
+ * the command performs them and hands the answers in.
18
+ */
19
+ import fs from "node:fs";
20
+ import path from "node:path";
21
+ /** The only file version this CLI reads or writes. */
22
+ export const COLLECTION_EXPORT_VERSION = 1;
23
+ /** Its name inside an export directory, beside `manifest.json`. */
24
+ export const COLLECTION_EXPORT_FILENAME = "collections.json";
25
+ /**
26
+ * Resolve the `<path>` an import was given to the file it must read.
27
+ *
28
+ * Both forms work: an export DIRECTORY (the one `documents export-all` also
29
+ * wrote into) and the file itself.
30
+ */
31
+ export function resolveCollectionExportPath(inputPath) {
32
+ if (fs.existsSync(inputPath) && fs.statSync(inputPath).isDirectory()) {
33
+ return path.join(inputPath, COLLECTION_EXPORT_FILENAME);
34
+ }
35
+ return inputPath;
36
+ }
37
+ /**
38
+ * Read and validate `collections.json`.
39
+ *
40
+ * Every refusal here happens BEFORE any request: a file this CLI cannot read
41
+ * is not a reason to start writing collections into the target app.
42
+ */
43
+ export function readCollectionExportFile(inputPath) {
44
+ const filePath = resolveCollectionExportPath(inputPath);
45
+ if (!fs.existsSync(filePath)) {
46
+ throw new Error(`No ${COLLECTION_EXPORT_FILENAME} found at ${filePath}. Point the ` +
47
+ `import at an export directory holding one, or at the file itself.`);
48
+ }
49
+ let parsed;
50
+ try {
51
+ parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
52
+ }
53
+ catch (err) {
54
+ throw new Error(`${filePath} is not valid JSON: ${err.message}`);
55
+ }
56
+ if (parsed?.version !== COLLECTION_EXPORT_VERSION) {
57
+ throw new Error(`${filePath} declares version ${JSON.stringify(parsed?.version)}; ` +
58
+ `this CLI reads version ${COLLECTION_EXPORT_VERSION} only.`);
59
+ }
60
+ const collections = Array.isArray(parsed.collections) ? parsed.collections : [];
61
+ const legacyContextIdCount = collections.filter((c) => typeof c?.contextId === "string" && c.contextId !== "").length;
62
+ return {
63
+ version: parsed.version,
64
+ exportedAt: String(parsed.exportedAt ?? ""),
65
+ sourceAppId: String(parsed.sourceAppId ?? ""),
66
+ collectionCount: Number(parsed.collectionCount ?? collections.length),
67
+ collections,
68
+ legacyContextIdCount,
69
+ };
70
+ }
71
+ /**
72
+ * Which of `createdBy` and `collectionType` a name match differs on — the
73
+ * fields the server will never let an update change (`collections-controller.ts`
74
+ * rejects a type change; `createdBy` is immutable), so a difference cannot be
75
+ * merged away (F2). A `contextId` an older file still carries is not compared:
76
+ * the platform removed the field (#3926), so it is no difference at all.
77
+ *
78
+ * Returns null when the match is compatible.
79
+ */
80
+ export function incompatibleField(collection, existing, ownerUserId) {
81
+ if (existing.createdBy !== ownerUserId)
82
+ return "owner";
83
+ // The server defaults an unset type to "default", so the file's null and the
84
+ // target's "default" are the same collection type, not a difference.
85
+ const wanted = collection.collectionType || "default";
86
+ if ((existing.collectionType || "default") !== wanted)
87
+ return "collectionType";
88
+ return null;
89
+ }
90
+ /**
91
+ * Compare a recorded grant with the target's.
92
+ *
93
+ * A grant already at the recorded level counts as applied without a write. A
94
+ * grant at a DIFFERENT level is sent: #3163 recomputes each document's
95
+ * materialized `DocumentGroupPermission` from its live sources on every
96
+ * collection-wide change, so the new level reaches what the group's members can
97
+ * actually do. Before that it did not — `materializeDGP` left an existing row
98
+ * alone once the collection was one of its sources — which is why the import
99
+ * used to report such a grant instead of changing it (F3).
100
+ */
101
+ export function grantDisposition(wanted, targetGrants) {
102
+ const existing = targetGrants.find((g) => g.groupType === wanted.groupType && g.groupId === wanted.groupId);
103
+ if (!existing)
104
+ return "grant";
105
+ return existing.permission === wanted.permission
106
+ ? "already-applied"
107
+ : "update";
108
+ }
109
+ /** The line a level change is announced with, named from and to. */
110
+ export function grantUpdateLine(groupLabel, existingPermission, wantedPermission) {
111
+ return (`${groupLabel}: ${existingPermission} → ${wantedPermission} ` +
112
+ `(the level the export records)`);
113
+ }
114
+ /**
115
+ * What a server refusal reads as in a per-item problem.
116
+ *
117
+ * The prose alone is not enough to act on. `COLLECTION_FANOUT_LIMIT` is the
118
+ * case that matters here: past `COLLECTION_GROUP_FANOUT_MAX` documents the
119
+ * server refuses a collection-wide group change whole (#3163), and the remedy —
120
+ * split the collection, or grant its documents one at a time — is nothing like
121
+ * the remedy for a 404 group. Carrying the code makes the two tellable apart by
122
+ * a script as well as by a reader.
123
+ */
124
+ export function serverReason(err) {
125
+ const message = err?.message ?? String(err);
126
+ const code = typeof err?.code === "string" ? err.code : null;
127
+ return code ? `${message} (${code})` : message;
128
+ }
129
+ /**
130
+ * Decide what happens to one collection, from the facts the resolve phase read.
131
+ *
132
+ * Nothing here talks to a server: every input is already an answer.
133
+ */
134
+ export function planCollection(collection, resolution, options) {
135
+ const base = {
136
+ sourceCollectionId: collection.collectionId,
137
+ name: collection.name,
138
+ };
139
+ // The import matches by name, so two collections in one file that share one
140
+ // could not be told apart on a re-run. The second is refused before
141
+ // anything is written, naming both source ids.
142
+ if (resolution.duplicateOfSourceId) {
143
+ return {
144
+ ...base,
145
+ action: "refused",
146
+ reason: `the export lists two collections named "${collection.name}" ` +
147
+ `(${resolution.duplicateOfSourceId} and ${collection.collectionId}); ` +
148
+ `the import matches by name, so the file can describe only one ` +
149
+ `collection per name. Rename one in the export and re-run.`,
150
+ problem: {
151
+ kind: "collection",
152
+ id: collection.collectionId,
153
+ reason: `duplicate name "${collection.name}" in the export file`,
154
+ },
155
+ };
156
+ }
157
+ // Two or more target collections carry the name (#3925): the file could mean
158
+ // any of them, so neither a skip nor a merge is safe. Refused whatever
159
+ // --overwrite says, and ahead of the owner — one problem per collection.
160
+ const ambiguous = resolution.ambiguousTargetIds ?? [];
161
+ if (ambiguous.length > 1) {
162
+ const reason = `${ambiguous.length} collections named "${collection.name}" exist in ` +
163
+ `the target (${ambiguous.join(", ")}), and the import matches by name, ` +
164
+ `so it cannot tell which one the file means`;
165
+ return {
166
+ ...base,
167
+ action: "refused",
168
+ reason: `${reason}. Rename or delete all but one of them in the target, or ` +
169
+ `rename the collection in the export, and re-run.`,
170
+ problem: { kind: "collection", id: collection.name, reason },
171
+ };
172
+ }
173
+ if (!resolution.ownerUserId) {
174
+ const reason = resolution.ownerReason ??
175
+ `its owner could not be resolved in the target app`;
176
+ return {
177
+ ...base,
178
+ action: "refused",
179
+ reason: `${reason}. Pass --owner <userId-or-email> to give every collection in this run an owner that exists here.`,
180
+ problem: {
181
+ kind: "owner",
182
+ id: collection.owner?.email || collection.owner?.userId || "(none)",
183
+ reason,
184
+ },
185
+ };
186
+ }
187
+ const existing = resolution.existing ?? null;
188
+ if (!existing) {
189
+ return {
190
+ ...base,
191
+ action: "create",
192
+ ownerUserId: resolution.ownerUserId,
193
+ };
194
+ }
195
+ // A name match is checked for compatibility WHETHER OR NOT --overwrite was
196
+ // given: none of these fields can be changed after creation, so an
197
+ // incompatible match can never become the collection the file describes, and
198
+ // reporting it under --dry-run is the point (F2).
199
+ const field = incompatibleField(collection, existing, resolution.ownerUserId);
200
+ if (field) {
201
+ const reason = `a collection named "${collection.name}" already exists in the target ` +
202
+ `(${existing.collectionId}) with a different ${field}, which cannot be ` +
203
+ `changed after creation`;
204
+ return {
205
+ ...base,
206
+ action: "refused",
207
+ targetCollectionId: existing.collectionId,
208
+ reason: `${reason}. Delete or rename it, or rename the collection in the export.`,
209
+ problem: { kind: "collection", id: existing.collectionId, reason },
210
+ };
211
+ }
212
+ if (!options.overwrite) {
213
+ return {
214
+ ...base,
215
+ action: "skip",
216
+ targetCollectionId: existing.collectionId,
217
+ reason: `already exists (use --overwrite to merge into ${existing.collectionId})`,
218
+ };
219
+ }
220
+ return {
221
+ ...base,
222
+ action: "merge",
223
+ targetCollectionId: existing.collectionId,
224
+ ownerUserId: resolution.ownerUserId,
225
+ };
226
+ }
227
+ /**
228
+ * The source ids of earlier same-named collections, keyed by source id.
229
+ *
230
+ * The FIRST collection with a name is the one that may land; every later one
231
+ * maps to it here and is refused.
232
+ */
233
+ export function duplicateNameSources(collections) {
234
+ const firstByName = new Map();
235
+ const duplicates = new Map();
236
+ for (const collection of collections) {
237
+ const seen = firstByName.get(collection.name);
238
+ if (seen) {
239
+ duplicates.set(collection.collectionId, seen);
240
+ }
241
+ else {
242
+ firstByName.set(collection.name, collection.collectionId);
243
+ }
244
+ }
245
+ return duplicates;
246
+ }
247
+ /**
248
+ * The target app's collections grouped by name, in listing order.
249
+ *
250
+ * A name is a label, not an identity (#3925), so one name may map to several
251
+ * collections; the resolve phase passes a lone match on as `existing` and more
252
+ * than one as `ambiguousTargetIds`.
253
+ */
254
+ export function groupTargetsByName(rows) {
255
+ const byName = new Map();
256
+ for (const row of rows) {
257
+ const matches = byName.get(row.name) ?? [];
258
+ matches.push({
259
+ collectionId: row.collectionId,
260
+ createdBy: row.createdBy,
261
+ collectionType: row.collectionType ?? null,
262
+ });
263
+ byName.set(row.name, matches);
264
+ }
265
+ return byName;
266
+ }
267
+ export function emptyImportSummary() {
268
+ return {
269
+ created: 0,
270
+ merged: 0,
271
+ skipped: 0,
272
+ refused: 0,
273
+ groupsGranted: 0,
274
+ membersAdded: 0,
275
+ documentsAdded: 0,
276
+ };
277
+ }
278
+ /**
279
+ * The exit rule, in one place: 1 when any per-item problem was reported.
280
+ *
281
+ * A skip for a name collision is NOT a problem — it is the documented way to
282
+ * re-run an import without `--overwrite`. A refusal is, because something the
283
+ * operator asked for did not happen.
284
+ */
285
+ export function importExitCode(problems) {
286
+ return problems.length > 0 ? 1 : 0;
287
+ }
288
+ //# sourceMappingURL=collection-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-export.js","sourceRoot":"","sources":["../../../src/lib/collection-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Emitting a `type: "json"` field (a JSON Schema, a provider-options blob) as
3
+ * TOML — the rule `config pull` writes every such field through.
4
+ *
5
+ * Issue #1446 wrote it for workflows and prompts inside `sync.ts`; #3317 moved
6
+ * it here because `serializeFunction` lives in its own module and needed the
7
+ * same rule rather than a second, subtly different copy of it. A function's
8
+ * schemas are stored as JSON STRINGS on the row, so the module that could not
9
+ * reach this one emitted nothing at all for them, and the comparison read the
10
+ * server as holding no schema.
11
+ */
12
+ /**
13
+ * The TOML value for one `type: "json"` field, or `undefined` when the record
14
+ * holds none (the key is then omitted).
15
+ *
16
+ * The parsed value is emitted as a native table whenever it round-trips
17
+ * faithfully (`canEmitNative === null`), falling back to the JSON string only
18
+ * for the values TOML silently drops (`null` / `undefined` anywhere inside).
19
+ * The empty object `{}` is a real, distinct value (for a schema: "accepts
20
+ * anything") and emits as an empty table, so it survives a pull → push cycle
21
+ * instead of being cleared server-side.
22
+ *
23
+ * The sponsor-approved decision is to always move to native aggressively — no
24
+ * form preservation — so this does not consult the existing file's form.
25
+ *
26
+ * `subject` names the object in the fallback warning, e.g. `Workflow 'greet'`.
27
+ */
28
+ export declare function serializeJsonField(value: any, fieldName: string, subject: string, log: (message: string) => void): any;