primitive-admin 1.2.0-alpha.7 → 1.2.0-alpha.9
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.
- package/README.md +8 -2
- package/assets/skill/skills/primitive-platform/SKILL.md +22 -8
- package/dist/src/commands/apps-children.d.ts +1 -1
- package/dist/src/commands/apps-children.js +55 -145
- package/dist/src/commands/apps-children.js.map +1 -1
- package/dist/src/commands/auth.js +107 -33
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/database-types.js +13 -313
- package/dist/src/commands/database-types.js.map +1 -1
- package/dist/src/commands/databases.js +13 -1
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.js +70 -11
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/llm.js +9 -6
- package/dist/src/commands/llm.js.map +1 -1
- package/dist/src/commands/settings.d.ts +12 -9
- package/dist/src/commands/settings.js +31 -79
- package/dist/src/commands/settings.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +12 -2
- package/dist/src/commands/sync-app-settings.js +35 -10
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +1 -8
- package/dist/src/commands/sync.js +47 -45
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +46 -6
- package/dist/src/lib/api-client.js +156 -64
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +38 -0
- package/dist/src/lib/app-settings-descriptor.js +96 -4
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/child-apps-local.d.ts +0 -46
- package/dist/src/lib/child-apps-local.js +2 -72
- package/dist/src/lib/child-apps-local.js.map +1 -1
- package/dist/src/lib/credentials-home.d.ts +51 -0
- package/dist/src/lib/credentials-home.js +169 -0
- package/dist/src/lib/credentials-home.js.map +1 -0
- package/dist/src/lib/credentials-lock.d.ts +80 -0
- package/dist/src/lib/credentials-lock.js +222 -0
- package/dist/src/lib/credentials-lock.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +56 -4
- package/dist/src/lib/credentials-store.js +236 -78
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/env-resolver-core.d.ts +1 -1
- package/dist/src/lib/env-resolver-core.js.map +1 -1
- package/dist/src/lib/function-bundle.d.ts +38 -18
- package/dist/src/lib/function-bundle.js +60 -35
- package/dist/src/lib/function-bundle.js.map +1 -1
- package/dist/src/lib/function-document-types.d.ts +5 -3
- package/dist/src/lib/function-document-types.js +10 -14
- package/dist/src/lib/function-document-types.js.map +1 -1
- package/dist/src/lib/function-source-roots.d.ts +67 -0
- package/dist/src/lib/function-source-roots.js +148 -0
- package/dist/src/lib/function-source-roots.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +27 -0
- package/dist/src/lib/function-sync.js +16 -3
- package/dist/src/lib/function-sync.js.map +1 -1
- package/dist/src/lib/function-triggers.d.ts +15 -3
- package/dist/src/lib/function-triggers.js +72 -10
- package/dist/src/lib/function-triggers.js.map +1 -1
- package/dist/src/lib/function-typecheck.d.ts +37 -2
- package/dist/src/lib/function-typecheck.js +210 -28
- package/dist/src/lib/function-typecheck.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +48 -11
- package/dist/src/lib/generated-config-surfaces.js +178 -49
- package/dist/src/lib/generated-config-surfaces.js.map +1 -1
- package/dist/src/lib/generated-sdk-types.d.ts +1 -1
- package/dist/src/lib/generated-sdk-types.js +1 -1
- package/dist/src/lib/generated-sdk-types.js.map +1 -1
- package/dist/src/lib/generated-workflow-model-fields.d.ts +20 -0
- package/dist/src/lib/generated-workflow-model-fields.js +53 -0
- package/dist/src/lib/generated-workflow-model-fields.js.map +1 -0
- package/dist/src/lib/login-scope-lines.d.ts +1 -1
- package/dist/src/lib/login-scope-lines.js +1 -1
- package/dist/src/lib/login-scope-lines.js.map +1 -1
- package/dist/src/lib/project-config.d.ts +7 -0
- package/dist/src/lib/project-config.js +22 -1
- package/dist/src/lib/project-config.js.map +1 -1
- package/dist/src/lib/prompt-schema-codegen.d.ts +10 -3
- package/dist/src/lib/prompt-schema-codegen.js +52 -14
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -1
- package/dist/src/lib/root-import-decision.d.ts +9 -4
- package/dist/src/lib/root-import-decision.js +24 -3
- package/dist/src/lib/root-import-decision.js.map +1 -1
- package/dist/src/lib/scope-request.d.ts +8 -5
- package/dist/src/lib/scope-request.js +17 -8
- package/dist/src/lib/scope-request.js.map +1 -1
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +6 -2
- package/dist/src/lib/swift-codegen/agentGenerator.js +56 -4
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -1
- package/dist/src/lib/workflow-field-descriptor.d.ts +91 -0
- package/dist/src/lib/workflow-field-descriptor.js +153 -0
- package/dist/src/lib/workflow-field-descriptor.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,102 +1,54 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `primitive settings` — the app-settings
|
|
2
|
+
* `primitive settings` — the app-settings READER (issue #1033, Phase 2;
|
|
3
|
+
* narrowed to a reader by #2645).
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* redacted).
|
|
5
|
+
* App settings are authored in `app.toml` and applied with `sync push`, so
|
|
6
|
+
* this group carries the one thing the file cannot answer: what the server is
|
|
7
|
+
* actually running. `settings get` renders the server-effective settings —
|
|
8
|
+
* `get` rather than `show`, so the read verb is the same word on every
|
|
9
|
+
* configuration surface.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* `settings pull`, `settings diff` and `settings push` are gone. They operated
|
|
12
|
+
* on the same `app.toml` and the same `entities.app` hash `sync` owns, so they
|
|
13
|
+
* were a second pathway to one piece of state; `sync pull|diff|push --only app`
|
|
14
|
+
* is the single one. The remaining command logic lives in
|
|
15
|
+
* `sync-app-settings.ts`, shared with `sync`.
|
|
13
16
|
*/
|
|
14
17
|
import { ApiClient } from "../lib/api-client.js";
|
|
15
18
|
import { resolveAppId } from "../lib/config.js";
|
|
16
|
-
import {
|
|
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
|
-
}
|
|
19
|
+
import { showAppSettings } from "./sync-app-settings.js";
|
|
33
20
|
export function registerSettingsCommands(program) {
|
|
34
21
|
const settings = program
|
|
35
22
|
.command("settings")
|
|
36
|
-
.description("View
|
|
23
|
+
.description("View the app settings the server is running")
|
|
37
24
|
.addHelpText("after", `
|
|
38
25
|
Examples:
|
|
39
|
-
$ primitive settings
|
|
40
|
-
$ primitive settings
|
|
41
|
-
$ primitive
|
|
42
|
-
$ primitive
|
|
43
|
-
$ primitive
|
|
26
|
+
$ primitive settings get # Render current server settings
|
|
27
|
+
$ primitive settings get --json # Machine-readable
|
|
28
|
+
$ primitive sync pull --only app # Write server settings to app.toml
|
|
29
|
+
$ primitive config set app app.baseUrl=https://example.com
|
|
30
|
+
$ primitive sync diff --only app # Show local app.toml vs server
|
|
31
|
+
$ primitive sync push --only app # Apply app.toml edits to the server
|
|
44
32
|
|
|
45
|
-
app.toml is the
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
app.toml is the ONLY way to manage app configuration (issue #2645): a full
|
|
34
|
+
\`sync push\` applies it, and \`sync push --only app\` applies it alone.
|
|
35
|
+
\`primitive config fields app\` lists its keys, types and defaults. The Google OAuth
|
|
36
|
+
client secret is an ordinary [auth] key holding a reference into the app's
|
|
37
|
+
secret store, never the secret itself: store the value with
|
|
38
|
+
'primitive secrets set GOOGLE_CLIENT_SECRET --value <secret>', then set
|
|
39
|
+
googleClientSecret = "{{secrets.GOOGLE_CLIENT_SECRET}}" in app.toml. A literal
|
|
40
|
+
secret there is rejected by the server.
|
|
48
41
|
`);
|
|
49
|
-
// settings
|
|
42
|
+
// settings get
|
|
50
43
|
settings
|
|
51
|
-
.command("
|
|
44
|
+
.command("get")
|
|
52
45
|
.description("Show the current server-effective app settings")
|
|
53
46
|
.argument("[app-id]", "App ID (uses current app if not specified)")
|
|
54
47
|
.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
48
|
.option("--json", "Output as JSON")
|
|
68
49
|
.action(async (appId, options) => {
|
|
69
50
|
const resolvedAppId = resolveAppId(appId, options);
|
|
70
|
-
|
|
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);
|
|
51
|
+
await showAppSettings(new ApiClient(), resolvedAppId, options);
|
|
100
52
|
});
|
|
101
53
|
}
|
|
102
54
|
//# sourceMappingURL=settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;CAiBL,CACI,CAAC;IAEJ,eAAe;IACf,QAAQ;SACL,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,gDAAgD,CAAC;SAC7D,QAAQ,CAAC,UAAU,EAAE,4CAA4C,CAAC;SAClE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC;SAClC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/B,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,eAAe,CAAC,IAAI,SAAS,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* app secret store (`primitive secrets set`).
|
|
26
26
|
*/
|
|
27
27
|
import type { ApiClient } from "../lib/api-client.js";
|
|
28
|
-
import { type AppSettingSection } from "../lib/app-settings-descriptor.js";
|
|
28
|
+
import { type AppSettingSection, type ProtectionLevel } from "../lib/app-settings-descriptor.js";
|
|
29
29
|
import { type PullWriteTally } from "../lib/pull-write.js";
|
|
30
30
|
import type { SyncState } from "../types/index.js";
|
|
31
31
|
/** The app-settings file name inside a sync directory. */
|
|
@@ -51,6 +51,7 @@ export declare function collectAppSettingsPushErrors(tomlData: Record<string, an
|
|
|
51
51
|
isCrossAppPush?: boolean;
|
|
52
52
|
excludeName?: boolean;
|
|
53
53
|
nameOptional?: boolean;
|
|
54
|
+
excludeProtection?: boolean;
|
|
54
55
|
}): string[];
|
|
55
56
|
/**
|
|
56
57
|
* Render server-effective settings grouped by `app.toml` section — the view
|
|
@@ -82,7 +83,9 @@ export declare function renderAppSettings(settings: any): void;
|
|
|
82
83
|
* A file that already states the same settings is left as it is (#4160): the
|
|
83
84
|
* comparison is the payload `config diff` and `config push` build from the
|
|
84
85
|
* file, so its comments, key order and explicit defaults survive the pull.
|
|
85
|
-
* `
|
|
86
|
+
* A file carrying the deprecated `[app].protected` key is always rewritten,
|
|
87
|
+
* so the pull the deprecation warning advertises removes it (#4564,
|
|
88
|
+
* DSO-4564-003). `written` says which happened.
|
|
86
89
|
*/
|
|
87
90
|
export declare function writePulledAppSettings(configDir: string, settings: any, options?: {
|
|
88
91
|
log?: (message: string) => void;
|
|
@@ -91,6 +94,9 @@ export declare function writePulledAppSettings(configDir: string, settings: any,
|
|
|
91
94
|
* `[app].name`. The name the file already states is kept, so a tree
|
|
92
95
|
* merged back carries the parent's name; when the file states none (or
|
|
93
96
|
* is absent or unparseable) no name line is written and `note` says so.
|
|
97
|
+
* The protection level follows the name (#4564): the level the file
|
|
98
|
+
* states is kept (a deprecated `protected` line as the level it reads
|
|
99
|
+
* as), and the child's own `internal` is never written.
|
|
94
100
|
*/
|
|
95
101
|
keepStatedName?: boolean;
|
|
96
102
|
/** Counts the file as written or unchanged (#4160). */
|
|
@@ -159,6 +165,7 @@ export interface AppSettingsFieldDiff {
|
|
|
159
165
|
*/
|
|
160
166
|
export declare function appSettingsFieldDiffs(localSettings: Record<string, any>, remoteSettings: Record<string, any> | null | undefined, options?: {
|
|
161
167
|
excludeName?: boolean;
|
|
168
|
+
excludeProtection?: boolean;
|
|
162
169
|
}): AppSettingsFieldDiff[];
|
|
163
170
|
/**
|
|
164
171
|
* The comparator's hash of one side's app settings — the push gate's
|
|
@@ -167,6 +174,9 @@ export declare function appSettingsFieldDiffs(localSettings: Record<string, any>
|
|
|
167
174
|
*/
|
|
168
175
|
export declare function hashAppSettingsForDiff(settings: Record<string, any> | null | undefined, options?: {
|
|
169
176
|
excludeName?: boolean;
|
|
177
|
+
excludeProtection?: boolean;
|
|
178
|
+
/** The remote level a local deprecated `protected` key reads against. */
|
|
179
|
+
legacyProtectedAgainst?: ProtectionLevel;
|
|
170
180
|
}): string;
|
|
171
181
|
/**
|
|
172
182
|
* `config diff --only app` — the per-field report, over the full writable set.
|
|
@@ -28,7 +28,7 @@ import { existsSync, readFileSync, mkdirSync } from "fs";
|
|
|
28
28
|
import { join } from "path";
|
|
29
29
|
import { createHash } from "crypto";
|
|
30
30
|
import { parseConfigToml, stringifyConfigToml } from "../lib/config-toml.js";
|
|
31
|
-
import { APP_SETTINGS_DESCRIPTOR, APP_SETTINGS_SECTIONS, buildAppSettingsPayload, projectAppSettingsForComparison, serializeAppSettingsToToml, } from "../lib/app-settings-descriptor.js";
|
|
31
|
+
import { APP_SETTINGS_DESCRIPTOR, APP_SETTINGS_SECTIONS, LEGACY_PROTECTED_KEY, buildAppSettingsPayload, projectAppSettingsForComparison, requestedProtectionLevel, serializeAppSettingsToToml, settingsProtectionLevel, } from "../lib/app-settings-descriptor.js";
|
|
32
32
|
import { canonicalJsonStringify } from "../lib/canonical-json.js";
|
|
33
33
|
import { writePulledFile } from "../lib/pull-write.js";
|
|
34
34
|
import { resolveSyncStateReadPath } from "../lib/sync-paths.js";
|
|
@@ -149,12 +149,15 @@ export function renderAppSettings(settings) {
|
|
|
149
149
|
* A file that already states the same settings is left as it is (#4160): the
|
|
150
150
|
* comparison is the payload `config diff` and `config push` build from the
|
|
151
151
|
* file, so its comments, key order and explicit defaults survive the pull.
|
|
152
|
-
* `
|
|
152
|
+
* A file carrying the deprecated `[app].protected` key is always rewritten,
|
|
153
|
+
* so the pull the deprecation warning advertises removes it (#4564,
|
|
154
|
+
* DSO-4564-003). `written` says which happened.
|
|
153
155
|
*/
|
|
154
156
|
export function writePulledAppSettings(configDir, settings, options = {}) {
|
|
155
157
|
ensureDir(configDir);
|
|
156
158
|
const path = appTomlPath(configDir);
|
|
157
|
-
const
|
|
159
|
+
const stated = readStatedApp(path);
|
|
160
|
+
const statedName = options.keepStatedName ? stated?.name : undefined;
|
|
158
161
|
let content;
|
|
159
162
|
if (!options.keepStatedName) {
|
|
160
163
|
content = serializeAppSettings(settings);
|
|
@@ -166,10 +169,21 @@ export function writePulledAppSettings(configDir, settings, options = {}) {
|
|
|
166
169
|
data.app.name = statedName;
|
|
167
170
|
else
|
|
168
171
|
delete data.app.name;
|
|
172
|
+
const statedLevel = requestedProtectionLevel(stated);
|
|
173
|
+
if (statedLevel !== undefined)
|
|
174
|
+
data.app.protection = statedLevel;
|
|
175
|
+
else
|
|
176
|
+
delete data.app.protection;
|
|
169
177
|
}
|
|
170
178
|
content = stringifyConfigToml(data);
|
|
171
179
|
}
|
|
172
|
-
const
|
|
180
|
+
const carriesLegacyKey = !!stated && LEGACY_PROTECTED_KEY in stated;
|
|
181
|
+
const written = writePulledFile(path, content, options.tally, carriesLegacyKey
|
|
182
|
+
? undefined
|
|
183
|
+
: sameAppSettingsAs(content, {
|
|
184
|
+
nameOptional: options.keepStatedName,
|
|
185
|
+
excludeProtection: options.keepStatedName,
|
|
186
|
+
}));
|
|
173
187
|
if (written)
|
|
174
188
|
options.log?.(`Wrote ${path}`);
|
|
175
189
|
return {
|
|
@@ -192,6 +206,7 @@ export function writePulledAppSettings(configDir, settings, options = {}) {
|
|
|
192
206
|
function sameAppSettingsAs(serverContent, options) {
|
|
193
207
|
const payloadOf = (content) => buildAppSettingsPayload(parseConfigToml(content), {
|
|
194
208
|
nameOptional: options.nameOptional,
|
|
209
|
+
excludeProtection: options.excludeProtection,
|
|
195
210
|
});
|
|
196
211
|
return (localContent) => {
|
|
197
212
|
const local = payloadOf(localContent);
|
|
@@ -202,15 +217,16 @@ function sameAppSettingsAs(serverContent, options) {
|
|
|
202
217
|
};
|
|
203
218
|
}
|
|
204
219
|
/**
|
|
205
|
-
* The `[app]
|
|
206
|
-
* the file is absent, unparseable or
|
|
220
|
+
* The `[app]` table an `app.toml` states, as TOML stated it, or undefined
|
|
221
|
+
* when the file is absent, unparseable or has none.
|
|
207
222
|
*/
|
|
208
|
-
function
|
|
223
|
+
function readStatedApp(path) {
|
|
209
224
|
if (!existsSync(path))
|
|
210
225
|
return undefined;
|
|
211
226
|
try {
|
|
212
227
|
const parsed = parseConfigToml(readFileSync(path, "utf-8"));
|
|
213
|
-
|
|
228
|
+
const app = parsed?.app;
|
|
229
|
+
return app && typeof app === "object" && !Array.isArray(app) ? app : undefined;
|
|
214
230
|
}
|
|
215
231
|
catch {
|
|
216
232
|
return undefined;
|
|
@@ -291,7 +307,12 @@ export function appSettingsNameExcludedForState(state, appId, tomlData, localEnv
|
|
|
291
307
|
* app-settings row in the full `config diff`, and the push gate.
|
|
292
308
|
*/
|
|
293
309
|
export function appSettingsFieldDiffs(localSettings, remoteSettings, options = {}) {
|
|
294
|
-
|
|
310
|
+
// The local file's deprecated `protected` key reads against the remote
|
|
311
|
+
// level, as the server's write does (DSO-4564-001).
|
|
312
|
+
const local = projectAppSettingsForComparison(localSettings, {
|
|
313
|
+
...options,
|
|
314
|
+
legacyProtectedAgainst: settingsProtectionLevel(remoteSettings),
|
|
315
|
+
});
|
|
295
316
|
const remote = projectAppSettingsForComparison(remoteSettings, options);
|
|
296
317
|
const diffs = [];
|
|
297
318
|
for (const d of APP_SETTINGS_DESCRIPTOR) {
|
|
@@ -352,6 +373,7 @@ export async function diffAppSettings(client, appId, configDir, options = {}) {
|
|
|
352
373
|
const { settings: local, errors } = buildAppSettingsPayload(tomlData, {
|
|
353
374
|
excludeName,
|
|
354
375
|
nameOptional: localEnvironment,
|
|
376
|
+
excludeProtection: localEnvironment,
|
|
355
377
|
});
|
|
356
378
|
// A file with validation errors is unpushable, so diff must not present its
|
|
357
379
|
// surviving values as clean (or as a partial diff) — that would advertise
|
|
@@ -364,7 +386,10 @@ export async function diffAppSettings(client, appId, configDir, options = {}) {
|
|
|
364
386
|
process.exit(1);
|
|
365
387
|
}
|
|
366
388
|
const remote = (await client.getAppSettings(appId)) ?? {};
|
|
367
|
-
const diffs = appSettingsFieldDiffs(local, remote, {
|
|
389
|
+
const diffs = appSettingsFieldDiffs(local, remote, {
|
|
390
|
+
excludeName,
|
|
391
|
+
excludeProtection: localEnvironment,
|
|
392
|
+
});
|
|
368
393
|
if (options.json) {
|
|
369
394
|
json({ diffs });
|
|
370
395
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-app-settings.js","sourceRoot":"","sources":["../../../src/commands/sync-app-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,0BAA0B,
|
|
1
|
+
{"version":3,"file":"sync-app-settings.js","sourceRoot":"","sources":["../../../src/commands/sync-app-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1694,7 +1694,6 @@ export interface PushFieldDiff {
|
|
|
1694
1694
|
*/
|
|
1695
1695
|
export type PushGateOutcome = {
|
|
1696
1696
|
action: "live-unavailable";
|
|
1697
|
-
transient?: boolean;
|
|
1698
1697
|
} | {
|
|
1699
1698
|
action: "create";
|
|
1700
1699
|
} | {
|
|
@@ -2566,17 +2565,11 @@ interface PushResolutionMaps {
|
|
|
2566
2565
|
/** Whether a block is authored locally but not on the server yet. */
|
|
2567
2566
|
isPlannedBlock?: (blockType: TestBlockType, blockKey: string) => boolean;
|
|
2568
2567
|
}
|
|
2569
|
-
/**
|
|
2570
|
-
* A failure row the push reports and exits nonzero on (`applyFailures`).
|
|
2571
|
-
* `transient` is set where a request failed without an answer, or with a
|
|
2572
|
-
* transient status: a push that failed only on such rows may succeed when run
|
|
2573
|
-
* again (#4491).
|
|
2574
|
-
*/
|
|
2568
|
+
/** A failure row the push reports and exits nonzero on (`applyFailures`). */
|
|
2575
2569
|
type ApplyFailure = {
|
|
2576
2570
|
type: string;
|
|
2577
2571
|
key: string;
|
|
2578
2572
|
message: string;
|
|
2579
|
-
transient?: boolean;
|
|
2580
2573
|
};
|
|
2581
2574
|
/** The attachment bookkeeping a test case's sync-state record carries. */
|
|
2582
2575
|
type RecordedAttachments = {
|