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,462 @@
1
+ /**
2
+ * The prompt declaration — #3330, project `server-functions` phase 4.
3
+ *
4
+ * A prompt's `[prompt.outputSchema]` already says what its answer looks like,
5
+ * and `config pull`/`push` already round-trip it. Until now nothing turned it
6
+ * into a type, so a function calling the prompt restated the shape by hand at
7
+ * the call site with nothing checking it — the same complaint the function
8
+ * input/output contract answered, one surface over.
9
+ *
10
+ * `functions/primitive-prompt-types.d.ts` is rendered from `prompts/*.toml`
11
+ * beside the other declarations and regenerated by `config push`,
12
+ * `config pull` and `primitive functions codegen`:
13
+ *
14
+ * - `<Key>PromptOutput` for every prompt that declares an `outputSchema`,
15
+ * through the SAME renderer `primitive-function-types.d.ts` uses, over the
16
+ * same vendored descriptor, so what compiles is what the route validates.
17
+ * - `PrimitivePromptSchemas`, keyed by prompt key, and the
18
+ * `declare module "primitive-functions"` augmentation — the
19
+ * `DatabaseSchemas`/`FunctionSchemas`/`DocumentSchemas` shape. Empty keeps
20
+ * `PromptKeys` open (`string`); a pushed tree narrows it, so an undeclared
21
+ * key is a compile error.
22
+ *
23
+ * A prompt that declares NO schema is `{}` under its key, not an entry with an
24
+ * `unknown` output. That is deliberate: `{}` does not extend `{ output: … }`,
25
+ * so the SDK's `PromptRunResult` falls to its open shape and `parsed` stays
26
+ * optional and `unknown` — and REMOVING a schema therefore turns a handler
27
+ * reading `parsed.field` into a compile error on the next push rather than a
28
+ * runtime `undefined`.
29
+ *
30
+ * ── The suffix ───────────────────────────────────────────────────────────
31
+ *
32
+ * `<Key>PromptOutput`, not `<Key>Output`. A function and the prompt it calls
33
+ * commonly share a key — the issue's own `categorize` — and `<Key>Output`
34
+ * already names the FUNCTION's output in the declaration beside this one.
35
+ *
36
+ * ── Identity is push's ───────────────────────────────────────────────────
37
+ *
38
+ * `config push` resolves a prompt file as
39
+ * `tomlData.prompt?.key || basename(file, ".toml")`, so `local.toml` carrying
40
+ * `key = "categorize"` is deployed as `categorize`. Reading the stem alone
41
+ * would type it under a key the platform never hears about, refuse the call
42
+ * the deployed prompt answers, and attach the schema to the wrong key. Same
43
+ * rule and same reason as `resolveFunctionKey` (CR3281-001) and
44
+ * `databaseTypeSources` (SO3182-003): the generator reads the key the platform
45
+ * will hear about, never the file name alone.
46
+ *
47
+ * ── Agents (#3798) ───────────────────────────────────────────────────────
48
+ *
49
+ * A `kind = "agent"` prompt is never run single-shot, so it has no `output`.
50
+ * Its entry is `{ agent: { variables; clientTools; events } }` instead —
51
+ * `<Key>AgentVariables` from `inputSchema` (the session's variables),
52
+ * `<Key>Tool<Name>Input`/`Output` for each CLIENT tool (a server tool's
53
+ * schemas are its function's, typed in the functions declaration) and
54
+ * `<Key>Event<Name>` for each event kind — and the SDK's `PromptKeys` excludes
55
+ * it, so `ctx.prompts.run("<agent>")` is a compile error. The same types go to
56
+ * the client side as `functions/generated/<key>.agent.generated.ts`
57
+ * (`renderAgentClientFiles`), which an app's web code imports. The
58
+ * declaration is read through `normalizeAgentDeclaration`, the one reader
59
+ * that applies an agent's defaults.
60
+ */
61
+ import { existsSync, readdirSync, readFileSync } from "fs";
62
+ import { basename, join } from "path";
63
+ import { parseConfigToml } from "./config-toml.js";
64
+ import { safeJsonParse } from "./workflow-payload.js";
65
+ import { FunctionSchemaCodegenError, renderTypeDecl, } from "./function-schema-codegen.js";
66
+ import { workflowTypeBaseName } from "./workflow-codegen/naming.js";
67
+ import { tsStringLiteral } from "./codegen-shared/prettierStable.js";
68
+ import { fingerprintToml } from "./db-codegen/dbFingerprint.js";
69
+ import { normalizeAgentDeclaration, promptKindOf, resolveAgentDeclaration, } from "./generated-config-surfaces.js";
70
+ /** The client-side artifact an agent prompt gets, beside the invokers (#3798). */
71
+ export const AGENT_CLIENT_FILE_SUFFIX = ".agent.generated.ts";
72
+ /** The regenerated declaration beside `primitive-function-types.d.ts`. */
73
+ export const PROMPT_TYPES_DECLARATION_FILE = "primitive-prompt-types.d.ts";
74
+ /** The key push will identify this file by. */
75
+ function resolvePromptKey(source, table) {
76
+ return table?.key ? String(table.key) : source.key;
77
+ }
78
+ /**
79
+ * Every `prompts/*.toml` in a tree, read once.
80
+ *
81
+ * `withFileTypes` rather than a name filter alone: a `prompts/<key>.tests/`
82
+ * sidecar directory and anything that is not a regular `.toml` file are not
83
+ * prompt sources, and a directory read as one fails in the parser with a
84
+ * message about TOML instead of being ignored.
85
+ */
86
+ export function promptSchemaSources(configDir) {
87
+ const dir = join(configDir, "prompts");
88
+ if (!existsSync(dir))
89
+ return [];
90
+ const sources = [];
91
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
92
+ if (!entry.isFile() || !entry.name.endsWith(".toml"))
93
+ continue;
94
+ const tomlPath = join(dir, entry.name);
95
+ let tomlContent;
96
+ try {
97
+ tomlContent = readFileSync(tomlPath, "utf-8");
98
+ }
99
+ catch {
100
+ continue;
101
+ }
102
+ sources.push({ key: basename(entry.name, ".toml"), tomlPath, tomlContent });
103
+ }
104
+ return sources;
105
+ }
106
+ /** The tree-relative spelling of a source, for a message an author acts on. */
107
+ function fileLabel(source) {
108
+ const at = source.tomlPath.lastIndexOf("/prompts/");
109
+ return at >= 0 ? source.tomlPath.slice(at + 1) : source.tomlPath;
110
+ }
111
+ /**
112
+ * Parse one file into the data the renderer needs.
113
+ *
114
+ * Throws a `FunctionSchemaCodegenError` naming the file for malformed TOML or
115
+ * malformed schema JSON — the honest "declares nothing" is for an ABSENT
116
+ * schema, never a broken one, because typing a broken schema as anything at
117
+ * all is a declaration that lies.
118
+ */
119
+ export function describePromptSchema(source) {
120
+ let table;
121
+ try {
122
+ table = parseConfigToml(source.tomlContent)?.prompt ?? {};
123
+ }
124
+ catch (error) {
125
+ throw new FunctionSchemaCodegenError(`${fileLabel(source)}: the file does not parse as TOML (${error?.message ?? error})`);
126
+ }
127
+ const key = resolvePromptKey(source, table);
128
+ let outputSchema;
129
+ try {
130
+ // An inline `[prompt.outputSchema]` table and a JSON string alike — the
131
+ // config surface accepts both, so the generator has to read both.
132
+ outputSchema = safeJsonParse(table.outputSchema);
133
+ }
134
+ catch (error) {
135
+ throw new FunctionSchemaCodegenError(`${fileLabel(source)}: \`outputSchema\` is not valid JSON (${error?.message ?? error})`);
136
+ }
137
+ const typeBaseName = workflowTypeBaseName(key);
138
+ return {
139
+ key,
140
+ fileLabel: fileLabel(source),
141
+ outputSchema,
142
+ typeBaseName,
143
+ outputTypeName: `${typeBaseName}PromptOutput`,
144
+ agent: promptKindOf(table) === "agent"
145
+ ? describeAgentTypes(fileLabel(source), typeBaseName, table)
146
+ : null,
147
+ };
148
+ }
149
+ /**
150
+ * A declared name as a property key: bare when it is an identifier, quoted
151
+ * (the way Prettier quotes a string) when it carries a `-`.
152
+ */
153
+ function propertyKey(name) {
154
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : tsStringLiteral(name);
155
+ }
156
+ /**
157
+ * An agent prompt's contract, typed (#3798). The declaration is checked by the
158
+ * same rule push runs (its file-decidable half), so a malformed one fails here
159
+ * naming the file rather than typing something the platform refuses; two
160
+ * client tools (or two events) whose names sanitize to one identifier are
161
+ * refused naming both.
162
+ */
163
+ function describeAgentTypes(label, typeBaseName, table) {
164
+ const resolution = resolveAgentDeclaration({ kind: "agent", agent: table.agent });
165
+ if (resolution.ok === false) {
166
+ throw new FunctionSchemaCodegenError(`${label}: ${resolution.refusals.map((r) => r.message).join("; ")}`);
167
+ }
168
+ let inputSchema;
169
+ try {
170
+ inputSchema = safeJsonParse(table.inputSchema);
171
+ }
172
+ catch (error) {
173
+ throw new FunctionSchemaCodegenError(`${label}: \`inputSchema\` is not valid JSON (${error?.message ?? error})`);
174
+ }
175
+ const declaration = normalizeAgentDeclaration(resolution.declaration);
176
+ const claimed = (what) => {
177
+ const byBase = new Map();
178
+ return (name) => {
179
+ const base = workflowTypeBaseName(name);
180
+ const other = byBase.get(base);
181
+ if (other !== undefined && other !== name) {
182
+ throw new FunctionSchemaCodegenError(`${label}: ${what} names '${other}' and '${name}' both name the ` +
183
+ `generated type \`${typeBaseName}${what === "tool" ? "Tool" : "Event"}${base}\` — ` +
184
+ "rename one so the two do not collide after sanitizing");
185
+ }
186
+ byBase.set(base, name);
187
+ return base;
188
+ };
189
+ };
190
+ const toolBase = claimed("tool");
191
+ const eventBase = claimed("event");
192
+ const clientTools = declaration.tools
193
+ .filter((tool) => tool.runs === "client")
194
+ .map((tool) => {
195
+ const base = `${typeBaseName}Tool${toolBase(tool.name)}`;
196
+ return {
197
+ name: tool.name,
198
+ input: {
199
+ name: tool.name,
200
+ typeName: `${base}Input`,
201
+ schema: tool.inputSchema,
202
+ },
203
+ output: {
204
+ name: tool.name,
205
+ typeName: `${base}Output`,
206
+ schema: tool.outputSchema,
207
+ },
208
+ };
209
+ });
210
+ const events = declaration.events.map((event) => ({
211
+ name: event.name,
212
+ typeName: `${typeBaseName}Event${eventBase(event.name)}`,
213
+ schema: event.schema,
214
+ }));
215
+ return {
216
+ variablesTypeName: `${typeBaseName}AgentVariables`,
217
+ inputSchema,
218
+ clientTools,
219
+ events,
220
+ };
221
+ }
222
+ /** Render one agent type, naming the file and the path when it cannot be. */
223
+ function renderAgentType(prompt, typeName, schema, path) {
224
+ try {
225
+ return renderTypeDecl(typeName, schema);
226
+ }
227
+ catch (error) {
228
+ if (error instanceof FunctionSchemaCodegenError)
229
+ throw error;
230
+ throw new FunctionSchemaCodegenError(`${prompt.fileLabel}: \`${path}\` cannot be rendered as a TypeScript ` +
231
+ `type (${error?.message ?? error})`);
232
+ }
233
+ }
234
+ /** Every type declaration an agent contributes, in a fixed order. */
235
+ function renderAgentTypeDecls(prompt) {
236
+ const agent = prompt.agent;
237
+ return [
238
+ renderAgentType(prompt, agent.variablesTypeName, agent.inputSchema, "inputSchema"),
239
+ ...agent.clientTools.flatMap((tool) => [
240
+ renderAgentType(prompt, tool.input.typeName, tool.input.schema, `tools.${tool.name}.inputSchema`),
241
+ renderAgentType(prompt, tool.output.typeName, tool.output.schema, `tools.${tool.name}.outputSchema`),
242
+ ]),
243
+ ...agent.events.map((event) => renderAgentType(prompt, event.typeName, event.schema, `events.${event.name}.schema`)),
244
+ ];
245
+ }
246
+ /** The one-line `{ agent: … }` entry of `PrimitivePromptSchemas`. */
247
+ function agentSchemaEntry(prompt) {
248
+ const agent = prompt.agent;
249
+ const tools = agent.clientTools
250
+ .map((tool) => `${propertyKey(tool.name)}: { input: ${tool.input.typeName}; output: ${tool.output.typeName} }`)
251
+ .join("; ");
252
+ const events = agent.events
253
+ .map((event) => `${propertyKey(event.name)}: ${event.typeName}`)
254
+ .join("; ");
255
+ return (`{ agent: { variables: ${agent.variablesTypeName}; ` +
256
+ `clientTools: {${tools ? ` ${tools} ` : ""}}; ` +
257
+ `events: {${events ? ` ${events} ` : ""}} } }`);
258
+ }
259
+ /**
260
+ * Describe every source, sorted by key, refusing the two collisions that
261
+ * would silently render one prompt over another: two files resolving to one
262
+ * key (only reachable through an authored `[prompt] key`, since stems are
263
+ * unique), and two keys sanitizing to one identifier.
264
+ */
265
+ function describeAll(sources) {
266
+ const described = sources.map((source) => ({
267
+ prompt: describePromptSchema(source),
268
+ source,
269
+ }));
270
+ described.sort((a, b) => a.prompt.key < b.prompt.key ? -1 : a.prompt.key > b.prompt.key ? 1 : 0);
271
+ const byKey = new Map();
272
+ for (const { prompt, source } of described) {
273
+ const other = byKey.get(prompt.key);
274
+ if (other !== undefined) {
275
+ throw new FunctionSchemaCodegenError(`${fileLabel(other)} and ${fileLabel(source)} both declare the prompt ` +
276
+ `key '${prompt.key}' — one file is one prompt, so rename or remove ` +
277
+ `one \`[prompt] key\``);
278
+ }
279
+ byKey.set(prompt.key, source);
280
+ }
281
+ const byBaseName = new Map();
282
+ for (const { prompt } of described) {
283
+ const other = byBaseName.get(prompt.typeBaseName);
284
+ if (other !== undefined && other !== prompt.key) {
285
+ throw new FunctionSchemaCodegenError(`prompt keys '${other}' and '${prompt.key}' both name the generated ` +
286
+ `type \`${prompt.outputTypeName}\` — rename one so the two do not ` +
287
+ `collide after sanitizing`);
288
+ }
289
+ byBaseName.set(prompt.typeBaseName, prompt.key);
290
+ }
291
+ // #3798 (CSO-3798-001) — an agent's types are named `<Key>Tool…`/`<Key>Event…`,
292
+ // so they can land on another prompt's name even when the two bases differ
293
+ // (event `prompt-output` of `advisor` and the output of `advisor-event`).
294
+ // Every declared name is registered, and a second claim is refused naming
295
+ // both sources rather than one silently redeclaring the other.
296
+ const byTypeName = new Map();
297
+ for (const { prompt } of described) {
298
+ for (const { typeName, path } of declaredTypeNames(prompt)) {
299
+ const where = `${prompt.fileLabel} (\`${path}\`)`;
300
+ const other = byTypeName.get(typeName);
301
+ if (other !== undefined) {
302
+ throw new FunctionSchemaCodegenError(`${other} and ${where} both declare the generated type ` +
303
+ `\`${typeName}\` — rename one so the two do not collide after sanitizing`);
304
+ }
305
+ byTypeName.set(typeName, where);
306
+ }
307
+ }
308
+ return described;
309
+ }
310
+ /** Every type name a prompt's declarations emit, with the schema it comes from. */
311
+ function declaredTypeNames(prompt) {
312
+ const agent = prompt.agent;
313
+ if (!agent) {
314
+ return prompt.outputSchema === undefined
315
+ ? []
316
+ : [{ typeName: prompt.outputTypeName, path: "outputSchema" }];
317
+ }
318
+ return [
319
+ { typeName: agent.variablesTypeName, path: "inputSchema" },
320
+ ...agent.clientTools.flatMap((tool) => [
321
+ { typeName: tool.input.typeName, path: `tools.${tool.name}.inputSchema` },
322
+ { typeName: tool.output.typeName, path: `tools.${tool.name}.outputSchema` },
323
+ ]),
324
+ ...agent.events.map((event) => ({
325
+ typeName: event.typeName,
326
+ path: `events.${event.name}.schema`,
327
+ })),
328
+ ];
329
+ }
330
+ const DECLARATION_HEADER = `// GENERATED by \`primitive config push\` from prompts/*.toml.
331
+ // DO NOT EDIT — your changes are overwritten on the next push.
332
+ //
333
+ // It types \`ctx.prompts.run("<key>")\`: a prompt that declares an
334
+ // \`[prompt.outputSchema]\` hands back \`parsed\` as \`<Key>PromptOutput\` on the
335
+ // success arm, and a key this tree does not declare is a compile error. A
336
+ // prompt that declares no output schema is \`{}\` here, so its \`parsed\` stays
337
+ // optional and \`unknown\`.
338
+ `;
339
+ /**
340
+ * The declaration for a whole tree's prompts. Sorted by key so the bytes
341
+ * depend on the files and not on the order they were read in. The
342
+ * augmentation is emitted even for a tree with no prompt: an empty
343
+ * `PromptSchemas` keeps `PromptKeys` open (`string`), so nothing breaks.
344
+ */
345
+ export function renderPromptSchemasDeclaration(sources) {
346
+ const prompts = describeAll(sources).map((entry) => entry.prompt);
347
+ const lines = [DECLARATION_HEADER];
348
+ for (const prompt of prompts) {
349
+ if (prompt.agent) {
350
+ for (const decl of renderAgentTypeDecls(prompt)) {
351
+ lines.push(decl);
352
+ lines.push("");
353
+ }
354
+ continue;
355
+ }
356
+ if (prompt.outputSchema === undefined)
357
+ continue;
358
+ try {
359
+ lines.push(renderTypeDecl(prompt.outputTypeName, prompt.outputSchema));
360
+ }
361
+ catch (error) {
362
+ if (error instanceof FunctionSchemaCodegenError)
363
+ throw error;
364
+ throw new FunctionSchemaCodegenError(`${prompt.fileLabel}: \`outputSchema\` cannot be rendered as a ` +
365
+ `TypeScript type (${error?.message ?? error})`);
366
+ }
367
+ lines.push("");
368
+ }
369
+ if (prompts.length === 0) {
370
+ lines.push("export interface PrimitivePromptSchemas {}");
371
+ }
372
+ else {
373
+ lines.push("export interface PrimitivePromptSchemas {");
374
+ for (const prompt of prompts) {
375
+ lines.push(prompt.agent
376
+ ? ` ${JSON.stringify(prompt.key)}: ${agentSchemaEntry(prompt)};`
377
+ : prompt.outputSchema === undefined
378
+ ? ` ${JSON.stringify(prompt.key)}: {};`
379
+ : ` ${JSON.stringify(prompt.key)}: { output: ${prompt.outputTypeName} };`);
380
+ }
381
+ lines.push("}");
382
+ }
383
+ lines.push("");
384
+ lines.push(`declare module "primitive-functions" {`);
385
+ lines.push(` interface PromptSchemas extends PrimitivePromptSchemas {}`);
386
+ lines.push(`}`);
387
+ lines.push("");
388
+ return lines.join("\n");
389
+ }
390
+ /**
391
+ * Whether a source is an agent prompt, read leniently: a file that does not
392
+ * parse is not one here (the declaration renderer names the parse failure
393
+ * where it has always named it).
394
+ */
395
+ function isAgentSource(source) {
396
+ try {
397
+ return promptKindOf(parseConfigToml(source.tomlContent)?.prompt) === "agent";
398
+ }
399
+ catch {
400
+ return false;
401
+ }
402
+ }
403
+ /** Whether a tree declares any agent prompt — the codegen gate (DSO-3798-005). */
404
+ export function treeDeclaresAgentPrompt(configDir) {
405
+ return promptSchemaSources(configDir).some(isAgentSource);
406
+ }
407
+ /**
408
+ * The client-side artifact of each agent prompt — #3798:
409
+ * `<key>.agent.generated.ts`, carrying the agent's variables, client-tool and
410
+ * event types, the `<Key>AgentClientTools` / `<Key>AgentEvents` maps an app's
411
+ * session view is typed by, and `<Key>Agent.key`. Written beside the function
412
+ * invokers and owned by the same plan, so the invoker sweep keeps it; a
413
+ * Prettier fixed point, like them (#1565).
414
+ */
415
+ export function renderAgentClientFiles(sources) {
416
+ const agents = describeAll(sources.filter(isAgentSource));
417
+ return agents.map(({ prompt, source }) => {
418
+ const agent = prompt.agent;
419
+ const base = prompt.typeBaseName;
420
+ const toolsMap = agent.clientTools.length === 0
421
+ ? `export interface ${base}AgentClientTools {}`
422
+ : [
423
+ `export interface ${base}AgentClientTools {`,
424
+ ...agent.clientTools.flatMap((tool) => [
425
+ ` ${propertyKey(tool.name)}: {`,
426
+ ` input: ${tool.input.typeName};`,
427
+ ` output: ${tool.output.typeName};`,
428
+ ` };`,
429
+ ]),
430
+ `}`,
431
+ ].join("\n");
432
+ const eventsMap = agent.events.length === 0
433
+ ? `export interface ${base}AgentEvents {}`
434
+ : [
435
+ `export interface ${base}AgentEvents {`,
436
+ ...agent.events.map((event) => ` ${propertyKey(event.name)}: ${event.typeName};`),
437
+ `}`,
438
+ ].join("\n");
439
+ const blocks = [
440
+ [
441
+ `// AUTO-GENERATED FROM ${prompt.fileLabel} — DO NOT EDIT.`,
442
+ "// Run `primitive functions codegen` to regenerate.",
443
+ `// fingerprint: ${fingerprintToml(source.tomlContent)}`,
444
+ ].join("\n"),
445
+ ...renderAgentTypeDecls(prompt),
446
+ `/** The client tools a member of the \`${prompt.key}\` agent answers, by name. */\n${toolsMap}`,
447
+ `/** The event kinds the \`${prompt.key}\` agent records, by name. */\n${eventsMap}`,
448
+ [
449
+ `/** The \`${prompt.key}\` agent: the key a session is created with. */`,
450
+ `export const ${base}Agent = {`,
451
+ ` key: ${tsStringLiteral(prompt.key)},`,
452
+ `} as const;`,
453
+ ].join("\n"),
454
+ ];
455
+ return {
456
+ key: prompt.key,
457
+ fileName: `${prompt.key}${AGENT_CLIENT_FILE_SUFFIX}`,
458
+ content: blocks.join("\n\n") + "\n",
459
+ };
460
+ });
461
+ }
462
+ //# sourceMappingURL=prompt-schema-codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-schema-codegen.js","sourceRoot":"","sources":["../../../src/lib/prompt-schema-codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Shared constant for the query operators an operation `filter` may use,
3
+ * plus a helper to find operator keys that aren't in the supported set.
4
+ *
5
+ * Background (issue #1255): a database-operation `filter` uses Mongo-style
6
+ * operators (`$gte`, `$in`, ...). A typo like `$gt` → `$gte` or an invented
7
+ * `$foo` silently passes `config push` (the server only validates `filter` is
8
+ * an object) and then throws `InvalidOperatorError` at *query execution*.
9
+ * The CLI can warn about unknown operators at push time so the author fixes
10
+ * it before it reaches runtime.
11
+ *
12
+ * The set mirrors the runtime translator
13
+ * (`packages/js-bao/src/query/JsonQueryTranslator.ts`): field operators
14
+ * (`translateFieldCondition` / substring ops) plus the two logical
15
+ * combinators special-cased in `translateFilter` (`$and` / `$or`).
16
+ *
17
+ * `$not` is intentionally NOT included — it is not a runtime operator; the
18
+ * translator only special-cases `$and` / `$or`, so `$not` would throw at
19
+ * execution just like any other unknown operator (codex review, #1255).
20
+ *
21
+ * This is deliberately a single source of truth so the validator and any
22
+ * future emitter/detector agree on what "known" means.
23
+ */
24
+ /** Field-level comparison / membership / string operators. */
25
+ export declare const FIELD_QUERY_OPERATORS: readonly string[];
26
+ /** Logical combinators (arrays of sub-filters). */
27
+ export declare const LOGICAL_QUERY_OPERATORS: readonly string[];
28
+ /**
29
+ * Every operator the runtime query translator accepts. Any `$`-prefixed
30
+ * *key* inside a filter that is not in this set is unknown.
31
+ */
32
+ export declare const SUPPORTED_QUERY_OPERATORS: ReadonlySet<string>;
33
+ /**
34
+ * Recursively collect the distinct `$`-prefixed *keys* used in a filter (or
35
+ * any nested value) that are not in {@link SUPPORTED_QUERY_OPERATORS}.
36
+ *
37
+ * Only object *keys* are considered operators — matching the runtime
38
+ * convention (`walk-operation.ts`: `$`-prefixed keys are operators). String
39
+ * *values* like `$params.activeSince` are substitution references, never
40
+ * operators, so they are never flagged. `$and` / `$or` values are arrays of
41
+ * sub-filter objects and are walked recursively.
42
+ */
43
+ export declare function collectUnknownOperators(value: any): string[];
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Shared constant for the query operators an operation `filter` may use,
3
+ * plus a helper to find operator keys that aren't in the supported set.
4
+ *
5
+ * Background (issue #1255): a database-operation `filter` uses Mongo-style
6
+ * operators (`$gte`, `$in`, ...). A typo like `$gt` → `$gte` or an invented
7
+ * `$foo` silently passes `config push` (the server only validates `filter` is
8
+ * an object) and then throws `InvalidOperatorError` at *query execution*.
9
+ * The CLI can warn about unknown operators at push time so the author fixes
10
+ * it before it reaches runtime.
11
+ *
12
+ * The set mirrors the runtime translator
13
+ * (`packages/js-bao/src/query/JsonQueryTranslator.ts`): field operators
14
+ * (`translateFieldCondition` / substring ops) plus the two logical
15
+ * combinators special-cased in `translateFilter` (`$and` / `$or`).
16
+ *
17
+ * `$not` is intentionally NOT included — it is not a runtime operator; the
18
+ * translator only special-cases `$and` / `$or`, so `$not` would throw at
19
+ * execution just like any other unknown operator (codex review, #1255).
20
+ *
21
+ * This is deliberately a single source of truth so the validator and any
22
+ * future emitter/detector agree on what "known" means.
23
+ */
24
+ /** Field-level comparison / membership / string operators. */
25
+ export const FIELD_QUERY_OPERATORS = [
26
+ "$eq",
27
+ "$ne",
28
+ "$gt",
29
+ "$gte",
30
+ "$lt",
31
+ "$lte",
32
+ "$in",
33
+ "$nin",
34
+ "$exists",
35
+ "$contains",
36
+ "$startsWith",
37
+ "$endsWith",
38
+ "$containsText",
39
+ ];
40
+ /** Logical combinators (arrays of sub-filters). */
41
+ export const LOGICAL_QUERY_OPERATORS = ["$and", "$or"];
42
+ /**
43
+ * Every operator the runtime query translator accepts. Any `$`-prefixed
44
+ * *key* inside a filter that is not in this set is unknown.
45
+ */
46
+ export const SUPPORTED_QUERY_OPERATORS = new Set([
47
+ ...FIELD_QUERY_OPERATORS,
48
+ ...LOGICAL_QUERY_OPERATORS,
49
+ ]);
50
+ /**
51
+ * Recursively collect the distinct `$`-prefixed *keys* used in a filter (or
52
+ * any nested value) that are not in {@link SUPPORTED_QUERY_OPERATORS}.
53
+ *
54
+ * Only object *keys* are considered operators — matching the runtime
55
+ * convention (`walk-operation.ts`: `$`-prefixed keys are operators). String
56
+ * *values* like `$params.activeSince` are substitution references, never
57
+ * operators, so they are never flagged. `$and` / `$or` values are arrays of
58
+ * sub-filter objects and are walked recursively.
59
+ */
60
+ export function collectUnknownOperators(value) {
61
+ const unknown = new Set();
62
+ walk(value, unknown);
63
+ return [...unknown];
64
+ }
65
+ function walk(value, unknown) {
66
+ if (Array.isArray(value)) {
67
+ for (const item of value)
68
+ walk(item, unknown);
69
+ return;
70
+ }
71
+ if (value !== null && typeof value === "object") {
72
+ for (const [key, child] of Object.entries(value)) {
73
+ if (key.startsWith("$") && !SUPPORTED_QUERY_OPERATORS.has(key)) {
74
+ unknown.add(key);
75
+ }
76
+ walk(child, unknown);
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=query-operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-operators.js","sourceRoot":"","sources":["../../../src/lib/query-operators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,SAAS;IACT,WAAW;IACX,aAAa;IACb,WAAW;IACX,eAAe;CAChB,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1E;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACpE,GAAG,qBAAqB;IACxB,GAAG,uBAAuB;CAC3B,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAU;IAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,IAAI,CAAC,KAAU,EAAE,OAAoB;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parse the shared `--filter` / `--filter-file` option pair used by the record
3
+ * read/query verbs on both surfaces: `databases records` (`query`, `count`,
4
+ * `aggregate`, `delete-all`) and `documents records` (`query`, `count`,
5
+ * `aggregate`).
6
+ *
7
+ * `--filter` takes an inline JSON object; `--filter-file` reads the filter from
8
+ * a JSON file, or a TOML file (either a top-level table or a `[filter]` section).
9
+ * The two options are mutually exclusive. All validation happens CLI-side so a
10
+ * malformed filter produces a clear error rather than a server 500.
11
+ *
12
+ * Exits the process with a clear message on bad input. Returns `undefined` when
13
+ * neither option is supplied.
14
+ */
15
+ export declare function parseFilterOptions(options: {
16
+ filter?: string;
17
+ filterFile?: string;
18
+ }): Record<string, any> | undefined;