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,137 @@
1
+ /**
2
+ * Apply a workflow's named config sidecars, and honor `activeConfigName`
3
+ * (issue #2645, spec §Contracts/Named configs).
4
+ *
5
+ * ── What this is for ─────────────────────────────────────────────────────
6
+ * Named configs used to be reachable only through `workflows configs
7
+ * create/update/duplicate/activate`. Those verbs are removed, so `config push`
8
+ * has to apply the bodies now — otherwise the capability would have been
9
+ * deleted rather than moved to TOML, which the spec's criterion 2 forbids.
10
+ *
11
+ * ── Division of labour with `applyWorkflowBody` ──────────────────────────
12
+ * The ACTIVE config's body stays where it already is: the `steps` at the top of
13
+ * `workflows/<key>.toml`, written through `applyWorkflowBody`'s
14
+ * ordering-sensitive sequence (metadata PATCH → steps → deferred `syncCallable`
15
+ * PATCH, #807). That path is deliberately untouched — a second single-object
16
+ * apply is what broke that ordering before. This module handles the OTHER named
17
+ * configs, each from its own sidecar, and then the activation.
18
+ *
19
+ * So each config body is declared exactly once: the live one at the top of the
20
+ * workflow file, every other one in `workflows/<key>.configs/<name>.toml`.
21
+ * After a pull that follows an `activeConfigName` change, the two swap roles.
22
+ *
23
+ * ── Ordering ─────────────────────────────────────────────────────────────
24
+ * Bodies first, activation last. Activating a config before writing its steps
25
+ * would put an empty or stale body into service for the width of one call.
26
+ */
27
+ /**
28
+ * Create or update each sidecar's config, then activate the named one.
29
+ *
30
+ * Reports whether it activated anything: activation writes the workflow
31
+ * DEFINITION (`activeConfigId`, and with it a fresh `modifiedAt`), so the
32
+ * caller's sync state is stale afterwards unless it re-reads — which is how a
33
+ * push that only switched the active config left the next one to conflict.
34
+ */
35
+ export async function applyWorkflowConfigSidecars(client, appId, workflowId, sidecars, options) {
36
+ const { serverConfigs, activeConfigName, currentActiveConfigId, adoptActiveConfigName, } = options;
37
+ const log = options.log ?? (() => { });
38
+ const nameToId = new Map();
39
+ for (const config of serverConfigs ?? []) {
40
+ if (config?.configName && config?.configId) {
41
+ nameToId.set(config.configName, config.configId);
42
+ }
43
+ }
44
+ // The workflow file's own `[[steps]]` IS the active config's body — pull
45
+ // deliberately does not repeat it as a sidecar
46
+ // (`workflowConfigSidecarsToWrite`). So when `activeConfigName` names no
47
+ // config the server knows, the config that just received that body is the
48
+ // one the file is naming, and it takes the authored name.
49
+ //
50
+ // Without this, a pulled tree could not be pushed back: the server names a
51
+ // new workflow's first config "default" (`admin-api.ts`), so any workflow
52
+ // whose active config is called something else pulled to a tree whose
53
+ // `activeConfigName` matched no sidecar and no server config — push then
54
+ // refused a file pull had just written. This runs BEFORE the sidecar loop so
55
+ // a `default.toml` sidecar creates its own config rather than overwriting
56
+ // the active body on its way past.
57
+ if (adoptActiveConfigName &&
58
+ activeConfigName &&
59
+ !nameToId.has(activeConfigName) &&
60
+ currentActiveConfigId) {
61
+ await client.updateWorkflowConfig(appId, workflowId, currentActiveConfigId, { configName: activeConfigName });
62
+ // The name it had is now free, and the map must say so. Leaving the old
63
+ // entry pointing at this id makes the sidecar of that name look like an
64
+ // existing config: the loop below UPDATES the just-renamed one instead of
65
+ // creating its own, both sidecars collapse onto a single config, and
66
+ // whichever is applied last silently wins. A fresh cross-app push of a
67
+ // two-config workflow landed exactly one config because of this.
68
+ for (const [name, id] of nameToId) {
69
+ if (id === currentActiveConfigId)
70
+ nameToId.delete(name);
71
+ }
72
+ nameToId.set(activeConfigName, currentActiveConfigId);
73
+ log(` Named the active config "${activeConfigName}"`);
74
+ }
75
+ for (const sidecar of sidecars) {
76
+ const existingId = nameToId.get(sidecar.name);
77
+ if (existingId) {
78
+ // In place: the config keeps its id, so anything pointing at it (a test
79
+ // case, a running trigger) keeps working across the edit.
80
+ //
81
+ // `description` and `status` travel with the steps: they are in the file,
82
+ // so the file owns them (#1567's convention — an omitted `description`
83
+ // sends `null` and clears, since that is what the round-trip means). An
84
+ // update that sent steps alone silently ignored half of what the author
85
+ // wrote, which is the same invisibility the flag removal was about.
86
+ await client.updateWorkflowConfig(appId, workflowId, existingId, {
87
+ steps: sidecar.steps,
88
+ expressions: sidecar.expressions,
89
+ description: sidecar.description ?? null,
90
+ // A defaulted enum, so there is no "clear": an absent key leaves the
91
+ // server's value alone rather than inventing one.
92
+ status: sidecar.status,
93
+ });
94
+ log(` Updated config "${sidecar.name}"`);
95
+ }
96
+ else {
97
+ const created = await client.createWorkflowConfig(appId, workflowId, {
98
+ configName: sidecar.name,
99
+ description: sidecar.description,
100
+ steps: sidecar.steps,
101
+ expressions: sidecar.expressions,
102
+ });
103
+ if (created?.configId)
104
+ nameToId.set(sidecar.name, created.configId);
105
+ log(` Created config "${sidecar.name}"`);
106
+ // Create always mints an ACTIVE config (admin-api.ts, createWorkflowConfig
107
+ // hard-codes it), so a sidecar that says otherwise needs the follow-up
108
+ // write or its `status` would be silently dropped on a fresh app.
109
+ if (created?.configId && sidecar.status && sidecar.status !== "active") {
110
+ await client.updateWorkflowConfig(appId, workflowId, created.configId, {
111
+ status: sidecar.status,
112
+ });
113
+ }
114
+ }
115
+ }
116
+ let activated = false;
117
+ let activeConfigId = currentActiveConfigId;
118
+ if (activeConfigName) {
119
+ const targetId = nameToId.get(activeConfigName);
120
+ if (!targetId) {
121
+ // Leaving the old config live would mean the committed file says one
122
+ // config is running and another is — the exact drift this issue removes.
123
+ // A typo has to stop the push, not be absorbed by it.
124
+ throw new Error(`activeConfigName "${activeConfigName}" names no configuration. ` +
125
+ `Author it at workflows/<key>.configs/${activeConfigName}.toml, or ` +
126
+ `correct the name in workflows/<key>.toml.`);
127
+ }
128
+ if (targetId !== currentActiveConfigId) {
129
+ await client.activateWorkflowConfig(appId, workflowId, targetId);
130
+ log(` Activated config "${activeConfigName}"`);
131
+ activated = true;
132
+ }
133
+ activeConfigId = targetId;
134
+ }
135
+ return { configIds: nameToId, activated, activeConfigId };
136
+ }
137
+ //# sourceMappingURL=workflow-config-apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-config-apply.js","sourceRoot":"","sources":["../../../src/lib/workflow-config-apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Named workflow configs as files (issue #2645, spec §Contracts/Named configs).
3
+ *
4
+ * A workflow's named configurations used to reach the server only through
5
+ * `workflows configs create/update/duplicate/activate` — verbs, not files. That
6
+ * made the live body of a running workflow invisible to the repo and to review,
7
+ * which is precisely the failure #1976 records and the reason this issue exists.
8
+ * The design-gate decision was "TOML wins": each config body is a file at
9
+ * `workflows/<key>.configs/<name>.toml`, and `activeConfigName` in
10
+ * `workflows/<key>.toml` names the live one.
11
+ *
12
+ * The layout mirrors the `<key>.tests/` sidecar convention the sync tree
13
+ * already uses, so there is one directory idiom rather than two.
14
+ *
15
+ * workflows/order-intake.toml # the workflow, incl. activeConfigName
16
+ * workflows/order-intake.configs/v2.toml # a named config body
17
+ * workflows/order-intake.tests/*.toml # test cases (pre-existing)
18
+ *
19
+ * File shape:
20
+ *
21
+ * [config]
22
+ * description = "second cut"
23
+ * status = "active"
24
+ *
25
+ * [[steps]]
26
+ * id = "greet"
27
+ * kind = "noop"
28
+ *
29
+ * [expr.cel]
30
+ * ready = "input.ok == true"
31
+ *
32
+ * The config's NAME is the file name and is deliberately not restated inside
33
+ * the file: a second declaration would be a second thing to change and a
34
+ * mismatch to adjudicate, which is the shape of problem this issue removes.
35
+ */
36
+ /** Directory holding a workflow's named config bodies. */
37
+ export declare function workflowConfigsDir(configDir: string, key: string): string;
38
+ /** The config name a sidecar file declares — its base name. */
39
+ export declare function workflowConfigNameFromFile(file: string): string;
40
+ /** A named config body, as authored on disk. */
41
+ export interface WorkflowConfigSidecar {
42
+ name: string;
43
+ description?: string;
44
+ status?: string;
45
+ /** Always an array once parsed: an empty body is a real, pushable state. */
46
+ steps: any[];
47
+ /** `[expr.cel]` named guards travelling with these steps (#1614). */
48
+ expressions?: {
49
+ cel: Record<string, string>;
50
+ };
51
+ }
52
+ /** Emit a server config record as its sidecar file body. */
53
+ export declare function serializeWorkflowConfigSidecar(config: any): string;
54
+ /** Read a parsed sidecar back into the body `config push` applies. */
55
+ export declare function parseWorkflowConfigSidecar(name: string, tomlData: any): WorkflowConfigSidecar;
56
+ /**
57
+ * Every named config authored for a workflow, in file-name order.
58
+ *
59
+ * An absent directory returns an empty list rather than throwing: a workflow
60
+ * with no sidecars is the ordinary single-config case, where the body is the
61
+ * `steps` in `workflows/<key>.toml`.
62
+ */
63
+ export declare function readWorkflowConfigSidecars(configDir: string, key: string, readToml?: (path: string) => any): WorkflowConfigSidecar[];
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Named workflow configs as files (issue #2645, spec §Contracts/Named configs).
3
+ *
4
+ * A workflow's named configurations used to reach the server only through
5
+ * `workflows configs create/update/duplicate/activate` — verbs, not files. That
6
+ * made the live body of a running workflow invisible to the repo and to review,
7
+ * which is precisely the failure #1976 records and the reason this issue exists.
8
+ * The design-gate decision was "TOML wins": each config body is a file at
9
+ * `workflows/<key>.configs/<name>.toml`, and `activeConfigName` in
10
+ * `workflows/<key>.toml` names the live one.
11
+ *
12
+ * The layout mirrors the `<key>.tests/` sidecar convention the sync tree
13
+ * already uses, so there is one directory idiom rather than two.
14
+ *
15
+ * workflows/order-intake.toml # the workflow, incl. activeConfigName
16
+ * workflows/order-intake.configs/v2.toml # a named config body
17
+ * workflows/order-intake.tests/*.toml # test cases (pre-existing)
18
+ *
19
+ * File shape:
20
+ *
21
+ * [config]
22
+ * description = "second cut"
23
+ * status = "active"
24
+ *
25
+ * [[steps]]
26
+ * id = "greet"
27
+ * kind = "noop"
28
+ *
29
+ * [expr.cel]
30
+ * ready = "input.ok == true"
31
+ *
32
+ * The config's NAME is the file name and is deliberately not restated inside
33
+ * the file: a second declaration would be a second thing to change and a
34
+ * mismatch to adjudicate, which is the shape of problem this issue removes.
35
+ */
36
+ import { existsSync, readdirSync, readFileSync } from "fs";
37
+ import { basename, join } from "path";
38
+ import { parseConfigToml, stringifyConfigToml } from "./config-toml.js";
39
+ /** Directory holding a workflow's named config bodies. */
40
+ export function workflowConfigsDir(configDir, key) {
41
+ return join(configDir, "workflows", `${key}.configs`);
42
+ }
43
+ /** The config name a sidecar file declares — its base name. */
44
+ export function workflowConfigNameFromFile(file) {
45
+ return basename(file, ".toml");
46
+ }
47
+ /** Emit a server config record as its sidecar file body. */
48
+ export function serializeWorkflowConfigSidecar(config) {
49
+ const cel = config?.expressions?.cel && typeof config.expressions.cel === "object"
50
+ ? config.expressions.cel
51
+ : undefined;
52
+ const data = {
53
+ config: {
54
+ description: config?.description || undefined,
55
+ status: config?.status || undefined,
56
+ },
57
+ steps: Array.isArray(config?.steps) ? config.steps : [],
58
+ ...(cel && Object.keys(cel).length > 0 ? { expr: { cel } } : {}),
59
+ };
60
+ for (const k of Object.keys(data.config)) {
61
+ if (data.config[k] === undefined)
62
+ delete data.config[k];
63
+ }
64
+ return stringifyConfigToml(data);
65
+ }
66
+ /** Read a parsed sidecar back into the body `config push` applies. */
67
+ export function parseWorkflowConfigSidecar(name, tomlData) {
68
+ const config = tomlData?.config || {};
69
+ const cel = tomlData?.expr?.cel && typeof tomlData.expr.cel === "object"
70
+ ? tomlData.expr.cel
71
+ : undefined;
72
+ return {
73
+ name,
74
+ description: config.description ?? undefined,
75
+ status: config.status ?? undefined,
76
+ steps: Array.isArray(tomlData?.steps) ? tomlData.steps : [],
77
+ ...(cel ? { expressions: { cel } } : {}),
78
+ };
79
+ }
80
+ /**
81
+ * Every named config authored for a workflow, in file-name order.
82
+ *
83
+ * An absent directory returns an empty list rather than throwing: a workflow
84
+ * with no sidecars is the ordinary single-config case, where the body is the
85
+ * `steps` in `workflows/<key>.toml`.
86
+ */
87
+ export function readWorkflowConfigSidecars(configDir, key, readToml = (p) => parseConfigToml(readFileSync(p, "utf-8"))) {
88
+ const dir = workflowConfigsDir(configDir, key);
89
+ if (!existsSync(dir))
90
+ return [];
91
+ return readdirSync(dir)
92
+ .filter((f) => f.endsWith(".toml"))
93
+ .sort()
94
+ .map((f) => parseWorkflowConfigSidecar(workflowConfigNameFromFile(f), readToml(join(dir, f))));
95
+ }
96
+ //# sourceMappingURL=workflow-config-sidecar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-config-sidecar.js","sourceRoot":"","sources":["../../../src/lib/workflow-config-sidecar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The `[workflow]` fields whose model default the CLI has to know (#2743).
3
+ *
4
+ * Two call sites need the same map, and they must not drift:
5
+ * - `buildWorkflowPayloadFromToml` (update mode) sends the CONCRETE default
6
+ * for a field the TOML omits, so the push converges the server instead of
7
+ * preserving the old value. It deliberately does NOT send `null` for these:
8
+ * a server predating #2743 coerces a queue-limit `null` to `0`
9
+ * (`Number(null)`), so an explicit default is the only value that converges
10
+ * identically on both.
11
+ * - `normalizeWorkflowTomlDefaults` (`config diff`) fills the same defaults into
12
+ * the local side, so a hand-authored file that omits them compares equal to
13
+ * a server holding the defaults — and unequal to one holding a real
14
+ * override.
15
+ *
16
+ * These mirror `models.yaml` (`WorkflowDefinition`): `perUserMaxRunning=4`,
17
+ * `perUserMaxQueued=100`, `perAppMaxRunning=25`, `perAppMaxQueued=10000`,
18
+ * `queueTtlSeconds=43200`, `dequeueOrder="fifo"`, `requiresClientApply=true`,
19
+ * `syncCallable=false`.
20
+ *
21
+ * This is deliberately NOT a generic `models.yaml` default importer — the model
22
+ * carries defaults the serializer never writes. Only the serializer-emitted
23
+ * surface with a concrete default belongs here, because the remote side of a
24
+ * diff is hashed via `serializeWorkflow`. Emit-when-set fields whose GET value
25
+ * is null/empty when unset (`description`, `accessRule`, `runAs`,
26
+ * `capabilities`, the schemas, `lock`) have no default: push sends `null` for
27
+ * them and both sides of the diff simply omit the key.
28
+ */
29
+ export declare const WORKFLOW_MODEL_DEFAULTS: Record<string, unknown>;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The `[workflow]` fields whose model default the CLI has to know (#2743).
3
+ *
4
+ * Two call sites need the same map, and they must not drift:
5
+ * - `buildWorkflowPayloadFromToml` (update mode) sends the CONCRETE default
6
+ * for a field the TOML omits, so the push converges the server instead of
7
+ * preserving the old value. It deliberately does NOT send `null` for these:
8
+ * a server predating #2743 coerces a queue-limit `null` to `0`
9
+ * (`Number(null)`), so an explicit default is the only value that converges
10
+ * identically on both.
11
+ * - `normalizeWorkflowTomlDefaults` (`config diff`) fills the same defaults into
12
+ * the local side, so a hand-authored file that omits them compares equal to
13
+ * a server holding the defaults — and unequal to one holding a real
14
+ * override.
15
+ *
16
+ * These mirror `models.yaml` (`WorkflowDefinition`): `perUserMaxRunning=4`,
17
+ * `perUserMaxQueued=100`, `perAppMaxRunning=25`, `perAppMaxQueued=10000`,
18
+ * `queueTtlSeconds=43200`, `dequeueOrder="fifo"`, `requiresClientApply=true`,
19
+ * `syncCallable=false`.
20
+ *
21
+ * This is deliberately NOT a generic `models.yaml` default importer — the model
22
+ * carries defaults the serializer never writes. Only the serializer-emitted
23
+ * surface with a concrete default belongs here, because the remote side of a
24
+ * diff is hashed via `serializeWorkflow`. Emit-when-set fields whose GET value
25
+ * is null/empty when unset (`description`, `accessRule`, `runAs`,
26
+ * `capabilities`, the schemas, `lock`) have no default: push sends `null` for
27
+ * them and both sides of the diff simply omit the key.
28
+ */
29
+ export const WORKFLOW_MODEL_DEFAULTS = {
30
+ // #2803 — no `status`. Availability is server-owned and off the config wire,
31
+ // so the file has no status line for a diff to normalize or a push to send.
32
+ perUserMaxRunning: 4,
33
+ perUserMaxQueued: 100,
34
+ perAppMaxRunning: 25,
35
+ perAppMaxQueued: 10000,
36
+ queueTtlSeconds: 43200,
37
+ dequeueOrder: "fifo",
38
+ requiresClientApply: true,
39
+ syncCallable: false,
40
+ };
41
+ //# sourceMappingURL=workflow-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-defaults.js","sourceRoot":"","sources":["../../../src/lib/workflow-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA4B;IAC9D,6EAA6E;IAC7E,4EAA4E;IAC5E,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,GAAG;IACrB,gBAAgB,EAAE,EAAE;IACpB,eAAe,EAAE,KAAK;IACtB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,MAAM;IACpB,mBAAmB,EAAE,IAAI;IACzB,YAAY,EAAE,KAAK;CACpB,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Classification of the `WorkflowDefinition` field surface (issue #2326,
3
+ * Phase 1 of #1976).
4
+ *
5
+ * Purpose: give the CLI a mechanical trip-wire for the drift that keeps
6
+ * happening — the server grows a `[workflow]`-level config field (`syncCallable`
7
+ * #807, `accessRule` #571, `runAs` #1081, `capabilities` #1172, `lock` #1518)
8
+ * and the CLI silently drops it on `sync push` / `sync pull`. Every field of the
9
+ * `WorkflowDefinition` model must appear in exactly one of the three groups
10
+ * below. The generated artifact `generated-workflow-model-fields.ts` carries the
11
+ * model's real field list (parsed from `models.yaml` at build time), and
12
+ * `cli/tests/unit/workflow-field-descriptor-drift-guard.test.ts` asserts
13
+ *
14
+ * synced ∪ structural ∪ internal === the model's fields
15
+ *
16
+ * so a new field hard-fails the guard until someone classifies it.
17
+ *
18
+ * ── Scope: declarative classification and coverage ONLY ──────────────────
19
+ * Decision of record (#1976, 2026-07-23): this table records WHICH fields
20
+ * exist, whether each is synced / structural / internal, and its `[workflow]`
21
+ * TOML key. Anything with real BEHAVIOR gets an explicit per-field handler or
22
+ * stays outside the table. In particular this file deliberately does NOT encode
23
+ * as boolean knobs:
24
+ * - the schema fields' native-TOML-table-vs-JSON-string parsing
25
+ * (`buildWorkflowPayloadFromToml` / `safeJsonParse` own that),
26
+ * - `syncCallable`'s deferred second PATCH on update (#807 — `applyWorkflowBody`
27
+ * owns that),
28
+ * - the `metadataManifest` (#1304) and `expr.cel` (#1614) structural side
29
+ * channels, which are attached alongside the steps write and are not
30
+ * `[workflow]`-table keys at all.
31
+ * `cli/src/lib/app-settings-descriptor.ts` is the shape being matched:
32
+ * deliberately narrow.
33
+ *
34
+ * ── What Phase 1 does and does not do ───────────────────────────────────
35
+ * Phase 1 (this file) is the guard only. Making the push builder
36
+ * (`workflow-payload.ts`) and the pull serializer (`serializeWorkflow` in
37
+ * `commands/sync.ts`) *consume* this table is Phase 2 (#2327).
38
+ * `synced` therefore means "belongs in the `[workflow]` TOML table", NOT
39
+ * "already round-trips" — see `SYNCED_NOT_YET_WIRED` below.
40
+ */
41
+ /** Value shape of a synced `[workflow]` key. Descriptive; behavior lives in the handlers. */
42
+ export type WorkflowFieldType = "string" | "number" | "boolean" | "string[]" | "json";
43
+ export interface WorkflowFieldDescriptor {
44
+ /** `WorkflowDefinition` model field name === the server payload key. */
45
+ field: string;
46
+ /** Key under the `[workflow]` table in workflow TOML (usually === `field`). */
47
+ tomlKey: string;
48
+ /** Value shape, for the Phase 2 handlers and for documentation. */
49
+ type: WorkflowFieldType;
50
+ }
51
+ /**
52
+ * The author-facing `[workflow]`-table config fields — the ones a workflow
53
+ * author manages as code and the CLI must round-trip.
54
+ */
55
+ export declare const WORKFLOW_FIELD_DESCRIPTOR: readonly WorkflowFieldDescriptor[];
56
+ /**
57
+ * Fields that ARE author-controlled but do not live in the `[workflow]` table —
58
+ * they travel through their own structural channel. Kept distinct from
59
+ * `WORKFLOW_FIELDS_INTERNAL` so "internal" keeps meaning "not author-facing".
60
+ */
61
+ export declare const WORKFLOW_FIELDS_STRUCTURAL: ReadonlySet<string>;
62
+ /**
63
+ * Fields the server owns: identity, ownership, timestamps, computed pointers,
64
+ * and the deprecated draft/revision slot. None of these are ever sent by the
65
+ * CLI, and none belong in workflow TOML.
66
+ */
67
+ export declare const WORKFLOW_FIELDS_INTERNAL: ReadonlySet<string>;
68
+ /**
69
+ * Synced fields the CLI does NOT round-trip yet — Phase 2 (#2327) wires them.
70
+ * Recorded explicitly so "classified" is never mistaken for "implemented".
71
+ * `lock` was wired by #1972; `templateMissingMarker` was removed from the
72
+ * platform by #2643, so the set is now empty.
73
+ */
74
+ export declare const SYNCED_NOT_YET_WIRED: ReadonlySet<string>;
75
+ /** Descriptor `field` names, for coverage/parity checks. */
76
+ export declare const WORKFLOW_SYNCED_FIELDS: ReadonlySet<string>;
77
+ /** Look up a synced field's descriptor by model field name. */
78
+ export declare function getWorkflowFieldDescriptor(field: string): WorkflowFieldDescriptor | undefined;
79
+ /**
80
+ * Model fields that are classified in NONE of synced / structural / internal —
81
+ * i.e. a field someone added to `models.yaml` without deciding how the CLI
82
+ * treats it. Non-empty is a hard failure in the drift guard.
83
+ */
84
+ export declare function findUnclassifiedWorkflowFields(modelFields: readonly string[]): string[];
85
+ /**
86
+ * Classifications that no longer correspond to a model field — i.e. a field
87
+ * removed from `models.yaml` while the CLI still classifies it. Also a hard
88
+ * failure: a stale classification must not silently pass, or the coverage
89
+ * claim quietly stops meaning anything.
90
+ */
91
+ export declare function findStaleWorkflowClassifications(modelFields: readonly string[]): string[];
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Classification of the `WorkflowDefinition` field surface (issue #2326,
3
+ * Phase 1 of #1976).
4
+ *
5
+ * Purpose: give the CLI a mechanical trip-wire for the drift that keeps
6
+ * happening — the server grows a `[workflow]`-level config field (`syncCallable`
7
+ * #807, `accessRule` #571, `runAs` #1081, `capabilities` #1172, `lock` #1518)
8
+ * and the CLI silently drops it on `sync push` / `sync pull`. Every field of the
9
+ * `WorkflowDefinition` model must appear in exactly one of the three groups
10
+ * below. The generated artifact `generated-workflow-model-fields.ts` carries the
11
+ * model's real field list (parsed from `models.yaml` at build time), and
12
+ * `cli/tests/unit/workflow-field-descriptor-drift-guard.test.ts` asserts
13
+ *
14
+ * synced ∪ structural ∪ internal === the model's fields
15
+ *
16
+ * so a new field hard-fails the guard until someone classifies it.
17
+ *
18
+ * ── Scope: declarative classification and coverage ONLY ──────────────────
19
+ * Decision of record (#1976, 2026-07-23): this table records WHICH fields
20
+ * exist, whether each is synced / structural / internal, and its `[workflow]`
21
+ * TOML key. Anything with real BEHAVIOR gets an explicit per-field handler or
22
+ * stays outside the table. In particular this file deliberately does NOT encode
23
+ * as boolean knobs:
24
+ * - the schema fields' native-TOML-table-vs-JSON-string parsing
25
+ * (`buildWorkflowPayloadFromToml` / `safeJsonParse` own that),
26
+ * - `syncCallable`'s deferred second PATCH on update (#807 — `applyWorkflowBody`
27
+ * owns that),
28
+ * - the `metadataManifest` (#1304) and `expr.cel` (#1614) structural side
29
+ * channels, which are attached alongside the steps write and are not
30
+ * `[workflow]`-table keys at all.
31
+ * `cli/src/lib/app-settings-descriptor.ts` is the shape being matched:
32
+ * deliberately narrow.
33
+ *
34
+ * ── What Phase 1 does and does not do ───────────────────────────────────
35
+ * Phase 1 (this file) is the guard only. Making the push builder
36
+ * (`workflow-payload.ts`) and the pull serializer (`serializeWorkflow` in
37
+ * `commands/sync.ts`) *consume* this table is Phase 2 (#2327).
38
+ * `synced` therefore means "belongs in the `[workflow]` TOML table", NOT
39
+ * "already round-trips" — see `SYNCED_NOT_YET_WIRED` below.
40
+ */
41
+ /**
42
+ * The author-facing `[workflow]`-table config fields — the ones a workflow
43
+ * author manages as code and the CLI must round-trip.
44
+ */
45
+ export const WORKFLOW_FIELD_DESCRIPTOR = [
46
+ { field: "name", tomlKey: "name", type: "string" },
47
+ { field: "status", tomlKey: "status", type: "string" },
48
+ { field: "description", tomlKey: "description", type: "string" },
49
+ // JSON Schema objects. TOML may present them as an inline table OR as a
50
+ // JSON string; the push builder owns that parse (not a knob here).
51
+ { field: "inputSchema", tomlKey: "inputSchema", type: "json" },
52
+ { field: "outputSchema", tomlKey: "outputSchema", type: "json" },
53
+ { field: "perUserMaxRunning", tomlKey: "perUserMaxRunning", type: "number" },
54
+ { field: "perUserMaxQueued", tomlKey: "perUserMaxQueued", type: "number" },
55
+ { field: "perAppMaxRunning", tomlKey: "perAppMaxRunning", type: "number" },
56
+ { field: "perAppMaxQueued", tomlKey: "perAppMaxQueued", type: "number" },
57
+ { field: "queueTtlSeconds", tomlKey: "queueTtlSeconds", type: "number" },
58
+ { field: "dequeueOrder", tomlKey: "dequeueOrder", type: "string" },
59
+ {
60
+ field: "requiresClientApply",
61
+ tomlKey: "requiresClientApply",
62
+ type: "boolean",
63
+ },
64
+ // Create-only on the wire (#807: update sends it as a deferred second PATCH
65
+ // once the new steps are live). That sequencing is the payload builder's job.
66
+ { field: "syncCallable", tomlKey: "syncCallable", type: "boolean" },
67
+ { field: "accessRule", tomlKey: "accessRule", type: "string" },
68
+ { field: "runAs", tomlKey: "runAs", type: "string" },
69
+ // #1518/#1972 — declarative run-scoped lock. `[workflow.lock]` inline table
70
+ // on the TOML side, JSON on the wire; validated server-side by
71
+ // `parseWorkflowLock` (decision of record #6: no client-side mirror validator).
72
+ { field: "lock", tomlKey: "lock", type: "json" },
73
+ // #1078 Tier 1b — StringSetField on the model, string array in TOML/JSON.
74
+ { field: "capabilities", tomlKey: "capabilities", type: "string[]" },
75
+ ];
76
+ /**
77
+ * Fields that ARE author-controlled but do not live in the `[workflow]` table —
78
+ * they travel through their own structural channel. Kept distinct from
79
+ * `WORKFLOW_FIELDS_INTERNAL` so "internal" keeps meaning "not author-facing".
80
+ */
81
+ export const WORKFLOW_FIELDS_STRUCTURAL = new Set([
82
+ // The workflow's identity. Comes from the TOML file name / `--key`, and is
83
+ // attached by the caller rather than spread from the `[workflow]` table.
84
+ "workflowKey",
85
+ // #1304 — JSON declared-access manifest, derived from the workflow's CEL
86
+ // fields and attached alongside the steps write, not typed by the author.
87
+ "metadataManifest",
88
+ ]);
89
+ /**
90
+ * Fields the server owns: identity, ownership, timestamps, computed pointers,
91
+ * and the deprecated draft/revision slot. None of these are ever sent by the
92
+ * CLI, and none belong in workflow TOML.
93
+ */
94
+ export const WORKFLOW_FIELDS_INTERNAL = new Set([
95
+ // Identity / ownership / timestamps — assigned by the server.
96
+ "workflowId",
97
+ "appId",
98
+ "createdBy",
99
+ "createdAt",
100
+ "modifiedAt",
101
+ // Pointer to the active WorkflowConfiguration — server-computed on publish.
102
+ "activeConfigId",
103
+ // DEPRECATED in models.yaml: the legacy revision + draft slot, kept for
104
+ // migration/backward compatibility. Server-managed; never author-authored.
105
+ "latestRevision",
106
+ "stepsR2Key",
107
+ "draftStepsR2Key",
108
+ "draftInputSchema",
109
+ "draftOutputSchema",
110
+ "draftModifiedAt",
111
+ ]);
112
+ /**
113
+ * Synced fields the CLI does NOT round-trip yet — Phase 2 (#2327) wires them.
114
+ * Recorded explicitly so "classified" is never mistaken for "implemented".
115
+ * `lock` was wired by #1972; `templateMissingMarker` was removed from the
116
+ * platform by #2643, so the set is now empty.
117
+ */
118
+ export const SYNCED_NOT_YET_WIRED = new Set([]);
119
+ /** Descriptor `field` names, for coverage/parity checks. */
120
+ export const WORKFLOW_SYNCED_FIELDS = new Set(WORKFLOW_FIELD_DESCRIPTOR.map((d) => d.field));
121
+ /** Look up a synced field's descriptor by model field name. */
122
+ export function getWorkflowFieldDescriptor(field) {
123
+ return WORKFLOW_FIELD_DESCRIPTOR.find((d) => d.field === field);
124
+ }
125
+ /**
126
+ * Model fields that are classified in NONE of synced / structural / internal —
127
+ * i.e. a field someone added to `models.yaml` without deciding how the CLI
128
+ * treats it. Non-empty is a hard failure in the drift guard.
129
+ */
130
+ export function findUnclassifiedWorkflowFields(modelFields) {
131
+ return modelFields
132
+ .filter((f) => !WORKFLOW_SYNCED_FIELDS.has(f) &&
133
+ !WORKFLOW_FIELDS_STRUCTURAL.has(f) &&
134
+ !WORKFLOW_FIELDS_INTERNAL.has(f))
135
+ .sort();
136
+ }
137
+ /**
138
+ * Classifications that no longer correspond to a model field — i.e. a field
139
+ * removed from `models.yaml` while the CLI still classifies it. Also a hard
140
+ * failure: a stale classification must not silently pass, or the coverage
141
+ * claim quietly stops meaning anything.
142
+ */
143
+ export function findStaleWorkflowClassifications(modelFields) {
144
+ const known = new Set(modelFields);
145
+ return [
146
+ ...WORKFLOW_SYNCED_FIELDS,
147
+ ...WORKFLOW_FIELDS_STRUCTURAL,
148
+ ...WORKFLOW_FIELDS_INTERNAL,
149
+ ]
150
+ .filter((f) => !known.has(f))
151
+ .sort();
152
+ }
153
+ //# sourceMappingURL=workflow-field-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-field-descriptor.js","sourceRoot":"","sources":["../../../src/lib/workflow-field-descriptor.ts"],"names":[],"mappings":"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"}