primitive-admin 1.1.0-alpha.9 → 1.1.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 (591) hide show
  1. package/README.md +523 -109
  2. package/assets/skill/skills/primitive-platform/SKILL.md +289 -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 +1282 -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 +471 -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 +1887 -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 +65 -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 +4 -2
  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/skill.d.ts +2 -0
  112. package/dist/src/commands/skill.js +29 -0
  113. package/dist/src/commands/skill.js.map +1 -0
  114. package/dist/src/commands/sync-app-settings.d.ts +158 -0
  115. package/dist/src/commands/sync-app-settings.js +328 -0
  116. package/dist/src/commands/sync-app-settings.js.map +1 -0
  117. package/dist/src/commands/sync.d.ts +2670 -0
  118. package/dist/src/commands/sync.js +17144 -834
  119. package/dist/src/commands/sync.js.map +1 -1
  120. package/dist/src/commands/tokens.d.ts +2 -0
  121. package/dist/src/commands/tokens.js +132 -22
  122. package/dist/src/commands/tokens.js.map +1 -1
  123. package/dist/src/commands/users.d.ts +2 -0
  124. package/dist/src/commands/users.js +542 -24
  125. package/dist/src/commands/users.js.map +1 -1
  126. package/dist/src/commands/vars.d.ts +8 -0
  127. package/dist/src/commands/vars.js +97 -0
  128. package/dist/src/commands/vars.js.map +1 -0
  129. package/dist/src/commands/waitlist.d.ts +2 -0
  130. package/dist/src/commands/waitlist.js +12 -11
  131. package/dist/src/commands/waitlist.js.map +1 -1
  132. package/dist/src/commands/webhooks.d.ts +31 -0
  133. package/dist/src/commands/webhooks.js +633 -0
  134. package/dist/src/commands/webhooks.js.map +1 -0
  135. package/dist/src/commands/workflows.d.ts +88 -0
  136. package/dist/src/commands/workflows.js +1568 -742
  137. package/dist/src/commands/workflows.js.map +1 -1
  138. package/dist/src/lib/access-rule-display.d.ts +21 -0
  139. package/dist/src/lib/access-rule-display.js +34 -0
  140. package/dist/src/lib/access-rule-display.js.map +1 -0
  141. package/dist/src/lib/api-client.d.ts +2550 -0
  142. package/dist/src/lib/api-client.js +2503 -160
  143. package/dist/src/lib/api-client.js.map +1 -1
  144. package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
  145. package/dist/src/lib/app-settings-descriptor.js +583 -0
  146. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  147. package/dist/src/lib/auth-flow.d.ts +8 -0
  148. package/dist/src/lib/batch.d.ts +26 -0
  149. package/dist/src/lib/batch.js +32 -0
  150. package/dist/src/lib/batch.js.map +1 -0
  151. package/dist/src/lib/block-layout.d.ts +160 -0
  152. package/dist/src/lib/block-layout.js +451 -0
  153. package/dist/src/lib/block-layout.js.map +1 -0
  154. package/dist/src/lib/block-selector.d.ts +58 -0
  155. package/dist/src/lib/block-selector.js +92 -0
  156. package/dist/src/lib/block-selector.js.map +1 -0
  157. package/dist/src/lib/canonical-json.d.ts +12 -0
  158. package/dist/src/lib/canonical-json.js +35 -0
  159. package/dist/src/lib/canonical-json.js.map +1 -0
  160. package/dist/src/lib/channel.d.ts +30 -0
  161. package/dist/src/lib/channel.js +68 -0
  162. package/dist/src/lib/channel.js.map +1 -0
  163. package/dist/src/lib/cli-manifest.d.ts +68 -0
  164. package/dist/src/lib/cli-manifest.js +71 -0
  165. package/dist/src/lib/cli-manifest.js.map +1 -0
  166. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
  167. package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
  168. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
  169. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  170. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  171. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  172. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
  173. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
  174. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
  175. package/dist/src/lib/collection-export.d.ts +184 -0
  176. package/dist/src/lib/collection-export.js +252 -0
  177. package/dist/src/lib/collection-export.js.map +1 -0
  178. package/dist/src/lib/config-json-field.d.ts +28 -0
  179. package/dist/src/lib/config-json-field.js +56 -0
  180. package/dist/src/lib/config-json-field.js.map +1 -0
  181. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  182. package/dist/src/lib/config-object-descriptor.js +740 -0
  183. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  184. package/dist/src/lib/config-payload.d.ts +92 -0
  185. package/dist/src/lib/config-payload.js +161 -0
  186. package/dist/src/lib/config-payload.js.map +1 -0
  187. package/dist/src/lib/config-surface.d.ts +141 -0
  188. package/dist/src/lib/config-surface.js +368 -0
  189. package/dist/src/lib/config-surface.js.map +1 -0
  190. package/dist/src/lib/config-toml.d.ts +10 -0
  191. package/dist/src/lib/config-toml.js +42 -0
  192. package/dist/src/lib/config-toml.js.map +1 -0
  193. package/dist/src/lib/config.d.ts +71 -0
  194. package/dist/src/lib/config.js +71 -68
  195. package/dist/src/lib/config.js.map +1 -1
  196. package/dist/src/lib/confirm-prompt.d.ts +83 -0
  197. package/dist/src/lib/confirm-prompt.js +110 -0
  198. package/dist/src/lib/confirm-prompt.js.map +1 -0
  199. package/dist/src/lib/constants.d.ts +11 -0
  200. package/dist/src/lib/constants.js +12 -0
  201. package/dist/src/lib/constants.js.map +1 -0
  202. package/dist/src/lib/crash-handlers.d.ts +20 -0
  203. package/dist/src/lib/crash-handlers.js +49 -0
  204. package/dist/src/lib/crash-handlers.js.map +1 -0
  205. package/dist/src/lib/credentials-store.d.ts +104 -0
  206. package/dist/src/lib/credentials-store.js +336 -0
  207. package/dist/src/lib/credentials-store.js.map +1 -0
  208. package/dist/src/lib/csv.d.ts +47 -0
  209. package/dist/src/lib/csv.js +172 -0
  210. package/dist/src/lib/csv.js.map +1 -0
  211. package/dist/src/lib/data-input.d.ts +23 -0
  212. package/dist/src/lib/data-input.js +50 -0
  213. package/dist/src/lib/data-input.js.map +1 -0
  214. package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
  215. package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
  216. package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
  217. package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
  218. package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
  219. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
  220. package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
  221. package/dist/src/lib/db-codegen/dbNaming.js +180 -0
  222. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
  223. package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
  224. package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
  225. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
  226. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
  227. package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
  228. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
  229. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
  230. package/dist/src/lib/db-codegen/dbTypeIR.js +525 -0
  231. package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
  232. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
  233. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
  234. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
  235. package/dist/src/lib/deprecation.d.ts +22 -0
  236. package/dist/src/lib/deprecation.js +43 -0
  237. package/dist/src/lib/deprecation.js.map +1 -0
  238. package/dist/src/lib/document-export-permissions.d.ts +30 -0
  239. package/dist/src/lib/document-export-permissions.js +54 -0
  240. package/dist/src/lib/document-export-permissions.js.map +1 -0
  241. package/dist/src/lib/document-ingest-artifact.d.ts +120 -0
  242. package/dist/src/lib/document-ingest-artifact.js +505 -0
  243. package/dist/src/lib/document-ingest-artifact.js.map +1 -0
  244. package/dist/src/lib/document-ingest-input.d.ts +51 -0
  245. package/dist/src/lib/document-ingest-input.js +132 -0
  246. package/dist/src/lib/document-ingest-input.js.map +1 -0
  247. package/dist/src/lib/document-ingest-rows.d.ts +137 -0
  248. package/dist/src/lib/document-ingest-rows.js +181 -0
  249. package/dist/src/lib/document-ingest-rows.js.map +1 -0
  250. package/dist/src/lib/document-ingest.d.ts +101 -0
  251. package/dist/src/lib/document-ingest.js +384 -0
  252. package/dist/src/lib/document-ingest.js.map +1 -0
  253. package/dist/src/lib/env-resolver-core.d.ts +258 -0
  254. package/dist/src/lib/env-resolver-core.js +447 -0
  255. package/dist/src/lib/env-resolver-core.js.map +1 -0
  256. package/dist/src/lib/env-resolver.d.ts +99 -0
  257. package/dist/src/lib/env-resolver.js +153 -0
  258. package/dist/src/lib/env-resolver.js.map +1 -0
  259. package/dist/src/lib/fetch.d.ts +5 -0
  260. package/dist/src/lib/function-bundle.d.ts +147 -0
  261. package/dist/src/lib/function-bundle.js +341 -0
  262. package/dist/src/lib/function-bundle.js.map +1 -0
  263. package/dist/src/lib/function-collect.d.ts +123 -0
  264. package/dist/src/lib/function-collect.js +610 -0
  265. package/dist/src/lib/function-collect.js.map +1 -0
  266. package/dist/src/lib/function-db-types.d.ts +202 -0
  267. package/dist/src/lib/function-db-types.js +870 -0
  268. package/dist/src/lib/function-db-types.js.map +1 -0
  269. package/dist/src/lib/function-document-types.d.ts +144 -0
  270. package/dist/src/lib/function-document-types.js +370 -0
  271. package/dist/src/lib/function-document-types.js.map +1 -0
  272. package/dist/src/lib/function-grants-preflight.d.ts +64 -0
  273. package/dist/src/lib/function-grants-preflight.js +105 -0
  274. package/dist/src/lib/function-grants-preflight.js.map +1 -0
  275. package/dist/src/lib/function-log-lines.d.ts +76 -0
  276. package/dist/src/lib/function-log-lines.js +160 -0
  277. package/dist/src/lib/function-log-lines.js.map +1 -0
  278. package/dist/src/lib/function-log-row.d.ts +29 -0
  279. package/dist/src/lib/function-log-row.js +73 -0
  280. package/dist/src/lib/function-log-row.js.map +1 -0
  281. package/dist/src/lib/function-log-tail.d.ts +132 -0
  282. package/dist/src/lib/function-log-tail.js +262 -0
  283. package/dist/src/lib/function-log-tail.js.map +1 -0
  284. package/dist/src/lib/function-run.d.ts +289 -0
  285. package/dist/src/lib/function-run.js +389 -0
  286. package/dist/src/lib/function-run.js.map +1 -0
  287. package/dist/src/lib/function-schema-codegen.d.ts +143 -0
  288. package/dist/src/lib/function-schema-codegen.js +420 -0
  289. package/dist/src/lib/function-schema-codegen.js.map +1 -0
  290. package/dist/src/lib/function-sync.d.ts +459 -0
  291. package/dist/src/lib/function-sync.js +1258 -0
  292. package/dist/src/lib/function-sync.js.map +1 -0
  293. package/dist/src/lib/function-trigger-listing.d.ts +27 -0
  294. package/dist/src/lib/function-trigger-listing.js +70 -0
  295. package/dist/src/lib/function-trigger-listing.js.map +1 -0
  296. package/dist/src/lib/function-typecheck.d.ts +86 -0
  297. package/dist/src/lib/function-typecheck.js +370 -0
  298. package/dist/src/lib/function-typecheck.js.map +1 -0
  299. package/dist/src/lib/function-versions.d.ts +122 -0
  300. package/dist/src/lib/function-versions.js +182 -0
  301. package/dist/src/lib/function-versions.js.map +1 -0
  302. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  303. package/dist/src/lib/generated-allowlist.js +281 -0
  304. package/dist/src/lib/generated-allowlist.js.map +1 -0
  305. package/dist/src/lib/generated-config-surfaces.d.ts +2936 -0
  306. package/dist/src/lib/generated-config-surfaces.js +10569 -0
  307. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  308. package/dist/src/lib/generated-sdk-types.d.ts +12 -0
  309. package/dist/src/lib/generated-sdk-types.js +13 -0
  310. package/dist/src/lib/generated-sdk-types.js.map +1 -0
  311. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  312. package/dist/src/lib/generated-template-lint.js +624 -0
  313. package/dist/src/lib/generated-template-lint.js.map +1 -0
  314. package/dist/src/lib/init-adopt.d.ts +16 -0
  315. package/dist/src/lib/init-adopt.js +34 -0
  316. package/dist/src/lib/init-adopt.js.map +1 -0
  317. package/dist/src/lib/init-assets.d.ts +39 -0
  318. package/dist/src/lib/init-assets.js +97 -0
  319. package/dist/src/lib/init-assets.js.map +1 -0
  320. package/dist/src/lib/init-client-platforms.d.ts +14 -0
  321. package/dist/src/lib/init-client-platforms.js +71 -0
  322. package/dist/src/lib/init-client-platforms.js.map +1 -0
  323. package/dist/src/lib/init-config.d.ts +98 -0
  324. package/dist/src/lib/init-config.js +186 -0
  325. package/dist/src/lib/init-config.js.map +1 -0
  326. package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
  327. package/dist/src/lib/init-email-redirect-uris.js +46 -0
  328. package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
  329. package/dist/src/lib/init-ios-links.d.ts +91 -0
  330. package/dist/src/lib/init-ios-links.js +219 -0
  331. package/dist/src/lib/init-ios-links.js.map +1 -0
  332. package/dist/src/lib/init-plan.d.ts +80 -0
  333. package/dist/src/lib/init-plan.js +95 -0
  334. package/dist/src/lib/init-plan.js.map +1 -0
  335. package/dist/src/lib/init-production-env.d.ts +48 -0
  336. package/dist/src/lib/init-production-env.js +59 -0
  337. package/dist/src/lib/init-production-env.js.map +1 -0
  338. package/dist/src/lib/init-schema.d.ts +74 -0
  339. package/dist/src/lib/init-schema.js +358 -0
  340. package/dist/src/lib/init-schema.js.map +1 -0
  341. package/dist/src/lib/init-xcode.d.ts +34 -0
  342. package/dist/src/lib/init-xcode.js +138 -0
  343. package/dist/src/lib/init-xcode.js.map +1 -0
  344. package/dist/src/lib/integration-request-config.d.ts +30 -0
  345. package/dist/src/lib/integration-request-config.js +145 -0
  346. package/dist/src/lib/integration-request-config.js.map +1 -0
  347. package/dist/src/lib/integration-selector.d.ts +42 -0
  348. package/dist/src/lib/integration-selector.js +46 -0
  349. package/dist/src/lib/integration-selector.js.map +1 -0
  350. package/dist/src/lib/ios-app-id.d.ts +34 -0
  351. package/dist/src/lib/ios-app-id.js +69 -0
  352. package/dist/src/lib/ios-app-id.js.map +1 -0
  353. package/dist/src/lib/list-options.d.ts +68 -0
  354. package/dist/src/lib/list-options.js +89 -0
  355. package/dist/src/lib/list-options.js.map +1 -0
  356. package/dist/src/lib/local-state.d.ts +55 -0
  357. package/dist/src/lib/local-state.js +167 -0
  358. package/dist/src/lib/local-state.js.map +1 -0
  359. package/dist/src/lib/local-test-cases.d.ts +63 -0
  360. package/dist/src/lib/local-test-cases.js +136 -0
  361. package/dist/src/lib/local-test-cases.js.map +1 -0
  362. package/dist/src/lib/log-inspection.d.ts +715 -0
  363. package/dist/src/lib/log-inspection.js +816 -0
  364. package/dist/src/lib/log-inspection.js.map +1 -0
  365. package/dist/src/lib/logout-admin-session.d.ts +33 -0
  366. package/dist/src/lib/logout-admin-session.js +70 -0
  367. package/dist/src/lib/logout-admin-session.js.map +1 -0
  368. package/dist/src/lib/migration-nag.d.ts +49 -0
  369. package/dist/src/lib/migration-nag.js +163 -0
  370. package/dist/src/lib/migration-nag.js.map +1 -0
  371. package/dist/src/lib/object-status-filter.d.ts +22 -0
  372. package/dist/src/lib/object-status-filter.js +45 -0
  373. package/dist/src/lib/object-status-filter.js.map +1 -0
  374. package/dist/src/lib/output.d.ts +124 -0
  375. package/dist/src/lib/output.js +219 -8
  376. package/dist/src/lib/output.js.map +1 -1
  377. package/dist/src/lib/package-manager.d.ts +140 -0
  378. package/dist/src/lib/package-manager.js +305 -0
  379. package/dist/src/lib/package-manager.js.map +1 -0
  380. package/dist/src/lib/paginate.d.ts +98 -0
  381. package/dist/src/lib/paginate.js +112 -0
  382. package/dist/src/lib/paginate.js.map +1 -0
  383. package/dist/src/lib/platform-owned.d.ts +63 -0
  384. package/dist/src/lib/platform-owned.js +85 -0
  385. package/dist/src/lib/platform-owned.js.map +1 -0
  386. package/dist/src/lib/project-config.d.ts +122 -0
  387. package/dist/src/lib/project-config.js +244 -0
  388. package/dist/src/lib/project-config.js.map +1 -0
  389. package/dist/src/lib/prompt-cost-format.d.ts +11 -0
  390. package/dist/src/lib/prompt-cost-format.js +41 -0
  391. package/dist/src/lib/prompt-cost-format.js.map +1 -0
  392. package/dist/src/lib/prompt-schema-codegen.d.ts +147 -0
  393. package/dist/src/lib/prompt-schema-codegen.js +462 -0
  394. package/dist/src/lib/prompt-schema-codegen.js.map +1 -0
  395. package/dist/src/lib/query-operators.d.ts +43 -0
  396. package/dist/src/lib/query-operators.js +80 -0
  397. package/dist/src/lib/query-operators.js.map +1 -0
  398. package/dist/src/lib/record-filter.d.ts +18 -0
  399. package/dist/src/lib/record-filter.js +55 -0
  400. package/dist/src/lib/record-filter.js.map +1 -0
  401. package/dist/src/lib/refresh-admin-credentials.d.ts +73 -0
  402. package/dist/src/lib/refresh-admin-credentials.js +123 -0
  403. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  404. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  405. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  406. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  407. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  408. package/dist/src/lib/resolve-init-server.js +77 -0
  409. package/dist/src/lib/resolve-init-server.js.map +1 -0
  410. package/dist/src/lib/resolve-owner.d.ts +19 -0
  411. package/dist/src/lib/resolve-owner.js +20 -0
  412. package/dist/src/lib/resolve-owner.js.map +1 -0
  413. package/dist/src/lib/resolve-platform.d.ts +74 -0
  414. package/dist/src/lib/resolve-platform.js +105 -0
  415. package/dist/src/lib/resolve-platform.js.map +1 -0
  416. package/dist/src/lib/run-status.d.ts +19 -0
  417. package/dist/src/lib/run-status.generated.d.ts +39 -0
  418. package/dist/src/lib/run-status.generated.js +66 -0
  419. package/dist/src/lib/run-status.generated.js.map +1 -0
  420. package/dist/src/lib/run-status.js +19 -0
  421. package/dist/src/lib/run-status.js.map +1 -0
  422. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  423. package/dist/src/lib/server-text-normalization.js +90 -0
  424. package/dist/src/lib/server-text-normalization.js.map +1 -0
  425. package/dist/src/lib/server-url.d.ts +22 -0
  426. package/dist/src/lib/server-url.js +33 -0
  427. package/dist/src/lib/server-url.js.map +1 -0
  428. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  429. package/dist/src/lib/signing-secret-status.js +116 -0
  430. package/dist/src/lib/signing-secret-status.js.map +1 -0
  431. package/dist/src/lib/skill-installer.d.ts +71 -0
  432. package/dist/src/lib/skill-installer.js +441 -0
  433. package/dist/src/lib/skill-installer.js.map +1 -0
  434. package/dist/src/lib/snapshot-audit-source.d.ts +45 -0
  435. package/dist/src/lib/snapshot-audit-source.js +58 -0
  436. package/dist/src/lib/snapshot-audit-source.js.map +1 -0
  437. package/dist/src/lib/snapshot-audit-store.d.ts +52 -0
  438. package/dist/src/lib/snapshot-audit-store.js +196 -0
  439. package/dist/src/lib/snapshot-audit-store.js.map +1 -0
  440. package/dist/src/lib/snapshot-audit.d.ts +207 -0
  441. package/dist/src/lib/snapshot-audit.js +431 -0
  442. package/dist/src/lib/snapshot-audit.js.map +1 -0
  443. package/dist/src/lib/snapshot-build-rows.d.ts +60 -0
  444. package/dist/src/lib/snapshot-build-rows.js +87 -0
  445. package/dist/src/lib/snapshot-build-rows.js.map +1 -0
  446. package/dist/src/lib/snapshot-build.d.ts +50 -0
  447. package/dist/src/lib/snapshot-build.js +111 -0
  448. package/dist/src/lib/snapshot-build.js.map +1 -0
  449. package/dist/src/lib/snapshot-manifest-layout.d.ts +61 -0
  450. package/dist/src/lib/snapshot-manifest-layout.js +70 -0
  451. package/dist/src/lib/snapshot-manifest-layout.js.map +1 -0
  452. package/dist/src/lib/snapshots.d.ts +98 -0
  453. package/dist/src/lib/snapshots.js +294 -0
  454. package/dist/src/lib/snapshots.js.map +1 -0
  455. package/dist/src/lib/step-run-table.d.ts +43 -0
  456. package/dist/src/lib/step-run-table.js +129 -0
  457. package/dist/src/lib/step-run-table.js.map +1 -0
  458. package/dist/src/lib/storage-pending-retry.d.ts +26 -0
  459. package/dist/src/lib/storage-pending-retry.js +42 -0
  460. package/dist/src/lib/storage-pending-retry.js.map +1 -0
  461. package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
  462. package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
  463. package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
  464. package/dist/src/lib/swift-codegen/banners.d.ts +24 -0
  465. package/dist/src/lib/swift-codegen/banners.js +25 -0
  466. package/dist/src/lib/swift-codegen/banners.js.map +1 -0
  467. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
  468. package/dist/src/lib/swift-codegen/dbGenerator.js +926 -0
  469. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  470. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  471. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  472. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  473. package/dist/src/lib/swift-codegen/functionGenerator.d.ts +139 -0
  474. package/dist/src/lib/swift-codegen/functionGenerator.js +462 -0
  475. package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -0
  476. package/dist/src/lib/swift-codegen/generator.d.ts +100 -0
  477. package/dist/src/lib/swift-codegen/generator.js +457 -0
  478. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  479. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +87 -0
  480. package/dist/src/lib/swift-codegen/schemaToSwift.js +661 -0
  481. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  482. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
  483. package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
  484. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  485. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  486. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  487. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  488. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  489. package/dist/src/lib/sync-dir-selector.js +30 -0
  490. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  491. package/dist/src/lib/sync-paths.d.ts +128 -0
  492. package/dist/src/lib/sync-paths.js +195 -0
  493. package/dist/src/lib/sync-paths.js.map +1 -0
  494. package/dist/src/lib/sync-resource-types.d.ts +563 -0
  495. package/dist/src/lib/sync-resource-types.js +1073 -0
  496. package/dist/src/lib/sync-resource-types.js.map +1 -0
  497. package/dist/src/lib/sync-selectors.d.ts +138 -0
  498. package/dist/src/lib/sync-selectors.js +289 -0
  499. package/dist/src/lib/sync-selectors.js.map +1 -0
  500. package/dist/src/lib/template.d.ts +170 -0
  501. package/dist/src/lib/template.js +484 -68
  502. package/dist/src/lib/template.js.map +1 -1
  503. package/dist/src/lib/test-case-file-names.d.ts +40 -0
  504. package/dist/src/lib/test-case-file-names.js +91 -0
  505. package/dist/src/lib/test-case-file-names.js.map +1 -0
  506. package/dist/src/lib/test-case-keys.d.ts +29 -0
  507. package/dist/src/lib/test-case-keys.js +55 -0
  508. package/dist/src/lib/test-case-keys.js.map +1 -0
  509. package/dist/src/lib/test-case-variables.d.ts +29 -0
  510. package/dist/src/lib/test-case-variables.js +71 -0
  511. package/dist/src/lib/test-case-variables.js.map +1 -0
  512. package/dist/src/lib/token-inject.d.ts +56 -0
  513. package/dist/src/lib/token-inject.js +204 -0
  514. package/dist/src/lib/token-inject.js.map +1 -0
  515. package/dist/src/lib/toml-database-config.d.ts +123 -0
  516. package/dist/src/lib/toml-database-config.js +544 -0
  517. package/dist/src/lib/toml-database-config.js.map +1 -0
  518. package/dist/src/lib/toml-metadata-config.d.ts +151 -0
  519. package/dist/src/lib/toml-metadata-config.js +476 -0
  520. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  521. package/dist/src/lib/toml-native-form.d.ts +46 -0
  522. package/dist/src/lib/toml-native-form.js +78 -0
  523. package/dist/src/lib/toml-native-form.js.map +1 -0
  524. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  525. package/dist/src/lib/toml-params-validator.js +298 -0
  526. package/dist/src/lib/toml-params-validator.js.map +1 -0
  527. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  528. package/dist/src/lib/toml-scalar-edit.js +283 -0
  529. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  530. package/dist/src/lib/user-selector.d.ts +24 -0
  531. package/dist/src/lib/user-selector.js +33 -0
  532. package/dist/src/lib/user-selector.js.map +1 -0
  533. package/dist/src/lib/version-check.d.ts +35 -0
  534. package/dist/src/lib/version-check.js +241 -0
  535. package/dist/src/lib/version-check.js.map +1 -0
  536. package/dist/src/lib/watch.d.ts +121 -0
  537. package/dist/src/lib/watch.js +169 -0
  538. package/dist/src/lib/watch.js.map +1 -0
  539. package/dist/src/lib/web-url.d.ts +40 -0
  540. package/dist/src/lib/web-url.js +76 -0
  541. package/dist/src/lib/web-url.js.map +1 -0
  542. package/dist/src/lib/webhook-deliver.d.ts +209 -0
  543. package/dist/src/lib/webhook-deliver.js +519 -0
  544. package/dist/src/lib/webhook-deliver.js.map +1 -0
  545. package/dist/src/lib/workflow-apply.d.ts +110 -0
  546. package/dist/src/lib/workflow-apply.js +164 -0
  547. package/dist/src/lib/workflow-apply.js.map +1 -0
  548. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
  549. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
  550. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
  551. package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
  552. package/dist/src/lib/workflow-codegen/generator.js +361 -0
  553. package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
  554. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
  555. package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
  556. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  557. package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
  558. package/dist/src/lib/workflow-codegen/naming.js +81 -0
  559. package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
  560. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
  561. package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
  562. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
  563. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  564. package/dist/src/lib/workflow-config-apply.js +137 -0
  565. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  566. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  567. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  568. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  569. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  570. package/dist/src/lib/workflow-defaults.js +41 -0
  571. package/dist/src/lib/workflow-defaults.js.map +1 -0
  572. package/dist/src/lib/workflow-fragments.d.ts +64 -0
  573. package/dist/src/lib/workflow-fragments.js +342 -0
  574. package/dist/src/lib/workflow-fragments.js.map +1 -0
  575. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  576. package/dist/src/lib/workflow-include-preserve.js +286 -0
  577. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  578. package/dist/src/lib/workflow-payload.d.ts +98 -0
  579. package/dist/src/lib/workflow-payload.js +178 -0
  580. package/dist/src/lib/workflow-payload.js.map +1 -0
  581. package/dist/src/lib/workflow-toml-validator.d.ts +211 -0
  582. package/dist/src/lib/workflow-toml-validator.js +770 -0
  583. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  584. package/dist/src/lib/workflow-usage.d.ts +196 -0
  585. package/dist/src/lib/workflow-usage.js +310 -0
  586. package/dist/src/lib/workflow-usage.js.map +1 -0
  587. package/dist/src/types/index.d.ts +591 -0
  588. package/dist/src/validators.d.ts +65 -0
  589. package/dist/src/validators.js +64 -0
  590. package/dist/src/validators.js.map +1 -0
  591. package/package.json +34 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-inject.js","sourceRoot":"","sources":["../../../src/lib/token-inject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Helpers for emitting `DatabaseTypeOperation` configs as native TOML.
3
+ *
4
+ * Background (issue #752): historically `config pull` serialized
5
+ * `definition` and `params` as JSON strings stuffed into a single TOML
6
+ * field, which produced unreviewable 800-char one-liners. This module
7
+ * lets us emit them as nested TOML tables when they're representable,
8
+ * while preserving the existing file's shape so we don't generate
9
+ * surprise diffs.
10
+ *
11
+ * Three responsibilities:
12
+ * 1. `detectExistingOperationForms()` — read the raw TOML source and
13
+ * decide, per operation name, whether the file uses JSON-string
14
+ * form ("legacy") or nested-table form ("native") for each of
15
+ * `definition` and `params`. This drives form preservation on
16
+ * `config pull`.
17
+ * 2. `canEmitNative()` — recursively check whether a JS value can be
18
+ * represented in TOML **without data loss**. Returns a reason string
19
+ * if not. Catches `null`/`undefined` (and arrays containing `null`),
20
+ * which every TOML serializer silently drops on write. Heterogeneous
21
+ * arrays are fine — the config round-trip uses `smol-toml` (TOML 1.0),
22
+ * which emits and re-parses them faithfully (issue #1450).
23
+ * 3. `buildDatabaseTypeTomlData()` — builds the JS object that we
24
+ * hand to `stringifyConfigToml`. Per operation, decides JSON-string vs
25
+ * native based on (existing form, can-emit, override mode).
26
+ */
27
+ import { type FieldForm } from "./toml-native-form.js";
28
+ export { type FieldForm, classifyInlineFieldForm, canEmitNative, } from "./toml-native-form.js";
29
+ export interface OperationFormHints {
30
+ /** Map of op name → existing form for `definition`. Missing op = "default". */
31
+ definition: Map<string, FieldForm>;
32
+ /** Map of op name → existing form for `params`. Missing op = "default". */
33
+ params: Map<string, FieldForm>;
34
+ }
35
+ /**
36
+ * Inspect the raw TOML source for a database-type file and decide which
37
+ * form each operation's `definition`/`params` currently use.
38
+ *
39
+ * Detection is intentionally simple: we walk `[[operations]]` blocks in
40
+ * source order and, for each one, look for either a `definition = '...'`
41
+ * line (legacy) or an `[operations.definition]` / `[operations.definition.X]`
42
+ * sub-header (native).
43
+ */
44
+ export declare function detectExistingOperationForms(rawToml: string): OperationFormHints;
45
+ /**
46
+ * Normalize a `params` value into a sorted array of
47
+ * `{ name, type, required, ... }` rows, suitable for emitting as
48
+ * `[[operations.params]]`. Accepts both shapes the wire/parser supports:
49
+ * - object form: `{ projectId: { type: "string", required: true } }`
50
+ * - array form: `[{ name: "projectId", type: "string", required: true }]`
51
+ */
52
+ export declare function normalizeParamsToArray(params: any): any[] | null;
53
+ export interface BuildOptions {
54
+ /** Per-op form hints derived from `detectExistingOperationForms`. */
55
+ hints?: OperationFormHints;
56
+ /**
57
+ * Override the default form for ops with no hint. Used by `config pull`
58
+ * to keep behavior backwards-compatible if we ever flip the default,
59
+ * and by `config migrate-toml` to force native everywhere.
60
+ */
61
+ defaultForm?: FieldForm;
62
+ /** Sink for human-readable fallback messages. */
63
+ logger?: (message: string) => void;
64
+ /**
65
+ * Server `DatabaseTypeSubscription` rows to emit as `[[subscriptions]]`
66
+ * blocks (issue #803). Already sanitized by the controller's
67
+ * `sanitizeSubscription` (so `select`/`emit` are arrays and `params` is an
68
+ * object). Omitted on the `migrate-toml` path (no subscriptions to merge).
69
+ */
70
+ subscriptions?: any[];
71
+ }
72
+ /**
73
+ * Build the JS object to pass to `stringifyConfigToml` for a database-type
74
+ * config file. Per operation:
75
+ * - If the chosen form is "native" AND `definition` is TOML-emittable,
76
+ * emit `[operations.definition]` (nested table).
77
+ * - Else emit `definition = '<json string>'` and log a message.
78
+ * - Same logic independently for `params`, but the native form for
79
+ * params is `[[operations.params]]` (array-of-tables).
80
+ */
81
+ export declare function buildDatabaseTypeTomlData(typeConfig: any, operations: any[], ruleSetIdToName: Map<string, string>, options?: BuildOptions): any;
82
+ /**
83
+ * Thrown when a `[[subscriptions]]` block declares both `accessRule` and
84
+ * `access` with different values. We never silently drop the field
85
+ * (issue #803 maintainer decision): prefer `access` when they agree, error
86
+ * when they conflict so the operator fixes the source of truth.
87
+ */
88
+ export declare class SubscriptionAccessKeyConflictError extends Error {
89
+ subscriptionKey: string | undefined;
90
+ constructor(subscriptionKey: string | undefined);
91
+ }
92
+ /**
93
+ * Resolve the subscription `access` CEL expression from a TOML row.
94
+ *
95
+ * The server's wire key is `access`; the issue author (and the guides) used
96
+ * `accessRule`. We accept both: prefer `access` when present, fall back to
97
+ * `accessRule`, and never silently drop the field. If both are present with
98
+ * different values, throw so the conflict is surfaced rather than guessed.
99
+ */
100
+ export declare function resolveSubscriptionAccess(sub: any): string | undefined;
101
+ /**
102
+ * Normalize a `[[subscriptions]]` TOML row into the server's wire shape.
103
+ *
104
+ * Mirrors `normalizeOperationFromToml`. Maps the `accessRule`→`access`
105
+ * alias (issue #803), and passes `select` / `emit` / `params` through in
106
+ * native form — the server stores them as JSON strings and re-parses on
107
+ * read (`sanitizeSubscription`), so the parse → push → pull round-trip is
108
+ * symmetric with operations' `definition` / `params`.
109
+ *
110
+ * `filter` stays required server-side; we forward whatever is present (or
111
+ * undefined) and let the controller's clean named 400 surface.
112
+ */
113
+ export declare function normalizeSubscriptionFromToml(sub: any): any;
114
+ /**
115
+ * After parsing TOML, normalize the `definition` and `params` of each
116
+ * operation row into the JS objects the server expects. Handles both
117
+ * native and legacy forms transparently. The server payload is the
118
+ * source of truth; native TOML is purely a source-control affordance.
119
+ *
120
+ * Mirrors `parseDatabaseTypeToml` in `sync.ts`, but is broken out here
121
+ * so the migrate-toml command can call it without re-implementing.
122
+ */
123
+ export declare function normalizeOperationFromToml(op: any): any;
@@ -0,0 +1,544 @@
1
+ /**
2
+ * Helpers for emitting `DatabaseTypeOperation` configs as native TOML.
3
+ *
4
+ * Background (issue #752): historically `config pull` serialized
5
+ * `definition` and `params` as JSON strings stuffed into a single TOML
6
+ * field, which produced unreviewable 800-char one-liners. This module
7
+ * lets us emit them as nested TOML tables when they're representable,
8
+ * while preserving the existing file's shape so we don't generate
9
+ * surprise diffs.
10
+ *
11
+ * Three responsibilities:
12
+ * 1. `detectExistingOperationForms()` — read the raw TOML source and
13
+ * decide, per operation name, whether the file uses JSON-string
14
+ * form ("legacy") or nested-table form ("native") for each of
15
+ * `definition` and `params`. This drives form preservation on
16
+ * `config pull`.
17
+ * 2. `canEmitNative()` — recursively check whether a JS value can be
18
+ * represented in TOML **without data loss**. Returns a reason string
19
+ * if not. Catches `null`/`undefined` (and arrays containing `null`),
20
+ * which every TOML serializer silently drops on write. Heterogeneous
21
+ * arrays are fine — the config round-trip uses `smol-toml` (TOML 1.0),
22
+ * which emits and re-parses them faithfully (issue #1450).
23
+ * 3. `buildDatabaseTypeTomlData()` — builds the JS object that we
24
+ * hand to `stringifyConfigToml`. Per operation, decides JSON-string vs
25
+ * native based on (existing form, can-emit, override mode).
26
+ */
27
+ import { parseConfigToml } from "./config-toml.js";
28
+ import { serializeDeclaredAccessManifest } from "./toml-metadata-config.js";
29
+ import { DATABASE_TYPE_TABLE } from "./config-surface.js";
30
+ import { projectRecordToToml } from "./config-payload.js";
31
+ import { classifyInlineFieldForm, canEmitNative, } from "./toml-native-form.js";
32
+ // `FieldForm`, `classifyInlineFieldForm`, and `canEmitNative` moved to the
33
+ // neutral `toml-native-form.ts` module (issue #1446) so workflow-schema
34
+ // serialization can share them without importing a database-specific module.
35
+ // Re-exported here so existing importers keep working.
36
+ export { classifyInlineFieldForm, canEmitNative, } from "./toml-native-form.js";
37
+ /**
38
+ * Inspect the raw TOML source for a database-type file and decide which
39
+ * form each operation's `definition`/`params` currently use.
40
+ *
41
+ * Detection is intentionally simple: we walk `[[operations]]` blocks in
42
+ * source order and, for each one, look for either a `definition = '...'`
43
+ * line (legacy) or an `[operations.definition]` / `[operations.definition.X]`
44
+ * sub-header (native).
45
+ */
46
+ export function detectExistingOperationForms(rawToml) {
47
+ const lines = rawToml.split(/\r?\n/);
48
+ const operations = [];
49
+ let current = null;
50
+ // `inSubTable` flips to true the moment we descend into a sub-table of
51
+ // the current operation (e.g. `[operations.definition]` or
52
+ // `[[operations.params]]`). Once true, subsequent `name = "..."` /
53
+ // `definition = "..."` / `params = "..."` lines belong to the sub-table,
54
+ // not to the operation itself, so we must not let them overwrite the
55
+ // op-level fields (review feedback r3246634568).
56
+ let inSubTable = false;
57
+ for (const rawLine of lines) {
58
+ const line = rawLine.trim();
59
+ if (line === "[[operations]]") {
60
+ if (current)
61
+ operations.push(current);
62
+ current = { name: null, definition: null, params: null };
63
+ inSubTable = false;
64
+ continue;
65
+ }
66
+ if (!current)
67
+ continue;
68
+ // Sub-header for this op's definition or params.
69
+ if (/^\[operations\.definition(\..+)?\]/.test(line) || /^\[\[operations\.definition\..+\]\]/.test(line)) {
70
+ if (current.definition === null)
71
+ current.definition = "native";
72
+ inSubTable = true;
73
+ continue;
74
+ }
75
+ if (/^\[\[operations\.params\]\]/.test(line) || /^\[operations\.params(\..+)?\]/.test(line)) {
76
+ if (current.params === null)
77
+ current.params = "native";
78
+ inSubTable = true;
79
+ continue;
80
+ }
81
+ // A new top-level array-of-tables block ends the operation's scope
82
+ // for our purposes. We don't fully parse TOML here; we just stop
83
+ // ascribing later lines to this op.
84
+ if (/^\[\[/.test(line) && !line.startsWith("[[operations.")) {
85
+ operations.push(current);
86
+ current = null;
87
+ inSubTable = false;
88
+ continue;
89
+ }
90
+ if (/^\[/.test(line) && !line.startsWith("[operations.")) {
91
+ operations.push(current);
92
+ current = null;
93
+ inSubTable = false;
94
+ continue;
95
+ }
96
+ // Op-level fields. Skip if we've already descended into a sub-table —
97
+ // a `name = "id"` inside `[[operations.params]]` belongs to the param,
98
+ // not to the operation. Same for any other key we recognize here.
99
+ if (inSubTable)
100
+ continue;
101
+ const m = line.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(.*)$/);
102
+ if (!m)
103
+ continue;
104
+ const key = m[1];
105
+ const value = m[2];
106
+ if (key === "name") {
107
+ const nameMatch = value.match(/^["'](.+)["']\s*$/);
108
+ if (nameMatch)
109
+ current.name = nameMatch[1];
110
+ }
111
+ else if (key === "definition" && current.definition === null) {
112
+ // Distinguish the inline-table form (`definition = { ... }`) from the
113
+ // legacy JSON-string form (`definition = '...'`) so an inline author
114
+ // round-trips through native emission, not back to a JSON string
115
+ // (issue #1255).
116
+ current.definition = classifyInlineFieldForm(value);
117
+ }
118
+ else if (key === "params" && current.params === null) {
119
+ current.params = classifyInlineFieldForm(value);
120
+ }
121
+ }
122
+ if (current)
123
+ operations.push(current);
124
+ const definition = new Map();
125
+ const params = new Map();
126
+ for (const op of operations) {
127
+ if (!op.name)
128
+ continue;
129
+ if (op.definition)
130
+ definition.set(op.name, op.definition);
131
+ if (op.params)
132
+ params.set(op.name, op.params);
133
+ }
134
+ return { definition, params };
135
+ }
136
+ /**
137
+ * Normalize a `params` value into a sorted array of
138
+ * `{ name, type, required, ... }` rows, suitable for emitting as
139
+ * `[[operations.params]]`. Accepts both shapes the wire/parser supports:
140
+ * - object form: `{ projectId: { type: "string", required: true } }`
141
+ * - array form: `[{ name: "projectId", type: "string", required: true }]`
142
+ */
143
+ export function normalizeParamsToArray(params) {
144
+ if (params == null)
145
+ return null;
146
+ if (Array.isArray(params)) {
147
+ return params
148
+ .map((p) => ({ ...p }))
149
+ .filter((p) => p && typeof p === "object");
150
+ }
151
+ if (typeof params === "object") {
152
+ return Object.entries(params).map(([name, spec]) => ({
153
+ name,
154
+ ...(spec && typeof spec === "object" ? spec : {}),
155
+ }));
156
+ }
157
+ return null;
158
+ }
159
+ /**
160
+ * Default form for a new operation (no existing form hint): native.
161
+ * That matches the issue's "new file from server → native by default"
162
+ * requirement.
163
+ */
164
+ const DEFAULT_FORM = "native";
165
+ /**
166
+ * Build the JS object to pass to `stringifyConfigToml` for a database-type
167
+ * config file. Per operation:
168
+ * - If the chosen form is "native" AND `definition` is TOML-emittable,
169
+ * emit `[operations.definition]` (nested table).
170
+ * - Else emit `definition = '<json string>'` and log a message.
171
+ * - Same logic independently for `params`, but the native form for
172
+ * params is `[[operations.params]]` (array-of-tables).
173
+ */
174
+ export function buildDatabaseTypeTomlData(typeConfig, operations, ruleSetIdToName, options = {}) {
175
+ const hints = options.hints;
176
+ const defaultForm = options.defaultForm ?? DEFAULT_FORM;
177
+ const log = options.logger ?? (() => { });
178
+ // #2644 — the `[type]` key set comes from the vendored definition, so a
179
+ // scalar added there is written with no edit here. Only the two keys whose
180
+ // emitted VALUE is their own carry a producer:
181
+ //
182
+ // `ruleSetName` — prefer the parsed-from-key-based-reference name when
183
+ // present (`_ruleSetName` is set by `parseDatabaseTypeToml` when the
184
+ // source TOML uses the modern `ruleSetName = "..."` form), so the
185
+ // parse → serialize cycle is a no-op for the rule-set field even when the
186
+ // caller passes an empty `ruleSetIdToName` map (e.g. `config migrate-toml`,
187
+ // review feedback r3246633010). The empty string is the "no rule set"
188
+ // spelling these files have always used, and is emitted always.
189
+ // `timestamps` (#748) — an inline table under `[type]`; the server returns
190
+ // the parsed `{ create?, update?, models? }` object, which serializes 1:1
191
+ // so a pull → push cycle is idempotent.
192
+ const data = {
193
+ type: projectRecordToToml(DATABASE_TYPE_TABLE, typeConfig, {
194
+ ruleSetId: (record) => {
195
+ if (record?._ruleSetName)
196
+ return record._ruleSetName;
197
+ return record?.ruleSetId
198
+ ? ruleSetIdToName.get(record.ruleSetId) || ""
199
+ : "";
200
+ },
201
+ }),
202
+ };
203
+ if (typeConfig.triggers) {
204
+ data.triggers = typeConfig.triggers;
205
+ }
206
+ // Issue #666: inline schema TOML. The server-side `schema` field is a raw
207
+ // TOML string of `[models.*.fields.*]` blocks. Parse + merge into the same
208
+ // TOML object so the result serializes as `[models.<Name>.fields.<field>]`
209
+ // headers (matches the round-2 plan-of-record CLI sync layout).
210
+ if (typeConfig.schema && typeof typeConfig.schema === "string") {
211
+ try {
212
+ const parsedSchema = parseConfigToml(typeConfig.schema);
213
+ if (parsedSchema?.models) {
214
+ data.models = parsedSchema.models;
215
+ }
216
+ }
217
+ catch {
218
+ // If the stored TOML is malformed (operationally surprising), don't
219
+ // crash the serializer — fall through without the models block.
220
+ }
221
+ }
222
+ // Declared-access manifest (issue #1304, P-C): merge the top-level
223
+ // `[metadata]` + `secrets` fragments so a pull→push→pull cycle round-trips.
224
+ // Emitted before the operations-only early return so a type with a manifest
225
+ // but no operations still writes it.
226
+ Object.assign(data, serializeDeclaredAccessManifest(typeConfig.metadataManifest));
227
+ // Subscriptions (issue #803) — emitted as `[[subscriptions]]` array-of-
228
+ // tables, independent of operations. Built before the operations-only
229
+ // early return so a type with subscriptions but no operations still emits
230
+ // them.
231
+ const subscriptionRows = buildSubscriptionRows(options.subscriptions, log);
232
+ if (operations.length === 0) {
233
+ if (subscriptionRows.length > 0) {
234
+ data.subscriptions = subscriptionRows;
235
+ }
236
+ return data;
237
+ }
238
+ data.operations = operations.map((op) => {
239
+ const opRow = {
240
+ name: op.name,
241
+ type: op.type,
242
+ modelName: op.modelName,
243
+ };
244
+ if (op.access) {
245
+ opRow.access = op.access;
246
+ }
247
+ // ---- definition ----
248
+ const defForm = hints?.definition.get(op.name) ?? defaultForm;
249
+ const defValue = typeof op.definition === "string"
250
+ ? safeParseJson(op.definition)
251
+ : op.definition;
252
+ let definitionEmitted = false;
253
+ if (defForm === "native" && defValue && typeof defValue === "object") {
254
+ const reason = canEmitNative(defValue);
255
+ if (reason) {
256
+ log(`Operation '${op.name}': cannot emit \`definition\` as native TOML (${reason}); falling back to JSON string for this field.`);
257
+ }
258
+ else {
259
+ opRow.definition = defValue;
260
+ definitionEmitted = true;
261
+ }
262
+ }
263
+ if (!definitionEmitted) {
264
+ opRow.definition = typeof op.definition === "object"
265
+ ? JSON.stringify(op.definition)
266
+ : op.definition;
267
+ }
268
+ // ---- params ----
269
+ if (op.params != null) {
270
+ const paramsForm = hints?.params.get(op.name) ?? defaultForm;
271
+ let paramsEmitted = false;
272
+ if (paramsForm === "native") {
273
+ const paramsParsed = typeof op.params === "string"
274
+ ? safeParseJson(op.params)
275
+ : op.params;
276
+ const paramsArray = normalizeParamsToArray(paramsParsed);
277
+ if (paramsArray && paramsArray.length > 0) {
278
+ const reason = canEmitNative(paramsArray);
279
+ if (reason) {
280
+ log(`Operation '${op.name}': cannot emit \`params\` as native TOML (${reason}); falling back to JSON string for this field.`);
281
+ }
282
+ else {
283
+ opRow.params = paramsArray;
284
+ paramsEmitted = true;
285
+ }
286
+ }
287
+ else if (paramsArray && paramsArray.length === 0) {
288
+ // Empty params: skip entirely rather than emitting an empty table.
289
+ paramsEmitted = true;
290
+ }
291
+ }
292
+ if (!paramsEmitted) {
293
+ opRow.params = typeof op.params === "object"
294
+ ? JSON.stringify(op.params)
295
+ : op.params;
296
+ }
297
+ }
298
+ return opRow;
299
+ });
300
+ if (subscriptionRows.length > 0) {
301
+ data.subscriptions = subscriptionRows;
302
+ }
303
+ return data;
304
+ }
305
+ /**
306
+ * Build the `[[subscriptions]]` rows for a database-type TOML file from the
307
+ * server's sanitized subscription list (issue #803).
308
+ *
309
+ * Emits the canonical TOML key order and uses the wire key `access` (we read
310
+ * both `access` and `accessRule` on parse, but always emit `access` so a
311
+ * pull → push round-trip is stable). `select` / `emit` are plain string
312
+ * arrays; `params` is an inline object. Falls back to a JSON string for any
313
+ * field that TOML can't represent natively (mirrors operations'
314
+ * `definition` / `params` fallback), so an exotic `params` shape never
315
+ * breaks serialization.
316
+ */
317
+ function buildSubscriptionRows(subscriptions, log) {
318
+ if (!Array.isArray(subscriptions) || subscriptions.length === 0)
319
+ return [];
320
+ return subscriptions.map((sub) => {
321
+ const row = {
322
+ subscriptionKey: sub.subscriptionKey,
323
+ displayName: sub.displayName,
324
+ modelName: sub.modelName,
325
+ };
326
+ if (sub.description != null && sub.description !== "") {
327
+ row.description = sub.description;
328
+ }
329
+ if (sub.filter != null) {
330
+ row.filter = sub.filter;
331
+ }
332
+ if (sub.access != null) {
333
+ row.access = sub.access;
334
+ }
335
+ // `select` / `emit`: server sanitizes to arrays (or null). Emit when a
336
+ // non-empty array is present.
337
+ if (Array.isArray(sub.select) && sub.select.length > 0) {
338
+ row.select = sub.select;
339
+ }
340
+ if (Array.isArray(sub.emit) && sub.emit.length > 0) {
341
+ row.emit = sub.emit;
342
+ }
343
+ // `params`: server sanitizes to an object (or {}). Emit when non-empty.
344
+ if (sub.params &&
345
+ typeof sub.params === "object" &&
346
+ !Array.isArray(sub.params) &&
347
+ Object.keys(sub.params).length > 0) {
348
+ const reason = canEmitNative(sub.params);
349
+ if (reason) {
350
+ log(`Subscription '${sub.subscriptionKey}': cannot emit \`params\` as native TOML (${reason}); falling back to JSON string.`);
351
+ row.params = JSON.stringify(sub.params);
352
+ }
353
+ else {
354
+ row.params = sub.params;
355
+ }
356
+ }
357
+ // `status`: only emit when not the default "active" so round-tripped
358
+ // files stay clean.
359
+ if (sub.status && sub.status !== "active") {
360
+ row.status = sub.status;
361
+ }
362
+ return row;
363
+ });
364
+ }
365
+ function safeParseJson(s) {
366
+ try {
367
+ return JSON.parse(s);
368
+ }
369
+ catch {
370
+ return s;
371
+ }
372
+ }
373
+ /**
374
+ * Thrown when a `[[subscriptions]]` block declares both `accessRule` and
375
+ * `access` with different values. We never silently drop the field
376
+ * (issue #803 maintainer decision): prefer `access` when they agree, error
377
+ * when they conflict so the operator fixes the source of truth.
378
+ */
379
+ export class SubscriptionAccessKeyConflictError extends Error {
380
+ subscriptionKey;
381
+ constructor(subscriptionKey) {
382
+ super(`Subscription ${subscriptionKey ? `'${subscriptionKey}' ` : ""}declares both \`access\` and \`accessRule\` with different values. ` +
383
+ `Use one (prefer \`access\`, the wire/server key) or make them identical.`);
384
+ this.subscriptionKey = subscriptionKey;
385
+ this.name = "SubscriptionAccessKeyConflictError";
386
+ }
387
+ }
388
+ /**
389
+ * Resolve the subscription `access` CEL expression from a TOML row.
390
+ *
391
+ * The server's wire key is `access`; the issue author (and the guides) used
392
+ * `accessRule`. We accept both: prefer `access` when present, fall back to
393
+ * `accessRule`, and never silently drop the field. If both are present with
394
+ * different values, throw so the conflict is surfaced rather than guessed.
395
+ */
396
+ export function resolveSubscriptionAccess(sub) {
397
+ const hasAccess = sub.access !== undefined && sub.access !== null;
398
+ const hasAccessRule = sub.accessRule !== undefined && sub.accessRule !== null;
399
+ if (hasAccess && hasAccessRule && sub.access !== sub.accessRule) {
400
+ throw new SubscriptionAccessKeyConflictError(sub.subscriptionKey);
401
+ }
402
+ if (hasAccess)
403
+ return sub.access;
404
+ if (hasAccessRule)
405
+ return sub.accessRule;
406
+ return undefined;
407
+ }
408
+ /**
409
+ * Normalize a `[[subscriptions]]` TOML row into the server's wire shape.
410
+ *
411
+ * Mirrors `normalizeOperationFromToml`. Maps the `accessRule`→`access`
412
+ * alias (issue #803), and passes `select` / `emit` / `params` through in
413
+ * native form — the server stores them as JSON strings and re-parses on
414
+ * read (`sanitizeSubscription`), so the parse → push → pull round-trip is
415
+ * symmetric with operations' `definition` / `params`.
416
+ *
417
+ * `filter` stays required server-side; we forward whatever is present (or
418
+ * undefined) and let the controller's clean named 400 surface.
419
+ */
420
+ export function normalizeSubscriptionFromToml(sub) {
421
+ const normalized = {
422
+ subscriptionKey: sub.subscriptionKey,
423
+ displayName: sub.displayName,
424
+ modelName: sub.modelName,
425
+ filter: sub.filter,
426
+ access: resolveSubscriptionAccess(sub),
427
+ };
428
+ // Optional fields are *always* assigned (explicit `null` when absent),
429
+ // mirroring how `normalizeOperationFromToml` always assigns `params`
430
+ // (`= null` when absent). This is load-bearing for the update path: when an
431
+ // operator deletes one of these lines from a `[[subscriptions]]` block and
432
+ // re-pushes, the explicit `null` survives `JSON.stringify` in the PUT body
433
+ // (only `undefined` keys are dropped), passes the controller's
434
+ // `if (body.X !== undefined)` guard, and clears the prior server value.
435
+ // Leaving these `undefined` would silently retain the old server value and
436
+ // re-emit the just-deleted field on the next pull (a spurious diff, and for
437
+ // `select` a tighter-than-intended projection left live).
438
+ normalized.description =
439
+ sub.description !== undefined ? sub.description : null;
440
+ if (sub.status !== undefined) {
441
+ normalized.status = sub.status;
442
+ }
443
+ // `select` / `emit` are plain string arrays in native TOML form. The
444
+ // server validates and JSON-stringifies them; we forward as-is (or `null`
445
+ // to clear a removed line).
446
+ normalized.select = sub.select !== undefined ? sub.select : null;
447
+ normalized.emit = sub.emit !== undefined ? sub.emit : null;
448
+ // `params` accepts either native object form
449
+ // (`{ projectId = { type = "string" } }`) or the array-of-tables form
450
+ // (`[[subscriptions.params]]` rows with a `name` key). Convert array form
451
+ // back to the object the server expects, mirroring operations' params.
452
+ // Always assign (`null` when absent) so a removed `params` clears.
453
+ if (sub.params != null) {
454
+ if (Array.isArray(sub.params)) {
455
+ const obj = {};
456
+ for (const row of sub.params) {
457
+ if (!row || typeof row !== "object" || !row.name)
458
+ continue;
459
+ const { name, ...rest } = row;
460
+ obj[name] = rest;
461
+ }
462
+ normalized.params = obj;
463
+ }
464
+ else if (typeof sub.params === "object") {
465
+ normalized.params = sub.params;
466
+ }
467
+ else {
468
+ normalized.params = null;
469
+ }
470
+ }
471
+ else {
472
+ normalized.params = null;
473
+ }
474
+ return normalized;
475
+ }
476
+ /**
477
+ * After parsing TOML, normalize the `definition` and `params` of each
478
+ * operation row into the JS objects the server expects. Handles both
479
+ * native and legacy forms transparently. The server payload is the
480
+ * source of truth; native TOML is purely a source-control affordance.
481
+ *
482
+ * Mirrors `parseDatabaseTypeToml` in `sync.ts`, but is broken out here
483
+ * so the migrate-toml command can call it without re-implementing.
484
+ */
485
+ export function normalizeOperationFromToml(op) {
486
+ const normalized = {
487
+ name: op.name,
488
+ type: op.type,
489
+ modelName: op.modelName,
490
+ // `access` is optional — when the parent type sets `defaultAccess`,
491
+ // an operation may inherit by omitting this key. Keep null so the
492
+ // server-side controller decides whether to require it. A blank
493
+ // expression is the same inheritance spelled out (#3267): the handler
494
+ // stores `null` for it (`accessProvided` is a trimmed-length check), so
495
+ // comparing `""` against that null was a difference no push could close.
496
+ access: typeof op.access === "string" && op.access.trim().length === 0
497
+ ? null
498
+ : (op.access ?? null),
499
+ };
500
+ if (typeof op.definition === "string") {
501
+ normalized.definition = safeParseJson(op.definition);
502
+ }
503
+ else {
504
+ // Preserve undefined-vs-set parity with the legacy parser by always
505
+ // assigning the key.
506
+ normalized.definition = op.definition;
507
+ }
508
+ if (op.params != null) {
509
+ if (typeof op.params === "string") {
510
+ normalized.params = safeParseJson(op.params);
511
+ }
512
+ else if (Array.isArray(op.params)) {
513
+ // Convert array form back into object form for the server payload.
514
+ const obj = {};
515
+ for (const row of op.params) {
516
+ if (!row || typeof row !== "object" || !row.name)
517
+ continue;
518
+ const { name, ...rest } = row;
519
+ obj[name] = rest;
520
+ }
521
+ normalized.params = obj;
522
+ }
523
+ else if (typeof op.params === "object") {
524
+ normalized.params = op.params;
525
+ }
526
+ }
527
+ else {
528
+ normalized.params = null;
529
+ }
530
+ // An empty params set declares no params (#3267): `params = []`, an empty
531
+ // `[operations.params]` table and a `[[operations.params]]` row naming no
532
+ // param all mean what an absent key means. The server reads them the same
533
+ // way (its declared-param set is empty either way), but the serializer
534
+ // writes nothing back for an empty set — so `{}` on this side compared
535
+ // against the null that round-trips was a difference the push it planned
536
+ // could never close. Sending null converges the server's copy as well.
537
+ if (normalized.params !== null &&
538
+ typeof normalized.params === "object" &&
539
+ Object.keys(normalized.params).length === 0) {
540
+ normalized.params = null;
541
+ }
542
+ return normalized;
543
+ }
544
+ //# sourceMappingURL=toml-database-config.js.map