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,462 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `functions codegen --lang swift` — the third CLI Swift generator (#3344).
|
|
3
|
+
*
|
|
4
|
+
* The Swift counterpart of `function-schema-codegen.ts`'s TypeScript invoker,
|
|
5
|
+
* and the sibling of `generator.ts` (workflows) and `dbGenerator.ts`
|
|
6
|
+
* (database types). Reads the SAME `functions/<key>.toml` files and emits one
|
|
7
|
+
* `<key>.generated.swift` per function carrying:
|
|
8
|
+
*
|
|
9
|
+
* - `<Key>Input` / `<Key>Output`, rendered from the declared schemas by the
|
|
10
|
+
* shared `renderSwiftRootType` — the same drift-guarded descriptor the
|
|
11
|
+
* server validates with, so a generated Swift type can never promise a
|
|
12
|
+
* shape an invocation door rejects; and
|
|
13
|
+
* - `<Key>Function`, a typed invoker struct carrying every verb, plus a
|
|
14
|
+
* free-function factory `<key>(client)`.
|
|
15
|
+
*
|
|
16
|
+
* ── Nothing about the function is re-derived here ────────────────────────
|
|
17
|
+
*
|
|
18
|
+
* Key, schemas and `inputRequired` all come from `describeFunctionSchemas` —
|
|
19
|
+
* the IR the TypeScript invoker reads — so the two clients can never disagree
|
|
20
|
+
* on what a function accepts or whether its input is required. Only Swift
|
|
21
|
+
* naming (through the workflow emitter's helpers) and Swift rendering happen
|
|
22
|
+
* in this file.
|
|
23
|
+
*
|
|
24
|
+
* ── Verbs ────────────────────────────────────────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* EVERY invoker gets `invoke` plus the four task verbs (`start`, `getStatus`,
|
|
27
|
+
* `waitFor`, `terminate`). It did once narrow the set by mode, so that the
|
|
28
|
+
* wrong verb was a compile error; #3482 retired that rule by making the ROUTE
|
|
29
|
+
* the runtime selector, and the mismatch is a `functionModeMismatch` thrown at
|
|
30
|
+
* runtime again. Only the INPUT SHAPE is compile-checked here.
|
|
31
|
+
*
|
|
32
|
+
* `FUNCTION_INVOKER_VERBS_BY_MODE` below therefore no longer gates emission —
|
|
33
|
+
* it survives as the verb inventory the signature-parity test reads.
|
|
34
|
+
*
|
|
35
|
+
* Every parameter besides `input` mirrors the generic `FunctionsAPI` overload
|
|
36
|
+
* it delegates to, label, type and default alike — `meta: [String: Any]?`
|
|
37
|
+
* included. The goldens are app-target code, outside the client's `Any`
|
|
38
|
+
* budget scan, and the workflow goldens set that precedent. The tables below
|
|
39
|
+
* are the single source of those parameter lists, and
|
|
40
|
+
* `swift-codegen-function-signature-parity-3344.test.ts` ties them to the
|
|
41
|
+
* client's actual declarations so an option added to `FunctionsAPI` later
|
|
42
|
+
* cannot leave every generated invoker silently behind.
|
|
43
|
+
*
|
|
44
|
+
* ── The nullable root input ──────────────────────────────────────────────
|
|
45
|
+
*
|
|
46
|
+
* The generic overload maps a `nil` input to an OMITTED `rootInput`, which the
|
|
47
|
+
* server defaults to `{}` — rejected by a schema that allows only a string or
|
|
48
|
+
* null. So when the rendered root input type is itself Optional, the generated
|
|
49
|
+
* body BRANCHES: a value delegates the typed value directly (keeping
|
|
50
|
+
* `JSONCoding`'s exact `Int64` path), and `nil` delegates `JSONValue.null`,
|
|
51
|
+
* which is a non-nil `Encodable` and reaches the wire as `rootInput: null`
|
|
52
|
+
* through the same forwarding path a scalar root already uses. Proved live
|
|
53
|
+
* before this emitter was written (#3344 step 0).
|
|
54
|
+
*/
|
|
55
|
+
import * as path from "path";
|
|
56
|
+
import { writeOrCheckGeneratedFiles, } from "../codegen-shared/generatedFiles.js";
|
|
57
|
+
import { fingerprintToml } from "../db-codegen/dbFingerprint.js";
|
|
58
|
+
import { describeFunctionSchemas, describeFunctionSchemaSet, FunctionSchemaCodegenError, } from "../function-schema-codegen.js";
|
|
59
|
+
import { renderSwiftRootTypeDetail, SwiftCodegenError } from "./schemaToSwift.js";
|
|
60
|
+
import { workflowSwiftFactoryName } from "./swiftNaming.js";
|
|
61
|
+
import { GENERATED_SWIFT_FILE_SUFFIX, SWIFT_BANNER_PREFIX, swiftKeyLiteral, workflowSwiftTypeBaseName, } from "./generator.js";
|
|
62
|
+
import { DB_SWIFT_BANNER_PREFIXES } from "./dbGenerator.js";
|
|
63
|
+
import { AGENT_SWIFT_BANNER_PREFIX, FUNCTION_SWIFT_BANNER_PREFIX, } from "./banners.js";
|
|
64
|
+
import { AGENT_SWIFT_FILE_SUFFIX, renderAgentSwiftFile, } from "./agentGenerator.js";
|
|
65
|
+
import { describePromptSchema, } from "../prompt-schema-codegen.js";
|
|
66
|
+
import { assertNoForeignGeneratorSymbolCollision, parseTopLevelSwiftSymbols, } from "./siblingSymbols.js";
|
|
67
|
+
export { FUNCTION_SWIFT_BANNER_PREFIX };
|
|
68
|
+
/** The Swift module the generated types + invoker import. */
|
|
69
|
+
const CLIENT_MODULE = "JsBaoClient";
|
|
70
|
+
const INDENT = " ";
|
|
71
|
+
/** Banners owned by the OTHER two Swift generators, in every spelling. */
|
|
72
|
+
const FOREIGN_SWIFT_BANNERS = [SWIFT_BANNER_PREFIX, ...DB_SWIFT_BANNER_PREFIXES];
|
|
73
|
+
const INPUT_PARAMETER = {
|
|
74
|
+
label: "input",
|
|
75
|
+
type: null,
|
|
76
|
+
defaultValue: null,
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The verb tables. `invoke` is a request function's whole surface; the other
|
|
80
|
+
* four are a task function's.
|
|
81
|
+
*/
|
|
82
|
+
export const FUNCTION_INVOKER_VERBS = {
|
|
83
|
+
invoke: {
|
|
84
|
+
verb: "invoke",
|
|
85
|
+
comparedAgainst: { kind: "overload", method: "invoke", dropLabels: ["functionKey"] },
|
|
86
|
+
parameters: [
|
|
87
|
+
INPUT_PARAMETER,
|
|
88
|
+
{ label: "contextDocId", type: "String?", defaultValue: "nil" },
|
|
89
|
+
{ label: "meta", type: "[String: Any]?", defaultValue: "nil" },
|
|
90
|
+
{ label: "timeout", type: "TimeInterval?", defaultValue: "nil" },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
start: {
|
|
94
|
+
verb: "start",
|
|
95
|
+
comparedAgainst: { kind: "overload", method: "start", dropLabels: ["functionKey"] },
|
|
96
|
+
parameters: [
|
|
97
|
+
INPUT_PARAMETER,
|
|
98
|
+
{ label: "runKey", type: "String?", defaultValue: "nil" },
|
|
99
|
+
{ label: "contextDocId", type: "String?", defaultValue: "nil" },
|
|
100
|
+
{ label: "meta", type: "[String: Any]?", defaultValue: "nil" },
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
getStatus: {
|
|
104
|
+
verb: "getStatus",
|
|
105
|
+
comparedAgainst: { kind: "overload", method: "getStatus", dropLabels: [] },
|
|
106
|
+
parameters: [{ label: "runId", type: "String", defaultValue: null }],
|
|
107
|
+
},
|
|
108
|
+
waitFor: {
|
|
109
|
+
verb: "waitFor",
|
|
110
|
+
// `as:` is the output witness the generated method binds itself.
|
|
111
|
+
comparedAgainst: { kind: "overload", method: "waitFor", dropLabels: ["as"] },
|
|
112
|
+
parameters: [
|
|
113
|
+
{ label: "runId", type: "String", defaultValue: null },
|
|
114
|
+
{ label: "options", type: "FunctionWaitOptions?", defaultValue: "nil" },
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
terminate: {
|
|
118
|
+
verb: "terminate",
|
|
119
|
+
comparedAgainst: { kind: "ref", type: "FunctionRunRef", dropLabels: ["functionKey"] },
|
|
120
|
+
parameters: [
|
|
121
|
+
{ label: "runKey", type: "String", defaultValue: null },
|
|
122
|
+
{ label: "contextDocId", type: "String?", defaultValue: "nil" },
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* The verb inventory, grouped by the mode that once gated it.
|
|
128
|
+
*
|
|
129
|
+
* #3454 made `any` the default, exposing BOTH sets because the runner is
|
|
130
|
+
* chosen at call time; each lock then exposed only its own. #3482 retired the
|
|
131
|
+
* gating entirely — the ROUTE is the runtime selector, and every invoker is
|
|
132
|
+
* emitted with every verb (see the header, and the emission site). Nothing
|
|
133
|
+
* reads this to DECIDE what to emit any more; the signature-parity test reads
|
|
134
|
+
* it as the list of verbs whose parameters must match `FunctionsAPI`.
|
|
135
|
+
*/
|
|
136
|
+
export const FUNCTION_INVOKER_VERBS_BY_MODE = {
|
|
137
|
+
request: ["invoke"],
|
|
138
|
+
task: ["start", "getStatus", "waitFor", "terminate"],
|
|
139
|
+
any: ["invoke", "start", "getStatus", "waitFor", "terminate"],
|
|
140
|
+
};
|
|
141
|
+
function parseFunction(source) {
|
|
142
|
+
const ir = describeFunctionSchemas(source);
|
|
143
|
+
const base = workflowSwiftTypeBaseName(ir.key);
|
|
144
|
+
const inputTypeName = `${base}Input`;
|
|
145
|
+
const outputTypeName = `${base}Output`;
|
|
146
|
+
// The banner and every schema failure name the FILE, which an authored
|
|
147
|
+
// `[function] key` can spell differently from the key (E1).
|
|
148
|
+
const sourceFile = ir.fileLabel;
|
|
149
|
+
const input = renderSwiftRootTypeDetail(inputTypeName, ir.inputSchema, { sourceFile });
|
|
150
|
+
const output = renderSwiftRootTypeDetail(outputTypeName, ir.outputSchema, { sourceFile });
|
|
151
|
+
return {
|
|
152
|
+
key: ir.key,
|
|
153
|
+
fileLabel: ir.fileLabel,
|
|
154
|
+
base,
|
|
155
|
+
inputTypeName,
|
|
156
|
+
outputTypeName,
|
|
157
|
+
structName: `${base}Function`,
|
|
158
|
+
factoryName: workflowSwiftFactoryName(ir.key),
|
|
159
|
+
inputRequired: ir.inputRequired,
|
|
160
|
+
inputOptionalRoot: input.optional,
|
|
161
|
+
inputDecl: input.decl,
|
|
162
|
+
outputDecl: output.decl,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* The `input:` parameter declaration. An already-Optional root type is never
|
|
167
|
+
* wrapped a second time (spec decision 6) — the alias carries the optionality,
|
|
168
|
+
* and the branching body below gives its `nil` the meaning the schema gives it.
|
|
169
|
+
*/
|
|
170
|
+
function inputParameter(fn) {
|
|
171
|
+
if (fn.inputOptionalRoot) {
|
|
172
|
+
return fn.inputRequired
|
|
173
|
+
? `input: ${fn.inputTypeName}`
|
|
174
|
+
: `input: ${fn.inputTypeName} = nil`;
|
|
175
|
+
}
|
|
176
|
+
return fn.inputRequired
|
|
177
|
+
? `input: ${fn.inputTypeName}`
|
|
178
|
+
: `input: ${fn.inputTypeName}? = nil`;
|
|
179
|
+
}
|
|
180
|
+
/** `label: type = default` for a non-input parameter, from the verb table. */
|
|
181
|
+
function renderParameter(parameter) {
|
|
182
|
+
const withDefault = parameter.defaultValue === null ? "" : ` = ${parameter.defaultValue}`;
|
|
183
|
+
return `${parameter.label}: ${parameter.type}${withDefault}`;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The delegation body for a verb that forwards `input`. When the root input
|
|
187
|
+
* type is Optional the body branches so a `nil` reaches the wire as the
|
|
188
|
+
* explicit `rootInput: null` the declaration allows, instead of being dropped
|
|
189
|
+
* into the client's "no input" path (which the server turns into `{}`).
|
|
190
|
+
*/
|
|
191
|
+
function renderForwardingBody(fn, indentLevel, call) {
|
|
192
|
+
const I = INDENT.repeat(indentLevel);
|
|
193
|
+
if (!fn.inputOptionalRoot)
|
|
194
|
+
return call("input", indentLevel);
|
|
195
|
+
return [
|
|
196
|
+
`${I}// \`${fn.inputTypeName}\` is Optional, so \`nil\` is the JSON \`null\` the`,
|
|
197
|
+
`${I}// declared schema allows — not "no input". Delegating \`nil\` would omit`,
|
|
198
|
+
`${I}// \`rootInput\`, which the server defaults to \`{}\`; \`JSONValue.null\``,
|
|
199
|
+
`${I}// travels as the null through the same path a scalar root uses.`,
|
|
200
|
+
`${I}if let input {`,
|
|
201
|
+
...call("input", indentLevel + 1),
|
|
202
|
+
`${I}}`,
|
|
203
|
+
...call("JSONValue.null", indentLevel),
|
|
204
|
+
];
|
|
205
|
+
}
|
|
206
|
+
function renderInvoke(fn) {
|
|
207
|
+
const keyLiteral = swiftKeyLiteral(fn.key);
|
|
208
|
+
const table = FUNCTION_INVOKER_VERBS.invoke;
|
|
209
|
+
const I = INDENT;
|
|
210
|
+
const call = (inputExpr, level) => {
|
|
211
|
+
const B = INDENT.repeat(level);
|
|
212
|
+
const keyword = fn.inputOptionalRoot ? "return try await " : "try await ";
|
|
213
|
+
return [
|
|
214
|
+
`${B}${keyword}client.functions.invoke(`,
|
|
215
|
+
`${B}${INDENT}${keyLiteral},`,
|
|
216
|
+
`${B}${INDENT}input: ${inputExpr},`,
|
|
217
|
+
`${B}${INDENT}contextDocId: contextDocId,`,
|
|
218
|
+
`${B}${INDENT}meta: meta,`,
|
|
219
|
+
`${B}${INDENT}timeout: timeout`,
|
|
220
|
+
`${B})`,
|
|
221
|
+
];
|
|
222
|
+
};
|
|
223
|
+
return [
|
|
224
|
+
``,
|
|
225
|
+
`${I}/// Invoke the \`${fn.key}\` request function and wait for its result.`,
|
|
226
|
+
`${I}public func invoke(`,
|
|
227
|
+
`${I}${I}${inputParameter(fn)},`,
|
|
228
|
+
...table.parameters
|
|
229
|
+
.slice(1)
|
|
230
|
+
.map((p, index, all) => `${I}${I}${renderParameter(p)}${index === all.length - 1 ? "" : ","}`),
|
|
231
|
+
`${I}) async throws -> FunctionResult<${fn.outputTypeName}> {`,
|
|
232
|
+
...renderForwardingBody(fn, 2, call),
|
|
233
|
+
`${I}}`,
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
function renderStart(fn) {
|
|
237
|
+
const keyLiteral = swiftKeyLiteral(fn.key);
|
|
238
|
+
const table = FUNCTION_INVOKER_VERBS.start;
|
|
239
|
+
const I = INDENT;
|
|
240
|
+
const call = (inputExpr, level) => {
|
|
241
|
+
const B = INDENT.repeat(level);
|
|
242
|
+
const keyword = fn.inputOptionalRoot ? "return try await " : "try await ";
|
|
243
|
+
return [
|
|
244
|
+
`${B}${keyword}client.functions.start(`,
|
|
245
|
+
`${B}${INDENT}${keyLiteral},`,
|
|
246
|
+
`${B}${INDENT}input: ${inputExpr},`,
|
|
247
|
+
`${B}${INDENT}runKey: runKey,`,
|
|
248
|
+
`${B}${INDENT}contextDocId: contextDocId,`,
|
|
249
|
+
`${B}${INDENT}meta: meta`,
|
|
250
|
+
`${B})`,
|
|
251
|
+
];
|
|
252
|
+
};
|
|
253
|
+
return [
|
|
254
|
+
``,
|
|
255
|
+
`${I}/// Start the \`${fn.key}\` task function; returns the run handle.`,
|
|
256
|
+
`${I}@discardableResult`,
|
|
257
|
+
`${I}public func start(`,
|
|
258
|
+
`${I}${I}${inputParameter(fn)},`,
|
|
259
|
+
...table.parameters
|
|
260
|
+
.slice(1)
|
|
261
|
+
.map((p, index, all) => `${I}${I}${renderParameter(p)}${index === all.length - 1 ? "" : ","}`),
|
|
262
|
+
`${I}) async throws -> FunctionStartResult {`,
|
|
263
|
+
...renderForwardingBody(fn, 2, call),
|
|
264
|
+
`${I}}`,
|
|
265
|
+
];
|
|
266
|
+
}
|
|
267
|
+
function renderTaskPollers(fn) {
|
|
268
|
+
const I = INDENT;
|
|
269
|
+
const keyLiteral = swiftKeyLiteral(fn.key);
|
|
270
|
+
const waitFor = FUNCTION_INVOKER_VERBS.waitFor;
|
|
271
|
+
const terminate = FUNCTION_INVOKER_VERBS.terminate;
|
|
272
|
+
return [
|
|
273
|
+
``,
|
|
274
|
+
`${I}/// A run's status, with \`output\` bound to \`${fn.outputTypeName}\`.`,
|
|
275
|
+
`${I}public func getStatus(${renderParameter(FUNCTION_INVOKER_VERBS.getStatus.parameters[0])}) async throws -> FunctionRunResult<${fn.outputTypeName}> {`,
|
|
276
|
+
`${I}${I}try await client.functions.getStatus(runId: runId)`,
|
|
277
|
+
`${I}}`,
|
|
278
|
+
``,
|
|
279
|
+
`${I}/// Wait for a run to settle; \`output\` is bound to \`${fn.outputTypeName}\`.`,
|
|
280
|
+
`${I}public func waitFor(`,
|
|
281
|
+
...waitFor.parameters.map((p, index, all) => `${I}${I}${renderParameter(p)}${index === all.length - 1 ? "" : ","}`),
|
|
282
|
+
`${I}) async throws -> FunctionRunResult<${fn.outputTypeName}> {`,
|
|
283
|
+
`${I}${I}try await client.functions.waitFor(`,
|
|
284
|
+
`${I}${I}${I}runId: runId,`,
|
|
285
|
+
`${I}${I}${I}as: ${fn.outputTypeName}.self,`,
|
|
286
|
+
`${I}${I}${I}options: options`,
|
|
287
|
+
`${I}${I})`,
|
|
288
|
+
`${I}}`,
|
|
289
|
+
``,
|
|
290
|
+
`${I}/// Terminate a run; \`output\` is bound to \`${fn.outputTypeName}\` (a terminated`,
|
|
291
|
+
`${I}/// run can carry partial output). The function key is pinned.`,
|
|
292
|
+
`${I}@discardableResult`,
|
|
293
|
+
`${I}public func terminate(`,
|
|
294
|
+
...terminate.parameters.map((p, index, all) => `${I}${I}${renderParameter(p)}${index === all.length - 1 ? "" : ","}`),
|
|
295
|
+
`${I}) async throws -> FunctionRunResult<${fn.outputTypeName}> {`,
|
|
296
|
+
`${I}${I}try await client.functions.terminate(`,
|
|
297
|
+
`${I}${I}${I}FunctionRunRef(`,
|
|
298
|
+
`${I}${I}${I}${I}functionKey: ${keyLiteral},`,
|
|
299
|
+
`${I}${I}${I}${I}runKey: runKey,`,
|
|
300
|
+
`${I}${I}${I}${I}contextDocId: contextDocId`,
|
|
301
|
+
`${I}${I}${I})`,
|
|
302
|
+
`${I}${I})`,
|
|
303
|
+
`${I}}`,
|
|
304
|
+
];
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* The typed invoker struct + its free-function factory. Since #3482 every
|
|
308
|
+
* function carries BOTH verb sets: the config says nothing about how a
|
|
309
|
+
* function runs, and the caller picks the runtime at each call.
|
|
310
|
+
*/
|
|
311
|
+
function renderInvoker(fn) {
|
|
312
|
+
const lines = [
|
|
313
|
+
`/// Typed invoker for the \`${fn.key}\` function. Binds`,
|
|
314
|
+
`/// \`${fn.inputTypeName}\` / \`${fn.outputTypeName}\` over the generic`,
|
|
315
|
+
`/// \`FunctionsAPI\` overloads. Obtain one with \`${fn.factoryName}(client)\`.`,
|
|
316
|
+
`public struct ${fn.structName}: Sendable {`,
|
|
317
|
+
`${INDENT}public let client: JsBaoClient`,
|
|
318
|
+
``,
|
|
319
|
+
`${INDENT}public init(client: JsBaoClient) {`,
|
|
320
|
+
`${INDENT}${INDENT}self.client = client`,
|
|
321
|
+
`${INDENT}}`,
|
|
322
|
+
];
|
|
323
|
+
// #3482 — `invoke` first, then the four task verbs, for EVERY function.
|
|
324
|
+
lines.push(...renderInvoke(fn));
|
|
325
|
+
lines.push(...renderStart(fn), ...renderTaskPollers(fn));
|
|
326
|
+
lines.push(`}`);
|
|
327
|
+
lines.push(``, `/// Typed invoker factory for the \`${fn.key}\` function.`, `public func ${fn.factoryName}(_ client: JsBaoClient) -> ${fn.structName} {`, `${INDENT}${fn.structName}(client: client)`, `}`);
|
|
328
|
+
return lines.join("\n");
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Render the full `<key>.generated.swift` content for one `functions/*.toml`.
|
|
332
|
+
* Pure — exported so tests can assert on the string directly.
|
|
333
|
+
*/
|
|
334
|
+
export function renderFunctionSwiftFile(source) {
|
|
335
|
+
const fn = parseFunction(source);
|
|
336
|
+
const fingerprint = fingerprintToml(source.tomlContent);
|
|
337
|
+
const banner = [
|
|
338
|
+
`${FUNCTION_SWIFT_BANNER_PREFIX}${fn.fileLabel.replace(/^functions\//, "")} — DO NOT EDIT.`,
|
|
339
|
+
"// Run `primitive functions codegen --lang swift` to regenerate.",
|
|
340
|
+
`// fingerprint: ${fingerprint}`,
|
|
341
|
+
].join("\n");
|
|
342
|
+
const imports = ["import Foundation", `import ${CLIENT_MODULE}`].join("\n");
|
|
343
|
+
const content = [banner, imports, fn.inputDecl, fn.outputDecl, renderInvoker(fn)].join("\n\n") +
|
|
344
|
+
"\n";
|
|
345
|
+
return {
|
|
346
|
+
key: fn.key,
|
|
347
|
+
content,
|
|
348
|
+
// EVERY top-level declaration the file makes, read back off the rendered
|
|
349
|
+
// source rather than enumerated by hand (CR3344-001). The obvious four are
|
|
350
|
+
// `<Key>Input`/`<Key>Output`, the invoker struct and the factory — but a
|
|
351
|
+
// root that renders as a typealias (an array of objects, say) also declares
|
|
352
|
+
// its element type, `<Key>InputItem`, at module level. Enumerating the four
|
|
353
|
+
// left those helpers out of both the run-scoped registry and the
|
|
354
|
+
// cross-generator scan, so a database type or another function declaring
|
|
355
|
+
// the same symbol produced Swift that would not compile. This is also the
|
|
356
|
+
// exact parser the retained-sibling side uses, so the two halves of every
|
|
357
|
+
// comparison now speak one alphabet (backticks stripped included).
|
|
358
|
+
symbols: parseTopLevelSwiftSymbols(content),
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Run Swift function codegen end-to-end. The whole `functions/` directory is
|
|
363
|
+
* always the input (there is no `--single` form), so the run owns its output
|
|
364
|
+
* directory's functions-banner files completely and sweeps the orphans.
|
|
365
|
+
*/
|
|
366
|
+
export async function generateFunctionSwiftTypes(options) {
|
|
367
|
+
const outAbs = path.resolve(options.outputDir);
|
|
368
|
+
// The shared set-level IR: sorted, and two files resolving to one key
|
|
369
|
+
// refused naming both (E2). The TS base-name check stays on the TS side —
|
|
370
|
+
// the registry below is the Swift run's own, and covers the invoker struct
|
|
371
|
+
// and the factory the TS check knows nothing about.
|
|
372
|
+
const described = describeFunctionSchemaSet(options.inputs);
|
|
373
|
+
const symbolOwner = new Map();
|
|
374
|
+
const filesToWrite = new Map();
|
|
375
|
+
for (const { source } of described) {
|
|
376
|
+
const rendered = renderFunctionSwiftFile(source);
|
|
377
|
+
for (const symbol of rendered.symbols) {
|
|
378
|
+
const prior = symbolOwner.get(symbol);
|
|
379
|
+
if (prior !== undefined && prior !== rendered.key) {
|
|
380
|
+
throw new SwiftCodegenError(`swift function codegen: type-name collision — function keys ` +
|
|
381
|
+
`"${prior}" and "${rendered.key}" both produce Swift symbol ` +
|
|
382
|
+
`"${symbol}", which redeclare when all .generated.swift files ` +
|
|
383
|
+
`compile into one module. Rename one function key so the two differ ` +
|
|
384
|
+
`after Swift normalization.`, { sourceFile: `functions/${rendered.key}.toml` });
|
|
385
|
+
}
|
|
386
|
+
symbolOwner.set(symbol, rendered.key);
|
|
387
|
+
}
|
|
388
|
+
filesToWrite.set(path.join(outAbs, `${rendered.key}${GENERATED_SWIFT_FILE_SUFFIX}`), rendered.content);
|
|
389
|
+
}
|
|
390
|
+
// #3798 — the agents' files, in the same registry and the same write: a
|
|
391
|
+
// symbol an agent and a function both declare is refused naming both.
|
|
392
|
+
for (const source of options.agentInputs ?? []) {
|
|
393
|
+
if (!isAgentPromptSource(source))
|
|
394
|
+
continue;
|
|
395
|
+
const rendered = renderAgentSwiftFile(source);
|
|
396
|
+
const owner = `prompt ${rendered.key}`;
|
|
397
|
+
for (const symbol of rendered.symbols) {
|
|
398
|
+
const prior = symbolOwner.get(symbol);
|
|
399
|
+
if (prior !== undefined && prior !== owner) {
|
|
400
|
+
throw new SwiftCodegenError(`swift function codegen: type-name collision — "${prior}" and ` +
|
|
401
|
+
`"${owner}" both produce Swift symbol "${symbol}", which ` +
|
|
402
|
+
`redeclare when all .generated.swift files compile into one ` +
|
|
403
|
+
`module. Rename one key so the two differ after Swift normalization.`, { sourceFile: `prompts/${rendered.key}.toml` });
|
|
404
|
+
}
|
|
405
|
+
symbolOwner.set(symbol, owner);
|
|
406
|
+
}
|
|
407
|
+
filesToWrite.set(path.join(outAbs, `${rendered.key}${AGENT_SWIFT_FILE_SUFFIX}`), rendered.content);
|
|
408
|
+
}
|
|
409
|
+
// Cross-generator namespace collision (the #1857 scan, a third way round).
|
|
410
|
+
// A workflow- or database-owned sibling in the same directory declares its
|
|
411
|
+
// own top-level symbols; a full functions run does not regenerate them, so
|
|
412
|
+
// the two files coexist and redeclare once everything compiles into one
|
|
413
|
+
// module. The foreign-banner WRITE guard below is path-only and never sees
|
|
414
|
+
// it.
|
|
415
|
+
await assertNoForeignGeneratorSymbolCollision({
|
|
416
|
+
outputDir: outAbs,
|
|
417
|
+
foreignBanner: FOREIGN_SWIFT_BANNERS,
|
|
418
|
+
suffix: GENERATED_SWIFT_FILE_SUFFIX,
|
|
419
|
+
emitted: symbolOwner,
|
|
420
|
+
makeError: ({ symbol, owner, siblingStem }) => new SwiftCodegenError(`swift function codegen: type-name collision with another generator's ` +
|
|
421
|
+
`file — function key "${owner}" emits Swift symbol "${symbol}", but the ` +
|
|
422
|
+
`existing "${siblingStem}${GENERATED_SWIFT_FILE_SUFFIX}" (owned by the ` +
|
|
423
|
+
`workflow or database Swift generator) already declares a top-level ` +
|
|
424
|
+
`"${symbol}" in the same output directory, which redeclares when all ` +
|
|
425
|
+
`.generated.swift files compile into one module. Rename the function or ` +
|
|
426
|
+
`the "${siblingStem}" source so the two differ after Swift ` +
|
|
427
|
+
`normalization, or give one generator a separate -o directory.`, { sourceFile: `functions/${owner}.toml` }),
|
|
428
|
+
});
|
|
429
|
+
return await writeOrCheckGeneratedFiles({
|
|
430
|
+
outputDir: outAbs,
|
|
431
|
+
filesToWrite,
|
|
432
|
+
check: options.check,
|
|
433
|
+
fullOwnership: true,
|
|
434
|
+
generatedSuffix: GENERATED_SWIFT_FILE_SUFFIX,
|
|
435
|
+
// #3798 — the run owns the agents' files as well as the invokers.
|
|
436
|
+
ownershipBanner: [FUNCTION_SWIFT_BANNER_PREFIX, AGENT_SWIFT_BANNER_PREFIX],
|
|
437
|
+
foreignOwnershipBanners: FOREIGN_SWIFT_BANNERS,
|
|
438
|
+
onForeignBannerCollision: ({ filePath, foreignBanner }) => new SwiftCodegenError(`swift codegen: output collision — this run would overwrite ` +
|
|
439
|
+
`"${path.basename(filePath)}" in the shared output directory, which ` +
|
|
440
|
+
`is already owned by a different generator (banner ` +
|
|
441
|
+
`"${foreignBanner.trim()}"). A function key and a workflow key or ` +
|
|
442
|
+
`database type with the same name cannot share an output directory; ` +
|
|
443
|
+
`give one generator a separate -o directory.`),
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Whether a prompt source is an agent, read leniently: a prompt file that does
|
|
448
|
+
* not parse is reported by the commands that push it, not by a Swift run.
|
|
449
|
+
*/
|
|
450
|
+
function isAgentPromptSource(source) {
|
|
451
|
+
try {
|
|
452
|
+
return describePromptSchema(source).agent !== null;
|
|
453
|
+
}
|
|
454
|
+
catch (error) {
|
|
455
|
+
if (error instanceof FunctionSchemaCodegenError &&
|
|
456
|
+
!/does not parse/.test(error.message)) {
|
|
457
|
+
throw error;
|
|
458
|
+
}
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=functionGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functionGenerator.js","sourceRoot":"","sources":["../../../../src/lib/swift-codegen/functionGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workflows codegen --lang swift` orchestrator (issue #1547, Phases 2-3).
|
|
3
|
+
*
|
|
4
|
+
* The Swift counterpart of `workflow-codegen/generator.ts`. Reads the SAME
|
|
5
|
+
* synced workflow TOMLs (`primitive/<env>/workflows/*.toml`) and
|
|
6
|
+
* emits ONE `<key>.generated.swift` per workflow. Each file carries the
|
|
7
|
+
* workflow's `<Key>Input`/`<Key>Output` Swift `Codable` types (Phase 1's
|
|
8
|
+
* `renderSwiftRootType`) plus — Phase 3 — a typed invoker factory: a free
|
|
9
|
+
* function `func <key>(_ client:) -> <Key>Workflow` returning a struct with
|
|
10
|
+
* `async throws` `runSync`/`start`/`getStatus` methods (Fork 2 = A). The
|
|
11
|
+
* factory binds `<Key>Input`/`<Key>Output` over the additive generic overloads
|
|
12
|
+
* on `WorkflowsAPI` (the only published SDK surface).
|
|
13
|
+
*
|
|
14
|
+
* Design decisions realized (maintainer decision, issue #1547):
|
|
15
|
+
* - Schemas are interpreted through the SAME drift-guarded descriptor the TS
|
|
16
|
+
* emitter reads (Fork 1 = A), via `renderSwiftRootType`, so a generated
|
|
17
|
+
* Swift type can never promise a shape the runtime validator rejects.
|
|
18
|
+
* - Operation metadata (key, `syncCallable`, required-vs-optional `input`) is
|
|
19
|
+
* read from the SHARED `describeWorkflowInvoker` IR — the SAME source the TS
|
|
20
|
+
* invoker uses. The Swift renderer reconstructs none of it (#1547 binding 5),
|
|
21
|
+
* so the two clients can never disagree on which operations a workflow
|
|
22
|
+
* exposes or whether its input is required.
|
|
23
|
+
* - `runSync` is emitted ONLY for `syncCallable: true` workflows (the server
|
|
24
|
+
* rejects run-sync otherwise), matching the TS factory. `start`,
|
|
25
|
+
* `getStatus`, `terminate`, and the workflow-scoped
|
|
26
|
+
* `cronTriggers.{create,update}` are emitted for every non-reserved
|
|
27
|
+
* workflow; `define` only for an apply-mode one. That is the SAME per-member
|
|
28
|
+
* gating the TS factory uses (#2806) — the two factories expose one surface,
|
|
29
|
+
* decided by the shared IR, not per language.
|
|
30
|
+
* - Where the Swift client is less typed than the JS one, the OPERATION still
|
|
31
|
+
* reaches parity while the payload stays as typed as the client is: a cron
|
|
32
|
+
* `rootInput` over an object-shaped schema is an open `JSONValue` (Swift has
|
|
33
|
+
* no `Partial<>` for the fields an `inputMapping` may supply), and
|
|
34
|
+
* `define`'s handler sees the client's untyped `WorkflowApplyContext`.
|
|
35
|
+
* - Disk lifecycle (write / `--check` / orphan cleanup) delegates to the shared
|
|
36
|
+
* `writeOrCheckGeneratedFiles`, scoped by an ownership BANNER (the "banner
|
|
37
|
+
* namespacing" edge case) so a shared Swift output dir stays safe.
|
|
38
|
+
*/
|
|
39
|
+
import { type WriteOrCheckResult } from "../codegen-shared/generatedFiles.js";
|
|
40
|
+
/** Suffix identifying a generated Swift file. */
|
|
41
|
+
export declare const GENERATED_SWIFT_FILE_SUFFIX = ".generated.swift";
|
|
42
|
+
/**
|
|
43
|
+
* Banner prefix stamped at the top of every CLI-emitted `.generated.swift`
|
|
44
|
+
* file. Deliberately DISTINCT from the Swift model codegen's
|
|
45
|
+
* `// Generated by swift-bao-codegen` header so that:
|
|
46
|
+
* - the model codegen's stale-sweep (which only removes files starting with
|
|
47
|
+
* its own header) never deletes these; and
|
|
48
|
+
* - this generator's cleanup (scoped to this prefix) never deletes a
|
|
49
|
+
* model-codegen file that shares the `.generated.swift` suffix.
|
|
50
|
+
* The prefix is common to every workflow file, so it is a safe ownership key.
|
|
51
|
+
*/
|
|
52
|
+
export declare const SWIFT_BANNER_PREFIX = "// AUTO-GENERATED FROM workflows/";
|
|
53
|
+
export interface WorkflowSwiftCodegenInput {
|
|
54
|
+
/** Source `.toml` filename stem (fallback key when `[workflow].key` is absent). */
|
|
55
|
+
fileStem: string;
|
|
56
|
+
/** Path to the source `workflows/<key>.toml` file. */
|
|
57
|
+
tomlPath: string;
|
|
58
|
+
/** Raw TOML content (already read from disk). */
|
|
59
|
+
tomlContent: string;
|
|
60
|
+
}
|
|
61
|
+
export interface GenerateWorkflowSwiftTypesOptions {
|
|
62
|
+
inputs: WorkflowSwiftCodegenInput[];
|
|
63
|
+
/** Directory where the `<key>.generated.swift` files are written. */
|
|
64
|
+
outputDir: string;
|
|
65
|
+
/** `--check`: compare against disk, do not write. */
|
|
66
|
+
check?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Set when the run was filtered to a single workflow key. `inputs` is then a
|
|
69
|
+
* PARTIAL view, so orphan cleanup / stale detection is scoped to the filtered
|
|
70
|
+
* file and must not touch sibling `*.generated.swift` files. Mirrors the TS
|
|
71
|
+
* generator's `singleWorkflow`.
|
|
72
|
+
*/
|
|
73
|
+
singleWorkflow?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/** PascalCase, sanitized, non-keyword base type name for a workflow key.
|
|
76
|
+
* `create-checkout-session` → `CreateCheckoutSession`; `123-job` → `_123Job`
|
|
77
|
+
* (digit-leading prefixed, parity with the TS `ensureValidIdentifierStart`). */
|
|
78
|
+
export declare function workflowSwiftTypeBaseName(key: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* A Swift string literal for a config key (the runtime call passes it
|
|
81
|
+
* verbatim). Exported so the functions emitter (#3344) pins its key literals
|
|
82
|
+
* through the SAME escape helper rather than a second copy of these rules.
|
|
83
|
+
*/
|
|
84
|
+
export declare function swiftKeyLiteral(key: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Render the full `<key>.generated.swift` content for a single workflow TOML.
|
|
87
|
+
* Returns null for a reserved (`__internal.*`) workflow. Pure — exported so
|
|
88
|
+
* tests can assert on the string directly.
|
|
89
|
+
*/
|
|
90
|
+
export declare function renderWorkflowSwiftFile(input: WorkflowSwiftCodegenInput): {
|
|
91
|
+
key: string;
|
|
92
|
+
content: string;
|
|
93
|
+
symbols: string[];
|
|
94
|
+
} | null;
|
|
95
|
+
/**
|
|
96
|
+
* Run Swift workflow codegen end-to-end. One `<key>.generated.swift` per
|
|
97
|
+
* workflow; delegates the disk lifecycle to the shared writer/checker with
|
|
98
|
+
* banner-scoped ownership so a shared Swift output dir stays safe.
|
|
99
|
+
*/
|
|
100
|
+
export declare function generateWorkflowSwiftTypes(options: GenerateWorkflowSwiftTypesOptions): Promise<WriteOrCheckResult>;
|