primitive-admin 1.1.0-alpha.65 → 1.1.0-alpha.66

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 (54) hide show
  1. package/README.md +4 -4
  2. package/assets/skill/skills/primitive-platform/SKILL.md +15 -7
  3. package/dist/bin/primitive.js +4 -3
  4. package/dist/bin/primitive.js.map +1 -1
  5. package/dist/src/commands/apps.js +14 -5
  6. package/dist/src/commands/apps.js.map +1 -1
  7. package/dist/src/commands/env.d.ts +12 -1
  8. package/dist/src/commands/env.js +96 -21
  9. package/dist/src/commands/env.js.map +1 -1
  10. package/dist/src/commands/init.d.ts +1 -1
  11. package/dist/src/commands/init.js +78 -25
  12. package/dist/src/commands/init.js.map +1 -1
  13. package/dist/src/commands/sync-app-settings.d.ts +83 -55
  14. package/dist/src/commands/sync-app-settings.js +131 -200
  15. package/dist/src/commands/sync-app-settings.js.map +1 -1
  16. package/dist/src/commands/sync.d.ts +240 -28
  17. package/dist/src/commands/sync.js +2022 -309
  18. package/dist/src/commands/sync.js.map +1 -1
  19. package/dist/src/commands/workflows.js +14 -3
  20. package/dist/src/commands/workflows.js.map +1 -1
  21. package/dist/src/lib/app-settings-descriptor.d.ts +143 -15
  22. package/dist/src/lib/app-settings-descriptor.js +315 -28
  23. package/dist/src/lib/app-settings-descriptor.js.map +1 -1
  24. package/dist/src/lib/config-payload.js +14 -3
  25. package/dist/src/lib/config-payload.js.map +1 -1
  26. package/dist/src/lib/config-surface.d.ts +37 -1
  27. package/dist/src/lib/config-surface.js +118 -0
  28. package/dist/src/lib/config-surface.js.map +1 -1
  29. package/dist/src/lib/env-resolver-core.d.ts +147 -0
  30. package/dist/src/lib/env-resolver-core.js +265 -0
  31. package/dist/src/lib/env-resolver-core.js.map +1 -0
  32. package/dist/src/lib/env-resolver.d.ts +28 -6
  33. package/dist/src/lib/env-resolver.js +44 -32
  34. package/dist/src/lib/env-resolver.js.map +1 -1
  35. package/dist/src/lib/generated-config-surfaces.d.ts +33 -0
  36. package/dist/src/lib/generated-config-surfaces.js +151 -49
  37. package/dist/src/lib/generated-config-surfaces.js.map +1 -1
  38. package/dist/src/lib/integration-request-config.d.ts +30 -0
  39. package/dist/src/lib/integration-request-config.js +145 -0
  40. package/dist/src/lib/integration-request-config.js.map +1 -0
  41. package/dist/src/lib/local-state.d.ts +55 -0
  42. package/dist/src/lib/local-state.js +167 -0
  43. package/dist/src/lib/local-state.js.map +1 -0
  44. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  45. package/dist/src/lib/server-text-normalization.js +90 -0
  46. package/dist/src/lib/server-text-normalization.js.map +1 -0
  47. package/dist/src/lib/sync-resource-types.d.ts +8 -0
  48. package/dist/src/lib/sync-resource-types.js +8 -0
  49. package/dist/src/lib/sync-resource-types.js.map +1 -1
  50. package/dist/src/lib/template.d.ts +27 -0
  51. package/dist/src/lib/template.js +46 -20
  52. package/dist/src/lib/template.js.map +1 -1
  53. package/dist/src/types/index.d.ts +31 -7
  54. package/package.json +2 -2
@@ -13,22 +13,32 @@
13
13
  * `RECOGNIZED_AUTH_KEYS` pattern to every section, and fully replaces it.
14
14
  *
15
15
  * Design decisions of record (issue #1033):
16
- * - `googleClientSecret` is an ordinary `[auth]` key (#2256). It holds a whole
17
- * `{{secrets.KEY}}` reference rather than the secret itself, so it round-trips
18
- * through `app.toml` like any other string setting. It used to be excluded
19
- * from TOML entirely, back when the stored value WAS the credential.
16
+ * - Google is a typed client MAP (#2891): `googleClients` renders as
17
+ * `[auth.google.clients.<type>]`, and each entry's `clientSecret` holds a
18
+ * whole `{{secrets.KEY}}` reference rather than the secret itself, so the
19
+ * map round-trips through `app.toml` like any other setting.
20
20
  * - `[cors]` is always emitted (the `mode` key is `emit: "always"`), even in
21
21
  * universal mode. A one-time diff on the next pull for existing apps is
22
22
  * acceptable.
23
23
  * - `[invitations]` is an additive table for the member-invitation fields.
24
- * - Legacy `passkeyRpId` / `passkeyRpName` are still writable server-side but
25
- * excluded from TOML (superseded by `passkeyRpConfig` -> `[auth.passkeys]`).
26
- * The coverage test classifies them as deprecated-writable exclusions, NOT
27
- * computed/read-only.
24
+ * - Nothing is writable-but-excluded any more (#2891). The legacy passkey
25
+ * pair and the three Google/redirect scalars are RETIRED: not writable, not
26
+ * synced, and refused by name with their own guidance when an old
27
+ * `app.toml` still carries them.
28
28
  * - Push type mismatches are field-named validation errors — no silent
29
29
  * coercion of a mistyped TOML value.
30
+ * - THE FILE IS THE WHOLE TRUTH (#2880, sponsor 2026-08-21). `app.toml` used
31
+ * to be the one surface where an omitted key preserved the server's value,
32
+ * while every other type follows "the local file is the source of truth"
33
+ * (#1567). That exception is gone: push emits a value for EVERY writable
34
+ * field, and a key the file does not carry clears the field or resets it to
35
+ * its declared default (`APP_SETTINGS_ABSENT_VALUES`). `[app].name` and
36
+ * `[app].mode` are the two exceptions — no default, identity-critical, and
37
+ * `mode: null` is a 400 — so their absence is a validation error instead.
30
38
  */
31
39
  import { findUnknownDocumentKeys, requireConfigSurface, } from "./config-surface.js";
40
+ import { retiredConfigKey } from "./generated-config-surfaces.js";
41
+ import { canonicalizeSecretReference } from "./server-text-normalization.js";
32
42
  /**
33
43
  * The vendored `app-settings` definition (#2644) this module projects. Read
34
44
  * once at load; a missing definition fails loudly rather than yielding an
@@ -69,19 +79,15 @@ export const APP_SETTINGS_SECTIONS = APP_SETTINGS_SURFACE.tables.map((table) =>
69
79
  */
70
80
  export const IGNORED_GET_KEYS = new Set([
71
81
  "appId",
72
- "hasGoogleAuth",
73
- // Deprecated presence flag for `googleClientSecret`, kept always-present on
74
- // GET for one release (#2256 / #2193 decision of record). It is derived from
75
- // `googleClientSecret` and has no server setter, so it never syncs — same
76
- // classification as `hasGoogleAuth`. Remove this entry when the alias goes.
77
- "googleClientSecretSet",
78
- // How the server reads the stored `googleClientSecret` — `unset`,
79
- // `reference`, `legacy-literal` for a row written before reference-only
80
- // (#2256), or `malformed-reference` for a stored value carrying reference
81
- // syntax that resolves to nothing (#2332). Derived and read-only: it exists
82
- // so an operator can be told to remediate a value the server refuses to send
83
- // back.
84
- "googleClientSecretStatus",
82
+ // `hasGoogleAuth`, `googleClientSecretSet` and `googleClientSecretStatus` are
83
+ // GONE (#2891), not ignored: the first could not describe a per-platform
84
+ // configuration, and the other two existed only to report a value the server
85
+ // refused to send back. The map states availability per entry and the stored
86
+ // reference is echoed, so a response still carrying any of them is a server
87
+ // this CLI does not understand — worth failing the drift guard over.
88
+ //
89
+ // `hasAppleAuth` / `hasPasskey` stay: the asymmetry is deliberate, since
90
+ // Apple and passkeys have no map to derive per-platform truth from.
85
91
  "hasAppleAuth",
86
92
  "hasPasskey",
87
93
  "createdAt",
@@ -100,6 +106,200 @@ export const DEPRECATED_WRITABLE_EXCLUDED = new Set(
100
106
  APP_SETTINGS_SURFACE.tables.flatMap((table) => Object.entries(table.notExposed)
101
107
  .filter(([, classification]) => classification.kind === "deprecated")
102
108
  .map(([field]) => field)));
109
+ export const APP_SETTINGS_ABSENT_VALUES = {
110
+ // [app]
111
+ name: { required: true },
112
+ mode: { required: true },
113
+ baseUrl: { value: null },
114
+ waitlistEnabled: { value: false },
115
+ waitlistNotifyAdmins: { value: true },
116
+ directLlmEnabled: { value: false },
117
+ allowedDomains: { value: null },
118
+ testAccountBaseEmails: { value: null },
119
+ // [auth]
120
+ googleOAuthEnabled: { value: null },
121
+ googleClients: { value: null },
122
+ passkeyEnabled: { value: false },
123
+ magicLinkEnabled: { value: true },
124
+ appleSignInEnabled: { value: null },
125
+ otpEnabled: { value: true },
126
+ appleAudiences: { value: null },
127
+ emailRedirectUris: { value: null },
128
+ passkeyRpConfig: { value: null },
129
+ // [cors]
130
+ corsMode: { value: "universal" },
131
+ corsAllowedOrigins: { value: null },
132
+ corsAllowCredentials: { value: false },
133
+ corsAllowedMethods: { value: null },
134
+ corsAllowedHeaders: { value: null },
135
+ corsExposedHeaders: { value: null },
136
+ corsMaxAge: { value: null },
137
+ // [invitations]
138
+ memberInvitationsEnabled: { value: false },
139
+ memberInvitationLimit: { value: 5 },
140
+ };
141
+ /**
142
+ * The absent-key rule for one field, or a loud failure.
143
+ *
144
+ * Deliberately a throw rather than a `?? null` fallback: under whole-truth push
145
+ * an unlisted field would be CLEARED on every push by a table nobody updated.
146
+ */
147
+ export function appSettingAbsentValue(field) {
148
+ const entry = APP_SETTINGS_ABSENT_VALUES[field];
149
+ if (!entry) {
150
+ throw new Error(`app.toml: no absent-key rule declared for the setting \`${field}\`. ` +
151
+ `Add it to APP_SETTINGS_ABSENT_VALUES (cli/src/lib/app-settings-descriptor.ts) ` +
152
+ `— push sends a value for every writable field (#2880).`);
153
+ }
154
+ return entry;
155
+ }
156
+ /** Fields whose absence is a validation error rather than a clear (#2880). */
157
+ export const REQUIRED_APP_SETTING_FIELDS = APP_SETTINGS_DESCRIPTOR.filter((d) => APP_SETTINGS_ABSENT_VALUES[d.field]?.required === true).map((d) => d.field);
158
+ /**
159
+ * The value the SERVER would hold after accepting this one (#2880 DSO-003).
160
+ *
161
+ * The comparison runs on the local side only: push forwards what the file says
162
+ * and the server normalizes it, so without this an authored-but-noncanonical
163
+ * value (`baseUrl` with a trailing slash, a mixed-case test-account email)
164
+ * differs from the record the server returns FOREVER — and baseline restamping
165
+ * cannot save it, because after an apply the remote hash matches the new
166
+ * baseline while the local hash still does not, re-classifying `local-edited`
167
+ * on every run.
168
+ *
169
+ * Mirrors the rules in `settings-controller.ts` (`baseUrl` trim + trailing
170
+ * slash), `validateTestAccountBaseEmails` (trim, lower-case, dedupe) and
171
+ * `validateRedirectUris` (trim, dedupe). Only the NORMALIZATION is mirrored,
172
+ * never the rejection: an entry the server would refuse stays as authored so
173
+ * the server's own 400 is what the operator sees.
174
+ */
175
+ export function canonicalizeAppSettingValue(field, value) {
176
+ if (value === null || value === undefined)
177
+ return value;
178
+ if (field === "baseUrl") {
179
+ if (typeof value !== "string")
180
+ return value;
181
+ const trimmed = value.trim().replace(/\/+$/, "");
182
+ return trimmed === "" ? null : trimmed;
183
+ }
184
+ if (field === "testAccountBaseEmails" || field === "emailRedirectUris") {
185
+ if (!Array.isArray(value))
186
+ return value;
187
+ const lower = field === "testAccountBaseEmails";
188
+ const seen = new Set();
189
+ const out = [];
190
+ for (const entry of value) {
191
+ if (typeof entry !== "string") {
192
+ out.push(entry);
193
+ continue;
194
+ }
195
+ const normalized = lower ? entry.trim().toLowerCase() : entry.trim();
196
+ if (seen.has(normalized))
197
+ continue;
198
+ seen.add(normalized);
199
+ out.push(normalized);
200
+ }
201
+ return out;
202
+ }
203
+ if (field === "appleAudiences") {
204
+ if (!Array.isArray(value))
205
+ return value;
206
+ // The controller filters non-empty strings and stores `null` for an empty
207
+ // result, so a list of blanks is the same state as no list at all.
208
+ return value.filter((v) => typeof v === "string" && v.length > 0);
209
+ }
210
+ if (field === "googleClients")
211
+ return canonicalizeGoogleClients(value);
212
+ return value;
213
+ }
214
+ /**
215
+ * The typed Google client map as the server STORES it (#2880 DSO-003).
216
+ *
217
+ * `validateGoogleClientsWrite` (`src/services/google-clients.ts`) rewrites each
218
+ * accepted entry: the `clientId` is trimmed, the `clientSecret` is stored as
219
+ * the canonical `{{secrets.KEY}}` reference, the redirect URIs are trimmed and
220
+ * de-duplicated (`validateRedirectUris`), and an entry that states none at all
221
+ * stores the empty list. Without mirroring that, an authored
222
+ * `clientId = " 123.apps... "` — or a `{{ secrets.KEY }}` written with the
223
+ * spacing TOML makes easy — is a `Modified` row on every run against a value
224
+ * push already applied.
225
+ *
226
+ * Normalization only, never rejection: an entry the server would refuse (a
227
+ * `clientSecret` that is not a reference, a URI it will not take) is left as
228
+ * authored so the `PUT`'s own 400 is what the operator sees.
229
+ */
230
+ function canonicalizeGoogleClients(value) {
231
+ if (!value || typeof value !== "object" || Array.isArray(value))
232
+ return value;
233
+ const clients = value.clients;
234
+ if (!clients || typeof clients !== "object" || Array.isArray(clients)) {
235
+ return value;
236
+ }
237
+ const out = {};
238
+ for (const [type, entry] of Object.entries(clients)) {
239
+ if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
240
+ out[type] = entry;
241
+ continue;
242
+ }
243
+ const source = entry;
244
+ const canonical = { ...source };
245
+ if (typeof source.clientId === "string") {
246
+ canonical.clientId = source.clientId.trim();
247
+ }
248
+ if (source.clientSecret !== undefined) {
249
+ canonical.clientSecret = canonicalizeSecretReference(source.clientSecret);
250
+ }
251
+ // Trimmed and de-duplicated, and materialized when the entry states none —
252
+ // the server stores `[]` either way, so "no key" and "empty list" are one
253
+ // state rather than a difference no push can close.
254
+ canonical.redirectUris = Array.isArray(source.redirectUris)
255
+ ? [
256
+ ...new Set(source.redirectUris.map((uri) => typeof uri === "string" ? uri.trim() : uri)),
257
+ ]
258
+ : [];
259
+ out[type] = canonical;
260
+ }
261
+ return { clients: out };
262
+ }
263
+ /**
264
+ * One field's comparable value — what `config diff` and the push gate both read.
265
+ *
266
+ * Canonicalized as above, then flattened to `null` when the value is "empty"
267
+ * under an `emit: "whenSet"` field's own rule. That second step is the
268
+ * app-settings copy of what `projectConfigForComparison` does for every other
269
+ * type (#2731): pull OMITS an empty `whenSet` value, so the file it round-trips
270
+ * to has no key, and comparing `[]` against "no key" would be a difference no
271
+ * push could ever converge.
272
+ */
273
+ export function comparableAppSettingValue(descriptor, value) {
274
+ const canonical = canonicalizeAppSettingValue(descriptor.field, value);
275
+ if (canonical === undefined)
276
+ return null;
277
+ if (descriptor.emit === "whenSet" && isEmptyForEmit(canonical, descriptor.type)) {
278
+ return null;
279
+ }
280
+ return canonical ?? null;
281
+ }
282
+ /**
283
+ * Project a settings record (either side) onto the full writable field set.
284
+ *
285
+ * `excludeName` is the cross-app rule (#2880 DSO-001): while a cross-app push's
286
+ * name exclusion is active, BOTH sides and the stamped baseline are hashed
287
+ * without `name`, so `classifyPushChange`'s `remoteHash === baselineHash ⇒
288
+ * local-edited` arithmetic stays valid.
289
+ */
290
+ export function projectAppSettingsForComparison(settings, options = {}) {
291
+ const projected = {};
292
+ for (const d of APP_SETTINGS_DESCRIPTOR) {
293
+ if (options.excludeName && d.field === "name")
294
+ continue;
295
+ const raw = settings?.[d.field];
296
+ const absent = APP_SETTINGS_ABSENT_VALUES[d.field];
297
+ projected[d.field] = comparableAppSettingValue(d, raw === undefined && absent && absent.required !== true
298
+ ? absent.value
299
+ : raw);
300
+ }
301
+ return projected;
302
+ }
103
303
  const DESCRIPTOR_BY_SECTION = (() => {
104
304
  const m = new Map();
105
305
  for (const d of APP_SETTINGS_DESCRIPTOR) {
@@ -198,17 +398,22 @@ export function serializeAppSettingsToToml(settings) {
198
398
  return data;
199
399
  }
200
400
  /**
201
- * Translate a parsed `app.toml` object into a `PUT /settings` payload (push
202
- * direction). Only keys present in the TOML are forwarded — an omitted key
203
- * never overwrites server state. An unrecognized key or table and a type
401
+ * Translate a parsed `app.toml` object into the settings the FILE STATES —
402
+ * only the keys it carries. This is the parse half; `buildAppSettingsPayload`
403
+ * below turns it into the whole-truth `PUT /settings` body by filling in what
404
+ * the file omits. An unrecognized key or table and a type
204
405
  * mismatch are both hard errors the caller must treat as abort-before-PUT
205
406
  * (#2644 criterion 6: push rejects what it does not recognize, for every
206
407
  * configuration surface, so a typo fails locally instead of being ignored).
207
408
  *
208
- * A `googleClientSecret` that is not a whole `{{secrets.KEY}}` reference is the
209
- * server's rejection to make (#2256): the push forwards it and the `PUT` answers
210
- * 400 with `GOOGLE_CLIENT_SECRET_MUST_BE_SECRET_REF`. Duplicating the shape rule
211
- * here would put two definitions of "valid reference" in play.
409
+ * A per-entry `clientSecret` that is not a whole `{{secrets.KEY}}` reference is
410
+ * the server's rejection to make (#2256): the push forwards the map and the
411
+ * `PUT` answers 400 with `GOOGLE_CLIENT_SECRET_MUST_BE_SECRET_REF`. Duplicating
412
+ * the shape rule here would put two definitions of "valid reference" in play.
413
+ *
414
+ * A RETIRED key (#2891) is different: it is not a value the server can judge,
415
+ * it is a line that has to be deleted, so the parser refuses it locally with
416
+ * the guidance that names its replacement.
212
417
  *
213
418
  * `isCrossAppPush` strips `name` so a cross-app push never overwrites the
214
419
  * target app's name.
@@ -238,6 +443,18 @@ export function parseTomlToAppSettings(tomlData, options = {}) {
238
443
  for (const key of Object.keys(sectionData)) {
239
444
  const d = byKey.get(key);
240
445
  if (!d) {
446
+ // A RETIRED key is not an unknown key (#2803's rule, extended to
447
+ // app-settings by #2891/DSO-2891-005). "Check the spelling, or upgrade
448
+ // the CLI" is exactly backwards for a key the platform removed on
449
+ // purpose, and every pre-reshape `app.toml` still carries these lines —
450
+ // so the parser consults the shared retired set directly and says where
451
+ // the value moved to. Keyed under `app`, the app-settings surface's
452
+ // identifier, whichever section the key was authored in.
453
+ const retired = retiredConfigKey("app", key);
454
+ if (retired) {
455
+ errors.push(`app.toml: [${section}].${key} — ${retired.toml}`);
456
+ continue;
457
+ }
241
458
  // #2644 criterion 6 — REJECTED, not warned-and-ignored. `app.toml` is a
242
459
  // registered configuration surface like every other file, and an
243
460
  // ignored key is a setting the author believes they changed.
@@ -259,4 +476,74 @@ export function parseTomlToAppSettings(tomlData, options = {}) {
259
476
  }
260
477
  return { settings, warnings, errors };
261
478
  }
479
+ /**
480
+ * `[app].name` / `[app].mode` absent — the two keys whole-truth push refuses to
481
+ * fill in for the author (#2880).
482
+ *
483
+ * Read from the DOCUMENT rather than the parse result, so a cross-app push
484
+ * (which strips `name` before validating) still requires the file to state one.
485
+ * `mode` has no default and `mode: null` is a 400; more to the point, a deleted
486
+ * `mode` line silently resetting an invite-only app to public is the wrong
487
+ * failure to choose.
488
+ */
489
+ export function missingRequiredKeyErrors(tomlData) {
490
+ const errors = [];
491
+ for (const field of REQUIRED_APP_SETTING_FIELDS) {
492
+ const d = APP_SETTINGS_DESCRIPTOR.find((x) => x.field === field);
493
+ if (!d)
494
+ continue;
495
+ const section = tomlData?.[d.section];
496
+ const present = section !== null &&
497
+ typeof section === "object" &&
498
+ !Array.isArray(section) &&
499
+ section[d.key] !== undefined;
500
+ if (present)
501
+ continue;
502
+ errors.push(`app.toml: [${d.section}].${d.key} is required — \`config push\` applies ` +
503
+ `app.toml as the whole truth, and this field has no default to fall ` +
504
+ `back to. Add the line (\`config pull --only app\` writes it).`);
505
+ }
506
+ return errors;
507
+ }
508
+ /**
509
+ * The whole-truth `PUT /settings` body (#2880 criterion 4).
510
+ *
511
+ * Every writable field gets a value: the authored one where the file carries
512
+ * the key, its `APP_SETTINGS_ABSENT_VALUES` entry where it does not. That is
513
+ * what makes `app.toml` mean what every other configuration file means — the
514
+ * local file is the state, not a patch over whatever the server happens to
515
+ * hold (#1567). The controller applies only the keys in the body (`if (field in
516
+ * updates)`), so the completeness has to come from here.
517
+ *
518
+ * Values are forwarded AS AUTHORED, never canonicalized: the server owns its
519
+ * own normalization, and a CLI that rewrote the value before sending it would
520
+ * be pushing something the operator did not write. The canonicalization in
521
+ * `canonicalizeAppSettingValue` is for the local COMPARISON only.
522
+ *
523
+ * `excludeName` (and `isCrossAppPush`, which implies it) leaves `name` out of
524
+ * the body entirely, so a cross-app push never renames the target app.
525
+ */
526
+ export function buildAppSettingsPayload(tomlData, options = {}) {
527
+ const parsed = parseTomlToAppSettings(tomlData, options);
528
+ const errors = [...parsed.errors, ...missingRequiredKeyErrors(tomlData)];
529
+ if (errors.length > 0) {
530
+ return { settings: {}, warnings: parsed.warnings, errors };
531
+ }
532
+ const excludeName = !!(options.isCrossAppPush || options.excludeName);
533
+ const settings = {};
534
+ for (const d of APP_SETTINGS_DESCRIPTOR) {
535
+ if (excludeName && d.field === "name")
536
+ continue;
537
+ if (d.field in parsed.settings) {
538
+ settings[d.field] = parsed.settings[d.field];
539
+ continue;
540
+ }
541
+ const absent = appSettingAbsentValue(d.field);
542
+ // Required fields never reach here — their absence already errored above.
543
+ if (absent.required === true)
544
+ continue;
545
+ settings[d.field] = absent.value;
546
+ }
547
+ return { settings, warnings: parsed.warnings, errors: [] };
548
+ }
262
549
  //# sourceMappingURL=app-settings-descriptor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-settings-descriptor.js","sourceRoot":"","sources":["../../../src/lib/app-settings-descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-settings-descriptor.js","sourceRoot":"","sources":["../../../src/lib/app-settings-descriptor.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,20 @@ export function buildPayloadFromToml(table, tomlTable, { mode, values = {} }) {
65
65
  if (!field.writableOn.includes(mode))
66
66
  continue;
67
67
  const produce = values[field.field];
68
- payload[field.field] = produce
69
- ? produce(source[field.tomlKey], mode, source)
70
- : source[field.tomlKey];
68
+ if (produce) {
69
+ payload[field.field] = produce(source[field.tomlKey], mode, source);
70
+ continue;
71
+ }
72
+ const value = source[field.tomlKey];
73
+ // #2880 DSO-002 — the file is the source of truth (#1567), so an absent key
74
+ // means the field's DECLARED default rather than "leave whatever the server
75
+ // has". Sending it is what makes the comparison's reading of that absence
76
+ // (the same default) something a push can converge on: dropping the key
77
+ // left an out-of-band change in place and re-reported it on every run.
78
+ payload[field.field] =
79
+ value === undefined && field.serverDefault !== undefined
80
+ ? field.serverDefault
81
+ : value;
71
82
  }
72
83
  return payload;
73
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-payload.js","sourceRoot":"","sources":["../../../src/lib/config-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,cAAc,EACd,kBAAkB,GAGnB,MAAM,gCAAgC,CAAC;AAqBxC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAkB,EAClB,MAAW,EACX,SAAoC,EAAE;IAEtC,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBAAE,SAAS;QACtD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzE,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAkB,EAClB,SAAc,EACd,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAA0D;IAE7E,MAAM,MAAM,GAAG,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO;YAC5B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;YAC9C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,MAAW,EACX,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,EAA0D;IAE7E,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO;YAC5B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;YAC5C,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAc,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;AAE7D,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"config-payload.js","sourceRoot":"","sources":["../../../src/lib/config-payload.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  * trip is therefore loud-and-lossy — push omits what it does not know, so
16
16
  * the server keeps its stored values — never silently destructive.
17
17
  */
18
- import { retiredConfigKey, type ConfigObjectSurface, type ConfigTable } from "./generated-config-surfaces.js";
18
+ import { retiredConfigKey, type ConfigObjectSurface, type ConfigField, type ConfigTable } from "./generated-config-surfaces.js";
19
19
  export { retiredConfigKey };
20
20
  /** A surface by label. Throws rather than silently skipping checks. */
21
21
  export declare function requireConfigSurface(label: string): ConfigObjectSurface;
@@ -47,6 +47,42 @@ export declare const METADATA_CATEGORY_CONFIG_TABLE: ConfigTable;
47
47
  export declare const TEST_CASE_TABLE: ConfigTable;
48
48
  /** The `test-case` surface itself, for the sidecars' document-shape check. */
49
49
  export declare const TEST_CASE_SURFACE: ConfigObjectSurface;
50
+ /**
51
+ * Does this field's declared type genuinely admit more than one spelling
52
+ * (#2880 criterion 5)?
53
+ *
54
+ * Two sources, both recorded rather than inferred: the definition's own
55
+ * `dualEncoded` marker (the #2869 server-`StringField` numbers), and the `json`
56
+ * type, which `config pull` itself writes either as a native TOML table or —
57
+ * for a value TOML cannot hold — as JSON text.
58
+ */
59
+ export declare function fieldAdmitsMultipleEncodings(field: ConfigField): boolean;
60
+ /**
61
+ * Does this string spell a number the way the SERVER reads one back (#2880)?
62
+ *
63
+ * The grammar is `parseFloat`'s — sign, digits, one dot, an exponent, and
64
+ * nothing else — because that is what the server applies to the string it
65
+ * stored when it returns the value parsed. Published here so the declared-type
66
+ * validator and the comparator decide "is a number" the same way: a dual
67
+ * encoding the validator accepts must be one the comparison can equate, or
68
+ * `temperature = "warm"` passes preflight and then differs from the `null` the
69
+ * server reads it back as, on every run, with no push that can clear it.
70
+ */
71
+ export declare function spellsDecimalNumber(value: string): boolean;
72
+ /**
73
+ * Every value in `tomlData` whose spelling does not match the type its field
74
+ * declares (#2880 criterion 5).
75
+ *
76
+ * Run by `config push`'s preflight — so a mistyped value fails before any
77
+ * request is issued — and by `config diff`, which renders the identical
78
+ * message instead of calling the file Synced. One validator, one message, two
79
+ * commands: the failure this replaces is a file diff reports as Synced and
80
+ * push then rejects (or, worse, coerces into a value the author did not write).
81
+ *
82
+ * A repeated table names the offending entry by index, so a typo in the third
83
+ * `[[configs]]` block is as findable as one in the first.
84
+ */
85
+ export declare function configDeclaredTypeErrors(filePath: string, tomlData: unknown, table: ConfigTable): string[];
50
86
  /**
51
87
  * TOML keys in `table` that the definition does not recognize.
52
88
  *