@marinoscar/platform-contract 0.0.0-stage → 0.1.0-next.4
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/CHANGELOG.md +206 -0
- package/LICENSE +21 -0
- package/README.md +167 -2
- package/dist/cjs/ai/capabilities.d.ts +85 -0
- package/dist/cjs/ai/capabilities.d.ts.map +1 -0
- package/dist/cjs/ai/capabilities.js +93 -0
- package/dist/cjs/ai/capabilities.js.map +1 -0
- package/dist/cjs/ai/constants.d.ts +239 -0
- package/dist/cjs/ai/constants.d.ts.map +1 -0
- package/dist/cjs/ai/constants.js +233 -0
- package/dist/cjs/ai/constants.js.map +1 -0
- package/dist/cjs/ai/features.d.ts +24 -0
- package/dist/cjs/ai/features.d.ts.map +1 -0
- package/dist/cjs/ai/features.js +33 -0
- package/dist/cjs/ai/features.js.map +1 -0
- package/dist/cjs/ai/index.d.ts +11 -0
- package/dist/cjs/ai/index.d.ts.map +1 -0
- package/dist/cjs/ai/index.js +81 -0
- package/dist/cjs/ai/index.js.map +1 -0
- package/dist/cjs/ai/org-keys.d.ts +50 -0
- package/dist/cjs/ai/org-keys.d.ts.map +1 -0
- package/dist/cjs/ai/org-keys.js +43 -0
- package/dist/cjs/ai/org-keys.js.map +1 -0
- package/dist/cjs/ai/schemas.d.ts +642 -0
- package/dist/cjs/ai/schemas.d.ts.map +1 -0
- package/dist/cjs/ai/schemas.js +894 -0
- package/dist/cjs/ai/schemas.js.map +1 -0
- package/dist/cjs/android-app/constants.d.ts +337 -0
- package/dist/cjs/android-app/constants.d.ts.map +1 -0
- package/dist/cjs/android-app/constants.js +312 -0
- package/dist/cjs/android-app/constants.js.map +1 -0
- package/dist/cjs/android-app/index.d.ts +5 -0
- package/dist/cjs/android-app/index.d.ts.map +1 -0
- package/dist/cjs/android-app/index.js +57 -0
- package/dist/cjs/android-app/index.js.map +1 -0
- package/dist/cjs/android-app/schemas.d.ts +358 -0
- package/dist/cjs/android-app/schemas.d.ts.map +1 -0
- package/dist/cjs/android-app/schemas.js +310 -0
- package/dist/cjs/android-app/schemas.js.map +1 -0
- package/dist/cjs/credentials/constants.d.ts +35 -0
- package/dist/cjs/credentials/constants.d.ts.map +1 -0
- package/dist/cjs/credentials/constants.js +39 -0
- package/dist/cjs/credentials/constants.js.map +1 -0
- package/dist/cjs/credentials/index.d.ts +5 -0
- package/dist/cjs/credentials/index.d.ts.map +1 -0
- package/dist/cjs/credentials/index.js +17 -0
- package/dist/cjs/credentials/index.js.map +1 -0
- package/dist/cjs/credentials/schemas.d.ts +64 -0
- package/dist/cjs/credentials/schemas.d.ts.map +1 -0
- package/dist/cjs/credentials/schemas.js +82 -0
- package/dist/cjs/credentials/schemas.js.map +1 -0
- package/dist/cjs/db-backup/config.d.ts +76 -0
- package/dist/cjs/db-backup/config.d.ts.map +1 -0
- package/dist/cjs/db-backup/config.js +115 -0
- package/dist/cjs/db-backup/config.js.map +1 -0
- package/dist/cjs/db-backup/constants.d.ts +314 -0
- package/dist/cjs/db-backup/constants.d.ts.map +1 -0
- package/dist/cjs/db-backup/constants.js +243 -0
- package/dist/cjs/db-backup/constants.js.map +1 -0
- package/dist/cjs/db-backup/index.d.ts +19 -0
- package/dist/cjs/db-backup/index.d.ts.map +1 -0
- package/dist/cjs/db-backup/index.js +81 -0
- package/dist/cjs/db-backup/index.js.map +1 -0
- package/dist/cjs/db-backup/node-credential.d.ts +37 -0
- package/dist/cjs/db-backup/node-credential.d.ts.map +1 -0
- package/dist/cjs/db-backup/node-credential.js +107 -0
- package/dist/cjs/db-backup/node-credential.js.map +1 -0
- package/dist/cjs/db-backup/node-result.d.ts +34 -0
- package/dist/cjs/db-backup/node-result.d.ts.map +1 -0
- package/dist/cjs/db-backup/node-result.js +168 -0
- package/dist/cjs/db-backup/node-result.js.map +1 -0
- package/dist/cjs/db-backup/restore.d.ts +405 -0
- package/dist/cjs/db-backup/restore.d.ts.map +1 -0
- package/dist/cjs/db-backup/restore.js +497 -0
- package/dist/cjs/db-backup/restore.js.map +1 -0
- package/dist/cjs/db-backup/run-actions.d.ts +49 -0
- package/dist/cjs/db-backup/run-actions.d.ts.map +1 -0
- package/dist/cjs/db-backup/run-actions.js +121 -0
- package/dist/cjs/db-backup/run-actions.js.map +1 -0
- package/dist/cjs/db-backup/runs-list-query.d.ts +20 -0
- package/dist/cjs/db-backup/runs-list-query.d.ts.map +1 -0
- package/dist/cjs/db-backup/runs-list-query.js +53 -0
- package/dist/cjs/db-backup/runs-list-query.js.map +1 -0
- package/dist/cjs/db-backup/runs.d.ts +46 -0
- package/dist/cjs/db-backup/runs.d.ts.map +1 -0
- package/dist/cjs/db-backup/runs.js +232 -0
- package/dist/cjs/db-backup/runs.js.map +1 -0
- package/dist/cjs/db-backup/schemas.d.ts +9 -0
- package/dist/cjs/db-backup/schemas.d.ts.map +1 -0
- package/dist/cjs/db-backup/schemas.js +31 -0
- package/dist/cjs/db-backup/schemas.js.map +1 -0
- package/dist/cjs/db-backup/settings-schemas.d.ts +217 -0
- package/dist/cjs/db-backup/settings-schemas.d.ts.map +1 -0
- package/dist/cjs/db-backup/settings-schemas.js +319 -0
- package/dist/cjs/db-backup/settings-schemas.js.map +1 -0
- package/dist/cjs/doctor/constants.d.ts +59 -0
- package/dist/cjs/doctor/constants.d.ts.map +1 -0
- package/dist/cjs/doctor/constants.js +57 -0
- package/dist/cjs/doctor/constants.js.map +1 -0
- package/dist/cjs/doctor/index.d.ts +5 -0
- package/dist/cjs/doctor/index.d.ts.map +1 -0
- package/dist/cjs/doctor/index.js +24 -0
- package/dist/cjs/doctor/index.js.map +1 -0
- package/dist/cjs/doctor/schemas.d.ts +186 -0
- package/dist/cjs/doctor/schemas.d.ts.map +1 -0
- package/dist/cjs/doctor/schemas.js +183 -0
- package/dist/cjs/doctor/schemas.js.map +1 -0
- package/dist/cjs/email/constants.d.ts +82 -0
- package/dist/cjs/email/constants.d.ts.map +1 -0
- package/dist/cjs/email/constants.js +82 -0
- package/dist/cjs/email/constants.js.map +1 -0
- package/dist/cjs/email/index.d.ts +5 -0
- package/dist/cjs/email/index.d.ts.map +1 -0
- package/dist/cjs/email/index.js +30 -0
- package/dist/cjs/email/index.js.map +1 -0
- package/dist/cjs/email/schemas.d.ts +276 -0
- package/dist/cjs/email/schemas.d.ts.map +1 -0
- package/dist/cjs/email/schemas.js +280 -0
- package/dist/cjs/email/schemas.js.map +1 -0
- package/dist/cjs/exports/constants.d.ts +123 -0
- package/dist/cjs/exports/constants.d.ts.map +1 -0
- package/dist/cjs/exports/constants.js +109 -0
- package/dist/cjs/exports/constants.js.map +1 -0
- package/dist/cjs/exports/index.d.ts +5 -0
- package/dist/cjs/exports/index.d.ts.map +1 -0
- package/dist/cjs/exports/index.js +42 -0
- package/dist/cjs/exports/index.js.map +1 -0
- package/dist/cjs/exports/schemas.d.ts +386 -0
- package/dist/cjs/exports/schemas.d.ts.map +1 -0
- package/dist/cjs/exports/schemas.js +288 -0
- package/dist/cjs/exports/schemas.js.map +1 -0
- package/dist/cjs/identity/constants.d.ts +273 -0
- package/dist/cjs/identity/constants.d.ts.map +1 -0
- package/dist/cjs/identity/constants.js +248 -0
- package/dist/cjs/identity/constants.js.map +1 -0
- package/dist/cjs/identity/index.d.ts +5 -0
- package/dist/cjs/identity/index.d.ts.map +1 -0
- package/dist/cjs/identity/index.js +73 -0
- package/dist/cjs/identity/index.js.map +1 -0
- package/dist/cjs/identity/schemas.d.ts +784 -0
- package/dist/cjs/identity/schemas.d.ts.map +1 -0
- package/dist/cjs/identity/schemas.js +684 -0
- package/dist/cjs/identity/schemas.js.map +1 -0
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/jobs/constants.d.ts +135 -0
- package/dist/cjs/jobs/constants.d.ts.map +1 -0
- package/dist/cjs/jobs/constants.js +130 -0
- package/dist/cjs/jobs/constants.js.map +1 -0
- package/dist/cjs/jobs/index.d.ts +9 -0
- package/dist/cjs/jobs/index.d.ts.map +1 -0
- package/dist/cjs/jobs/index.js +59 -0
- package/dist/cjs/jobs/index.js.map +1 -0
- package/dist/cjs/jobs/retention-schemas.d.ts +252 -0
- package/dist/cjs/jobs/retention-schemas.d.ts.map +1 -0
- package/dist/cjs/jobs/retention-schemas.js +233 -0
- package/dist/cjs/jobs/retention-schemas.js.map +1 -0
- package/dist/cjs/jobs/schemas.d.ts +361 -0
- package/dist/cjs/jobs/schemas.d.ts.map +1 -0
- package/dist/cjs/jobs/schemas.js +706 -0
- package/dist/cjs/jobs/schemas.js.map +1 -0
- package/dist/cjs/jobs/settings-schemas.d.ts +84 -0
- package/dist/cjs/jobs/settings-schemas.d.ts.map +1 -0
- package/dist/cjs/jobs/settings-schemas.js +116 -0
- package/dist/cjs/jobs/settings-schemas.js.map +1 -0
- package/dist/cjs/nodes/admin-schemas.d.ts +204 -0
- package/dist/cjs/nodes/admin-schemas.d.ts.map +1 -0
- package/dist/cjs/nodes/admin-schemas.js +153 -0
- package/dist/cjs/nodes/admin-schemas.js.map +1 -0
- package/dist/cjs/nodes/constants.d.ts +86 -0
- package/dist/cjs/nodes/constants.d.ts.map +1 -0
- package/dist/cjs/nodes/constants.js +102 -0
- package/dist/cjs/nodes/constants.js.map +1 -0
- package/dist/cjs/nodes/index.d.ts +8 -0
- package/dist/cjs/nodes/index.d.ts.map +1 -0
- package/dist/cjs/nodes/index.js +50 -0
- package/dist/cjs/nodes/index.js.map +1 -0
- package/dist/cjs/nodes/schemas.d.ts +332 -0
- package/dist/cjs/nodes/schemas.d.ts.map +1 -0
- package/dist/cjs/nodes/schemas.js +937 -0
- package/dist/cjs/nodes/schemas.js.map +1 -0
- package/dist/cjs/nodes/settings-schemas.d.ts +82 -0
- package/dist/cjs/nodes/settings-schemas.d.ts.map +1 -0
- package/dist/cjs/nodes/settings-schemas.js +106 -0
- package/dist/cjs/nodes/settings-schemas.js.map +1 -0
- package/dist/cjs/notifications/constants.d.ts +197 -0
- package/dist/cjs/notifications/constants.d.ts.map +1 -0
- package/dist/cjs/notifications/constants.js +181 -0
- package/dist/cjs/notifications/constants.js.map +1 -0
- package/dist/cjs/notifications/index.d.ts +5 -0
- package/dist/cjs/notifications/index.d.ts.map +1 -0
- package/dist/cjs/notifications/index.js +86 -0
- package/dist/cjs/notifications/index.js.map +1 -0
- package/dist/cjs/notifications/schemas.d.ts +1016 -0
- package/dist/cjs/notifications/schemas.d.ts.map +1 -0
- package/dist/cjs/notifications/schemas.js +851 -0
- package/dist/cjs/notifications/schemas.js.map +1 -0
- package/dist/cjs/onboarding/constants.d.ts +138 -0
- package/dist/cjs/onboarding/constants.d.ts.map +1 -0
- package/dist/cjs/onboarding/constants.js +123 -0
- package/dist/cjs/onboarding/constants.js.map +1 -0
- package/dist/cjs/onboarding/index.d.ts +5 -0
- package/dist/cjs/onboarding/index.d.ts.map +1 -0
- package/dist/cjs/onboarding/index.js +42 -0
- package/dist/cjs/onboarding/index.js.map +1 -0
- package/dist/cjs/onboarding/schemas.d.ts +360 -0
- package/dist/cjs/onboarding/schemas.d.ts.map +1 -0
- package/dist/cjs/onboarding/schemas.js +260 -0
- package/dist/cjs/onboarding/schemas.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/settings/constants.d.ts +206 -0
- package/dist/cjs/settings/constants.d.ts.map +1 -0
- package/dist/cjs/settings/constants.js +200 -0
- package/dist/cjs/settings/constants.js.map +1 -0
- package/dist/cjs/settings/index.d.ts +6 -0
- package/dist/cjs/settings/index.d.ts.map +1 -0
- package/dist/cjs/settings/index.js +62 -0
- package/dist/cjs/settings/index.js.map +1 -0
- package/dist/cjs/settings/schemas.d.ts +574 -0
- package/dist/cjs/settings/schemas.d.ts.map +1 -0
- package/dist/cjs/settings/schemas.js +437 -0
- package/dist/cjs/settings/schemas.js.map +1 -0
- package/dist/cjs/settings/types.d.ts +79 -0
- package/dist/cjs/settings/types.d.ts.map +1 -0
- package/dist/cjs/settings/types.js +6 -0
- package/dist/cjs/settings/types.js.map +1 -0
- package/dist/cjs/sharing/constants.d.ts +216 -0
- package/dist/cjs/sharing/constants.d.ts.map +1 -0
- package/dist/cjs/sharing/constants.js +163 -0
- package/dist/cjs/sharing/constants.js.map +1 -0
- package/dist/cjs/sharing/enum.d.ts +5 -0
- package/dist/cjs/sharing/enum.d.ts.map +1 -0
- package/dist/cjs/sharing/enum.js +9 -0
- package/dist/cjs/sharing/enum.js.map +1 -0
- package/dist/cjs/sharing/grants.d.ts +490 -0
- package/dist/cjs/sharing/grants.d.ts.map +1 -0
- package/dist/cjs/sharing/grants.js +447 -0
- package/dist/cjs/sharing/grants.js.map +1 -0
- package/dist/cjs/sharing/groups.d.ts +410 -0
- package/dist/cjs/sharing/groups.d.ts.map +1 -0
- package/dist/cjs/sharing/groups.js +375 -0
- package/dist/cjs/sharing/groups.js.map +1 -0
- package/dist/cjs/sharing/index.d.ts +5 -0
- package/dist/cjs/sharing/index.d.ts.map +1 -0
- package/dist/cjs/sharing/index.js +77 -0
- package/dist/cjs/sharing/index.js.map +1 -0
- package/dist/cjs/sharing/schemas.d.ts +3 -0
- package/dist/cjs/sharing/schemas.d.ts.map +1 -0
- package/dist/cjs/sharing/schemas.js +21 -0
- package/dist/cjs/sharing/schemas.js.map +1 -0
- package/dist/cjs/storage/constants.d.ts +111 -0
- package/dist/cjs/storage/constants.d.ts.map +1 -0
- package/dist/cjs/storage/constants.js +107 -0
- package/dist/cjs/storage/constants.js.map +1 -0
- package/dist/cjs/storage/index.d.ts +27 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +69 -0
- package/dist/cjs/storage/index.js.map +1 -0
- package/dist/cjs/storage/objects-complete-upload.d.ts +19 -0
- package/dist/cjs/storage/objects-complete-upload.d.ts.map +1 -0
- package/dist/cjs/storage/objects-complete-upload.js +19 -0
- package/dist/cjs/storage/objects-complete-upload.js.map +1 -0
- package/dist/cjs/storage/objects-download-url.d.ts +17 -0
- package/dist/cjs/storage/objects-download-url.d.ts.map +1 -0
- package/dist/cjs/storage/objects-download-url.js +16 -0
- package/dist/cjs/storage/objects-download-url.js.map +1 -0
- package/dist/cjs/storage/objects-init-upload.d.ts +39 -0
- package/dist/cjs/storage/objects-init-upload.d.ts.map +1 -0
- package/dist/cjs/storage/objects-init-upload.js +40 -0
- package/dist/cjs/storage/objects-init-upload.js.map +1 -0
- package/dist/cjs/storage/objects-list-query.d.ts +50 -0
- package/dist/cjs/storage/objects-list-query.d.ts.map +1 -0
- package/dist/cjs/storage/objects-list-query.js +23 -0
- package/dist/cjs/storage/objects-list-query.js.map +1 -0
- package/dist/cjs/storage/objects-object-response.d.ts +49 -0
- package/dist/cjs/storage/objects-object-response.d.ts.map +1 -0
- package/dist/cjs/storage/objects-object-response.js +54 -0
- package/dist/cjs/storage/objects-object-response.js.map +1 -0
- package/dist/cjs/storage/objects-update-metadata.d.ts +16 -0
- package/dist/cjs/storage/objects-update-metadata.d.ts.map +1 -0
- package/dist/cjs/storage/objects-update-metadata.js +14 -0
- package/dist/cjs/storage/objects-update-metadata.js.map +1 -0
- package/dist/cjs/storage/schemas.d.ts +13 -0
- package/dist/cjs/storage/schemas.d.ts.map +1 -0
- package/dist/cjs/storage/schemas.js +35 -0
- package/dist/cjs/storage/schemas.js.map +1 -0
- package/dist/cjs/storage/settings-schemas.d.ts +188 -0
- package/dist/cjs/storage/settings-schemas.d.ts.map +1 -0
- package/dist/cjs/storage/settings-schemas.js +223 -0
- package/dist/cjs/storage/settings-schemas.js.map +1 -0
- package/dist/cjs/storage/storage-bucket-provision.d.ts +152 -0
- package/dist/cjs/storage/storage-bucket-provision.d.ts.map +1 -0
- package/dist/cjs/storage/storage-bucket-provision.js +216 -0
- package/dist/cjs/storage/storage-bucket-provision.js.map +1 -0
- package/dist/cjs/storage/storage-config-response.d.ts +99 -0
- package/dist/cjs/storage/storage-config-response.d.ts.map +1 -0
- package/dist/cjs/storage/storage-config-response.js +173 -0
- package/dist/cjs/storage/storage-config-response.js.map +1 -0
- package/dist/cjs/storage/storage-config-update.d.ts +46 -0
- package/dist/cjs/storage/storage-config-update.d.ts.map +1 -0
- package/dist/cjs/storage/storage-config-update.js +133 -0
- package/dist/cjs/storage/storage-config-update.js.map +1 -0
- package/dist/cjs/storage/storage-connection-test.d.ts +129 -0
- package/dist/cjs/storage/storage-connection-test.d.ts.map +1 -0
- package/dist/cjs/storage/storage-connection-test.js +244 -0
- package/dist/cjs/storage/storage-connection-test.js.map +1 -0
- package/dist/cjs/storage/storage-status.d.ts +16 -0
- package/dist/cjs/storage/storage-status.d.ts.map +1 -0
- package/dist/cjs/storage/storage-status.js +23 -0
- package/dist/cjs/storage/storage-status.js.map +1 -0
- package/dist/cjs/telemetry/assistant.d.ts +173 -0
- package/dist/cjs/telemetry/assistant.d.ts.map +1 -0
- package/dist/cjs/telemetry/assistant.js +43 -0
- package/dist/cjs/telemetry/assistant.js.map +1 -0
- package/dist/cjs/telemetry/config.d.ts +96 -0
- package/dist/cjs/telemetry/config.d.ts.map +1 -0
- package/dist/cjs/telemetry/config.js +115 -0
- package/dist/cjs/telemetry/config.js.map +1 -0
- package/dist/cjs/telemetry/connection.d.ts +355 -0
- package/dist/cjs/telemetry/connection.d.ts.map +1 -0
- package/dist/cjs/telemetry/connection.js +451 -0
- package/dist/cjs/telemetry/connection.js.map +1 -0
- package/dist/cjs/telemetry/constants.d.ts +814 -0
- package/dist/cjs/telemetry/constants.d.ts.map +1 -0
- package/dist/cjs/telemetry/constants.js +685 -0
- package/dist/cjs/telemetry/constants.js.map +1 -0
- package/dist/cjs/telemetry/dashboard.d.ts +997 -0
- package/dist/cjs/telemetry/dashboard.d.ts.map +1 -0
- package/dist/cjs/telemetry/dashboard.js +755 -0
- package/dist/cjs/telemetry/dashboard.js.map +1 -0
- package/dist/cjs/telemetry/enum.d.ts +5 -0
- package/dist/cjs/telemetry/enum.d.ts.map +1 -0
- package/dist/cjs/telemetry/enum.js +12 -0
- package/dist/cjs/telemetry/enum.js.map +1 -0
- package/dist/cjs/telemetry/index.d.ts +5 -0
- package/dist/cjs/telemetry/index.d.ts.map +1 -0
- package/dist/cjs/telemetry/index.js +160 -0
- package/dist/cjs/telemetry/index.js.map +1 -0
- package/dist/cjs/telemetry/presentation.d.ts +243 -0
- package/dist/cjs/telemetry/presentation.d.ts.map +1 -0
- package/dist/cjs/telemetry/presentation.js +300 -0
- package/dist/cjs/telemetry/presentation.js.map +1 -0
- package/dist/cjs/telemetry/query.d.ts +147 -0
- package/dist/cjs/telemetry/query.d.ts.map +1 -0
- package/dist/cjs/telemetry/query.js +141 -0
- package/dist/cjs/telemetry/query.js.map +1 -0
- package/dist/cjs/telemetry/schemas.d.ts +20 -0
- package/dist/cjs/telemetry/schemas.d.ts.map +1 -0
- package/dist/cjs/telemetry/schemas.js +109 -0
- package/dist/cjs/telemetry/schemas.js.map +1 -0
- package/dist/cjs/telemetry/settings.d.ts +65 -0
- package/dist/cjs/telemetry/settings.d.ts.map +1 -0
- package/dist/cjs/telemetry/settings.js +77 -0
- package/dist/cjs/telemetry/settings.js.map +1 -0
- package/dist/cjs/telemetry/stack.d.ts +87 -0
- package/dist/cjs/telemetry/stack.d.ts.map +1 -0
- package/dist/cjs/telemetry/stack.js +93 -0
- package/dist/cjs/telemetry/stack.js.map +1 -0
- package/dist/cjs/telemetry/status.d.ts +65 -0
- package/dist/cjs/telemetry/status.d.ts.map +1 -0
- package/dist/cjs/telemetry/status.js +65 -0
- package/dist/cjs/telemetry/status.js.map +1 -0
- package/dist/cjs/telemetry/store.d.ts +111 -0
- package/dist/cjs/telemetry/store.d.ts.map +1 -0
- package/dist/cjs/telemetry/store.js +83 -0
- package/dist/cjs/telemetry/store.js.map +1 -0
- package/dist/cjs/user-data/constants.d.ts +157 -0
- package/dist/cjs/user-data/constants.d.ts.map +1 -0
- package/dist/cjs/user-data/constants.js +137 -0
- package/dist/cjs/user-data/constants.js.map +1 -0
- package/dist/cjs/user-data/index.d.ts +5 -0
- package/dist/cjs/user-data/index.d.ts.map +1 -0
- package/dist/cjs/user-data/index.js +46 -0
- package/dist/cjs/user-data/index.js.map +1 -0
- package/dist/cjs/user-data/schemas.d.ts +306 -0
- package/dist/cjs/user-data/schemas.d.ts.map +1 -0
- package/dist/cjs/user-data/schemas.js +333 -0
- package/dist/cjs/user-data/schemas.js.map +1 -0
- package/dist/esm/ai/capabilities.d.ts +85 -0
- package/dist/esm/ai/capabilities.d.ts.map +1 -0
- package/dist/esm/ai/capabilities.js +90 -0
- package/dist/esm/ai/capabilities.js.map +1 -0
- package/dist/esm/ai/constants.d.ts +239 -0
- package/dist/esm/ai/constants.d.ts.map +1 -0
- package/dist/esm/ai/constants.js +229 -0
- package/dist/esm/ai/constants.js.map +1 -0
- package/dist/esm/ai/features.d.ts +24 -0
- package/dist/esm/ai/features.d.ts.map +1 -0
- package/dist/esm/ai/features.js +30 -0
- package/dist/esm/ai/features.js.map +1 -0
- package/dist/esm/ai/index.d.ts +11 -0
- package/dist/esm/ai/index.d.ts.map +1 -0
- package/dist/esm/ai/index.js +16 -0
- package/dist/esm/ai/index.js.map +1 -0
- package/dist/esm/ai/org-keys.d.ts +50 -0
- package/dist/esm/ai/org-keys.d.ts.map +1 -0
- package/dist/esm/ai/org-keys.js +40 -0
- package/dist/esm/ai/org-keys.js.map +1 -0
- package/dist/esm/ai/schemas.d.ts +642 -0
- package/dist/esm/ai/schemas.d.ts.map +1 -0
- package/dist/esm/ai/schemas.js +889 -0
- package/dist/esm/ai/schemas.js.map +1 -0
- package/dist/esm/android-app/constants.d.ts +337 -0
- package/dist/esm/android-app/constants.d.ts.map +1 -0
- package/dist/esm/android-app/constants.js +306 -0
- package/dist/esm/android-app/constants.js.map +1 -0
- package/dist/esm/android-app/index.d.ts +5 -0
- package/dist/esm/android-app/index.d.ts.map +1 -0
- package/dist/esm/android-app/index.js +8 -0
- package/dist/esm/android-app/index.js.map +1 -0
- package/dist/esm/android-app/schemas.d.ts +358 -0
- package/dist/esm/android-app/schemas.d.ts.map +1 -0
- package/dist/esm/android-app/schemas.js +306 -0
- package/dist/esm/android-app/schemas.js.map +1 -0
- package/dist/esm/credentials/constants.d.ts +35 -0
- package/dist/esm/credentials/constants.d.ts.map +1 -0
- package/dist/esm/credentials/constants.js +36 -0
- package/dist/esm/credentials/constants.js.map +1 -0
- package/dist/esm/credentials/index.d.ts +5 -0
- package/dist/esm/credentials/index.d.ts.map +1 -0
- package/dist/esm/credentials/index.js +8 -0
- package/dist/esm/credentials/index.js.map +1 -0
- package/dist/esm/credentials/schemas.d.ts +64 -0
- package/dist/esm/credentials/schemas.d.ts.map +1 -0
- package/dist/esm/credentials/schemas.js +79 -0
- package/dist/esm/credentials/schemas.js.map +1 -0
- package/dist/esm/db-backup/config.d.ts +76 -0
- package/dist/esm/db-backup/config.d.ts.map +1 -0
- package/dist/esm/db-backup/config.js +112 -0
- package/dist/esm/db-backup/config.js.map +1 -0
- package/dist/esm/db-backup/constants.d.ts +314 -0
- package/dist/esm/db-backup/constants.d.ts.map +1 -0
- package/dist/esm/db-backup/constants.js +240 -0
- package/dist/esm/db-backup/constants.js.map +1 -0
- package/dist/esm/db-backup/index.d.ts +19 -0
- package/dist/esm/db-backup/index.d.ts.map +1 -0
- package/dist/esm/db-backup/index.js +25 -0
- package/dist/esm/db-backup/index.js.map +1 -0
- package/dist/esm/db-backup/node-credential.d.ts +37 -0
- package/dist/esm/db-backup/node-credential.d.ts.map +1 -0
- package/dist/esm/db-backup/node-credential.js +104 -0
- package/dist/esm/db-backup/node-credential.js.map +1 -0
- package/dist/esm/db-backup/node-result.d.ts +34 -0
- package/dist/esm/db-backup/node-result.d.ts.map +1 -0
- package/dist/esm/db-backup/node-result.js +165 -0
- package/dist/esm/db-backup/node-result.js.map +1 -0
- package/dist/esm/db-backup/restore.d.ts +405 -0
- package/dist/esm/db-backup/restore.d.ts.map +1 -0
- package/dist/esm/db-backup/restore.js +494 -0
- package/dist/esm/db-backup/restore.js.map +1 -0
- package/dist/esm/db-backup/run-actions.d.ts +49 -0
- package/dist/esm/db-backup/run-actions.d.ts.map +1 -0
- package/dist/esm/db-backup/run-actions.js +118 -0
- package/dist/esm/db-backup/run-actions.js.map +1 -0
- package/dist/esm/db-backup/runs-list-query.d.ts +20 -0
- package/dist/esm/db-backup/runs-list-query.d.ts.map +1 -0
- package/dist/esm/db-backup/runs-list-query.js +50 -0
- package/dist/esm/db-backup/runs-list-query.js.map +1 -0
- package/dist/esm/db-backup/runs.d.ts +46 -0
- package/dist/esm/db-backup/runs.d.ts.map +1 -0
- package/dist/esm/db-backup/runs.js +229 -0
- package/dist/esm/db-backup/runs.js.map +1 -0
- package/dist/esm/db-backup/schemas.d.ts +9 -0
- package/dist/esm/db-backup/schemas.d.ts.map +1 -0
- package/dist/esm/db-backup/schemas.js +15 -0
- package/dist/esm/db-backup/schemas.js.map +1 -0
- package/dist/esm/db-backup/settings-schemas.d.ts +217 -0
- package/dist/esm/db-backup/settings-schemas.d.ts.map +1 -0
- package/dist/esm/db-backup/settings-schemas.js +316 -0
- package/dist/esm/db-backup/settings-schemas.js.map +1 -0
- package/dist/esm/doctor/constants.d.ts +59 -0
- package/dist/esm/doctor/constants.d.ts.map +1 -0
- package/dist/esm/doctor/constants.js +54 -0
- package/dist/esm/doctor/constants.js.map +1 -0
- package/dist/esm/doctor/index.d.ts +5 -0
- package/dist/esm/doctor/index.d.ts.map +1 -0
- package/dist/esm/doctor/index.js +10 -0
- package/dist/esm/doctor/index.js.map +1 -0
- package/dist/esm/doctor/schemas.d.ts +186 -0
- package/dist/esm/doctor/schemas.d.ts.map +1 -0
- package/dist/esm/doctor/schemas.js +180 -0
- package/dist/esm/doctor/schemas.js.map +1 -0
- package/dist/esm/email/constants.d.ts +82 -0
- package/dist/esm/email/constants.d.ts.map +1 -0
- package/dist/esm/email/constants.js +79 -0
- package/dist/esm/email/constants.js.map +1 -0
- package/dist/esm/email/index.d.ts +5 -0
- package/dist/esm/email/index.d.ts.map +1 -0
- package/dist/esm/email/index.js +8 -0
- package/dist/esm/email/index.js.map +1 -0
- package/dist/esm/email/schemas.d.ts +276 -0
- package/dist/esm/email/schemas.d.ts.map +1 -0
- package/dist/esm/email/schemas.js +277 -0
- package/dist/esm/email/schemas.js.map +1 -0
- package/dist/esm/exports/constants.d.ts +123 -0
- package/dist/esm/exports/constants.d.ts.map +1 -0
- package/dist/esm/exports/constants.js +106 -0
- package/dist/esm/exports/constants.js.map +1 -0
- package/dist/esm/exports/index.d.ts +5 -0
- package/dist/esm/exports/index.d.ts.map +1 -0
- package/dist/esm/exports/index.js +7 -0
- package/dist/esm/exports/index.js.map +1 -0
- package/dist/esm/exports/schemas.d.ts +386 -0
- package/dist/esm/exports/schemas.d.ts.map +1 -0
- package/dist/esm/exports/schemas.js +285 -0
- package/dist/esm/exports/schemas.js.map +1 -0
- package/dist/esm/identity/constants.d.ts +273 -0
- package/dist/esm/identity/constants.d.ts.map +1 -0
- package/dist/esm/identity/constants.js +244 -0
- package/dist/esm/identity/constants.js.map +1 -0
- package/dist/esm/identity/index.d.ts +5 -0
- package/dist/esm/identity/index.d.ts.map +1 -0
- package/dist/esm/identity/index.js +10 -0
- package/dist/esm/identity/index.js.map +1 -0
- package/dist/esm/identity/schemas.d.ts +784 -0
- package/dist/esm/identity/schemas.d.ts.map +1 -0
- package/dist/esm/identity/schemas.js +681 -0
- package/dist/esm/identity/schemas.js.map +1 -0
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/jobs/constants.d.ts +135 -0
- package/dist/esm/jobs/constants.d.ts.map +1 -0
- package/dist/esm/jobs/constants.js +127 -0
- package/dist/esm/jobs/constants.js.map +1 -0
- package/dist/esm/jobs/index.d.ts +9 -0
- package/dist/esm/jobs/index.d.ts.map +1 -0
- package/dist/esm/jobs/index.js +11 -0
- package/dist/esm/jobs/index.js.map +1 -0
- package/dist/esm/jobs/retention-schemas.d.ts +252 -0
- package/dist/esm/jobs/retention-schemas.d.ts.map +1 -0
- package/dist/esm/jobs/retention-schemas.js +229 -0
- package/dist/esm/jobs/retention-schemas.js.map +1 -0
- package/dist/esm/jobs/schemas.d.ts +361 -0
- package/dist/esm/jobs/schemas.d.ts.map +1 -0
- package/dist/esm/jobs/schemas.js +703 -0
- package/dist/esm/jobs/schemas.js.map +1 -0
- package/dist/esm/jobs/settings-schemas.d.ts +84 -0
- package/dist/esm/jobs/settings-schemas.d.ts.map +1 -0
- package/dist/esm/jobs/settings-schemas.js +113 -0
- package/dist/esm/jobs/settings-schemas.js.map +1 -0
- package/dist/esm/nodes/admin-schemas.d.ts +204 -0
- package/dist/esm/nodes/admin-schemas.d.ts.map +1 -0
- package/dist/esm/nodes/admin-schemas.js +150 -0
- package/dist/esm/nodes/admin-schemas.js.map +1 -0
- package/dist/esm/nodes/constants.d.ts +86 -0
- package/dist/esm/nodes/constants.d.ts.map +1 -0
- package/dist/esm/nodes/constants.js +99 -0
- package/dist/esm/nodes/constants.js.map +1 -0
- package/dist/esm/nodes/index.d.ts +8 -0
- package/dist/esm/nodes/index.d.ts.map +1 -0
- package/dist/esm/nodes/index.js +11 -0
- package/dist/esm/nodes/index.js.map +1 -0
- package/dist/esm/nodes/schemas.d.ts +332 -0
- package/dist/esm/nodes/schemas.d.ts.map +1 -0
- package/dist/esm/nodes/schemas.js +934 -0
- package/dist/esm/nodes/schemas.js.map +1 -0
- package/dist/esm/nodes/settings-schemas.d.ts +82 -0
- package/dist/esm/nodes/settings-schemas.d.ts.map +1 -0
- package/dist/esm/nodes/settings-schemas.js +103 -0
- package/dist/esm/nodes/settings-schemas.js.map +1 -0
- package/dist/esm/notifications/constants.d.ts +197 -0
- package/dist/esm/notifications/constants.d.ts.map +1 -0
- package/dist/esm/notifications/constants.js +178 -0
- package/dist/esm/notifications/constants.js.map +1 -0
- package/dist/esm/notifications/index.d.ts +5 -0
- package/dist/esm/notifications/index.d.ts.map +1 -0
- package/dist/esm/notifications/index.js +9 -0
- package/dist/esm/notifications/index.js.map +1 -0
- package/dist/esm/notifications/schemas.d.ts +1016 -0
- package/dist/esm/notifications/schemas.d.ts.map +1 -0
- package/dist/esm/notifications/schemas.js +848 -0
- package/dist/esm/notifications/schemas.js.map +1 -0
- package/dist/esm/onboarding/constants.d.ts +138 -0
- package/dist/esm/onboarding/constants.d.ts.map +1 -0
- package/dist/esm/onboarding/constants.js +120 -0
- package/dist/esm/onboarding/constants.js.map +1 -0
- package/dist/esm/onboarding/index.d.ts +5 -0
- package/dist/esm/onboarding/index.d.ts.map +1 -0
- package/dist/esm/onboarding/index.js +7 -0
- package/dist/esm/onboarding/index.js.map +1 -0
- package/dist/esm/onboarding/schemas.d.ts +360 -0
- package/dist/esm/onboarding/schemas.d.ts.map +1 -0
- package/dist/esm/onboarding/schemas.js +257 -0
- package/dist/esm/onboarding/schemas.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/settings/constants.d.ts +206 -0
- package/dist/esm/settings/constants.d.ts.map +1 -0
- package/dist/esm/settings/constants.js +197 -0
- package/dist/esm/settings/constants.js.map +1 -0
- package/dist/esm/settings/index.d.ts +6 -0
- package/dist/esm/settings/index.d.ts.map +1 -0
- package/dist/esm/settings/index.js +11 -0
- package/dist/esm/settings/index.js.map +1 -0
- package/dist/esm/settings/schemas.d.ts +574 -0
- package/dist/esm/settings/schemas.d.ts.map +1 -0
- package/dist/esm/settings/schemas.js +434 -0
- package/dist/esm/settings/schemas.js.map +1 -0
- package/dist/esm/settings/types.d.ts +79 -0
- package/dist/esm/settings/types.d.ts.map +1 -0
- package/dist/esm/settings/types.js +5 -0
- package/dist/esm/settings/types.js.map +1 -0
- package/dist/esm/sharing/constants.d.ts +216 -0
- package/dist/esm/sharing/constants.d.ts.map +1 -0
- package/dist/esm/sharing/constants.js +159 -0
- package/dist/esm/sharing/constants.js.map +1 -0
- package/dist/esm/sharing/enum.d.ts +5 -0
- package/dist/esm/sharing/enum.d.ts.map +1 -0
- package/dist/esm/sharing/enum.js +6 -0
- package/dist/esm/sharing/enum.js.map +1 -0
- package/dist/esm/sharing/grants.d.ts +490 -0
- package/dist/esm/sharing/grants.d.ts.map +1 -0
- package/dist/esm/sharing/grants.js +444 -0
- package/dist/esm/sharing/grants.js.map +1 -0
- package/dist/esm/sharing/groups.d.ts +410 -0
- package/dist/esm/sharing/groups.d.ts.map +1 -0
- package/dist/esm/sharing/groups.js +372 -0
- package/dist/esm/sharing/groups.js.map +1 -0
- package/dist/esm/sharing/index.d.ts +5 -0
- package/dist/esm/sharing/index.d.ts.map +1 -0
- package/dist/esm/sharing/index.js +11 -0
- package/dist/esm/sharing/index.js.map +1 -0
- package/dist/esm/sharing/schemas.d.ts +3 -0
- package/dist/esm/sharing/schemas.d.ts.map +1 -0
- package/dist/esm/sharing/schemas.js +5 -0
- package/dist/esm/sharing/schemas.js.map +1 -0
- package/dist/esm/storage/constants.d.ts +111 -0
- package/dist/esm/storage/constants.d.ts.map +1 -0
- package/dist/esm/storage/constants.js +104 -0
- package/dist/esm/storage/constants.js.map +1 -0
- package/dist/esm/storage/index.d.ts +27 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +23 -0
- package/dist/esm/storage/index.js.map +1 -0
- package/dist/esm/storage/objects-complete-upload.d.ts +19 -0
- package/dist/esm/storage/objects-complete-upload.d.ts.map +1 -0
- package/dist/esm/storage/objects-complete-upload.js +16 -0
- package/dist/esm/storage/objects-complete-upload.js.map +1 -0
- package/dist/esm/storage/objects-download-url.d.ts +17 -0
- package/dist/esm/storage/objects-download-url.d.ts.map +1 -0
- package/dist/esm/storage/objects-download-url.js +13 -0
- package/dist/esm/storage/objects-download-url.js.map +1 -0
- package/dist/esm/storage/objects-init-upload.d.ts +39 -0
- package/dist/esm/storage/objects-init-upload.d.ts.map +1 -0
- package/dist/esm/storage/objects-init-upload.js +37 -0
- package/dist/esm/storage/objects-init-upload.js.map +1 -0
- package/dist/esm/storage/objects-list-query.d.ts +50 -0
- package/dist/esm/storage/objects-list-query.d.ts.map +1 -0
- package/dist/esm/storage/objects-list-query.js +20 -0
- package/dist/esm/storage/objects-list-query.js.map +1 -0
- package/dist/esm/storage/objects-object-response.d.ts +49 -0
- package/dist/esm/storage/objects-object-response.d.ts.map +1 -0
- package/dist/esm/storage/objects-object-response.js +51 -0
- package/dist/esm/storage/objects-object-response.js.map +1 -0
- package/dist/esm/storage/objects-update-metadata.d.ts +16 -0
- package/dist/esm/storage/objects-update-metadata.d.ts.map +1 -0
- package/dist/esm/storage/objects-update-metadata.js +11 -0
- package/dist/esm/storage/objects-update-metadata.js.map +1 -0
- package/dist/esm/storage/schemas.d.ts +13 -0
- package/dist/esm/storage/schemas.d.ts.map +1 -0
- package/dist/esm/storage/schemas.js +19 -0
- package/dist/esm/storage/schemas.js.map +1 -0
- package/dist/esm/storage/settings-schemas.d.ts +188 -0
- package/dist/esm/storage/settings-schemas.d.ts.map +1 -0
- package/dist/esm/storage/settings-schemas.js +220 -0
- package/dist/esm/storage/settings-schemas.js.map +1 -0
- package/dist/esm/storage/storage-bucket-provision.d.ts +152 -0
- package/dist/esm/storage/storage-bucket-provision.d.ts.map +1 -0
- package/dist/esm/storage/storage-bucket-provision.js +213 -0
- package/dist/esm/storage/storage-bucket-provision.js.map +1 -0
- package/dist/esm/storage/storage-config-response.d.ts +99 -0
- package/dist/esm/storage/storage-config-response.d.ts.map +1 -0
- package/dist/esm/storage/storage-config-response.js +170 -0
- package/dist/esm/storage/storage-config-response.js.map +1 -0
- package/dist/esm/storage/storage-config-update.d.ts +46 -0
- package/dist/esm/storage/storage-config-update.d.ts.map +1 -0
- package/dist/esm/storage/storage-config-update.js +130 -0
- package/dist/esm/storage/storage-config-update.js.map +1 -0
- package/dist/esm/storage/storage-connection-test.d.ts +129 -0
- package/dist/esm/storage/storage-connection-test.d.ts.map +1 -0
- package/dist/esm/storage/storage-connection-test.js +241 -0
- package/dist/esm/storage/storage-connection-test.js.map +1 -0
- package/dist/esm/storage/storage-status.d.ts +16 -0
- package/dist/esm/storage/storage-status.d.ts.map +1 -0
- package/dist/esm/storage/storage-status.js +20 -0
- package/dist/esm/storage/storage-status.js.map +1 -0
- package/dist/esm/telemetry/assistant.d.ts +173 -0
- package/dist/esm/telemetry/assistant.d.ts.map +1 -0
- package/dist/esm/telemetry/assistant.js +40 -0
- package/dist/esm/telemetry/assistant.js.map +1 -0
- package/dist/esm/telemetry/config.d.ts +96 -0
- package/dist/esm/telemetry/config.d.ts.map +1 -0
- package/dist/esm/telemetry/config.js +112 -0
- package/dist/esm/telemetry/config.js.map +1 -0
- package/dist/esm/telemetry/connection.d.ts +355 -0
- package/dist/esm/telemetry/connection.d.ts.map +1 -0
- package/dist/esm/telemetry/connection.js +447 -0
- package/dist/esm/telemetry/connection.js.map +1 -0
- package/dist/esm/telemetry/constants.d.ts +814 -0
- package/dist/esm/telemetry/constants.d.ts.map +1 -0
- package/dist/esm/telemetry/constants.js +681 -0
- package/dist/esm/telemetry/constants.js.map +1 -0
- package/dist/esm/telemetry/dashboard.d.ts +997 -0
- package/dist/esm/telemetry/dashboard.d.ts.map +1 -0
- package/dist/esm/telemetry/dashboard.js +748 -0
- package/dist/esm/telemetry/dashboard.js.map +1 -0
- package/dist/esm/telemetry/enum.d.ts +5 -0
- package/dist/esm/telemetry/enum.d.ts.map +1 -0
- package/dist/esm/telemetry/enum.js +9 -0
- package/dist/esm/telemetry/enum.js.map +1 -0
- package/dist/esm/telemetry/index.d.ts +5 -0
- package/dist/esm/telemetry/index.d.ts.map +1 -0
- package/dist/esm/telemetry/index.js +10 -0
- package/dist/esm/telemetry/index.js.map +1 -0
- package/dist/esm/telemetry/presentation.d.ts +243 -0
- package/dist/esm/telemetry/presentation.d.ts.map +1 -0
- package/dist/esm/telemetry/presentation.js +297 -0
- package/dist/esm/telemetry/presentation.js.map +1 -0
- package/dist/esm/telemetry/query.d.ts +147 -0
- package/dist/esm/telemetry/query.d.ts.map +1 -0
- package/dist/esm/telemetry/query.js +138 -0
- package/dist/esm/telemetry/query.js.map +1 -0
- package/dist/esm/telemetry/schemas.d.ts +20 -0
- package/dist/esm/telemetry/schemas.d.ts.map +1 -0
- package/dist/esm/telemetry/schemas.js +14 -0
- package/dist/esm/telemetry/schemas.js.map +1 -0
- package/dist/esm/telemetry/settings.d.ts +65 -0
- package/dist/esm/telemetry/settings.d.ts.map +1 -0
- package/dist/esm/telemetry/settings.js +74 -0
- package/dist/esm/telemetry/settings.js.map +1 -0
- package/dist/esm/telemetry/stack.d.ts +87 -0
- package/dist/esm/telemetry/stack.d.ts.map +1 -0
- package/dist/esm/telemetry/stack.js +90 -0
- package/dist/esm/telemetry/stack.js.map +1 -0
- package/dist/esm/telemetry/status.d.ts +65 -0
- package/dist/esm/telemetry/status.d.ts.map +1 -0
- package/dist/esm/telemetry/status.js +62 -0
- package/dist/esm/telemetry/status.js.map +1 -0
- package/dist/esm/telemetry/store.d.ts +111 -0
- package/dist/esm/telemetry/store.d.ts.map +1 -0
- package/dist/esm/telemetry/store.js +80 -0
- package/dist/esm/telemetry/store.js.map +1 -0
- package/dist/esm/user-data/constants.d.ts +157 -0
- package/dist/esm/user-data/constants.d.ts.map +1 -0
- package/dist/esm/user-data/constants.js +134 -0
- package/dist/esm/user-data/constants.js.map +1 -0
- package/dist/esm/user-data/index.d.ts +5 -0
- package/dist/esm/user-data/index.d.ts.map +1 -0
- package/dist/esm/user-data/index.js +7 -0
- package/dist/esm/user-data/index.js.map +1 -0
- package/dist/esm/user-data/schemas.d.ts +306 -0
- package/dist/esm/user-data/schemas.d.ts.map +1 -0
- package/dist/esm/user-data/schemas.js +330 -0
- package/dist/esm/user-data/schemas.js.map +1 -0
- package/package.json +228 -4
|
@@ -0,0 +1,894 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The `ai` settings namespaces (issue #739, PP-8.6)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// The schemas of the AI platform's system namespace `ai` (stored shape, PATCH
|
|
7
|
+
// partial, PUT and PATCH request-body branches, response branch), of its org
|
|
8
|
+
// layer (#733: what one organization may set, tighten-only) and of the per-user
|
|
9
|
+
// namespace `ai`, moved verbatim from the reference app's
|
|
10
|
+
// `common/schemas/settings.schema.ts`, `system-settings-wire.schemas.ts` and
|
|
11
|
+
// `system-settings-response.schemas.ts`. The API registers the namespaces
|
|
12
|
+
// (`@marinoscar/platform-api/ai`); the web validates its forms with the same
|
|
13
|
+
// bounds. zod only: no Node API (this file also runs in the browser).
|
|
14
|
+
// =============================================================================
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.AI_SETTINGS_CARRIES_NO_SECRET = exports.orgAiSettingsSchema = exports.aiResponseSchema = exports.aiSettingsPatchSchema = exports.aiSettingsSchema = exports.aiLimitsSettingsSchema = exports.systemAiPatchSchema = exports.systemAiSchema = exports.orgAiProvidersSchema = exports.aiProvidersResponseSchema = exports.systemAiProvidersPatchSchema = exports.systemAiProvidersSchema = exports.aiProviderSlotPatchSchema = exports.aiProviderSlotSchema = exports.aiProviderIdSchema = exports.systemAiCompatibleProviderSchema = exports.systemAiAzureProviderSchema = exports.aiAzureDeploymentsSchema = exports.systemAiProviderSchema = exports.systemAiLimitsSchema = exports.aiLimitValueSchema = exports.userAiSettingsPatchSchema = exports.userAiSettingsSchema = void 0;
|
|
17
|
+
exports.aiEndpointUrlSchema = aiEndpointUrlSchema;
|
|
18
|
+
exports.tightenAiPolicy = tightenAiPolicy;
|
|
19
|
+
const zod_1 = require("zod");
|
|
20
|
+
const constants_js_1 = require("./constants.js");
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// User namespace `ai`
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Per-user AI preferences (`ai`) — issue #423, epic #419, umbrella #418.
|
|
26
|
+
*
|
|
27
|
+
* `defaultModel` is the ONLY field this issue adds: which (provider, model)
|
|
28
|
+
* a caller's AI surface should pre-select, so a user who has settled on one
|
|
29
|
+
* model does not re-pick it every time. Nullable, and the namespace itself
|
|
30
|
+
* optional — see below for why both.
|
|
31
|
+
*
|
|
32
|
+
* NON-SECRET ONLY, and this is the whole namespace, not a policy exception:
|
|
33
|
+
* a user's own provider key is `UserAiKey.secret`, ciphertext in its own
|
|
34
|
+
* table (`apps/api/prisma/schema.prisma`), never in `user_settings.value`,
|
|
35
|
+
* which — like `system_settings.value` — is returned wholesale by
|
|
36
|
+
* `GET /api/user-settings` and copied verbatim into whatever audit trail
|
|
37
|
+
* later issues add. `provider`/`modelId` here are the same kind of
|
|
38
|
+
* IDENTIFIER `systemStorageSchema.accessKeyId` is: they name a selection,
|
|
39
|
+
* they authorise nothing.
|
|
40
|
+
*
|
|
41
|
+
* `provider`/`modelId` are plain strings, not `z.enum(AI_PROVIDER_IDS)` /
|
|
42
|
+
* a foreign key into `AiModel`: this schema has no access to the database to
|
|
43
|
+
* validate a model still exists, and — matching `Job.type`'s and
|
|
44
|
+
* `AiModel.provider`'s own "a row must outlive the registry that produced it"
|
|
45
|
+
* reasoning throughout this codebase — a user's saved preference for a model
|
|
46
|
+
* later disabled or removed by an admin must remain a value this schema can
|
|
47
|
+
* represent, even though nothing routes to it any more.
|
|
48
|
+
*
|
|
49
|
+
* @stability experimental
|
|
50
|
+
*/
|
|
51
|
+
exports.userAiSettingsSchema = zod_1.z.object({
|
|
52
|
+
/** The model an AI surface pre-selects; `null` means none chosen. */
|
|
53
|
+
defaultModel: zod_1.z
|
|
54
|
+
.object({
|
|
55
|
+
/** Provider id. */
|
|
56
|
+
provider: zod_1.z.string(),
|
|
57
|
+
/** Model id. */
|
|
58
|
+
modelId: zod_1.z.string(),
|
|
59
|
+
})
|
|
60
|
+
.nullable(),
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* `ai`, PATCH counterpart. `defaultModel` stays required-but-nullable inside
|
|
64
|
+
* the object (an explicit `{ "ai": { "defaultModel": null } }` clears the
|
|
65
|
+
* selection back to "none chosen"; the whole `ai` object itself is optional
|
|
66
|
+
* to send at all, matching `dataTables`/`navigation` above).
|
|
67
|
+
*
|
|
68
|
+
* @stability experimental
|
|
69
|
+
*/
|
|
70
|
+
exports.userAiSettingsPatchSchema = zod_1.z.object({
|
|
71
|
+
/** The model an AI surface pre-selects; `null` means none chosen. */
|
|
72
|
+
defaultModel: zod_1.z
|
|
73
|
+
.object({
|
|
74
|
+
/** Provider id. */
|
|
75
|
+
provider: zod_1.z.string(),
|
|
76
|
+
/** Model id. */
|
|
77
|
+
modelId: zod_1.z.string(),
|
|
78
|
+
})
|
|
79
|
+
.nullable(),
|
|
80
|
+
});
|
|
81
|
+
// A factory, not a shared instance: every field gets its own enum, exactly as
|
|
82
|
+
// when each was written inline (the generated OpenAPI document is unchanged).
|
|
83
|
+
const keyPolicyEnum = () => zod_1.z.enum(constants_js_1.AI_KEY_POLICIES);
|
|
84
|
+
const mcpAllowedHostSchema = zod_1.z.string().max(253).regex(constants_js_1.AI_MCP_ALLOWED_HOST_PATTERN);
|
|
85
|
+
/**
|
|
86
|
+
* One limit value: a positive integer up to `AI_LIMIT_VALUE_MAX`.
|
|
87
|
+
*
|
|
88
|
+
* @stability experimental
|
|
89
|
+
*/
|
|
90
|
+
exports.aiLimitValueSchema = zod_1.z.number().int().positive().max(constants_js_1.AI_LIMIT_VALUE_MAX);
|
|
91
|
+
/**
|
|
92
|
+
* `ai.limits` (#450) — per-user and per-model rate limits and output caps.
|
|
93
|
+
* EVERY FIELD IS OPTIONAL, AND ABSENT MEANS UNLIMITED: `{}` (the default) is
|
|
94
|
+
* a deployment with no limits at all, which is exactly Phase 1's behaviour.
|
|
95
|
+
*
|
|
96
|
+
* - `perUser.requestsPerMinute` / `.requestsPerDay` — every inference call a
|
|
97
|
+
* user makes, whoever's key pays.
|
|
98
|
+
* - `orgKey.requestsPerDayPerUser` / `.tokensPerDayPerUser` — only calls the
|
|
99
|
+
* ORG key pays for (`keySource: 'org'`); a user on their own key is never
|
|
100
|
+
* counted against these.
|
|
101
|
+
* - `perModel['<provider>:<modelId>']` — `maxOutputTokens` clamps the call
|
|
102
|
+
* (together with `defaults.maxOutputTokensCap`, the smaller wins), and
|
|
103
|
+
* `requestsPerMinutePerUser` limits each user's calls to that one model.
|
|
104
|
+
*
|
|
105
|
+
* Enforced by `AiLimitsService` (`ai/runtime/ai-limits.service.ts`); see
|
|
106
|
+
* `docs/specs/ai-platform.md` §2.22.
|
|
107
|
+
*
|
|
108
|
+
* @stability experimental
|
|
109
|
+
*/
|
|
110
|
+
exports.systemAiLimitsSchema = zod_1.z.object({
|
|
111
|
+
/** Limits on every call a user makes, whoever's key pays. */
|
|
112
|
+
perUser: zod_1.z
|
|
113
|
+
.object({
|
|
114
|
+
/** Requests per minute. */
|
|
115
|
+
requestsPerMinute: exports.aiLimitValueSchema.optional(),
|
|
116
|
+
/** Requests per UTC day. */
|
|
117
|
+
requestsPerDay: exports.aiLimitValueSchema.optional(),
|
|
118
|
+
})
|
|
119
|
+
.optional(),
|
|
120
|
+
/** Limits on the calls an administrator-managed key pays for. */
|
|
121
|
+
orgKey: zod_1.z
|
|
122
|
+
.object({
|
|
123
|
+
/** Requests per UTC day, per user. */
|
|
124
|
+
requestsPerDayPerUser: exports.aiLimitValueSchema.optional(),
|
|
125
|
+
/** Input plus output tokens per UTC day, per user. */
|
|
126
|
+
tokensPerDayPerUser: exports.aiLimitValueSchema.optional(),
|
|
127
|
+
})
|
|
128
|
+
.optional(),
|
|
129
|
+
// #739: the deployment default PER ORGANIZATION (requests and output tokens
|
|
130
|
+
// per UTC day, counted over every call made in that organization); absent
|
|
131
|
+
// means unlimited. An organization may only lower it (its org layer).
|
|
132
|
+
/** Limits on one organization's whole daily volume, whoever's key pays (#739). */
|
|
133
|
+
perOrg: zod_1.z
|
|
134
|
+
.object({
|
|
135
|
+
/** Requests per UTC day. */
|
|
136
|
+
requestsPerDay: exports.aiLimitValueSchema.optional(),
|
|
137
|
+
/** Output tokens per UTC day. */
|
|
138
|
+
outputTokensPerDay: exports.aiLimitValueSchema.optional(),
|
|
139
|
+
})
|
|
140
|
+
.optional(),
|
|
141
|
+
/** Per-model limits, keyed `<provider>:<modelId>`. */
|
|
142
|
+
perModel: zod_1.z
|
|
143
|
+
.record(zod_1.z.string().max(constants_js_1.AI_LIMIT_MODEL_KEY_MAX).regex(constants_js_1.AI_LIMIT_MODEL_KEY_PATTERN), zod_1.z.object({
|
|
144
|
+
/** Output-token ceiling for every call to the model. */
|
|
145
|
+
maxOutputTokens: exports.aiLimitValueSchema.optional(),
|
|
146
|
+
/** Requests per minute, per user, to the model. */
|
|
147
|
+
requestsPerMinutePerUser: exports.aiLimitValueSchema.optional(),
|
|
148
|
+
}))
|
|
149
|
+
.refine((value) => Object.keys(value).length <= constants_js_1.AI_LIMITS_PER_MODEL_MAX, {
|
|
150
|
+
message: `At most ${constants_js_1.AI_LIMITS_PER_MODEL_MAX} per-model limits`,
|
|
151
|
+
})
|
|
152
|
+
.optional(),
|
|
153
|
+
});
|
|
154
|
+
/**
|
|
155
|
+
* Deployment-wide AI platform policy (`ai`).
|
|
156
|
+
*
|
|
157
|
+
* `enabled` is the master switch: OFF by default, matching every other
|
|
158
|
+
* feature namespace in this file that ships ahead of its own UI
|
|
159
|
+
* (`databaseBackup.enabled`, `nodes.jobSecretBrokerEnabled`) — a capability
|
|
160
|
+
* this deployment did not ask for must not turn itself on by existing in the
|
|
161
|
+
* schema.
|
|
162
|
+
*
|
|
163
|
+
* `providers.openai.baseUrl` IS AN ENDPOINT OVERRIDE, NOT A CREDENTIAL — the
|
|
164
|
+
* exact counterpart of `systemStorageSchema.endpoint`. It exists for
|
|
165
|
+
* OpenAI-compatible proxies and self-hosted gateways, and is optional because
|
|
166
|
+
* absent means "use the provider's own default host". `providers` is a RECORD
|
|
167
|
+
* keyed by provider id (PP-14.6, #924), open to a provider an app or package
|
|
168
|
+
* registers: this schema checks the id and `enabled`, and the provider's own
|
|
169
|
+
* `settingsSchema` (the API's provider registry) validates the rest, which a
|
|
170
|
+
* schema in this package cannot, since it does not know which providers a
|
|
171
|
+
* deployment registered. The stored shape of the five built-in providers is
|
|
172
|
+
* unchanged.
|
|
173
|
+
*
|
|
174
|
+
* `defaults.maxOutputTokensCap` bounds every call regardless of what the
|
|
175
|
+
* caller (or the model's own `maxOutputTokens`) requests, and is optional:
|
|
176
|
+
* absent means "no deployment-wide cap", not zero.
|
|
177
|
+
* `defaults.allowBackgroundRuns` decides whether a call may be queued as an `AiRun`
|
|
178
|
+
* job at all rather than only served synchronously; ON by default, since the
|
|
179
|
+
* job queue is this application's normal way of doing anything that takes a
|
|
180
|
+
* while (see the "Every Long-Running Activity Is a Queue Job" rules) and a
|
|
181
|
+
* deployment that has not thought about AI at all should not have quietly
|
|
182
|
+
* disabled the queue path the moment this namespace materialises.
|
|
183
|
+
*
|
|
184
|
+
* `defaults.allowRealtime` (#449) decides whether a user may mint a realtime
|
|
185
|
+
* voice session (`POST /api/ai/realtime/sessions`) — an ephemeral provider
|
|
186
|
+
* secret handed to the BROWSER, after which the server can neither see nor
|
|
187
|
+
* meter the conversation. OFF by default: that loss of per-call control is
|
|
188
|
+
* an administrator's decision (docs/specs/ai-platform.md §2.15). A row
|
|
189
|
+
* written before the field existed reads it as `false` without disturbing
|
|
190
|
+
* the rest of `defaults` (`SystemSettingsService.withAiSlots`).
|
|
191
|
+
*
|
|
192
|
+
* `logPromptContent` is OFF by default and is a deliberate, named privacy
|
|
193
|
+
* decision: whether this deployment's own logs/telemetry may capture prompt
|
|
194
|
+
* text at all, independent of `enabled`. A deployment can turn AI on while
|
|
195
|
+
* still refusing to let prompts (which may carry a user's own sensitive
|
|
196
|
+
* input) land in a log line nobody scoped for that.
|
|
197
|
+
*
|
|
198
|
+
* ⚠ THERE IS NO API KEY FIELD ANYWHERE IN THIS NAMESPACE, AND THERE MUST
|
|
199
|
+
* NEVER BE ONE — see the compile-time proof at the bottom of this file. A
|
|
200
|
+
* user's own key is `UserAiKey.secret`, ciphertext in its own table, never
|
|
201
|
+
* in this JSONB blob; an org-wide fallback key (
|
|
202
|
+
* `AI_KEY_POLICIES.byok_with_org_fallback`) is credential material for the same reason
|
|
203
|
+
* `systemStorageSchema`'s own header gives for the storage secret access
|
|
204
|
+
* key: this object is returned WHOLESALE by `GET /api/system-settings` and
|
|
205
|
+
* copied verbatim into every settings audit row, so a secret here is one
|
|
206
|
+
* admin GET away from being on the wire.
|
|
207
|
+
*
|
|
208
|
+
* `usageRetentionDays` (#443) is how long `ai_usage_events` rows are kept
|
|
209
|
+
* before the daily `ai.usage.purge` job deletes them — 180 days by default,
|
|
210
|
+
* comfortably past the 90-day window the usage report can show. It is a data
|
|
211
|
+
* retention decision, so it applies whether or not AI is currently enabled.
|
|
212
|
+
*
|
|
213
|
+
* `hostedTools` (#442) switches each provider-hosted tool type on for the
|
|
214
|
+
* deployment — web search, file search, code interpreter, image generation
|
|
215
|
+
* and remote MCP. ALL OFF BY DEFAULT: each one reaches outside this
|
|
216
|
+
* deployment (the open web, a third-party MCP server) and bills per use, so
|
|
217
|
+
* it is an administrator's decision, never a side effect of upgrading.
|
|
218
|
+
* `mcpAllowedHosts` optionally narrows which hosts an MCP `serverUrl` may
|
|
219
|
+
* name (`*.example.com` for subdomains); empty means any `https` host. It is
|
|
220
|
+
* a list of HOSTNAMES — MCP credentials travel per request, in the tool's
|
|
221
|
+
* `headers`, and are never stored here or anywhere else.
|
|
222
|
+
*
|
|
223
|
+
* `limits` (#450) holds the per-user and per-model rate limits and output
|
|
224
|
+
* caps — see `systemAiLimitsSchema`. Every field inside it is optional and
|
|
225
|
+
* absent means unlimited; the default is `{}`.
|
|
226
|
+
*
|
|
227
|
+
* NO `.default()` ON ANY FIELD, matching every namespace above it in this
|
|
228
|
+
* file. The defaults live in `DEFAULT_SYSTEM_SETTINGS` (settings.types.ts)
|
|
229
|
+
* and nowhere else.
|
|
230
|
+
*/
|
|
231
|
+
/**
|
|
232
|
+
* One provider's slot in `ai.providers`: its switch and optional endpoint
|
|
233
|
+
* override. Every provider id has at least this shape; the two #448 slots
|
|
234
|
+
* below extend it.
|
|
235
|
+
*
|
|
236
|
+
* @stability experimental
|
|
237
|
+
*/
|
|
238
|
+
exports.systemAiProviderSchema = zod_1.z.object({
|
|
239
|
+
/** Whether AI is switched on (the kill switch). */
|
|
240
|
+
enabled: zod_1.z.boolean(),
|
|
241
|
+
/** The endpoint override; absent means the provider's default. */
|
|
242
|
+
baseUrl: zod_1.z.string().url().optional(),
|
|
243
|
+
});
|
|
244
|
+
// ---- OpenAI-family endpoints (#448) ------------------------------------------
|
|
245
|
+
//
|
|
246
|
+
// SSRF POSTURE. `azure-openai` and `openai-compatible` point this server's
|
|
247
|
+
// outbound AI calls at an administrator-chosen host, so their `baseUrl` is
|
|
248
|
+
// validated harder than `openai.baseUrl` (which is left as it was):
|
|
249
|
+
//
|
|
250
|
+
// - scheme `https` only for Azure (every Azure OpenAI resource is https),
|
|
251
|
+
// `http` or `https` for a compatible server (a self-hosted Ollama on a
|
|
252
|
+
// private network is commonly plain http);
|
|
253
|
+
// - no credentials in the URL (`https://user:pass@host`) — a key belongs in
|
|
254
|
+
// the encrypted credential store, never in a JSONB blob `GET
|
|
255
|
+
// /api/system-settings` returns wholesale;
|
|
256
|
+
// - no fragment, which no HTTP request can carry anyway.
|
|
257
|
+
//
|
|
258
|
+
// POINTING AT AN INTERNAL HOST IS AN EXPLICIT ADMINISTRATOR DECISION, not
|
|
259
|
+
// something this validation refuses: `http://ollama.internal:11434/v1` is the
|
|
260
|
+
// canonical self-hosted setup, and the setting is writable only with
|
|
261
|
+
// `ai_config:write` / `system_settings:write`, both seeded Admin-only. What the
|
|
262
|
+
// adapters additionally refuse is being REDIRECTED somewhere else: their
|
|
263
|
+
// transport follows no redirect to another origin (see
|
|
264
|
+
// `ai/providers/openai/openai-redirect-guard.ts`).
|
|
265
|
+
/**
|
|
266
|
+
* A `baseUrl` for an admin-chosen OpenAI-family endpoint, restricted to `schemes`.
|
|
267
|
+
*
|
|
268
|
+
* @stability experimental
|
|
269
|
+
*/
|
|
270
|
+
function aiEndpointUrlSchema(schemes) {
|
|
271
|
+
return zod_1.z
|
|
272
|
+
.string()
|
|
273
|
+
.max(constants_js_1.AI_ENDPOINT_URL_MAX)
|
|
274
|
+
.superRefine((value, ctx) => {
|
|
275
|
+
const problem = (0, constants_js_1.aiEndpointUrlProblem)(value, schemes);
|
|
276
|
+
if (problem)
|
|
277
|
+
ctx.addIssue({ code: 'custom', message: problem });
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
const apiStyleEnum = () => zod_1.z.enum(constants_js_1.AI_OPENAI_API_STYLES);
|
|
281
|
+
/**
|
|
282
|
+
* Azure OpenAI's model id to deployment name map.
|
|
283
|
+
*
|
|
284
|
+
* @stability experimental
|
|
285
|
+
*/
|
|
286
|
+
exports.aiAzureDeploymentsSchema = zod_1.z
|
|
287
|
+
.record(zod_1.z.string().min(1).max(constants_js_1.AI_AZURE_MODEL_ID_MAX), zod_1.z.string().regex(constants_js_1.AI_AZURE_DEPLOYMENT_PATTERN, 'An Azure deployment name'))
|
|
288
|
+
.refine((value) => Object.keys(value).length <= constants_js_1.AI_AZURE_DEPLOYMENTS_MAX, {
|
|
289
|
+
message: `At most ${constants_js_1.AI_AZURE_DEPLOYMENTS_MAX} deployments`,
|
|
290
|
+
});
|
|
291
|
+
/**
|
|
292
|
+
* `providers['azure-openai']` (#448).
|
|
293
|
+
*
|
|
294
|
+
* - `baseUrl` — the resource endpoint, `https://<resource>.openai.azure.com`
|
|
295
|
+
* (the SDK appends `/openai`). Named `baseUrl`, like every other slot, so
|
|
296
|
+
* every generic consumer (the admin test's override, the catalog sync, the
|
|
297
|
+
* per-call context) handles it with no Azure special case. Required before
|
|
298
|
+
* the provider can be enabled — see `AiConfigAdminService`.
|
|
299
|
+
* - `apiVersion` — the `api-version` query value; absent means
|
|
300
|
+
* `AZURE_OPENAI_DEFAULT_API_VERSION` (`ai/providers/azure-openai`).
|
|
301
|
+
* - `apiStyle` — `responses` (the default: current api-versions serve the
|
|
302
|
+
* Responses API) or `chat_completions` for an older api-version or a
|
|
303
|
+
* deployment the Responses API does not cover.
|
|
304
|
+
* - `deployments` — model id → deployment name. Azure routes by DEPLOYMENT,
|
|
305
|
+
* and a deployment may be named anything; when this map is set its keys
|
|
306
|
+
* ARE the model list the catalog discovers, and a model id missing from it
|
|
307
|
+
* is sent as its own deployment name.
|
|
308
|
+
*
|
|
309
|
+
* @stability experimental
|
|
310
|
+
*/
|
|
311
|
+
exports.systemAiAzureProviderSchema = exports.systemAiProviderSchema.extend({
|
|
312
|
+
/** The endpoint override; absent means the provider's default. */
|
|
313
|
+
baseUrl: aiEndpointUrlSchema(constants_js_1.AI_AZURE_ENDPOINT_SCHEMES).optional(),
|
|
314
|
+
/** Azure OpenAI: the API version. */
|
|
315
|
+
apiVersion: zod_1.z.string().regex(constants_js_1.AI_AZURE_API_VERSION_PATTERN).optional(),
|
|
316
|
+
/** Which API shape the server speaks (`responses` or `chat_completions`). */
|
|
317
|
+
apiStyle: apiStyleEnum().optional(),
|
|
318
|
+
/** Azure OpenAI: model id to deployment name. */
|
|
319
|
+
deployments: exports.aiAzureDeploymentsSchema.optional(),
|
|
320
|
+
});
|
|
321
|
+
/**
|
|
322
|
+
* `providers['openai-compatible']` (#448) — Ollama, vLLM, LM Studio or any
|
|
323
|
+
* other server speaking the OpenAI wire protocol.
|
|
324
|
+
*
|
|
325
|
+
* - `baseUrl` — the server's API root, INCLUDING its version segment
|
|
326
|
+
* (`http://ollama.internal:11434/v1`); required before enabling.
|
|
327
|
+
* - `apiStyle` — `chat_completions` (the default: what every compatible
|
|
328
|
+
* server serves) or `responses` for one that also serves the Responses API.
|
|
329
|
+
* - `requiresKey` — absent or `true`: a key is resolved like any provider's
|
|
330
|
+
* (BYOK, or the org fallback). `false` is the ADMINISTRATOR'S OPT-IN to a
|
|
331
|
+
* keyless server: calls carry no credential, no user needs a key, and
|
|
332
|
+
* usage is recorded with `keySource: 'none'` (docs/specs/ai-platform.md
|
|
333
|
+
* §2.24).
|
|
334
|
+
*
|
|
335
|
+
* @stability experimental
|
|
336
|
+
*/
|
|
337
|
+
exports.systemAiCompatibleProviderSchema = exports.systemAiProviderSchema.extend({
|
|
338
|
+
/** The endpoint override; absent means the provider's default. */
|
|
339
|
+
baseUrl: aiEndpointUrlSchema(constants_js_1.AI_COMPATIBLE_ENDPOINT_SCHEMES).optional(),
|
|
340
|
+
/** Which API shape the server speaks (`responses` or `chat_completions`). */
|
|
341
|
+
apiStyle: apiStyleEnum().optional(),
|
|
342
|
+
/** OpenAI-compatible: whether the server needs a key. */
|
|
343
|
+
requiresKey: zod_1.z.boolean().optional(),
|
|
344
|
+
});
|
|
345
|
+
// ---- the open `providers` record (PP-14.6, issue #924) ------------------------------------
|
|
346
|
+
//
|
|
347
|
+
// `ai.providers` is a RECORD keyed by provider id, not an object with one fixed
|
|
348
|
+
// key per provider. A provider an app or package adds
|
|
349
|
+
// (`registerAiProvider`, `@marinoscar/platform-api/ai`) has a slot with no
|
|
350
|
+
// change here. The record only checks the id and the one field every slot
|
|
351
|
+
// has (`enabled`); the provider-specific fields pass through and are validated
|
|
352
|
+
// by the provider's own `settingsSchema` where the registry is (the API's
|
|
353
|
+
// `ai` namespace read and merge), never by this package, which cannot know
|
|
354
|
+
// which providers a deployment registered.
|
|
355
|
+
/**
|
|
356
|
+
* A provider id: a lower-case letter, then lower-case letters, digits and
|
|
357
|
+
* hyphens (2 to 48 characters). The pattern of the pluggable-kind registry
|
|
358
|
+
* and the provider part of an `ai.limits.perModel` key.
|
|
359
|
+
*
|
|
360
|
+
* @extensionPoint schema
|
|
361
|
+
* @stability experimental
|
|
362
|
+
*/
|
|
363
|
+
exports.aiProviderIdSchema = zod_1.z.string().regex(constants_js_1.AI_PROVIDER_ID_PATTERN);
|
|
364
|
+
/**
|
|
365
|
+
* One provider's slot in the stored `ai.providers` record: the switch every
|
|
366
|
+
* provider has, plus the provider's own non-secret settings (`baseUrl`,
|
|
367
|
+
* `region`, ...), which pass through. Carries no key.
|
|
368
|
+
*
|
|
369
|
+
* @extensionPoint schema
|
|
370
|
+
* @stability experimental
|
|
371
|
+
*/
|
|
372
|
+
exports.aiProviderSlotSchema = zod_1.z.looseObject({
|
|
373
|
+
/** Whether the provider is switched on. */
|
|
374
|
+
enabled: zod_1.z.boolean(),
|
|
375
|
+
});
|
|
376
|
+
/**
|
|
377
|
+
* One provider's slot in a PATCH: every field optional, and a provider's own
|
|
378
|
+
* optional setting takes `null` to remove it (back to its default).
|
|
379
|
+
*
|
|
380
|
+
* @stability experimental
|
|
381
|
+
*/
|
|
382
|
+
exports.aiProviderSlotPatchSchema = zod_1.z.looseObject({
|
|
383
|
+
/** Whether the provider is switched on. */
|
|
384
|
+
enabled: zod_1.z.boolean().optional(),
|
|
385
|
+
});
|
|
386
|
+
/**
|
|
387
|
+
* `ai.providers` as stored and as a PUT carries it: slots by provider id.
|
|
388
|
+
*
|
|
389
|
+
* @stability experimental
|
|
390
|
+
*/
|
|
391
|
+
exports.systemAiProvidersSchema = zod_1.z.record(exports.aiProviderIdSchema, exports.aiProviderSlotSchema);
|
|
392
|
+
/**
|
|
393
|
+
* `ai.providers` in a PATCH: the slots to change, by provider id; a provider
|
|
394
|
+
* left out keeps its stored settings.
|
|
395
|
+
*
|
|
396
|
+
* @stability experimental
|
|
397
|
+
*/
|
|
398
|
+
exports.systemAiProvidersPatchSchema = zod_1.z.record(exports.aiProviderIdSchema, exports.aiProviderSlotPatchSchema);
|
|
399
|
+
/**
|
|
400
|
+
* `ai.providers` as `GET /api/system-settings` answers it. `hasKey` is
|
|
401
|
+
* reported by consumers that know whether a deployment key is stored.
|
|
402
|
+
*
|
|
403
|
+
* @stability experimental
|
|
404
|
+
*/
|
|
405
|
+
exports.aiProvidersResponseSchema = zod_1.z.record(exports.aiProviderIdSchema, zod_1.z.looseObject({
|
|
406
|
+
/** Whether the provider is switched on. */
|
|
407
|
+
enabled: zod_1.z.boolean(),
|
|
408
|
+
/** Whether the deployment stores a key for the provider. */
|
|
409
|
+
hasKey: zod_1.z.boolean().optional(),
|
|
410
|
+
}));
|
|
411
|
+
/**
|
|
412
|
+
* `ai.providers` in an organization's overrides: it may only switch a
|
|
413
|
+
* provider off for its members.
|
|
414
|
+
*
|
|
415
|
+
* @stability experimental
|
|
416
|
+
*/
|
|
417
|
+
exports.orgAiProvidersSchema = zod_1.z.record(exports.aiProviderIdSchema, zod_1.z.object({
|
|
418
|
+
/** `false` switches the provider off for the organization's members. */
|
|
419
|
+
enabled: zod_1.z.boolean().optional(),
|
|
420
|
+
}));
|
|
421
|
+
/**
|
|
422
|
+
* The stored `ai` system settings namespace: the deployment's AI policy.
|
|
423
|
+
* It carries no key (see `AI_SETTINGS_CARRIES_NO_SECRET`).
|
|
424
|
+
*
|
|
425
|
+
* @stability experimental
|
|
426
|
+
*/
|
|
427
|
+
exports.systemAiSchema = zod_1.z.object({
|
|
428
|
+
/** Whether AI is switched on (the kill switch). */
|
|
429
|
+
enabled: zod_1.z.boolean(),
|
|
430
|
+
/** Whose key pays: the caller's own only (`byok`), or an administrator's as a fallback. */
|
|
431
|
+
keyPolicy: keyPolicyEnum(),
|
|
432
|
+
/** Per-provider settings, by provider id. */
|
|
433
|
+
providers: exports.systemAiProvidersSchema,
|
|
434
|
+
/** Deployment-wide defaults a call cannot exceed. */
|
|
435
|
+
defaults: zod_1.z.object({
|
|
436
|
+
/** Output-token ceiling for every call; `null` means no cap. */
|
|
437
|
+
maxOutputTokensCap: zod_1.z.number().int().positive().optional(),
|
|
438
|
+
/** Whether a call may be queued as a background run. */
|
|
439
|
+
allowBackgroundRuns: zod_1.z.boolean(),
|
|
440
|
+
// #449. Appended; see the header for how an older row reads it.
|
|
441
|
+
/** Whether realtime voice sessions may be minted. */
|
|
442
|
+
allowRealtime: zod_1.z.boolean(),
|
|
443
|
+
}),
|
|
444
|
+
/** Whether prompt and response text is written to the logs. */
|
|
445
|
+
logPromptContent: zod_1.z.boolean(),
|
|
446
|
+
/** Days usage rows are kept. */
|
|
447
|
+
usageRetentionDays: zod_1.z.number().int().min(1).max(constants_js_1.AI_USAGE_RETENTION_MAX_DAYS),
|
|
448
|
+
/** Which provider-hosted tools are switched on (all off by default). */
|
|
449
|
+
hostedTools: zod_1.z.object({
|
|
450
|
+
/** Hosted web search. */
|
|
451
|
+
web_search: zod_1.z.boolean(),
|
|
452
|
+
/** Hosted file search. */
|
|
453
|
+
file_search: zod_1.z.boolean(),
|
|
454
|
+
/** Hosted code execution. */
|
|
455
|
+
code_interpreter: zod_1.z.boolean(),
|
|
456
|
+
/** Hosted image generation. */
|
|
457
|
+
image_generation: zod_1.z.boolean(),
|
|
458
|
+
/** Remote MCP servers. */
|
|
459
|
+
mcp: zod_1.z.boolean(),
|
|
460
|
+
/** Hosts a remote MCP server may be on; empty means any `https://` host. */
|
|
461
|
+
mcpAllowedHosts: zod_1.z.array(mcpAllowedHostSchema).max(constants_js_1.AI_MCP_ALLOWED_HOSTS_MAX),
|
|
462
|
+
}),
|
|
463
|
+
/** Rate limits and output caps; every absent field is unlimited. */
|
|
464
|
+
limits: exports.systemAiLimitsSchema,
|
|
465
|
+
// #739: whether the DEPLOYMENT's provider key (the `ai` credential of the
|
|
466
|
+
// system tier) may serve a call made in an organization that has no key of
|
|
467
|
+
// its own, under the same rule an organization key does. `true`: today's
|
|
468
|
+
// behaviour, where the deployment key is the only administrator key.
|
|
469
|
+
/** Whether the deployment's keys pay for an organization that stores no key of its own (#739). */
|
|
470
|
+
deploymentKeyServesOrgs: zod_1.z.boolean(),
|
|
471
|
+
});
|
|
472
|
+
/**
|
|
473
|
+
* `ai`, one level deep — matching `systemStoragePatchSchema`'s own shape one
|
|
474
|
+
* level further in: `providers` and `defaults` are each optional as a whole
|
|
475
|
+
* AND optional field by field inside, so
|
|
476
|
+
* `{ "ai": { "providers": { "openai": { "enabled": true } } } }` is a legal body that leaves `defaults` and
|
|
477
|
+
* `logPromptContent` untouched. See `SystemSettingsService.patchSettings`
|
|
478
|
+
* for the merge this shape is built to support.
|
|
479
|
+
*/
|
|
480
|
+
//
|
|
481
|
+
// `baseUrl` and `maxOutputTokensCap` are the two OPTIONAL fields of the stored
|
|
482
|
+
// value, so they are the two a PATCH must be able to REMOVE: absent leaves the
|
|
483
|
+
// stored value alone, explicit `null` deletes it (back to "provider default
|
|
484
|
+
// host" / "no cap"). The same absent-vs-null distinction
|
|
485
|
+
// `storage.forcePathStyle` and `maintenance.startedAt` already draw; without
|
|
486
|
+
// it an override, once set, could be changed but never cleared (#428).
|
|
487
|
+
/**
|
|
488
|
+
* A `PATCH /api/system-settings` body's `ai` member: every field optional.
|
|
489
|
+
*
|
|
490
|
+
* @stability experimental
|
|
491
|
+
*/
|
|
492
|
+
exports.systemAiPatchSchema = zod_1.z.object({
|
|
493
|
+
/** Whether AI is switched on (the kill switch). */
|
|
494
|
+
enabled: zod_1.z.boolean().optional(),
|
|
495
|
+
/** Whose key pays: the caller's own only (`byok`), or an administrator's as a fallback. */
|
|
496
|
+
keyPolicy: keyPolicyEnum().optional(),
|
|
497
|
+
/** Per-provider settings, by provider id. */
|
|
498
|
+
providers: exports.systemAiProvidersPatchSchema.optional(),
|
|
499
|
+
/** Deployment-wide defaults a call cannot exceed. */
|
|
500
|
+
defaults: zod_1.z
|
|
501
|
+
.object({
|
|
502
|
+
/** Output-token ceiling for every call; `null` means no cap. */
|
|
503
|
+
maxOutputTokensCap: zod_1.z.number().int().positive().nullable().optional(),
|
|
504
|
+
/** Whether a call may be queued as a background run. */
|
|
505
|
+
allowBackgroundRuns: zod_1.z.boolean().optional(),
|
|
506
|
+
/** Whether realtime voice sessions may be minted. */
|
|
507
|
+
allowRealtime: zod_1.z.boolean().optional(),
|
|
508
|
+
})
|
|
509
|
+
.optional(),
|
|
510
|
+
/** Whether prompt and response text is written to the logs. */
|
|
511
|
+
logPromptContent: zod_1.z.boolean().optional(),
|
|
512
|
+
/** Days usage rows are kept. */
|
|
513
|
+
usageRetentionDays: zod_1.z.number().int().min(1).max(constants_js_1.AI_USAGE_RETENTION_MAX_DAYS).optional(),
|
|
514
|
+
// Field by field; `mcpAllowedHosts` REPLACES wholesale (RFC 7396's rule
|
|
515
|
+
// for arrays, and `notifications.disabledEvents`' precedent).
|
|
516
|
+
/** Which provider-hosted tools are switched on (all off by default). */
|
|
517
|
+
hostedTools: zod_1.z
|
|
518
|
+
.object({
|
|
519
|
+
/** Hosted web search. */
|
|
520
|
+
web_search: zod_1.z.boolean().optional(),
|
|
521
|
+
/** Hosted file search. */
|
|
522
|
+
file_search: zod_1.z.boolean().optional(),
|
|
523
|
+
/** Hosted code execution. */
|
|
524
|
+
code_interpreter: zod_1.z.boolean().optional(),
|
|
525
|
+
/** Hosted image generation. */
|
|
526
|
+
image_generation: zod_1.z.boolean().optional(),
|
|
527
|
+
/** Remote MCP servers. */
|
|
528
|
+
mcp: zod_1.z.boolean().optional(),
|
|
529
|
+
/** Hosts a remote MCP server may be on; empty means any `https://` host. */
|
|
530
|
+
mcpAllowedHosts: zod_1.z.array(mcpAllowedHostSchema).max(constants_js_1.AI_MCP_ALLOWED_HOSTS_MAX).optional(),
|
|
531
|
+
})
|
|
532
|
+
.optional(),
|
|
533
|
+
// #450. REPLACES WHOLESALE when present — the whole `limits` object is the
|
|
534
|
+
// new value. A field-by-field merge could never REMOVE a limit (or a
|
|
535
|
+
// per-model entry), and "absent means unlimited" is the one way to lift
|
|
536
|
+
// one; the same reasoning as `mcpAllowedHosts` above.
|
|
537
|
+
/** Rate limits and output caps; every absent field is unlimited. */
|
|
538
|
+
limits: exports.systemAiLimitsSchema.optional(),
|
|
539
|
+
// #739. See `systemAiSchema`.
|
|
540
|
+
/** Whether the deployment's keys pay for an organization that stores no key of its own (#739). */
|
|
541
|
+
deploymentKeyServesOrgs: zod_1.z.boolean().optional(),
|
|
542
|
+
});
|
|
543
|
+
// =============================================================================
|
|
544
|
+
// AI platform policy on the wire (#423, epic #419, umbrella #418)
|
|
545
|
+
// =============================================================================
|
|
546
|
+
//
|
|
547
|
+
// Restated here rather than imported, for the reason at the top of this file.
|
|
548
|
+
// Optional in the PUT body like the operations namespaces and `storage`
|
|
549
|
+
// above, and for the identical reason: this block ships ahead of every
|
|
550
|
+
// client that knows it exists.
|
|
551
|
+
//
|
|
552
|
+
// NO API KEY FIELD, ON EITHER SCHEMA, EVER. A user's own key is
|
|
553
|
+
// `UserAiKey.secret`, written through its own dedicated endpoint (#428), not
|
|
554
|
+
// through this document; an org-wide fallback key belongs in the encrypted
|
|
555
|
+
// credential store. See `common/schemas/settings.schema.ts`, which carries
|
|
556
|
+
// the argument and a compile-time proof of the absence.
|
|
557
|
+
//
|
|
558
|
+
// Bounds mirror `systemAiSchema` exactly.
|
|
559
|
+
// `ai.limits` (#450). Every field optional — absent means unlimited. Used by
|
|
560
|
+
// the PUT body and (whole, since a PATCH replaces it wholesale) the PATCH body.
|
|
561
|
+
/**
|
|
562
|
+
* The admin `PUT /api/admin/ai/config` body's `limits`.
|
|
563
|
+
*
|
|
564
|
+
* @stability experimental
|
|
565
|
+
*/
|
|
566
|
+
exports.aiLimitsSettingsSchema = zod_1.z.object({
|
|
567
|
+
/** Limits on every call a user makes, whoever's key pays. */
|
|
568
|
+
perUser: zod_1.z
|
|
569
|
+
.object({
|
|
570
|
+
/** Requests per minute. */
|
|
571
|
+
requestsPerMinute: exports.aiLimitValueSchema.optional(),
|
|
572
|
+
/** Requests per UTC day. */
|
|
573
|
+
requestsPerDay: exports.aiLimitValueSchema.optional(),
|
|
574
|
+
})
|
|
575
|
+
.optional(),
|
|
576
|
+
/** Limits on the calls an administrator-managed key pays for. */
|
|
577
|
+
orgKey: zod_1.z
|
|
578
|
+
.object({
|
|
579
|
+
/** Requests per UTC day, per user. */
|
|
580
|
+
requestsPerDayPerUser: exports.aiLimitValueSchema.optional(),
|
|
581
|
+
/** Input plus output tokens per UTC day, per user. */
|
|
582
|
+
tokensPerDayPerUser: exports.aiLimitValueSchema.optional(),
|
|
583
|
+
})
|
|
584
|
+
.optional(),
|
|
585
|
+
// #739: the deployment default PER ORGANIZATION (requests and output tokens
|
|
586
|
+
// per UTC day, counted over every call made in that organization); absent
|
|
587
|
+
// means unlimited. An organization may only lower it (its org layer).
|
|
588
|
+
/** Limits on one organization's whole daily volume, whoever's key pays (#739). */
|
|
589
|
+
perOrg: zod_1.z
|
|
590
|
+
.object({
|
|
591
|
+
/** Requests per UTC day. */
|
|
592
|
+
requestsPerDay: exports.aiLimitValueSchema.optional(),
|
|
593
|
+
/** Output tokens per UTC day. */
|
|
594
|
+
outputTokensPerDay: exports.aiLimitValueSchema.optional(),
|
|
595
|
+
})
|
|
596
|
+
.optional(),
|
|
597
|
+
/** Per-model limits, keyed `<provider>:<modelId>`. */
|
|
598
|
+
perModel: zod_1.z
|
|
599
|
+
.record(zod_1.z.string().max(constants_js_1.AI_LIMIT_MODEL_KEY_MAX).regex(constants_js_1.AI_LIMIT_MODEL_KEY_PATTERN), zod_1.z.object({
|
|
600
|
+
/** Output-token ceiling for every call to the model. */
|
|
601
|
+
maxOutputTokens: exports.aiLimitValueSchema.optional(),
|
|
602
|
+
/** Requests per minute, per user, to the model. */
|
|
603
|
+
requestsPerMinutePerUser: exports.aiLimitValueSchema.optional(),
|
|
604
|
+
}))
|
|
605
|
+
.refine((value) => Object.keys(value).length <= constants_js_1.AI_LIMITS_PER_MODEL_MAX, {
|
|
606
|
+
message: `At most ${constants_js_1.AI_LIMITS_PER_MODEL_MAX} per-model limits`,
|
|
607
|
+
})
|
|
608
|
+
.optional(),
|
|
609
|
+
});
|
|
610
|
+
/**
|
|
611
|
+
* The `ai` namespace on the wire of `PUT /api/system-settings`.
|
|
612
|
+
*
|
|
613
|
+
* @stability experimental
|
|
614
|
+
*/
|
|
615
|
+
exports.aiSettingsSchema = zod_1.z.object({
|
|
616
|
+
/** Whether AI is switched on (the kill switch). */
|
|
617
|
+
enabled: zod_1.z.boolean(),
|
|
618
|
+
/** Whose key pays: the caller's own only (`byok`), or an administrator's as a fallback. */
|
|
619
|
+
keyPolicy: keyPolicyEnum(),
|
|
620
|
+
/** Per-provider settings, by provider id. */
|
|
621
|
+
providers: exports.systemAiProvidersSchema,
|
|
622
|
+
/** Deployment-wide defaults a call cannot exceed. */
|
|
623
|
+
defaults: zod_1.z.object({
|
|
624
|
+
/** Output-token ceiling for every call; `null` means no cap. */
|
|
625
|
+
maxOutputTokensCap: zod_1.z.number().int().positive().optional(),
|
|
626
|
+
/** Whether a call may be queued as a background run. */
|
|
627
|
+
allowBackgroundRuns: zod_1.z.boolean(),
|
|
628
|
+
/** Whether realtime voice sessions may be minted. */
|
|
629
|
+
allowRealtime: zod_1.z.boolean(),
|
|
630
|
+
}),
|
|
631
|
+
/** Whether prompt and response text is written to the logs. */
|
|
632
|
+
logPromptContent: zod_1.z.boolean(),
|
|
633
|
+
/** Days usage rows are kept. */
|
|
634
|
+
usageRetentionDays: zod_1.z.number().int().min(1).max(constants_js_1.AI_USAGE_RETENTION_MAX_DAYS),
|
|
635
|
+
/** Which provider-hosted tools are switched on (all off by default). */
|
|
636
|
+
hostedTools: zod_1.z.object({
|
|
637
|
+
/** Hosted web search. */
|
|
638
|
+
web_search: zod_1.z.boolean(),
|
|
639
|
+
/** Hosted file search. */
|
|
640
|
+
file_search: zod_1.z.boolean(),
|
|
641
|
+
/** Hosted code execution. */
|
|
642
|
+
code_interpreter: zod_1.z.boolean(),
|
|
643
|
+
/** Hosted image generation. */
|
|
644
|
+
image_generation: zod_1.z.boolean(),
|
|
645
|
+
/** Remote MCP servers. */
|
|
646
|
+
mcp: zod_1.z.boolean(),
|
|
647
|
+
/** Hosts a remote MCP server may be on; empty means any `https://` host. */
|
|
648
|
+
mcpAllowedHosts: zod_1.z
|
|
649
|
+
.array(zod_1.z.string().max(253).regex(constants_js_1.AI_MCP_ALLOWED_HOST_PATTERN))
|
|
650
|
+
.max(constants_js_1.AI_MCP_ALLOWED_HOSTS_MAX),
|
|
651
|
+
}),
|
|
652
|
+
/** Rate limits and output caps; every absent field is unlimited. */
|
|
653
|
+
limits: exports.aiLimitsSettingsSchema,
|
|
654
|
+
// #739: optional on the wire, so a client that predates it still PUTs a
|
|
655
|
+
// legal body; absent keeps the stored value (default `true`).
|
|
656
|
+
/** Whether the deployment's keys pay for an organization that stores no key of its own (#739). */
|
|
657
|
+
deploymentKeyServesOrgs: zod_1.z.boolean().optional(),
|
|
658
|
+
});
|
|
659
|
+
// #423, epic #419. Optional at the namespace level and field by field
|
|
660
|
+
// inside, one level into each `providers.<id>` and `defaults`, matching
|
|
661
|
+
// `storage` above — `{ "ai": { "enabled": true } }` must be a legal body,
|
|
662
|
+
// or the admin page has to send the whole namespace to flip one switch.
|
|
663
|
+
// NO API KEY FIELD — see the section header above.
|
|
664
|
+
/**
|
|
665
|
+
* The `ai` namespace on the wire of `PATCH /api/system-settings`.
|
|
666
|
+
*
|
|
667
|
+
* @stability experimental
|
|
668
|
+
*/
|
|
669
|
+
exports.aiSettingsPatchSchema = zod_1.z.object({
|
|
670
|
+
/** Whether AI is switched on (the kill switch). */
|
|
671
|
+
enabled: zod_1.z.boolean().optional(),
|
|
672
|
+
/** Whose key pays: the caller's own only (`byok`), or an administrator's as a fallback. */
|
|
673
|
+
keyPolicy: keyPolicyEnum().optional(),
|
|
674
|
+
/** Per-provider settings, by provider id. */
|
|
675
|
+
providers: exports.systemAiProvidersPatchSchema.optional(),
|
|
676
|
+
/** Deployment-wide defaults a call cannot exceed. */
|
|
677
|
+
defaults: zod_1.z
|
|
678
|
+
.object({
|
|
679
|
+
// Absent leaves it alone; explicit `null` removes the cap.
|
|
680
|
+
/** Output-token ceiling for every call; `null` means no cap. */
|
|
681
|
+
maxOutputTokensCap: zod_1.z.number().int().positive().nullable().optional(),
|
|
682
|
+
/** Whether a call may be queued as a background run. */
|
|
683
|
+
allowBackgroundRuns: zod_1.z.boolean().optional(),
|
|
684
|
+
/** Whether realtime voice sessions may be minted. */
|
|
685
|
+
allowRealtime: zod_1.z.boolean().optional(),
|
|
686
|
+
})
|
|
687
|
+
.optional(),
|
|
688
|
+
/** Whether prompt and response text is written to the logs. */
|
|
689
|
+
logPromptContent: zod_1.z.boolean().optional(),
|
|
690
|
+
/** Days usage rows are kept. */
|
|
691
|
+
usageRetentionDays: zod_1.z.number().int().min(1).max(constants_js_1.AI_USAGE_RETENTION_MAX_DAYS).optional(),
|
|
692
|
+
// #442. Booleans field by field; `mcpAllowedHosts` replaces wholesale.
|
|
693
|
+
/** Which provider-hosted tools are switched on (all off by default). */
|
|
694
|
+
hostedTools: zod_1.z
|
|
695
|
+
.object({
|
|
696
|
+
/** Hosted web search. */
|
|
697
|
+
web_search: zod_1.z.boolean().optional(),
|
|
698
|
+
/** Hosted file search. */
|
|
699
|
+
file_search: zod_1.z.boolean().optional(),
|
|
700
|
+
/** Hosted code execution. */
|
|
701
|
+
code_interpreter: zod_1.z.boolean().optional(),
|
|
702
|
+
/** Hosted image generation. */
|
|
703
|
+
image_generation: zod_1.z.boolean().optional(),
|
|
704
|
+
/** Remote MCP servers. */
|
|
705
|
+
mcp: zod_1.z.boolean().optional(),
|
|
706
|
+
/** Hosts a remote MCP server may be on; empty means any `https://` host. */
|
|
707
|
+
mcpAllowedHosts: zod_1.z
|
|
708
|
+
.array(zod_1.z.string().max(253).regex(constants_js_1.AI_MCP_ALLOWED_HOST_PATTERN))
|
|
709
|
+
.max(constants_js_1.AI_MCP_ALLOWED_HOSTS_MAX)
|
|
710
|
+
.optional(),
|
|
711
|
+
})
|
|
712
|
+
.optional(),
|
|
713
|
+
// #450. Replaces wholesale when present — see `systemAiPatchSchema`.
|
|
714
|
+
/** Rate limits and output caps; every absent field is unlimited. */
|
|
715
|
+
limits: exports.aiLimitsSettingsSchema.optional(),
|
|
716
|
+
/** Whether the deployment's keys pay for an organization that stores no key of its own (#739). */
|
|
717
|
+
deploymentKeyServesOrgs: zod_1.z.boolean().optional(),
|
|
718
|
+
});
|
|
719
|
+
// #423, epic #419, umbrella #418 — the AI platform policy, published for
|
|
720
|
+
// the same reason the operations namespaces and `storage` above are: a
|
|
721
|
+
// block this response omits is a block no client can echo back in a PUT.
|
|
722
|
+
//
|
|
723
|
+
// THERE IS NO API KEY FIELD AND THERE MUST NEVER BE ONE. A user's own key
|
|
724
|
+
// is `UserAiKey.secret`, in its own table; an org-wide fallback key belongs
|
|
725
|
+
// in the encrypted credential store. See
|
|
726
|
+
// `common/schemas/settings.schema.ts` for the full argument and its
|
|
727
|
+
// compile-time proof.
|
|
728
|
+
/**
|
|
729
|
+
* The `ai` namespace as `GET /api/system-settings` answers it.
|
|
730
|
+
*
|
|
731
|
+
* @stability experimental
|
|
732
|
+
*/
|
|
733
|
+
exports.aiResponseSchema = zod_1.z.object({
|
|
734
|
+
/** Whether AI is switched on (the kill switch). */
|
|
735
|
+
enabled: zod_1.z.boolean(),
|
|
736
|
+
/** Whose key pays: the caller's own only (`byok`), or an administrator's as a fallback. */
|
|
737
|
+
keyPolicy: keyPolicyEnum(),
|
|
738
|
+
/** Per-provider settings, by provider id. */
|
|
739
|
+
providers: exports.aiProvidersResponseSchema,
|
|
740
|
+
/** Deployment-wide defaults a call cannot exceed. */
|
|
741
|
+
defaults: zod_1.z.object({
|
|
742
|
+
/** Output-token ceiling for every call; `null` means no cap. */
|
|
743
|
+
maxOutputTokensCap: zod_1.z.number().optional(),
|
|
744
|
+
/** Whether a call may be queued as a background run. */
|
|
745
|
+
allowBackgroundRuns: zod_1.z.boolean(),
|
|
746
|
+
/** Whether realtime voice sessions may be minted. */
|
|
747
|
+
allowRealtime: zod_1.z.boolean(),
|
|
748
|
+
}),
|
|
749
|
+
/** Whether prompt and response text is written to the logs. */
|
|
750
|
+
logPromptContent: zod_1.z.boolean(),
|
|
751
|
+
/** Days usage rows are kept. */
|
|
752
|
+
usageRetentionDays: zod_1.z.number().int(),
|
|
753
|
+
/** Which provider-hosted tools are switched on (all off by default). */
|
|
754
|
+
hostedTools: zod_1.z.object({
|
|
755
|
+
/** Hosted web search. */
|
|
756
|
+
web_search: zod_1.z.boolean(),
|
|
757
|
+
/** Hosted file search. */
|
|
758
|
+
file_search: zod_1.z.boolean(),
|
|
759
|
+
/** Hosted code execution. */
|
|
760
|
+
code_interpreter: zod_1.z.boolean(),
|
|
761
|
+
/** Hosted image generation. */
|
|
762
|
+
image_generation: zod_1.z.boolean(),
|
|
763
|
+
/** Remote MCP servers. */
|
|
764
|
+
mcp: zod_1.z.boolean(),
|
|
765
|
+
/** Hosts a remote MCP server may be on; empty means any `https://` host. */
|
|
766
|
+
mcpAllowedHosts: zod_1.z.array(zod_1.z.string()),
|
|
767
|
+
}),
|
|
768
|
+
/** Rate limits and output caps; every absent field is unlimited. */
|
|
769
|
+
limits: zod_1.z.object({
|
|
770
|
+
/** Limits on every call a user makes, whoever's key pays. */
|
|
771
|
+
perUser: zod_1.z
|
|
772
|
+
.object({
|
|
773
|
+
/** Requests per minute. */
|
|
774
|
+
requestsPerMinute: zod_1.z.number().int().optional(),
|
|
775
|
+
/** Requests per UTC day. */
|
|
776
|
+
requestsPerDay: zod_1.z.number().int().optional(),
|
|
777
|
+
})
|
|
778
|
+
.optional(),
|
|
779
|
+
/** Limits on the calls an administrator-managed key pays for. */
|
|
780
|
+
orgKey: zod_1.z
|
|
781
|
+
.object({
|
|
782
|
+
/** Requests per UTC day, per user. */
|
|
783
|
+
requestsPerDayPerUser: zod_1.z.number().int().optional(),
|
|
784
|
+
/** Input plus output tokens per UTC day, per user. */
|
|
785
|
+
tokensPerDayPerUser: zod_1.z.number().int().optional(),
|
|
786
|
+
})
|
|
787
|
+
.optional(),
|
|
788
|
+
/** Limits on one organization's whole daily volume, whoever's key pays (#739). */
|
|
789
|
+
perOrg: zod_1.z
|
|
790
|
+
.object({
|
|
791
|
+
/** Requests per UTC day. */
|
|
792
|
+
requestsPerDay: zod_1.z.number().int().optional(),
|
|
793
|
+
/** Output tokens per UTC day. */
|
|
794
|
+
outputTokensPerDay: zod_1.z.number().int().optional(),
|
|
795
|
+
})
|
|
796
|
+
.optional(),
|
|
797
|
+
/** Per-model limits, keyed `<provider>:<modelId>`. */
|
|
798
|
+
perModel: zod_1.z
|
|
799
|
+
.record(zod_1.z.string(), zod_1.z.object({
|
|
800
|
+
/** Output-token ceiling for every call to the model. */
|
|
801
|
+
maxOutputTokens: zod_1.z.number().int().optional(),
|
|
802
|
+
/** Requests per minute, per user, to the model. */
|
|
803
|
+
requestsPerMinutePerUser: zod_1.z.number().int().optional(),
|
|
804
|
+
}))
|
|
805
|
+
.optional(),
|
|
806
|
+
}),
|
|
807
|
+
/** Whether the deployment's keys pay for an organization that stores no key of its own (#739). */
|
|
808
|
+
deploymentKeyServesOrgs: zod_1.z.boolean(),
|
|
809
|
+
});
|
|
810
|
+
// =============================================================================
|
|
811
|
+
// The org layer of `ai` (issue #739): what one organization may set
|
|
812
|
+
// =============================================================================
|
|
813
|
+
//
|
|
814
|
+
// An organization can only TIGHTEN the deployment's policy (`/api/org-settings`,
|
|
815
|
+
// `org_ai_config:write`): turn AI off for its members, narrow `keyPolicy` from
|
|
816
|
+
// `byok_with_org_fallback` to `byok` (never the reverse), lower the per-org
|
|
817
|
+
// daily caps, and switch providers off. Every field optional (an org stores
|
|
818
|
+
// only what it overrides), no `.default()`, no secret.
|
|
819
|
+
/**
|
|
820
|
+
* The fields of the `ai` namespace an organization may set for itself.
|
|
821
|
+
*
|
|
822
|
+
* @stability experimental
|
|
823
|
+
*/
|
|
824
|
+
exports.orgAiSettingsSchema = zod_1.z.object({
|
|
825
|
+
/** Whether AI is switched on (the kill switch). */
|
|
826
|
+
enabled: zod_1.z.boolean().optional(),
|
|
827
|
+
/** Whose key pays: the caller's own only (`byok`), or an administrator's as a fallback. */
|
|
828
|
+
keyPolicy: keyPolicyEnum().optional(),
|
|
829
|
+
/** Per-provider settings, by provider id. */
|
|
830
|
+
providers: exports.orgAiProvidersSchema.optional(),
|
|
831
|
+
/** Rate limits and output caps; every absent field is unlimited. */
|
|
832
|
+
limits: zod_1.z
|
|
833
|
+
.object({
|
|
834
|
+
/** Limits on one organization's whole daily volume, whoever's key pays (#739). */
|
|
835
|
+
perOrg: zod_1.z
|
|
836
|
+
.object({
|
|
837
|
+
/** Requests per UTC day. */
|
|
838
|
+
requestsPerDay: exports.aiLimitValueSchema.optional(),
|
|
839
|
+
/** Output tokens per UTC day. */
|
|
840
|
+
outputTokensPerDay: exports.aiLimitValueSchema.optional(),
|
|
841
|
+
})
|
|
842
|
+
.optional(),
|
|
843
|
+
})
|
|
844
|
+
.optional(),
|
|
845
|
+
});
|
|
846
|
+
function lower(system, org) {
|
|
847
|
+
if (system === undefined)
|
|
848
|
+
return org;
|
|
849
|
+
if (org === undefined)
|
|
850
|
+
return system;
|
|
851
|
+
return Math.min(system, org);
|
|
852
|
+
}
|
|
853
|
+
/**
|
|
854
|
+
* The effective `ai` policy of an organization: the deployment's value with
|
|
855
|
+
* the organization's overrides applied, each of which can only tighten it.
|
|
856
|
+
*
|
|
857
|
+
* @param system - the deployment's `ai` value.
|
|
858
|
+
* @param org - the organization's stored overrides.
|
|
859
|
+
* @returns the effective value (a new object; `system` is not modified).
|
|
860
|
+
*
|
|
861
|
+
* @stability experimental
|
|
862
|
+
*/
|
|
863
|
+
function tightenAiPolicy(system, org) {
|
|
864
|
+
const keyPolicy = system.keyPolicy === 'byok' || org.keyPolicy === 'byok' ? 'byok' : system.keyPolicy;
|
|
865
|
+
const providers = Object.fromEntries(Object.entries(system.providers).map(([id, slot]) => {
|
|
866
|
+
const override = org.providers?.[id];
|
|
867
|
+
return [id, { ...slot, enabled: slot.enabled && (override?.enabled ?? true) }];
|
|
868
|
+
}));
|
|
869
|
+
const systemPerOrg = system.limits.perOrg;
|
|
870
|
+
const orgPerOrg = org.limits?.perOrg;
|
|
871
|
+
const requestsPerDay = lower(systemPerOrg?.requestsPerDay, orgPerOrg?.requestsPerDay);
|
|
872
|
+
const outputTokensPerDay = lower(systemPerOrg?.outputTokensPerDay, orgPerOrg?.outputTokensPerDay);
|
|
873
|
+
const perOrg = requestsPerDay !== undefined || outputTokensPerDay !== undefined
|
|
874
|
+
? {
|
|
875
|
+
...(requestsPerDay !== undefined ? { requestsPerDay } : {}),
|
|
876
|
+
...(outputTokensPerDay !== undefined ? { outputTokensPerDay } : {}),
|
|
877
|
+
}
|
|
878
|
+
: undefined;
|
|
879
|
+
const { perOrg: _drop, ...limits } = system.limits;
|
|
880
|
+
return {
|
|
881
|
+
...system,
|
|
882
|
+
enabled: system.enabled && (org.enabled ?? true),
|
|
883
|
+
keyPolicy,
|
|
884
|
+
providers,
|
|
885
|
+
limits: { ...limits, ...(perOrg ? { perOrg } : {}) },
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
/**
|
|
889
|
+
* The proof's witness value.
|
|
890
|
+
*
|
|
891
|
+
* @stability experimental
|
|
892
|
+
*/
|
|
893
|
+
exports.AI_SETTINGS_CARRIES_NO_SECRET = true;
|
|
894
|
+
//# sourceMappingURL=schemas.js.map
|