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,8 +1,10 @@
1
1
  import { cpSync, existsSync, mkdtempSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync, } from "fs";
2
+ import { execFileSync } from "child_process";
2
3
  import { join } from "path";
3
4
  import { tmpdir } from "os";
4
5
  import * as tar from "tar";
5
6
  import { PRODUCTION_SERVER_URL } from "./constants.js";
7
+ import { installArgv, PRIMITIVE_CLI_PACKAGE } from "./package-manager.js";
6
8
  import { resolveChannelBranch, DEFAULT_CHANNEL_BRANCH } from "./channel.js";
7
9
  // Mirror repos pushed from this monorepo at publish time:
8
10
  // templates/primitive-vue-template via scripts/sync-vue-template.mjs, and
@@ -170,7 +172,14 @@ function deriveEnvUrls(serverUrl) {
170
172
  return { apiUrl, wsUrl };
171
173
  }
172
174
  /**
173
- * Sets or replaces a key=value pair in env file content.
175
+ * Replaces a key=value pair in env file content IF the key is already there.
176
+ *
177
+ * Replace-only, deliberately (#2873): the Vue template no longer authors the
178
+ * identity keys — `primitiveEnv()` fills them from `.primitive/config.json` —
179
+ * so appending one would re-create the second source of truth this change
180
+ * removed, and `cf-deploy` treats an identity key in a `.env` file as a hard
181
+ * error. An OLD template still carries the keys, and those must keep being
182
+ * filled in, which is exactly what "replace if present" does.
174
183
  */
175
184
  function setEnvVar(content, key, value) {
176
185
  const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -181,7 +190,7 @@ function setEnvVar(content, key, value) {
181
190
  if (pattern.test(content)) {
182
191
  return content.replace(pattern, `${key}=${formatted}`);
183
192
  }
184
- return content.trimEnd() + `\n${key}=${formatted}\n`;
193
+ return content;
185
194
  }
186
195
  /**
187
196
  * Updates a single env file with the app ID and server URLs.
@@ -206,24 +215,6 @@ function updateSingleEnvFile(envPath, appId, serverUrl, appName, fallbackPath) {
206
215
  const { apiUrl, wsUrl } = deriveEnvUrls(serverUrl);
207
216
  envContent = setEnvVar(envContent, "VITE_API_URL", apiUrl);
208
217
  envContent = setEnvVar(envContent, "VITE_WS_URL", wsUrl);
209
- // Update or add VITE_API_URL and VITE_WS_URL based on the auth server
210
- if (serverUrl) {
211
- const wsUrl = serverUrl
212
- .replace(/^https:\/\//, "wss://")
213
- .replace(/^http:\/\//, "ws://");
214
- if (envContent.includes("VITE_API_URL=")) {
215
- envContent = envContent.replace(/VITE_API_URL=.*/, `VITE_API_URL=${serverUrl}`);
216
- }
217
- else {
218
- envContent = envContent.trimEnd() + `\nVITE_API_URL=${serverUrl}\n`;
219
- }
220
- if (envContent.includes("VITE_WS_URL=")) {
221
- envContent = envContent.replace(/VITE_WS_URL=.*/, `VITE_WS_URL=${wsUrl}`);
222
- }
223
- else {
224
- envContent = envContent.trimEnd() + `\nVITE_WS_URL=${wsUrl}\n`;
225
- }
226
- }
227
218
  writeFileSync(envPath, envContent.trimEnd() + "\n");
228
219
  return true;
229
220
  }
@@ -231,15 +222,20 @@ function updateSingleEnvFile(envPath, appId, serverUrl, appName, fallbackPath) {
231
222
  * Updates .env and .env.production files with the app ID and server URLs.
232
223
  * For .env, if it doesn't exist but .env.example does, copies from example first.
233
224
  * Returns information about which files were updated.
225
+ *
226
+ * `production` names the backend/app pair a production build should talk to.
227
+ * Omit it and `.env.production` points at the hosted production server with
228
+ * this app id — the historical behavior, which is correct for an app created
229
+ * there and wrong for one created anywhere else, so composed runs derive the
230
+ * pair from the project's own environments and pass it in (#2890).
234
231
  */
235
- export function updateEnvFile(targetDir, appId, serverUrl, appName) {
232
+ export function updateEnvFile(targetDir, appId, serverUrl, appName, production) {
236
233
  const envPath = join(targetDir, ".env");
237
234
  const envExamplePath = join(targetDir, ".env.example");
238
235
  const envProductionPath = join(targetDir, ".env.production");
239
236
  // Update .env (create from .env.example if needed)
240
237
  const envUpdated = updateSingleEnvFile(envPath, appId, serverUrl, appName, envExamplePath);
241
- // .env.production always points at production regardless of the chosen dev server
242
- const envProductionUpdated = updateSingleEnvFile(envProductionPath, appId, PRODUCTION_SERVER_URL, appName);
238
+ const envProductionUpdated = updateSingleEnvFile(envProductionPath, production?.appId ?? appId, production?.serverUrl ?? PRODUCTION_SERVER_URL, production?.appName ?? appName);
243
239
  return { envUpdated, envProductionUpdated };
244
240
  }
245
241
  /**
@@ -373,10 +369,85 @@ export async function isPortFree(port) {
373
369
  ]);
374
370
  return !v4 && !v6;
375
371
  }
372
+ /**
373
+ * Locates the `{` that opens the configuration object literal of a vite
374
+ * config, so a `server` block can be inserted into it. Returns null when the
375
+ * shape isn't one we can patch safely.
376
+ *
377
+ * The shipped template exports `defineConfig(({ mode }) => { ... return {...} })`,
378
+ * so matching only `defineConfig({` — as this used to — silently patched
379
+ * nothing (#2720).
380
+ */
381
+ function findConfigObjectStart(content) {
382
+ const call = /defineConfig\s*\(\s*/.exec(content);
383
+ if (call) {
384
+ const afterCall = call.index + call[0].length;
385
+ // `defineConfig({ ... })` — a direct object literal.
386
+ if (content[afterCall] === "{")
387
+ return afterCall;
388
+ // `defineConfig((env) => ...)` — an arrow function, with either a concise
389
+ // object body or a block body that returns the config.
390
+ const arrow = /^(?:async\s+)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>\s*/.exec(content.slice(afterCall));
391
+ if (arrow) {
392
+ const body = afterCall + arrow[0].length;
393
+ // Concise body: `=> ({ ... })`.
394
+ const concise = /^\(\s*\{/.exec(content.slice(body));
395
+ if (concise)
396
+ return body + concise[0].length - 1;
397
+ // Block body: the config is whatever the function returns.
398
+ if (content[body] === "{") {
399
+ const ret = /\breturn\s*\{/.exec(content.slice(body));
400
+ if (ret)
401
+ return body + ret.index + ret[0].length - 1;
402
+ }
403
+ }
404
+ }
405
+ // `export default { ... }` — a plain object config, no `defineConfig`.
406
+ const plain = /export\s+default\s*\{/.exec(content);
407
+ if (plain)
408
+ return plain.index + plain[0].length - 1;
409
+ return null;
410
+ }
411
+ /** Indentation of the line the given offset sits on. */
412
+ function indentOfLineAt(content, index) {
413
+ const lineStart = content.lastIndexOf("\n", index) + 1;
414
+ return /^[ \t]*/.exec(content.slice(lineStart, index))?.[0] ?? "";
415
+ }
416
+ /**
417
+ * Pins `server.port` in the source of a vite config. Returns the patched
418
+ * source, or null when the config's shape is one we can't patch — the caller
419
+ * must not claim success in that case.
420
+ *
421
+ * Exported for tests, which pin this against the real shipped template.
422
+ */
423
+ export function patchViteConfigPort(content, port) {
424
+ // An existing numeric `server.port`: retarget it.
425
+ if (/server\s*:\s*\{[^}]*port\s*:\s*\d+/.test(content)) {
426
+ return content.replace(/(server\s*:\s*\{[^}]*port\s*:\s*)\d+/, `$1${port}`);
427
+ }
428
+ // A `server.port` set to something other than a literal (`env.PORT`, say).
429
+ // Rewriting it would either be a no-op or clobber the author's intent.
430
+ if (/server\s*:\s*\{[^}]*port\s*:/.test(content))
431
+ return null;
432
+ // A `server` block with no port: add one.
433
+ if (/server\s*:\s*\{/.test(content)) {
434
+ const match = /server\s*:\s*\{/.exec(content);
435
+ const indent = indentOfLineAt(content, match.index);
436
+ return content.replace(/(server\s*:\s*\{)/, `$1\n${indent} port: ${port},`);
437
+ }
438
+ // No `server` block at all: insert one at the head of the config object.
439
+ const objectStart = findConfigObjectStart(content);
440
+ if (objectStart === null)
441
+ return null;
442
+ const indent = indentOfLineAt(content, objectStart) + " ";
443
+ return (content.slice(0, objectStart + 1) +
444
+ `\n${indent}server: {\n${indent} port: ${port},\n${indent}},` +
445
+ content.slice(objectStart + 1));
446
+ }
376
447
  /**
377
448
  * Pins the dev server port in vite.config.{ts,js,mts,mjs} by injecting or
378
- * updating the `server.port` field. Returns true if a config file was found
379
- * and patched.
449
+ * updating the `server.port` field. Returns true only if a config file was
450
+ * found *and* actually rewritten.
380
451
  */
381
452
  export function updateViteConfig(targetDir, port) {
382
453
  const candidates = [
@@ -395,17 +466,11 @@ export function updateViteConfig(targetDir, port) {
395
466
  }
396
467
  if (!configPath)
397
468
  return false;
398
- let content = readFileSync(configPath, "utf-8");
399
- if (/server\s*:\s*\{[^}]*port\s*:/.test(content)) {
400
- content = content.replace(/(server\s*:\s*\{[^}]*port\s*:\s*)\d+/, `$1${port}`);
401
- }
402
- else if (/server\s*:\s*\{/.test(content)) {
403
- content = content.replace(/(server\s*:\s*\{)/, `$1\n port: ${port},`);
404
- }
405
- else {
406
- content = content.replace(/(defineConfig\s*\(\s*\{)/, `$1\n server: {\n port: ${port},\n },`);
407
- }
408
- writeFileSync(configPath, content);
469
+ const content = readFileSync(configPath, "utf-8");
470
+ const patched = patchViteConfigPort(content, port);
471
+ if (patched === null)
472
+ return false;
473
+ writeFileSync(configPath, patched);
409
474
  return true;
410
475
  }
411
476
  /**
@@ -471,6 +536,47 @@ export function updatePrimitiveJson(targetDir, appId, serverUrl, appName) {
471
536
  writeFileSync(jsonPath, content);
472
537
  return true;
473
538
  }
539
+ /**
540
+ * Gives an Apple scaffold a working `primitive.json`.
541
+ *
542
+ * In a current template that file is a BUILD PRODUCT generated from the
543
+ * Primitive environment in `.primitive/config.json` (#2873) — the one place
544
+ * the app ID and server URL are typed. `init` has just scaffolded that config,
545
+ * so running the template's own resolve script here means the scaffold has a
546
+ * `primitive.json` immediately rather than only after its first build, and
547
+ * there is exactly one implementation of the resolution.
548
+ *
549
+ * A template that predates the change has no such script and ships a tracked
550
+ * file with `__PRIMITIVE_*__` placeholders instead; filling those in keeps a
551
+ * new CLI working against an old template.
552
+ */
553
+ export function configurePrimitiveJson(targetDir, appId, serverUrl, appName, options = {}) {
554
+ const script = join(targetDir, "scripts", "resolve-primitive-config.sh");
555
+ if (existsSync(script)) {
556
+ try {
557
+ execFileSync("bash", [
558
+ "scripts/resolve-primitive-config.sh",
559
+ ...(options.environmentName
560
+ ? ["--primitive-env", options.environmentName]
561
+ : []),
562
+ ], {
563
+ cwd: targetDir,
564
+ stdio: "pipe",
565
+ });
566
+ return { outcome: "generated" };
567
+ }
568
+ catch (err) {
569
+ const detail = [err?.stderr?.toString(), err?.stdout?.toString(), err?.message]
570
+ .filter(Boolean)
571
+ .join("\n")
572
+ .trim();
573
+ return { outcome: "failed", detail };
574
+ }
575
+ }
576
+ return updatePrimitiveJson(targetDir, appId, serverUrl, appName)
577
+ ? { outcome: "filled" }
578
+ : { outcome: "missing" };
579
+ }
474
580
  /**
475
581
  * Checks if Xcode command-line tools are installed.
476
582
  */
@@ -506,12 +612,14 @@ export async function runSwiftPackageResolve(targetDir) {
506
612
  });
507
613
  }
508
614
  /**
509
- * Installs the primitive CLI (primitive-admin) globally using npm.
615
+ * Installs the primitive CLI (primitive-admin) globally, using whichever
616
+ * package manager already owns a global copy — pnpm by default.
510
617
  */
511
618
  export async function installPrimitiveCli() {
512
619
  const { spawn } = await import("child_process");
620
+ const { command, args } = installArgv(PRIMITIVE_CLI_PACKAGE);
513
621
  return new Promise((resolve, reject) => {
514
- const proc = spawn("npm", ["install", "-g", "primitive-admin"], {
622
+ const proc = spawn(command, args, {
515
623
  stdio: "inherit",
516
624
  shell: process.platform === "win32",
517
625
  });
@@ -520,7 +628,7 @@ export async function installPrimitiveCli() {
520
628
  resolve();
521
629
  }
522
630
  else {
523
- reject(new Error(`npm install -g primitive-admin exited with code ${code}`));
631
+ reject(new Error(`${[command, ...args].join(" ")} exited with code ${code}`));
524
632
  }
525
633
  });
526
634
  proc.on("error", reject);
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * A test case's identity key, CLI-side (issue #2896).
3
+ *
4
+ * The sidecar's basename IS the case's key: it is what the committed tree
5
+ * carries, so a clone with no `.primitive-sync.json` can still tell push which
6
+ * live case each file manages. Push refuses a basename the server would refuse
7
+ * — before it mutates anything — so a file can never be created without the
8
+ * identity that keeps the next fresh clone from duplicating it.
9
+ *
10
+ * The rule is deliberately "a path-safe basename" rather than a slug pattern:
11
+ * sidecars in the wild carry any legal file name, and rejecting those would
12
+ * strand exactly the trees this issue is about (DSO-2896-004).
13
+ *
14
+ * This mirrors `src/services/test-case-keys.ts`, which the server validates
15
+ * with; the published CLI cannot import server `src/` at runtime, so the rule
16
+ * is stated twice and pinned together by
17
+ * `cli/tests/unit/test-case-key-2896.test.ts`.
18
+ */
19
+ /** The longest key a sidecar can carry; file names have limits too. */
20
+ export declare const TEST_CASE_KEY_MAX_LENGTH = 200;
21
+ /** Why `key` cannot be a test case's identity, or null when it can. */
22
+ export declare function testCaseKeyError(key: unknown): string | null;
23
+ /**
24
+ * The comparison form of a key. The server's uniqueness constraint is
25
+ * case-insensitive — two keys differing only by case are one file on a
26
+ * case-insensitive filesystem — so pairing has to normalize the same way, or
27
+ * the CLI would plan a create the server then answers with a 409.
28
+ */
29
+ export declare function normalizeTestCaseKey(key: string): string;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * A test case's identity key, CLI-side (issue #2896).
3
+ *
4
+ * The sidecar's basename IS the case's key: it is what the committed tree
5
+ * carries, so a clone with no `.primitive-sync.json` can still tell push which
6
+ * live case each file manages. Push refuses a basename the server would refuse
7
+ * — before it mutates anything — so a file can never be created without the
8
+ * identity that keeps the next fresh clone from duplicating it.
9
+ *
10
+ * The rule is deliberately "a path-safe basename" rather than a slug pattern:
11
+ * sidecars in the wild carry any legal file name, and rejecting those would
12
+ * strand exactly the trees this issue is about (DSO-2896-004).
13
+ *
14
+ * This mirrors `src/services/test-case-keys.ts`, which the server validates
15
+ * with; the published CLI cannot import server `src/` at runtime, so the rule
16
+ * is stated twice and pinned together by
17
+ * `cli/tests/unit/test-case-key-2896.test.ts`.
18
+ */
19
+ /** The longest key a sidecar can carry; file names have limits too. */
20
+ export const TEST_CASE_KEY_MAX_LENGTH = 200;
21
+ /** Why `key` cannot be a test case's identity, or null when it can. */
22
+ export function testCaseKeyError(key) {
23
+ if (typeof key !== "string" || key === "") {
24
+ return "test case key must be a non-empty string";
25
+ }
26
+ if (key.length > TEST_CASE_KEY_MAX_LENGTH) {
27
+ return `test case key "${key}" is longer than ${TEST_CASE_KEY_MAX_LENGTH} characters`;
28
+ }
29
+ if (key !== key.trim()) {
30
+ return `test case key "${key}" must not begin or end with whitespace`;
31
+ }
32
+ if (key === "." || key === "..") {
33
+ return `test case key "${key}" is a directory reference, not a file name`;
34
+ }
35
+ if (key.includes("/") || key.includes("\\")) {
36
+ return `test case key "${key}" must not contain a path separator`;
37
+ }
38
+ if (/[\u0000-\u001f\u007f]/.test(key)) {
39
+ return `test case key "${key}" must not contain control characters`;
40
+ }
41
+ if (key.endsWith(".")) {
42
+ return `test case key "${key}" must not end with a dot`;
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * The comparison form of a key. The server's uniqueness constraint is
48
+ * case-insensitive — two keys differing only by case are one file on a
49
+ * case-insensitive filesystem — so pairing has to normalize the same way, or
50
+ * the CLI would plan a create the server then answers with a 409.
51
+ */
52
+ export function normalizeTestCaseKey(key) {
53
+ return key.toLowerCase();
54
+ }
55
+ //# sourceMappingURL=test-case-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-case-keys.js","sourceRoot":"","sources":["../../../src/lib/test-case-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAC1C,OAAO,0CAA0C,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC1C,OAAO,kBAAkB,GAAG,oBAAoB,wBAAwB,aAAa,CAAC;IACxF,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,kBAAkB,GAAG,yCAAyC,CAAC;IACxE,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAChC,OAAO,kBAAkB,GAAG,6CAA6C,CAAC;IAC5E,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,kBAAkB,GAAG,qCAAqC,CAAC;IACpE,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,kBAAkB,GAAG,uCAAuC,CAAC;IACtE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,kBAAkB,GAAG,2BAA2B,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * #2968 — read a test case's `inputVariables` off a server response.
3
+ *
4
+ * The JSON fields travel PARSED in both directions: `createTestCase` posts an
5
+ * object and `serializeBlockTestCase` parses the stored text on the way back
6
+ * out, so `getTestCase().inputVariables` is an object (or null), not JSON text.
7
+ * A caller that runs `JSON.parse` on it stringifies the object first, parses
8
+ * `"[object Object]"`, throws, and silently runs the case with no variables at
9
+ * all — which for an integration case means the config's bare defaults instead
10
+ * of the case's own method, path and body.
11
+ *
12
+ * Both spellings are accepted so an older server that still returns JSON text
13
+ * keeps working.
14
+ */
15
+ export declare function testCaseInputVariables(value: unknown): Record<string, any>;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * #2968 — read a test case's `inputVariables` off a server response.
3
+ *
4
+ * The JSON fields travel PARSED in both directions: `createTestCase` posts an
5
+ * object and `serializeBlockTestCase` parses the stored text on the way back
6
+ * out, so `getTestCase().inputVariables` is an object (or null), not JSON text.
7
+ * A caller that runs `JSON.parse` on it stringifies the object first, parses
8
+ * `"[object Object]"`, throws, and silently runs the case with no variables at
9
+ * all — which for an integration case means the config's bare defaults instead
10
+ * of the case's own method, path and body.
11
+ *
12
+ * Both spellings are accepted so an older server that still returns JSON text
13
+ * keeps working.
14
+ */
15
+ export function testCaseInputVariables(value) {
16
+ if (typeof value === "string") {
17
+ try {
18
+ return testCaseInputVariables(JSON.parse(value));
19
+ }
20
+ catch {
21
+ return {};
22
+ }
23
+ }
24
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
25
+ return {};
26
+ }
27
+ return value;
28
+ }
29
+ //# sourceMappingURL=test-case-variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-case-variables.js","sourceRoot":"","sources":["../../../src/lib/test-case-variables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAA4B,CAAC;AACtC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Helpers for emitting `DatabaseTypeOperation` configs as native TOML.
3
3
  *
4
- * Background (issue #752): historically `sync pull` serialized
4
+ * Background (issue #752): historically `config pull` serialized
5
5
  * `definition` and `params` as JSON strings stuffed into a single TOML
6
6
  * field, which produced unreviewable 800-char one-liners. This module
7
7
  * lets us emit them as nested TOML tables when they're representable,
@@ -13,7 +13,7 @@
13
13
  * decide, per operation name, whether the file uses JSON-string
14
14
  * form ("legacy") or nested-table form ("native") for each of
15
15
  * `definition` and `params`. This drives form preservation on
16
- * `sync pull`.
16
+ * `config pull`.
17
17
  * 2. `canEmitNative()` — recursively check whether a JS value can be
18
18
  * represented in TOML **without data loss**. Returns a reason string
19
19
  * if not. Catches `null`/`undefined` (and arrays containing `null`),
@@ -54,9 +54,9 @@ export interface BuildOptions {
54
54
  /** Per-op form hints derived from `detectExistingOperationForms`. */
55
55
  hints?: OperationFormHints;
56
56
  /**
57
- * Override the default form for ops with no hint. Used by `sync pull`
57
+ * Override the default form for ops with no hint. Used by `config pull`
58
58
  * to keep behavior backwards-compatible if we ever flip the default,
59
- * and by `sync migrate-toml` to force native everywhere.
59
+ * and by `config migrate-toml` to force native everywhere.
60
60
  */
61
61
  defaultForm?: FieldForm;
62
62
  /** Sink for human-readable fallback messages. */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Helpers for emitting `DatabaseTypeOperation` configs as native TOML.
3
3
  *
4
- * Background (issue #752): historically `sync pull` serialized
4
+ * Background (issue #752): historically `config pull` serialized
5
5
  * `definition` and `params` as JSON strings stuffed into a single TOML
6
6
  * field, which produced unreviewable 800-char one-liners. This module
7
7
  * lets us emit them as nested TOML tables when they're representable,
@@ -13,7 +13,7 @@
13
13
  * decide, per operation name, whether the file uses JSON-string
14
14
  * form ("legacy") or nested-table form ("native") for each of
15
15
  * `definition` and `params`. This drives form preservation on
16
- * `sync pull`.
16
+ * `config pull`.
17
17
  * 2. `canEmitNative()` — recursively check whether a JS value can be
18
18
  * represented in TOML **without data loss**. Returns a reason string
19
19
  * if not. Catches `null`/`undefined` (and arrays containing `null`),
@@ -26,6 +26,8 @@
26
26
  */
27
27
  import { parseConfigToml } from "./config-toml.js";
28
28
  import { serializeDeclaredAccessManifest } from "./toml-metadata-config.js";
29
+ import { DATABASE_TYPE_TABLE } from "./config-surface.js";
30
+ import { projectRecordToToml } from "./config-payload.js";
29
31
  import { classifyInlineFieldForm, canEmitNative, } from "./toml-native-form.js";
30
32
  // `FieldForm`, `classifyInlineFieldForm`, and `canEmitNative` moved to the
31
33
  // neutral `toml-native-form.ts` module (issue #1446) so workflow-schema
@@ -173,40 +175,31 @@ export function buildDatabaseTypeTomlData(typeConfig, operations, ruleSetIdToNam
173
175
  const hints = options.hints;
174
176
  const defaultForm = options.defaultForm ?? DEFAULT_FORM;
175
177
  const log = options.logger ?? (() => { });
176
- // Prefer the parsed-from-key-based-reference name when present
177
- // (`_ruleSetName` is set by `parseDatabaseTypeToml` when the source TOML
178
- // uses the modern `ruleSetName = "..."` form). This makes the
179
- // parse → serialize cycle a no-op for the rule-set field even when the
180
- // caller passes an empty `ruleSetIdToName` map (e.g. `sync migrate-toml`,
181
- // review feedback r3246633010).
182
- let ruleSetName = "";
183
- if (typeConfig._ruleSetName) {
184
- ruleSetName = typeConfig._ruleSetName;
185
- }
186
- else if (typeConfig.ruleSetId) {
187
- ruleSetName = ruleSetIdToName.get(typeConfig.ruleSetId) || "";
188
- }
178
+ // #2644 the `[type]` key set comes from the vendored definition, so a
179
+ // scalar added there is written with no edit here. Only the two keys whose
180
+ // emitted VALUE is their own carry a producer:
181
+ //
182
+ // `ruleSetName` prefer the parsed-from-key-based-reference name when
183
+ // present (`_ruleSetName` is set by `parseDatabaseTypeToml` when the
184
+ // source TOML uses the modern `ruleSetName = "..."` form), so the
185
+ // parse serialize cycle is a no-op for the rule-set field even when the
186
+ // caller passes an empty `ruleSetIdToName` map (e.g. `config migrate-toml`,
187
+ // review feedback r3246633010). The empty string is the "no rule set"
188
+ // spelling these files have always used, and is emitted always.
189
+ // `timestamps` (#748) an inline table under `[type]`; the server returns
190
+ // the parsed `{ create?, update?, models? }` object, which serializes 1:1
191
+ // so a pull → push cycle is idempotent.
189
192
  const data = {
190
- type: {
191
- databaseType: typeConfig.databaseType,
192
- ruleSetName,
193
- },
193
+ type: projectRecordToToml(DATABASE_TYPE_TABLE, typeConfig, {
194
+ ruleSetId: (record) => {
195
+ if (record?._ruleSetName)
196
+ return record._ruleSetName;
197
+ return record?.ruleSetId
198
+ ? ruleSetIdToName.get(record.ruleSetId) || ""
199
+ : "";
200
+ },
201
+ }),
194
202
  };
195
- if (typeConfig.metadataAccess) {
196
- data.type.celContextAccess = typeConfig.metadataAccess;
197
- }
198
- if (typeConfig.defaultAccess) {
199
- data.type.defaultAccess = typeConfig.defaultAccess;
200
- }
201
- if (typeConfig.autoPopulatedFields) {
202
- data.type.autoPopulatedFields = typeConfig.autoPopulatedFields;
203
- }
204
- // timestamps (issue #748) — emitted as an inline table under `[type]`. The
205
- // server returns the parsed `{ create?, update?, models? }` object, which
206
- // serializes 1:1 so a pull → push cycle is idempotent.
207
- if (typeConfig.timestamps) {
208
- data.type.timestamps = typeConfig.timestamps;
209
- }
210
203
  if (typeConfig.triggers) {
211
204
  data.triggers = typeConfig.triggers;
212
205
  }