primitive-admin 1.2.0-alpha.0 → 1.2.0-alpha.10
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 +108 -136
- package/assets/skill/skills/primitive-platform/SKILL.md +37 -4
- package/dist/bin/primitive.js +30 -35
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/agent-sessions.d.ts +133 -0
- package/dist/src/commands/agent-sessions.js +792 -0
- package/dist/src/commands/agent-sessions.js.map +1 -0
- package/dist/src/commands/analytics.js +0 -148
- package/dist/src/commands/analytics.js.map +1 -1
- package/dist/src/commands/apps-children.d.ts +54 -0
- package/dist/src/commands/apps-children.js +631 -0
- package/dist/src/commands/apps-children.js.map +1 -0
- package/dist/src/commands/apps.d.ts +6 -0
- package/dist/src/commands/apps.js +131 -9
- package/dist/src/commands/apps.js.map +1 -1
- package/dist/src/commands/auth-sessions.d.ts +3 -3
- package/dist/src/commands/auth-sessions.js +117 -23
- package/dist/src/commands/auth-sessions.js.map +1 -1
- package/dist/src/commands/auth.js +460 -36
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/collections.js +316 -256
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/config.d.ts +1 -1
- package/dist/src/commands/config.js +60 -28
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/connections.js +12 -17
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/database-type-configs.js +2 -76
- package/dist/src/commands/database-type-configs.js.map +1 -1
- package/dist/src/commands/databases.d.ts +9 -0
- package/dist/src/commands/databases.js +228 -566
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/db3-types.d.ts +15 -0
- package/dist/src/commands/db3-types.js +157 -0
- package/dist/src/commands/db3-types.js.map +1 -0
- package/dist/src/commands/db3.d.ts +12 -0
- package/dist/src/commands/db3.js +1052 -0
- package/dist/src/commands/db3.js.map +1 -0
- package/dist/src/commands/documents.d.ts +121 -2
- package/dist/src/commands/documents.js +1601 -1251
- package/dist/src/commands/documents.js.map +1 -1
- package/dist/src/commands/env.d.ts +9 -1
- package/dist/src/commands/env.js +164 -49
- package/dist/src/commands/env.js.map +1 -1
- package/dist/src/commands/function-trigger-commands.d.ts +28 -0
- package/dist/src/commands/function-trigger-commands.js +341 -0
- package/dist/src/commands/function-trigger-commands.js.map +1 -0
- package/dist/src/commands/functions.js +297 -24
- package/dist/src/commands/functions.js.map +1 -1
- package/dist/src/commands/groups.js +150 -49
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.js +5 -5
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.js +23 -5
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.js +14 -8
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/metadata-category-configs.d.ts +2 -2
- package/dist/src/commands/metadata-category-configs.js +2 -2
- package/dist/src/commands/prompts.d.ts +7 -0
- package/dist/src/commands/prompts.js +48 -5
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +9 -17
- package/dist/src/commands/scripts.js +24 -479
- package/dist/src/commands/scripts.js.map +1 -1
- package/dist/src/commands/sessions.js +3 -8
- package/dist/src/commands/sessions.js.map +1 -1
- package/dist/src/commands/sync-app-settings.d.ts +36 -8
- package/dist/src/commands/sync-app-settings.js +109 -23
- package/dist/src/commands/sync-app-settings.js.map +1 -1
- package/dist/src/commands/sync.d.ts +436 -613
- package/dist/src/commands/sync.js +2604 -5977
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/tokens.js +4 -9
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/commands/users.js +77 -2
- package/dist/src/commands/users.js.map +1 -1
- package/dist/src/commands/workflows.d.ts +5 -83
- package/dist/src/commands/workflows.js +57 -2282
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/aggregate-output.d.ts +25 -0
- package/dist/src/lib/aggregate-output.js +53 -0
- package/dist/src/lib/aggregate-output.js.map +1 -0
- package/dist/src/lib/api-client.d.ts +681 -581
- package/dist/src/lib/api-client.js +880 -851
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/app-settings-descriptor.d.ts +47 -1
- package/dist/src/lib/app-settings-descriptor.js +114 -10
- package/dist/src/lib/app-settings-descriptor.js.map +1 -1
- package/dist/src/lib/auth-fixtures.d.ts +44 -0
- package/dist/src/lib/auth-fixtures.js +61 -0
- package/dist/src/lib/auth-fixtures.js.map +1 -0
- package/dist/src/lib/auth-flow.d.ts +41 -1
- package/dist/src/lib/auth-flow.js +70 -16
- package/dist/src/lib/auth-flow.js.map +1 -1
- package/dist/src/lib/block-layout.d.ts +12 -23
- package/dist/src/lib/block-layout.js +26 -92
- package/dist/src/lib/block-layout.js.map +1 -1
- package/dist/src/lib/block-selector.d.ts +2 -2
- package/dist/src/lib/block-selector.js +2 -2
- package/dist/src/lib/child-apps-local.d.ts +164 -0
- package/dist/src/lib/child-apps-local.js +258 -0
- package/dist/src/lib/child-apps-local.js.map +1 -0
- package/dist/src/lib/ci-session-request.d.ts +22 -0
- package/dist/src/lib/ci-session-request.js +51 -0
- package/dist/src/lib/ci-session-request.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +10 -8
- package/dist/src/lib/codegen-shared/generatedFiles.js +21 -15
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -1
- package/dist/src/lib/codegen-shared/prettierStable.d.ts +1 -1
- package/dist/src/lib/codegen-shared/prettierStable.js +1 -1
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +2 -2
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +2 -2
- package/dist/src/lib/collection-export.d.ts +76 -15
- package/dist/src/lib/collection-export.js +116 -23
- package/dist/src/lib/collection-export.js.map +1 -1
- package/dist/src/lib/collection-principal.d.ts +22 -0
- package/dist/src/lib/collection-principal.js +35 -0
- package/dist/src/lib/collection-principal.js.map +1 -0
- package/dist/src/lib/config-object-descriptor.d.ts +3 -22
- package/dist/src/lib/config-object-descriptor.js +56 -291
- package/dist/src/lib/config-object-descriptor.js.map +1 -1
- package/dist/src/lib/config-payload.js +2 -3
- package/dist/src/lib/config-payload.js.map +1 -1
- package/dist/src/lib/config-surface.d.ts +5 -7
- package/dist/src/lib/config-surface.js +18 -40
- package/dist/src/lib/config-surface.js.map +1 -1
- package/dist/src/lib/connections-list.d.ts +10 -0
- package/dist/src/lib/connections-list.js +18 -0
- package/dist/src/lib/connections-list.js.map +1 -0
- package/dist/src/lib/credentials-home.d.ts +58 -0
- package/dist/src/lib/credentials-home.js +204 -0
- package/dist/src/lib/credentials-home.js.map +1 -0
- package/dist/src/lib/credentials-lock.d.ts +88 -0
- package/dist/src/lib/credentials-lock.js +302 -0
- package/dist/src/lib/credentials-lock.js.map +1 -0
- package/dist/src/lib/credentials-store.d.ts +179 -24
- package/dist/src/lib/credentials-store.js +712 -77
- package/dist/src/lib/credentials-store.js.map +1 -1
- package/dist/src/lib/csv.d.ts +8 -9
- package/dist/src/lib/csv.js +3 -4
- package/dist/src/lib/csv.js.map +1 -1
- package/dist/src/lib/custodian.d.ts +8 -0
- package/dist/src/lib/custodian.js +18 -0
- package/dist/src/lib/custodian.js.map +1 -0
- package/dist/src/lib/db-codegen/dbGenerator.js +5 -16
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/db-codegen/dbNaming.d.ts +5 -13
- package/dist/src/lib/db-codegen/dbNaming.js +5 -17
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +7 -56
- package/dist/src/lib/db-codegen/dbTemplates.js +25 -125
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +2 -2
- package/dist/src/lib/db-codegen/dbTsTypes.js +2 -2
- package/dist/src/lib/db-codegen/dbTypeIR.d.ts +67 -2
- package/dist/src/lib/db-codegen/dbTypeIR.js +13 -2
- package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -1
- package/dist/src/lib/db3-export.d.ts +231 -0
- package/dist/src/lib/db3-export.js +510 -0
- package/dist/src/lib/db3-export.js.map +1 -0
- package/dist/src/lib/db3-index-output.d.ts +27 -0
- package/dist/src/lib/db3-index-output.js +49 -0
- package/dist/src/lib/db3-index-output.js.map +1 -0
- package/dist/src/lib/document-export-lookups.d.ts +31 -0
- package/dist/src/lib/document-export-lookups.js +53 -0
- package/dist/src/lib/document-export-lookups.js.map +1 -0
- package/dist/src/lib/document-export-permissions.d.ts +7 -5
- package/dist/src/lib/document-export-permissions.js +7 -5
- package/dist/src/lib/document-export-permissions.js.map +1 -1
- package/dist/src/lib/document-export-record-log.d.ts +57 -0
- package/dist/src/lib/document-export-record-log.js +215 -0
- package/dist/src/lib/document-export-record-log.js.map +1 -0
- package/dist/src/lib/document-ingest-artifact.d.ts +26 -2
- package/dist/src/lib/document-ingest-artifact.js +42 -8
- package/dist/src/lib/document-ingest-artifact.js.map +1 -1
- package/dist/src/lib/document-ingest-format2.d.ts +36 -0
- package/dist/src/lib/document-ingest-format2.js +78 -0
- package/dist/src/lib/document-ingest-format2.js.map +1 -0
- package/dist/src/lib/document-ingest-input.d.ts +9 -0
- package/dist/src/lib/document-ingest-input.js +28 -1
- package/dist/src/lib/document-ingest-input.js.map +1 -1
- package/dist/src/lib/document-ingest-rows.d.ts +16 -0
- package/dist/src/lib/document-ingest-rows.js +17 -0
- package/dist/src/lib/document-ingest-rows.js.map +1 -1
- package/dist/src/lib/document-ingest.d.ts +33 -1
- package/dist/src/lib/document-ingest.js +49 -0
- package/dist/src/lib/document-ingest.js.map +1 -1
- package/dist/src/lib/document-schema-rows.d.ts +42 -0
- package/dist/src/lib/document-schema-rows.js +53 -0
- package/dist/src/lib/document-schema-rows.js.map +1 -0
- package/dist/src/lib/env-resolver-core.d.ts +70 -2
- package/dist/src/lib/env-resolver-core.js +137 -20
- package/dist/src/lib/env-resolver-core.js.map +1 -1
- package/dist/src/lib/env-resolver.d.ts +14 -2
- package/dist/src/lib/env-resolver.js +32 -10
- package/dist/src/lib/env-resolver.js.map +1 -1
- package/dist/src/lib/function-authorize-check.d.ts +142 -0
- package/dist/src/lib/function-authorize-check.js +310 -0
- package/dist/src/lib/function-authorize-check.js.map +1 -0
- package/dist/src/lib/function-authorize-view.d.ts +15 -0
- package/dist/src/lib/function-authorize-view.js +50 -0
- package/dist/src/lib/function-authorize-view.js.map +1 -0
- package/dist/src/lib/function-bundle.d.ts +38 -18
- package/dist/src/lib/function-bundle.js +96 -35
- package/dist/src/lib/function-bundle.js.map +1 -1
- package/dist/src/lib/function-collect.d.ts +75 -12
- package/dist/src/lib/function-collect.js +427 -12
- package/dist/src/lib/function-collect.js.map +1 -1
- package/dist/src/lib/function-db-types.d.ts +29 -0
- package/dist/src/lib/function-db-types.js +117 -7
- package/dist/src/lib/function-db-types.js.map +1 -1
- package/dist/src/lib/function-document-types.d.ts +5 -3
- package/dist/src/lib/function-document-types.js +10 -14
- package/dist/src/lib/function-document-types.js.map +1 -1
- package/dist/src/lib/function-lint.d.ts +34 -0
- package/dist/src/lib/function-lint.js +112 -0
- package/dist/src/lib/function-lint.js.map +1 -0
- package/dist/src/lib/function-log-row.js +21 -2
- package/dist/src/lib/function-log-row.js.map +1 -1
- package/dist/src/lib/function-run.d.ts +16 -21
- package/dist/src/lib/function-run.js +37 -30
- package/dist/src/lib/function-run.js.map +1 -1
- package/dist/src/lib/function-schema-codegen.d.ts +1 -1
- package/dist/src/lib/function-schema-codegen.js +5 -5
- package/dist/src/lib/function-schema-codegen.js.map +1 -1
- package/dist/src/lib/function-source-roots.d.ts +67 -0
- package/dist/src/lib/function-source-roots.js +148 -0
- package/dist/src/lib/function-source-roots.js.map +1 -0
- package/dist/src/lib/function-sync.d.ts +108 -22
- package/dist/src/lib/function-sync.js +127 -39
- package/dist/src/lib/function-sync.js.map +1 -1
- package/dist/src/lib/function-trigger-listing.d.ts +11 -6
- package/dist/src/lib/function-trigger-listing.js +32 -11
- package/dist/src/lib/function-trigger-listing.js.map +1 -1
- package/dist/src/lib/function-typecheck.d.ts +37 -2
- package/dist/src/lib/function-typecheck.js +210 -28
- package/dist/src/lib/function-typecheck.js.map +1 -1
- package/dist/src/lib/function-versions.d.ts +2 -0
- package/dist/src/lib/function-versions.js +1 -0
- package/dist/src/lib/function-versions.js.map +1 -1
- package/dist/src/lib/generated-allowlist.js +0 -20
- package/dist/src/lib/generated-allowlist.js.map +1 -1
- package/dist/src/lib/generated-config-surfaces.d.ts +703 -201
- package/dist/src/lib/generated-config-surfaces.js +2335 -2033
- package/dist/src/lib/generated-config-surfaces.js.map +1 -1
- package/dist/src/lib/generated-sdk-types.d.ts +1 -1
- package/dist/src/lib/generated-sdk-types.js +1 -1
- package/dist/src/lib/generated-sdk-types.js.map +1 -1
- package/dist/src/lib/init-adopt.js +12 -3
- package/dist/src/lib/init-adopt.js.map +1 -1
- package/dist/src/lib/init-login-note.d.ts +13 -0
- package/dist/src/lib/init-login-note.js +22 -0
- package/dist/src/lib/init-login-note.js.map +1 -0
- package/dist/src/lib/json-value.d.ts +6 -0
- package/dist/src/lib/json-value.js +13 -0
- package/dist/src/lib/json-value.js.map +1 -0
- package/dist/src/lib/load-routes.d.ts +33 -0
- package/dist/src/lib/load-routes.js +35 -0
- package/dist/src/lib/load-routes.js.map +1 -0
- package/dist/src/lib/local-state.d.ts +38 -7
- package/dist/src/lib/local-state.js +172 -49
- package/dist/src/lib/local-state.js.map +1 -1
- package/dist/src/lib/local-test-cases.d.ts +5 -2
- package/dist/src/lib/local-test-cases.js +7 -4
- package/dist/src/lib/local-test-cases.js.map +1 -1
- package/dist/src/lib/log-inspection.d.ts +42 -4
- package/dist/src/lib/log-inspection.js +37 -5
- package/dist/src/lib/log-inspection.js.map +1 -1
- package/dist/src/lib/login-exchange-check.d.ts +18 -0
- package/dist/src/lib/login-exchange-check.js +27 -0
- package/dist/src/lib/login-exchange-check.js.map +1 -0
- package/dist/src/lib/login-scope-lines.d.ts +25 -0
- package/dist/src/lib/login-scope-lines.js +45 -0
- package/dist/src/lib/login-scope-lines.js.map +1 -0
- package/dist/src/lib/logout-admin-session.d.ts +2 -1
- package/dist/src/lib/logout-admin-session.js +7 -1
- package/dist/src/lib/logout-admin-session.js.map +1 -1
- package/dist/src/lib/object-status-filter.d.ts +9 -1
- package/dist/src/lib/object-status-filter.js +9 -1
- package/dist/src/lib/object-status-filter.js.map +1 -1
- package/dist/src/lib/output.js +2 -0
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/paginate.d.ts +0 -5
- package/dist/src/lib/paginate.js +0 -5
- package/dist/src/lib/paginate.js.map +1 -1
- package/dist/src/lib/pin-refusal-hint.d.ts +12 -0
- package/dist/src/lib/pin-refusal-hint.js +35 -0
- package/dist/src/lib/pin-refusal-hint.js.map +1 -0
- package/dist/src/lib/primitive-env-plugin.d.ts +99 -0
- package/dist/src/lib/primitive-env-plugin.js +408 -0
- package/dist/src/lib/primitive-env-plugin.js.map +1 -0
- package/dist/src/lib/project-config.d.ts +7 -0
- package/dist/src/lib/project-config.js +22 -1
- package/dist/src/lib/project-config.js.map +1 -1
- package/dist/src/lib/project-login-apps.d.ts +8 -0
- package/dist/src/lib/project-login-apps.js +27 -0
- package/dist/src/lib/project-login-apps.js.map +1 -0
- package/dist/src/lib/prompt-schema-codegen.d.ts +10 -3
- package/dist/src/lib/prompt-schema-codegen.js +52 -11
- package/dist/src/lib/prompt-schema-codegen.js.map +1 -1
- package/dist/src/lib/pull-write.d.ts +31 -0
- package/dist/src/lib/pull-write.js +49 -0
- package/dist/src/lib/pull-write.js.map +1 -0
- package/dist/src/lib/push-failure-report.d.ts +45 -0
- package/dist/src/lib/push-failure-report.js +57 -0
- package/dist/src/lib/push-failure-report.js.map +1 -0
- package/dist/src/lib/records-verbs.d.ts +69 -0
- package/dist/src/lib/records-verbs.js +40 -0
- package/dist/src/lib/records-verbs.js.map +1 -0
- package/dist/src/lib/refresh-admin-credentials.d.ts +7 -0
- package/dist/src/lib/refresh-admin-credentials.js +16 -4
- package/dist/src/lib/refresh-admin-credentials.js.map +1 -1
- package/dist/src/lib/root-import-decision.d.ts +65 -0
- package/dist/src/lib/root-import-decision.js +109 -0
- package/dist/src/lib/root-import-decision.js.map +1 -0
- package/dist/src/lib/run-status.d.ts +1 -1
- package/dist/src/lib/run-status.generated.d.ts +2 -2
- package/dist/src/lib/run-status.generated.js +3 -1
- package/dist/src/lib/run-status.generated.js.map +1 -1
- package/dist/src/lib/run-status.js +1 -1
- package/dist/src/lib/schema-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/schema-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/schema-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/schema-codegen/naming.d.ts +35 -0
- package/dist/src/lib/schema-codegen/naming.js +83 -0
- package/dist/src/lib/schema-codegen/naming.js.map +1 -0
- package/dist/src/lib/schema-codegen/schemaToTs.d.ts +82 -0
- package/dist/src/lib/schema-codegen/schemaToTs.js +305 -0
- package/dist/src/lib/schema-codegen/schemaToTs.js.map +1 -0
- package/dist/src/lib/scope-request.d.ts +84 -0
- package/dist/src/lib/scope-request.js +235 -0
- package/dist/src/lib/scope-request.js.map +1 -0
- package/dist/src/lib/session-id.d.ts +9 -0
- package/dist/src/lib/session-id.js +28 -0
- package/dist/src/lib/session-id.js.map +1 -0
- package/dist/src/lib/snapshot-build-rows.d.ts +21 -0
- package/dist/src/lib/snapshot-build-rows.js +22 -0
- package/dist/src/lib/snapshot-build-rows.js.map +1 -1
- package/dist/src/lib/snapshot-build.js +8 -3
- package/dist/src/lib/snapshot-build.js.map +1 -1
- package/dist/src/lib/snapshots.d.ts +17 -1
- package/dist/src/lib/snapshots.js +50 -2
- package/dist/src/lib/snapshots.js.map +1 -1
- package/dist/src/lib/swift-codegen/agentGenerator.d.ts +6 -2
- package/dist/src/lib/swift-codegen/agentGenerator.js +57 -5
- package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/banners.d.ts +34 -7
- package/dist/src/lib/swift-codegen/banners.js +37 -7
- package/dist/src/lib/swift-codegen/banners.js.map +1 -1
- package/dist/src/lib/swift-codegen/dbGenerator.d.ts +4 -3
- package/dist/src/lib/swift-codegen/dbGenerator.js +14 -117
- package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/functionGenerator.d.ts +3 -3
- package/dist/src/lib/swift-codegen/functionGenerator.js +23 -18
- package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -1
- package/dist/src/lib/swift-codegen/generator.d.ts +5 -5
- package/dist/src/lib/swift-codegen/generator.js +35 -40
- package/dist/src/lib/swift-codegen/generator.js.map +1 -1
- package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +3 -3
- package/dist/src/lib/swift-codegen/schemaToSwift.js +4 -4
- package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -1
- package/dist/src/lib/swift-codegen/swiftKeys.d.ts +19 -0
- package/dist/src/lib/swift-codegen/swiftKeys.js +31 -0
- package/dist/src/lib/swift-codegen/swiftKeys.js.map +1 -0
- package/dist/src/lib/sync-paths.d.ts +35 -0
- package/dist/src/lib/sync-paths.js +57 -5
- package/dist/src/lib/sync-paths.js.map +1 -1
- package/dist/src/lib/sync-resource-types.d.ts +26 -26
- package/dist/src/lib/sync-resource-types.js +61 -189
- package/dist/src/lib/sync-resource-types.js.map +1 -1
- package/dist/src/lib/sync-selectors.d.ts +5 -1
- package/dist/src/lib/sync-selectors.js +23 -13
- package/dist/src/lib/sync-selectors.js.map +1 -1
- package/dist/src/lib/test-case-file-names.d.ts +3 -5
- package/dist/src/lib/test-case-file-names.js +3 -5
- package/dist/src/lib/test-case-file-names.js.map +1 -1
- package/dist/src/lib/toml-database-config.d.ts +15 -75
- package/dist/src/lib/toml-database-config.js +17 -306
- package/dist/src/lib/toml-database-config.js.map +1 -1
- package/dist/src/lib/transient-retry.d.ts +43 -0
- package/dist/src/lib/transient-retry.js +94 -0
- package/dist/src/lib/transient-retry.js.map +1 -0
- package/dist/src/lib/vars-override.d.ts +105 -0
- package/dist/src/lib/vars-override.js +143 -0
- package/dist/src/lib/vars-override.js.map +1 -0
- package/dist/src/lib/webhook-capture.d.ts +43 -0
- package/dist/src/lib/webhook-capture.js +91 -0
- package/dist/src/lib/webhook-capture.js.map +1 -0
- package/dist/src/lib/webhook-deliver.d.ts +18 -20
- package/dist/src/lib/webhook-deliver.js +34 -89
- package/dist/src/lib/webhook-deliver.js.map +1 -1
- package/dist/src/lib/webhook-test-run.d.ts +32 -0
- package/dist/src/lib/webhook-test-run.js +108 -0
- package/dist/src/lib/webhook-test-run.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +7 -7
- package/dist/src/lib/workflow-codegen/generator.js +16 -23
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -1
- package/dist/src/lib/workflow-codegen/invokerIR.d.ts +6 -12
- package/dist/src/lib/workflow-codegen/invokerIR.js +4 -5
- package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -1
- package/dist/src/lib/workflow-toml-validator.d.ts +2 -0
- package/dist/src/lib/workflow-toml-validator.js +28 -1
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +30 -37
- package/dist/src/validators.d.ts +7 -55
- package/dist/src/validators.js +7 -53
- package/dist/src/validators.js.map +1 -1
- package/dist/src/vite.d.ts +17 -0
- package/dist/src/vite.js +18 -0
- package/dist/src/vite.js.map +1 -0
- package/package.json +20 -12
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON-Schema → TypeScript converter shared by `functions codegen` and the
|
|
3
|
+
* prompt codegen (issue #1442, written for `workflows codegen`, which #3190
|
|
4
|
+
* retired).
|
|
5
|
+
*
|
|
6
|
+
* An `inputSchema`/`outputSchema` is real JSON Schema. This converter
|
|
7
|
+
* types only the subset the server's validator descends into — and it reads
|
|
8
|
+
* that interpretation from the SAME descriptor the server validator consumes,
|
|
9
|
+
* vendored into the CLI as `generated-schema-descriptor.ts` (a byte copy of
|
|
10
|
+
* `src/function-runs/schema-descriptor.ts`, kept fresh by
|
|
11
|
+
* `cli/scripts/gen-schema-descriptor.mjs` + its drift guard). So the
|
|
12
|
+
* generated type and the runtime validation can never disagree on:
|
|
13
|
+
*
|
|
14
|
+
* - `type` single scalar (`string`/`number`/`integer`/`boolean`/`null`) →
|
|
15
|
+
* the mapped TS scalar.
|
|
16
|
+
* - `type` array-union — only when every member is a scalar/`null` → a TS
|
|
17
|
+
* union. A union that contains `object` or `array` renders `unknown`,
|
|
18
|
+
* because the server only walks `properties`/`items` for the bare string
|
|
19
|
+
* `"object"`/`"array"` — a union is never descended, so a precise-looking
|
|
20
|
+
* type would over-promise.
|
|
21
|
+
* - `enum` → a scalar-literal union, intersected with the declared `type`
|
|
22
|
+
* first (the server gates on `type` before checking `enum`).
|
|
23
|
+
* - `type: "object"` with `properties` → a nested object type; `required[]`
|
|
24
|
+
* drives `name:` vs `name?:`. An OPEN object (no `additionalProperties:
|
|
25
|
+
* false`) also emits `[key: string]: unknown` so extra keys the runtime
|
|
26
|
+
* validator accepts don't hit TS excess-property errors; a CLOSED object
|
|
27
|
+
* (`additionalProperties: false`) omits the index signature.
|
|
28
|
+
* - `type: "array"` with `items` → `T[]`.
|
|
29
|
+
* - `oneOf` whose members are ALL `type: "object"` → a discriminated
|
|
30
|
+
* (tagged) union: the `|`-union of member object types, keyed by an
|
|
31
|
+
* auto-detected single-literal-`enum` discriminator (#1511). A defective
|
|
32
|
+
* all-object tagged union (no/ambiguous discriminator, <2 members) or an
|
|
33
|
+
* all-object `anyOf` (unsupported in v1) is a STRICT codegen error, not a
|
|
34
|
+
* silent `unknown` (Fork 3, resolved by the maintainer).
|
|
35
|
+
*
|
|
36
|
+
* Everything else the server ignores (`$ref`, `allOf`, `format`,
|
|
37
|
+
* `patternProperties`, numeric constraints, tuple `items`, and a `oneOf`/`anyOf`
|
|
38
|
+
* whose members are NOT all objects) renders `unknown`.
|
|
39
|
+
*
|
|
40
|
+
* Errors are NOT swallowed here — a malformed schema fails upstream at parse
|
|
41
|
+
* time, and a defective tagged union throws — this walker otherwise returns
|
|
42
|
+
* `unknown` for anything it does not recognize.
|
|
43
|
+
*
|
|
44
|
+
* FORMATTING CONTRACT (#1565): the types emitted here must be a fixed point of
|
|
45
|
+
* Prettier's DEFAULT config, since `workflows codegen --check` byte-compares
|
|
46
|
+
* the emission against disk. Long unions therefore render through
|
|
47
|
+
* `codegen-shared/prettierStable.ts` (which reproduces Prettier's width
|
|
48
|
+
* decision) instead of being joined with `" | "`. There is no Prettier
|
|
49
|
+
* dependency and no automated round-trip test, so verify any change to these
|
|
50
|
+
* shapes by hand — see that module's header.
|
|
51
|
+
*/
|
|
52
|
+
import { describeSchema, isType, } from "./generated-schema-descriptor.js";
|
|
53
|
+
import { arrayOf, atom, block, indent as pad2, printType, recordOf, renderMember, tsStringLiteral, union, } from "../codegen-shared/prettierStable.js";
|
|
54
|
+
/** Scalar JSON-schema types this converter maps to a concrete TS scalar. */
|
|
55
|
+
const SCALAR_TS = {
|
|
56
|
+
string: "string",
|
|
57
|
+
number: "number",
|
|
58
|
+
integer: "number",
|
|
59
|
+
boolean: "boolean",
|
|
60
|
+
null: "null",
|
|
61
|
+
};
|
|
62
|
+
/** A shared empty-object reference for the `{}`-rejection probe below. */
|
|
63
|
+
const EMPTY_OBJECT = Object.freeze({});
|
|
64
|
+
/**
|
|
65
|
+
* Render a scalar-literal union from an `enum` array. A string member is
|
|
66
|
+
* emitted via `tsStringLiteral` (Prettier's quote choice, #1565); a number,
|
|
67
|
+
* boolean, or `null` via `JSON.stringify`, which is already a Prettier fixed
|
|
68
|
+
* point for those. An object/array member has no TS literal form, so the whole
|
|
69
|
+
* enum falls back to `unknown` (returns `null` here).
|
|
70
|
+
*/
|
|
71
|
+
function tsUnionFromScalarEnum(values) {
|
|
72
|
+
if (!Array.isArray(values) || values.length === 0)
|
|
73
|
+
return null;
|
|
74
|
+
const literals = [];
|
|
75
|
+
const seen = new Set();
|
|
76
|
+
for (const v of values) {
|
|
77
|
+
if (v !== null && (typeof v === "object" || Array.isArray(v))) {
|
|
78
|
+
// Objects/arrays are not representable as TS literals.
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const literal = typeof v === "string" ? tsStringLiteral(v) : JSON.stringify(v);
|
|
82
|
+
if (literal === undefined)
|
|
83
|
+
return null; // e.g. `undefined` in the enum
|
|
84
|
+
if (!seen.has(literal)) {
|
|
85
|
+
seen.add(literal);
|
|
86
|
+
literals.push(literal);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return literals.length > 0 ? union(literals.map(atom)) : null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Convert a parsed JSON Schema node to a TypeScript type expression. Object
|
|
93
|
+
* types render multi-line (2-space indent per level); everything else renders
|
|
94
|
+
* on a single line unless it is too wide for Prettier's default print width
|
|
95
|
+
* (#1565). `indent` is the current indentation depth.
|
|
96
|
+
*/
|
|
97
|
+
export function schemaToTsType(schema, indent = 0) {
|
|
98
|
+
return printType(schemaToTypeNode(schema), indent * 2, indent);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* `schemaToTsType` as a wrappable node — the emitters print it at the position
|
|
102
|
+
* it actually occupies so long unions/objects wrap exactly as Prettier would
|
|
103
|
+
* (#1565). See `codegen-shared/prettierStable.ts`.
|
|
104
|
+
*/
|
|
105
|
+
export function schemaToTypeNode(schema) {
|
|
106
|
+
const d = describeSchema(schema);
|
|
107
|
+
// `enum` is the most specific constraint — the server checks it AFTER the
|
|
108
|
+
// type gate, so when both are present only the enum members that satisfy the
|
|
109
|
+
// declared type(s) are reachable. Emit just those (intersect with `type`
|
|
110
|
+
// via the shared `isType`). If the type filter leaves nothing representable,
|
|
111
|
+
// fall through to plain `type` rendering rather than over-promising.
|
|
112
|
+
if (d.enumValues) {
|
|
113
|
+
const allowedTypes = d.types;
|
|
114
|
+
const candidates = allowedTypes.length > 0
|
|
115
|
+
? d.enumValues.filter((v) => allowedTypes.some((t) => isType(v, t)))
|
|
116
|
+
: d.enumValues;
|
|
117
|
+
if (candidates.length === 0) {
|
|
118
|
+
// No enum member satisfies the declared type gate (or the enum is empty),
|
|
119
|
+
// so the runtime rejects EVERY value: the type gate lets some values
|
|
120
|
+
// through, then `enum.includes(value)` fails them all. The reachable set
|
|
121
|
+
// is empty → an uninhabitable `never`. Widening to the declared type here
|
|
122
|
+
// (e.g. `{type:"string", enum:[1]}` → `string`) would let typed callers
|
|
123
|
+
// pass values the server always rejects.
|
|
124
|
+
return atom("never");
|
|
125
|
+
}
|
|
126
|
+
const enumUnion = tsUnionFromScalarEnum(candidates);
|
|
127
|
+
if (enumUnion !== null)
|
|
128
|
+
return enumUnion;
|
|
129
|
+
// Candidates survive the type gate but aren't representable as TS literals
|
|
130
|
+
// (object/array enum members). With no declared type there is nothing to
|
|
131
|
+
// fall back on → `unknown`; otherwise fall through to plain `type`.
|
|
132
|
+
if (allowedTypes.length === 0)
|
|
133
|
+
return atom("unknown");
|
|
134
|
+
}
|
|
135
|
+
// Array-union type (e.g. `["string", "null"]`). Only scalar/null members get
|
|
136
|
+
// a precise union — the server never descends `properties`/`items` for a
|
|
137
|
+
// union, so an object/array member forces `unknown`.
|
|
138
|
+
if (d.isUnion) {
|
|
139
|
+
const parts = [];
|
|
140
|
+
const seen = new Set();
|
|
141
|
+
for (const t of d.types) {
|
|
142
|
+
const mapped = SCALAR_TS[t];
|
|
143
|
+
// object/array/unknown member
|
|
144
|
+
if (mapped === undefined)
|
|
145
|
+
return atom("unknown");
|
|
146
|
+
if (!seen.has(mapped)) {
|
|
147
|
+
seen.add(mapped);
|
|
148
|
+
parts.push(mapped);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return parts.length > 0 ? union(parts.map(atom)) : atom("unknown");
|
|
152
|
+
}
|
|
153
|
+
// Discriminated-union (`oneOf`) rendering (#1511). A qualifying tagged union
|
|
154
|
+
// has no top-level `type`, so this runs ahead of the `singularType === null`
|
|
155
|
+
// fallback. Render each member via the existing object rendering and join
|
|
156
|
+
// with `|` — the natural TS discriminated union TS narrows on. A defective
|
|
157
|
+
// all-object tagged union (`kind: "invalid"`) is a strict codegen error
|
|
158
|
+
// (Fork 3, resolved by the maintainer), not a silent `unknown`.
|
|
159
|
+
if (d.oneOf) {
|
|
160
|
+
if (d.oneOf.kind === "invalid") {
|
|
161
|
+
throw new Error(`schema codegen: ${d.oneOf.reason}`);
|
|
162
|
+
}
|
|
163
|
+
const { discriminant } = d.oneOf;
|
|
164
|
+
const members = d.oneOf.members.map((m) => {
|
|
165
|
+
const md = describeSchema(m.schema);
|
|
166
|
+
// Every member is `type: "object"` with `properties`, so `md.object` is
|
|
167
|
+
// non-null — reuse the shared object rendering rather than reimplement it.
|
|
168
|
+
if (!md.object)
|
|
169
|
+
return schemaToTypeNode(m.schema);
|
|
170
|
+
// The runtime validator always requires the discriminator present before
|
|
171
|
+
// it can select a branch — regardless of whether the member lists it in
|
|
172
|
+
// its own `required`. Force it required so the generated union can't
|
|
173
|
+
// compile a value that omits the tag (which the runtime rejects as
|
|
174
|
+
// "matches no case") (#1511).
|
|
175
|
+
const required = md.object.required.includes(discriminant)
|
|
176
|
+
? md.object.required
|
|
177
|
+
: [...md.object.required, discriminant];
|
|
178
|
+
return objectNode({ ...md.object, required });
|
|
179
|
+
});
|
|
180
|
+
return union(members);
|
|
181
|
+
}
|
|
182
|
+
if (d.singularType === null) {
|
|
183
|
+
// No usable single type and no enum — the server enforces nothing.
|
|
184
|
+
return atom("unknown");
|
|
185
|
+
}
|
|
186
|
+
// Object: the server walks `properties`/`required` ONLY when the type is
|
|
187
|
+
// exactly `"object"`. `d.object` is non-null only in that case with declared
|
|
188
|
+
// properties; a typed object with no properties is open → Record.
|
|
189
|
+
if (d.singularType === "object") {
|
|
190
|
+
if (d.object)
|
|
191
|
+
return objectNode(d.object);
|
|
192
|
+
return recordOf("unknown");
|
|
193
|
+
}
|
|
194
|
+
// Array: the server walks `items` ONLY when the type is exactly `"array"`.
|
|
195
|
+
if (d.singularType === "array") {
|
|
196
|
+
const items = d.array ? d.array.items : undefined;
|
|
197
|
+
// Missing or tuple `items` (an array of schemas) is ignored → unknown[].
|
|
198
|
+
if (!items || typeof items !== "object" || Array.isArray(items)) {
|
|
199
|
+
return atom("unknown[]");
|
|
200
|
+
}
|
|
201
|
+
return arrayOf(schemaToTypeNode(items));
|
|
202
|
+
}
|
|
203
|
+
// Single scalar type.
|
|
204
|
+
const scalar = SCALAR_TS[d.singularType];
|
|
205
|
+
return scalar ? atom(scalar) : atom("unknown");
|
|
206
|
+
}
|
|
207
|
+
/** An object type as a node — always multi-line, so Prettier never collapses it. */
|
|
208
|
+
function objectNode(objectDesc) {
|
|
209
|
+
return block((level) => renderObjectType(objectDesc, level));
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Render an object descriptor (`describeSchema(...).object`) as a TS object
|
|
213
|
+
* type. `required[]` drives optionality. An OPEN object (not
|
|
214
|
+
* `additionalProperties: false`) emits `[key: string]: unknown` so extra keys
|
|
215
|
+
* the runtime accepts don't trip TS excess-property checks; a CLOSED object
|
|
216
|
+
* omits it.
|
|
217
|
+
*/
|
|
218
|
+
function renderObjectType(objectDesc, indent) {
|
|
219
|
+
const { properties, required, additionalPropertiesClosed } = objectDesc;
|
|
220
|
+
const propNames = Object.keys(properties);
|
|
221
|
+
const requiredSet = new Set(Array.isArray(required)
|
|
222
|
+
? required.filter((k) => typeof k === "string")
|
|
223
|
+
: []);
|
|
224
|
+
const pad = pad2(indent + 1);
|
|
225
|
+
const closePad = pad2(indent);
|
|
226
|
+
const propNameSet = new Set(propNames);
|
|
227
|
+
const lines = [];
|
|
228
|
+
for (const name of propNames) {
|
|
229
|
+
lines.push(renderMember(indent + 1, quotePropIfNeeded(name), !requiredSet.has(name), schemaToTypeNode(properties[name])));
|
|
230
|
+
}
|
|
231
|
+
// A key listed in `required` but absent from `properties` has no declared
|
|
232
|
+
// child schema, yet the validator still rejects an object missing it. Emit it
|
|
233
|
+
// as a required `unknown` member so the generated type demands the key too —
|
|
234
|
+
// otherwise `{properties:{}, required:["id"]}` would accept `{}`, which the
|
|
235
|
+
// runtime rejects.
|
|
236
|
+
for (const name of requiredSet) {
|
|
237
|
+
if (!propNameSet.has(name)) {
|
|
238
|
+
lines.push(`${pad}${quotePropIfNeeded(name)}: unknown;`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Open objects accept extra keys at runtime; model that with an index
|
|
242
|
+
// signature so a call site passing an unlisted key still compiles.
|
|
243
|
+
if (!additionalPropertiesClosed) {
|
|
244
|
+
lines.push(`${pad}[key: string]: unknown;`);
|
|
245
|
+
}
|
|
246
|
+
// A closed object with no members at all renders `{}` — Prettier collapses an
|
|
247
|
+
// empty `{\n}` to `{}`, so emit it that way to stay byte-stable (#1565).
|
|
248
|
+
if (lines.length === 0)
|
|
249
|
+
return "{}";
|
|
250
|
+
return ["{", ...lines, `${closePad}}`].join("\n");
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Quote an object-property name when it is not a plain identifier (so keys with
|
|
254
|
+
* hyphens, dots, or other characters render as valid TS). A quoted key uses
|
|
255
|
+
* Prettier's quote choice so it stays a fixed point (#1565).
|
|
256
|
+
*/
|
|
257
|
+
function quotePropIfNeeded(name) {
|
|
258
|
+
if (/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name))
|
|
259
|
+
return name;
|
|
260
|
+
return tsStringLiteral(name);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* True when the schema REJECTS an empty object `{}` — i.e. the client's
|
|
264
|
+
* `rootInput: options.input ?? {}` fallback would fail validation, so `input`
|
|
265
|
+
* must be a compile-time-required option (issue #1442, P4). Derived from the
|
|
266
|
+
* shared descriptor so it matches the server validator exactly:
|
|
267
|
+
*
|
|
268
|
+
* - a valid top-level discriminated-union (`oneOf`): the runtime always
|
|
269
|
+
* requires the discriminator present, so `{}` matches no case;
|
|
270
|
+
* - a declared top-level `type` that `{}` does not satisfy (anything but
|
|
271
|
+
* `object`, e.g. `string`/`array`, or a union with no `object` arm);
|
|
272
|
+
* - a top-level `enum` (a fresh `{}` is never an enum member);
|
|
273
|
+
* - `type: "object"` with a non-empty `required[]` (a missing required key).
|
|
274
|
+
*
|
|
275
|
+
* An all-optional object schema, or a schema with no top-level constraints,
|
|
276
|
+
* accepts `{}` → `input` is optional.
|
|
277
|
+
*/
|
|
278
|
+
export function schemaRejectsEmptyObject(schema) {
|
|
279
|
+
const d = describeSchema(schema);
|
|
280
|
+
// 0. A valid discriminated-union (`oneOf`) always requires the discriminator
|
|
281
|
+
// present before the runtime can select a branch, so a fresh `{}` (the
|
|
282
|
+
// client's `input ?? {}` fallback) matches no case and is rejected. The
|
|
283
|
+
// generated `input` must therefore be required, not optional (#1511).
|
|
284
|
+
if (d.oneOf && d.oneOf.kind === "valid") {
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
// 1. Type gate: `{}` must satisfy at least one declared type.
|
|
288
|
+
if (d.types.length && !d.types.some((t) => isType(EMPTY_OBJECT, t))) {
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
// 2. Enum gate: a JSON enum never contains a value reference-equal to `{}`,
|
|
292
|
+
// so any enum rejects it (mirrors `enum.includes(value)` at runtime).
|
|
293
|
+
if (d.enumValues && !d.enumValues.includes(EMPTY_OBJECT)) {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
// 3. Object required: any required key is absent from `{}`.
|
|
297
|
+
if (d.object) {
|
|
298
|
+
for (const key of d.object.required) {
|
|
299
|
+
if (!(key in EMPTY_OBJECT))
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=schemaToTs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaToTs.js","sourceRoot":"","sources":["../../../../src/lib/schema-codegen/schemaToTs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The request `primitive login` and `primitive token --scope …` send to
|
|
3
|
+
* `GET /admin/api/oauth-cli` (#3889).
|
|
4
|
+
*
|
|
5
|
+
* One builder serves both commands, so they agree on every rule: `--step-up`
|
|
6
|
+
* asks for a step-up holding exactly `--scope` (#4564), and a list holding
|
|
7
|
+
* `admin` is one with or without the flag; a step-up names the current
|
|
8
|
+
* session as its parent and is pinned to the environment's app unless
|
|
9
|
+
* `--app` says otherwise (`--app all` asks for an unpinned one); any other
|
|
10
|
+
* login in a project is pinned to the project's apps on its server (#4512);
|
|
11
|
+
* a printed token carries its lifetime. `primitive auth sessions create`
|
|
12
|
+
* builds its CI-session request here too (#3890). Every mistake is a usage
|
|
13
|
+
* error before any browser opens.
|
|
14
|
+
*
|
|
15
|
+
* Pure: the flags, the environment's app id, the project's apps and the
|
|
16
|
+
* stored session's id are arguments.
|
|
17
|
+
*/
|
|
18
|
+
/** The five admin scopes. */
|
|
19
|
+
export declare const ADMIN_SCOPES: readonly ["read", "write", "admin", "data:read", "data:write"];
|
|
20
|
+
/** The longest a step-up lives. */
|
|
21
|
+
export declare const STEP_UP_MAX_SECONDS: number;
|
|
22
|
+
/** The longest a token `primitive token` prints lives. */
|
|
23
|
+
export declare const PRINTED_TOKEN_MAX_SECONDS: number;
|
|
24
|
+
/** How long a CI session lives unless `--ttl` says otherwise: 90 days (#3890). */
|
|
25
|
+
export declare const CI_SESSION_DEFAULT_SECONDS: number;
|
|
26
|
+
/** The longest a CI session lives: 1 year. */
|
|
27
|
+
export declare const CI_SESSION_MAX_SECONDS: number;
|
|
28
|
+
/** The longest a CI session's name may be. */
|
|
29
|
+
export declare const CI_SESSION_NAME_MAX_LENGTH = 64;
|
|
30
|
+
/**
|
|
31
|
+
* Seconds in a duration of the `tokens create --ttl` grammar (`15m`, `1h`,
|
|
32
|
+
* `7d`, `6mo`, `1y`), or null when it is not one.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseDurationSeconds(value: string): number | null;
|
|
35
|
+
/** The flags and context one request is built from. */
|
|
36
|
+
export interface ScopeRequestInput {
|
|
37
|
+
/** `sessions` is `primitive auth sessions create`: a CI session (#3890). */
|
|
38
|
+
command: "login" | "token" | "sessions";
|
|
39
|
+
/** `--scope`: a comma-separated list. */
|
|
40
|
+
scope?: string;
|
|
41
|
+
/** `--app`: a comma-separated list, or `all`. */
|
|
42
|
+
app?: string;
|
|
43
|
+
/** `--ttl` (`token` and `sessions` only). */
|
|
44
|
+
ttl?: string;
|
|
45
|
+
/** `--step-up` (`login` and `token`): a step-up holding exactly `--scope`. */
|
|
46
|
+
stepUp?: boolean;
|
|
47
|
+
/** `--name` (`sessions` only). */
|
|
48
|
+
name?: string;
|
|
49
|
+
/** The environment's app, when the command runs in a project. */
|
|
50
|
+
envAppId?: string;
|
|
51
|
+
/**
|
|
52
|
+
* The project a login runs in: the server it signs in to and the apps of
|
|
53
|
+
* the committed environments on that server (`projectLoginApps`). Absent
|
|
54
|
+
* outside a project.
|
|
55
|
+
*/
|
|
56
|
+
project?: {
|
|
57
|
+
serverUrl: string;
|
|
58
|
+
apps: string[];
|
|
59
|
+
};
|
|
60
|
+
/** The stored session's `sid`, when there is one. */
|
|
61
|
+
parentSid?: string;
|
|
62
|
+
/**
|
|
63
|
+
* The stored login a CI session is created from (`sessions` only); null
|
|
64
|
+
* when there is none. Only a login holding a refresh token can prove it is
|
|
65
|
+
* an original login.
|
|
66
|
+
*/
|
|
67
|
+
login?: {
|
|
68
|
+
refreshToken: string;
|
|
69
|
+
} | null;
|
|
70
|
+
}
|
|
71
|
+
export type ScopeRequest = {
|
|
72
|
+
ok: true;
|
|
73
|
+
query: Record<string, string>;
|
|
74
|
+
stepUp: boolean;
|
|
75
|
+
} | {
|
|
76
|
+
ok: false;
|
|
77
|
+
message: string;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* The `oauth-cli` query for a login or a printed token, or the usage error
|
|
81
|
+
* that stops the command. A login without `--scope` asks for the server's
|
|
82
|
+
* default scope and sends none.
|
|
83
|
+
*/
|
|
84
|
+
export declare function buildScopeRequest(input: ScopeRequestInput): ScopeRequest;
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The request `primitive login` and `primitive token --scope …` send to
|
|
3
|
+
* `GET /admin/api/oauth-cli` (#3889).
|
|
4
|
+
*
|
|
5
|
+
* One builder serves both commands, so they agree on every rule: `--step-up`
|
|
6
|
+
* asks for a step-up holding exactly `--scope` (#4564), and a list holding
|
|
7
|
+
* `admin` is one with or without the flag; a step-up names the current
|
|
8
|
+
* session as its parent and is pinned to the environment's app unless
|
|
9
|
+
* `--app` says otherwise (`--app all` asks for an unpinned one); any other
|
|
10
|
+
* login in a project is pinned to the project's apps on its server (#4512);
|
|
11
|
+
* a printed token carries its lifetime. `primitive auth sessions create`
|
|
12
|
+
* builds its CI-session request here too (#3890). Every mistake is a usage
|
|
13
|
+
* error before any browser opens.
|
|
14
|
+
*
|
|
15
|
+
* Pure: the flags, the environment's app id, the project's apps and the
|
|
16
|
+
* stored session's id are arguments.
|
|
17
|
+
*/
|
|
18
|
+
/** The five admin scopes. */
|
|
19
|
+
export const ADMIN_SCOPES = ["read", "write", "admin", "data:read", "data:write"];
|
|
20
|
+
/** The longest a step-up lives. */
|
|
21
|
+
export const STEP_UP_MAX_SECONDS = 15 * 60;
|
|
22
|
+
/** The longest a token `primitive token` prints lives. */
|
|
23
|
+
export const PRINTED_TOKEN_MAX_SECONDS = 60 * 60;
|
|
24
|
+
/** How long a CI session lives unless `--ttl` says otherwise: 90 days (#3890). */
|
|
25
|
+
export const CI_SESSION_DEFAULT_SECONDS = 90 * 86400;
|
|
26
|
+
/** The longest a CI session lives: 1 year. */
|
|
27
|
+
export const CI_SESSION_MAX_SECONDS = 365 * 86400;
|
|
28
|
+
/** The longest a CI session's name may be. */
|
|
29
|
+
export const CI_SESSION_NAME_MAX_LENGTH = 64;
|
|
30
|
+
const UNIT_SECONDS = {
|
|
31
|
+
m: 60,
|
|
32
|
+
min: 60,
|
|
33
|
+
h: 3600,
|
|
34
|
+
d: 86400,
|
|
35
|
+
w: 7 * 86400,
|
|
36
|
+
mo: 30 * 86400,
|
|
37
|
+
y: 365 * 86400,
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Seconds in a duration of the `tokens create --ttl` grammar (`15m`, `1h`,
|
|
41
|
+
* `7d`, `6mo`, `1y`), or null when it is not one.
|
|
42
|
+
*/
|
|
43
|
+
export function parseDurationSeconds(value) {
|
|
44
|
+
const match = /^(\d+)(mo|min|m|h|d|w|y)$/.exec(value);
|
|
45
|
+
if (!match)
|
|
46
|
+
return null;
|
|
47
|
+
return Number(match[1]) * UNIT_SECONDS[match[2]];
|
|
48
|
+
}
|
|
49
|
+
const NONE_RENAMED = "--app none is now --app all: pass --app all for an unpinned request";
|
|
50
|
+
function usage(message) {
|
|
51
|
+
return { ok: false, message };
|
|
52
|
+
}
|
|
53
|
+
const OUTSIDE_PROJECT = "Outside a project there is no list of apps to limit this login to. Run `primitive login --app all` to sign in to all of your apps, or `primitive init` to create a project.";
|
|
54
|
+
/**
|
|
55
|
+
* The apps `--app` names: none for `all`, or the list. Only `all` unpins: an
|
|
56
|
+
* empty list (an unset `$APP_ID`) or an empty entry must not quietly widen
|
|
57
|
+
* the request to every app.
|
|
58
|
+
*/
|
|
59
|
+
function appsFlag(app) {
|
|
60
|
+
if (app === "none")
|
|
61
|
+
return usage(NONE_RENAMED);
|
|
62
|
+
if (app === "all")
|
|
63
|
+
return [];
|
|
64
|
+
const apps = app.split(",").map((a) => a.trim());
|
|
65
|
+
if (apps.some((a) => a === "")) {
|
|
66
|
+
return usage("--app is a comma-separated list of app ids; pass --app all for an unpinned request");
|
|
67
|
+
}
|
|
68
|
+
return apps;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The pins of a login that does not name its apps and is not a step-up: the
|
|
72
|
+
* project's apps on its server (#4512).
|
|
73
|
+
*/
|
|
74
|
+
function projectPins(input) {
|
|
75
|
+
if (!input.project)
|
|
76
|
+
return usage(OUTSIDE_PROJECT);
|
|
77
|
+
if (input.project.apps.length === 0) {
|
|
78
|
+
return usage(`No environment in primitive/config.json uses ${input.project.serverUrl}, so there is nothing to pin this login to. Run \`primitive login --app all\` to sign in to all of your apps, or \`primitive login --app <ids>\`.`);
|
|
79
|
+
}
|
|
80
|
+
return input.project.apps;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The `oauth-cli` query for a login or a printed token, or the usage error
|
|
84
|
+
* that stops the command. A login without `--scope` asks for the server's
|
|
85
|
+
* default scope and sends none.
|
|
86
|
+
*/
|
|
87
|
+
export function buildScopeRequest(input) {
|
|
88
|
+
const { command } = input;
|
|
89
|
+
if (command === "sessions")
|
|
90
|
+
return buildCiSessionRequest(input);
|
|
91
|
+
if (input.stepUp && input.scope === undefined) {
|
|
92
|
+
return usage(`--step-up needs the scopes the command needs: primitive ${command} --step-up --scope <list> [--app <ids>]`);
|
|
93
|
+
}
|
|
94
|
+
if (input.scope === undefined) {
|
|
95
|
+
if (command === "token") {
|
|
96
|
+
if (input.app !== undefined)
|
|
97
|
+
return usage("--app needs --scope: primitive token --scope <list> --app <ids>");
|
|
98
|
+
return usage("--ttl needs --scope: primitive token --scope <list> --ttl <d>");
|
|
99
|
+
}
|
|
100
|
+
if (input.ttl !== undefined)
|
|
101
|
+
return usage("--ttl applies only to primitive token");
|
|
102
|
+
const apps = input.app !== undefined ? appsFlag(input.app) : projectPins(input);
|
|
103
|
+
if (!Array.isArray(apps))
|
|
104
|
+
return apps;
|
|
105
|
+
const query = {};
|
|
106
|
+
if (apps.length > 0)
|
|
107
|
+
query.apps = apps.join(",");
|
|
108
|
+
query.origin = "login";
|
|
109
|
+
return { ok: true, query, stepUp: false };
|
|
110
|
+
}
|
|
111
|
+
if (command === "login" && input.ttl !== undefined) {
|
|
112
|
+
return usage("--ttl applies only to primitive token; a login keeps its usual lifetime");
|
|
113
|
+
}
|
|
114
|
+
const scopes = input.scope.split(",").map((s) => s.trim());
|
|
115
|
+
if (scopes.some((s) => s === "")) {
|
|
116
|
+
return usage(`--scope is a comma-separated list of ${ADMIN_SCOPES.join(", ")}`);
|
|
117
|
+
}
|
|
118
|
+
const unknown = scopes.filter((s) => !ADMIN_SCOPES.includes(s));
|
|
119
|
+
if (unknown.length > 0) {
|
|
120
|
+
return usage(`Unknown scope ${unknown.join(", ")}. Scopes are ${ADMIN_SCOPES.join(", ")}.`);
|
|
121
|
+
}
|
|
122
|
+
const stepUp = input.stepUp === true || scopes.includes("admin");
|
|
123
|
+
if (stepUp && !input.parentSid) {
|
|
124
|
+
return usage("A step-up builds on your current login. Run `primitive login` first.");
|
|
125
|
+
}
|
|
126
|
+
const apps = input.app !== undefined
|
|
127
|
+
? appsFlag(input.app)
|
|
128
|
+
: stepUp
|
|
129
|
+
? input.envAppId
|
|
130
|
+
? [input.envAppId]
|
|
131
|
+
: []
|
|
132
|
+
: command === "login"
|
|
133
|
+
? projectPins(input)
|
|
134
|
+
: [];
|
|
135
|
+
if (!Array.isArray(apps))
|
|
136
|
+
return apps;
|
|
137
|
+
// An explicit step-up says so; one holding `admin` is inferred by the
|
|
138
|
+
// server, as it is from older CLIs.
|
|
139
|
+
const query = {
|
|
140
|
+
...(input.stepUp ? { kind: "step-up" } : {}),
|
|
141
|
+
scope: scopes.join(","),
|
|
142
|
+
};
|
|
143
|
+
if (apps.length > 0)
|
|
144
|
+
query.apps = apps.join(",");
|
|
145
|
+
if (stepUp)
|
|
146
|
+
query.parent = input.parentSid;
|
|
147
|
+
query.origin = command;
|
|
148
|
+
if (command === "token") {
|
|
149
|
+
const max = stepUp ? STEP_UP_MAX_SECONDS : PRINTED_TOKEN_MAX_SECONDS;
|
|
150
|
+
let seconds = max;
|
|
151
|
+
if (input.ttl !== undefined) {
|
|
152
|
+
const parsed = parseDurationSeconds(input.ttl);
|
|
153
|
+
if (parsed === null || parsed <= 0) {
|
|
154
|
+
return usage(`Invalid --ttl ${input.ttl}: use a duration such as 15m or 1h`);
|
|
155
|
+
}
|
|
156
|
+
if (parsed > max) {
|
|
157
|
+
return usage(stepUp
|
|
158
|
+
? `A step-up lives at most 15 minutes; --ttl ${input.ttl} is longer`
|
|
159
|
+
: `A printed token lives at most 1 hour; --ttl ${input.ttl} is longer`);
|
|
160
|
+
}
|
|
161
|
+
seconds = parsed;
|
|
162
|
+
}
|
|
163
|
+
query.ttl = String(seconds);
|
|
164
|
+
}
|
|
165
|
+
return { ok: true, query, stepUp };
|
|
166
|
+
}
|
|
167
|
+
const CREATE_USAGE = "primitive auth sessions create --name <name> --scope <list> --app <ids> [--ttl <d>]";
|
|
168
|
+
/**
|
|
169
|
+
* The `oauth-cli` query of `primitive auth sessions create` (#3890), without
|
|
170
|
+
* the proof the command asks the server for next: a CI session is named,
|
|
171
|
+
* pinned, never holds `admin`, lives 90 days unless `--ttl` says otherwise
|
|
172
|
+
* and a year at most, and is created from a stored login that holds a
|
|
173
|
+
* refresh token. Every mistake is a usage error before any request.
|
|
174
|
+
*/
|
|
175
|
+
function buildCiSessionRequest(input) {
|
|
176
|
+
const name = (input.name ?? "").trim();
|
|
177
|
+
if (!name)
|
|
178
|
+
return usage(`--name is required: ${CREATE_USAGE}`);
|
|
179
|
+
if (name.length > CI_SESSION_NAME_MAX_LENGTH) {
|
|
180
|
+
return usage(`--name is at most ${CI_SESSION_NAME_MAX_LENGTH} characters`);
|
|
181
|
+
}
|
|
182
|
+
if (input.scope === undefined)
|
|
183
|
+
return usage(`--scope is required: ${CREATE_USAGE}`);
|
|
184
|
+
const scopes = input.scope.split(",").map((s) => s.trim());
|
|
185
|
+
if (scopes.some((s) => s === "")) {
|
|
186
|
+
return usage(`--scope is a comma-separated list of ${ADMIN_SCOPES.join(", ")}`);
|
|
187
|
+
}
|
|
188
|
+
const unknown = scopes.filter((s) => !ADMIN_SCOPES.includes(s));
|
|
189
|
+
if (unknown.length > 0) {
|
|
190
|
+
return usage(`Unknown scope ${unknown.join(", ")}. Scopes are ${ADMIN_SCOPES.join(", ")}.`);
|
|
191
|
+
}
|
|
192
|
+
if (scopes.includes("admin")) {
|
|
193
|
+
return usage("A CI session never holds admin: drop it from --scope");
|
|
194
|
+
}
|
|
195
|
+
if (input.app === undefined) {
|
|
196
|
+
return usage(`A CI session must be pinned: pass --app <ids>. ${CREATE_USAGE}`);
|
|
197
|
+
}
|
|
198
|
+
if (input.app === "none" || input.app === "all") {
|
|
199
|
+
return usage(`A CI session must be pinned to its apps; --app ${input.app} is not allowed. Pass --app <ids>.`);
|
|
200
|
+
}
|
|
201
|
+
const apps = input.app.split(",").map((a) => a.trim());
|
|
202
|
+
if (apps.some((a) => a === "")) {
|
|
203
|
+
return usage("--app is a comma-separated list of app ids");
|
|
204
|
+
}
|
|
205
|
+
let seconds = CI_SESSION_DEFAULT_SECONDS;
|
|
206
|
+
if (input.ttl !== undefined) {
|
|
207
|
+
const parsed = parseDurationSeconds(input.ttl);
|
|
208
|
+
if (parsed === null || parsed <= 0) {
|
|
209
|
+
return usage(`Invalid --ttl ${input.ttl}: use a duration such as 30d, 6mo or 1y`);
|
|
210
|
+
}
|
|
211
|
+
if (parsed > CI_SESSION_MAX_SECONDS) {
|
|
212
|
+
return usage(`A CI session lives at most 1 year; --ttl ${input.ttl} is longer`);
|
|
213
|
+
}
|
|
214
|
+
seconds = parsed;
|
|
215
|
+
}
|
|
216
|
+
if (!input.login) {
|
|
217
|
+
return usage("Not logged in. Run `primitive login` first, then create the CI session.");
|
|
218
|
+
}
|
|
219
|
+
if (!input.login.refreshToken) {
|
|
220
|
+
return usage("Your login has no refresh token, so it cannot create CI sessions. Run `primitive login`.");
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
ok: true,
|
|
224
|
+
stepUp: false,
|
|
225
|
+
query: {
|
|
226
|
+
kind: "ci",
|
|
227
|
+
name,
|
|
228
|
+
scope: scopes.join(","),
|
|
229
|
+
apps: apps.join(","),
|
|
230
|
+
origin: "sessions",
|
|
231
|
+
ttl: String(seconds),
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=scope-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope-request.js","sourceRoot":"","sources":["../../../src/lib/scope-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The admin session a token belongs to: a JWT's `sid` claim, or the session
|
|
3
|
+
* segment of an opaque CI token (`primadm_<sessionId>_<secret>`, #3890).
|
|
4
|
+
* Read without verifying anything; the server is the judge of the token.
|
|
5
|
+
*/
|
|
6
|
+
/** Whether `token` is an opaque CI token rather than a JWT. */
|
|
7
|
+
export declare function isCiToken(token: string | undefined | null): boolean;
|
|
8
|
+
/** The session id `token` names, or undefined when it names none. */
|
|
9
|
+
export declare function sessionIdOfToken(token: string | undefined | null): string | undefined;
|