primitive-admin 1.0.61 → 1.0.62

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 (300) hide show
  1. package/README.md +125 -69
  2. package/assets/skill/skills/primitive-platform/SKILL.md +336 -37
  3. package/dist/bin/primitive.js +25 -14
  4. package/dist/bin/primitive.js.map +1 -1
  5. package/dist/src/commands/analytics.js +36 -16
  6. package/dist/src/commands/analytics.js.map +1 -1
  7. package/dist/src/commands/apps.js +49 -188
  8. package/dist/src/commands/apps.js.map +1 -1
  9. package/dist/src/commands/blob-buckets.js +13 -153
  10. package/dist/src/commands/blob-buckets.js.map +1 -1
  11. package/dist/src/commands/collection-type-configs.js +14 -100
  12. package/dist/src/commands/collection-type-configs.js.map +1 -1
  13. package/dist/src/commands/collections.js +47 -8
  14. package/dist/src/commands/collections.js.map +1 -1
  15. package/dist/src/commands/config.d.ts +46 -0
  16. package/dist/src/commands/config.js +479 -0
  17. package/dist/src/commands/config.js.map +1 -0
  18. package/dist/src/commands/connections.js +12 -7
  19. package/dist/src/commands/connections.js.map +1 -1
  20. package/dist/src/commands/cron-triggers.js +84 -176
  21. package/dist/src/commands/cron-triggers.js.map +1 -1
  22. package/dist/src/commands/database-type-configs.d.ts +2 -0
  23. package/dist/src/commands/database-type-configs.js +171 -0
  24. package/dist/src/commands/database-type-configs.js.map +1 -0
  25. package/dist/src/commands/database-types.js +4 -4
  26. package/dist/src/commands/database-types.js.map +1 -1
  27. package/dist/src/commands/databases.d.ts +63 -0
  28. package/dist/src/commands/databases.js +649 -87
  29. package/dist/src/commands/databases.js.map +1 -1
  30. package/dist/src/commands/documents.js +869 -12
  31. package/dist/src/commands/documents.js.map +1 -1
  32. package/dist/src/commands/email-templates.js +18 -125
  33. package/dist/src/commands/email-templates.js.map +1 -1
  34. package/dist/src/commands/env.d.ts +12 -1
  35. package/dist/src/commands/env.js +98 -25
  36. package/dist/src/commands/env.js.map +1 -1
  37. package/dist/src/commands/feature-flags.d.ts +14 -0
  38. package/dist/src/commands/feature-flags.js +116 -0
  39. package/dist/src/commands/feature-flags.js.map +1 -0
  40. package/dist/src/commands/group-type-configs.js +14 -109
  41. package/dist/src/commands/group-type-configs.js.map +1 -1
  42. package/dist/src/commands/init.d.ts +9 -1
  43. package/dist/src/commands/init.js +1056 -277
  44. package/dist/src/commands/init.js.map +1 -1
  45. package/dist/src/commands/integrations.js +136 -421
  46. package/dist/src/commands/integrations.js.map +1 -1
  47. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  48. package/dist/src/commands/metadata-category-configs.js +112 -0
  49. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  50. package/dist/src/commands/metadata.js +33 -141
  51. package/dist/src/commands/metadata.js.map +1 -1
  52. package/dist/src/commands/prompts.js +206 -563
  53. package/dist/src/commands/prompts.js.map +1 -1
  54. package/dist/src/commands/rule-sets.d.ts +1 -1
  55. package/dist/src/commands/rule-sets.js +16 -132
  56. package/dist/src/commands/rule-sets.js.map +1 -1
  57. package/dist/src/commands/scripts.js +67 -234
  58. package/dist/src/commands/scripts.js.map +1 -1
  59. package/dist/src/commands/sessions.js +17 -5
  60. package/dist/src/commands/sessions.js.map +1 -1
  61. package/dist/src/commands/sync-app-settings.d.ts +113 -70
  62. package/dist/src/commands/sync-app-settings.js +193 -242
  63. package/dist/src/commands/sync-app-settings.js.map +1 -1
  64. package/dist/src/commands/sync.d.ts +1932 -49
  65. package/dist/src/commands/sync.js +9521 -1769
  66. package/dist/src/commands/sync.js.map +1 -1
  67. package/dist/src/commands/tokens.js +8 -2
  68. package/dist/src/commands/tokens.js.map +1 -1
  69. package/dist/src/commands/users.js +92 -1
  70. package/dist/src/commands/users.js.map +1 -1
  71. package/dist/src/commands/vars.js +44 -58
  72. package/dist/src/commands/vars.js.map +1 -1
  73. package/dist/src/commands/webhooks.js +318 -156
  74. package/dist/src/commands/webhooks.js.map +1 -1
  75. package/dist/src/commands/workflows.d.ts +49 -12
  76. package/dist/src/commands/workflows.js +652 -1086
  77. package/dist/src/commands/workflows.js.map +1 -1
  78. package/dist/src/lib/access-rule-display.d.ts +21 -0
  79. package/dist/src/lib/access-rule-display.js +34 -0
  80. package/dist/src/lib/access-rule-display.js.map +1 -0
  81. package/dist/src/lib/api-client.d.ts +541 -61
  82. package/dist/src/lib/api-client.js +559 -102
  83. package/dist/src/lib/api-client.js.map +1 -1
  84. package/dist/src/lib/app-settings-descriptor.d.ts +180 -25
  85. package/dist/src/lib/app-settings-descriptor.js +403 -82
  86. package/dist/src/lib/app-settings-descriptor.js.map +1 -1
  87. package/dist/src/lib/canonical-json.d.ts +12 -0
  88. package/dist/src/lib/canonical-json.js +35 -0
  89. package/dist/src/lib/canonical-json.js.map +1 -0
  90. package/dist/src/lib/cli-manifest.d.ts +8 -0
  91. package/dist/src/lib/cli-manifest.js +1 -0
  92. package/dist/src/lib/cli-manifest.js.map +1 -1
  93. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +6 -2
  94. package/dist/src/lib/codegen-shared/generatedFiles.js +9 -2
  95. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
  96. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +6 -6
  97. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +8 -8
  98. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -1
  99. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  100. package/dist/src/lib/config-object-descriptor.js +658 -0
  101. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  102. package/dist/src/lib/config-payload.d.ts +85 -0
  103. package/dist/src/lib/config-payload.js +116 -0
  104. package/dist/src/lib/config-payload.js.map +1 -0
  105. package/dist/src/lib/config-surface.d.ts +130 -0
  106. package/dist/src/lib/config-surface.js +300 -0
  107. package/dist/src/lib/config-surface.js.map +1 -0
  108. package/dist/src/lib/credentials-store.d.ts +10 -0
  109. package/dist/src/lib/credentials-store.js +23 -0
  110. package/dist/src/lib/credentials-store.js.map +1 -1
  111. package/dist/src/lib/data-input.d.ts +23 -0
  112. package/dist/src/lib/data-input.js +50 -0
  113. package/dist/src/lib/data-input.js.map +1 -0
  114. package/dist/src/lib/db-codegen/dbTemplates.js +1 -1
  115. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
  116. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +1 -1
  117. package/dist/src/lib/env-resolver-core.d.ts +147 -0
  118. package/dist/src/lib/env-resolver-core.js +265 -0
  119. package/dist/src/lib/env-resolver-core.js.map +1 -0
  120. package/dist/src/lib/env-resolver.d.ts +28 -6
  121. package/dist/src/lib/env-resolver.js +44 -32
  122. package/dist/src/lib/env-resolver.js.map +1 -1
  123. package/dist/src/lib/generated-allowlist.js +12 -0
  124. package/dist/src/lib/generated-allowlist.js.map +1 -1
  125. package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
  126. package/dist/src/lib/generated-config-surfaces.js +4058 -0
  127. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  128. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  129. package/dist/src/lib/generated-template-lint.js +624 -0
  130. package/dist/src/lib/generated-template-lint.js.map +1 -0
  131. package/dist/src/lib/init-adopt.d.ts +16 -0
  132. package/dist/src/lib/init-adopt.js +34 -0
  133. package/dist/src/lib/init-adopt.js.map +1 -0
  134. package/dist/src/lib/init-assets.d.ts +39 -0
  135. package/dist/src/lib/init-assets.js +97 -0
  136. package/dist/src/lib/init-assets.js.map +1 -0
  137. package/dist/src/lib/init-config.d.ts +44 -5
  138. package/dist/src/lib/init-config.js +80 -7
  139. package/dist/src/lib/init-config.js.map +1 -1
  140. package/dist/src/lib/init-ios-links.d.ts +50 -0
  141. package/dist/src/lib/init-ios-links.js +153 -0
  142. package/dist/src/lib/init-ios-links.js.map +1 -0
  143. package/dist/src/lib/init-plan.d.ts +80 -0
  144. package/dist/src/lib/init-plan.js +95 -0
  145. package/dist/src/lib/init-plan.js.map +1 -0
  146. package/dist/src/lib/init-production-env.d.ts +48 -0
  147. package/dist/src/lib/init-production-env.js +59 -0
  148. package/dist/src/lib/init-production-env.js.map +1 -0
  149. package/dist/src/lib/init-schema.d.ts +74 -0
  150. package/dist/src/lib/init-schema.js +358 -0
  151. package/dist/src/lib/init-schema.js.map +1 -0
  152. package/dist/src/lib/init-xcode.d.ts +33 -0
  153. package/dist/src/lib/init-xcode.js +114 -0
  154. package/dist/src/lib/init-xcode.js.map +1 -0
  155. package/dist/src/lib/integration-request-config.d.ts +30 -0
  156. package/dist/src/lib/integration-request-config.js +145 -0
  157. package/dist/src/lib/integration-request-config.js.map +1 -0
  158. package/dist/src/lib/local-state.d.ts +55 -0
  159. package/dist/src/lib/local-state.js +167 -0
  160. package/dist/src/lib/local-state.js.map +1 -0
  161. package/dist/src/lib/log-inspection.d.ts +568 -0
  162. package/dist/src/lib/log-inspection.js +639 -0
  163. package/dist/src/lib/log-inspection.js.map +1 -0
  164. package/dist/src/lib/migration-nag.d.ts +2 -2
  165. package/dist/src/lib/migration-nag.js +3 -3
  166. package/dist/src/lib/object-status-filter.d.ts +22 -0
  167. package/dist/src/lib/object-status-filter.js +45 -0
  168. package/dist/src/lib/object-status-filter.js.map +1 -0
  169. package/dist/src/lib/output.d.ts +24 -1
  170. package/dist/src/lib/output.js +42 -1
  171. package/dist/src/lib/output.js.map +1 -1
  172. package/dist/src/lib/package-manager.d.ts +140 -0
  173. package/dist/src/lib/package-manager.js +305 -0
  174. package/dist/src/lib/package-manager.js.map +1 -0
  175. package/dist/src/lib/paginate.d.ts +50 -0
  176. package/dist/src/lib/paginate.js +53 -0
  177. package/dist/src/lib/paginate.js.map +1 -1
  178. package/dist/src/lib/platform-owned.d.ts +29 -3
  179. package/dist/src/lib/platform-owned.js +42 -3
  180. package/dist/src/lib/platform-owned.js.map +1 -1
  181. package/dist/src/lib/project-config.js +13 -5
  182. package/dist/src/lib/project-config.js.map +1 -1
  183. package/dist/src/lib/query-operators.d.ts +1 -1
  184. package/dist/src/lib/query-operators.js +1 -1
  185. package/dist/src/lib/record-filter.d.ts +18 -0
  186. package/dist/src/lib/record-filter.js +55 -0
  187. package/dist/src/lib/record-filter.js.map +1 -0
  188. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  189. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  190. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  191. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  192. package/dist/src/lib/resolve-init-server.js +77 -0
  193. package/dist/src/lib/resolve-init-server.js.map +1 -0
  194. package/dist/src/lib/resolve-platform.d.ts +43 -14
  195. package/dist/src/lib/resolve-platform.js +74 -12
  196. package/dist/src/lib/resolve-platform.js.map +1 -1
  197. package/dist/src/lib/run-status.d.ts +19 -0
  198. package/dist/src/lib/run-status.generated.d.ts +39 -0
  199. package/dist/src/lib/run-status.generated.js +66 -0
  200. package/dist/src/lib/run-status.generated.js.map +1 -0
  201. package/dist/src/lib/run-status.js +19 -0
  202. package/dist/src/lib/run-status.js.map +1 -0
  203. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  204. package/dist/src/lib/server-text-normalization.js +90 -0
  205. package/dist/src/lib/server-text-normalization.js.map +1 -0
  206. package/dist/src/lib/server-url.d.ts +22 -0
  207. package/dist/src/lib/server-url.js +33 -0
  208. package/dist/src/lib/server-url.js.map +1 -0
  209. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  210. package/dist/src/lib/signing-secret-status.js +116 -0
  211. package/dist/src/lib/signing-secret-status.js.map +1 -0
  212. package/dist/src/lib/skill-installer.js +6 -3
  213. package/dist/src/lib/skill-installer.js.map +1 -1
  214. package/dist/src/lib/snapshots.d.ts +2 -2
  215. package/dist/src/lib/snapshots.js +2 -2
  216. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +15 -2
  217. package/dist/src/lib/swift-codegen/dbGenerator.js +250 -18
  218. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
  219. package/dist/src/lib/swift-codegen/generator.d.ts +11 -2
  220. package/dist/src/lib/swift-codegen/generator.js +181 -7
  221. package/dist/src/lib/swift-codegen/generator.js.map +1 -1
  222. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +7 -3
  223. package/dist/src/lib/swift-codegen/siblingSymbols.js +4 -1
  224. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -1
  225. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  226. package/dist/src/lib/sync-dir-selector.js +30 -0
  227. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  228. package/dist/src/lib/sync-paths.d.ts +39 -0
  229. package/dist/src/lib/sync-paths.js +70 -2
  230. package/dist/src/lib/sync-paths.js.map +1 -1
  231. package/dist/src/lib/sync-resource-types.d.ts +138 -31
  232. package/dist/src/lib/sync-resource-types.js +241 -47
  233. package/dist/src/lib/sync-resource-types.js.map +1 -1
  234. package/dist/src/lib/sync-selectors.d.ts +95 -0
  235. package/dist/src/lib/sync-selectors.js +228 -0
  236. package/dist/src/lib/sync-selectors.js.map +1 -0
  237. package/dist/src/lib/template.d.ts +62 -4
  238. package/dist/src/lib/template.js +147 -39
  239. package/dist/src/lib/template.js.map +1 -1
  240. package/dist/src/lib/test-case-keys.d.ts +29 -0
  241. package/dist/src/lib/test-case-keys.js +55 -0
  242. package/dist/src/lib/test-case-keys.js.map +1 -0
  243. package/dist/src/lib/test-case-variables.d.ts +15 -0
  244. package/dist/src/lib/test-case-variables.js +29 -0
  245. package/dist/src/lib/test-case-variables.js.map +1 -0
  246. package/dist/src/lib/toml-database-config.d.ts +4 -4
  247. package/dist/src/lib/toml-database-config.js +27 -34
  248. package/dist/src/lib/toml-database-config.js.map +1 -1
  249. package/dist/src/lib/toml-metadata-config.d.ts +9 -5
  250. package/dist/src/lib/toml-metadata-config.js +40 -45
  251. package/dist/src/lib/toml-metadata-config.js.map +1 -1
  252. package/dist/src/lib/toml-native-form.d.ts +1 -1
  253. package/dist/src/lib/toml-native-form.js +1 -1
  254. package/dist/src/lib/toml-params-validator.d.ts +1 -1
  255. package/dist/src/lib/toml-params-validator.js +1 -1
  256. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  257. package/dist/src/lib/toml-scalar-edit.js +283 -0
  258. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  259. package/dist/src/lib/user-selector.d.ts +24 -0
  260. package/dist/src/lib/user-selector.js +33 -0
  261. package/dist/src/lib/user-selector.js.map +1 -0
  262. package/dist/src/lib/version-check.d.ts +25 -0
  263. package/dist/src/lib/version-check.js +77 -8
  264. package/dist/src/lib/version-check.js.map +1 -1
  265. package/dist/src/lib/watch.d.ts +121 -0
  266. package/dist/src/lib/watch.js +169 -0
  267. package/dist/src/lib/watch.js.map +1 -0
  268. package/dist/src/lib/workflow-apply.d.ts +69 -45
  269. package/dist/src/lib/workflow-apply.js +99 -72
  270. package/dist/src/lib/workflow-apply.js.map +1 -1
  271. package/dist/src/lib/workflow-codegen/generator.js +4 -4
  272. package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
  273. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +11 -0
  274. package/dist/src/lib/workflow-codegen/invokerIR.js +5 -0
  275. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -1
  276. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  277. package/dist/src/lib/workflow-config-apply.js +137 -0
  278. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  279. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  280. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  281. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  282. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  283. package/dist/src/lib/workflow-defaults.js +41 -0
  284. package/dist/src/lib/workflow-defaults.js.map +1 -0
  285. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  286. package/dist/src/lib/workflow-include-preserve.js +286 -0
  287. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  288. package/dist/src/lib/workflow-payload.d.ts +31 -20
  289. package/dist/src/lib/workflow-payload.js +100 -110
  290. package/dist/src/lib/workflow-payload.js.map +1 -1
  291. package/dist/src/lib/workflow-toml-validator.d.ts +37 -16
  292. package/dist/src/lib/workflow-toml-validator.js +141 -16
  293. package/dist/src/lib/workflow-toml-validator.js.map +1 -1
  294. package/dist/src/types/index.d.ts +78 -22
  295. package/dist/src/validators.d.ts +7 -7
  296. package/dist/src/validators.js +6 -6
  297. package/package.json +11 -6
  298. package/dist/src/commands/settings.d.ts +0 -15
  299. package/dist/src/commands/settings.js +0 -102
  300. package/dist/src/commands/settings.js.map +0 -1
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Shared poll-based tailing helpers for `--watch` / `--follow` (#1969).
3
+ *
4
+ * Two render modes over one abortable poll loop:
5
+ * - `--watch` → periodic full-snapshot redraw (a repeated `list`/`get`).
6
+ * - `--follow` → append-only tail: fetch rows after an opaque server-owned
7
+ * `resumeAfter` checkpoint each tick.
8
+ *
9
+ * The loop is endpoint-agnostic. `--follow` consumers supply a {@link FollowSource}
10
+ * that knows how to fetch the page after a checkpoint; `--watch` consumers supply
11
+ * a `snapshot()` and a renderer. The renderer is injected (there is no `json`
12
+ * flag in the options) so this file never decides output shape or clears the
13
+ * terminal — that is entirely the caller's renderer.
14
+ *
15
+ * `--follow` is near-lossless observed-version tailing: it re-emits a row when a
16
+ * newer version is observed, holds no per-item dedup state, and asserts only
17
+ * forward progress — never a total-order or exactly-once property (the
18
+ * underlying GSI sorts by `modifiedAt` alone and is eventually consistent). See
19
+ * the design in #1969.
20
+ *
21
+ * Unit-tested against fake sources (the `cli/src/lib/paginate.ts` pattern) with
22
+ * no server.
23
+ */
24
+ /** Interval floor: reject anything below this (prevents a request storm). */
25
+ export const MIN_INTERVAL_SECONDS = 1;
26
+ /** Default poll interval when `--interval` is omitted. */
27
+ export const DEFAULT_INTERVAL_SECONDS = 2;
28
+ /**
29
+ * Default cap on how many pages `followLoop` drains within a single tick when a
30
+ * burst is larger than one page. Bounds the within-tick work and, with the
31
+ * non-advancing-checkpoint guard, prevents an infinite drain.
32
+ */
33
+ export const DEFAULT_MAX_PAGES_PER_TICK = 20;
34
+ /**
35
+ * Validate an `--interval` value (in seconds). Returns the interval in seconds,
36
+ * or throws with a clear message for a missing/NaN/sub-floor value. Command
37
+ * handlers call this and surface the error; the library loops take a validated
38
+ * `intervalMs`.
39
+ */
40
+ export function parseIntervalSeconds(raw) {
41
+ if (raw === undefined)
42
+ return DEFAULT_INTERVAL_SECONDS;
43
+ const n = Number(raw);
44
+ if (!Number.isFinite(n) || n < MIN_INTERVAL_SECONDS) {
45
+ throw new Error(`--interval must be a number of seconds >= ${MIN_INTERVAL_SECONDS}`);
46
+ }
47
+ return n;
48
+ }
49
+ /**
50
+ * Sleep for `ms`, resolving early (never rejecting) if `signal` aborts. The
51
+ * timer and abort listener are always cleaned up, so a resolved delay leaves no
52
+ * dangling timer. Used by every poll loop so Ctrl-C stops promptly between
53
+ * ticks.
54
+ */
55
+ export function delay(ms, signal) {
56
+ return new Promise((resolve) => {
57
+ if (signal?.aborted) {
58
+ resolve();
59
+ return;
60
+ }
61
+ const timer = setTimeout(() => {
62
+ cleanup();
63
+ resolve();
64
+ }, ms);
65
+ const onAbort = () => {
66
+ clearTimeout(timer);
67
+ cleanup();
68
+ resolve();
69
+ };
70
+ const cleanup = () => signal?.removeEventListener("abort", onAbort);
71
+ signal?.addEventListener("abort", onAbort, { once: true });
72
+ });
73
+ }
74
+ /**
75
+ * Delay-then-probe until `done(value)` is true or the signal aborts. Returns
76
+ * the last probed value. Delay-first (not probe-first) so a caller that already
77
+ * holds a fresh value — the batch-status loops — keeps its "poll every N
78
+ * seconds" cadence with no extra immediate request.
79
+ */
80
+ export async function pollUntil(probe, done, options) {
81
+ const onError = options.onError ?? "throw";
82
+ let last;
83
+ let haveValue = false;
84
+ while (!options.signal.aborted) {
85
+ await delay(options.intervalMs, options.signal);
86
+ if (options.signal.aborted)
87
+ break;
88
+ try {
89
+ last = await probe();
90
+ haveValue = true;
91
+ }
92
+ catch (err) {
93
+ if (onError === "continue")
94
+ continue;
95
+ throw err;
96
+ }
97
+ options.onValue?.(last);
98
+ if (done(last))
99
+ return last;
100
+ }
101
+ // Aborted before `done`: return the last probed value (probe once if we never
102
+ // got one, so the return type holds).
103
+ if (!haveValue)
104
+ last = await probe();
105
+ return last;
106
+ }
107
+ /**
108
+ * Append-only tail. Bootstraps the baseline checkpoint (emitting nothing), then
109
+ * each tick drains forward while `hasMore` (bounded by `maxPagesPerTick`,
110
+ * stopping if the checkpoint fails to advance), rendering rows server-ascending.
111
+ * Holds no per-item state — the only carried state is the single opaque
112
+ * `resumeAfter` string.
113
+ */
114
+ export async function followLoop(source, options) {
115
+ const onError = options.onError ?? "continue";
116
+ const maxPages = source.maxPagesPerTick ?? DEFAULT_MAX_PAGES_PER_TICK;
117
+ // Bootstrap: establish the baseline; do not emit its rows.
118
+ let resumeAfter;
119
+ try {
120
+ resumeAfter = (await source.fetchAfter(undefined)).resumeAfter;
121
+ }
122
+ catch (err) {
123
+ if (onError !== "continue")
124
+ throw err;
125
+ resumeAfter = ""; // fall through to polling; the next tick retries
126
+ }
127
+ while (!options.signal.aborted) {
128
+ try {
129
+ let pages = 0;
130
+ while (pages < maxPages && !options.signal.aborted) {
131
+ const page = await source.fetchAfter(resumeAfter || undefined);
132
+ if (page.items.length > 0)
133
+ options.render(page.items);
134
+ const advanced = page.resumeAfter !== resumeAfter;
135
+ resumeAfter = page.resumeAfter;
136
+ pages++;
137
+ // Stop the within-tick drain when the burst is drained, or if the
138
+ // checkpoint didn't advance (guards against an endless drain).
139
+ if (!page.hasMore || !advanced)
140
+ break;
141
+ }
142
+ }
143
+ catch (err) {
144
+ if (onError !== "continue")
145
+ throw err;
146
+ // continue: swallow and retry next tick
147
+ }
148
+ await delay(options.intervalMs, options.signal);
149
+ }
150
+ }
151
+ /**
152
+ * Snapshot redraw. Each tick fetches the full current snapshot and hands it to
153
+ * the renderer, which owns any clearing/redraw. No checkpoint, no dedup.
154
+ */
155
+ export async function watchLoop(snapshot, options) {
156
+ const onError = options.onError ?? "continue";
157
+ while (!options.signal.aborted) {
158
+ try {
159
+ const items = await snapshot();
160
+ options.render(items);
161
+ }
162
+ catch (err) {
163
+ if (onError !== "continue")
164
+ throw err;
165
+ }
166
+ await delay(options.intervalMs, options.signal);
167
+ }
168
+ }
169
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/lib/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAuB;IAC1D,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,wBAAwB,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,oBAAoB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,6CAA6C,oBAAoB,EAAE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAuB,EACvB,IAA2B,EAC3B,OAA4B;IAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IAC3C,IAAI,IAAmB,CAAC;IACxB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,KAAK,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,UAAU;gBAAE,SAAS;YACrC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9B,CAAC;IACD,8EAA8E;IAC9E,sCAAsC;IACtC,IAAI,CAAC,SAAS;QAAE,IAAI,GAAG,MAAM,KAAK,EAAE,CAAC;IACrC,OAAO,IAAS,CAAC;AACnB,CAAC;AAgDD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAuB,EACvB,OAAyB;IAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,IAAI,0BAA0B,CAAC;IAEtE,2DAA2D;IAC3D,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,KAAK,UAAU;YAAE,MAAM,GAAG,CAAC;QACtC,WAAW,GAAG,EAAE,CAAC,CAAC,iDAAiD;IACrE,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,KAAK,GAAG,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;gBAC/D,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;gBAClD,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC/B,KAAK,EAAE,CAAC;gBACR,kEAAkE;gBAClE,+DAA+D;gBAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;oBAAE,MAAM;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,UAAU;gBAAE,MAAM,GAAG,CAAC;YACtC,wCAAwC;QAC1C,CAAC;QACD,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAA4B,EAC5B,OAAwB;IAExB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,OAAO,KAAK,UAAU;gBAAE,MAAM,GAAG,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -1,22 +1,38 @@
1
1
  /**
2
2
  * Shared "apply a TOML body to an existing workflow" helper.
3
3
  *
4
- * Extracted from the `sync push` update-existing path (#1249, Fork 4) so that
5
- * both `sync push` and `workflows update --from-file` push a revised body the
4
+ * Extracted from the `config push` update-existing path (#1249, Fork 4) so that
5
+ * both `config push` and `workflows update --from-file` push a revised body the
6
6
  * same way. A second inlined copy would regress #807: the update is
7
7
  * ordering-sensitive and a naive metadata-then-body sequence rejects valid
8
8
  * sync-callable edits.
9
9
  *
10
- * Ordering invariant (#807 / codex review):
11
- * 1. metadata PATCH WITHOUT `syncCallable`. The server re-validates
12
- * `syncCallable: true` against the workflow's CURRENTLY-active server
13
- * steps (`loadCurrentActiveSteps`, src/admin-api.ts:4734), not the steps
14
- * being pushed in the same call. So enabling sync-callable in the first
15
- * PATCH would validate against the stale active steps and be rejected.
10
+ * Ordering invariant (#807 / codex review, revised by #2743). `syncCallable` is
11
+ * sequenced BY TARGET VALUE, because the two directions have opposite
12
+ * constraints:
13
+ * 1. metadata PATCH — carries `syncCallable: false` when the target is false
14
+ * (the TOML omits the key or sets it to `false`), and NOTHING when the
15
+ * target is true. Enabling here would be validated against the workflow's
16
+ * CURRENTLY-active server steps (`loadCurrentActiveSteps`,
17
+ * src/admin-api.ts), not the steps being pushed in the same call, so it
18
+ * would be rejected on the stale list. Disabling has no such check — the
19
+ * server re-validates steps only when flipping TO true — and it must
20
+ * happen here, because the step-write endpoints
21
+ * (`updateWorkflowDraft` / `updateWorkflowConfig`) reject
22
+ * sync-incompatible steps while the STORED flag is still true. Clearing
23
+ * the flag first is what lets a single push both drop `syncCallable` and
24
+ * introduce an incompatible step.
16
25
  * 2. body write — steps to the active config (config-model) or the legacy
17
26
  * draft slot (no active config).
18
- * 3. a SECOND `syncCallable` PATCH — issued AFTER the new steps are active,
19
- * so it validates against the new (compatible) steps.
27
+ * 3. a SECOND `syncCallable` PATCH, for ENABLING only — issued AFTER the new
28
+ * steps are active, so it validates against the new (compatible) steps.
29
+ * Skipped when the first PATCH's response already reports the flag on;
30
+ * sent unconditionally when that response is unreadable (fail closed
31
+ * toward convergence).
32
+ *
33
+ * #2743 also removed the "only send it when the TOML carries the key"
34
+ * no-clobber rule: the file fully describes the workflow, so deleting
35
+ * `syncCallable = true` from it disables the flag in one push.
20
36
  */
21
37
  import type { ApiClient } from "./api-client.js";
22
38
  import { safeJsonParse } from "./workflow-payload.js";
@@ -33,6 +49,49 @@ export interface ApplyWorkflowBodyOptions {
33
49
  /** When true, skip the optimistic-concurrency check (mirrors `--force`). */
34
50
  force?: boolean;
35
51
  }
52
+ /** The slot label a body gets when the workflow has no active config. */
53
+ export declare const LEGACY_DRAFT_SLOT_LABEL = "draft (legacy)";
54
+ /** What the push knows about the workflow once every write has landed. */
55
+ export interface LegacyDraftSlotState {
56
+ /** The workflow's active configuration once the push finished, if any. */
57
+ activeConfigId?: string | null;
58
+ /**
59
+ * Whether THIS push activated that configuration — the TOML carried a
60
+ * sidecar plus `activeConfigName`, so the authored body is what runs now.
61
+ */
62
+ activatedByPush?: boolean;
63
+ /** The workflow's latest legacy revision, when it has one. */
64
+ latestRevision?: string | null;
65
+ }
66
+ /**
67
+ * The warning a push owes the user when its body landed in the legacy draft
68
+ * slot and is NOT what the workflow runs (#2768).
69
+ *
70
+ * `workflows publish`, the one thing that promoted that slot, is gone, so those
71
+ * steps sit there unread — a silent no-op otherwise, since the push reports
72
+ * success either way.
73
+ *
74
+ * Reading a workflow is not neutral, which is why this takes more than an
75
+ * active config id. `getAppWorkflow` (src/admin-api.ts) auto-migrates a
76
+ * workflow that has NO configurations: it copies the latest revision — or, only
77
+ * when there is none, the draft slot — into a configuration and activates it.
78
+ * `applyWorkflowBody` reads the workflow immediately after writing the draft,
79
+ * so a legacy workflow WITH a published revision comes back carrying a
80
+ * brand-new `activeConfigId` holding the OLD body. Keyed on that id alone, the
81
+ * warning stayed silent for exactly the population it exists for. So:
82
+ *
83
+ * - the push activated a configuration itself (sidecar + `activeConfigName`):
84
+ * silent — that push IS the migration;
85
+ * - an active configuration and no revision behind it: silent — the server
86
+ * adopted the draft this push just wrote, and it is live;
87
+ * - an active configuration with a revision behind it: warn — that revision is
88
+ * what runs, not the pushed steps;
89
+ * - no active configuration at all: warn, and name the TOML migration.
90
+ *
91
+ * Exported for testability — the end-to-end path needs a workflow that can no
92
+ * longer be created through the API.
93
+ */
94
+ export declare function legacyDraftSlotWarning(updateSlotLabel: string, state: LegacyDraftSlotState): string | null;
36
95
  export interface ApplyWorkflowBodyResult {
37
96
  /** The freshest workflow `modifiedAt` after all PATCHes (for sync state). */
38
97
  latestModifiedAt?: string;
@@ -49,38 +108,3 @@ export interface ApplyWorkflowBodyResult {
49
108
  * and returns the latest `modifiedAt`, the slot label, and a fresh workflow.
50
109
  */
51
110
  export declare function applyWorkflowBody(client: ApiClient, appId: string, workflowId: string, workflow: any, steps: any[], opts?: ApplyWorkflowBodyOptions): Promise<ApplyWorkflowBodyResult>;
52
- /**
53
- * #1232 — parse the `workflows update --capabilities` flag into the array the
54
- * server's update handler expects. This is the CLI fallback the issue asked
55
- * for ("workflows update has no capability flag"): a grant/revoke channel for
56
- * an existing workflow, since `sync push` create deliberately does not forward
57
- * capabilities (#1233, Q2) and there was otherwise no way to set them on an
58
- * existing workflow.
59
- *
60
- * Semantics (mirrors how the server normalizes the field):
61
- * --capabilities membership → ["membership"] (grant)
62
- * --capabilities membership,secrets → ["membership","secrets"]
63
- * --capabilities " membership , x " → ["membership","x"] (trimmed)
64
- * --capabilities "" → [] (revoke all;
65
- * server stores empty as null)
66
- *
67
- * The set of grantable capability names ("membership" / "secrets") is validated
68
- * server-side by `validateWorkflowIdentityConfig`; the CLI intentionally does
69
- * NOT duplicate that allowlist so it can't drift from the server. An unknown
70
- * name is surfaced via the server's structured `details[]` error.
71
- *
72
- * The caller applies presence-guarded plumbing (`options.capabilities !==
73
- * undefined`) so an omitted flag never reaches the payload — the server's
74
- * `hasOwnProperty` guard then leaves the existing grant untouched.
75
- */
76
- export declare function parseCapabilitiesFlag(value: string): string[];
77
- /**
78
- * Fork 2 (#1249): a TOML pushed at a specific `<id>` may also declare a `key` /
79
- * `workflowKey`. If it differs from the target's actual key, that's almost
80
- * certainly the wrong file — error rather than silently ignoring it. An absent
81
- * TOML key is advisory and allowed (the operation targets `<id>`).
82
- *
83
- * Returns an error message string when there is a mismatch, otherwise null.
84
- * Pure function for unit testing.
85
- */
86
- export declare function workflowKeyMismatchError(tomlWorkflow: any, existingWorkflowKey: string | undefined): string | null;
@@ -1,28 +1,95 @@
1
1
  /**
2
2
  * Shared "apply a TOML body to an existing workflow" helper.
3
3
  *
4
- * Extracted from the `sync push` update-existing path (#1249, Fork 4) so that
5
- * both `sync push` and `workflows update --from-file` push a revised body the
4
+ * Extracted from the `config push` update-existing path (#1249, Fork 4) so that
5
+ * both `config push` and `workflows update --from-file` push a revised body the
6
6
  * same way. A second inlined copy would regress #807: the update is
7
7
  * ordering-sensitive and a naive metadata-then-body sequence rejects valid
8
8
  * sync-callable edits.
9
9
  *
10
- * Ordering invariant (#807 / codex review):
11
- * 1. metadata PATCH WITHOUT `syncCallable`. The server re-validates
12
- * `syncCallable: true` against the workflow's CURRENTLY-active server
13
- * steps (`loadCurrentActiveSteps`, src/admin-api.ts:4734), not the steps
14
- * being pushed in the same call. So enabling sync-callable in the first
15
- * PATCH would validate against the stale active steps and be rejected.
10
+ * Ordering invariant (#807 / codex review, revised by #2743). `syncCallable` is
11
+ * sequenced BY TARGET VALUE, because the two directions have opposite
12
+ * constraints:
13
+ * 1. metadata PATCH — carries `syncCallable: false` when the target is false
14
+ * (the TOML omits the key or sets it to `false`), and NOTHING when the
15
+ * target is true. Enabling here would be validated against the workflow's
16
+ * CURRENTLY-active server steps (`loadCurrentActiveSteps`,
17
+ * src/admin-api.ts), not the steps being pushed in the same call, so it
18
+ * would be rejected on the stale list. Disabling has no such check — the
19
+ * server re-validates steps only when flipping TO true — and it must
20
+ * happen here, because the step-write endpoints
21
+ * (`updateWorkflowDraft` / `updateWorkflowConfig`) reject
22
+ * sync-incompatible steps while the STORED flag is still true. Clearing
23
+ * the flag first is what lets a single push both drop `syncCallable` and
24
+ * introduce an incompatible step.
16
25
  * 2. body write — steps to the active config (config-model) or the legacy
17
26
  * draft slot (no active config).
18
- * 3. a SECOND `syncCallable` PATCH — issued AFTER the new steps are active,
19
- * so it validates against the new (compatible) steps.
27
+ * 3. a SECOND `syncCallable` PATCH, for ENABLING only — issued AFTER the new
28
+ * steps are active, so it validates against the new (compatible) steps.
29
+ * Skipped when the first PATCH's response already reports the flag on;
30
+ * sent unconditionally when that response is unreadable (fail closed
31
+ * toward convergence).
32
+ *
33
+ * #2743 also removed the "only send it when the TOML carries the key"
34
+ * no-clobber rule: the file fully describes the workflow, so deleting
35
+ * `syncCallable = true` from it disables the flag in one push.
20
36
  */
21
37
  import { buildWorkflowPayloadFromToml, safeJsonParse } from "./workflow-payload.js";
22
38
  // #1177: `safeJsonParse` now lives in the shared `workflow-payload` lib module
23
39
  // (the builder needs it too); re-exported here so existing importers of this
24
40
  // module keep working. Both `cli/src/lib` modules; no dep-direction problem.
25
41
  export { safeJsonParse };
42
+ /** The slot label a body gets when the workflow has no active config. */
43
+ export const LEGACY_DRAFT_SLOT_LABEL = "draft (legacy)";
44
+ /**
45
+ * The warning a push owes the user when its body landed in the legacy draft
46
+ * slot and is NOT what the workflow runs (#2768).
47
+ *
48
+ * `workflows publish`, the one thing that promoted that slot, is gone, so those
49
+ * steps sit there unread — a silent no-op otherwise, since the push reports
50
+ * success either way.
51
+ *
52
+ * Reading a workflow is not neutral, which is why this takes more than an
53
+ * active config id. `getAppWorkflow` (src/admin-api.ts) auto-migrates a
54
+ * workflow that has NO configurations: it copies the latest revision — or, only
55
+ * when there is none, the draft slot — into a configuration and activates it.
56
+ * `applyWorkflowBody` reads the workflow immediately after writing the draft,
57
+ * so a legacy workflow WITH a published revision comes back carrying a
58
+ * brand-new `activeConfigId` holding the OLD body. Keyed on that id alone, the
59
+ * warning stayed silent for exactly the population it exists for. So:
60
+ *
61
+ * - the push activated a configuration itself (sidecar + `activeConfigName`):
62
+ * silent — that push IS the migration;
63
+ * - an active configuration and no revision behind it: silent — the server
64
+ * adopted the draft this push just wrote, and it is live;
65
+ * - an active configuration with a revision behind it: warn — that revision is
66
+ * what runs, not the pushed steps;
67
+ * - no active configuration at all: warn, and name the TOML migration.
68
+ *
69
+ * Exported for testability — the end-to-end path needs a workflow that can no
70
+ * longer be created through the API.
71
+ */
72
+ export function legacyDraftSlotWarning(updateSlotLabel, state) {
73
+ if (updateSlotLabel !== LEGACY_DRAFT_SLOT_LABEL)
74
+ return null;
75
+ const { activeConfigId, activatedByPush, latestRevision } = state;
76
+ if (activatedByPush)
77
+ return null;
78
+ if (activeConfigId && !latestRevision)
79
+ return null;
80
+ const retired = "nothing promotes that slot any more ('workflows publish' was removed in #2768)";
81
+ if (activeConfigId) {
82
+ return (`Steps landed in the legacy draft slot, and ${retired}. Reading the workflow ` +
83
+ "migrated it onto the configurations model from its LATEST REVISION, so what " +
84
+ "runs is that revision, not the steps just pushed.\n" +
85
+ "Push again ('primitive config push --force') to write them to the active " +
86
+ "configuration, after checking that the file's body is the one you want live.");
87
+ }
88
+ return ("Steps landed in the legacy draft slot: this workflow has no active configuration, " +
89
+ `and ${retired}, so the pushed body will not run.\n` +
90
+ "Migrate it in TOML: put the body in workflows/<key>.configs/<name>.toml, set " +
91
+ 'activeConfigName = "<name>" in workflows/<key>.toml, and push again.');
92
+ }
26
93
  /**
27
94
  * Apply a parsed workflow body (metadata + steps) to an existing workflow,
28
95
  * preserving the key/id. `workflow` is the TOML's `[workflow]` table (already
@@ -32,18 +99,24 @@ export { safeJsonParse };
32
99
  */
33
100
  export async function applyWorkflowBody(client, appId, workflowId, workflow, steps, opts = {}) {
34
101
  const { expectedModifiedAt, activeConfigId, force } = opts;
35
- // 1. Metadata PATCH note: NO `syncCallable` here (deferred to step 3). The
36
- // shared builder (#1177, `mode: "update"`) omits `syncCallable` for exactly
37
- // this reason and applies the presence-aware clear-vs-leave semantics for
38
- // `accessRule` / `runAs` / `capabilities` / schemas. `requiresClientApply`
39
- // has no step-dependent validation, so the builder keeps it here. The
40
- // `metadataManifest` declared-access manifest (#1304) is call-site-specific
41
- // and attached below, not owned by the shared builder.
102
+ // #2743the target `syncCallable` state the file declares. Only an explicit
103
+ // `true` enables (mirroring the server's opt-in handler), so a TOML that
104
+ // omits the key targets `false` and converges a server that has it on.
105
+ const targetSyncCallable = workflow.syncCallable === true;
106
+ // 1. Metadata PATCH — always-send (#2743): the builder (`mode: "update"`)
107
+ // emits every `[workflow]` field with a definite value, so a line deleted
108
+ // from the file clears or resets it server-side instead of being silently
109
+ // preserved. `syncCallable` is the one field the builder leaves out,
110
+ // because its position in the sequence depends on the target value: a
111
+ // disable rides along here (before the steps write), an enable waits for
112
+ // step 3. The `metadataManifest` declared-access manifest (#1304) is
113
+ // call-site-specific and attached below, not owned by the shared builder.
42
114
  const updated = await client.updateWorkflow(appId, workflowId, {
43
115
  ...buildWorkflowPayloadFromToml(workflow, { mode: "update" }),
116
+ ...(targetSyncCallable ? {} : { syncCallable: false }),
44
117
  // #1304 (P-C): declared-access manifest. Absent key → undefined (server's
45
118
  // hasOwnProperty guard leaves it untouched); a parsed value/null is
46
- // forwarded so a pull → push round-trips it (null clears). `sync push`
119
+ // forwarded so a pull → push round-trips it (null clears). `config push`
47
120
  // always attaches this (null when the TOML drops `[metadata]`); the
48
121
  // `workflows update --from-file` caller may leave it undefined.
49
122
  metadataManifest: workflow.metadataManifest !== undefined ? workflow.metadataManifest : undefined,
@@ -72,13 +145,15 @@ export async function applyWorkflowBody(client, appId, workflowId, workflow, ste
72
145
  expressions,
73
146
  inputSchema: workflow.inputSchema ? safeJsonParse(workflow.inputSchema) : null,
74
147
  });
75
- updateSlotLabel = "draft (legacy)";
148
+ updateSlotLabel = LEGACY_DRAFT_SLOT_LABEL;
76
149
  }
77
- // 3. Deferred `syncCallable` PATCH — now that the new steps are active (#807).
78
- // Only sent when the TOML actually carries the key; an absent key stays
79
- // `undefined` and the call is skipped, preserving no-clobber discipline.
80
- if (workflow.syncCallable !== undefined) {
81
- const syncCallableUpdated = await client.updateWorkflow(appId, workflowId, { syncCallable: workflow.syncCallable }, force ? undefined : latestModifiedAt);
150
+ // 3. Deferred `syncCallable` PATCH — ENABLING only, now that the new steps
151
+ // are active (#807). Disabling already landed in step 1. Skipped when the
152
+ // first PATCH's response reports the flag already on (nothing to converge,
153
+ // and the call would cost a `modifiedAt` bump for no change); sent when
154
+ // the response shape is unreadable, because "unreadable" is not evidence.
155
+ if (targetSyncCallable && updated?.workflow?.syncCallable !== true) {
156
+ const syncCallableUpdated = await client.updateWorkflow(appId, workflowId, { syncCallable: true }, force ? undefined : latestModifiedAt);
82
157
  if (syncCallableUpdated?.workflow?.modifiedAt) {
83
158
  latestModifiedAt = syncCallableUpdated.workflow.modifiedAt;
84
159
  }
@@ -86,52 +161,4 @@ export async function applyWorkflowBody(client, appId, workflowId, workflow, ste
86
161
  const fullWorkflow = await client.getWorkflow(appId, workflowId);
87
162
  return { latestModifiedAt, updateSlotLabel, fullWorkflow };
88
163
  }
89
- /**
90
- * #1232 — parse the `workflows update --capabilities` flag into the array the
91
- * server's update handler expects. This is the CLI fallback the issue asked
92
- * for ("workflows update has no capability flag"): a grant/revoke channel for
93
- * an existing workflow, since `sync push` create deliberately does not forward
94
- * capabilities (#1233, Q2) and there was otherwise no way to set them on an
95
- * existing workflow.
96
- *
97
- * Semantics (mirrors how the server normalizes the field):
98
- * --capabilities membership → ["membership"] (grant)
99
- * --capabilities membership,secrets → ["membership","secrets"]
100
- * --capabilities " membership , x " → ["membership","x"] (trimmed)
101
- * --capabilities "" → [] (revoke all;
102
- * server stores empty as null)
103
- *
104
- * The set of grantable capability names ("membership" / "secrets") is validated
105
- * server-side by `validateWorkflowIdentityConfig`; the CLI intentionally does
106
- * NOT duplicate that allowlist so it can't drift from the server. An unknown
107
- * name is surfaced via the server's structured `details[]` error.
108
- *
109
- * The caller applies presence-guarded plumbing (`options.capabilities !==
110
- * undefined`) so an omitted flag never reaches the payload — the server's
111
- * `hasOwnProperty` guard then leaves the existing grant untouched.
112
- */
113
- export function parseCapabilitiesFlag(value) {
114
- return value
115
- .split(",")
116
- .map((cap) => cap.trim())
117
- .filter((cap) => cap.length > 0);
118
- }
119
- /**
120
- * Fork 2 (#1249): a TOML pushed at a specific `<id>` may also declare a `key` /
121
- * `workflowKey`. If it differs from the target's actual key, that's almost
122
- * certainly the wrong file — error rather than silently ignoring it. An absent
123
- * TOML key is advisory and allowed (the operation targets `<id>`).
124
- *
125
- * Returns an error message string when there is a mismatch, otherwise null.
126
- * Pure function for unit testing.
127
- */
128
- export function workflowKeyMismatchError(tomlWorkflow, existingWorkflowKey) {
129
- const tomlKey = tomlWorkflow?.key ?? tomlWorkflow?.workflowKey;
130
- if (tomlKey && existingWorkflowKey && tomlKey !== existingWorkflowKey) {
131
- return (`TOML workflow key "${tomlKey}" does not match the target workflow's key ` +
132
- `"${existingWorkflowKey}". This usually means you pointed --from-file at the ` +
133
- `wrong workflow id. Remove the key from the TOML or target the matching id.`);
134
- }
135
- return null;
136
- }
137
164
  //# sourceMappingURL=workflow-apply.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-apply.js","sourceRoot":"","sources":["../../../src/lib/workflow-apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-apply.js","sourceRoot":"","sources":["../../../src/lib/workflow-apply.ts"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ function renderTypeDecl(name, schema) {
97
97
  * TS-specific naming + type-declaration rendering happens here.
98
98
  */
99
99
  function parseWorkflow(input) {
100
- // #1464 removed `@iarna/toml`; #1446 makes `sync pull` emit schemas as native
100
+ // #1464 removed `@iarna/toml`; #1446 makes `config pull` emit schemas as native
101
101
  // TOML tables (incl. mixed-type enums like `enum = ["ok", 1]`, TOML 1.0). The
102
102
  // shared IR uses `parseConfigToml` + `safeJsonParse` under the hood.
103
103
  const ir = describeWorkflowInvoker({
@@ -119,9 +119,9 @@ function parseWorkflow(input) {
119
119
  inputRequired: ir.inputRequired,
120
120
  // Object-shaped only when the schema declares exactly `type: "object"` —
121
121
  // the one case where `Partial<<Key>Input>` is a sound cron `rootInput`
122
- // type. Schema-less / union / scalar / array → not object-shaped.
123
- inputIsObjectShaped: ir.inputSchema !== undefined &&
124
- describeSchema(ir.inputSchema).singularType === "object",
122
+ // type. Schema-less / union / scalar / array → not object-shaped. Decided
123
+ // in the SHARED IR (#2806) so the Swift cron helper cannot disagree.
124
+ inputIsObjectShaped: ir.inputIsObjectShaped,
125
125
  requiresClientApply: ir.requiresClientApply,
126
126
  };
127
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/lib/workflow-codegen/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/lib/workflow-codegen/generator.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,17 @@ export interface WorkflowInvokerIR {
61
61
  * renderer reparses the TOML for it.
62
62
  */
63
63
  requiresClientApply: boolean;
64
+ /**
65
+ * Whether the input schema is a plain object (`type: "object"`). Only an
66
+ * object-shaped input can be partialized, which is what each renderer's
67
+ * cron-trigger `rootInput` decision turns on: TS types it
68
+ * `Partial<<Key>Input>` (an `inputMapping` may supply the rest) and leaves
69
+ * Swift's — which has no `Partial<>` — an open `JSONValue`; anything else
70
+ * (schema-less / union / scalar / array) binds the full `<Key>Input` on both.
71
+ * Decided ONCE here (#2806) so the two renderers cannot disagree about which
72
+ * inputs are partializable.
73
+ */
74
+ inputIsObjectShaped: boolean;
64
75
  /** Parsed input schema, or `undefined` when absent. */
65
76
  inputSchema: unknown;
66
77
  /** Parsed output schema, or `undefined` when absent. */