primitive-admin 1.1.0-alpha.7 → 1.1.0-alpha.71
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 +404 -80
- package/assets/skill/skills/primitive-platform/SKILL.md +808 -0
- package/dist/bin/primitive.d.ts +2 -0
- package/dist/bin/primitive.js +294 -21
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/admins.d.ts +2 -0
- package/dist/src/commands/admins.js +138 -19
- package/dist/src/commands/admins.js.map +1 -1
- package/dist/src/commands/analytics.d.ts +2 -0
- package/dist/src/commands/analytics.js +544 -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 +51 -96
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth.d.ts +2 -0
- package/dist/src/commands/auth.js +177 -7
- 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 +330 -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 +37 -38
- 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 +92 -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 +565 -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 +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.d.ts +2 -0
- package/dist/src/commands/cron-triggers.js +265 -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 +171 -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 +2140 -112
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/documents.d.ts +2 -0
- package/dist/src/commands/documents.js +1357 -19
- 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 +174 -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 +333 -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 +116 -0
- package/dist/src/commands/feature-flags.js.map +1 -0
- package/dist/src/commands/group-type-configs.d.ts +2 -0
- package/dist/src/commands/group-type-configs.js +86 -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 +38 -99
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +223 -0
- package/dist/src/commands/guides.js +617 -65
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.d.ts +25 -0
- package/dist/src/commands/init.js +1605 -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 +380 -178
- 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 +160 -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 +112 -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 +281 -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 +225 -584
- 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 +272 -0
- package/dist/src/commands/rule-sets.js.map +1 -0
- package/dist/src/commands/scripts.d.ts +20 -0
- package/dist/src/commands/scripts.js +554 -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 +108 -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 +75 -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 +330 -0
- package/dist/src/commands/sync-app-settings.js.map +1 -0
- package/dist/src/commands/sync.d.ts +2323 -0
- package/dist/src/commands/sync.js +15065 -843
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.d.ts +2 -0
- package/dist/src/commands/tokens.js +130 -21
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.d.ts +2 -0
- package/dist/src/commands/users.js +532 -23
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +96 -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 +10 -10
- package/dist/src/commands/waitlist.js.map +1 -1
- package/dist/src/commands/webhooks.d.ts +2 -0
- package/dist/src/commands/webhooks.js +562 -0
- package/dist/src/commands/webhooks.js.map +1 -0
- package/dist/src/commands/workflows.d.ts +116 -0
- package/dist/src/commands/workflows.js +1583 -681
- 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 +1936 -0
- package/dist/src/lib/api-client.js +1826 -138
- 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 +575 -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/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 +68 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +168 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- 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/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 +53 -0
- package/dist/src/lib/config.js +92 -53
- 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 +89 -0
- package/dist/src/lib/credentials-store.js +330 -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 +517 -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/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 +84 -0
- package/dist/src/lib/env-resolver.js +133 -0
- package/dist/src/lib/env-resolver.js.map +1 -0
- package/dist/src/lib/fetch.d.ts +5 -0
- package/dist/src/lib/generated-allowlist.d.ts +28 -0
- package/dist/src/lib/generated-allowlist.js +277 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -0
- 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 +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-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 +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 +109 -0
- package/dist/src/lib/output.js +191 -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 +83 -0
- package/dist/src/lib/paginate.js +95 -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 +97 -0
- package/dist/src/lib/project-config.js +217 -0
- package/dist/src/lib/project-config.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 +65 -0
- package/dist/src/lib/refresh-admin-credentials.js +103 -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-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 +25 -0
- package/dist/src/lib/skill-installer.js +266 -0
- package/dist/src/lib/skill-installer.js.map +1 -0
- package/dist/src/lib/snapshots.d.ts +99 -0
- package/dist/src/lib/snapshots.js +357 -0
- package/dist/src/lib/snapshots.js.map +1 -0
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
- package/dist/src/lib/swift-codegen/dbGenerator.js +914 -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/generator.d.ts +94 -0
- package/dist/src/lib/swift-codegen/generator.js +440 -0
- package/dist/src/lib/swift-codegen/generator.js.map +1 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
- package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -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 +111 -0
- package/dist/src/lib/sync-paths.js +198 -0
- package/dist/src/lib/sync-paths.js.map +1 -0
- package/dist/src/lib/sync-resource-types.d.ts +544 -0
- package/dist/src/lib/sync-resource-types.js +975 -0
- package/dist/src/lib/sync-resource-types.js.map +1 -0
- 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 +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-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/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 +527 -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/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 +202 -0
- package/dist/src/lib/workflow-toml-validator.js +757 -0
- package/dist/src/lib/workflow-toml-validator.js.map +1 -0
- package/dist/src/types/index.d.ts +581 -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 +32 -8
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared poll-based tailing helpers for `--watch` / `--follow` (#1969).
|
|
3
|
+
*
|
|
4
|
+
* Two render modes over one abortable poll loop:
|
|
5
|
+
* - `--watch` → periodic full-snapshot redraw (a repeated `list`/`get`).
|
|
6
|
+
* - `--follow` → append-only tail: fetch rows after an opaque server-owned
|
|
7
|
+
* `resumeAfter` checkpoint each tick.
|
|
8
|
+
*
|
|
9
|
+
* The loop is endpoint-agnostic. `--follow` consumers supply a {@link FollowSource}
|
|
10
|
+
* that knows how to fetch the page after a checkpoint; `--watch` consumers supply
|
|
11
|
+
* a `snapshot()` and a renderer. The renderer is injected (there is no `json`
|
|
12
|
+
* flag in the options) so this file never decides output shape or clears the
|
|
13
|
+
* terminal — that is entirely the caller's renderer.
|
|
14
|
+
*
|
|
15
|
+
* `--follow` is near-lossless observed-version tailing: it re-emits a row when a
|
|
16
|
+
* newer version is observed, holds no per-item dedup state, and asserts only
|
|
17
|
+
* forward progress — never a total-order or exactly-once property (the
|
|
18
|
+
* underlying GSI sorts by `modifiedAt` alone and is eventually consistent). See
|
|
19
|
+
* the design in #1969.
|
|
20
|
+
*
|
|
21
|
+
* Unit-tested against fake sources (the `cli/src/lib/paginate.ts` pattern) with
|
|
22
|
+
* no server.
|
|
23
|
+
*/
|
|
24
|
+
/** Interval floor: reject anything below this (prevents a request storm). */
|
|
25
|
+
export declare const MIN_INTERVAL_SECONDS = 1;
|
|
26
|
+
/** Default poll interval when `--interval` is omitted. */
|
|
27
|
+
export declare const DEFAULT_INTERVAL_SECONDS = 2;
|
|
28
|
+
/**
|
|
29
|
+
* Default cap on how many pages `followLoop` drains within a single tick when a
|
|
30
|
+
* burst is larger than one page. Bounds the within-tick work and, with the
|
|
31
|
+
* non-advancing-checkpoint guard, prevents an infinite drain.
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_MAX_PAGES_PER_TICK = 20;
|
|
34
|
+
/**
|
|
35
|
+
* Validate an `--interval` value (in seconds). Returns the interval in seconds,
|
|
36
|
+
* or throws with a clear message for a missing/NaN/sub-floor value. Command
|
|
37
|
+
* handlers call this and surface the error; the library loops take a validated
|
|
38
|
+
* `intervalMs`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseIntervalSeconds(raw: string | undefined): number;
|
|
41
|
+
/**
|
|
42
|
+
* Sleep for `ms`, resolving early (never rejecting) if `signal` aborts. The
|
|
43
|
+
* timer and abort listener are always cleaned up, so a resolved delay leaves no
|
|
44
|
+
* dangling timer. Used by every poll loop so Ctrl-C stops promptly between
|
|
45
|
+
* ticks.
|
|
46
|
+
*/
|
|
47
|
+
export declare function delay(ms: number, signal?: AbortSignal): Promise<void>;
|
|
48
|
+
/** Error policy for the poll loops: keep polling, or throw out of the loop. */
|
|
49
|
+
export type PollErrorPolicy = "continue" | "throw";
|
|
50
|
+
export interface PollUntilOptions<T> {
|
|
51
|
+
/** Validated poll interval in milliseconds. */
|
|
52
|
+
intervalMs: number;
|
|
53
|
+
/** Abort signal (Ctrl-C at the command level). */
|
|
54
|
+
signal: AbortSignal;
|
|
55
|
+
/** What to do when `probe` throws. Default `"throw"`. */
|
|
56
|
+
onError?: PollErrorPolicy;
|
|
57
|
+
/** Called with each probed value (e.g. to report progress). */
|
|
58
|
+
onValue?: (value: T) => void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Delay-then-probe until `done(value)` is true or the signal aborts. Returns
|
|
62
|
+
* the last probed value. Delay-first (not probe-first) so a caller that already
|
|
63
|
+
* holds a fresh value — the batch-status loops — keeps its "poll every N
|
|
64
|
+
* seconds" cadence with no extra immediate request.
|
|
65
|
+
*/
|
|
66
|
+
export declare function pollUntil<T>(probe: () => Promise<T>, done: (value: T) => boolean, options: PollUntilOptions<T>): Promise<T>;
|
|
67
|
+
/** One page of follow results, carrying the opaque next checkpoint. */
|
|
68
|
+
export interface FollowPage<T> {
|
|
69
|
+
items: T[];
|
|
70
|
+
/** More rows remain past this page right now (drives the within-tick drain). */
|
|
71
|
+
hasMore: boolean;
|
|
72
|
+
/** Opaque server-owned checkpoint; always present, even on an empty page. */
|
|
73
|
+
resumeAfter: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A source of follow pages. `fetchAfter(undefined)` is the bootstrap poll — it
|
|
77
|
+
* establishes the baseline checkpoint and its items are NOT emitted (tail
|
|
78
|
+
* semantics: "show me what happens from now"). `fetchAfter(<token>)` returns the
|
|
79
|
+
* bounded page after that checkpoint.
|
|
80
|
+
*/
|
|
81
|
+
export interface FollowSource<T> {
|
|
82
|
+
fetchAfter: (resumeAfter: string | undefined) => Promise<FollowPage<T>>;
|
|
83
|
+
/**
|
|
84
|
+
* Max pages to drain within one tick when a burst exceeds one page. Defaults
|
|
85
|
+
* to {@link DEFAULT_MAX_PAGES_PER_TICK}. The drain also stops early if the
|
|
86
|
+
* checkpoint fails to advance (non-advancing-checkpoint guard).
|
|
87
|
+
*/
|
|
88
|
+
maxPagesPerTick?: number;
|
|
89
|
+
}
|
|
90
|
+
export interface FollowOptions<T> {
|
|
91
|
+
intervalMs: number;
|
|
92
|
+
signal: AbortSignal;
|
|
93
|
+
/** What to do when a poll throws. Default `"continue"` (keep tailing). */
|
|
94
|
+
onError?: PollErrorPolicy;
|
|
95
|
+
/** Render newly-observed rows (server-ascending; no client sort). */
|
|
96
|
+
render: (items: T[]) => void;
|
|
97
|
+
}
|
|
98
|
+
export interface WatchOptions<T> {
|
|
99
|
+
intervalMs: number;
|
|
100
|
+
signal: AbortSignal;
|
|
101
|
+
/** What to do when a poll throws. Default `"continue"`. */
|
|
102
|
+
onError?: PollErrorPolicy;
|
|
103
|
+
/**
|
|
104
|
+
* Render the full snapshot. The renderer owns any clearing/redraw — the loop
|
|
105
|
+
* never clears the terminal itself.
|
|
106
|
+
*/
|
|
107
|
+
render: (items: T[]) => void;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Append-only tail. Bootstraps the baseline checkpoint (emitting nothing), then
|
|
111
|
+
* each tick drains forward while `hasMore` (bounded by `maxPagesPerTick`,
|
|
112
|
+
* stopping if the checkpoint fails to advance), rendering rows server-ascending.
|
|
113
|
+
* Holds no per-item state — the only carried state is the single opaque
|
|
114
|
+
* `resumeAfter` string.
|
|
115
|
+
*/
|
|
116
|
+
export declare function followLoop<T>(source: FollowSource<T>, options: FollowOptions<T>): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Snapshot redraw. Each tick fetches the full current snapshot and hands it to
|
|
119
|
+
* the renderer, which owns any clearing/redraw. No checkpoint, no dedup.
|
|
120
|
+
*/
|
|
121
|
+
export declare function watchLoop<T>(snapshot: () => Promise<T[]>, options: WatchOptions<T>): Promise<void>;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared poll-based tailing helpers for `--watch` / `--follow` (#1969).
|
|
3
|
+
*
|
|
4
|
+
* Two render modes over one abortable poll loop:
|
|
5
|
+
* - `--watch` → periodic full-snapshot redraw (a repeated `list`/`get`).
|
|
6
|
+
* - `--follow` → append-only tail: fetch rows after an opaque server-owned
|
|
7
|
+
* `resumeAfter` checkpoint each tick.
|
|
8
|
+
*
|
|
9
|
+
* The loop is endpoint-agnostic. `--follow` consumers supply a {@link FollowSource}
|
|
10
|
+
* that knows how to fetch the page after a checkpoint; `--watch` consumers supply
|
|
11
|
+
* a `snapshot()` and a renderer. The renderer is injected (there is no `json`
|
|
12
|
+
* flag in the options) so this file never decides output shape or clears the
|
|
13
|
+
* terminal — that is entirely the caller's renderer.
|
|
14
|
+
*
|
|
15
|
+
* `--follow` is near-lossless observed-version tailing: it re-emits a row when a
|
|
16
|
+
* newer version is observed, holds no per-item dedup state, and asserts only
|
|
17
|
+
* forward progress — never a total-order or exactly-once property (the
|
|
18
|
+
* underlying GSI sorts by `modifiedAt` alone and is eventually consistent). See
|
|
19
|
+
* the design in #1969.
|
|
20
|
+
*
|
|
21
|
+
* Unit-tested against fake sources (the `cli/src/lib/paginate.ts` pattern) with
|
|
22
|
+
* no server.
|
|
23
|
+
*/
|
|
24
|
+
/** Interval floor: reject anything below this (prevents a request storm). */
|
|
25
|
+
export const MIN_INTERVAL_SECONDS = 1;
|
|
26
|
+
/** Default poll interval when `--interval` is omitted. */
|
|
27
|
+
export const DEFAULT_INTERVAL_SECONDS = 2;
|
|
28
|
+
/**
|
|
29
|
+
* Default cap on how many pages `followLoop` drains within a single tick when a
|
|
30
|
+
* burst is larger than one page. Bounds the within-tick work and, with the
|
|
31
|
+
* non-advancing-checkpoint guard, prevents an infinite drain.
|
|
32
|
+
*/
|
|
33
|
+
export const DEFAULT_MAX_PAGES_PER_TICK = 20;
|
|
34
|
+
/**
|
|
35
|
+
* Validate an `--interval` value (in seconds). Returns the interval in seconds,
|
|
36
|
+
* or throws with a clear message for a missing/NaN/sub-floor value. Command
|
|
37
|
+
* handlers call this and surface the error; the library loops take a validated
|
|
38
|
+
* `intervalMs`.
|
|
39
|
+
*/
|
|
40
|
+
export function parseIntervalSeconds(raw) {
|
|
41
|
+
if (raw === undefined)
|
|
42
|
+
return DEFAULT_INTERVAL_SECONDS;
|
|
43
|
+
const n = Number(raw);
|
|
44
|
+
if (!Number.isFinite(n) || n < MIN_INTERVAL_SECONDS) {
|
|
45
|
+
throw new Error(`--interval must be a number of seconds >= ${MIN_INTERVAL_SECONDS}`);
|
|
46
|
+
}
|
|
47
|
+
return n;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Sleep for `ms`, resolving early (never rejecting) if `signal` aborts. The
|
|
51
|
+
* timer and abort listener are always cleaned up, so a resolved delay leaves no
|
|
52
|
+
* dangling timer. Used by every poll loop so Ctrl-C stops promptly between
|
|
53
|
+
* ticks.
|
|
54
|
+
*/
|
|
55
|
+
export function delay(ms, signal) {
|
|
56
|
+
return new Promise((resolve) => {
|
|
57
|
+
if (signal?.aborted) {
|
|
58
|
+
resolve();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const timer = setTimeout(() => {
|
|
62
|
+
cleanup();
|
|
63
|
+
resolve();
|
|
64
|
+
}, ms);
|
|
65
|
+
const onAbort = () => {
|
|
66
|
+
clearTimeout(timer);
|
|
67
|
+
cleanup();
|
|
68
|
+
resolve();
|
|
69
|
+
};
|
|
70
|
+
const cleanup = () => signal?.removeEventListener("abort", onAbort);
|
|
71
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Delay-then-probe until `done(value)` is true or the signal aborts. Returns
|
|
76
|
+
* the last probed value. Delay-first (not probe-first) so a caller that already
|
|
77
|
+
* holds a fresh value — the batch-status loops — keeps its "poll every N
|
|
78
|
+
* seconds" cadence with no extra immediate request.
|
|
79
|
+
*/
|
|
80
|
+
export async function pollUntil(probe, done, options) {
|
|
81
|
+
const onError = options.onError ?? "throw";
|
|
82
|
+
let last;
|
|
83
|
+
let haveValue = false;
|
|
84
|
+
while (!options.signal.aborted) {
|
|
85
|
+
await delay(options.intervalMs, options.signal);
|
|
86
|
+
if (options.signal.aborted)
|
|
87
|
+
break;
|
|
88
|
+
try {
|
|
89
|
+
last = await probe();
|
|
90
|
+
haveValue = true;
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
if (onError === "continue")
|
|
94
|
+
continue;
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
options.onValue?.(last);
|
|
98
|
+
if (done(last))
|
|
99
|
+
return last;
|
|
100
|
+
}
|
|
101
|
+
// Aborted before `done`: return the last probed value (probe once if we never
|
|
102
|
+
// got one, so the return type holds).
|
|
103
|
+
if (!haveValue)
|
|
104
|
+
last = await probe();
|
|
105
|
+
return last;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Append-only tail. Bootstraps the baseline checkpoint (emitting nothing), then
|
|
109
|
+
* each tick drains forward while `hasMore` (bounded by `maxPagesPerTick`,
|
|
110
|
+
* stopping if the checkpoint fails to advance), rendering rows server-ascending.
|
|
111
|
+
* Holds no per-item state — the only carried state is the single opaque
|
|
112
|
+
* `resumeAfter` string.
|
|
113
|
+
*/
|
|
114
|
+
export async function followLoop(source, options) {
|
|
115
|
+
const onError = options.onError ?? "continue";
|
|
116
|
+
const maxPages = source.maxPagesPerTick ?? DEFAULT_MAX_PAGES_PER_TICK;
|
|
117
|
+
// Bootstrap: establish the baseline; do not emit its rows.
|
|
118
|
+
let resumeAfter;
|
|
119
|
+
try {
|
|
120
|
+
resumeAfter = (await source.fetchAfter(undefined)).resumeAfter;
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
if (onError !== "continue")
|
|
124
|
+
throw err;
|
|
125
|
+
resumeAfter = ""; // fall through to polling; the next tick retries
|
|
126
|
+
}
|
|
127
|
+
while (!options.signal.aborted) {
|
|
128
|
+
try {
|
|
129
|
+
let pages = 0;
|
|
130
|
+
while (pages < maxPages && !options.signal.aborted) {
|
|
131
|
+
const page = await source.fetchAfter(resumeAfter || undefined);
|
|
132
|
+
if (page.items.length > 0)
|
|
133
|
+
options.render(page.items);
|
|
134
|
+
const advanced = page.resumeAfter !== resumeAfter;
|
|
135
|
+
resumeAfter = page.resumeAfter;
|
|
136
|
+
pages++;
|
|
137
|
+
// Stop the within-tick drain when the burst is drained, or if the
|
|
138
|
+
// checkpoint didn't advance (guards against an endless drain).
|
|
139
|
+
if (!page.hasMore || !advanced)
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
if (onError !== "continue")
|
|
145
|
+
throw err;
|
|
146
|
+
// continue: swallow and retry next tick
|
|
147
|
+
}
|
|
148
|
+
await delay(options.intervalMs, options.signal);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Snapshot redraw. Each tick fetches the full current snapshot and hands it to
|
|
153
|
+
* the renderer, which owns any clearing/redraw. No checkpoint, no dedup.
|
|
154
|
+
*/
|
|
155
|
+
export async function watchLoop(snapshot, options) {
|
|
156
|
+
const onError = options.onError ?? "continue";
|
|
157
|
+
while (!options.signal.aborted) {
|
|
158
|
+
try {
|
|
159
|
+
const items = await snapshot();
|
|
160
|
+
options.render(items);
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
if (onError !== "continue")
|
|
164
|
+
throw err;
|
|
165
|
+
}
|
|
166
|
+
await delay(options.intervalMs, options.signal);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/lib/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared "apply a TOML body to an existing workflow" helper.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the `config push` update-existing path (#1249, Fork 4) so that
|
|
5
|
+
* both `config push` and `workflows update --from-file` push a revised body the
|
|
6
|
+
* same way. A second inlined copy would regress #807: the update is
|
|
7
|
+
* ordering-sensitive and a naive metadata-then-body sequence rejects valid
|
|
8
|
+
* sync-callable edits.
|
|
9
|
+
*
|
|
10
|
+
* Ordering invariant (#807 / codex review, revised by #2743). `syncCallable` is
|
|
11
|
+
* sequenced BY TARGET VALUE, because the two directions have opposite
|
|
12
|
+
* constraints:
|
|
13
|
+
* 1. metadata PATCH — carries `syncCallable: false` when the target is false
|
|
14
|
+
* (the TOML omits the key or sets it to `false`), and NOTHING when the
|
|
15
|
+
* target is true. Enabling here would be validated against the workflow's
|
|
16
|
+
* CURRENTLY-active server steps (`loadCurrentActiveSteps`,
|
|
17
|
+
* src/admin-api.ts), not the steps being pushed in the same call, so it
|
|
18
|
+
* would be rejected on the stale list. Disabling has no such check — the
|
|
19
|
+
* server re-validates steps only when flipping TO true — and it must
|
|
20
|
+
* happen here, because the step-write endpoints
|
|
21
|
+
* (`updateWorkflowDraft` / `updateWorkflowConfig`) reject
|
|
22
|
+
* sync-incompatible steps while the STORED flag is still true. Clearing
|
|
23
|
+
* the flag first is what lets a single push both drop `syncCallable` and
|
|
24
|
+
* introduce an incompatible step.
|
|
25
|
+
* 2. body write — steps to the active config (config-model) or the legacy
|
|
26
|
+
* draft slot (no active config).
|
|
27
|
+
* 3. a SECOND `syncCallable` PATCH, for ENABLING only — issued AFTER the new
|
|
28
|
+
* steps are active, so it validates against the new (compatible) steps.
|
|
29
|
+
* Skipped when the first PATCH's response already reports the flag on;
|
|
30
|
+
* sent unconditionally when that response is unreadable (fail closed
|
|
31
|
+
* toward convergence).
|
|
32
|
+
*
|
|
33
|
+
* #2743 also removed the "only send it when the TOML carries the key"
|
|
34
|
+
* no-clobber rule: the file fully describes the workflow, so deleting
|
|
35
|
+
* `syncCallable = true` from it disables the flag in one push.
|
|
36
|
+
*/
|
|
37
|
+
import type { ApiClient } from "./api-client.js";
|
|
38
|
+
import { safeJsonParse } from "./workflow-payload.js";
|
|
39
|
+
export { safeJsonParse };
|
|
40
|
+
export interface ApplyWorkflowBodyOptions {
|
|
41
|
+
/** Optimistic-concurrency guard for the metadata + syncCallable PATCHes. */
|
|
42
|
+
expectedModifiedAt?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Active config to overwrite in place (config-model workflows). When absent,
|
|
45
|
+
* the body falls back to the legacy draft slot — non-live for config-model
|
|
46
|
+
* workflows, which the server rejects with 409 WORKFLOW_CONFIG_MODEL.
|
|
47
|
+
*/
|
|
48
|
+
activeConfigId?: string;
|
|
49
|
+
/** When true, skip the optimistic-concurrency check (mirrors `--force`). */
|
|
50
|
+
force?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** The slot label a body gets when the workflow has no active config. */
|
|
53
|
+
export declare const LEGACY_DRAFT_SLOT_LABEL = "draft (legacy)";
|
|
54
|
+
/** What the push knows about the workflow once every write has landed. */
|
|
55
|
+
export interface LegacyDraftSlotState {
|
|
56
|
+
/** The workflow's active configuration once the push finished, if any. */
|
|
57
|
+
activeConfigId?: string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Whether THIS push activated that configuration — the TOML carried a
|
|
60
|
+
* sidecar plus `activeConfigName`, so the authored body is what runs now.
|
|
61
|
+
*/
|
|
62
|
+
activatedByPush?: boolean;
|
|
63
|
+
/** The workflow's latest legacy revision, when it has one. */
|
|
64
|
+
latestRevision?: string | null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The warning a push owes the user when its body landed in the legacy draft
|
|
68
|
+
* slot and is NOT what the workflow runs (#2768).
|
|
69
|
+
*
|
|
70
|
+
* `workflows publish`, the one thing that promoted that slot, is gone, so those
|
|
71
|
+
* steps sit there unread — a silent no-op otherwise, since the push reports
|
|
72
|
+
* success either way.
|
|
73
|
+
*
|
|
74
|
+
* Reading a workflow is not neutral, which is why this takes more than an
|
|
75
|
+
* active config id. `getAppWorkflow` (src/admin-api.ts) auto-migrates a
|
|
76
|
+
* workflow that has NO configurations: it copies the latest revision — or, only
|
|
77
|
+
* when there is none, the draft slot — into a configuration and activates it.
|
|
78
|
+
* `applyWorkflowBody` reads the workflow immediately after writing the draft,
|
|
79
|
+
* so a legacy workflow WITH a published revision comes back carrying a
|
|
80
|
+
* brand-new `activeConfigId` holding the OLD body. Keyed on that id alone, the
|
|
81
|
+
* warning stayed silent for exactly the population it exists for. So:
|
|
82
|
+
*
|
|
83
|
+
* - the push activated a configuration itself (sidecar + `activeConfigName`):
|
|
84
|
+
* silent — that push IS the migration;
|
|
85
|
+
* - an active configuration and no revision behind it: silent — the server
|
|
86
|
+
* adopted the draft this push just wrote, and it is live;
|
|
87
|
+
* - an active configuration with a revision behind it: warn — that revision is
|
|
88
|
+
* what runs, not the pushed steps;
|
|
89
|
+
* - no active configuration at all: warn, and name the TOML migration.
|
|
90
|
+
*
|
|
91
|
+
* Exported for testability — the end-to-end path needs a workflow that can no
|
|
92
|
+
* longer be created through the API.
|
|
93
|
+
*/
|
|
94
|
+
export declare function legacyDraftSlotWarning(updateSlotLabel: string, state: LegacyDraftSlotState): string | null;
|
|
95
|
+
export interface ApplyWorkflowBodyResult {
|
|
96
|
+
/** The freshest workflow `modifiedAt` after all PATCHes (for sync state). */
|
|
97
|
+
latestModifiedAt?: string;
|
|
98
|
+
/** Which slot the steps landed in: "active config" or "draft (legacy)". */
|
|
99
|
+
updateSlotLabel: string;
|
|
100
|
+
/** A fresh `getWorkflow` result so callers can read back configs/state. */
|
|
101
|
+
fullWorkflow: any;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Apply a parsed workflow body (metadata + steps) to an existing workflow,
|
|
105
|
+
* preserving the key/id. `workflow` is the TOML's `[workflow]` table (already
|
|
106
|
+
* merged with any explicit CLI flag overrides by the caller); `steps` is the
|
|
107
|
+
* TOML's `steps` array. The function performs the three-step ordered update
|
|
108
|
+
* and returns the latest `modifiedAt`, the slot label, and a fresh workflow.
|
|
109
|
+
*/
|
|
110
|
+
export declare function applyWorkflowBody(client: ApiClient, appId: string, workflowId: string, workflow: any, steps: any[], opts?: ApplyWorkflowBodyOptions): Promise<ApplyWorkflowBodyResult>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared "apply a TOML body to an existing workflow" helper.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the `config push` update-existing path (#1249, Fork 4) so that
|
|
5
|
+
* both `config push` and `workflows update --from-file` push a revised body the
|
|
6
|
+
* same way. A second inlined copy would regress #807: the update is
|
|
7
|
+
* ordering-sensitive and a naive metadata-then-body sequence rejects valid
|
|
8
|
+
* sync-callable edits.
|
|
9
|
+
*
|
|
10
|
+
* Ordering invariant (#807 / codex review, revised by #2743). `syncCallable` is
|
|
11
|
+
* sequenced BY TARGET VALUE, because the two directions have opposite
|
|
12
|
+
* constraints:
|
|
13
|
+
* 1. metadata PATCH — carries `syncCallable: false` when the target is false
|
|
14
|
+
* (the TOML omits the key or sets it to `false`), and NOTHING when the
|
|
15
|
+
* target is true. Enabling here would be validated against the workflow's
|
|
16
|
+
* CURRENTLY-active server steps (`loadCurrentActiveSteps`,
|
|
17
|
+
* src/admin-api.ts), not the steps being pushed in the same call, so it
|
|
18
|
+
* would be rejected on the stale list. Disabling has no such check — the
|
|
19
|
+
* server re-validates steps only when flipping TO true — and it must
|
|
20
|
+
* happen here, because the step-write endpoints
|
|
21
|
+
* (`updateWorkflowDraft` / `updateWorkflowConfig`) reject
|
|
22
|
+
* sync-incompatible steps while the STORED flag is still true. Clearing
|
|
23
|
+
* the flag first is what lets a single push both drop `syncCallable` and
|
|
24
|
+
* introduce an incompatible step.
|
|
25
|
+
* 2. body write — steps to the active config (config-model) or the legacy
|
|
26
|
+
* draft slot (no active config).
|
|
27
|
+
* 3. a SECOND `syncCallable` PATCH, for ENABLING only — issued AFTER the new
|
|
28
|
+
* steps are active, so it validates against the new (compatible) steps.
|
|
29
|
+
* Skipped when the first PATCH's response already reports the flag on;
|
|
30
|
+
* sent unconditionally when that response is unreadable (fail closed
|
|
31
|
+
* toward convergence).
|
|
32
|
+
*
|
|
33
|
+
* #2743 also removed the "only send it when the TOML carries the key"
|
|
34
|
+
* no-clobber rule: the file fully describes the workflow, so deleting
|
|
35
|
+
* `syncCallable = true` from it disables the flag in one push.
|
|
36
|
+
*/
|
|
37
|
+
import { buildWorkflowPayloadFromToml, safeJsonParse } from "./workflow-payload.js";
|
|
38
|
+
// #1177: `safeJsonParse` now lives in the shared `workflow-payload` lib module
|
|
39
|
+
// (the builder needs it too); re-exported here so existing importers of this
|
|
40
|
+
// module keep working. Both `cli/src/lib` modules; no dep-direction problem.
|
|
41
|
+
export { safeJsonParse };
|
|
42
|
+
/** The slot label a body gets when the workflow has no active config. */
|
|
43
|
+
export const LEGACY_DRAFT_SLOT_LABEL = "draft (legacy)";
|
|
44
|
+
/**
|
|
45
|
+
* The warning a push owes the user when its body landed in the legacy draft
|
|
46
|
+
* slot and is NOT what the workflow runs (#2768).
|
|
47
|
+
*
|
|
48
|
+
* `workflows publish`, the one thing that promoted that slot, is gone, so those
|
|
49
|
+
* steps sit there unread — a silent no-op otherwise, since the push reports
|
|
50
|
+
* success either way.
|
|
51
|
+
*
|
|
52
|
+
* Reading a workflow is not neutral, which is why this takes more than an
|
|
53
|
+
* active config id. `getAppWorkflow` (src/admin-api.ts) auto-migrates a
|
|
54
|
+
* workflow that has NO configurations: it copies the latest revision — or, only
|
|
55
|
+
* when there is none, the draft slot — into a configuration and activates it.
|
|
56
|
+
* `applyWorkflowBody` reads the workflow immediately after writing the draft,
|
|
57
|
+
* so a legacy workflow WITH a published revision comes back carrying a
|
|
58
|
+
* brand-new `activeConfigId` holding the OLD body. Keyed on that id alone, the
|
|
59
|
+
* warning stayed silent for exactly the population it exists for. So:
|
|
60
|
+
*
|
|
61
|
+
* - the push activated a configuration itself (sidecar + `activeConfigName`):
|
|
62
|
+
* silent — that push IS the migration;
|
|
63
|
+
* - an active configuration and no revision behind it: silent — the server
|
|
64
|
+
* adopted the draft this push just wrote, and it is live;
|
|
65
|
+
* - an active configuration with a revision behind it: warn — that revision is
|
|
66
|
+
* what runs, not the pushed steps;
|
|
67
|
+
* - no active configuration at all: warn, and name the TOML migration.
|
|
68
|
+
*
|
|
69
|
+
* Exported for testability — the end-to-end path needs a workflow that can no
|
|
70
|
+
* longer be created through the API.
|
|
71
|
+
*/
|
|
72
|
+
export function legacyDraftSlotWarning(updateSlotLabel, state) {
|
|
73
|
+
if (updateSlotLabel !== LEGACY_DRAFT_SLOT_LABEL)
|
|
74
|
+
return null;
|
|
75
|
+
const { activeConfigId, activatedByPush, latestRevision } = state;
|
|
76
|
+
if (activatedByPush)
|
|
77
|
+
return null;
|
|
78
|
+
if (activeConfigId && !latestRevision)
|
|
79
|
+
return null;
|
|
80
|
+
const retired = "nothing promotes that slot any more ('workflows publish' was removed in #2768)";
|
|
81
|
+
if (activeConfigId) {
|
|
82
|
+
return (`Steps landed in the legacy draft slot, and ${retired}. Reading the workflow ` +
|
|
83
|
+
"migrated it onto the configurations model from its LATEST REVISION, so what " +
|
|
84
|
+
"runs is that revision, not the steps just pushed.\n" +
|
|
85
|
+
"Push again ('primitive config push --force') to write them to the active " +
|
|
86
|
+
"configuration, after checking that the file's body is the one you want live.");
|
|
87
|
+
}
|
|
88
|
+
return ("Steps landed in the legacy draft slot: this workflow has no active configuration, " +
|
|
89
|
+
`and ${retired}, so the pushed body will not run.\n` +
|
|
90
|
+
"Migrate it in TOML: put the body in workflows/<key>.configs/<name>.toml, set " +
|
|
91
|
+
'activeConfigName = "<name>" in workflows/<key>.toml, and push again.');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Apply a parsed workflow body (metadata + steps) to an existing workflow,
|
|
95
|
+
* preserving the key/id. `workflow` is the TOML's `[workflow]` table (already
|
|
96
|
+
* merged with any explicit CLI flag overrides by the caller); `steps` is the
|
|
97
|
+
* TOML's `steps` array. The function performs the three-step ordered update
|
|
98
|
+
* and returns the latest `modifiedAt`, the slot label, and a fresh workflow.
|
|
99
|
+
*/
|
|
100
|
+
export async function applyWorkflowBody(client, appId, workflowId, workflow, steps, opts = {}) {
|
|
101
|
+
const { expectedModifiedAt, activeConfigId, force } = opts;
|
|
102
|
+
// #2743 — the target `syncCallable` state the file declares. Only an explicit
|
|
103
|
+
// `true` enables (mirroring the server's opt-in handler), so a TOML that
|
|
104
|
+
// omits the key targets `false` and converges a server that has it on.
|
|
105
|
+
const targetSyncCallable = workflow.syncCallable === true;
|
|
106
|
+
// 1. Metadata PATCH — always-send (#2743): the builder (`mode: "update"`)
|
|
107
|
+
// emits every `[workflow]` field with a definite value, so a line deleted
|
|
108
|
+
// from the file clears or resets it server-side instead of being silently
|
|
109
|
+
// preserved. `syncCallable` is the one field the builder leaves out,
|
|
110
|
+
// because its position in the sequence depends on the target value: a
|
|
111
|
+
// disable rides along here (before the steps write), an enable waits for
|
|
112
|
+
// step 3. The `metadataManifest` declared-access manifest (#1304) is
|
|
113
|
+
// call-site-specific and attached below, not owned by the shared builder.
|
|
114
|
+
const updated = await client.updateWorkflow(appId, workflowId, {
|
|
115
|
+
...buildWorkflowPayloadFromToml(workflow, { mode: "update" }),
|
|
116
|
+
...(targetSyncCallable ? {} : { syncCallable: false }),
|
|
117
|
+
// #1304 (P-C): declared-access manifest. Absent key → undefined (server's
|
|
118
|
+
// hasOwnProperty guard leaves it untouched); a parsed value/null is
|
|
119
|
+
// forwarded so a pull → push round-trips it (null clears). `config push`
|
|
120
|
+
// always attaches this (null when the TOML drops `[metadata]`); the
|
|
121
|
+
// `workflows update --from-file` caller may leave it undefined.
|
|
122
|
+
metadataManifest: workflow.metadataManifest !== undefined ? workflow.metadataManifest : undefined,
|
|
123
|
+
}, expectedModifiedAt);
|
|
124
|
+
// The first PATCH bumps `modifiedAt`; the syncCallable PATCH (if any) bumps
|
|
125
|
+
// it again. The config/step update does NOT touch the workflow definition's
|
|
126
|
+
// `modifiedAt`.
|
|
127
|
+
let latestModifiedAt = updated?.workflow?.modifiedAt;
|
|
128
|
+
// 2. Body write — active config (config-model) or legacy draft slot. #1614 —
|
|
129
|
+
// the named `expr.*` definitions live on the same R2 steps payload as the
|
|
130
|
+
// steps, so they travel with the steps write here (not the metadata PATCH
|
|
131
|
+
// above). Attached by the caller onto `workflow.expressions` (structural,
|
|
132
|
+
// like `metadataManifest`); absent → undefined so a workflow without
|
|
133
|
+
// definitions round-trips a clean drop.
|
|
134
|
+
const expressions = workflow.expressions ?? undefined;
|
|
135
|
+
let updateSlotLabel = "active config";
|
|
136
|
+
if (activeConfigId) {
|
|
137
|
+
await client.updateWorkflowConfig(appId, workflowId, activeConfigId, {
|
|
138
|
+
steps,
|
|
139
|
+
expressions,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
await client.updateWorkflowDraft(appId, workflowId, {
|
|
144
|
+
steps,
|
|
145
|
+
expressions,
|
|
146
|
+
inputSchema: workflow.inputSchema ? safeJsonParse(workflow.inputSchema) : null,
|
|
147
|
+
});
|
|
148
|
+
updateSlotLabel = LEGACY_DRAFT_SLOT_LABEL;
|
|
149
|
+
}
|
|
150
|
+
// 3. Deferred `syncCallable` PATCH — ENABLING only, now that the new steps
|
|
151
|
+
// are active (#807). Disabling already landed in step 1. Skipped when the
|
|
152
|
+
// first PATCH's response reports the flag already on (nothing to converge,
|
|
153
|
+
// and the call would cost a `modifiedAt` bump for no change); sent when
|
|
154
|
+
// the response shape is unreadable, because "unreadable" is not evidence.
|
|
155
|
+
if (targetSyncCallable && updated?.workflow?.syncCallable !== true) {
|
|
156
|
+
const syncCallableUpdated = await client.updateWorkflow(appId, workflowId, { syncCallable: true }, force ? undefined : latestModifiedAt);
|
|
157
|
+
if (syncCallableUpdated?.workflow?.modifiedAt) {
|
|
158
|
+
latestModifiedAt = syncCallableUpdated.workflow.modifiedAt;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const fullWorkflow = await client.getWorkflow(appId, workflowId);
|
|
162
|
+
return { latestModifiedAt, updateSlotLabel, fullWorkflow };
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=workflow-apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-apply.js","sourceRoot":"","sources":["../../../src/lib/workflow-apply.ts"],"names":[],"mappings":"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"}
|