primitive-admin 1.1.0-alpha.9 → 1.1.0
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 +523 -109
- package/assets/skill/skills/primitive-platform/SKILL.md +289 -0
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +372 -21
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.d.ts +2 -0
- package/dist/src/commands/admins.js +136 -30
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.d.ts +2 -0
- package/dist/src/commands/analytics.js +713 -55
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps.d.ts +2 -0
- package/dist/src/commands/apps.js +65 -100
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth-sessions.d.ts +7 -0
- package/dist/src/commands/auth-sessions.js +144 -0
- package/dist/src/commands/auth-sessions.js.map +1 -0
- package/dist/src/commands/auth.d.ts +2 -0
- package/dist/src/commands/auth.js +238 -108
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/blob-buckets.d.ts +2 -0
- package/dist/src/commands/blob-buckets.js +331 -0
- package/dist/src/commands/blob-buckets.js.map +1 -0
- package/dist/src/commands/catalog.d.ts +2 -0
- package/dist/src/commands/catalog.js +63 -48
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collection-type-configs.d.ts +2 -0
- package/dist/src/commands/collection-type-configs.js +85 -0
- package/dist/src/commands/collection-type-configs.js.map +1 -0
- package/dist/src/commands/collections.d.ts +2 -0
- package/dist/src/commands/collections.js +1282 -0
- package/dist/src/commands/collections.js.map +1 -0
- package/dist/src/commands/comparisons.d.ts +2 -0
- package/dist/src/commands/comparisons.js +6 -6
- package/dist/src/commands/comparisons.js.map +1 -1
- package/dist/src/commands/config.d.ts +46 -0
- package/dist/src/commands/config.js +465 -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 +99 -0
- package/dist/src/commands/connections.js.map +1 -0
- package/dist/src/commands/cron-triggers.d.ts +2 -0
- package/dist/src/commands/cron-triggers.js +266 -0
- package/dist/src/commands/cron-triggers.js.map +1 -0
- package/dist/src/commands/database-type-configs.d.ts +2 -0
- package/dist/src/commands/database-type-configs.js +164 -0
- package/dist/src/commands/database-type-configs.js.map +1 -0
- package/dist/src/commands/database-types.d.ts +2 -0
- package/dist/src/commands/database-types.js +471 -0
- package/dist/src/commands/database-types.js.map +1 -0
- package/dist/src/commands/databases.d.ts +65 -0
- package/dist/src/commands/databases.js +1887 -243
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +60 -0
- package/dist/src/commands/documents.js +2888 -22
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/email-templates.d.ts +2 -0
- package/dist/src/commands/email-templates.js +175 -0
- package/dist/src/commands/email-templates.js.map +1 -0
- package/dist/src/commands/env.d.ts +23 -0
- package/dist/src/commands/env.js +395 -0
- package/dist/src/commands/env.js.map +1 -0
- package/dist/src/commands/feature-flags.d.ts +14 -0
- package/dist/src/commands/feature-flags.js +117 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/functions.d.ts +20 -0
- package/dist/src/commands/functions.js +1630 -0
- package/dist/src/commands/functions.js.map +1 -0
- package/dist/src/commands/group-type-configs.d.ts +2 -0
- package/dist/src/commands/group-type-configs.js +87 -0
- package/dist/src/commands/group-type-configs.js.map +1 -0
- package/dist/src/commands/groups.d.ts +2 -0
- package/dist/src/commands/groups.js +65 -113
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +223 -0
- package/dist/src/commands/guides.js +627 -69
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.d.ts +37 -0
- package/dist/src/commands/init.js +1693 -208
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.d.ts +2 -0
- package/dist/src/commands/integrations.js +428 -187
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/llm.d.ts +2 -0
- package/dist/src/commands/llm.js +4 -2
- package/dist/src/commands/llm.js.map +1 -1
- package/dist/src/commands/locks.d.ts +8 -0
- package/dist/src/commands/locks.js +175 -0
- package/dist/src/commands/locks.js.map +1 -0
- package/dist/src/commands/metadata-category-configs.d.ts +12 -0
- package/dist/src/commands/metadata-category-configs.js +113 -0
- package/dist/src/commands/metadata-category-configs.js.map +1 -0
- package/dist/src/commands/metadata.d.ts +2 -0
- package/dist/src/commands/metadata.js +288 -0
- package/dist/src/commands/metadata.js.map +1 -0
- package/dist/src/commands/prompts.d.ts +2 -0
- package/dist/src/commands/prompts.js +322 -634
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +3 -0
- package/dist/src/commands/rule-sets.js +139 -148
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +30 -0
- package/dist/src/commands/scripts.js +688 -0
- package/dist/src/commands/scripts.js.map +1 -0
- package/dist/src/commands/secrets.d.ts +2 -0
- package/dist/src/commands/secrets.js +109 -0
- package/dist/src/commands/secrets.js.map +1 -0
- package/dist/src/commands/sessions.d.ts +2 -0
- package/dist/src/commands/sessions.js +76 -0
- package/dist/src/commands/sessions.js.map +1 -0
- package/dist/src/commands/skill.d.ts +2 -0
- package/dist/src/commands/skill.js +29 -0
- package/dist/src/commands/skill.js.map +1 -0
- package/dist/src/commands/sync-app-settings.d.ts +158 -0
- package/dist/src/commands/sync-app-settings.js +328 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +2670 -0
- package/dist/src/commands/sync.js +17144 -834
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.d.ts +2 -0
- package/dist/src/commands/tokens.js +132 -22
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.d.ts +2 -0
- package/dist/src/commands/users.js +542 -24
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +97 -0
- package/dist/src/commands/vars.js.map +1 -0
- package/dist/src/commands/waitlist.d.ts +2 -0
- package/dist/src/commands/waitlist.js +12 -11
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.d.ts +31 -0
- package/dist/src/commands/webhooks.js +633 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/commands/workflows.d.ts +88 -0
- package/dist/src/commands/workflows.js +1568 -742
- 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 +2550 -0
- package/dist/src/lib/api-client.js +2503 -160
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
- package/dist/src/lib/app-settings-descriptor.js +583 -0
- package/dist/src/lib/app-settings-descriptor.js.map +1 -0
- package/dist/src/lib/auth-flow.d.ts +8 -0
- package/dist/src/lib/batch.d.ts +26 -0
- package/dist/src/lib/batch.js +32 -0
- package/dist/src/lib/batch.js.map +1 -0
- package/dist/src/lib/block-layout.d.ts +160 -0
- package/dist/src/lib/block-layout.js +451 -0
- package/dist/src/lib/block-layout.js.map +1 -0
- package/dist/src/lib/block-selector.d.ts +58 -0
- package/dist/src/lib/block-selector.js +92 -0
- package/dist/src/lib/block-selector.js.map +1 -0
- 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/channel.d.ts +30 -0
- package/dist/src/lib/channel.js +68 -0
- package/dist/src/lib/channel.js.map +1 -0
- package/dist/src/lib/cli-manifest.d.ts +68 -0
- package/dist/src/lib/cli-manifest.js +71 -0
- package/dist/src/lib/cli-manifest.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
- package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
- package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
- package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- package/dist/src/lib/collection-export.d.ts +184 -0
- package/dist/src/lib/collection-export.js +252 -0
- package/dist/src/lib/collection-export.js.map +1 -0
- package/dist/src/lib/config-json-field.d.ts +28 -0
- package/dist/src/lib/config-json-field.js +56 -0
- package/dist/src/lib/config-json-field.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.d.ts +127 -0
- package/dist/src/lib/config-object-descriptor.js +740 -0
- package/dist/src/lib/config-object-descriptor.js.map +1 -0
- package/dist/src/lib/config-payload.d.ts +92 -0
- package/dist/src/lib/config-payload.js +161 -0
- package/dist/src/lib/config-payload.js.map +1 -0
- package/dist/src/lib/config-surface.d.ts +141 -0
- package/dist/src/lib/config-surface.js +368 -0
- package/dist/src/lib/config-surface.js.map +1 -0
- package/dist/src/lib/config-toml.d.ts +10 -0
- package/dist/src/lib/config-toml.js +42 -0
- package/dist/src/lib/config-toml.js.map +1 -0
- package/dist/src/lib/config.d.ts +71 -0
- package/dist/src/lib/config.js +71 -68
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/confirm-prompt.d.ts +83 -0
- package/dist/src/lib/confirm-prompt.js +110 -0
- package/dist/src/lib/confirm-prompt.js.map +1 -0
- package/dist/src/lib/constants.d.ts +11 -0
- package/dist/src/lib/constants.js +12 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/crash-handlers.d.ts +20 -0
- package/dist/src/lib/crash-handlers.js +49 -0
- package/dist/src/lib/crash-handlers.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +104 -0
- package/dist/src/lib/credentials-store.js +336 -0
- package/dist/src/lib/credentials-store.js.map +1 -0
- package/dist/src/lib/csv.d.ts +47 -0
- package/dist/src/lib/csv.js +172 -0
- package/dist/src/lib/csv.js.map +1 -0
- 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/dbFingerprint.d.ts +10 -0
- package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
- package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
- package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
- package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
- package/dist/src/lib/db-codegen/dbNaming.js +180 -0
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
- package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
- package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js +525 -0
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
- package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
- package/dist/src/lib/deprecation.d.ts +22 -0
- package/dist/src/lib/deprecation.js +43 -0
- package/dist/src/lib/deprecation.js.map +1 -0
- package/dist/src/lib/document-export-permissions.d.ts +30 -0
- package/dist/src/lib/document-export-permissions.js +54 -0
- package/dist/src/lib/document-export-permissions.js.map +1 -0
- package/dist/src/lib/document-ingest-artifact.d.ts +120 -0
- package/dist/src/lib/document-ingest-artifact.js +505 -0
- package/dist/src/lib/document-ingest-artifact.js.map +1 -0
- package/dist/src/lib/document-ingest-input.d.ts +51 -0
- package/dist/src/lib/document-ingest-input.js +132 -0
- package/dist/src/lib/document-ingest-input.js.map +1 -0
- package/dist/src/lib/document-ingest-rows.d.ts +137 -0
- package/dist/src/lib/document-ingest-rows.js +181 -0
- package/dist/src/lib/document-ingest-rows.js.map +1 -0
- package/dist/src/lib/document-ingest.d.ts +101 -0
- package/dist/src/lib/document-ingest.js +384 -0
- package/dist/src/lib/document-ingest.js.map +1 -0
- package/dist/src/lib/env-resolver-core.d.ts +258 -0
- package/dist/src/lib/env-resolver-core.js +447 -0
- package/dist/src/lib/env-resolver-core.js.map +1 -0
- package/dist/src/lib/env-resolver.d.ts +99 -0
- package/dist/src/lib/env-resolver.js +153 -0
- package/dist/src/lib/env-resolver.js.map +1 -0
- package/dist/src/lib/fetch.d.ts +5 -0
- package/dist/src/lib/function-bundle.d.ts +147 -0
- package/dist/src/lib/function-bundle.js +341 -0
- package/dist/src/lib/function-bundle.js.map +1 -0
- package/dist/src/lib/function-collect.d.ts +123 -0
- package/dist/src/lib/function-collect.js +610 -0
- package/dist/src/lib/function-collect.js.map +1 -0
- package/dist/src/lib/function-db-types.d.ts +202 -0
- package/dist/src/lib/function-db-types.js +870 -0
- package/dist/src/lib/function-db-types.js.map +1 -0
- package/dist/src/lib/function-document-types.d.ts +144 -0
- package/dist/src/lib/function-document-types.js +370 -0
- package/dist/src/lib/function-document-types.js.map +1 -0
- package/dist/src/lib/function-grants-preflight.d.ts +64 -0
- package/dist/src/lib/function-grants-preflight.js +105 -0
- package/dist/src/lib/function-grants-preflight.js.map +1 -0
- package/dist/src/lib/function-log-lines.d.ts +76 -0
- package/dist/src/lib/function-log-lines.js +160 -0
- package/dist/src/lib/function-log-lines.js.map +1 -0
- package/dist/src/lib/function-log-row.d.ts +29 -0
- package/dist/src/lib/function-log-row.js +73 -0
- package/dist/src/lib/function-log-row.js.map +1 -0
- package/dist/src/lib/function-log-tail.d.ts +132 -0
- package/dist/src/lib/function-log-tail.js +262 -0
- package/dist/src/lib/function-log-tail.js.map +1 -0
- package/dist/src/lib/function-run.d.ts +289 -0
- package/dist/src/lib/function-run.js +389 -0
- package/dist/src/lib/function-run.js.map +1 -0
- package/dist/src/lib/function-schema-codegen.d.ts +143 -0
- package/dist/src/lib/function-schema-codegen.js +420 -0
- package/dist/src/lib/function-schema-codegen.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +459 -0
- package/dist/src/lib/function-sync.js +1258 -0
- package/dist/src/lib/function-sync.js.map +1 -0
- package/dist/src/lib/function-trigger-listing.d.ts +27 -0
- package/dist/src/lib/function-trigger-listing.js +70 -0
- package/dist/src/lib/function-trigger-listing.js.map +1 -0
- package/dist/src/lib/function-typecheck.d.ts +86 -0
- package/dist/src/lib/function-typecheck.js +370 -0
- package/dist/src/lib/function-typecheck.js.map +1 -0
- package/dist/src/lib/function-versions.d.ts +122 -0
- package/dist/src/lib/function-versions.js +182 -0
- package/dist/src/lib/function-versions.js.map +1 -0
- package/dist/src/lib/generated-allowlist.d.ts +28 -0
- package/dist/src/lib/generated-allowlist.js +281 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -0
- package/dist/src/lib/generated-config-surfaces.d.ts +2936 -0
- package/dist/src/lib/generated-config-surfaces.js +10569 -0
- package/dist/src/lib/generated-config-surfaces.js.map +1 -0
- package/dist/src/lib/generated-sdk-types.d.ts +12 -0
- package/dist/src/lib/generated-sdk-types.js +13 -0
- package/dist/src/lib/generated-sdk-types.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-client-platforms.d.ts +14 -0
- package/dist/src/lib/init-client-platforms.js +71 -0
- package/dist/src/lib/init-client-platforms.js.map +1 -0
- package/dist/src/lib/init-config.d.ts +98 -0
- package/dist/src/lib/init-config.js +186 -0
- package/dist/src/lib/init-config.js.map +1 -0
- package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
- package/dist/src/lib/init-email-redirect-uris.js +46 -0
- package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
- package/dist/src/lib/init-ios-links.d.ts +91 -0
- package/dist/src/lib/init-ios-links.js +219 -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 +34 -0
- package/dist/src/lib/init-xcode.js +138 -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/integration-selector.d.ts +42 -0
- package/dist/src/lib/integration-selector.js +46 -0
- package/dist/src/lib/integration-selector.js.map +1 -0
- package/dist/src/lib/ios-app-id.d.ts +34 -0
- package/dist/src/lib/ios-app-id.js +69 -0
- package/dist/src/lib/ios-app-id.js.map +1 -0
- package/dist/src/lib/list-options.d.ts +68 -0
- package/dist/src/lib/list-options.js +89 -0
- package/dist/src/lib/list-options.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/local-test-cases.d.ts +63 -0
- package/dist/src/lib/local-test-cases.js +136 -0
- package/dist/src/lib/local-test-cases.js.map +1 -0
- package/dist/src/lib/log-inspection.d.ts +715 -0
- package/dist/src/lib/log-inspection.js +816 -0
- package/dist/src/lib/log-inspection.js.map +1 -0
- package/dist/src/lib/logout-admin-session.d.ts +33 -0
- package/dist/src/lib/logout-admin-session.js +70 -0
- package/dist/src/lib/logout-admin-session.js.map +1 -0
- package/dist/src/lib/migration-nag.d.ts +49 -0
- package/dist/src/lib/migration-nag.js +163 -0
- package/dist/src/lib/migration-nag.js.map +1 -0
- 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 +124 -0
- package/dist/src/lib/output.js +219 -8
- 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 +98 -0
- package/dist/src/lib/paginate.js +112 -0
- package/dist/src/lib/paginate.js.map +1 -0
- package/dist/src/lib/platform-owned.d.ts +63 -0
- package/dist/src/lib/platform-owned.js +85 -0
- package/dist/src/lib/platform-owned.js.map +1 -0
- package/dist/src/lib/project-config.d.ts +122 -0
- package/dist/src/lib/project-config.js +244 -0
- package/dist/src/lib/project-config.js.map +1 -0
- package/dist/src/lib/prompt-cost-format.d.ts +11 -0
- package/dist/src/lib/prompt-cost-format.js +41 -0
- package/dist/src/lib/prompt-cost-format.js.map +1 -0
- package/dist/src/lib/prompt-schema-codegen.d.ts +147 -0
- package/dist/src/lib/prompt-schema-codegen.js +462 -0
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -0
- package/dist/src/lib/query-operators.d.ts +43 -0
- package/dist/src/lib/query-operators.js +80 -0
- package/dist/src/lib/query-operators.js.map +1 -0
- 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/refresh-admin-credentials.d.ts +73 -0
- package/dist/src/lib/refresh-admin-credentials.js +123 -0
- package/dist/src/lib/refresh-admin-credentials.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-owner.d.ts +19 -0
- package/dist/src/lib/resolve-owner.js +20 -0
- package/dist/src/lib/resolve-owner.js.map +1 -0
- package/dist/src/lib/resolve-platform.d.ts +74 -0
- package/dist/src/lib/resolve-platform.js +105 -0
- package/dist/src/lib/resolve-platform.js.map +1 -0
- 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 +71 -0
- package/dist/src/lib/skill-installer.js +441 -0
- package/dist/src/lib/skill-installer.js.map +1 -0
- package/dist/src/lib/snapshot-audit-source.d.ts +45 -0
- package/dist/src/lib/snapshot-audit-source.js +58 -0
- package/dist/src/lib/snapshot-audit-source.js.map +1 -0
- package/dist/src/lib/snapshot-audit-store.d.ts +52 -0
- package/dist/src/lib/snapshot-audit-store.js +196 -0
- package/dist/src/lib/snapshot-audit-store.js.map +1 -0
- package/dist/src/lib/snapshot-audit.d.ts +207 -0
- package/dist/src/lib/snapshot-audit.js +431 -0
- package/dist/src/lib/snapshot-audit.js.map +1 -0
- package/dist/src/lib/snapshot-build-rows.d.ts +60 -0
- package/dist/src/lib/snapshot-build-rows.js +87 -0
- package/dist/src/lib/snapshot-build-rows.js.map +1 -0
- package/dist/src/lib/snapshot-build.d.ts +50 -0
- package/dist/src/lib/snapshot-build.js +111 -0
- package/dist/src/lib/snapshot-build.js.map +1 -0
- package/dist/src/lib/snapshot-manifest-layout.d.ts +61 -0
- package/dist/src/lib/snapshot-manifest-layout.js +70 -0
- package/dist/src/lib/snapshot-manifest-layout.js.map +1 -0
- package/dist/src/lib/snapshots.d.ts +98 -0
- package/dist/src/lib/snapshots.js +294 -0
- package/dist/src/lib/snapshots.js.map +1 -0
- package/dist/src/lib/step-run-table.d.ts +43 -0
- package/dist/src/lib/step-run-table.js +129 -0
- package/dist/src/lib/step-run-table.js.map +1 -0
- package/dist/src/lib/storage-pending-retry.d.ts +26 -0
- package/dist/src/lib/storage-pending-retry.js +42 -0
- package/dist/src/lib/storage-pending-retry.js.map +1 -0
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/banners.d.ts +24 -0
- package/dist/src/lib/swift-codegen/banners.js +25 -0
- package/dist/src/lib/swift-codegen/banners.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +926 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
- package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
- package/dist/src/lib/swift-codegen/functionGenerator.d.ts +139 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js +462 -0
- package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -0
- package/dist/src/lib/swift-codegen/generator.d.ts +100 -0
- package/dist/src/lib/swift-codegen/generator.js +457 -0
- package/dist/src/lib/swift-codegen/generator.js.map +1 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +87 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js +661 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
- package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
- package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
- package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
- 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 +128 -0
- package/dist/src/lib/sync-paths.js +195 -0
- package/dist/src/lib/sync-paths.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +563 -0
- package/dist/src/lib/sync-resource-types.js +1073 -0
- package/dist/src/lib/sync-resource-types.js.map +1 -0
- package/dist/src/lib/sync-selectors.d.ts +138 -0
- package/dist/src/lib/sync-selectors.js +289 -0
- package/dist/src/lib/sync-selectors.js.map +1 -0
- package/dist/src/lib/template.d.ts +170 -0
- package/dist/src/lib/template.js +484 -68
- package/dist/src/lib/template.js.map +1 -1
- package/dist/src/lib/test-case-file-names.d.ts +40 -0
- package/dist/src/lib/test-case-file-names.js +91 -0
- package/dist/src/lib/test-case-file-names.js.map +1 -0
- 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 +29 -0
- package/dist/src/lib/test-case-variables.js +71 -0
- package/dist/src/lib/test-case-variables.js.map +1 -0
- package/dist/src/lib/token-inject.d.ts +56 -0
- package/dist/src/lib/token-inject.js +204 -0
- package/dist/src/lib/token-inject.js.map +1 -0
- package/dist/src/lib/toml-database-config.d.ts +123 -0
- package/dist/src/lib/toml-database-config.js +544 -0
- package/dist/src/lib/toml-database-config.js.map +1 -0
- package/dist/src/lib/toml-metadata-config.d.ts +151 -0
- package/dist/src/lib/toml-metadata-config.js +476 -0
- package/dist/src/lib/toml-metadata-config.js.map +1 -0
- package/dist/src/lib/toml-native-form.d.ts +46 -0
- package/dist/src/lib/toml-native-form.js +78 -0
- package/dist/src/lib/toml-native-form.js.map +1 -0
- package/dist/src/lib/toml-params-validator.d.ts +129 -0
- package/dist/src/lib/toml-params-validator.js +298 -0
- package/dist/src/lib/toml-params-validator.js.map +1 -0
- 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 +35 -0
- package/dist/src/lib/version-check.js +241 -0
- package/dist/src/lib/version-check.js.map +1 -0
- 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/web-url.d.ts +40 -0
- package/dist/src/lib/web-url.js +76 -0
- package/dist/src/lib/web-url.js.map +1 -0
- package/dist/src/lib/webhook-deliver.d.ts +209 -0
- package/dist/src/lib/webhook-deliver.js +519 -0
- package/dist/src/lib/webhook-deliver.js.map +1 -0
- package/dist/src/lib/workflow-apply.d.ts +110 -0
- package/dist/src/lib/workflow-apply.js +164 -0
- package/dist/src/lib/workflow-apply.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
- package/dist/src/lib/workflow-codegen/generator.js +361 -0
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
- package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
- package/dist/src/lib/workflow-codegen/naming.js +81 -0
- package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
- 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 +64 -0
- package/dist/src/lib/workflow-fragments.js +342 -0
- package/dist/src/lib/workflow-fragments.js.map +1 -0
- 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 +98 -0
- package/dist/src/lib/workflow-payload.js +178 -0
- package/dist/src/lib/workflow-payload.js.map +1 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +211 -0
- package/dist/src/lib/workflow-toml-validator.js +770 -0
- package/dist/src/lib/workflow-toml-validator.js.map +1 -0
- package/dist/src/lib/workflow-usage.d.ts +196 -0
- package/dist/src/lib/workflow-usage.js +310 -0
- package/dist/src/lib/workflow-usage.js.map +1 -0
- package/dist/src/types/index.d.ts +591 -0
- package/dist/src/validators.d.ts +65 -0
- package/dist/src/validators.js +64 -0
- package/dist/src/validators.js.map +1 -0
- package/package.json +34 -9
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared layout metadata for the per-entity resource types `config pull` writes
|
|
3
|
+
* into a sync slot (issue #1659).
|
|
4
|
+
*
|
|
5
|
+
* `config pull` writes one file per server entity and records what it wrote in
|
|
6
|
+
* `.sync-state.json` (`SyncState.entities[<slot>]`). Until #1659 it never
|
|
7
|
+
* removed a local file whose entity had disappeared server-side, so the next
|
|
8
|
+
* `config push` — which treats local TOML as the source of truth — silently
|
|
9
|
+
* re-created the just-deleted entity.
|
|
10
|
+
*
|
|
11
|
+
* This module holds the narrow descriptor the prune pass and `config diff` share:
|
|
12
|
+
* directory, extension, state slot, key→filename derivation, and the sidecar
|
|
13
|
+
* test-directory block type. The pull write loops deliberately stay as they are
|
|
14
|
+
* — this table is layout metadata, not a write framework.
|
|
15
|
+
*/
|
|
16
|
+
import type { SyncState } from "../types/index.js";
|
|
17
|
+
import type { ApiClient } from "./api-client.js";
|
|
18
|
+
export type SyncEntitySlot = keyof SyncState["entities"];
|
|
19
|
+
/**
|
|
20
|
+
* A block whose test cases round-trip as a `<key>.tests/` sidecar. Integrations
|
|
21
|
+
* joined the other three in #2769 — their cases used to live server-side only,
|
|
22
|
+
* which made them the one configuration surface with no file to review.
|
|
23
|
+
*/
|
|
24
|
+
export type TestBlockType = "prompt" | "workflow" | "script" | "integration";
|
|
25
|
+
export interface SyncResourceType {
|
|
26
|
+
/** Singular name used in pull/diff output, e.g. `"rule-set"`. */
|
|
27
|
+
label: string;
|
|
28
|
+
/** Directory under the sync slot holding this type's files. */
|
|
29
|
+
dir: string;
|
|
30
|
+
/** Extension of this type's files. */
|
|
31
|
+
ext: ".toml" | ".rhai";
|
|
32
|
+
/** Slot in `SyncState.entities` recording what a prior pull managed. */
|
|
33
|
+
stateSlot: SyncEntitySlot;
|
|
34
|
+
/**
|
|
35
|
+
* Entity key → the file basename `config pull` writes for it. This must match
|
|
36
|
+
* the write side exactly, so prune only ever targets a file pull created.
|
|
37
|
+
*/
|
|
38
|
+
fileFromKey(key: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Block type for the sidecar `<key>.tests/` directory, when the type has one.
|
|
41
|
+
* Pruning an entity also removes its test directory and the matching
|
|
42
|
+
* `entities.testCases` records.
|
|
43
|
+
*/
|
|
44
|
+
testBlockType?: TestBlockType;
|
|
45
|
+
/**
|
|
46
|
+
* Directory holding the entity's named configuration bodies, when the type
|
|
47
|
+
* has them (#2645: `workflows/<key>.configs/`). Pruning the entity removes it
|
|
48
|
+
* for the same reason it removes `<key>.tests/` — the configs belonged to a
|
|
49
|
+
* block that is gone, and a surviving directory would re-create them on the
|
|
50
|
+
* next push.
|
|
51
|
+
*/
|
|
52
|
+
namedConfigsDirFromKey?(key: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Whether this type's server listing returns *every* key, so "absent from the
|
|
55
|
+
* listing" really means "gone from the server".
|
|
56
|
+
*
|
|
57
|
+
* Prune deletes files, so a successful fetch is not enough — the response also
|
|
58
|
+
* has to be complete. Two shapes make a listing complete: the cursor-paginating
|
|
59
|
+
* admin endpoints (integrations/webhooks/prompts/workflows — server returns
|
|
60
|
+
* `nextCursor` and `config pull` drains it with `fetchAll`), and the config
|
|
61
|
+
* listings that drain every DynamoDB page server-side via `queryAllPages`
|
|
62
|
+
* (#1668). Before #1668 the config listings returned a single 100-row page with
|
|
63
|
+
* a 200 and no cursor, so an app past the page boundary got a silently
|
|
64
|
+
* truncated list and prune would have removed files of still-live entities;
|
|
65
|
+
* those types were held at `false`. The server now drains them, so all shipping
|
|
66
|
+
* types are complete.
|
|
67
|
+
*
|
|
68
|
+
* Version-skew assumption (accepted risk): setting a config type `true` assumes
|
|
69
|
+
* the target server carries #1668's drain. The CLI can target an independently
|
|
70
|
+
* versioned environment, so a new CLI against a pre-#1668 server still gets a
|
|
71
|
+
* silently 100-row-truncated listing and prune would delete local files for
|
|
72
|
+
* still-live entities past the page boundary. This is accepted per the sponsor
|
|
73
|
+
* ruling on PR #1689 / issue #1668 rather than gated on a server capability or
|
|
74
|
+
* version marker: the CLI npm publish is coupled to the production deploy (so
|
|
75
|
+
* new-CLI-vs-old-server is a narrow window), the worst case is git-recoverable
|
|
76
|
+
* local file deletion touching nothing server-side, and it only affects apps
|
|
77
|
+
* with >100 entities of one config type — whose `config pull` was already
|
|
78
|
+
* silently incomplete before this change.
|
|
79
|
+
*
|
|
80
|
+
* The flag remains as a guard: a future type whose listing is not yet complete
|
|
81
|
+
* ships `false` and prune skips it (`listing-incomplete`) until its server side
|
|
82
|
+
* drains.
|
|
83
|
+
*/
|
|
84
|
+
listingComplete: boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Rule sets are keyed on disk (and in sync state) by their name with
|
|
88
|
+
* filesystem-hostile characters replaced. Shared by the pull write loop and the
|
|
89
|
+
* prune pass so the two can never derive a different key for the same rule set.
|
|
90
|
+
*/
|
|
91
|
+
export declare function ruleSetFileKey(ruleSet: {
|
|
92
|
+
name?: string;
|
|
93
|
+
ruleSetId?: string;
|
|
94
|
+
}): string;
|
|
95
|
+
/**
|
|
96
|
+
* Every per-entity resource type in a sync slot. `app.toml` and `vars.toml` are
|
|
97
|
+
* root singletons, not per-entity directories, so they are not listed here —
|
|
98
|
+
* var removal is already handled within-file by `config push` (`planVarsPush`).
|
|
99
|
+
*/
|
|
100
|
+
export declare const SYNC_RESOURCE_TYPES: SyncResourceType[];
|
|
101
|
+
/**
|
|
102
|
+
* Outcome of a server fetch that establishes which entities of a type exist.
|
|
103
|
+
*
|
|
104
|
+
* `config pull` historically swallowed several list errors with `.catch(() => [])`,
|
|
105
|
+
* which makes a transient 401/500/network error indistinguishable from "the app
|
|
106
|
+
* has none of these". Pruning off that empty list would delete every local file
|
|
107
|
+
* of the type, so prune consumes this explicit outcome instead.
|
|
108
|
+
*/
|
|
109
|
+
export type PresenceOutcome = {
|
|
110
|
+
ok: true;
|
|
111
|
+
serverKeys: string[];
|
|
112
|
+
} | {
|
|
113
|
+
ok: false;
|
|
114
|
+
};
|
|
115
|
+
/** Generic try/catch wrapper for a server fetch, in the ok/error shape. */
|
|
116
|
+
export declare function attemptFetch<T>(fn: () => Promise<T>): Promise<{
|
|
117
|
+
ok: true;
|
|
118
|
+
value: T;
|
|
119
|
+
} | {
|
|
120
|
+
ok: false;
|
|
121
|
+
error: any;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* A filename must stay inside its type's directory. State is read from a file
|
|
125
|
+
* on disk, so a corrupt or hand-edited `.sync-state.json` must never be
|
|
126
|
+
* able to steer an `unlinkSync` outside the sync slot.
|
|
127
|
+
*/
|
|
128
|
+
export declare function isSafeSyncFilename(filename: string): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Whether a test-case attachment filename may be written to (or read from) the
|
|
131
|
+
* sidecar attachment directory (#2769).
|
|
132
|
+
*
|
|
133
|
+
* Attachment names come from the SERVER: pull writes each one into
|
|
134
|
+
* `<key>.tests/<slug>/`, so a stored name carrying a separator or a `..`
|
|
135
|
+
* segment would place a file outside the sync tree entirely. The rule is the
|
|
136
|
+
* same one state-derived filenames follow, plus a refusal of any leading-dot
|
|
137
|
+
* traversal spelling.
|
|
138
|
+
*/
|
|
139
|
+
export declare function isSafeAttachmentFilename(filename: string): boolean;
|
|
140
|
+
/**
|
|
141
|
+
* The absolute path an attachment may be written to, or `null` when the name is
|
|
142
|
+
* unsafe or resolves outside `attachDir` (#2769). Both halves matter: the name
|
|
143
|
+
* check states the rule, and the resolved-path check enforces it against
|
|
144
|
+
* platform quirks the name check cannot anticipate.
|
|
145
|
+
*/
|
|
146
|
+
export declare function attachmentWritePath(attachDir: string, filename: string): string | null;
|
|
147
|
+
export interface PrunePlan {
|
|
148
|
+
/** Entity keys whose managed file should be removed. */
|
|
149
|
+
keys: string[];
|
|
150
|
+
/** True when no prune runs for this type at all. */
|
|
151
|
+
skipped: boolean;
|
|
152
|
+
/** Why prune was skipped, for the operator-facing warning. */
|
|
153
|
+
skipReason?: "disabled" | "fetch-failed" | "listing-incomplete";
|
|
154
|
+
/**
|
|
155
|
+
* Managed keys whose derived filename is unsafe. Never removed — reported so
|
|
156
|
+
* a corrupt sync state is visible rather than silent.
|
|
157
|
+
*/
|
|
158
|
+
unsafeKeys: string[];
|
|
159
|
+
/**
|
|
160
|
+
* Managed keys absent from the server listing that this plan is NOT pruning
|
|
161
|
+
* (`--no-prune`, or a listing that may be truncated). Their files stay on
|
|
162
|
+
* disk, so the caller must keep their prior state entry — otherwise the key
|
|
163
|
+
* drops out of `entities[<slot>]` and the file silently stops being managed.
|
|
164
|
+
* Empty when presence could not be established at all.
|
|
165
|
+
*/
|
|
166
|
+
unprunedAbsentKeys: string[];
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Decide which of a type's managed entity keys should have their local file
|
|
170
|
+
* removed, given the prior sync state and the outcome of this pull's fetch.
|
|
171
|
+
*
|
|
172
|
+
* A key is pruned iff it was **managed** (present in the prior
|
|
173
|
+
* `SyncState.entities[<slot>]`, so a previous pull wrote its file) and is
|
|
174
|
+
* **absent from the server keys** this pull fetched. A local file that was
|
|
175
|
+
* never in prior state was hand-authored — it is left alone and reported by
|
|
176
|
+
* `config diff` as new.
|
|
177
|
+
*
|
|
178
|
+
* Pure and side-effect-free (the caller owns the `unlinkSync`) so the safety
|
|
179
|
+
* rules are unit-testable without a live server.
|
|
180
|
+
*/
|
|
181
|
+
export declare function planPrune(input: {
|
|
182
|
+
resourceType: SyncResourceType;
|
|
183
|
+
/** Keys from the prior `SyncState.entities[<slot>]`. */
|
|
184
|
+
priorKeys: string[];
|
|
185
|
+
/** Presence of this type's entities server-side, this pull. */
|
|
186
|
+
presence: PresenceOutcome;
|
|
187
|
+
/** False when the operator passed `--no-prune`. */
|
|
188
|
+
enabled: boolean;
|
|
189
|
+
}): PrunePlan;
|
|
190
|
+
/**
|
|
191
|
+
* Copy prior state entries for entities the server listed but this pull did not
|
|
192
|
+
* write (e.g. a script with no active config, or an email template whose detail
|
|
193
|
+
* fetch failed). Without this the entity would drop out of the state slot and
|
|
194
|
+
* look hand-authored to the next pull, so its stale file could never be pruned.
|
|
195
|
+
*/
|
|
196
|
+
export declare function preserveUnwrittenEntries<T>(written: Record<string, T>, prior: Record<string, T> | undefined, serverKeys: string[]): Record<string, T>;
|
|
197
|
+
/**
|
|
198
|
+
* Best-effort check for uncommitted git changes at `path` (a file or a
|
|
199
|
+
* directory). Returns false when git isn't available, the path isn't in a
|
|
200
|
+
* repository, or anything else goes wrong — the caller treats "unknown" as
|
|
201
|
+
* "no local edits", so this never blocks on a non-git checkout.
|
|
202
|
+
*
|
|
203
|
+
* `path` is passed as an argument, never interpolated into a shell string:
|
|
204
|
+
* on the prune path its basename derives from a server entity name, and entity
|
|
205
|
+
* names are free-form (a rule set may legitimately be named ``a`b`` or `a$b`).
|
|
206
|
+
* `execFileSync` runs git directly with no shell, so no name can be read as
|
|
207
|
+
* a command.
|
|
208
|
+
*
|
|
209
|
+
* `includeUntracked` decides whether an untracked file counts as a change:
|
|
210
|
+
* - `true` (default) suits "am I about to overwrite something?" — `config revert`
|
|
211
|
+
* would clobber an untracked file just the same.
|
|
212
|
+
* - `false` suits "did the operator edit this file?" — an untracked file is the
|
|
213
|
+
* ordinary state of a pulled file in a sync dir that was never committed, and
|
|
214
|
+
* is not evidence of a local edit.
|
|
215
|
+
*/
|
|
216
|
+
export declare function hasUncommittedChanges(path: string, options?: {
|
|
217
|
+
includeUntracked?: boolean;
|
|
218
|
+
}): Promise<boolean>;
|
|
219
|
+
/**
|
|
220
|
+
* The phrase pull and diff both use for an entity that is no longer exported.
|
|
221
|
+
*
|
|
222
|
+
* The plan of record asked for "archived or deleted" on the assumption that
|
|
223
|
+
* archiving drops an entity from the export. It does not: the list endpoints
|
|
224
|
+
* filter by status only when `?status=` is passed and pull never passes it
|
|
225
|
+
* (`listAppPrompts`/`listAppIntegrations` in `src/admin-api.ts`; `fetchAll` in
|
|
226
|
+
* `cli/src/commands/sync.ts`). An archived entity stays in the export and its
|
|
227
|
+
* TOML is rewritten with `status = "archived"`, so it is never pruned. The only
|
|
228
|
+
* way to be absent from the export is to have been deleted.
|
|
229
|
+
*/
|
|
230
|
+
export declare const ABSENT_FROM_EXPORT = "absent from sync export (deleted on server)";
|
|
231
|
+
/** `config diff` status for a local file whose managed entity is gone. */
|
|
232
|
+
export declare const LOCAL_ONLY_ABSENT = "local only (absent from export)";
|
|
233
|
+
/** `config diff` status for a local file the operator authored themselves. */
|
|
234
|
+
export declare const LOCAL_ONLY_NEW = "local only";
|
|
235
|
+
/**
|
|
236
|
+
* `config diff` status for a local file `config push` would refuse (#2880).
|
|
237
|
+
*
|
|
238
|
+
* Its own status rather than a hint on a Synced row: the whole point is that
|
|
239
|
+
* the file is NOT pushable, and the counts a caller reads to decide "is there
|
|
240
|
+
* anything to do?" have to say so.
|
|
241
|
+
*/
|
|
242
|
+
export declare const VALIDATION_ERROR = "validation error";
|
|
243
|
+
/**
|
|
244
|
+
* Classify a local file that has no matching server entity (issue #1659).
|
|
245
|
+
*
|
|
246
|
+
* The two cases look identical on disk but mean opposite things. A key a prior
|
|
247
|
+
* pull managed means the entity was deleted server-side and this stale file
|
|
248
|
+
* will RE-create it on the next push. A key never pulled means the operator
|
|
249
|
+
* authored the file and push creating it is the intent.
|
|
250
|
+
*/
|
|
251
|
+
export declare function classifyLocalOnly(priorEntities: SyncState["entities"] | undefined, slot: SyncEntitySlot, key: string): typeof LOCAL_ONLY_NEW | typeof LOCAL_ONLY_ABSENT;
|
|
252
|
+
export interface PruneResult {
|
|
253
|
+
/** Entity keys whose file was removed — what the "Pruned" count reports. */
|
|
254
|
+
prunedKeys: string[];
|
|
255
|
+
/** Slot-relative paths removed (files and sidecar test directories). */
|
|
256
|
+
removed: string[];
|
|
257
|
+
/** Keys left in place because the file carries uncommitted local edits. */
|
|
258
|
+
keptWithLocalEdits: string[];
|
|
259
|
+
/** `entities.testCases` state keys the pruned blocks owned. */
|
|
260
|
+
removedTestCaseKeys: string[];
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Remove the local files for `keys` (as decided by `planPrune`), along with any
|
|
264
|
+
* sidecar `<key>.tests/` directory.
|
|
265
|
+
*
|
|
266
|
+
* A file with uncommitted git edits is kept and reported instead: the operator
|
|
267
|
+
* may be mid-way through authoring a change they meant to push — and for an
|
|
268
|
+
* entity that owns source files beyond its TOML (#3179), an edit to any of them
|
|
269
|
+
* keeps the whole entity. Everything removed here is recoverable from the
|
|
270
|
+
* pre-pull snapshot via `config revert`.
|
|
271
|
+
*/
|
|
272
|
+
export declare function applyPrune(options: {
|
|
273
|
+
configDir: string;
|
|
274
|
+
resourceType: SyncResourceType;
|
|
275
|
+
keys: string[];
|
|
276
|
+
/** `entities.testCases` built by this pull; pruned blocks' records are dropped. */
|
|
277
|
+
testCaseEntities?: Record<string, {
|
|
278
|
+
blockType?: string;
|
|
279
|
+
blockKey?: string;
|
|
280
|
+
}>;
|
|
281
|
+
/**
|
|
282
|
+
* Further tree-relative files this entity owns, from the prior sync state
|
|
283
|
+
* (#3179). A server function is its `functions/<key>.toml` PLUS the
|
|
284
|
+
* TypeScript its `entry` reaches, which lives at paths only the state knows —
|
|
285
|
+
* so removing the file alone would leave orphaned code that the next push
|
|
286
|
+
* would try to capture again. Returned paths are confined to the config tree;
|
|
287
|
+
* anything else is ignored rather than followed.
|
|
288
|
+
*/
|
|
289
|
+
extraFilesForKey?: (key: string) => string[];
|
|
290
|
+
/**
|
|
291
|
+
* Tree-relative paths that SURVIVE this prune because another entity still
|
|
292
|
+
* owns them (#3179). Two functions may import the same module, and the
|
|
293
|
+
* pulled sources of both list it; deleting it with one would leave the other
|
|
294
|
+
* unbuildable while its sync state still called it current. A shared path is
|
|
295
|
+
* left alone and reported.
|
|
296
|
+
*/
|
|
297
|
+
retainedFiles?: Set<string>;
|
|
298
|
+
logger?: (msg: string) => void;
|
|
299
|
+
}): Promise<PruneResult>;
|
|
300
|
+
/** Address a prior-state entry for detail-fetch and delete. */
|
|
301
|
+
export type PruneAddressOf = (key: string, entry: any) => string | undefined;
|
|
302
|
+
/** Read `id` from an id-addressed slot's state entry. */
|
|
303
|
+
export declare const addressById: PruneAddressOf;
|
|
304
|
+
/** Key-addressed slots are addressed by the state key itself. */
|
|
305
|
+
export declare const addressByKey: PruneAddressOf;
|
|
306
|
+
/**
|
|
307
|
+
* Live modified timestamp used by the drift check. Most admin/app detail
|
|
308
|
+
* endpoints serialize `modifiedAt` at the top level (the same field `config pull`
|
|
309
|
+
* records into state), with `updatedAt` as a defensive fallback. Two detail
|
|
310
|
+
* endpoints nest the entity under a wrapper key and need their own extractors
|
|
311
|
+
* below (`workflowPruneModifiedAt`, `emailTemplatePruneModifiedAt`) so the
|
|
312
|
+
* drift check reads the real timestamp instead of `undefined` — a top-level
|
|
313
|
+
* read there always looks like drift and blocks `--prune` without `--force`.
|
|
314
|
+
*/
|
|
315
|
+
export declare const pruneModifiedAt: (detail: any) => string | undefined;
|
|
316
|
+
/**
|
|
317
|
+
* Workflow detail-read extractor. `getWorkflow` (server `getAppWorkflow`,
|
|
318
|
+
* src/admin-api.ts) returns `{ workflow, draft, revisions, configs }` — the
|
|
319
|
+
* entity and its `modifiedAt` are nested under `workflow`, unlike every other
|
|
320
|
+
* detail endpoint. Read there, not the top level.
|
|
321
|
+
*/
|
|
322
|
+
export declare const workflowPruneModifiedAt: (detail: any) => string | undefined;
|
|
323
|
+
/**
|
|
324
|
+
* Email-template detail-read extractor. `getEmailTemplate` returns
|
|
325
|
+
* `{ emailType, label, hasOverride, override, default, variables }`; the
|
|
326
|
+
* editable copy `sync` manages — and its `modifiedAt` — live under `override`
|
|
327
|
+
* (null when there is no override). `config pull` likewise records
|
|
328
|
+
* `template.override?.modifiedAt`, so the drift check must read the same path.
|
|
329
|
+
*/
|
|
330
|
+
export declare const emailTemplatePruneModifiedAt: (detail: any) => string | undefined;
|
|
331
|
+
/**
|
|
332
|
+
* Split a metadata-category key into the `resourceType`/`category` pair it
|
|
333
|
+
* names, or `null` when it is not exactly two non-empty components joined by a
|
|
334
|
+
* single `#`.
|
|
335
|
+
*
|
|
336
|
+
* Load-bearing for prune (#2762). Prune point-reads a candidate BEFORE deciding
|
|
337
|
+
* what to do with it, and only a missing address short-circuits that fetch — so
|
|
338
|
+
* a corrupt state key that still produced an address would be read with
|
|
339
|
+
* `undefined` in the request path, and the resulting 404 would be classified
|
|
340
|
+
* "already gone", silently dropping the state entry. Failing here instead
|
|
341
|
+
* routes such a key to the `no-id` skip: no client call, state retained.
|
|
342
|
+
*/
|
|
343
|
+
export declare function parseMetadataCategoryKey(key: string): {
|
|
344
|
+
resourceType: string;
|
|
345
|
+
category: string;
|
|
346
|
+
} | null;
|
|
347
|
+
/**
|
|
348
|
+
* How to confirm and delete one resource type during push-prune. Narrow by
|
|
349
|
+
* design (state slot + address + detail-fetch + drift field + delete) rather
|
|
350
|
+
* than widening `SyncResourceType`, which is pull/diff layout metadata.
|
|
351
|
+
*/
|
|
352
|
+
export interface PushPruneSpec {
|
|
353
|
+
/** The layout descriptor (dir/ext/fileFromKey/stateSlot/label/testBlockType). */
|
|
354
|
+
resourceType: SyncResourceType;
|
|
355
|
+
/**
|
|
356
|
+
* Derive the entity key a local managed file declares — the SAME derivation
|
|
357
|
+
* the type's `config push` loop uses (`<in-file identity> || basename`). Prune
|
|
358
|
+
* collects the set of these across every file in the type's directory and
|
|
359
|
+
* treats a prior-state key as a candidate only when NO local file declares
|
|
360
|
+
* it. This must mirror push exactly: a file renamed but keeping its internal
|
|
361
|
+
* key is still updated by push, so it must NOT be seen as a delete (#1655).
|
|
362
|
+
*/
|
|
363
|
+
keyFromFile: (filePath: string) => string;
|
|
364
|
+
/** Address a prior-state entry for the point read and delete. */
|
|
365
|
+
addressOf: PruneAddressOf;
|
|
366
|
+
/** Point-read the live entity; rejects with `ApiError` status 404 when gone. */
|
|
367
|
+
fetchDetail: (client: ApiClient, appId: string, address: string) => Promise<any>;
|
|
368
|
+
/** Live `modifiedAt` for the drift check. */
|
|
369
|
+
modifiedAtOf: (detail: any) => string | undefined;
|
|
370
|
+
/**
|
|
371
|
+
* Delete the confirmed entity; rejects with `ConflictError` (409) when the
|
|
372
|
+
* entity is still referenced. `null` for a type with no delete surface, whose
|
|
373
|
+
* candidates are reported "no delete surface" rather than deleted — a
|
|
374
|
+
* fail-safe no shipped spec uses since #2762 wired the last one.
|
|
375
|
+
*/
|
|
376
|
+
deleteEntity: ((client: ApiClient, appId: string, address: string) => Promise<void>) | null;
|
|
377
|
+
/**
|
|
378
|
+
* A consequence of deleting this type the prune plan must state before the
|
|
379
|
+
* operator confirms — printed under the item's "will delete" line, in
|
|
380
|
+
* `--dry-run` too. Only metadata-category-configs carry one: their stored
|
|
381
|
+
* values survive the definition and become unreachable (#2762).
|
|
382
|
+
*/
|
|
383
|
+
deleteCaveat?: string;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Every resource type push-prune can retire. Id-addressed types (integrations,
|
|
387
|
+
* webhooks, cron-triggers, blob-buckets, prompts, workflows, transforms,
|
|
388
|
+
* rule-sets) fetch/delete by the stored id; key-addressed types (database-type-configs,
|
|
389
|
+
* group-type-configs, collection-type-configs, email-templates) by the key.
|
|
390
|
+
*
|
|
391
|
+
* `--force` (the CLI's existing "override baseline drift" flag) only relaxes the
|
|
392
|
+
* drift check — it deliberately does NOT pass a server-side force flag on the
|
|
393
|
+
* delete, so each type's existing 409 dangling-ref guard stays active and a
|
|
394
|
+
* still-referenced entity is reported "blocked", not force-deleted.
|
|
395
|
+
*/
|
|
396
|
+
export declare const PUSH_PRUNE_SPECS: PushPruneSpec[];
|
|
397
|
+
/**
|
|
398
|
+
* The set of entity keys the local managed files of a type declare — collected
|
|
399
|
+
* the way `config push` derives keys: parse every file in the type's directory
|
|
400
|
+
* and read its declared identity (`<in-file key> || basename`), NOT by assuming
|
|
401
|
+
* the file lives at its canonical `<key>.toml` path.
|
|
402
|
+
*
|
|
403
|
+
* This is the crux of the #1655 destructive-delete fix. `config push` accepts a
|
|
404
|
+
* managed file at a **noncanonical filename** (e.g. `prompts/custom.toml` with
|
|
405
|
+
* `prompt.key = "greeting"`) and still updates the `greeting` entity. Collecting
|
|
406
|
+
* declared keys — rather than checking whether `greeting.toml` exists — means a
|
|
407
|
+
* renamed-but-same-key file keeps its entity out of the prune set, so prune
|
|
408
|
+
* never deletes an entity push just updated.
|
|
409
|
+
*/
|
|
410
|
+
export declare function collectLocalDeclaredKeys(input: {
|
|
411
|
+
spec: PushPruneSpec;
|
|
412
|
+
configDir: string;
|
|
413
|
+
}): Set<string>;
|
|
414
|
+
/**
|
|
415
|
+
* A managed entity whose local declaration is gone — a candidate for
|
|
416
|
+
* server-side deletion. Pure and side-effect-free: computed from the prior sync
|
|
417
|
+
* state and the filesystem only (no server call), so it is immune to listing
|
|
418
|
+
* truncation.
|
|
419
|
+
*
|
|
420
|
+
* A key is a candidate iff it was in the prior state slot (a prior pull managed
|
|
421
|
+
* it) AND **no** local file in the type's directory declares that key (via
|
|
422
|
+
* {@link collectLocalDeclaredKeys}, mirroring how `config push` derives keys). A
|
|
423
|
+
* key still declared by some file — even one renamed away from the canonical
|
|
424
|
+
* `<key>.toml` path — is left alone, since `config push` would update it, not
|
|
425
|
+
* delete it (issue #1655). A file whose key was never in prior state was
|
|
426
|
+
* hand-authored and is left for `config push` to create; it is never a candidate.
|
|
427
|
+
*/
|
|
428
|
+
export declare function collectPushPruneCandidates(input: {
|
|
429
|
+
spec: PushPruneSpec;
|
|
430
|
+
configDir: string;
|
|
431
|
+
priorEntities: Record<string, any> | undefined;
|
|
432
|
+
}): Array<{
|
|
433
|
+
key: string;
|
|
434
|
+
entry: any;
|
|
435
|
+
}>;
|
|
436
|
+
/**
|
|
437
|
+
* Outcome of the point read that confirms (or denies) a candidate's presence.
|
|
438
|
+
* A flat shape (rather than a discriminated union) because the CLI compiles with
|
|
439
|
+
* `strict: false`, where union narrowing on `ok` does not hold: `detail` is set
|
|
440
|
+
* only when `ok`, `status` only on a failed fetch (`status === 404` ⇒ gone).
|
|
441
|
+
*/
|
|
442
|
+
export interface PushPruneFetch {
|
|
443
|
+
ok: boolean;
|
|
444
|
+
detail?: any;
|
|
445
|
+
status?: number;
|
|
446
|
+
}
|
|
447
|
+
export type PushPruneSkipReason =
|
|
448
|
+
/** State entry has no usable id/key (corrupt or partial state). */
|
|
449
|
+
"no-id"
|
|
450
|
+
/**
|
|
451
|
+
* The spec carries no delete surface. A fail-safe: since #2762 every shipped
|
|
452
|
+
* spec can delete, so this arm only fires for a type wired without one.
|
|
453
|
+
*/
|
|
454
|
+
| "unsupported"
|
|
455
|
+
/** Live `modifiedAt` differs from prior state — edited out-of-band. */
|
|
456
|
+
| "drift"
|
|
457
|
+
/** A non-404 fetch error — presence could not be confirmed. */
|
|
458
|
+
| "unconfirmed";
|
|
459
|
+
export type PushPruneDecision =
|
|
460
|
+
/** Confirmed present and unchanged (or `--force`): delete it. */
|
|
461
|
+
{
|
|
462
|
+
action: "delete";
|
|
463
|
+
address: string;
|
|
464
|
+
serverModifiedAt?: string;
|
|
465
|
+
}
|
|
466
|
+
/** 404: already gone server-side. Drop its stale state, do not delete. */
|
|
467
|
+
| {
|
|
468
|
+
action: "drop-state";
|
|
469
|
+
}
|
|
470
|
+
/** Leave the entity and its prior-state slot intact. */
|
|
471
|
+
| {
|
|
472
|
+
action: "skip";
|
|
473
|
+
reason: PushPruneSkipReason;
|
|
474
|
+
serverModifiedAt?: string;
|
|
475
|
+
};
|
|
476
|
+
/**
|
|
477
|
+
* Decide what to do with one prune candidate, given the point read's outcome.
|
|
478
|
+
* Pure so the safety rules are unit-testable without a live server.
|
|
479
|
+
*
|
|
480
|
+
* Fail-closed throughout: a candidate is deleted ONLY on a successful read whose
|
|
481
|
+
* live `modifiedAt` matches prior state (or under `--force`). A 404 means the
|
|
482
|
+
* work is already done (drop the stale state). Any other read failure, a missing
|
|
483
|
+
* address, or a type without a delete surface leaves everything untouched.
|
|
484
|
+
*/
|
|
485
|
+
export declare function decidePushPruneCandidate(input: {
|
|
486
|
+
spec: PushPruneSpec;
|
|
487
|
+
address: string | undefined;
|
|
488
|
+
priorModifiedAt: string | undefined;
|
|
489
|
+
fetch: PushPruneFetch;
|
|
490
|
+
force: boolean;
|
|
491
|
+
}): PushPruneDecision;
|
|
492
|
+
/**
|
|
493
|
+
* What a failed prune DELETE call means for the entity's sync-state slot.
|
|
494
|
+
*
|
|
495
|
+
* `raced-absent` — the entity was deleted out-of-band between the point read
|
|
496
|
+
* and this call. The desired state is met, so the delete counts as success and
|
|
497
|
+
* its stale slot goes; anything else keeps the slot so a re-run retries.
|
|
498
|
+
*/
|
|
499
|
+
export type PruneDeleteFailure = "raced-absent" | "blocked" | "failed";
|
|
500
|
+
/**
|
|
501
|
+
* Classify an error thrown by a prune delete — one arm for every type.
|
|
502
|
+
*
|
|
503
|
+
* Keyed on the status alone (`ConflictError` is an `ApiError` with 409), so no
|
|
504
|
+
* per-type carve-out can creep into the push command's delete loop and make the
|
|
505
|
+
* race recovery true for some types and not others (#2762).
|
|
506
|
+
*/
|
|
507
|
+
export declare function classifyPruneDeleteFailure(err: unknown): PruneDeleteFailure;
|
|
508
|
+
/** One line of the `config push --prune` plan, ready to color and print. */
|
|
509
|
+
export interface PrunePlanLine {
|
|
510
|
+
kind: "delete" | "absent" | "skip";
|
|
511
|
+
/** The status prefix the CLI colors: "will delete", "skipped — …". */
|
|
512
|
+
status: string;
|
|
513
|
+
/** The uncolored remainder: `<type>: <key>`. */
|
|
514
|
+
detail: string;
|
|
515
|
+
/** An extra line printed under this one — the type's `deleteCaveat`. */
|
|
516
|
+
note?: string;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Render the prune plan the operator reads before the batch confirmation.
|
|
520
|
+
*
|
|
521
|
+
* Pure, and here rather than in `sync.ts`, so what the plan states about a type
|
|
522
|
+
* is testable without a server — specifically that a type's `deleteCaveat`
|
|
523
|
+
* (metadata's orphaned values, which used to live in the retired verb's confirm
|
|
524
|
+
* prompt) appears under its delete lines and nowhere else. `config push` renders
|
|
525
|
+
* the plan ONCE, before the `--dry-run` branch, so both paths print the same
|
|
526
|
+
* lines (#2762).
|
|
527
|
+
*/
|
|
528
|
+
export declare function formatPrunePlan(items: Array<{
|
|
529
|
+
spec: PushPruneSpec;
|
|
530
|
+
key: string;
|
|
531
|
+
decision: PushPruneDecision;
|
|
532
|
+
}>): PrunePlanLine[];
|
|
533
|
+
/**
|
|
534
|
+
* Remove a pruned block's sidecar `<key>.tests/` directory and its
|
|
535
|
+
* `entities.testCases` state records. The main file is already gone (that is
|
|
536
|
+
* what made this a prune candidate), so `applyPrune` above — which bails when
|
|
537
|
+
* the main file is absent — does not clean the sidecar; this does.
|
|
538
|
+
*/
|
|
539
|
+
export declare function removePrunedSidecar(options: {
|
|
540
|
+
configDir: string;
|
|
541
|
+
resourceType: SyncResourceType;
|
|
542
|
+
key: string;
|
|
543
|
+
testCaseEntities?: Record<string, {
|
|
544
|
+
blockType?: string;
|
|
545
|
+
blockKey?: string;
|
|
546
|
+
}>;
|
|
547
|
+
logger?: (msg: string) => void;
|
|
548
|
+
}): {
|
|
549
|
+
removed: string[];
|
|
550
|
+
removedTestCaseKeys: string[];
|
|
551
|
+
};
|
|
552
|
+
/** `config diff` status for a managed remote entity whose local file is gone. */
|
|
553
|
+
export declare const REMOTE_ONLY_WILL_DELETE = "remote only (will delete with push --prune)";
|
|
554
|
+
/** `config diff` status for a server entity that was never synced (hand-created). */
|
|
555
|
+
export declare const REMOTE_ONLY_UNMANAGED = "remote only (left alone)";
|
|
556
|
+
/**
|
|
557
|
+
* Classify a "remote only" entity (present server-side, no local file) for
|
|
558
|
+
* `config diff` (issue #1655). A key the prior pull managed means the operator
|
|
559
|
+
* deleted its local file and `push --prune` will delete the remote entity; a key
|
|
560
|
+
* never synced was authored on the server and is left alone. Prior sync state is
|
|
561
|
+
* the discriminator, exactly as it is for the local-only / pull-prune split.
|
|
562
|
+
*/
|
|
563
|
+
export declare function classifyRemoteOnly(priorEntities: SyncState["entities"] | undefined, slot: SyncEntitySlot, key: string): typeof REMOTE_ONLY_WILL_DELETE | typeof REMOTE_ONLY_UNMANAGED;
|