primitive-admin 1.0.60 → 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.
- package/README.md +125 -69
- package/assets/skill/skills/primitive-platform/SKILL.md +336 -37
- package/dist/bin/primitive.js +29 -14
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.js +22 -8
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.js +96 -16
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.js +49 -188
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/blob-buckets.js +50 -155
- package/dist/src/commands/blob-buckets.js.map +1 -1
- package/dist/src/commands/collection-type-configs.js +14 -100
- package/dist/src/commands/collection-type-configs.js.map +1 -1
- package/dist/src/commands/collections.js +47 -8
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/config.d.ts +46 -0
- package/dist/src/commands/config.js +479 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/connections.d.ts +2 -0
- package/dist/src/commands/connections.js +100 -0
- package/dist/src/commands/connections.js.map +1 -0
- package/dist/src/commands/cron-triggers.js +84 -176
- package/dist/src/commands/cron-triggers.js.map +1 -1
- package/dist/src/commands/database-type-configs.d.ts +2 -0
- package/dist/src/commands/database-type-configs.js +171 -0
- package/dist/src/commands/database-type-configs.js.map +1 -0
- package/dist/src/commands/database-types.js +4 -4
- package/dist/src/commands/database-types.js.map +1 -1
- package/dist/src/commands/databases.d.ts +63 -0
- package/dist/src/commands/databases.js +649 -87
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.js +869 -12
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.js +18 -125
- package/dist/src/commands/email-templates.js.map +1 -1
- package/dist/src/commands/env.d.ts +12 -1
- package/dist/src/commands/env.js +98 -25
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/feature-flags.d.ts +14 -0
- package/dist/src/commands/feature-flags.js +116 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/group-type-configs.js +14 -109
- package/dist/src/commands/group-type-configs.js.map +1 -1
- package/dist/src/commands/init.d.ts +9 -1
- package/dist/src/commands/init.js +1058 -279
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.js +136 -421
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/metadata-category-configs.d.ts +12 -0
- package/dist/src/commands/metadata-category-configs.js +112 -0
- package/dist/src/commands/metadata-category-configs.js.map +1 -0
- package/dist/src/commands/metadata.js +33 -141
- package/dist/src/commands/metadata.js.map +1 -1
- package/dist/src/commands/prompts.js +206 -563
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +1 -1
- package/dist/src/commands/rule-sets.js +16 -132
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.js +67 -234
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/sessions.d.ts +2 -0
- package/dist/src/commands/sessions.js +75 -0
- package/dist/src/commands/sessions.js.map +1 -0
- package/dist/src/commands/skill.js +2 -2
- package/dist/src/commands/skill.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +113 -70
- package/dist/src/commands/sync-app-settings.js +193 -242
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +1932 -49
- package/dist/src/commands/sync.js +9584 -1725
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +8 -2
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +92 -1
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.js +44 -58
- package/dist/src/commands/vars.js.map +1 -1
- package/dist/src/commands/webhooks.js +318 -156
- package/dist/src/commands/webhooks.js.map +1 -1
- package/dist/src/commands/workflows.d.ts +49 -12
- package/dist/src/commands/workflows.js +652 -1043
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/access-rule-display.d.ts +21 -0
- package/dist/src/lib/access-rule-display.js +34 -0
- package/dist/src/lib/access-rule-display.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +630 -61
- package/dist/src/lib/api-client.js +676 -116
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +180 -25
- package/dist/src/lib/app-settings-descriptor.js +403 -82
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/canonical-json.d.ts +12 -0
- package/dist/src/lib/canonical-json.js +35 -0
- package/dist/src/lib/canonical-json.js.map +1 -0
- package/dist/src/lib/cli-manifest.d.ts +8 -0
- package/dist/src/lib/cli-manifest.js +1 -0
- package/dist/src/lib/cli-manifest.js.map +1 -1
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +6 -2
- package/dist/src/lib/codegen-shared/generatedFiles.js +9 -2
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +6 -6
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +8 -8
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -1
- package/dist/src/lib/config-object-descriptor.d.ts +127 -0
- package/dist/src/lib/config-object-descriptor.js +658 -0
- package/dist/src/lib/config-object-descriptor.js.map +1 -0
- package/dist/src/lib/config-payload.d.ts +85 -0
- package/dist/src/lib/config-payload.js +116 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +130 -0
- package/dist/src/lib/config-surface.js +300 -0
- package/dist/src/lib/config-surface.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +10 -0
- package/dist/src/lib/credentials-store.js +23 -0
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/data-input.d.ts +23 -0
- package/dist/src/lib/data-input.js +50 -0
- package/dist/src/lib/data-input.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTemplates.js +1 -1
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +1 -1
- package/dist/src/lib/env-resolver-core.d.ts +147 -0
- package/dist/src/lib/env-resolver-core.js +265 -0
- package/dist/src/lib/env-resolver-core.js.map +1 -0
- package/dist/src/lib/env-resolver.d.ts +28 -6
- package/dist/src/lib/env-resolver.js +44 -32
- package/dist/src/lib/env-resolver.js.map +1 -1
- package/dist/src/lib/generated-allowlist.js +13 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
- package/dist/src/lib/generated-config-surfaces.js +4058 -0
- package/dist/src/lib/generated-config-surfaces.js.map +1 -0
- package/dist/src/lib/generated-template-lint.d.ts +212 -0
- package/dist/src/lib/generated-template-lint.js +624 -0
- package/dist/src/lib/generated-template-lint.js.map +1 -0
- package/dist/src/lib/init-adopt.d.ts +16 -0
- package/dist/src/lib/init-adopt.js +34 -0
- package/dist/src/lib/init-adopt.js.map +1 -0
- package/dist/src/lib/init-assets.d.ts +39 -0
- package/dist/src/lib/init-assets.js +97 -0
- package/dist/src/lib/init-assets.js.map +1 -0
- package/dist/src/lib/init-config.d.ts +44 -5
- package/dist/src/lib/init-config.js +80 -7
- package/dist/src/lib/init-config.js.map +1 -1
- package/dist/src/lib/init-ios-links.d.ts +50 -0
- package/dist/src/lib/init-ios-links.js +153 -0
- package/dist/src/lib/init-ios-links.js.map +1 -0
- package/dist/src/lib/init-plan.d.ts +80 -0
- package/dist/src/lib/init-plan.js +95 -0
- package/dist/src/lib/init-plan.js.map +1 -0
- package/dist/src/lib/init-production-env.d.ts +48 -0
- package/dist/src/lib/init-production-env.js +59 -0
- package/dist/src/lib/init-production-env.js.map +1 -0
- package/dist/src/lib/init-schema.d.ts +74 -0
- package/dist/src/lib/init-schema.js +358 -0
- package/dist/src/lib/init-schema.js.map +1 -0
- package/dist/src/lib/init-xcode.d.ts +33 -0
- package/dist/src/lib/init-xcode.js +114 -0
- package/dist/src/lib/init-xcode.js.map +1 -0
- package/dist/src/lib/integration-request-config.d.ts +30 -0
- package/dist/src/lib/integration-request-config.js +145 -0
- package/dist/src/lib/integration-request-config.js.map +1 -0
- package/dist/src/lib/local-state.d.ts +55 -0
- package/dist/src/lib/local-state.js +167 -0
- package/dist/src/lib/local-state.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +568 -0
- package/dist/src/lib/log-inspection.js +639 -0
- package/dist/src/lib/log-inspection.js.map +1 -0
- package/dist/src/lib/migration-nag.d.ts +2 -2
- package/dist/src/lib/migration-nag.js +3 -3
- package/dist/src/lib/object-status-filter.d.ts +22 -0
- package/dist/src/lib/object-status-filter.js +45 -0
- package/dist/src/lib/object-status-filter.js.map +1 -0
- package/dist/src/lib/output.d.ts +24 -1
- package/dist/src/lib/output.js +42 -1
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/package-manager.d.ts +140 -0
- package/dist/src/lib/package-manager.js +305 -0
- package/dist/src/lib/package-manager.js.map +1 -0
- package/dist/src/lib/paginate.d.ts +50 -0
- package/dist/src/lib/paginate.js +53 -0
- package/dist/src/lib/paginate.js.map +1 -1
- package/dist/src/lib/platform-owned.d.ts +29 -3
- package/dist/src/lib/platform-owned.js +42 -3
- package/dist/src/lib/platform-owned.js.map +1 -1
- package/dist/src/lib/project-config.js +13 -5
- package/dist/src/lib/project-config.js.map +1 -1
- package/dist/src/lib/query-operators.d.ts +1 -1
- package/dist/src/lib/query-operators.js +1 -1
- package/dist/src/lib/record-filter.d.ts +18 -0
- package/dist/src/lib/record-filter.js +55 -0
- package/dist/src/lib/record-filter.js.map +1 -0
- package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
- package/dist/src/lib/resolve-init-dev-port.js +55 -0
- package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
- package/dist/src/lib/resolve-init-server.d.ts +64 -0
- package/dist/src/lib/resolve-init-server.js +77 -0
- package/dist/src/lib/resolve-init-server.js.map +1 -0
- package/dist/src/lib/resolve-platform.d.ts +43 -14
- package/dist/src/lib/resolve-platform.js +74 -12
- package/dist/src/lib/resolve-platform.js.map +1 -1
- package/dist/src/lib/run-status.d.ts +19 -0
- package/dist/src/lib/run-status.generated.d.ts +39 -0
- package/dist/src/lib/run-status.generated.js +66 -0
- package/dist/src/lib/run-status.generated.js.map +1 -0
- package/dist/src/lib/run-status.js +19 -0
- package/dist/src/lib/run-status.js.map +1 -0
- package/dist/src/lib/server-text-normalization.d.ts +51 -0
- package/dist/src/lib/server-text-normalization.js +90 -0
- package/dist/src/lib/server-text-normalization.js.map +1 -0
- package/dist/src/lib/server-url.d.ts +22 -0
- package/dist/src/lib/server-url.js +33 -0
- package/dist/src/lib/server-url.js.map +1 -0
- package/dist/src/lib/signing-secret-status.d.ts +81 -0
- package/dist/src/lib/signing-secret-status.js +116 -0
- package/dist/src/lib/signing-secret-status.js.map +1 -0
- package/dist/src/lib/skill-installer.d.ts +4 -2
- package/dist/src/lib/skill-installer.js +143 -12
- package/dist/src/lib/skill-installer.js.map +1 -1
- package/dist/src/lib/snapshots.d.ts +2 -2
- package/dist/src/lib/snapshots.js +2 -2
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +15 -2
- package/dist/src/lib/swift-codegen/dbGenerator.js +250 -18
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/generator.d.ts +11 -2
- package/dist/src/lib/swift-codegen/generator.js +181 -7
- package/dist/src/lib/swift-codegen/generator.js.map +1 -1
- package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +7 -3
- package/dist/src/lib/swift-codegen/siblingSymbols.js +4 -1
- package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -1
- package/dist/src/lib/sync-dir-selector.d.ts +21 -0
- package/dist/src/lib/sync-dir-selector.js +30 -0
- package/dist/src/lib/sync-dir-selector.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +39 -0
- package/dist/src/lib/sync-paths.js +70 -2
- package/dist/src/lib/sync-paths.js.map +1 -1
- package/dist/src/lib/sync-resource-types.d.ts +138 -31
- package/dist/src/lib/sync-resource-types.js +241 -47
- package/dist/src/lib/sync-resource-types.js.map +1 -1
- package/dist/src/lib/sync-selectors.d.ts +95 -0
- package/dist/src/lib/sync-selectors.js +228 -0
- package/dist/src/lib/sync-selectors.js.map +1 -0
- package/dist/src/lib/template.d.ts +62 -4
- package/dist/src/lib/template.js +147 -39
- package/dist/src/lib/template.js.map +1 -1
- package/dist/src/lib/test-case-keys.d.ts +29 -0
- package/dist/src/lib/test-case-keys.js +55 -0
- package/dist/src/lib/test-case-keys.js.map +1 -0
- package/dist/src/lib/test-case-variables.d.ts +15 -0
- package/dist/src/lib/test-case-variables.js +29 -0
- package/dist/src/lib/test-case-variables.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +4 -4
- package/dist/src/lib/toml-database-config.js +27 -34
- package/dist/src/lib/toml-database-config.js.map +1 -1
- package/dist/src/lib/toml-metadata-config.d.ts +9 -5
- package/dist/src/lib/toml-metadata-config.js +40 -45
- package/dist/src/lib/toml-metadata-config.js.map +1 -1
- package/dist/src/lib/toml-native-form.d.ts +1 -1
- package/dist/src/lib/toml-native-form.js +1 -1
- package/dist/src/lib/toml-params-validator.d.ts +1 -1
- package/dist/src/lib/toml-params-validator.js +1 -1
- package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
- package/dist/src/lib/toml-scalar-edit.js +283 -0
- package/dist/src/lib/toml-scalar-edit.js.map +1 -0
- package/dist/src/lib/user-selector.d.ts +24 -0
- package/dist/src/lib/user-selector.js +33 -0
- package/dist/src/lib/user-selector.js.map +1 -0
- package/dist/src/lib/version-check.d.ts +25 -0
- package/dist/src/lib/version-check.js +77 -8
- package/dist/src/lib/version-check.js.map +1 -1
- package/dist/src/lib/watch.d.ts +121 -0
- package/dist/src/lib/watch.js +169 -0
- package/dist/src/lib/watch.js.map +1 -0
- package/dist/src/lib/workflow-apply.d.ts +69 -45
- package/dist/src/lib/workflow-apply.js +99 -72
- package/dist/src/lib/workflow-apply.js.map +1 -1
- package/dist/src/lib/workflow-codegen/generator.js +4 -4
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +11 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +5 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -1
- package/dist/src/lib/workflow-config-apply.d.ts +70 -0
- package/dist/src/lib/workflow-config-apply.js +137 -0
- package/dist/src/lib/workflow-config-apply.js.map +1 -0
- package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
- package/dist/src/lib/workflow-config-sidecar.js +96 -0
- package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
- package/dist/src/lib/workflow-defaults.d.ts +29 -0
- package/dist/src/lib/workflow-defaults.js +41 -0
- package/dist/src/lib/workflow-defaults.js.map +1 -0
- package/dist/src/lib/workflow-fragments.d.ts +23 -0
- package/dist/src/lib/workflow-fragments.js +229 -8
- package/dist/src/lib/workflow-fragments.js.map +1 -1
- package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
- package/dist/src/lib/workflow-include-preserve.js +286 -0
- package/dist/src/lib/workflow-include-preserve.js.map +1 -0
- package/dist/src/lib/workflow-payload.d.ts +31 -20
- package/dist/src/lib/workflow-payload.js +100 -93
- package/dist/src/lib/workflow-payload.js.map +1 -1
- package/dist/src/lib/workflow-toml-validator.d.ts +80 -3
- package/dist/src/lib/workflow-toml-validator.js +231 -3
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +78 -22
- package/dist/src/validators.d.ts +7 -7
- package/dist/src/validators.js +6 -6
- package/package.json +11 -6
- package/dist/src/commands/settings.d.ts +0 -15
- package/dist/src/commands/settings.js +0 -102
- package/dist/src/commands/settings.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical JSON serialization used for content comparison and hashing.
|
|
3
|
+
*
|
|
4
|
+
* Key order is normalized (sorted) so two structurally identical objects
|
|
5
|
+
* always produce the same string, while array order is preserved (step order
|
|
6
|
+
* matters in workflows).
|
|
7
|
+
*
|
|
8
|
+
* Lives in `lib/` rather than inside `commands/sync.ts` so both the sync
|
|
9
|
+
* command and the workflow-include reconciliation helper can compare values
|
|
10
|
+
* the same way without a circular import.
|
|
11
|
+
*/
|
|
12
|
+
export function canonicalJsonStringify(value) {
|
|
13
|
+
if (value === null || typeof value !== "object") {
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(value)) {
|
|
17
|
+
return "[" + value.map((v) => canonicalJsonStringify(v)).join(",") + "]";
|
|
18
|
+
}
|
|
19
|
+
// Honor `toJSON` before the key walk. A `Date` — or smol-toml's `TomlDate`,
|
|
20
|
+
// what a TOML datetime literal parses to — has no enumerable own keys, so
|
|
21
|
+
// the `Object.keys()` walk below would collapse it to "{}" and every
|
|
22
|
+
// datetime would hash identically (issue #1919). Both implement `toJSON`,
|
|
23
|
+
// returning the ISO string; recursing on it makes date-like values (nested
|
|
24
|
+
// ones too) participate in the hash. Matches JSON.stringify's own semantics.
|
|
25
|
+
if (typeof value.toJSON === "function") {
|
|
26
|
+
return canonicalJsonStringify(value.toJSON());
|
|
27
|
+
}
|
|
28
|
+
const keys = Object.keys(value).sort();
|
|
29
|
+
return ("{" +
|
|
30
|
+
keys
|
|
31
|
+
.map((k) => JSON.stringify(k) + ":" + canonicalJsonStringify(value[k]))
|
|
32
|
+
.join(",") +
|
|
33
|
+
"}");
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=canonical-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/lib/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAU;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3E,CAAC;IACD,4EAA4E;IAC5E,0EAA0E;IAC1E,qEAAqE;IACrE,0EAA0E;IAC1E,2EAA2E;IAC3E,6EAA6E;IAC7E,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACvC,OAAO,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,CACL,GAAG;QACH,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE,IAAI,CAAC,GAAG,CAAC;QACZ,GAAG,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -34,6 +34,14 @@ export interface ManifestOption {
|
|
|
34
34
|
description: string;
|
|
35
35
|
required: boolean;
|
|
36
36
|
defaultValue: unknown;
|
|
37
|
+
/**
|
|
38
|
+
* True for options registered with commander's `hideHelp()` — deprecated
|
|
39
|
+
* aliases kept working for one window but not part of the supported surface
|
|
40
|
+
* (#2357). Consumers that treat the manifest as the flag allowlist (the
|
|
41
|
+
* docs CLI gate) should exclude these so new documentation cannot be
|
|
42
|
+
* written against a flag that is on its way out.
|
|
43
|
+
*/
|
|
44
|
+
hidden: boolean;
|
|
37
45
|
}
|
|
38
46
|
export interface ManifestCommand {
|
|
39
47
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-manifest.js","sourceRoot":"","sources":["../../../src/lib/cli-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-manifest.js","sourceRoot":"","sources":["../../../src/lib/cli-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAyC7C,SAAS,YAAY,CAAC,GAAQ;IAC5B,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ;QACxB,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ;QACxB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ;IAC/B,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ;QACxB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;QACtC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAQ;IAChC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;QAChB,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE;QACpC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE;QAC5B,IAAI,EAAE,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QACvD,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;QACjD,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,OAAe;IAChE,MAAM,IAAI,GAAG,OAAc,CAAC;IAC5B,OAAO;QACL,aAAa,EAAE,2BAA2B;QAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACjB,OAAO;QACP,uEAAuE;QACvE,+DAA+D;QAC/D,aAAa,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;QACxD,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -47,7 +47,7 @@ export interface WriteOrCheckOptions {
|
|
|
47
47
|
* Suffix identifying generator-owned files (for orphan cleanup / stale
|
|
48
48
|
* detection). Defaults to `.generated.ts`. Both `databases codegen` and
|
|
49
49
|
* `workflows codegen` write one `<name>.generated.ts` file per entity into
|
|
50
|
-
* their OWN default output dir (`database-
|
|
50
|
+
* their OWN default output dir (`database-type-configs/generated/` and
|
|
51
51
|
* `workflows/generated/` respectively), so suffix-based ownership never
|
|
52
52
|
* reaches the other generator's files.
|
|
53
53
|
*/
|
|
@@ -65,8 +65,12 @@ export interface WriteOrCheckOptions {
|
|
|
65
65
|
* generator's cleanup to its own files. The TS callers leave this unset —
|
|
66
66
|
* their default `generated/` dirs are single-generator, so suffix ownership
|
|
67
67
|
* is already unambiguous.
|
|
68
|
+
*
|
|
69
|
+
* Several banners may be given: a generator whose banner has been RENAMED
|
|
70
|
+
* still owns the files it stamped with the old one (issue #2760), and
|
|
71
|
+
* dropping them from the set would orphan every pre-rename output.
|
|
68
72
|
*/
|
|
69
|
-
ownershipBanner?: string;
|
|
73
|
+
ownershipBanner?: string | readonly string[];
|
|
70
74
|
/**
|
|
71
75
|
* Banners belonging to OTHER generators that must never be overwritten by
|
|
72
76
|
* this run (issue #1653, class 3b). When two generators share one `--output`
|
|
@@ -15,6 +15,12 @@
|
|
|
15
15
|
import * as path from "path";
|
|
16
16
|
import { promises as fsp } from "fs";
|
|
17
17
|
const DEFAULT_GENERATED_SUFFIX = ".generated.ts";
|
|
18
|
+
/** Normalize the one-or-many ownership banner into a list. */
|
|
19
|
+
function bannerList(banner) {
|
|
20
|
+
if (banner === undefined)
|
|
21
|
+
return [];
|
|
22
|
+
return typeof banner === "string" ? [banner] : banner;
|
|
23
|
+
}
|
|
18
24
|
/**
|
|
19
25
|
* Write (or `--check`) a set of rendered generated files, handling orphan
|
|
20
26
|
* cleanup / stale detection. Pure lifecycle: the caller renders content, this
|
|
@@ -152,7 +158,8 @@ async function listOwnedGeneratedFiles(outDir, suffix, ownershipBanner) {
|
|
|
152
158
|
if (!entry.name.endsWith(suffix))
|
|
153
159
|
continue;
|
|
154
160
|
const filePath = path.join(outDir, entry.name);
|
|
155
|
-
|
|
161
|
+
const banners = bannerList(ownershipBanner);
|
|
162
|
+
if (banners.length > 0) {
|
|
156
163
|
// Content-scoped ownership: only sweep files carrying THIS generator's
|
|
157
164
|
// banner, so a shared output dir keeps each generator's cleanup to its
|
|
158
165
|
// own files. A read failure means "not confidently ours" → skip it.
|
|
@@ -163,7 +170,7 @@ async function listOwnedGeneratedFiles(outDir, suffix, ownershipBanner) {
|
|
|
163
170
|
catch {
|
|
164
171
|
continue;
|
|
165
172
|
}
|
|
166
|
-
if (!contents.startsWith(
|
|
173
|
+
if (!banners.some((banner) => contents.startsWith(banner)))
|
|
167
174
|
continue;
|
|
168
175
|
}
|
|
169
176
|
owned.push(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatedFiles.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/generatedFiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"generatedFiles.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/generatedFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* (`workflows codegen` #1442 and `databases codegen` #814, issue #1510).
|
|
4
4
|
*
|
|
5
5
|
* Both commands read a set of `*.toml` schemas out of a synced sub-directory
|
|
6
|
-
* (`workflows/` or `database-
|
|
6
|
+
* (`workflows/` or `database-type-configs/`) and render `*.generated.ts` beside them.
|
|
7
7
|
* Historically each command located that source directory by scanning EVERY
|
|
8
8
|
* `.primitive/sync/<env>/<appId>/<subdir>` slot and either hard-erroring on
|
|
9
9
|
* more than one (`workflows`) or silently merging across environments
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
*
|
|
16
16
|
* This helper resolves the source directory the same way every other CLI
|
|
17
17
|
* command targets an environment: `--env` → `PRIMITIVE_ENV` →
|
|
18
|
-
* `defaultEnvironment` → single-env → error. `--
|
|
18
|
+
* `defaultEnvironment` → single-env → error. `--dir` and `--app` remain
|
|
19
19
|
* explicit overrides. It returns ONLY the resolved source directory; TOML
|
|
20
20
|
* collection, type filtering/dedup, and output-dir defaulting stay in each
|
|
21
21
|
* command.
|
|
22
22
|
*
|
|
23
23
|
* Design notes (binding, from the plan of record for #1510):
|
|
24
|
-
* - Call `getCurrentEnvironment()` DIRECTLY when no `--
|
|
24
|
+
* - Call `getCurrentEnvironment()` DIRECTLY when no `--dir` override is given.
|
|
25
25
|
* `resolveSyncDir()`'s internal `safeEnv()` swallows the resolver's
|
|
26
26
|
* ambiguity error and falls back to `./config`, so genuine ambiguity must
|
|
27
27
|
* be surfaced here, not through `resolveSyncDir()`.
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
export interface ResolveCodegenSourceDirOptions {
|
|
46
46
|
/** `--app <app-id>` override, if the user passed it. */
|
|
47
47
|
app?: string;
|
|
48
|
-
/**
|
|
48
|
+
/** The resolved sync-directory override (`--dir <path>`), if the user passed it. */
|
|
49
49
|
syncDir?: string;
|
|
50
50
|
}
|
|
51
51
|
export interface ResolveCodegenSourceDirArgs {
|
|
52
|
-
/** The synced sub-directory to resolve, e.g. "workflows" or "database-
|
|
52
|
+
/** The synced sub-directory to resolve, e.g. "workflows" or "database-type-configs". */
|
|
53
53
|
subdir: string;
|
|
54
|
-
/** Parsed command options (`--app`, `--
|
|
54
|
+
/** Parsed command options (`--app`, plus the resolved `--dir` override). */
|
|
55
55
|
options: ResolveCodegenSourceDirOptions;
|
|
56
56
|
/**
|
|
57
57
|
* Working directory the legacy scan is rooted at. Defaults to
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* (`workflows codegen` #1442 and `databases codegen` #814, issue #1510).
|
|
4
4
|
*
|
|
5
5
|
* Both commands read a set of `*.toml` schemas out of a synced sub-directory
|
|
6
|
-
* (`workflows/` or `database-
|
|
6
|
+
* (`workflows/` or `database-type-configs/`) and render `*.generated.ts` beside them.
|
|
7
7
|
* Historically each command located that source directory by scanning EVERY
|
|
8
8
|
* `.primitive/sync/<env>/<appId>/<subdir>` slot and either hard-erroring on
|
|
9
9
|
* more than one (`workflows`) or silently merging across environments
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
*
|
|
16
16
|
* This helper resolves the source directory the same way every other CLI
|
|
17
17
|
* command targets an environment: `--env` → `PRIMITIVE_ENV` →
|
|
18
|
-
* `defaultEnvironment` → single-env → error. `--
|
|
18
|
+
* `defaultEnvironment` → single-env → error. `--dir` and `--app` remain
|
|
19
19
|
* explicit overrides. It returns ONLY the resolved source directory; TOML
|
|
20
20
|
* collection, type filtering/dedup, and output-dir defaulting stay in each
|
|
21
21
|
* command.
|
|
22
22
|
*
|
|
23
23
|
* Design notes (binding, from the plan of record for #1510):
|
|
24
|
-
* - Call `getCurrentEnvironment()` DIRECTLY when no `--
|
|
24
|
+
* - Call `getCurrentEnvironment()` DIRECTLY when no `--dir` override is given.
|
|
25
25
|
* `resolveSyncDir()`'s internal `safeEnv()` swallows the resolver's
|
|
26
26
|
* ambiguity error and falls back to `./config`, so genuine ambiguity must
|
|
27
27
|
* be surfaced here, not through `resolveSyncDir()`.
|
|
@@ -55,7 +55,7 @@ import { resolveSyncDir, assertSafePathComponent } from "../sync-paths.js";
|
|
|
55
55
|
export function resolveCodegenSourceDir(args) {
|
|
56
56
|
const { subdir, options } = args;
|
|
57
57
|
const cwd = args.cwd ?? process.cwd();
|
|
58
|
-
// 1. --
|
|
58
|
+
// 1. --dir is an explicit override: use <dir>/<subdir> verbatim.
|
|
59
59
|
if (options.syncDir) {
|
|
60
60
|
return requireExisting(join(options.syncDir, subdir), subdir, undefined);
|
|
61
61
|
}
|
|
@@ -142,13 +142,13 @@ function scanSyncTree(args) {
|
|
|
142
142
|
throw new Error(`App "${appId}" has a ${subdir}/ directory under multiple environments: ` +
|
|
143
143
|
`${envs.join(", ")}.\n` +
|
|
144
144
|
found.map((d) => ` ${d}`).join("\n") +
|
|
145
|
-
`\nPass --env <name> or --
|
|
145
|
+
`\nPass --env <name> or --dir to select one.`);
|
|
146
146
|
}
|
|
147
147
|
const apps = [...new Set(found.map((d) => basename(dirname(d))))];
|
|
148
148
|
throw new Error(`Found ${subdir}/ directories for more than one app/env:\n` +
|
|
149
149
|
found.map((d) => ` ${d}`).join("\n") +
|
|
150
150
|
`\nCodegen writes into one output dir, so it must run against one app. ` +
|
|
151
|
-
`Pass --app <app-id> (found: ${apps.join(", ")}) or --
|
|
151
|
+
`Pass --app <app-id> (found: ${apps.join(", ")}) or --dir to select one.`);
|
|
152
152
|
}
|
|
153
153
|
return found[0];
|
|
154
154
|
}
|
|
@@ -162,7 +162,7 @@ function requireExisting(dir, subdir, appId) {
|
|
|
162
162
|
function notFoundMessage(subdir, appId) {
|
|
163
163
|
return appId
|
|
164
164
|
? `No ${subdir}/ directory found for app "${appId}" under .primitive/sync/. ` +
|
|
165
|
-
`Check the --app id, pass --
|
|
166
|
-
: `No ${subdir}/ directory found. Pass --
|
|
165
|
+
`Check the --app id, pass --dir, or run \`primitive config pull\` first.`
|
|
166
|
+
: `No ${subdir}/ directory found. Pass --dir or run \`primitive config pull\` first.`;
|
|
167
167
|
}
|
|
168
168
|
//# sourceMappingURL=resolveCodegenSourceDir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveCodegenSourceDir.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/resolveCodegenSourceDir.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAsB3E;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiC;IACvE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtC,
|
|
1
|
+
{"version":3,"file":"resolveCodegenSourceDir.js","sourceRoot":"","sources":["../../../../src/lib/codegen-shared/resolveCodegenSourceDir.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The configuration-object descriptor registry (issue #2645).
|
|
3
|
+
*
|
|
4
|
+
* Server-side configuration is authored in TOML and applied with `config push`.
|
|
5
|
+
* That makes the TOML field surface the thing an operator has to discover, so
|
|
6
|
+
* it needs a machine-readable definition — the job per-flag `--help` used to do.
|
|
7
|
+
* This registry is that definition, and it drives four commands:
|
|
8
|
+
*
|
|
9
|
+
* - `config fields <type>` lists a type's keys, types, required, default
|
|
10
|
+
* - `config create <type> <key>` scaffolds the type's file from `scaffold()`
|
|
11
|
+
* - `config set <type>/<key>` validates the dotted path being edited
|
|
12
|
+
* - `config push --only <sel>` resolves a selector to a type + key
|
|
13
|
+
*
|
|
14
|
+
* ── Deliberately a descriptor, never reflection ──────────────────────────
|
|
15
|
+
* The field list is declared here, not inferred from the pull serializers in
|
|
16
|
+
* `commands/sync.ts`. Reflection over emitted keys cannot report `required` or
|
|
17
|
+
* `default`, and an implicit field surface is exactly the drift #2644 exists to
|
|
18
|
+
* end. The workflow key set is CONSUMED from #2644's vendored definition
|
|
19
|
+
* (`config-surface.ts` / `generated-config-surfaces.ts`) and the app settings
|
|
20
|
+
* from `app-settings-descriptor.ts`, rather than restated, so there is still
|
|
21
|
+
* one definition per field.
|
|
22
|
+
*
|
|
23
|
+
* ── Drift guard ──────────────────────────────────────────────────────────
|
|
24
|
+
* `cli/tests/unit/config-object-descriptor.test.ts` cross-checks the registry
|
|
25
|
+
* against `SYNC_RESOURCE_TYPES` (every per-entity type has exactly one
|
|
26
|
+
* descriptor) and `PUSH_PRUNE_SPECS` (the declared identity path is a real
|
|
27
|
+
* field), and asserts each scaffold parses and carries every required field. A
|
|
28
|
+
* new sync resource type therefore fails a test rather than silently
|
|
29
|
+
* under-reporting from `config fields`.
|
|
30
|
+
*
|
|
31
|
+
* ── Relationship to #2644 ────────────────────────────────────────────────
|
|
32
|
+
* #2644 defines one shared field definition across the server, the TOML surface
|
|
33
|
+
* and CLI validation. These descriptors are sized to be ABSORBED by it: they
|
|
34
|
+
* carry only what the four commands above need, and no validation behavior.
|
|
35
|
+
*/
|
|
36
|
+
import { type SyncResourceType } from "./sync-resource-types.js";
|
|
37
|
+
/** Value shape of a TOML key, as reported by `config fields`. */
|
|
38
|
+
export type ConfigFieldType = "string" | "number" | "boolean" | "string[]" | "table" | "table[]" | "json";
|
|
39
|
+
export interface ConfigFieldDescriptor {
|
|
40
|
+
/** Dotted TOML path, e.g. `workflow.status`, `verification.jwt`. */
|
|
41
|
+
path: string;
|
|
42
|
+
type: ConfigFieldType;
|
|
43
|
+
/** True when `config push` cannot apply the file without this key. */
|
|
44
|
+
required: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* The value the server assumes when the key is absent. `undefined` means
|
|
47
|
+
* there is no default — an absent key leaves the field unset (or, for the
|
|
48
|
+
* TOML-owned fields, clears it).
|
|
49
|
+
*/
|
|
50
|
+
default?: string | number | boolean;
|
|
51
|
+
/** One line, shown by `config fields`. */
|
|
52
|
+
description: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A second file the same object is authored across (issue #2645).
|
|
56
|
+
*
|
|
57
|
+
* A workflow's named configs are sidecar files (`workflows/<key>.configs/
|
|
58
|
+
* <name>.toml`, spec §Contracts/Named configs), authored by the same person as
|
|
59
|
+
* the workflow and pushed by the same command — but they are not keys of
|
|
60
|
+
* `workflows/<key>.toml`, so they cannot be fields of the descriptor without
|
|
61
|
+
* telling `config set` to write them into the wrong file. They are listed
|
|
62
|
+
* separately instead: `config fields` has to report the whole surface, because
|
|
63
|
+
* it is what replaced per-flag `--help` for the removed `workflows configs`
|
|
64
|
+
* verbs (criterion 7).
|
|
65
|
+
*/
|
|
66
|
+
export interface ConfigObjectCompanionFile {
|
|
67
|
+
/** Where the companion lives, e.g. `workflows/<key>.configs/<name>.toml`. */
|
|
68
|
+
fileHint: string;
|
|
69
|
+
/** One line saying what the file is and what names it. */
|
|
70
|
+
description: string;
|
|
71
|
+
fields: readonly ConfigFieldDescriptor[];
|
|
72
|
+
}
|
|
73
|
+
export interface ConfigObjectDescriptor {
|
|
74
|
+
/** Selector name: `workflow`, `webhook`, `app`, `var`. */
|
|
75
|
+
type: string;
|
|
76
|
+
/**
|
|
77
|
+
* Layout metadata for the 13 per-entity types. Absent for the two root
|
|
78
|
+
* singletons (`app.toml`, `vars.toml`), which `SYNC_RESOURCE_TYPES`
|
|
79
|
+
* deliberately excludes.
|
|
80
|
+
*/
|
|
81
|
+
resourceType?: SyncResourceType;
|
|
82
|
+
/** Where the object is authored, for help text and error messages. */
|
|
83
|
+
fileHint: string;
|
|
84
|
+
/**
|
|
85
|
+
* Dotted path of the key that names the object, when it has one in-file.
|
|
86
|
+
* Types keyed purely by filename (transforms, rule-sets) declare none.
|
|
87
|
+
*/
|
|
88
|
+
identity?: string;
|
|
89
|
+
/** One line describing what the object configures. */
|
|
90
|
+
description: string;
|
|
91
|
+
fields: readonly ConfigFieldDescriptor[];
|
|
92
|
+
/** Further files the object is authored across, listed but not `config set`-able. */
|
|
93
|
+
companionFiles?: readonly ConfigObjectCompanionFile[];
|
|
94
|
+
/**
|
|
95
|
+
* True when the file's root-level keys are the author's own rather than a
|
|
96
|
+
* fixed surface — `vars.toml` is a flat `KEY = "value"` table. There is no
|
|
97
|
+
* field list to declare, so `config set` accepts any single-segment path.
|
|
98
|
+
*/
|
|
99
|
+
freeFormRootKeys?: boolean;
|
|
100
|
+
/** The file body `config create <type> <key>` writes. */
|
|
101
|
+
scaffold(key: string): string;
|
|
102
|
+
}
|
|
103
|
+
/** The identity path a descriptor declares, or `undefined` when keyed by filename. */
|
|
104
|
+
export declare function describedIdentityPath(descriptor: ConfigObjectDescriptor): string | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* What the server assumes when a `[workflow]` key is absent.
|
|
107
|
+
*
|
|
108
|
+
* The vendored `WORKFLOW_TABLE` (#2644) carries key set and value shape but
|
|
109
|
+
* not defaults, so the defaults are stated here, next to the other types'.
|
|
110
|
+
* They are not free text: the `models.yaml` `WorkflowDefinition` defaults are
|
|
111
|
+
* the source of truth, and
|
|
112
|
+
* `cli/tests/unit/config-object-descriptor.test.ts` parses that model and fails
|
|
113
|
+
* when a default here disagrees or a newly-defaulted field is missing. Without
|
|
114
|
+
* them `config fields workflow` reported `default null` for the queueing and
|
|
115
|
+
* dispatch knobs — the command that replaced per-flag `--help` under-reporting
|
|
116
|
+
* exactly what the removed flags used to document (issue #2645).
|
|
117
|
+
*
|
|
118
|
+
* Exported because `config diff`'s workflow comparator needs exactly this table
|
|
119
|
+
* to normalize omitted-vs-defaulted fields, and kept a hand-mirrored second
|
|
120
|
+
* copy of it until #2731. Two tables can disagree; a guarded one cannot go
|
|
121
|
+
* stale unnoticed.
|
|
122
|
+
*/
|
|
123
|
+
export declare const WORKFLOW_FIELD_DEFAULTS: Record<string, string | number | boolean>;
|
|
124
|
+
export declare const CONFIG_OBJECT_DESCRIPTORS: readonly ConfigObjectDescriptor[];
|
|
125
|
+
/** Every selector type name, in registry order. */
|
|
126
|
+
export declare const CONFIG_OBJECT_TYPES: readonly string[];
|
|
127
|
+
export declare function getConfigObjectDescriptor(type: string): ConfigObjectDescriptor | undefined;
|