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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Public subpath export: `primitive-admin/validators` (issue #983).
3
3
  *
4
- * Re-exports the TOML validators that `sync push` runs as its load-bearing
4
+ * Re-exports the TOML validators that `config push` runs as its load-bearing
5
5
  * gate, so external tooling (e.g. `primitive-docs`) can validate the exact
6
6
  * same way the published CLI does — instead of re-implementing the parse /
7
7
  * expand / validate flow against submodule source and silently drifting.
@@ -10,10 +10,10 @@
10
10
  *
11
11
  * 1. `validateWorkflowTomlSource(raw, filePath)` — the **source-level**
12
12
  * wrapper. Runs the identical parse → fragment-expand → validate → format
13
- * path that `sync push` runs for workflow TOML (`cli/src/commands/sync.ts`:
13
+ * path that `config push` runs for workflow TOML (`cli/src/commands/sync.ts`:
14
14
  * `parseTomlFile()` → `validateWorkflowToml()` → `formatWorkflowTomlErrors()`).
15
15
  * Use this when you have the raw TOML string and want zero divergence from
16
- * `sync push`, including `include` fragment expansion.
16
+ * `config push`, including `include` fragment expansion.
17
17
  *
18
18
  * 2. The raw validators (`validateWorkflowToml`, `validateOperations`) and
19
19
  * their formatters (`formatWorkflowTomlErrors`, `formatIssue`). These are
@@ -38,21 +38,21 @@ export interface WorkflowTomlSourceResult {
38
38
  /** The structured errors (empty when the source is valid). */
39
39
  errors: WorkflowTomlError[];
40
40
  /**
41
- * A human-readable, multi-line error string (the same text `sync push`
41
+ * A human-readable, multi-line error string (the same text `config push`
42
42
  * prints), or `null` when there are no errors.
43
43
  */
44
44
  formatted: string | null;
45
45
  }
46
46
  /**
47
- * Validate a workflow TOML **source string** the exact way `sync push` does.
47
+ * Validate a workflow TOML **source string** the exact way `config push` does.
48
48
  *
49
- * Runs the identical pipeline `sync push` runs on every workflow file:
49
+ * Runs the identical pipeline `config push` runs on every workflow file:
50
50
  * `parseConfigToml(raw)` → `expandWorkflowTomlData(parsed, filePath)`
51
51
  * → `validateWorkflowToml(expanded)` → `formatWorkflowTomlErrors(...)`.
52
52
  *
53
53
  * The `include` fragment expansion resolves fragments relative to
54
54
  * `<filePath>/../../workflow-fragments/` — pass the real (or intended) on-disk
55
- * path of the workflow so fragment resolution matches `sync push`. If the
55
+ * path of the workflow so fragment resolution matches `config push`. If the
56
56
  * source uses no `include` key the expander is a no-op and `filePath` is only
57
57
  * used for error attribution.
58
58
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Public subpath export: `primitive-admin/validators` (issue #983).
3
3
  *
4
- * Re-exports the TOML validators that `sync push` runs as its load-bearing
4
+ * Re-exports the TOML validators that `config push` runs as its load-bearing
5
5
  * gate, so external tooling (e.g. `primitive-docs`) can validate the exact
6
6
  * same way the published CLI does — instead of re-implementing the parse /
7
7
  * expand / validate flow against submodule source and silently drifting.
@@ -10,10 +10,10 @@
10
10
  *
11
11
  * 1. `validateWorkflowTomlSource(raw, filePath)` — the **source-level**
12
12
  * wrapper. Runs the identical parse → fragment-expand → validate → format
13
- * path that `sync push` runs for workflow TOML (`cli/src/commands/sync.ts`:
13
+ * path that `config push` runs for workflow TOML (`cli/src/commands/sync.ts`:
14
14
  * `parseTomlFile()` → `validateWorkflowToml()` → `formatWorkflowTomlErrors()`).
15
15
  * Use this when you have the raw TOML string and want zero divergence from
16
- * `sync push`, including `include` fragment expansion.
16
+ * `config push`, including `include` fragment expansion.
17
17
  *
18
18
  * 2. The raw validators (`validateWorkflowToml`, `validateOperations`) and
19
19
  * their formatters (`formatWorkflowTomlErrors`, `formatIssue`). These are
@@ -34,15 +34,15 @@ import { expandWorkflowTomlData } from "./lib/workflow-fragments.js";
34
34
  export { validateWorkflowToml, formatWorkflowTomlErrors, } from "./lib/workflow-toml-validator.js";
35
35
  export { validateOperations, formatIssue, } from "./lib/toml-params-validator.js";
36
36
  /**
37
- * Validate a workflow TOML **source string** the exact way `sync push` does.
37
+ * Validate a workflow TOML **source string** the exact way `config push` does.
38
38
  *
39
- * Runs the identical pipeline `sync push` runs on every workflow file:
39
+ * Runs the identical pipeline `config push` runs on every workflow file:
40
40
  * `parseConfigToml(raw)` → `expandWorkflowTomlData(parsed, filePath)`
41
41
  * → `validateWorkflowToml(expanded)` → `formatWorkflowTomlErrors(...)`.
42
42
  *
43
43
  * The `include` fragment expansion resolves fragments relative to
44
44
  * `<filePath>/../../workflow-fragments/` — pass the real (or intended) on-disk
45
- * path of the workflow so fragment resolution matches `sync push`. If the
45
+ * path of the workflow so fragment resolution matches `config push`. If the
46
46
  * source uses no `include` key the expander is a no-op and `filePath` is only
47
47
  * used for error attribution.
48
48
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "primitive-admin",
3
- "version": "1.0.61",
3
+ "version": "1.0.62",
4
4
  "description": "CLI for administering Primitive applications",
5
5
  "type": "module",
6
6
  "bin": {
@@ -24,17 +24,21 @@
24
24
  "gen:workflow-descriptor:check": "node scripts/gen-workflow-schema-descriptor.mjs --check",
25
25
  "gen:operation-def-descriptor": "node scripts/gen-operation-def-descriptor.mjs",
26
26
  "gen:operation-def-descriptor:check": "node scripts/gen-operation-def-descriptor.mjs --check",
27
- "prebuild": "node scripts/gen-allowlist.mjs && node scripts/gen-workflow-schema-descriptor.mjs && node scripts/gen-operation-def-descriptor.mjs",
27
+ "gen:config-surfaces": "node scripts/gen-config-surfaces.mjs",
28
+ "gen:config-surfaces:check": "node scripts/gen-config-surfaces.mjs --check",
29
+ "gen:template-lint": "node scripts/gen-template-lint.mjs",
30
+ "gen:template-lint:check": "node scripts/gen-template-lint.mjs --check",
31
+ "gen:config-write-surface": "node scripts/gen-config-write-surface.mjs",
32
+ "gen:config-write-surface:check": "node scripts/gen-config-write-surface.mjs --check",
33
+ "prebuild": "node scripts/gen-allowlist.mjs && node scripts/gen-template-lint.mjs && node scripts/gen-workflow-schema-descriptor.mjs && node scripts/gen-operation-def-descriptor.mjs && node scripts/gen-config-surfaces.mjs && node scripts/gen-primitive-env-resolver.mjs",
28
34
  "build": "tsc",
29
35
  "typecheck": "tsc --noEmit",
30
36
  "prepublishOnly": "pnpm run build",
31
37
  "test": "vitest run --config vitest.config.ts",
32
38
  "test:unit": "vitest run --config vitest.config.ts tests/unit",
33
39
  "test:integration": "vitest run --config vitest.config.ts tests/integration",
34
- "test:llm": "vitest run --config vitest.config.ts tests/integration/llm.test.ts",
35
40
  "test:batch": "vitest run --config vitest.config.ts tests/integration/batch-tests.test.ts",
36
41
  "test:prompt-tests": "vitest run --config vitest.config.ts tests/integration/prompt-tests.test.ts",
37
- "test:workflow-tests": "vitest run --config vitest.config.ts tests/integration/workflow-tests.test.ts",
38
42
  "test:sync-test-cases": "vitest run --config vitest.config.ts tests/integration/sync-test-cases.test.ts",
39
43
  "cli:test:sync-db": "vitest run --config vitest.config.ts tests/integration/sync-database-config.test.ts --pool forks --poolOptions.forks.singleFork",
40
44
  "test:email-templates": "vitest run --config vitest.config.ts tests/integration/email-templates.test.ts"
@@ -59,7 +63,7 @@
59
63
  "mime-types": "^2.1.35",
60
64
  "open": "^10.0.3",
61
65
  "smol-toml": "1.7.0",
62
- "tar": "^7.5.11",
66
+ "tar": "^7.5.22",
63
67
  "ulid": "^2.4.0"
64
68
  },
65
69
  "devDependencies": {
@@ -70,6 +74,7 @@
70
74
  "prettier": "3.8.4",
71
75
  "tsx": "^4.20.3",
72
76
  "typescript": "^5.7.2",
73
- "vitest": "^1.6.1"
77
+ "vitest": "^1.6.1",
78
+ "yaml": "^2.9.0"
74
79
  }
75
80
  }
@@ -1,15 +0,0 @@
1
- /**
2
- * `primitive settings` — the app-settings sync surface (issue #1033, Phase 2).
3
- *
4
- * A focused command for the app-settings TOML round-trip that `sync` handles as
5
- * part of the whole-config export/import. `settings pull` / `push` / `diff`
6
- * operate on the SAME `app.toml` and the SAME single `entities.app.contentHash`
7
- * as `sync`, so the two are interchangeable and idempotent together. `settings
8
- * show` renders the current server-effective settings (with `googleClientSecret`
9
- * redacted).
10
- *
11
- * The command logic lives in `sync-app-settings.ts` so `sync` and `settings`
12
- * share one implementation; this file only wires up the commander surface.
13
- */
14
- import { Command } from "commander";
15
- export declare function registerSettingsCommands(program: Command): void;
@@ -1,102 +0,0 @@
1
- /**
2
- * `primitive settings` — the app-settings sync surface (issue #1033, Phase 2).
3
- *
4
- * A focused command for the app-settings TOML round-trip that `sync` handles as
5
- * part of the whole-config export/import. `settings pull` / `push` / `diff`
6
- * operate on the SAME `app.toml` and the SAME single `entities.app.contentHash`
7
- * as `sync`, so the two are interchangeable and idempotent together. `settings
8
- * show` renders the current server-effective settings (with `googleClientSecret`
9
- * redacted).
10
- *
11
- * The command logic lives in `sync-app-settings.ts` so `sync` and `settings`
12
- * share one implementation; this file only wires up the commander surface.
13
- */
14
- import { ApiClient } from "../lib/api-client.js";
15
- import { resolveAppId } from "../lib/config.js";
16
- import { resolveSyncDir, isAutoResolvedSyncDir, checkLegacySyncMigration, } from "../lib/sync-paths.js";
17
- import { info, warn } from "../lib/output.js";
18
- import { showAppSettings, pullAppSettings, pushAppSettings, diffAppSettings, } from "./sync-app-settings.js";
19
- /**
20
- * Resolve the sync directory and print the per-environment hint the way `sync`
21
- * does (suppressed under `--json` so stdout stays pure JSON).
22
- */
23
- function resolveConfigDir(appId, options) {
24
- const configDir = resolveSyncDir({ appId, userDir: options.dir });
25
- if (isAutoResolvedSyncDir(options.dir) && !options.json) {
26
- info(`Using per-environment sync directory: ${configDir}`);
27
- const legacyHint = checkLegacySyncMigration(configDir);
28
- if (legacyHint)
29
- warn(legacyHint);
30
- }
31
- return configDir;
32
- }
33
- export function registerSettingsCommands(program) {
34
- const settings = program
35
- .command("settings")
36
- .description("View and sync app settings through app.toml")
37
- .addHelpText("after", `
38
- Examples:
39
- $ primitive settings show # Render current server settings
40
- $ primitive settings show --json # Machine-readable (secret redacted)
41
- $ primitive settings pull # Write server settings to app.toml
42
- $ primitive settings diff # Show local app.toml vs server
43
- $ primitive settings push # Apply app.toml edits to the server
44
-
45
- app.toml is the primary way to manage app configuration. The Google OAuth
46
- client secret is intentionally excluded from app.toml; set it with
47
- 'primitive apps update <app-id> --google-client-secret <secret>'.
48
- `);
49
- // settings show
50
- settings
51
- .command("show")
52
- .description("Show the current server-effective app settings")
53
- .argument("[app-id]", "App ID (uses current app if not specified)")
54
- .option("--app <app-id>", "App ID")
55
- .option("--json", "Output as JSON (googleClientSecret redacted)")
56
- .action(async (appId, options) => {
57
- const resolvedAppId = resolveAppId(appId, options);
58
- await showAppSettings(new ApiClient(), resolvedAppId, options);
59
- });
60
- // settings pull
61
- settings
62
- .command("pull")
63
- .description("Write the current server settings to app.toml")
64
- .argument("[app-id]", "App ID (uses current app if not specified)")
65
- .option("--app <app-id>", "App ID")
66
- .option("--dir <path>", "Config directory (overrides the auto-resolved per-env path)")
67
- .option("--json", "Output as JSON")
68
- .action(async (appId, options) => {
69
- const resolvedAppId = resolveAppId(appId, options);
70
- const configDir = resolveConfigDir(resolvedAppId, options);
71
- await pullAppSettings(new ApiClient(), resolvedAppId, configDir, options);
72
- });
73
- // settings diff
74
- settings
75
- .command("diff")
76
- .description("Show per-field differences between app.toml and the server")
77
- .argument("[app-id]", "App ID (uses current app if not specified)")
78
- .option("--app <app-id>", "App ID")
79
- .option("--dir <path>", "Config directory (overrides the auto-resolved per-env path)")
80
- .option("--json", "Output as JSON")
81
- .action(async (appId, options) => {
82
- const resolvedAppId = resolveAppId(appId, options);
83
- const configDir = resolveConfigDir(resolvedAppId, options);
84
- await diffAppSettings(new ApiClient(), resolvedAppId, configDir, options);
85
- });
86
- // settings push
87
- settings
88
- .command("push")
89
- .description("Apply app.toml settings to the server")
90
- .argument("[app-id]", "App ID (uses current app if not specified)")
91
- .option("--app <app-id>", "App ID")
92
- .option("--dir <path>", "Config directory (overrides the auto-resolved per-env path)")
93
- .option("--force", "Push even if app.toml is unchanged since the last sync")
94
- .option("--dry-run", "Show what would be changed without applying")
95
- .option("--json", "Output as JSON")
96
- .action(async (appId, options) => {
97
- const resolvedAppId = resolveAppId(appId, options);
98
- const configDir = resolveConfigDir(resolvedAppId, options);
99
- await pushAppSettings(new ApiClient(), resolvedAppId, configDir, options);
100
- });
101
- }
102
- //# sourceMappingURL=settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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"}