primitive-admin 1.1.0-alpha.8 → 1.1.0-alpha.80

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 (522) hide show
  1. package/README.md +444 -106
  2. package/assets/skill/skills/primitive-platform/SKILL.md +811 -0
  3. package/dist/bin/primitive.d.ts +2 -0
  4. package/dist/bin/primitive.js +373 -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 +128 -19
  8. package/dist/src/commands/admins.js.map +1 -1
  9. package/dist/src/commands/analytics.d.ts +2 -0
  10. package/dist/src/commands/analytics.js +700 -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 +54 -96
  14. package/dist/src/commands/apps.js.map +1 -1
  15. package/dist/src/commands/auth.d.ts +2 -0
  16. package/dist/src/commands/auth.js +196 -105
  17. package/dist/src/commands/auth.js.map +1 -1
  18. package/dist/src/commands/blob-buckets.d.ts +2 -0
  19. package/dist/src/commands/blob-buckets.js +330 -0
  20. package/dist/src/commands/blob-buckets.js.map +1 -0
  21. package/dist/src/commands/catalog.d.ts +2 -0
  22. package/dist/src/commands/catalog.js +37 -38
  23. package/dist/src/commands/catalog.js.map +1 -1
  24. package/dist/src/commands/collection-type-configs.d.ts +2 -0
  25. package/dist/src/commands/collection-type-configs.js +84 -0
  26. package/dist/src/commands/collection-type-configs.js.map +1 -0
  27. package/dist/src/commands/collections.d.ts +2 -0
  28. package/dist/src/commands/collections.js +565 -0
  29. package/dist/src/commands/collections.js.map +1 -0
  30. package/dist/src/commands/comparisons.d.ts +2 -0
  31. package/dist/src/commands/comparisons.js +6 -6
  32. package/dist/src/commands/comparisons.js.map +1 -1
  33. package/dist/src/commands/config.d.ts +46 -0
  34. package/dist/src/commands/config.js +465 -0
  35. package/dist/src/commands/config.js.map +1 -0
  36. package/dist/src/commands/connections.d.ts +2 -0
  37. package/dist/src/commands/connections.js +100 -0
  38. package/dist/src/commands/connections.js.map +1 -0
  39. package/dist/src/commands/cron-triggers.d.ts +2 -0
  40. package/dist/src/commands/cron-triggers.js +265 -0
  41. package/dist/src/commands/cron-triggers.js.map +1 -0
  42. package/dist/src/commands/database-type-configs.d.ts +2 -0
  43. package/dist/src/commands/database-type-configs.js +163 -0
  44. package/dist/src/commands/database-type-configs.js.map +1 -0
  45. package/dist/src/commands/database-types.d.ts +2 -0
  46. package/dist/src/commands/database-types.js +171 -0
  47. package/dist/src/commands/database-types.js.map +1 -0
  48. package/dist/src/commands/databases.d.ts +65 -0
  49. package/dist/src/commands/databases.js +1859 -238
  50. package/dist/src/commands/databases.js.map +1 -1
  51. package/dist/src/commands/documents.d.ts +2 -0
  52. package/dist/src/commands/documents.js +2062 -19
  53. package/dist/src/commands/documents.js.map +1 -1
  54. package/dist/src/commands/email-templates.d.ts +2 -0
  55. package/dist/src/commands/email-templates.js +174 -0
  56. package/dist/src/commands/email-templates.js.map +1 -0
  57. package/dist/src/commands/env.d.ts +23 -0
  58. package/dist/src/commands/env.js +385 -0
  59. package/dist/src/commands/env.js.map +1 -0
  60. package/dist/src/commands/feature-flags.d.ts +14 -0
  61. package/dist/src/commands/feature-flags.js +116 -0
  62. package/dist/src/commands/feature-flags.js.map +1 -0
  63. package/dist/src/commands/functions.d.ts +20 -0
  64. package/dist/src/commands/functions.js +672 -0
  65. package/dist/src/commands/functions.js.map +1 -0
  66. package/dist/src/commands/group-type-configs.d.ts +2 -0
  67. package/dist/src/commands/group-type-configs.js +86 -0
  68. package/dist/src/commands/group-type-configs.js.map +1 -0
  69. package/dist/src/commands/groups.d.ts +2 -0
  70. package/dist/src/commands/groups.js +39 -108
  71. package/dist/src/commands/groups.js.map +1 -1
  72. package/dist/src/commands/guides.d.ts +223 -0
  73. package/dist/src/commands/guides.js +617 -65
  74. package/dist/src/commands/guides.js.map +1 -1
  75. package/dist/src/commands/init.d.ts +37 -0
  76. package/dist/src/commands/init.js +1693 -208
  77. package/dist/src/commands/init.js.map +1 -1
  78. package/dist/src/commands/integrations.d.ts +2 -0
  79. package/dist/src/commands/integrations.js +402 -182
  80. package/dist/src/commands/integrations.js.map +1 -1
  81. package/dist/src/commands/llm.d.ts +2 -0
  82. package/dist/src/commands/llm.js +13 -8
  83. package/dist/src/commands/llm.js.map +1 -1
  84. package/dist/src/commands/locks.d.ts +8 -0
  85. package/dist/src/commands/locks.js +160 -0
  86. package/dist/src/commands/locks.js.map +1 -0
  87. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  88. package/dist/src/commands/metadata-category-configs.js +112 -0
  89. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  90. package/dist/src/commands/metadata.d.ts +2 -0
  91. package/dist/src/commands/metadata.js +281 -0
  92. package/dist/src/commands/metadata.js.map +1 -0
  93. package/dist/src/commands/prompts.d.ts +2 -0
  94. package/dist/src/commands/prompts.js +275 -621
  95. package/dist/src/commands/prompts.js.map +1 -1
  96. package/dist/src/commands/rule-sets.d.ts +3 -0
  97. package/dist/src/commands/rule-sets.js +137 -147
  98. package/dist/src/commands/rule-sets.js.map +1 -1
  99. package/dist/src/commands/scripts.d.ts +30 -0
  100. package/dist/src/commands/scripts.js +679 -0
  101. package/dist/src/commands/scripts.js.map +1 -0
  102. package/dist/src/commands/secrets.d.ts +2 -0
  103. package/dist/src/commands/secrets.js +108 -0
  104. package/dist/src/commands/secrets.js.map +1 -0
  105. package/dist/src/commands/sessions.d.ts +2 -0
  106. package/dist/src/commands/sessions.js +75 -0
  107. package/dist/src/commands/sessions.js.map +1 -0
  108. package/dist/src/commands/settings.d.ts +18 -0
  109. package/dist/src/commands/settings.js +54 -0
  110. package/dist/src/commands/settings.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 +2514 -0
  118. package/dist/src/commands/sync.js +16106 -848
  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 +130 -21
  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 +532 -23
  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 +96 -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 +10 -10
  131. package/dist/src/commands/waitlist.js.map +1 -1
  132. package/dist/src/commands/webhooks.d.ts +2 -0
  133. package/dist/src/commands/webhooks.js +562 -0
  134. package/dist/src/commands/webhooks.js.map +1 -0
  135. package/dist/src/commands/workflows.d.ts +116 -0
  136. package/dist/src/commands/workflows.js +1638 -729
  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 +2147 -0
  142. package/dist/src/lib/api-client.js +2042 -160
  143. package/dist/src/lib/api-client.js.map +1 -1
  144. package/dist/src/lib/app-match-guard.d.ts +44 -0
  145. package/dist/src/lib/app-match-guard.js +72 -0
  146. package/dist/src/lib/app-match-guard.js.map +1 -0
  147. package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
  148. package/dist/src/lib/app-settings-descriptor.js +584 -0
  149. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  150. package/dist/src/lib/auth-flow.d.ts +8 -0
  151. package/dist/src/lib/batch.d.ts +26 -0
  152. package/dist/src/lib/batch.js +32 -0
  153. package/dist/src/lib/batch.js.map +1 -0
  154. package/dist/src/lib/block-layout.d.ts +160 -0
  155. package/dist/src/lib/block-layout.js +451 -0
  156. package/dist/src/lib/block-layout.js.map +1 -0
  157. package/dist/src/lib/block-selector.d.ts +58 -0
  158. package/dist/src/lib/block-selector.js +92 -0
  159. package/dist/src/lib/block-selector.js.map +1 -0
  160. package/dist/src/lib/canonical-json.d.ts +12 -0
  161. package/dist/src/lib/canonical-json.js +35 -0
  162. package/dist/src/lib/canonical-json.js.map +1 -0
  163. package/dist/src/lib/channel.d.ts +30 -0
  164. package/dist/src/lib/channel.js +68 -0
  165. package/dist/src/lib/channel.js.map +1 -0
  166. package/dist/src/lib/cli-manifest.d.ts +68 -0
  167. package/dist/src/lib/cli-manifest.js +71 -0
  168. package/dist/src/lib/cli-manifest.js.map +1 -0
  169. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
  170. package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
  171. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
  172. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  173. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  174. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  175. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
  176. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
  177. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.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 +696 -0
  183. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  184. package/dist/src/lib/config-payload.d.ts +85 -0
  185. package/dist/src/lib/config-payload.js +116 -0
  186. package/dist/src/lib/config-payload.js.map +1 -0
  187. package/dist/src/lib/config-surface.d.ts +140 -0
  188. package/dist/src/lib/config-surface.js +317 -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 +517 -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/document-export-permissions.d.ts +30 -0
  236. package/dist/src/lib/document-export-permissions.js +54 -0
  237. package/dist/src/lib/document-export-permissions.js.map +1 -0
  238. package/dist/src/lib/env-resolver-core.d.ts +253 -0
  239. package/dist/src/lib/env-resolver-core.js +459 -0
  240. package/dist/src/lib/env-resolver-core.js.map +1 -0
  241. package/dist/src/lib/env-resolver.d.ts +99 -0
  242. package/dist/src/lib/env-resolver.js +153 -0
  243. package/dist/src/lib/env-resolver.js.map +1 -0
  244. package/dist/src/lib/fetch.d.ts +5 -0
  245. package/dist/src/lib/function-bundle.d.ts +141 -0
  246. package/dist/src/lib/function-bundle.js +333 -0
  247. package/dist/src/lib/function-bundle.js.map +1 -0
  248. package/dist/src/lib/function-collect.d.ts +123 -0
  249. package/dist/src/lib/function-collect.js +594 -0
  250. package/dist/src/lib/function-collect.js.map +1 -0
  251. package/dist/src/lib/function-db-types.d.ts +187 -0
  252. package/dist/src/lib/function-db-types.js +782 -0
  253. package/dist/src/lib/function-db-types.js.map +1 -0
  254. package/dist/src/lib/function-document-types.d.ts +50 -0
  255. package/dist/src/lib/function-document-types.js +163 -0
  256. package/dist/src/lib/function-document-types.js.map +1 -0
  257. package/dist/src/lib/function-grants-preflight.d.ts +64 -0
  258. package/dist/src/lib/function-grants-preflight.js +100 -0
  259. package/dist/src/lib/function-grants-preflight.js.map +1 -0
  260. package/dist/src/lib/function-log-tail.d.ts +83 -0
  261. package/dist/src/lib/function-log-tail.js +115 -0
  262. package/dist/src/lib/function-log-tail.js.map +1 -0
  263. package/dist/src/lib/function-schema-codegen.d.ts +118 -0
  264. package/dist/src/lib/function-schema-codegen.js +402 -0
  265. package/dist/src/lib/function-schema-codegen.js.map +1 -0
  266. package/dist/src/lib/function-sync.d.ts +263 -0
  267. package/dist/src/lib/function-sync.js +604 -0
  268. package/dist/src/lib/function-sync.js.map +1 -0
  269. package/dist/src/lib/function-triggers.d.ts +66 -0
  270. package/dist/src/lib/function-triggers.js +285 -0
  271. package/dist/src/lib/function-triggers.js.map +1 -0
  272. package/dist/src/lib/function-typecheck.d.ts +86 -0
  273. package/dist/src/lib/function-typecheck.js +370 -0
  274. package/dist/src/lib/function-typecheck.js.map +1 -0
  275. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  276. package/dist/src/lib/generated-allowlist.js +281 -0
  277. package/dist/src/lib/generated-allowlist.js.map +1 -0
  278. package/dist/src/lib/generated-config-surfaces.d.ts +1445 -0
  279. package/dist/src/lib/generated-config-surfaces.js +5836 -0
  280. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  281. package/dist/src/lib/generated-sdk-types.d.ts +12 -0
  282. package/dist/src/lib/generated-sdk-types.js +13 -0
  283. package/dist/src/lib/generated-sdk-types.js.map +1 -0
  284. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  285. package/dist/src/lib/generated-template-lint.js +624 -0
  286. package/dist/src/lib/generated-template-lint.js.map +1 -0
  287. package/dist/src/lib/generated-workflow-model-fields.d.ts +20 -0
  288. package/dist/src/lib/generated-workflow-model-fields.js +53 -0
  289. package/dist/src/lib/generated-workflow-model-fields.js.map +1 -0
  290. package/dist/src/lib/google-client-secret-status.d.ts +35 -0
  291. package/dist/src/lib/google-client-secret-status.js +56 -0
  292. package/dist/src/lib/google-client-secret-status.js.map +1 -0
  293. package/dist/src/lib/init-adopt.d.ts +16 -0
  294. package/dist/src/lib/init-adopt.js +34 -0
  295. package/dist/src/lib/init-adopt.js.map +1 -0
  296. package/dist/src/lib/init-assets.d.ts +39 -0
  297. package/dist/src/lib/init-assets.js +97 -0
  298. package/dist/src/lib/init-assets.js.map +1 -0
  299. package/dist/src/lib/init-client-platforms.d.ts +14 -0
  300. package/dist/src/lib/init-client-platforms.js +71 -0
  301. package/dist/src/lib/init-client-platforms.js.map +1 -0
  302. package/dist/src/lib/init-config.d.ts +98 -0
  303. package/dist/src/lib/init-config.js +186 -0
  304. package/dist/src/lib/init-config.js.map +1 -0
  305. package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
  306. package/dist/src/lib/init-email-redirect-uris.js +46 -0
  307. package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
  308. package/dist/src/lib/init-ios-links.d.ts +91 -0
  309. package/dist/src/lib/init-ios-links.js +219 -0
  310. package/dist/src/lib/init-ios-links.js.map +1 -0
  311. package/dist/src/lib/init-plan.d.ts +80 -0
  312. package/dist/src/lib/init-plan.js +95 -0
  313. package/dist/src/lib/init-plan.js.map +1 -0
  314. package/dist/src/lib/init-production-env.d.ts +48 -0
  315. package/dist/src/lib/init-production-env.js +59 -0
  316. package/dist/src/lib/init-production-env.js.map +1 -0
  317. package/dist/src/lib/init-schema.d.ts +74 -0
  318. package/dist/src/lib/init-schema.js +358 -0
  319. package/dist/src/lib/init-schema.js.map +1 -0
  320. package/dist/src/lib/init-xcode.d.ts +34 -0
  321. package/dist/src/lib/init-xcode.js +138 -0
  322. package/dist/src/lib/init-xcode.js.map +1 -0
  323. package/dist/src/lib/integration-request-config.d.ts +30 -0
  324. package/dist/src/lib/integration-request-config.js +145 -0
  325. package/dist/src/lib/integration-request-config.js.map +1 -0
  326. package/dist/src/lib/integration-selector.d.ts +42 -0
  327. package/dist/src/lib/integration-selector.js +46 -0
  328. package/dist/src/lib/integration-selector.js.map +1 -0
  329. package/dist/src/lib/ios-app-id.d.ts +34 -0
  330. package/dist/src/lib/ios-app-id.js +69 -0
  331. package/dist/src/lib/ios-app-id.js.map +1 -0
  332. package/dist/src/lib/local-state.d.ts +55 -0
  333. package/dist/src/lib/local-state.js +167 -0
  334. package/dist/src/lib/local-state.js.map +1 -0
  335. package/dist/src/lib/local-test-cases.d.ts +63 -0
  336. package/dist/src/lib/local-test-cases.js +136 -0
  337. package/dist/src/lib/local-test-cases.js.map +1 -0
  338. package/dist/src/lib/log-inspection.d.ts +680 -0
  339. package/dist/src/lib/log-inspection.js +784 -0
  340. package/dist/src/lib/log-inspection.js.map +1 -0
  341. package/dist/src/lib/migration-nag.d.ts +49 -0
  342. package/dist/src/lib/migration-nag.js +164 -0
  343. package/dist/src/lib/migration-nag.js.map +1 -0
  344. package/dist/src/lib/object-status-filter.d.ts +22 -0
  345. package/dist/src/lib/object-status-filter.js +45 -0
  346. package/dist/src/lib/object-status-filter.js.map +1 -0
  347. package/dist/src/lib/output.d.ts +109 -0
  348. package/dist/src/lib/output.js +191 -8
  349. package/dist/src/lib/output.js.map +1 -1
  350. package/dist/src/lib/package-manager.d.ts +140 -0
  351. package/dist/src/lib/package-manager.js +305 -0
  352. package/dist/src/lib/package-manager.js.map +1 -0
  353. package/dist/src/lib/paginate.d.ts +83 -0
  354. package/dist/src/lib/paginate.js +95 -0
  355. package/dist/src/lib/paginate.js.map +1 -0
  356. package/dist/src/lib/platform-owned.d.ts +63 -0
  357. package/dist/src/lib/platform-owned.js +85 -0
  358. package/dist/src/lib/platform-owned.js.map +1 -0
  359. package/dist/src/lib/project-config.d.ts +122 -0
  360. package/dist/src/lib/project-config.js +244 -0
  361. package/dist/src/lib/project-config.js.map +1 -0
  362. package/dist/src/lib/query-operators.d.ts +43 -0
  363. package/dist/src/lib/query-operators.js +80 -0
  364. package/dist/src/lib/query-operators.js.map +1 -0
  365. package/dist/src/lib/record-filter.d.ts +18 -0
  366. package/dist/src/lib/record-filter.js +55 -0
  367. package/dist/src/lib/record-filter.js.map +1 -0
  368. package/dist/src/lib/refresh-admin-credentials.d.ts +65 -0
  369. package/dist/src/lib/refresh-admin-credentials.js +103 -0
  370. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  371. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  372. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  373. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  374. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  375. package/dist/src/lib/resolve-init-server.js +77 -0
  376. package/dist/src/lib/resolve-init-server.js.map +1 -0
  377. package/dist/src/lib/resolve-platform.d.ts +74 -0
  378. package/dist/src/lib/resolve-platform.js +105 -0
  379. package/dist/src/lib/resolve-platform.js.map +1 -0
  380. package/dist/src/lib/run-status.d.ts +19 -0
  381. package/dist/src/lib/run-status.generated.d.ts +39 -0
  382. package/dist/src/lib/run-status.generated.js +66 -0
  383. package/dist/src/lib/run-status.generated.js.map +1 -0
  384. package/dist/src/lib/run-status.js +19 -0
  385. package/dist/src/lib/run-status.js.map +1 -0
  386. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  387. package/dist/src/lib/server-text-normalization.js +90 -0
  388. package/dist/src/lib/server-text-normalization.js.map +1 -0
  389. package/dist/src/lib/server-url.d.ts +22 -0
  390. package/dist/src/lib/server-url.js +33 -0
  391. package/dist/src/lib/server-url.js.map +1 -0
  392. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  393. package/dist/src/lib/signing-secret-status.js +116 -0
  394. package/dist/src/lib/signing-secret-status.js.map +1 -0
  395. package/dist/src/lib/skill-installer.d.ts +25 -0
  396. package/dist/src/lib/skill-installer.js +266 -0
  397. package/dist/src/lib/skill-installer.js.map +1 -0
  398. package/dist/src/lib/snapshots.d.ts +98 -0
  399. package/dist/src/lib/snapshots.js +294 -0
  400. package/dist/src/lib/snapshots.js.map +1 -0
  401. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
  402. package/dist/src/lib/swift-codegen/dbGenerator.js +914 -0
  403. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  404. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  405. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  406. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  407. package/dist/src/lib/swift-codegen/generator.d.ts +94 -0
  408. package/dist/src/lib/swift-codegen/generator.js +440 -0
  409. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  410. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
  411. package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -0
  412. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  413. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
  414. package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
  415. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  416. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  417. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  418. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  419. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  420. package/dist/src/lib/sync-dir-selector.js +30 -0
  421. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  422. package/dist/src/lib/sync-paths.d.ts +123 -0
  423. package/dist/src/lib/sync-paths.js +193 -0
  424. package/dist/src/lib/sync-paths.js.map +1 -0
  425. package/dist/src/lib/sync-resource-types.d.ts +563 -0
  426. package/dist/src/lib/sync-resource-types.js +1073 -0
  427. package/dist/src/lib/sync-resource-types.js.map +1 -0
  428. package/dist/src/lib/sync-selectors.d.ts +95 -0
  429. package/dist/src/lib/sync-selectors.js +228 -0
  430. package/dist/src/lib/sync-selectors.js.map +1 -0
  431. package/dist/src/lib/template.d.ts +170 -0
  432. package/dist/src/lib/template.js +484 -68
  433. package/dist/src/lib/template.js.map +1 -1
  434. package/dist/src/lib/test-case-file-names.d.ts +40 -0
  435. package/dist/src/lib/test-case-file-names.js +91 -0
  436. package/dist/src/lib/test-case-file-names.js.map +1 -0
  437. package/dist/src/lib/test-case-keys.d.ts +29 -0
  438. package/dist/src/lib/test-case-keys.js +55 -0
  439. package/dist/src/lib/test-case-keys.js.map +1 -0
  440. package/dist/src/lib/test-case-variables.d.ts +29 -0
  441. package/dist/src/lib/test-case-variables.js +71 -0
  442. package/dist/src/lib/test-case-variables.js.map +1 -0
  443. package/dist/src/lib/token-inject.d.ts +56 -0
  444. package/dist/src/lib/token-inject.js +204 -0
  445. package/dist/src/lib/token-inject.js.map +1 -0
  446. package/dist/src/lib/toml-database-config.d.ts +123 -0
  447. package/dist/src/lib/toml-database-config.js +544 -0
  448. package/dist/src/lib/toml-database-config.js.map +1 -0
  449. package/dist/src/lib/toml-metadata-config.d.ts +151 -0
  450. package/dist/src/lib/toml-metadata-config.js +476 -0
  451. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  452. package/dist/src/lib/toml-native-form.d.ts +46 -0
  453. package/dist/src/lib/toml-native-form.js +78 -0
  454. package/dist/src/lib/toml-native-form.js.map +1 -0
  455. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  456. package/dist/src/lib/toml-params-validator.js +298 -0
  457. package/dist/src/lib/toml-params-validator.js.map +1 -0
  458. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  459. package/dist/src/lib/toml-scalar-edit.js +283 -0
  460. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  461. package/dist/src/lib/user-selector.d.ts +24 -0
  462. package/dist/src/lib/user-selector.js +33 -0
  463. package/dist/src/lib/user-selector.js.map +1 -0
  464. package/dist/src/lib/version-check.d.ts +35 -0
  465. package/dist/src/lib/version-check.js +241 -0
  466. package/dist/src/lib/version-check.js.map +1 -0
  467. package/dist/src/lib/watch.d.ts +121 -0
  468. package/dist/src/lib/watch.js +169 -0
  469. package/dist/src/lib/watch.js.map +1 -0
  470. package/dist/src/lib/web-url.d.ts +40 -0
  471. package/dist/src/lib/web-url.js +76 -0
  472. package/dist/src/lib/web-url.js.map +1 -0
  473. package/dist/src/lib/workflow-apply.d.ts +110 -0
  474. package/dist/src/lib/workflow-apply.js +164 -0
  475. package/dist/src/lib/workflow-apply.js.map +1 -0
  476. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
  477. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
  478. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
  479. package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
  480. package/dist/src/lib/workflow-codegen/generator.js +361 -0
  481. package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
  482. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
  483. package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
  484. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  485. package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
  486. package/dist/src/lib/workflow-codegen/naming.js +81 -0
  487. package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
  488. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
  489. package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
  490. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
  491. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  492. package/dist/src/lib/workflow-config-apply.js +137 -0
  493. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  494. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  495. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  496. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  497. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  498. package/dist/src/lib/workflow-defaults.js +41 -0
  499. package/dist/src/lib/workflow-defaults.js.map +1 -0
  500. package/dist/src/lib/workflow-field-descriptor.d.ts +91 -0
  501. package/dist/src/lib/workflow-field-descriptor.js +153 -0
  502. package/dist/src/lib/workflow-field-descriptor.js.map +1 -0
  503. package/dist/src/lib/workflow-fragments.d.ts +64 -0
  504. package/dist/src/lib/workflow-fragments.js +342 -0
  505. package/dist/src/lib/workflow-fragments.js.map +1 -0
  506. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  507. package/dist/src/lib/workflow-include-preserve.js +286 -0
  508. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  509. package/dist/src/lib/workflow-payload.d.ts +98 -0
  510. package/dist/src/lib/workflow-payload.js +178 -0
  511. package/dist/src/lib/workflow-payload.js.map +1 -0
  512. package/dist/src/lib/workflow-toml-validator.d.ts +207 -0
  513. package/dist/src/lib/workflow-toml-validator.js +762 -0
  514. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  515. package/dist/src/lib/workflow-usage.d.ts +198 -0
  516. package/dist/src/lib/workflow-usage.js +312 -0
  517. package/dist/src/lib/workflow-usage.js.map +1 -0
  518. package/dist/src/types/index.d.ts +591 -0
  519. package/dist/src/validators.d.ts +65 -0
  520. package/dist/src/validators.js +64 -0
  521. package/dist/src/validators.js.map +1 -0
  522. package/package.json +34 -9
@@ -0,0 +1,604 @@
1
+ /**
2
+ * `functions/<key>.toml` on the wire and back (#3179, project
3
+ * `server-functions`).
4
+ *
5
+ * A function is the one configuration object whose file is not its whole
6
+ * authored surface: the TOML states the gate, the entry and the limits, and the
7
+ * TypeScript the entry reaches is the rest of it. `config push` therefore sends
8
+ * TWO things — a header (create/update) and an immutable config VERSION
9
+ * carrying the authored TOML bytes, every source file and the built bundle —
10
+ * and `config pull` writes both halves back.
11
+ *
12
+ * ── The envelope hash is the shared answer to "changed?" ──────────────────
13
+ *
14
+ * The server decides whether a push is a no-op on `envelopeHash` (sha256 over
15
+ * the TOML bytes, the sources and the bundle), because a comment-only or
16
+ * CRLF-only edit leaves the BUNDLE identical and must still make a version
17
+ * (F-003). The CLI computes the same number to decide whether to make the call
18
+ * at all, through `function-bundle.ts`'s copy of the server's canonical
19
+ * encoding. If those two encodings ever drift, one side re-pushes forever and
20
+ * the other silently drops an edit — `function-bundle-3179.test.ts` pins them
21
+ * against each other.
22
+ *
23
+ * ── Pull writes bytes ────────────────────────────────────────────────────
24
+ *
25
+ * Canonical re-serialization cannot preserve comments, key order or line
26
+ * endings, so the envelope stores the AUTHORED bytes and pull writes those
27
+ * (F-009). It also never trusts a stored path: the files it writes are named by
28
+ * the server, so a path that normalizes outside the tree — or into
29
+ * `node_modules`, which is never authored source — is refused rather than
30
+ * written to a developer's disk. The lexical rules cannot see a symlinked
31
+ * directory inside the tree, so the write step resolves the real path one last
32
+ * time and refuses a destination that lands outside the real root.
33
+ */
34
+ import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, writeFileSync, } from "fs";
35
+ import { dirname, isAbsolute, join, posix as posixPath, relative, resolve, sep, } from "path";
36
+ import { stringifyConfigToml } from "./config-toml.js";
37
+ import { SERVER_FUNCTION_TABLE } from "./config-surface.js";
38
+ import { configMode, hasDeclaredTriggers, normalizeTriggerDeclaration, resolveDeclaredMode, TriggerDeclarationError, validateSigningSecretDeclaration, } from "./generated-config-surfaces.js";
39
+ import { buildPayloadFromToml, projectRecordToToml, tomlOwned } from "./config-payload.js";
40
+ import { serializeJsonField } from "./config-json-field.js";
41
+ import { buildFunctionBundle, FunctionBuildError, functionEnvelopeHash, FUNCTION_ENVELOPE_SCHEMA_VERSION, isDependencyPath, } from "./function-bundle.js";
42
+ import { collectFunctionManifest, FunctionCollectError, } from "./function-collect.js";
43
+ const toPosix = (value) => value.split(sep).join("/");
44
+ /**
45
+ * Collected manifests, keyed by the BUILT BUNDLE they were collected from.
46
+ *
47
+ * Memoized against `contentHash`: the same bytes always collect the same way,
48
+ * and a tree edited mid-command hashes differently and is collected again
49
+ * rather than served a stale answer.
50
+ */
51
+ const collectedManifests = new Map();
52
+ /**
53
+ * Collect one function's manifest, or answer from this command's memo.
54
+ *
55
+ * `FunctionCollectError` is translated to the push loop's one failure class by
56
+ * the callers, so a collect failure reads like any other build failure for
57
+ * that function and lands nothing.
58
+ */
59
+ export async function collectManifestForBundle(options) {
60
+ const memo = collectedManifests.get(options.contentHash);
61
+ if (memo)
62
+ return memo;
63
+ const collected = await collectFunctionManifest({
64
+ configDir: options.configDir,
65
+ entry: options.entry,
66
+ functionKey: options.functionKey,
67
+ bundle: options.bundle,
68
+ });
69
+ collectedManifests.set(options.contentHash, collected);
70
+ return collected;
71
+ }
72
+ // ── The trigger rules, read from the one implementation ───────────────────
73
+ /**
74
+ * The server's own `[function.triggers.*]` rules, applied to a parsed
75
+ * `[function]` table, with "nothing declared" spelled as null so a caller can
76
+ * skip the work.
77
+ *
78
+ * `normalizeTriggerDeclaration` comes from `generated-config-surfaces.ts` —
79
+ * `src/config-surface/trigger-declaration.ts` vendored verbatim. Until #3320
80
+ * the CLI ran a hand-written restatement of those rules
81
+ * (`cli/src/lib/function-triggers.ts`), kept in step only by a paired-fixture
82
+ * test; the artifact's `--check` makes drift a build failure instead.
83
+ *
84
+ * One check is the CLI's OWN and is deliberately not on that path: the cron
85
+ * expression's field count. The authority for cron grammar is the server's
86
+ * `src/cron-parser.ts` (`parseCron`, run at the push boundary), which the
87
+ * declaration rules never call — so this is a shape precheck that turns the
88
+ * commonest typo into a named local error, not a second copy of a rule.
89
+ */
90
+ export function normalizeFunctionTriggers(functionTable, options = {}) {
91
+ const declaration = normalizeTriggerDeclaration(functionTable, options);
92
+ if (!hasDeclaredTriggers(declaration))
93
+ return null;
94
+ for (const entry of declaration.cron) {
95
+ const fields = entry.cron.trim().split(/\s+/);
96
+ if (fields.length !== 5) {
97
+ throw new TriggerDeclarationError(`cron trigger '${entry.name}': a cron expression has exactly 5 fields, ` +
98
+ `and '${entry.cron}' has ${fields.length}`);
99
+ }
100
+ }
101
+ return declaration;
102
+ }
103
+ /**
104
+ * Resolve the file's mode — `mode`, its alias `durable`, or neither — through
105
+ * the ONE vendored rule (#3281). A disagreement or an unknown word is a
106
+ * `FunctionBuildError` naming the function, like every other preflight
107
+ * refusal, so nothing is built or sent for that file.
108
+ */
109
+ export function resolveFunctionMode(functionKey, table) {
110
+ const resolution = resolveDeclaredMode({
111
+ mode: table?.mode,
112
+ durable: table?.durable,
113
+ });
114
+ // `=== false` rather than `!`: the CLI compiles without strict null checks,
115
+ // where truthiness does not narrow a discriminated union.
116
+ if (resolution.ok === false) {
117
+ // Names the file too: this is a refusal about two lines in it, and an
118
+ // author fixing a half-migrated tree wants to know which file to open.
119
+ throw new FunctionBuildError(`function '${functionKey}' (functions/${functionKey}.toml): ${resolution.error}`);
120
+ }
121
+ return resolution.mode;
122
+ }
123
+ /** The `entry` refusal, or null. One spelling, two readers. */
124
+ function functionEntryError(functionKey, table) {
125
+ if (String(table?.entry ?? "").trim())
126
+ return null;
127
+ return (`function '${functionKey}': \`entry\` is required — name the TypeScript ` +
128
+ "entry point, relative to the config tree root.");
129
+ }
130
+ /**
131
+ * Everything about one `functions/<key>.toml` that `config push` can decide
132
+ * from the file alone (#3320).
133
+ *
134
+ * This is the seam the issue is about. These checks used to run inside the
135
+ * APPLY loop, so a `durable = true` beside a webhook block — or a missing
136
+ * `entry`, or a signed scheme with no `signingSecret` — was raised after app
137
+ * settings, vars, integrations, webhooks, cron triggers and database types had
138
+ * already been written, while the command's own framing promised that a
139
+ * refusal meant nothing was applied. Running them in the front-loaded pass
140
+ * (#976) makes that framing true for this class of error.
141
+ *
142
+ * Every rule here is the SERVER's, reached through the generated surface
143
+ * artifact (#3320 part 0), not a local imitation of it. What is deliberately
144
+ * absent is app-state-dependent by construction: whether the referenced secret
145
+ * exists, whether the scheme's `config` is valid under this environment's JWKS
146
+ * policy, per-app caps, key collisions, archived tombstones. A local guess at
147
+ * any of those would be a preflight that gives a false all-clear.
148
+ *
149
+ * Returns the messages the apply loop would have raised, verbatim — so the
150
+ * author reads the same sentence wherever it reaches them, and `config diff`
151
+ * can report it under Invalid (#2880 symmetry).
152
+ */
153
+ export function functionTomlPreflightErrors(options) {
154
+ const { functionKey, tomlData } = options;
155
+ const table = tomlData?.function ?? {};
156
+ const errors = [];
157
+ const entryError = functionEntryError(functionKey, table);
158
+ if (entryError)
159
+ errors.push(entryError);
160
+ // The mode is what the trigger rules are checked AGAINST, so a file whose
161
+ // two spellings disagree cannot be checked further — report that and stop.
162
+ let mode;
163
+ try {
164
+ mode = resolveFunctionMode(functionKey, table);
165
+ }
166
+ catch (err) {
167
+ errors.push(String(err?.message ?? err));
168
+ return errors;
169
+ }
170
+ try {
171
+ const declaration = normalizeFunctionTriggers(table, { mode });
172
+ const webhook = declaration?.webhook;
173
+ if (webhook) {
174
+ // The file-decidable half of the webhook rule: which schemes need a
175
+ // secret, that one is supplied, and that it is a whole reference. The
176
+ // server runs this same function at the write boundary, and then asks
177
+ // the questions only it can (does `KEY` exist?).
178
+ const secretError = validateSigningSecretDeclaration({
179
+ verificationScheme: webhook.verificationScheme,
180
+ signingSecret: webhook.signingSecret,
181
+ });
182
+ if (secretError) {
183
+ errors.push(`function '${functionKey}': ${secretError.message}`);
184
+ }
185
+ }
186
+ }
187
+ catch (err) {
188
+ // Throw-based, so the first broken rule per file wins — exactly what the
189
+ // apply loop reported.
190
+ if (err instanceof TriggerDeclarationError) {
191
+ errors.push(`function '${functionKey}': ${err.message}`);
192
+ }
193
+ else {
194
+ throw err;
195
+ }
196
+ }
197
+ return errors;
198
+ }
199
+ /**
200
+ * Build everything the config-version route needs for one function file.
201
+ *
202
+ * Throws `FunctionBuildError` for a missing `entry`, a missing entry file, a
203
+ * build error, or an import that escapes the config tree — one class, so the
204
+ * push loop has one thing to report and pushes nothing for that function.
205
+ *
206
+ * The file-decidable checks are `functionTomlPreflightErrors`', kept here as
207
+ * defense in depth (#3179's dual-validation shape): `config push` runs them in
208
+ * its preflight now, but `functions` commands and a direct caller reach this
209
+ * function without one.
210
+ */
211
+ export async function buildFunctionConfigPush(options) {
212
+ const { configDir, functionKey, filePath, tomlData } = options;
213
+ const table = tomlData?.function ?? {};
214
+ const entry = String(table.entry ?? "").trim();
215
+ const preflight = functionTomlPreflightErrors({
216
+ filePath,
217
+ functionKey,
218
+ tomlData,
219
+ });
220
+ if (preflight.length > 0)
221
+ throw new FunctionBuildError(preflight[0]);
222
+ // #3281 — the mode, resolved once from either spelling; everything below
223
+ // reads the answer, never the keys.
224
+ const mode = resolveFunctionMode(functionKey, table);
225
+ const built = await buildFunctionBundle({ configDir, entry, functionKey });
226
+ // #3187 — the manifest, collected by RUNNING the tree's module scope in a
227
+ // spawned, scrubbed child process (D3187-SO-006). Fail-closed: a push whose
228
+ // collect fails is refused naming the error, because the manifest is inside
229
+ // the envelope and "push now, collect later" would mean a different version.
230
+ let manifest = null;
231
+ try {
232
+ const collected = await collectManifestForBundle({
233
+ configDir,
234
+ entry: built.entry,
235
+ functionKey,
236
+ contentHash: built.contentHash,
237
+ bundle: built.bundle.toString("utf-8"),
238
+ });
239
+ manifest = Buffer.from(JSON.stringify(collected), "utf-8").toString("base64");
240
+ }
241
+ catch (error) {
242
+ if (error instanceof FunctionCollectError) {
243
+ throw new FunctionBuildError(error.message);
244
+ }
245
+ throw error;
246
+ }
247
+ // The AUTHORED bytes. Read from disk rather than re-serialized, so the round
248
+ // trip is byte-identical (F-009).
249
+ const authored = readFileSync(filePath);
250
+ const limits = normalizeLimits(table.limits);
251
+ const push = {
252
+ entry: built.entry,
253
+ toml: authored.toString("base64"),
254
+ sources: built.sources.map((s) => ({
255
+ path: s.path,
256
+ content: s.content.toString("base64"),
257
+ })),
258
+ bundle: built.bundle.toString("base64"),
259
+ contentHash: built.contentHash,
260
+ manifest,
261
+ envelopeHash: "",
262
+ mode,
263
+ durable: mode === "task",
264
+ ...(limits ? { limits } : {}),
265
+ };
266
+ push.envelopeHash = functionEnvelopeHash({
267
+ schemaVersion: FUNCTION_ENVELOPE_SCHEMA_VERSION,
268
+ entry: push.entry,
269
+ toml: push.toml,
270
+ sources: push.sources,
271
+ bundle: push.bundle,
272
+ manifest: push.manifest,
273
+ });
274
+ return push;
275
+ }
276
+ /** `[function.limits]` as the server stores it, or undefined when absent. */
277
+ function normalizeLimits(value) {
278
+ if (value === undefined || value === null)
279
+ return undefined;
280
+ if (typeof value === "string") {
281
+ try {
282
+ const parsed = JSON.parse(value);
283
+ return parsed && typeof parsed === "object" ? parsed : undefined;
284
+ }
285
+ catch {
286
+ return undefined;
287
+ }
288
+ }
289
+ if (typeof value !== "object" || Array.isArray(value))
290
+ return undefined;
291
+ return value;
292
+ }
293
+ /**
294
+ * The create body. `functionKey` is attached here rather than spread from the
295
+ * table: the identity comes from the file name, exactly as it does for every
296
+ * other keyed type.
297
+ */
298
+ export function buildFunctionCreatePayload(functionKey, table) {
299
+ const payload = buildPayloadFromToml(SERVER_FUNCTION_TABLE, table ?? {}, {
300
+ mode: "create",
301
+ values: { description: tomlOwned },
302
+ });
303
+ dropUndefined(payload);
304
+ return { functionKey, ...payload };
305
+ }
306
+ /**
307
+ * The update body. The key is NOT re-sent — it is the function's claim on the
308
+ * app's single key namespace and the URL already names the row — and `status`
309
+ * is server-owned on the sixth carrying type as on the other five.
310
+ *
311
+ * #3317 — the schemas are TOML-owned on exactly the terms `description` is
312
+ * (#1567), which is what prompts have sent since then: the update handler
313
+ * preserves a field the body omits, so dropping the key would leave a schema
314
+ * live that the file no longer declares, and the comparison — which reads an
315
+ * absent schema as `null` — would report that difference again on every run.
316
+ * Removing `[function.inputSchema]` clears it, and the next diff is Synced.
317
+ */
318
+ export function buildFunctionUpdatePayload(table) {
319
+ const payload = buildPayloadFromToml(SERVER_FUNCTION_TABLE, table ?? {}, {
320
+ mode: "update",
321
+ values: {
322
+ description: tomlOwned,
323
+ inputSchema: tomlOwned,
324
+ outputSchema: tomlOwned,
325
+ },
326
+ });
327
+ dropUndefined(payload);
328
+ return payload;
329
+ }
330
+ function dropUndefined(payload) {
331
+ for (const key of Object.keys(payload)) {
332
+ if (payload[key] === undefined)
333
+ delete payload[key];
334
+ }
335
+ }
336
+ /**
337
+ * The canonical TOML for a function with no stored authored bytes — a function
338
+ * created through the API that has never had code pushed. When bytes exist,
339
+ * pull writes THOSE; this is the fallback that still produces a pushable file.
340
+ */
341
+ export function serializeFunction(record, active, log = () => { }) {
342
+ const subject = `Function '${record?.functionKey}'`;
343
+ const table = {
344
+ key: record.functionKey,
345
+ // #3317 — the two schemas are stored as JSON STRINGS on the row, and
346
+ // `projectRecordToToml` reads a `json` field's emptiness as "not a
347
+ // non-empty object": without a producer, every stored schema was dropped
348
+ // here, so the file pull falls back to lost it and the comparison's remote
349
+ // side reported `(absent)` for a schema `functions get` prints. The shared
350
+ // rule emits the value the string encodes, as a native table whenever TOML
351
+ // can hold it.
352
+ ...projectRecordToToml(SERVER_FUNCTION_TABLE, record, {
353
+ inputSchema: (rec, field) => serializeJsonField(rec?.[field.field], field.field, subject, log),
354
+ outputSchema: (rec, field) => serializeJsonField(rec?.[field.field], field.field, subject, log),
355
+ }),
356
+ };
357
+ if (active?.entry)
358
+ table.entry = active.entry;
359
+ // #3281 — the new word, and only for a task version: a request function is
360
+ // the default and says nothing. Never `durable`: this is the one file the
361
+ // CLI authors on a developer's behalf, and it must not teach the alias.
362
+ if (activeVersionMode(active) === "task")
363
+ table.mode = "task";
364
+ // #3182 — the capabilities are version-carried and server-derived, so the
365
+ // fallback file has to state them or a push of it would silently drop the
366
+ // function's declarations. `runAs` and `unscopedReads` are never written
367
+ // back (#3279): a pre-change row's stored value decides nothing, and a
368
+ // pulled file that carried either would be refused on its next push.
369
+ if (Array.isArray(active?.capabilities) && active.capabilities.length > 0) {
370
+ table.capabilities = [...active.capabilities].sort();
371
+ }
372
+ const limits = normalizeLimits(active?.limits);
373
+ if (limits && Object.keys(limits).length > 0)
374
+ table.limits = limits;
375
+ for (const key of Object.keys(table)) {
376
+ if (table[key] === undefined || table[key] === null)
377
+ delete table[key];
378
+ }
379
+ return stringifyConfigToml({ function: table });
380
+ }
381
+ /**
382
+ * The mode a server's config-version row is in, whichever of the two fields
383
+ * this server serializes: `mode` since #3281, `durable` before it.
384
+ */
385
+ export function activeVersionMode(active) {
386
+ if (active?.mode === "task" || active?.mode === "request")
387
+ return active.mode;
388
+ return configMode(active);
389
+ }
390
+ /**
391
+ * The tree-relative spelling of `entry` that push actually sends.
392
+ *
393
+ * The build normalizes the authored value (`resolve` + `relative`), and the
394
+ * server stores what it is sent, so a valid `./functions/greet/index.ts`
395
+ * arrives as `functions/greet/index.ts`. Comparing the authored spelling
396
+ * against the stored one would report a function as Modified the instant it
397
+ * was pushed and re-send the same update forever, so both sides are read
398
+ * through the same normalization here.
399
+ *
400
+ * Lexical only: an in-tree SYMLINK spelling is resolved by the build and not
401
+ * by this, which is the one remaining way for the two to differ.
402
+ */
403
+ function canonicalEntry(value) {
404
+ const raw = toPosix(String(value ?? "").trim());
405
+ if (!raw)
406
+ return null;
407
+ const normalized = posixPath.normalize(raw).replace(/\/+$/, "");
408
+ return normalized || null;
409
+ }
410
+ /**
411
+ * The entity both sides of `config diff` are projected onto: the header's
412
+ * authored fields plus the keys the VERSION carries. Stated once so a
413
+ * local file and a server record cannot be read into different shapes.
414
+ *
415
+ * Text the server rewrites on the way in is read the same way it will come
416
+ * back (the DSO-003 rule the webhook comparator states): `access` is stored
417
+ * trimmed and `entry` normalized, so an authored value that differs only in
418
+ * that respect is not permanent drift.
419
+ */
420
+ export function functionDiffEntity(tomlData) {
421
+ const table = tomlData?.function ?? {};
422
+ const limits = normalizeLimits(table.limits);
423
+ const access = typeof table.access === "string" && table.access.trim()
424
+ ? table.access.trim()
425
+ : null;
426
+ return {
427
+ description: table.description ?? null,
428
+ access,
429
+ inputSchema: table.inputSchema ?? null,
430
+ outputSchema: table.outputSchema ?? null,
431
+ entry: canonicalEntry(table.entry),
432
+ // #3281 — the RESOLVED mode, never the raw keys: `durable = true` and
433
+ // `mode = "task"` are one fact, and a legacy tree must read Synced against
434
+ // a server that serializes the new word (D3281-SO-001). A file whose two
435
+ // keys disagree is drift here and a refusal at push.
436
+ mode: safeMode(table),
437
+ limits: limits && Object.keys(limits).length > 0 ? limits : null,
438
+ // #3181 — normalized locally from the SAME rules the server applies, so a
439
+ // trigger edit reads as a named field rather than only as the code-axis
440
+ // `envelopeHash` change it also is. A file whose triggers do not parse is
441
+ // reported as drift rather than throwing out of a read-only diff: push is
442
+ // where the refusal belongs.
443
+ triggers: safeTriggers(table),
444
+ // #3182 — sorted on both sides: the row stores a SET, which has no order,
445
+ // so comparing authored order against it would report permanent drift.
446
+ capabilities: Array.isArray(table.capabilities)
447
+ ? [...new Set(table.capabilities.map((c) => String(c)))].sort()
448
+ : [],
449
+ };
450
+ }
451
+ function safeMode(table) {
452
+ const resolution = resolveDeclaredMode({ mode: table?.mode, durable: table?.durable });
453
+ return resolution.ok === true ? resolution.mode : null;
454
+ }
455
+ function safeTriggers(table) {
456
+ try {
457
+ return normalizeFunctionTriggers(table, { mode: safeMode(table) ?? "request" });
458
+ }
459
+ catch {
460
+ return null;
461
+ }
462
+ }
463
+ /**
464
+ * Why a stored source path may not be written, or null.
465
+ *
466
+ * The same rule the server applies on the way in, applied again on the way out:
467
+ * the file is written to a developer's disk from a path the SERVER chose, so a
468
+ * second check here is the one that matters.
469
+ */
470
+ export function unsafePulledPath(path) {
471
+ const raw = toPosix(String(path ?? ""));
472
+ if (!raw)
473
+ return "a stored source path is empty";
474
+ if (raw.startsWith("/") || /^[a-zA-Z]:\//.test(raw)) {
475
+ return `refused stored source path '${raw}': absolute paths are never written`;
476
+ }
477
+ if (raw.split("/").includes("..")) {
478
+ return `refused stored source path '${raw}': it normalizes outside the config tree`;
479
+ }
480
+ if (isDependencyPath(raw)) {
481
+ return `refused stored source path '${raw}': node_modules is never authored source`;
482
+ }
483
+ return null;
484
+ }
485
+ /**
486
+ * Plan the files `config pull` writes for one function: the authored TOML at
487
+ * `functions/<key>.toml`, and each stored source at its own path.
488
+ *
489
+ * Pure — the caller applies it — so the refusal rules are testable without a
490
+ * server and without touching a disk.
491
+ */
492
+ export function planFunctionPull(options) {
493
+ const { configDir, functionKey, envelope } = options;
494
+ const root = resolve(configDir);
495
+ const files = [];
496
+ const sourcePaths = [];
497
+ const refusals = [];
498
+ if (typeof envelope?.toml === "string") {
499
+ const relativePath = `functions/${functionKey}.toml`;
500
+ files.push({
501
+ relative: relativePath,
502
+ absolute: join(root, "functions", `${functionKey}.toml`),
503
+ content: Buffer.from(envelope.toml, "base64"),
504
+ });
505
+ }
506
+ for (const source of envelope?.sources ?? []) {
507
+ const path = toPosix(String(source?.path ?? ""));
508
+ const refusal = unsafePulledPath(path);
509
+ if (refusal) {
510
+ refusals.push(refusal);
511
+ continue;
512
+ }
513
+ const absolute = resolve(root, path);
514
+ // Belt and braces: the string rules above state the contract, this catches
515
+ // a spelling they did not anticipate on a platform they were not written on.
516
+ const rel = relative(root, absolute);
517
+ if (rel.startsWith("..") || isAbsolute(rel)) {
518
+ refusals.push(`refused stored source path '${path}': it normalizes outside the config tree`);
519
+ continue;
520
+ }
521
+ files.push({
522
+ relative: path,
523
+ absolute,
524
+ content: Buffer.from(String(source?.content ?? ""), "base64"),
525
+ });
526
+ sourcePaths.push(path);
527
+ }
528
+ return { configDir: root, functionKey, files, sourcePaths, refusals };
529
+ }
530
+ /**
531
+ * Why a destination may not be written even though its stored path is
532
+ * tree-relative, or null.
533
+ *
534
+ * `planFunctionPull`'s rules are lexical, and a lexical rule cannot see a
535
+ * SYMLINK: `functions/shared` pointing at `/etc` makes `functions/shared/x`
536
+ * normalize inside the tree and land outside it. So the last check before the
537
+ * write is against the real path — the deepest directory that already exists
538
+ * is resolved and must still be inside the real tree root, and an existing
539
+ * destination that is itself a symlink is refused rather than written through.
540
+ */
541
+ function unsafeDestination(realRoot, absolute) {
542
+ const contained = (path) => path === realRoot || path.startsWith(realRoot + sep);
543
+ let dir = dirname(absolute);
544
+ while (!existsSync(dir)) {
545
+ const parent = dirname(dir);
546
+ if (parent === dir)
547
+ break;
548
+ dir = parent;
549
+ }
550
+ let realDir;
551
+ try {
552
+ realDir = realpathSync(dir);
553
+ }
554
+ catch {
555
+ return `refused writing '${absolute}': its directory could not be resolved`;
556
+ }
557
+ if (!contained(realDir)) {
558
+ return (`refused writing '${absolute}': a symlinked directory takes it outside ` +
559
+ "the config tree");
560
+ }
561
+ try {
562
+ if (lstatSync(absolute).isSymbolicLink()) {
563
+ return (`refused writing '${absolute}': the destination is a symlink, and a ` +
564
+ "pull writes files, never through links");
565
+ }
566
+ }
567
+ catch {
568
+ /* the destination does not exist yet — the normal case */
569
+ }
570
+ return null;
571
+ }
572
+ /**
573
+ * Write a plan's files, creating the directories they need.
574
+ *
575
+ * Returns what was written and what was refused; a refusal is reported by the
576
+ * caller and keeps the file out of the sync state, so prune never claims to
577
+ * own a path this pull did not write.
578
+ */
579
+ export function applyFunctionPull(plan) {
580
+ const outcome = { writtenSources: [], refusals: [] };
581
+ let realRoot;
582
+ try {
583
+ realRoot = realpathSync(plan.configDir);
584
+ }
585
+ catch {
586
+ realRoot = plan.configDir;
587
+ }
588
+ const sourcePaths = new Set(plan.sourcePaths);
589
+ for (const file of plan.files) {
590
+ const refusal = unsafeDestination(realRoot, file.absolute);
591
+ if (refusal) {
592
+ outcome.refusals.push(refusal);
593
+ continue;
594
+ }
595
+ const dir = dirname(file.absolute);
596
+ if (!existsSync(dir))
597
+ mkdirSync(dir, { recursive: true });
598
+ writeFileSync(file.absolute, file.content);
599
+ if (sourcePaths.has(file.relative))
600
+ outcome.writtenSources.push(file.relative);
601
+ }
602
+ return outcome;
603
+ }
604
+ //# sourceMappingURL=function-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-sync.js","sourceRoot":"","sources":["../../../src/lib/function-sync.ts"],"names":[],"mappings":"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"}