@vertesia/common 1.5.0-dev.20260722.120446Z → 1.5.0-dev.20260804.124748Z
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/lib/access-control-values.d.ts +98 -0
- package/lib/access-control-values.d.ts.map +1 -0
- package/lib/access-control-values.js +101 -0
- package/lib/access-control-values.js.map +1 -0
- package/lib/access-control.d.ts +22 -119
- package/lib/access-control.d.ts.map +1 -1
- package/lib/access-control.js +6 -78
- package/lib/access-control.js.map +1 -1
- package/lib/account-values.d.ts +53 -0
- package/lib/account-values.d.ts.map +1 -0
- package/lib/account-values.js +91 -0
- package/lib/account-values.js.map +1 -0
- package/lib/analytics.d.ts +12 -38
- package/lib/analytics.d.ts.map +1 -1
- package/lib/api-schemas/access-control.d.ts +215 -0
- package/lib/api-schemas/access-control.d.ts.map +1 -0
- package/lib/api-schemas/access-control.js +165 -0
- package/lib/api-schemas/access-control.js.map +1 -0
- package/lib/api-schemas/account.d.ts +101 -0
- package/lib/api-schemas/account.d.ts.map +1 -0
- package/lib/api-schemas/account.js +136 -0
- package/lib/api-schemas/account.js.map +1 -0
- package/lib/api-schemas/adapter.d.ts +80 -0
- package/lib/api-schemas/adapter.d.ts.map +1 -0
- package/lib/api-schemas/adapter.js +726 -0
- package/lib/api-schemas/adapter.js.map +1 -0
- package/lib/api-schemas/agent-runs.d.ts +3781 -0
- package/lib/api-schemas/agent-runs.d.ts.map +1 -0
- package/lib/api-schemas/agent-runs.js +991 -0
- package/lib/api-schemas/agent-runs.js.map +1 -0
- package/lib/api-schemas/analytics.d.ts +86 -0
- package/lib/api-schemas/analytics.d.ts.map +1 -0
- package/lib/api-schemas/analytics.js +58 -0
- package/lib/api-schemas/analytics.js.map +1 -0
- package/lib/api-schemas/apikey.d.ts +231 -0
- package/lib/api-schemas/apikey.d.ts.map +1 -0
- package/lib/api-schemas/apikey.js +172 -0
- package/lib/api-schemas/apikey.js.map +1 -0
- package/lib/api-schemas/app-lifecycle.d.ts +1114 -0
- package/lib/api-schemas/app-lifecycle.d.ts.map +1 -0
- package/lib/api-schemas/app-lifecycle.js +750 -0
- package/lib/api-schemas/app-lifecycle.js.map +1 -0
- package/lib/api-schemas/app-runtime.d.ts +9056 -0
- package/lib/api-schemas/app-runtime.d.ts.map +1 -0
- package/lib/api-schemas/app-runtime.js +782 -0
- package/lib/api-schemas/app-runtime.js.map +1 -0
- package/lib/api-schemas/apps.d.ts +247 -0
- package/lib/api-schemas/apps.d.ts.map +1 -0
- package/lib/api-schemas/apps.js +366 -0
- package/lib/api-schemas/apps.js.map +1 -0
- package/lib/api-schemas/audit-trail.d.ts +465 -0
- package/lib/api-schemas/audit-trail.d.ts.map +1 -0
- package/lib/api-schemas/audit-trail.js +218 -0
- package/lib/api-schemas/audit-trail.js.map +1 -0
- package/lib/api-schemas/bulk-operation.d.ts +104 -0
- package/lib/api-schemas/bulk-operation.d.ts.map +1 -0
- package/lib/api-schemas/bulk-operation.js +66 -0
- package/lib/api-schemas/bulk-operation.js.map +1 -0
- package/lib/api-schemas/commands.d.ts +50 -0
- package/lib/api-schemas/commands.d.ts.map +1 -0
- package/lib/api-schemas/commands.js +58 -0
- package/lib/api-schemas/commands.js.map +1 -0
- package/lib/api-schemas/content.d.ts +3561 -0
- package/lib/api-schemas/content.d.ts.map +1 -0
- package/lib/api-schemas/content.js +842 -0
- package/lib/api-schemas/content.js.map +1 -0
- package/lib/api-schemas/cost-analytics.d.ts +300 -0
- package/lib/api-schemas/cost-analytics.d.ts.map +1 -0
- package/lib/api-schemas/cost-analytics.js +218 -0
- package/lib/api-schemas/cost-analytics.js.map +1 -0
- package/lib/api-schemas/dashboard.d.ts +408 -0
- package/lib/api-schemas/dashboard.d.ts.map +1 -0
- package/lib/api-schemas/dashboard.js +311 -0
- package/lib/api-schemas/dashboard.js.map +1 -0
- package/lib/api-schemas/data-store.d.ts +1650 -0
- package/lib/api-schemas/data-store.d.ts.map +1 -0
- package/lib/api-schemas/data-store.js +504 -0
- package/lib/api-schemas/data-store.js.map +1 -0
- package/lib/api-schemas/document-processing.d.ts +1501 -0
- package/lib/api-schemas/document-processing.d.ts.map +1 -0
- package/lib/api-schemas/document-processing.js +312 -0
- package/lib/api-schemas/document-processing.js.map +1 -0
- package/lib/api-schemas/embeddings.d.ts +184 -0
- package/lib/api-schemas/embeddings.d.ts.map +1 -0
- package/lib/api-schemas/embeddings.js +102 -0
- package/lib/api-schemas/embeddings.js.map +1 -0
- package/lib/api-schemas/environment.d.ts +412 -0
- package/lib/api-schemas/environment.d.ts.map +1 -0
- package/lib/api-schemas/environment.js +170 -0
- package/lib/api-schemas/environment.js.map +1 -0
- package/lib/api-schemas/events.d.ts +4880 -0
- package/lib/api-schemas/events.d.ts.map +1 -0
- package/lib/api-schemas/events.js +832 -0
- package/lib/api-schemas/events.js.map +1 -0
- package/lib/api-schemas/files.d.ts +107 -0
- package/lib/api-schemas/files.d.ts.map +1 -0
- package/lib/api-schemas/files.js +137 -0
- package/lib/api-schemas/files.js.map +1 -0
- package/lib/api-schemas/group.d.ts +122 -0
- package/lib/api-schemas/group.d.ts.map +1 -0
- package/lib/api-schemas/group.js +142 -0
- package/lib/api-schemas/group.js.map +1 -0
- package/lib/api-schemas/index.d.ts +36 -0
- package/lib/api-schemas/index.d.ts.map +1 -0
- package/lib/api-schemas/index.js +36 -0
- package/lib/api-schemas/index.js.map +1 -0
- package/lib/api-schemas/indexing.d.ts +144 -0
- package/lib/api-schemas/indexing.d.ts.map +1 -0
- package/lib/api-schemas/indexing.js +217 -0
- package/lib/api-schemas/indexing.js.map +1 -0
- package/lib/api-schemas/integrations.d.ts +269 -0
- package/lib/api-schemas/integrations.d.ts.map +1 -0
- package/lib/api-schemas/integrations.js +335 -0
- package/lib/api-schemas/integrations.js.map +1 -0
- package/lib/api-schemas/interaction.d.ts +22454 -0
- package/lib/api-schemas/interaction.d.ts.map +1 -0
- package/lib/api-schemas/interaction.js +2065 -0
- package/lib/api-schemas/interaction.js.map +1 -0
- package/lib/api-schemas/invites.d.ts +162 -0
- package/lib/api-schemas/invites.d.ts.map +1 -0
- package/lib/api-schemas/invites.js +106 -0
- package/lib/api-schemas/invites.js.map +1 -0
- package/lib/api-schemas/oauth-server.d.ts +415 -0
- package/lib/api-schemas/oauth-server.d.ts.map +1 -0
- package/lib/api-schemas/oauth-server.js +193 -0
- package/lib/api-schemas/oauth-server.js.map +1 -0
- package/lib/api-schemas/oauth.d.ts +150 -0
- package/lib/api-schemas/oauth.d.ts.map +1 -0
- package/lib/api-schemas/oauth.js +148 -0
- package/lib/api-schemas/oauth.js.map +1 -0
- package/lib/api-schemas/parameters.d.ts +64 -0
- package/lib/api-schemas/parameters.d.ts.map +1 -0
- package/lib/api-schemas/parameters.js +246 -0
- package/lib/api-schemas/parameters.js.map +1 -0
- package/lib/api-schemas/process.d.ts +499 -0
- package/lib/api-schemas/process.d.ts.map +1 -0
- package/lib/api-schemas/process.js +817 -0
- package/lib/api-schemas/process.js.map +1 -0
- package/lib/api-schemas/project-configuration.d.ts +4900 -0
- package/lib/api-schemas/project-configuration.d.ts.map +1 -0
- package/lib/api-schemas/project-configuration.js +425 -0
- package/lib/api-schemas/project-configuration.js.map +1 -0
- package/lib/api-schemas/project.d.ts +7247 -0
- package/lib/api-schemas/project.d.ts.map +1 -0
- package/lib/api-schemas/project.js +185 -0
- package/lib/api-schemas/project.js.map +1 -0
- package/lib/api-schemas/prompt.d.ts +70 -0
- package/lib/api-schemas/prompt.d.ts.map +1 -0
- package/lib/api-schemas/prompt.js +77 -0
- package/lib/api-schemas/prompt.js.map +1 -0
- package/lib/api-schemas/quota.d.ts +90 -0
- package/lib/api-schemas/quota.d.ts.map +1 -0
- package/lib/api-schemas/quota.js +95 -0
- package/lib/api-schemas/quota.js.map +1 -0
- package/lib/api-schemas/registry.d.ts +97458 -0
- package/lib/api-schemas/registry.d.ts.map +1 -0
- package/lib/api-schemas/registry.js +2586 -0
- package/lib/api-schemas/registry.js.map +1 -0
- package/lib/api-schemas/schema-primitives.d.ts +5 -0
- package/lib/api-schemas/schema-primitives.d.ts.map +1 -0
- package/lib/api-schemas/schema-primitives.js +11 -0
- package/lib/api-schemas/schema-primitives.js.map +1 -0
- package/lib/api-schemas/secrets.d.ts +497 -0
- package/lib/api-schemas/secrets.d.ts.map +1 -0
- package/lib/api-schemas/secrets.js +298 -0
- package/lib/api-schemas/secrets.js.map +1 -0
- package/lib/api-schemas/store.d.ts +22140 -0
- package/lib/api-schemas/store.d.ts.map +1 -0
- package/lib/api-schemas/store.js +557 -0
- package/lib/api-schemas/store.js.map +1 -0
- package/lib/api-schemas/sts.d.ts +156 -0
- package/lib/api-schemas/sts.d.ts.map +1 -0
- package/lib/api-schemas/sts.js +96 -0
- package/lib/api-schemas/sts.js.map +1 -0
- package/lib/api-schemas/task.d.ts +215 -0
- package/lib/api-schemas/task.d.ts.map +1 -0
- package/lib/api-schemas/task.js +95 -0
- package/lib/api-schemas/task.js.map +1 -0
- package/lib/api-schemas/tools.d.ts +111 -0
- package/lib/api-schemas/tools.d.ts.map +1 -0
- package/lib/api-schemas/tools.js +122 -0
- package/lib/api-schemas/tools.js.map +1 -0
- package/lib/api-schemas/user.d.ts +208 -0
- package/lib/api-schemas/user.d.ts.map +1 -0
- package/lib/api-schemas/user.js +180 -0
- package/lib/api-schemas/user.js.map +1 -0
- package/lib/api-schemas/view-execution.d.ts +3163 -0
- package/lib/api-schemas/view-execution.d.ts.map +1 -0
- package/lib/api-schemas/view-execution.js +172 -0
- package/lib/api-schemas/view-execution.js.map +1 -0
- package/lib/api-schemas/views.d.ts +5990 -0
- package/lib/api-schemas/views.d.ts.map +1 -0
- package/lib/api-schemas/views.js +396 -0
- package/lib/api-schemas/views.js.map +1 -0
- package/lib/api-schemas/workflow-runs.d.ts +2209 -0
- package/lib/api-schemas/workflow-runs.d.ts.map +1 -0
- package/lib/api-schemas/workflow-runs.js +589 -0
- package/lib/api-schemas/workflow-runs.js.map +1 -0
- package/lib/apikey-values.d.ts +10 -0
- package/lib/apikey-values.d.ts.map +1 -0
- package/lib/apikey-values.js +11 -0
- package/lib/apikey-values.js.map +1 -0
- package/lib/apikey.d.ts +37 -36
- package/lib/apikey.d.ts.map +1 -1
- package/lib/apikey.js +5 -4
- package/lib/apikey.js.map +1 -1
- package/lib/apps.d.ts +116 -1121
- package/lib/apps.d.ts.map +1 -1
- package/lib/apps.js.map +1 -1
- package/lib/ask-user.d.ts +8 -1
- package/lib/ask-user.d.ts.map +1 -1
- package/lib/audit-trail.d.ts +17 -128
- package/lib/audit-trail.d.ts.map +1 -1
- package/lib/audit-trail.js.map +1 -1
- package/lib/browser-credentials.d.ts +11 -106
- package/lib/browser-credentials.d.ts.map +1 -1
- package/lib/common.d.ts +59 -81
- package/lib/common.d.ts.map +1 -1
- package/lib/cost-analytics.d.ts +14 -167
- package/lib/cost-analytics.d.ts.map +1 -1
- package/lib/cost-analytics.js.map +1 -1
- package/lib/data-platform.d.ts +122 -786
- package/lib/data-platform.d.ts.map +1 -1
- package/lib/data-platform.js +41 -61
- package/lib/data-platform.js.map +1 -1
- package/lib/email.d.ts +5 -17
- package/lib/email.d.ts.map +1 -1
- package/lib/email.js +0 -3
- package/lib/email.js.map +1 -1
- package/lib/embeddings.d.ts +14 -56
- package/lib/embeddings.d.ts.map +1 -1
- package/lib/environment.d.ts +19 -113
- package/lib/environment.d.ts.map +1 -1
- package/lib/environment.js +3 -0
- package/lib/environment.js.map +1 -1
- package/lib/facets.d.ts +4 -7
- package/lib/facets.d.ts.map +1 -1
- package/lib/group.d.ts +33 -39
- package/lib/group.d.ts.map +1 -1
- package/lib/group.js +0 -1
- package/lib/group.js.map +1 -1
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/integrations.d.ts +20 -108
- package/lib/integrations.d.ts.map +1 -1
- package/lib/integrations.js.map +1 -1
- package/lib/interaction-values.d.ts +11 -0
- package/lib/interaction-values.d.ts.map +1 -0
- package/lib/interaction-values.js +24 -0
- package/lib/interaction-values.js.map +1 -0
- package/lib/interaction.d.ts +116 -734
- package/lib/interaction.d.ts.map +1 -1
- package/lib/interaction.js +56 -12
- package/lib/interaction.js.map +1 -1
- package/lib/meters.d.ts +11 -7
- package/lib/meters.d.ts.map +1 -1
- package/lib/meters.js.map +1 -1
- package/lib/oauth-server.d.ts +33 -119
- package/lib/oauth-server.d.ts.map +1 -1
- package/lib/oauth.d.ts +14 -96
- package/lib/oauth.d.ts.map +1 -1
- package/lib/oauth.js +0 -4
- package/lib/oauth.js.map +1 -1
- package/lib/payload.d.ts +15 -38
- package/lib/payload.d.ts.map +1 -1
- package/lib/platform-event.d.ts +49 -462
- package/lib/platform-event.d.ts.map +1 -1
- package/lib/platform-event.js.map +1 -1
- package/lib/principal-context.d.ts +10 -15
- package/lib/principal-context.d.ts.map +1 -1
- package/lib/project-values.d.ts +24 -0
- package/lib/project-values.d.ts.map +1 -0
- package/lib/project-values.js +42 -0
- package/lib/project-values.js.map +1 -0
- package/lib/project.d.ts +55 -503
- package/lib/project.d.ts.map +1 -1
- package/lib/project.js +6 -76
- package/lib/project.js.map +1 -1
- package/lib/prompt.d.ts +20 -51
- package/lib/prompt.d.ts.map +1 -1
- package/lib/prompt.js.map +1 -1
- package/lib/query.d.ts +27 -88
- package/lib/query.d.ts.map +1 -1
- package/lib/rate-limiter.d.ts +19 -70
- package/lib/rate-limiter.d.ts.map +1 -1
- package/lib/rate-limiter.js +0 -3
- package/lib/rate-limiter.js.map +1 -1
- package/lib/refs.d.ts +3 -11
- package/lib/refs.d.ts.map +1 -1
- package/lib/refs.js.map +1 -1
- package/lib/roles/types.d.ts +14 -20
- package/lib/roles/types.d.ts.map +1 -1
- package/lib/roles/types.js +5 -9
- package/lib/roles/types.js.map +1 -1
- package/lib/runs.d.ts +6 -25
- package/lib/runs.d.ts.map +1 -1
- package/lib/secrets.d.ts +20 -105
- package/lib/secrets.d.ts.map +1 -1
- package/lib/store/agent-approval.d.ts +5 -14
- package/lib/store/agent-approval.d.ts.map +1 -1
- package/lib/store/agent-approval.js.map +1 -1
- package/lib/store/agent-run.d.ts +63 -342
- package/lib/store/agent-run.d.ts.map +1 -1
- package/lib/store/collections.d.ts +11 -63
- package/lib/store/collections.d.ts.map +1 -1
- package/lib/store/collections.js.map +1 -1
- package/lib/store/conversation-state.d.ts +63 -61
- package/lib/store/conversation-state.d.ts.map +1 -1
- package/lib/store/conversation-state.js +2 -0
- package/lib/store/conversation-state.js.map +1 -1
- package/lib/store/doc-analyzer.d.ts +9 -32
- package/lib/store/doc-analyzer.d.ts.map +1 -1
- package/lib/store/dsl-workflow.d.ts +37 -151
- package/lib/store/dsl-workflow.d.ts.map +1 -1
- package/lib/store/dsl-workflow.js.map +1 -1
- package/lib/store/editing-policy-schema.generated.d.ts +3 -0
- package/lib/store/editing-policy-schema.generated.d.ts.map +1 -0
- package/lib/store/editing-policy-schema.generated.js +28 -0
- package/lib/store/editing-policy-schema.generated.js.map +1 -0
- package/lib/store/grounded-extraction.d.ts +7 -104
- package/lib/store/grounded-extraction.d.ts.map +1 -1
- package/lib/store/grounded-extraction.js.map +1 -1
- package/lib/store/index.d.ts +2 -0
- package/lib/store/index.d.ts.map +1 -1
- package/lib/store/index.js +3 -0
- package/lib/store/index.js.map +1 -1
- package/lib/store/intake-policy-schema.generated.d.ts +3 -0
- package/lib/store/intake-policy-schema.generated.d.ts.map +1 -0
- package/lib/store/intake-policy-schema.generated.js +1425 -0
- package/lib/store/intake-policy-schema.generated.js.map +1 -0
- package/lib/store/process-schema.d.ts +80 -0
- package/lib/store/process-schema.d.ts.map +1 -1
- package/lib/store/process-schema.js +79 -0
- package/lib/store/process-schema.js.map +1 -1
- package/lib/store/process-validation.d.ts.map +1 -1
- package/lib/store/process-validation.js +70 -2
- package/lib/store/process-validation.js.map +1 -1
- package/lib/store/process.d.ts +36 -125
- package/lib/store/process.d.ts.map +1 -1
- package/lib/store/process.js.map +1 -1
- package/lib/store/rendering.d.ts +9 -64
- package/lib/store/rendering.d.ts.map +1 -1
- package/lib/store/rendering.js.map +1 -1
- package/lib/store/store.d.ts +98 -693
- package/lib/store/store.d.ts.map +1 -1
- package/lib/store/store.js +4 -443
- package/lib/store/store.js.map +1 -1
- package/lib/store/task.d.ts +15 -59
- package/lib/store/task.d.ts.map +1 -1
- package/lib/store/task.js +0 -3
- package/lib/store/task.js.map +1 -1
- package/lib/store/workflow.d.ts +56 -516
- package/lib/store/workflow.d.ts.map +1 -1
- package/lib/store/workflow.js +28 -11
- package/lib/store/workflow.js.map +1 -1
- package/lib/sts-token-types.d.ts +12 -66
- package/lib/sts-token-types.d.ts.map +1 -1
- package/lib/sts-token-types.js.map +1 -1
- package/lib/tools.d.ts +8 -100
- package/lib/tools.d.ts.map +1 -1
- package/lib/transient-tokens-values.d.ts +11 -0
- package/lib/transient-tokens-values.d.ts.map +1 -0
- package/lib/transient-tokens-values.js +12 -0
- package/lib/transient-tokens-values.js.map +1 -0
- package/lib/transient-tokens.d.ts +15 -13
- package/lib/transient-tokens.d.ts.map +1 -1
- package/lib/transient-tokens.js +5 -5
- package/lib/transient-tokens.js.map +1 -1
- package/lib/user.d.ts +54 -155
- package/lib/user.d.ts.map +1 -1
- package/lib/user.js +1 -78
- package/lib/user.js.map +1 -1
- package/lib/versions.d.ts +24 -1
- package/lib/versions.d.ts.map +1 -1
- package/lib/versions.js +23 -0
- package/lib/versions.js.map +1 -1
- package/lib/vertesia-common.js +6 -2
- package/lib/vertesia-common.js.map +1 -1
- package/lib/views-schema.d.ts +4 -4
- package/lib/views.d.ts +56 -312
- package/lib/views.d.ts.map +1 -1
- package/lib/views.js.map +1 -1
- package/package.json +14 -5
- package/src/access-control-values.ts +113 -0
- package/src/access-control.ts +33 -138
- package/src/account-values.ts +95 -0
- package/src/agent-resources.test.ts +100 -0
- package/src/analytics.ts +18 -42
- package/src/api-schemas/access-control.contract.test.ts +209 -0
- package/src/api-schemas/access-control.ts +208 -0
- package/src/api-schemas/account.contract.test.ts +318 -0
- package/src/api-schemas/account.ts +150 -0
- package/src/api-schemas/adapter-edge-cases.test.ts +480 -0
- package/src/api-schemas/adapter.ts +778 -0
- package/src/api-schemas/agent-runs.ts +1081 -0
- package/src/api-schemas/analytics.ts +65 -0
- package/src/api-schemas/apikey.contract.test.ts +270 -0
- package/src/api-schemas/apikey.ts +199 -0
- package/src/api-schemas/app-lifecycle.ts +841 -0
- package/src/api-schemas/app-runtime.ts +919 -0
- package/src/api-schemas/apps.ts +415 -0
- package/src/api-schemas/audit-trail.ts +243 -0
- package/src/api-schemas/bulk-operation.contract.test.ts +39 -0
- package/src/api-schemas/bulk-operation.ts +75 -0
- package/src/api-schemas/bundle-isolation.test.ts +80 -0
- package/src/api-schemas/commands.contract.test.ts +51 -0
- package/src/api-schemas/commands.ts +62 -0
- package/src/api-schemas/content.ts +939 -0
- package/src/api-schemas/cost-analytics.contract.test.ts +64 -0
- package/src/api-schemas/cost-analytics.ts +235 -0
- package/src/api-schemas/dashboard.contract.test.ts +127 -0
- package/src/api-schemas/dashboard.ts +351 -0
- package/src/api-schemas/data-store.contract.test.ts +91 -0
- package/src/api-schemas/data-store.ts +571 -0
- package/src/api-schemas/document-processing.contract.test.ts +76 -0
- package/src/api-schemas/document-processing.ts +344 -0
- package/src/api-schemas/embeddings.ts +113 -0
- package/src/api-schemas/environment.contract.test.ts +184 -0
- package/src/api-schemas/environment.ts +190 -0
- package/src/api-schemas/events.ts +921 -0
- package/src/api-schemas/files.ts +159 -0
- package/src/api-schemas/group.contract.test.ts +205 -0
- package/src/api-schemas/group.ts +155 -0
- package/src/api-schemas/index.ts +35 -0
- package/src/api-schemas/indexing.contract.test.ts +83 -0
- package/src/api-schemas/indexing.ts +234 -0
- package/src/api-schemas/integrations.ts +369 -0
- package/src/api-schemas/interaction.ts +2357 -0
- package/src/api-schemas/invites.contract.test.ts +268 -0
- package/src/api-schemas/invites.ts +127 -0
- package/src/api-schemas/llumiverse.contract.test.ts +108 -0
- package/src/api-schemas/oauth-server.ts +219 -0
- package/src/api-schemas/oauth.contract.test.ts +118 -0
- package/src/api-schemas/oauth.ts +166 -0
- package/src/api-schemas/parameters.test.ts +402 -0
- package/src/api-schemas/parameters.ts +310 -0
- package/src/api-schemas/process.ts +929 -0
- package/src/api-schemas/project-configuration.ts +478 -0
- package/src/api-schemas/project.contract.test.ts +365 -0
- package/src/api-schemas/project.ts +214 -0
- package/src/api-schemas/prompt.ts +88 -0
- package/src/api-schemas/pruning-limits.test.ts +189 -0
- package/src/api-schemas/quota.contract.test.ts +147 -0
- package/src/api-schemas/quota.ts +122 -0
- package/src/api-schemas/registry-groups.test.ts +91 -0
- package/src/api-schemas/registry.ts +3487 -0
- package/src/api-schemas/response-pruning.test.ts +260 -0
- package/src/api-schemas/schema-primitives.ts +12 -0
- package/src/api-schemas/secrets.ts +332 -0
- package/src/api-schemas/store.contract.test.ts +450 -0
- package/src/api-schemas/store.ts +604 -0
- package/src/api-schemas/sts.contract.test.ts +80 -0
- package/src/api-schemas/sts.ts +110 -0
- package/src/api-schemas/task.ts +104 -0
- package/src/api-schemas/tools.ts +140 -0
- package/src/api-schemas/user.contract.test.ts +191 -0
- package/src/api-schemas/user.ts +204 -0
- package/src/api-schemas/view-execution.ts +200 -0
- package/src/api-schemas/views.ts +437 -0
- package/src/api-schemas/workflow-runs.ts +653 -0
- package/src/apikey-values.ts +10 -0
- package/src/apikey.ts +49 -40
- package/src/apps.ts +249 -1179
- package/src/ask-user.ts +9 -1
- package/src/audit-trail.ts +45 -137
- package/src/browser-credentials.ts +21 -106
- package/src/common.ts +67 -78
- package/src/cost-analytics.ts +37 -176
- package/src/data-platform.ts +205 -776
- package/src/email.ts +5 -17
- package/src/embeddings.ts +22 -60
- package/src/environment.ts +52 -124
- package/src/facets.ts +4 -7
- package/src/group.ts +38 -42
- package/src/index.ts +11 -0
- package/src/integrations.ts +39 -129
- package/src/interaction-values.ts +23 -0
- package/src/interaction.ts +231 -841
- package/src/meters.ts +11 -7
- package/src/oauth-server.ts +58 -127
- package/src/oauth.ts +24 -108
- package/src/payload.ts +25 -40
- package/src/platform-event.ts +98 -484
- package/src/principal-context.ts +11 -15
- package/src/project-values.ts +41 -0
- package/src/project.ts +116 -588
- package/src/prompt.ts +34 -61
- package/src/query.ts +34 -93
- package/src/rate-limiter.ts +27 -75
- package/src/refs.ts +4 -11
- package/src/roles/types.ts +20 -20
- package/src/runs.ts +11 -24
- package/src/secrets.ts +38 -117
- package/src/store/agent-approval.ts +9 -14
- package/src/store/agent-run.ts +106 -434
- package/src/store/collections.ts +21 -63
- package/src/store/content-type-editing.test.ts +17 -0
- package/src/store/conversation-state.ts +78 -64
- package/src/store/doc-analyzer.ts +17 -33
- package/src/store/dsl-workflow.ts +62 -158
- package/src/store/editing-policy-schema.generated.ts +30 -0
- package/src/store/grounded-extraction.ts +13 -104
- package/src/store/index.ts +3 -0
- package/src/store/intake-policy-schema.generated.ts +1442 -0
- package/src/store/process-schema.test.ts +43 -0
- package/src/store/process-schema.ts +79 -0
- package/src/store/process-validation.test.ts +141 -0
- package/src/store/process-validation.ts +82 -2
- package/src/store/process.ts +70 -146
- package/src/store/rendering.ts +15 -64
- package/src/store/store.ts +197 -1182
- package/src/store/task.ts +25 -59
- package/src/store/workflow.ts +103 -554
- package/src/sts-token-types.ts +24 -75
- package/src/tools.ts +18 -97
- package/src/transient-tokens-values.ts +11 -0
- package/src/transient-tokens.ts +16 -13
- package/src/user.ts +74 -214
- package/src/versions.ts +24 -0
- package/src/views-schema.test.ts +9 -1
- package/src/views.ts +106 -329
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import type { ProjectToolInfo, RenderingTemplateDefinitionRef } from '../apps.js';
|
|
4
|
+
import {
|
|
5
|
+
type AskUserWebhookConfigurationInput,
|
|
6
|
+
type AwsConfiguration,
|
|
7
|
+
type ExaConfigurationInput,
|
|
8
|
+
type GithubConfigurationInput,
|
|
9
|
+
type GladiaConfigurationInput,
|
|
10
|
+
type LinkupConfigurationInput,
|
|
11
|
+
type MagicPdfConfiguration,
|
|
12
|
+
type ResendConfigurationInput,
|
|
13
|
+
type SerperConfigurationInput,
|
|
14
|
+
SupportedIntegrations,
|
|
15
|
+
} from '../integrations.js';
|
|
16
|
+
import type {
|
|
17
|
+
ICreateProjectPayload,
|
|
18
|
+
ModelDefault,
|
|
19
|
+
Project,
|
|
20
|
+
ProjectPluginsUpdatePayload,
|
|
21
|
+
SystemDefaults,
|
|
22
|
+
SystemInteractionCategory,
|
|
23
|
+
} from '../project.js';
|
|
24
|
+
import type { JsonObject } from './adapter.js';
|
|
25
|
+
import type { CreateProjectPayloadFromSchema, ProjectToolInfoArrayFromSchema } from './project.js';
|
|
26
|
+
import { ApiSchemaComponents, apiComponentRef, validateApiRequest, validateApiResponse } from './registry.js';
|
|
27
|
+
|
|
28
|
+
/** Exact type identity — `extends` in both directions is too weak (any/unknown slip through). */
|
|
29
|
+
type Equals<A, B> = (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2 ? true : false;
|
|
30
|
+
function assertType<T extends true>(_ok: T): void {}
|
|
31
|
+
|
|
32
|
+
function compile(name: string) {
|
|
33
|
+
const ajv = new Ajv2020({ strictSchema: false, allErrors: true });
|
|
34
|
+
ajv.addSchema({ $id: 'vertesia://openapi', components: { schemas: ApiSchemaComponents } });
|
|
35
|
+
return ajv.compile({ $ref: `vertesia://openapi${apiComponentRef(name as never)}` });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const VALID_TOOL = {
|
|
39
|
+
tool_name: 'web_search',
|
|
40
|
+
app_name: 'Search',
|
|
41
|
+
app_install_id: '68b1779130afe5403a1589bc',
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
describe('gate 1 — the schema is the single source of truth for the converted Projects types', () => {
|
|
45
|
+
it('publishes the exact schema-derived type, not a hand-written twin', () => {
|
|
46
|
+
assertType<Equals<ICreateProjectPayload, CreateProjectPayloadFromSchema>>(true);
|
|
47
|
+
assertType<Equals<ProjectToolInfoArrayFromSchema, ProjectToolInfo[]>>(true);
|
|
48
|
+
expect(true).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('types the plugin list as strings, which is what the collection has always held', () => {
|
|
52
|
+
// The wire type always said `string[]`; `IProject` in @dglabs/server-common said
|
|
53
|
+
// `Types.ObjectId[]`, and the Mongoose schema says `{ type: [String] }`. Validating the
|
|
54
|
+
// payload is what forced the three to agree.
|
|
55
|
+
assertType<Equals<ProjectPluginsUpdatePayload['plugins'], string[]>>(true);
|
|
56
|
+
expect(true).toBe(true);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('preserves enum-member discriminator types in inferred integration configurations', () => {
|
|
60
|
+
assertType<Equals<AskUserWebhookConfigurationInput['integration'], SupportedIntegrations.ask_user_webhook>>(
|
|
61
|
+
true,
|
|
62
|
+
);
|
|
63
|
+
assertType<Equals<AwsConfiguration['integration'], SupportedIntegrations.aws>>(true);
|
|
64
|
+
assertType<Equals<ExaConfigurationInput['integration'], SupportedIntegrations.exa>>(true);
|
|
65
|
+
assertType<Equals<GithubConfigurationInput['integration'], SupportedIntegrations.github>>(true);
|
|
66
|
+
assertType<Equals<GladiaConfigurationInput['integration'], SupportedIntegrations.gladia>>(true);
|
|
67
|
+
assertType<Equals<LinkupConfigurationInput['integration'], SupportedIntegrations.linkup>>(true);
|
|
68
|
+
assertType<Equals<MagicPdfConfiguration['integration'], SupportedIntegrations.magic_pdf>>(true);
|
|
69
|
+
assertType<Equals<ResendConfigurationInput['integration'], SupportedIntegrations.resend>>(true);
|
|
70
|
+
assertType<Equals<SerperConfigurationInput['integration'], SupportedIntegrations.serper>>(true);
|
|
71
|
+
expect(true).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The batch is deliberately partial, and these two tests pin WHY — so the boundary is a checked fact
|
|
77
|
+
* rather than a claim in a comment that quietly stops being true.
|
|
78
|
+
*/
|
|
79
|
+
describe('gate 2 — the closure is closed, bottom-up', () => {
|
|
80
|
+
it('converts Project only after everything it reaches', () => {
|
|
81
|
+
// The order was forced, not chosen. `ProjectConfiguration` reaches
|
|
82
|
+
// `InteractionExecutionConfiguration.model_options`, which is `ModelOptions` — the union of
|
|
83
|
+
// every llumiverse driver's options — and a canonical component may not `$ref` a
|
|
84
|
+
// TypeScript-derived one. So `ModelOptions` converted first, then the intake policy tree,
|
|
85
|
+
// The registry owns the whole reference closure. Asserting the chain prevents a schema
|
|
86
|
+
// group edit from leaving a published `$ref` without its component.
|
|
87
|
+
for (const name of [
|
|
88
|
+
'ModelOptions',
|
|
89
|
+
'InteractionExecutionConfiguration',
|
|
90
|
+
'ContentTypeIntakePolicy',
|
|
91
|
+
'ProjectIntakeConfiguration',
|
|
92
|
+
'ProjectConfiguration',
|
|
93
|
+
'Project',
|
|
94
|
+
]) {
|
|
95
|
+
expect(Object.keys(ApiSchemaComponents), name).toContain(name);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it('publishes dedicated, optional update projections', () => {
|
|
100
|
+
for (const name of ['UpdateProjectPayload', 'UpdateProjectConfigurationPayload']) {
|
|
101
|
+
expect(Object.keys(ApiSchemaComponents), name).toContain(name);
|
|
102
|
+
}
|
|
103
|
+
// `.partial()` of the root, not a restatement: same properties, none required.
|
|
104
|
+
const project = ApiSchemaComponents.Project as JsonObject;
|
|
105
|
+
const partial = ApiSchemaComponents.UpdateProjectPayload as JsonObject;
|
|
106
|
+
expect(Object.keys(partial.properties as JsonObject)).toEqual(Object.keys(project.properties as JsonObject));
|
|
107
|
+
expect(partial.required).toBeUndefined();
|
|
108
|
+
expect(partial.additionalProperties).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it('says what JSON can carry, which the TypeScript declaration did not', () => {
|
|
112
|
+
// `integrations` was `Map<string, unknown>` and the timestamps `Date`. No HTTP response has
|
|
113
|
+
// ever contained either — Mongoose flattens maps in `toJSON` and `JSON.stringify` turns a
|
|
114
|
+
// Date into a string — so a caller writing `.get(id)` or `.getTime()` got a TypeError. The
|
|
115
|
+
// published document is unchanged; only the TypeScript was wrong.
|
|
116
|
+
assertType<Equals<Project['integrations'], Record<string, unknown> | undefined>>(true);
|
|
117
|
+
assertType<Equals<Project['created_at'], string>>(true);
|
|
118
|
+
|
|
119
|
+
const properties = (ApiSchemaComponents.Project as JsonObject).properties as Record<string, JsonObject>;
|
|
120
|
+
// Still `format: date-time`, which is what makes the generated clients emit
|
|
121
|
+
// `OffsetDateTime` / `time.Time` rather than a bare string. A plain `z.string()` here would
|
|
122
|
+
// have dropped it silently.
|
|
123
|
+
expect(properties.created_at).toEqual({ type: 'string', format: 'date-time' });
|
|
124
|
+
expect(properties.updated_at).toEqual({ type: 'string', format: 'date-time' });
|
|
125
|
+
// The same open-map emission as Account.feature_flags and User.properties, normalized to the
|
|
126
|
+
// spelling the document has always used — `z.record`'s `{}` and `propertyNames` say the same
|
|
127
|
+
// thing but generate a different Go map type. `tenant_id` is absent, as it always was — the
|
|
128
|
+
// model computes it and the handler used to ship it anyway, which is what the response mapper
|
|
129
|
+
// now stops.
|
|
130
|
+
expect(properties.integrations).toEqual({ type: 'object', additionalProperties: true });
|
|
131
|
+
expect(properties).not.toHaveProperty('tenant_id');
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it('converts the vision-profile map, because a canonical alias cannot be a mapped-type key', () => {
|
|
135
|
+
// `vision_profiles` was `Partial<Record<IntakeVisionDetail, …>>`. Once `IntakeVisionDetail`
|
|
136
|
+
// became a canonical alias the schema generator could no longer enumerate the mapped type's
|
|
137
|
+
// keys — it failed with `Unexpected key type "def-canonical-alias-IntakeVisionDetail"`, and
|
|
138
|
+
// `Project` then fell back to a source-text inference that silently dropped `configuration`
|
|
139
|
+
// and `integrations` from the published document. Converting the map is what removed the
|
|
140
|
+
// mapped type; this asserts the components it produces still exist under their old names.
|
|
141
|
+
expect(Object.keys(ApiSchemaComponents)).toContain('ProjectIntakeConfiguration');
|
|
142
|
+
const intake = ApiSchemaComponents.ProjectIntakeConfiguration as JsonObject;
|
|
143
|
+
const properties = intake.properties as Record<string, JsonObject>;
|
|
144
|
+
expect(properties.vision_profiles.$ref).toBe(apiComponentRef('IntakeVisionProfileSettingsMap' as never));
|
|
145
|
+
const map = ApiSchemaComponents.IntakeVisionProfileSettingsMap as JsonObject;
|
|
146
|
+
// The three keys are restated in the schema rather than derived from the enum, so this is
|
|
147
|
+
// what fails if a detail name is added to `IntakeVisionDetail` and not to the map.
|
|
148
|
+
expect(Object.keys(map.properties as JsonObject).sort()).toEqual(['high', 'low', 'standard']);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('converts every configuration leaf that depends on nothing outside this module', () => {
|
|
152
|
+
// Sixteen components, none of them named by an endpoint — they are hoisted by
|
|
153
|
+
// `ProjectConfiguration`, which is still derived. Converting them changes no slot; it makes
|
|
154
|
+
// the `$ref`s that the two remaining configuration components have to satisfy canonical, so
|
|
155
|
+
// the closure rule stops applying to them one level at a time.
|
|
156
|
+
for (const name of [
|
|
157
|
+
'ModelDefault',
|
|
158
|
+
'ModalityDefaults',
|
|
159
|
+
'SystemDefaults',
|
|
160
|
+
'ProjectModelDefaults',
|
|
161
|
+
'ResourceVisibility',
|
|
162
|
+
'ProjectSearchTier',
|
|
163
|
+
'ElasticsearchBackend',
|
|
164
|
+
'ProjectSearchPropertyType',
|
|
165
|
+
'ProjectSearchPropertyMapping',
|
|
166
|
+
'ProjectSearchPropertyMappingMap',
|
|
167
|
+
'ProjectIndexingConfiguration',
|
|
168
|
+
'ProjectConfigurationEmbedding',
|
|
169
|
+
'BrowserUseRiskPolicy',
|
|
170
|
+
'BrowserUseScreenshotCapture',
|
|
171
|
+
'BrowserUseProjectConfiguration',
|
|
172
|
+
'ProjectIntakeSniffConfiguration',
|
|
173
|
+
]) {
|
|
174
|
+
expect(Object.keys(ApiSchemaComponents), name).toContain(name);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
it('keeps SystemDefaults covering every system interaction category', () => {
|
|
179
|
+
// The interface was `{ [K in SystemInteractionCategory]?: ModelDefault }`, so a new category
|
|
180
|
+
// widened it for free. A Zod object cannot map over an enum and still infer useful keys, so
|
|
181
|
+
// the categories are written out — and this is what makes forgetting one a compile error
|
|
182
|
+
// rather than a silently unpublishable default. The template literal turns the enum's member
|
|
183
|
+
// union into its string values, which is what the schema's keys are.
|
|
184
|
+
assertType<Equals<keyof SystemDefaults, `${SystemInteractionCategory}`>>(true);
|
|
185
|
+
assertType<Equals<SystemDefaults['intake'], ModelDefault | undefined>>(true);
|
|
186
|
+
expect(true).toBe(true);
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it('publishes the property-mapping map without the propertyNames z.record adds', () => {
|
|
190
|
+
// `Record<string, ProjectSearchPropertyMapping>` is inline in the interface and has no
|
|
191
|
+
// TypeScript name, so it never becomes a canonical alias — it stays canonical AND derived,
|
|
192
|
+
// and the two have to agree forever. `z.record` emits a `propertyNames: {type: 'string'}`
|
|
193
|
+
// that the scanner never did, which is why the schema is a catchall-only object instead.
|
|
194
|
+
expect(ApiSchemaComponents.ProjectSearchPropertyMappingMap).toEqual({
|
|
195
|
+
type: 'object',
|
|
196
|
+
additionalProperties: { $ref: '#/components/schemas/ProjectSearchPropertyMapping' },
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
it('enforces the browser-use configuration the deleted AJV schema only described', () => {
|
|
201
|
+
// A `JSONSchemaType<BrowserUseProjectConfiguration>` used to sit beside the interface with
|
|
202
|
+
// descriptions that had already drifted from the TSDoc, and nothing compiled it. This is the
|
|
203
|
+
// same shape, and it is enforced.
|
|
204
|
+
expect(validateApiRequest('BrowserUseProjectConfiguration', { max_policy: 'low_write' }).valid).toBe(true);
|
|
205
|
+
expect(validateApiRequest('BrowserUseProjectConfiguration', { max_policy: 'god_mode' }).valid).toBe(false);
|
|
206
|
+
expect(validateApiRequest('BrowserUseProjectConfiguration', { capture_screenshots: 'always' }).valid).toBe(
|
|
207
|
+
false,
|
|
208
|
+
);
|
|
209
|
+
expect(validateApiRequest('BrowserUseProjectConfiguration', { unknown_switch: true }).valid).toBe(false);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it('converts the rendering templates ahead of the AppManifest that embeds them', () => {
|
|
213
|
+
// This pair was previously held back because the Ref is an `Omit<>`, which the scanner emits
|
|
214
|
+
// with `additionalProperties` before `properties` — an ordering Zod cannot reproduce. The
|
|
215
|
+
// canonical/derived comparison is no longer spelling-sensitive: `schemasAgree` compares
|
|
216
|
+
// objects key-order-insensitively and arrays index-by-index, so only the `required` ARRAY
|
|
217
|
+
// order still has to match, and the schema declares its fields to produce it.
|
|
218
|
+
expect(Object.keys(ApiSchemaComponents)).toContain('RenderingTemplateDefinition');
|
|
219
|
+
expect(Object.keys(ApiSchemaComponents)).toContain('RenderingTemplateDefinitionRef');
|
|
220
|
+
expect(ApiSchemaComponents.RenderingTemplateDefinitionRef.required).toEqual([
|
|
221
|
+
'assets',
|
|
222
|
+
'description',
|
|
223
|
+
'id',
|
|
224
|
+
'name',
|
|
225
|
+
'path',
|
|
226
|
+
'type',
|
|
227
|
+
]);
|
|
228
|
+
// `AppManifestData.templates` stays derived and now `$ref`s the canonical Ref — the closure
|
|
229
|
+
// rule only forbids the other direction.
|
|
230
|
+
expect(Object.keys(ApiSchemaComponents)).toContain('AppManifest');
|
|
231
|
+
const ref: RenderingTemplateDefinitionRef = {
|
|
232
|
+
path: '/api/v1/projects/p/apps/templates/deck',
|
|
233
|
+
id: 'acme:deck',
|
|
234
|
+
name: 'deck',
|
|
235
|
+
description: 'A deck',
|
|
236
|
+
type: 'presentation',
|
|
237
|
+
assets: [],
|
|
238
|
+
};
|
|
239
|
+
expect(validateApiResponse('RenderingTemplateDefinitionRef', ref).valid).toBe(true);
|
|
240
|
+
// The instructions body belongs to the full definition, not the listing entry.
|
|
241
|
+
expect(validateApiResponse('RenderingTemplateDefinitionRef', { ...ref, instructions: '# Deck' }).valid).toBe(
|
|
242
|
+
false,
|
|
243
|
+
);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
describe('gate 3 — the published components match the closure the types come from', () => {
|
|
248
|
+
it('keeps SupportedIntegrations as the shared enum component it already was', () => {
|
|
249
|
+
const props = ApiSchemaComponents.ProjectIntegrationListEntry.properties as Record<string, JsonObject>;
|
|
250
|
+
expect(props.id).toEqual({ $ref: '#/components/schemas/SupportedIntegrations' });
|
|
251
|
+
// Still referenced by the unconverted integration-config union, which is only safe because
|
|
252
|
+
// the emitted enum is byte-identical to what the scanner derives.
|
|
253
|
+
expect(ApiSchemaComponents.SupportedIntegrations.enum).toEqual(Object.values(SupportedIntegrations));
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it('publishes the tool settings as the open map the earlier batches established', () => {
|
|
257
|
+
const props = ApiSchemaComponents.ProjectToolInfo.properties as Record<string, JsonObject>;
|
|
258
|
+
expect(props.settings).toEqual({
|
|
259
|
+
type: 'object',
|
|
260
|
+
additionalProperties: true,
|
|
261
|
+
description: expect.stringContaining('may contain API keys'),
|
|
262
|
+
});
|
|
263
|
+
// Same emission as Account.feature_flags and User.properties, which have shipped since the
|
|
264
|
+
// first two batches. `z.record` writes this as `{}` plus a `propertyNames` that constrains
|
|
265
|
+
// nothing; both are normalized away so the document keeps one spelling for an open map.
|
|
266
|
+
expect((ApiSchemaComponents.Account.properties as Record<string, JsonObject>).feature_flags).toMatchObject({
|
|
267
|
+
additionalProperties: true,
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
it('closes every component in the batch', () => {
|
|
272
|
+
for (const name of [
|
|
273
|
+
'ListProjectsQuery',
|
|
274
|
+
'ProjectTagQuery',
|
|
275
|
+
'ICreateProjectPayload',
|
|
276
|
+
'ProjectPluginsUpdatePayload',
|
|
277
|
+
'CountResult',
|
|
278
|
+
'ProjectIntegrationListResponse',
|
|
279
|
+
'ProjectIntegrationListEntry',
|
|
280
|
+
'ProjectToolInfo',
|
|
281
|
+
] as const) {
|
|
282
|
+
expect([name, ApiSchemaComponents[name].additionalProperties]).toEqual([name, false]);
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
describe('gate 4 — AJV validates the same canonical objects that are published', () => {
|
|
288
|
+
it('requires name and namespace on a create payload and rejects anything else', () => {
|
|
289
|
+
const validate = compile('ICreateProjectPayload');
|
|
290
|
+
expect(validate({ name: 'Acme', namespace: 'acme' })).toBe(true);
|
|
291
|
+
expect(validate({ name: 'Acme', namespace: 'acme', description: 'x', auto_config: true })).toBe(true);
|
|
292
|
+
// The two hand-written presence checks the handler used to run, now enforced before it does.
|
|
293
|
+
expect(validate({ name: 'Acme' })).toBe(false);
|
|
294
|
+
expect(validate({ namespace: 'acme' })).toBe(false);
|
|
295
|
+
expect(validate({ name: 'Acme', namespace: 'acme', rogue_field: 1 })).toBe(false);
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it('rejects a plugin list that is not an array of strings', () => {
|
|
299
|
+
const validate = compile('ProjectPluginsUpdatePayload');
|
|
300
|
+
expect(validate({ plugins: [] })).toBe(true);
|
|
301
|
+
expect(validate({ plugins: ['data-platform'] })).toBe(true);
|
|
302
|
+
// All three were accepted by `payload.plugins || []` off an `any` and written to the document.
|
|
303
|
+
expect(validate({ plugins: 'data-platform' })).toBe(false);
|
|
304
|
+
expect(validate({ plugins: [1, 2] })).toBe(false);
|
|
305
|
+
expect(validate({})).toBe(false);
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
it('validates the two query components the scanner expands into parameters', () => {
|
|
309
|
+
expect(compile('ListProjectsQuery')({})).toBe(true);
|
|
310
|
+
expect(compile('ListProjectsQuery')({ account: '68b1779130afe5403a1589ba' })).toBe(true);
|
|
311
|
+
// A repeated `?account=` reaches Koa as an array; the handler used to cast it to string.
|
|
312
|
+
expect(compile('ListProjectsQuery')({ account: ['a', 'b'] })).toBe(false);
|
|
313
|
+
expect(compile('ProjectTagQuery')({ tag: 'release' })).toBe(true);
|
|
314
|
+
expect(compile('ProjectTagQuery')({})).toBe(true);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
it('accepts a minimal tool and rejects a missing required field', () => {
|
|
318
|
+
const validate = compile('ProjectToolInfo');
|
|
319
|
+
expect(validate(VALID_TOOL)).toBe(true);
|
|
320
|
+
expect(validate({ ...VALID_TOOL, tool_description: 'Searches the web' })).toBe(true);
|
|
321
|
+
expect(validate({ ...VALID_TOOL, settings: { api_key: 'sk-x', nested: { a: [1] } } })).toBe(true);
|
|
322
|
+
const { app_install_id: _dropped, ...incomplete } = VALID_TOOL;
|
|
323
|
+
expect(validate(incomplete)).toBe(false);
|
|
324
|
+
expect(validate({ ...VALID_TOOL, rogue_field: 1 })).toBe(false);
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
it('constrains the integration id to the supported catalog', () => {
|
|
328
|
+
const validate = compile('ProjectIntegrationListResponse');
|
|
329
|
+
expect(validate({ integrations: [{ id: SupportedIntegrations.github, enabled: true }] })).toBe(true);
|
|
330
|
+
expect(validate({ integrations: [] })).toBe(true);
|
|
331
|
+
expect(validate({ integrations: [{ id: 'dropbox', enabled: true }] })).toBe(false);
|
|
332
|
+
// An envelope, not a bare array — which is what the document already published.
|
|
333
|
+
expect(validate([{ id: SupportedIntegrations.github, enabled: true }])).toBe(false);
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
describe('gate 5 — runtime enforcement uses the published components', () => {
|
|
338
|
+
it('checks the shared count response the same way for every service that returns it', () => {
|
|
339
|
+
// Four slots across three resources and two servers, so this component had to move as a unit.
|
|
340
|
+
expect(validateApiResponse('CountResult', { count: 0 }).valid).toBe(true);
|
|
341
|
+
expect(validateApiResponse('CountResult', { count: 3, ids: ['a'] }).valid).toBe(false);
|
|
342
|
+
expect(validateApiResponse('CountResult', {}).valid).toBe(false);
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
it('checks every member of the tool listing against the same component', () => {
|
|
346
|
+
expect(validateApiResponse('ProjectToolInfoArray', [VALID_TOOL, VALID_TOOL]).valid).toBe(true);
|
|
347
|
+
expect(validateApiResponse('ProjectToolInfoArray', []).valid).toBe(true);
|
|
348
|
+
expect(validateApiResponse('ProjectToolInfoArray', [VALID_TOOL, { tool_name: 'x' }]).valid).toBe(false);
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
it('rejects an undeclared create field without removing it', () => {
|
|
352
|
+
const payload: Record<string, unknown> = { name: 'Acme', namespace: 'acme', rogue_field: 42 };
|
|
353
|
+
const result = validateApiRequest('ICreateProjectPayload', payload);
|
|
354
|
+
expect(result.valid).toBe(false);
|
|
355
|
+
expect(payload.rogue_field).toBe(42);
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
it('hands back the component type on the valid branch', () => {
|
|
359
|
+
const result = validateApiResponse('ProjectToolInfo', VALID_TOOL);
|
|
360
|
+
expect(result.valid).toBe(true);
|
|
361
|
+
if (result.valid) {
|
|
362
|
+
assertType<Equals<typeof result.data, ProjectToolInfo>>(true);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
});
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// From the values module, for the reason `./apikey.js` gives.
|
|
3
|
+
import { SupportedIntegrations } from '../integrations.js';
|
|
4
|
+
import { ProjectConfigurationSchema } from './project-configuration.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Runtime API schemas for projects and project-scoped definitions.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* `ListProjects` and the four app-asset listings expand these into `in: query` parameters rather
|
|
12
|
+
* than referencing them, so what has to survive is the optionality, not the component identity.
|
|
13
|
+
*/
|
|
14
|
+
export const ListProjectsQuerySchema = z
|
|
15
|
+
.object({
|
|
16
|
+
account: z.string().optional(),
|
|
17
|
+
})
|
|
18
|
+
.meta({ id: 'ListProjectsQuery' });
|
|
19
|
+
|
|
20
|
+
export const ProjectTagQuerySchema = z
|
|
21
|
+
.object({
|
|
22
|
+
tag: z.string().optional(),
|
|
23
|
+
})
|
|
24
|
+
.meta({ id: 'ProjectTagQuery' });
|
|
25
|
+
|
|
26
|
+
export const CreateProjectPayloadSchema = z
|
|
27
|
+
.object({
|
|
28
|
+
name: z.string(),
|
|
29
|
+
namespace: z.string(),
|
|
30
|
+
description: z.string().optional(),
|
|
31
|
+
auto_config: z.boolean().optional(),
|
|
32
|
+
})
|
|
33
|
+
.meta({ id: 'ICreateProjectPayload' });
|
|
34
|
+
|
|
35
|
+
export const ProjectPluginsUpdatePayloadSchema = z
|
|
36
|
+
.object({
|
|
37
|
+
plugins: z.array(z.string()),
|
|
38
|
+
})
|
|
39
|
+
.meta({ id: 'ProjectPluginsUpdatePayload' });
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The shared "how many rows did that touch" response.
|
|
43
|
+
*
|
|
44
|
+
* Four slots across three resources and TWO services — `UpdateProjectPlugins`, `DeleteApp` and
|
|
45
|
+
* `UninstallApp` on studio, `CountObjects` on zeno — so like `DeleteByIdResult` it has to move as a
|
|
46
|
+
* unit or the generator sees a canonical and a derived component under one name.
|
|
47
|
+
*
|
|
48
|
+
* `count` stays `type: number` rather than `integer`, because that is what the derived component
|
|
49
|
+
* said. Reproducing the contract, not renegotiating it.
|
|
50
|
+
*/
|
|
51
|
+
export const CountResultSchema = z
|
|
52
|
+
.object({
|
|
53
|
+
count: z.number(),
|
|
54
|
+
})
|
|
55
|
+
.meta({ id: 'CountResult' });
|
|
56
|
+
|
|
57
|
+
export const SupportedIntegrationsSchema = z.enum(SupportedIntegrations).meta({ id: 'SupportedIntegrations' });
|
|
58
|
+
|
|
59
|
+
export const ProjectIntegrationListEntrySchema = z
|
|
60
|
+
.object({
|
|
61
|
+
id: SupportedIntegrationsSchema,
|
|
62
|
+
enabled: z.boolean(),
|
|
63
|
+
})
|
|
64
|
+
.meta({ id: 'ProjectIntegrationListEntry' });
|
|
65
|
+
|
|
66
|
+
/** An envelope rather than a bare array, which is what the document already publishes. */
|
|
67
|
+
export const ProjectIntegrationListResponseSchema = z
|
|
68
|
+
.object({
|
|
69
|
+
integrations: z.array(ProjectIntegrationListEntrySchema),
|
|
70
|
+
})
|
|
71
|
+
.meta({ id: 'ProjectIntegrationListResponse' });
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* A tool and the app installation that provides it.
|
|
75
|
+
*
|
|
76
|
+
* `settings` is the reason this one is worth converting on its own: it holds the installation's
|
|
77
|
+
* configuration, which can contain provider API keys, and the handler includes it only for agent
|
|
78
|
+
* tokens. The component declares it optional and unconstrained — publishing it is a decision the
|
|
79
|
+
* handler makes per request, so the schema cannot express the rule, but it can at least stop the
|
|
80
|
+
* shape drifting while the rule is enforced elsewhere.
|
|
81
|
+
*/
|
|
82
|
+
export const ProjectToolInfoSchema = z
|
|
83
|
+
.object({
|
|
84
|
+
tool_name: z.string().meta({ description: 'The tool name' }),
|
|
85
|
+
tool_description: z.string().optional().meta({ description: 'Optional tool description' }),
|
|
86
|
+
app_name: z.string().meta({ description: 'The app name that provides this tool' }),
|
|
87
|
+
app_install_id: z.string().meta({ description: 'The app installation ID' }),
|
|
88
|
+
settings: z
|
|
89
|
+
.record(z.string(), z.unknown())
|
|
90
|
+
.optional()
|
|
91
|
+
.meta({
|
|
92
|
+
description:
|
|
93
|
+
'The app installation settings. Only included for agent tokens, not user tokens ' +
|
|
94
|
+
'(security: may contain API keys).',
|
|
95
|
+
}),
|
|
96
|
+
})
|
|
97
|
+
.meta({
|
|
98
|
+
id: 'ProjectToolInfo',
|
|
99
|
+
description:
|
|
100
|
+
'Information about a tool and its associated app installation. Used to look up which app ' +
|
|
101
|
+
'provides a specific tool.',
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
export const ProjectToolInfoArraySchema = z.array(ProjectToolInfoSchema).meta({ id: 'ProjectToolInfoArray' });
|
|
105
|
+
|
|
106
|
+
export type ListProjectsQueryFromSchema = z.infer<typeof ListProjectsQuerySchema>;
|
|
107
|
+
export type ProjectTagQueryFromSchema = z.infer<typeof ProjectTagQuerySchema>;
|
|
108
|
+
export type CreateProjectPayloadFromSchema = z.infer<typeof CreateProjectPayloadSchema>;
|
|
109
|
+
export type ProjectPluginsUpdatePayloadFromSchema = z.infer<typeof ProjectPluginsUpdatePayloadSchema>;
|
|
110
|
+
export type CountResultFromSchema = z.infer<typeof CountResultSchema>;
|
|
111
|
+
export type ProjectIntegrationListEntryFromSchema = z.infer<typeof ProjectIntegrationListEntrySchema>;
|
|
112
|
+
export type ProjectIntegrationListResponseFromSchema = z.infer<typeof ProjectIntegrationListResponseSchema>;
|
|
113
|
+
export type ProjectToolInfoFromSchema = z.infer<typeof ProjectToolInfoSchema>;
|
|
114
|
+
export type ProjectToolInfoArrayFromSchema = z.infer<typeof ProjectToolInfoArraySchema>;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* The rendering templates an app ships, and the reference form the manifest embeds.
|
|
118
|
+
*
|
|
119
|
+
* These were deferred once for a reason that no longer holds. `RenderingTemplateDefinitionRef` is an
|
|
120
|
+
* `Omit<>`, and the scanner emits an `Omit<>` with `additionalProperties` ahead of `properties` and
|
|
121
|
+
* an alphabetized `required` — an ordering Zod does not reproduce. The conflict check compares
|
|
122
|
+
* OBJECTS order-insensitively now, so the property order no longer matters; `required` is an array
|
|
123
|
+
* and is still compared in order, which is why the shape below is declared alphabetically while
|
|
124
|
+
* {@link RenderingTemplateDefinitionSchema} is declared in its interface's order. Neither ordering
|
|
125
|
+
* carries meaning in JSON Schema — they exist so a canonical component and the one the scanner still
|
|
126
|
+
* derives for `AppManifestData.templates` agree exactly.
|
|
127
|
+
*/
|
|
128
|
+
const RenderingTemplateTypeSchema = z.enum(['presentation', 'document']).meta({ description: 'Template type' });
|
|
129
|
+
|
|
130
|
+
const renderingTemplateFields = {
|
|
131
|
+
id: z.string().meta({ description: 'Unique template id: "collection:name"' }),
|
|
132
|
+
name: z.string().meta({ description: 'Unique template name (kebab-case)' }),
|
|
133
|
+
title: z.string().optional().meta({ description: 'Display title' }),
|
|
134
|
+
description: z.string().meta({ description: 'Short description' }),
|
|
135
|
+
type: RenderingTemplateTypeSchema,
|
|
136
|
+
tags: z.array(z.string()).optional().meta({ description: 'Tags for categorization' }),
|
|
137
|
+
assets: z.array(z.string()).meta({ description: 'Absolute paths to asset files' }),
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
export const RenderingTemplateDefinitionSchema = z
|
|
141
|
+
.object({
|
|
142
|
+
...renderingTemplateFields,
|
|
143
|
+
instructions: z.string().meta({ description: 'The template instructions (markdown)' }),
|
|
144
|
+
})
|
|
145
|
+
.meta({ id: 'RenderingTemplateDefinition' });
|
|
146
|
+
|
|
147
|
+
export const RenderingTemplateDefinitionRefSchema = z
|
|
148
|
+
.object({
|
|
149
|
+
assets: renderingTemplateFields.assets,
|
|
150
|
+
description: renderingTemplateFields.description,
|
|
151
|
+
id: renderingTemplateFields.id,
|
|
152
|
+
name: renderingTemplateFields.name,
|
|
153
|
+
path: z.string().meta({ description: 'Absolute API path to fetch the full template definition' }),
|
|
154
|
+
type: renderingTemplateFields.type,
|
|
155
|
+
title: renderingTemplateFields.title,
|
|
156
|
+
tags: renderingTemplateFields.tags,
|
|
157
|
+
})
|
|
158
|
+
.meta({ id: 'RenderingTemplateDefinitionRef' });
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* The project itself — the component `GetProject`, `UpdateProject` and `CreateProject` all return.
|
|
162
|
+
*
|
|
163
|
+
* This schema corrects two declarations that no HTTP response ever matched. `integrations` was
|
|
164
|
+
* `Map<string, unknown>` and the timestamps were `Date`; JSON carries neither, so a caller writing
|
|
165
|
+
* `project.integrations.get(id)` or `project.created_at.getTime()` got a `TypeError` against a shape
|
|
166
|
+
* TypeScript had promised. Both are source-breaking corrections for SDK consumers and wire-neutral —
|
|
167
|
+
* proved by `apps/studio-server/src/api/projects/project-wire-shape.test.ts`, which serializes a real
|
|
168
|
+
* `ProjectModel` document the way the handler does. Operation 24 of the 1.5 deployment runbook.
|
|
169
|
+
*
|
|
170
|
+
* The published wire shape remains the same. `Map<string, unknown>` was already emitted
|
|
171
|
+
* as an open object, and the timestamps as `format: date-time` strings — which is why they carry
|
|
172
|
+
* `.meta({ format: 'date-time' })`: a bare `z.string()` would silently drop the format and narrow
|
|
173
|
+
* `OffsetDateTime`/`time.Time` to `String` in the generated clients. `z.iso.datetime()` would keep
|
|
174
|
+
* the format but also publish its validation regex as a `pattern`, which is a new constraint on a
|
|
175
|
+
* component that never had one — the same class of change as the intake bounds, and not one to make
|
|
176
|
+
* accidentally.
|
|
177
|
+
*
|
|
178
|
+
* `integrations` stays an open `z.record()` on purpose. Its values are per-integration configuration
|
|
179
|
+
* objects with no common shape, and `SupportedIntegrations` is not a closed key set for stored data —
|
|
180
|
+
* a project can hold configuration for an integration this build no longer knows about.
|
|
181
|
+
*
|
|
182
|
+
* The persistence type is NOT this: `IProject` in `@dglabs/server-common` keeps the `Map` and the
|
|
183
|
+
* `Date`s, because that is what Mongo really holds, and `toProjectResponse()` in studio-server is the
|
|
184
|
+
* single place that converts — and the single place `tenant_id` is dropped, which the model computes
|
|
185
|
+
* and this component has never declared.
|
|
186
|
+
*/
|
|
187
|
+
export const ProjectSchema = z
|
|
188
|
+
.strictObject({
|
|
189
|
+
id: z.string(),
|
|
190
|
+
name: z.string(),
|
|
191
|
+
namespace: z.string(),
|
|
192
|
+
description: z.string().optional(),
|
|
193
|
+
account: z.string(),
|
|
194
|
+
configuration: ProjectConfigurationSchema,
|
|
195
|
+
integrations: z.record(z.string(), z.unknown()).optional(),
|
|
196
|
+
plugins: z.array(z.string()),
|
|
197
|
+
created_by: z.string(),
|
|
198
|
+
updated_by: z.string(),
|
|
199
|
+
created_at: z.string().meta({ format: 'date-time' }),
|
|
200
|
+
updated_at: z.string().meta({ format: 'date-time' }),
|
|
201
|
+
})
|
|
202
|
+
.meta({ id: 'Project' });
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* The `UpdateProject` and `UpdateProjectConfiguration` request bodies.
|
|
206
|
+
*
|
|
207
|
+
* `.partial()` keeps both update contracts tied to the corresponding response contract, so a field
|
|
208
|
+
* added to either source schema is available to its update payload without a hand-written twin.
|
|
209
|
+
*/
|
|
210
|
+
export const UpdateProjectPayloadSchema = ProjectSchema.partial().meta({ id: 'UpdateProjectPayload' });
|
|
211
|
+
|
|
212
|
+
export const UpdateProjectConfigurationPayloadSchema = ProjectConfigurationSchema.partial().meta({
|
|
213
|
+
id: 'UpdateProjectConfigurationPayload',
|
|
214
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { FacetSpecSchema, PromptTemplateRefSchema } from './interaction.js';
|
|
3
|
+
|
|
4
|
+
// The prompt-authoring contracts: what a fork, a render and a prompt search publish, and how a
|
|
5
|
+
// prompt's interaction usages are reported. `PromptTemplate` itself and its two write payloads live
|
|
6
|
+
// in `./interaction.js`, which is where the prompt tree the interactions reference is defined.
|
|
7
|
+
//
|
|
8
|
+
// `//` rather than `/** */` throughout: a JSDoc block immediately preceding an exported declaration
|
|
9
|
+
// is picked up by the OpenAPI scanner and published as that component's `description`, which would
|
|
10
|
+
// double up with the `description` stated in `.meta()`.
|
|
11
|
+
|
|
12
|
+
export const RenderPromptPayloadSchema = z
|
|
13
|
+
.record(z.string(), z.unknown())
|
|
14
|
+
// Preserve the explicit free-form spelling OpenAPI Generator needs to emit a request-body
|
|
15
|
+
// setter. An empty additionalProperties schema is validator-equivalent but generates a
|
|
16
|
+
// different Go API, and the adapter intentionally normalizes component roots conservatively.
|
|
17
|
+
.meta({ id: 'RenderPromptPayload', additionalProperties: true });
|
|
18
|
+
|
|
19
|
+
export const RenderPromptResponseSchema = z
|
|
20
|
+
.strictObject({
|
|
21
|
+
id: z.string(),
|
|
22
|
+
name: z.string(),
|
|
23
|
+
role: z.string(),
|
|
24
|
+
content_type: z.string(),
|
|
25
|
+
rendered: z.string(),
|
|
26
|
+
})
|
|
27
|
+
.meta({ id: 'RenderPromptResponse' });
|
|
28
|
+
|
|
29
|
+
export const PromptTemplateInteractionVersionSchema = z
|
|
30
|
+
.strictObject({
|
|
31
|
+
version: z.number(),
|
|
32
|
+
})
|
|
33
|
+
.meta({ id: 'PromptTemplateInteractionVersion' });
|
|
34
|
+
|
|
35
|
+
export const PromptTemplateForkPayloadSchema = z
|
|
36
|
+
.strictObject({
|
|
37
|
+
keepTags: z.boolean().optional(),
|
|
38
|
+
targetProject: z.string().optional(),
|
|
39
|
+
})
|
|
40
|
+
.meta({ id: 'PromptTemplateForkPayload' });
|
|
41
|
+
|
|
42
|
+
export const PromptSearchQuerySchema = z
|
|
43
|
+
.strictObject({
|
|
44
|
+
name: z.string().meta({ description: 'Case-insensitive substring match on the prompt name.' }).optional(),
|
|
45
|
+
status: z
|
|
46
|
+
.array(z.string())
|
|
47
|
+
.meta({
|
|
48
|
+
description:
|
|
49
|
+
'Accepted and ignored. `GET /prompts` and `POST /prompts/facets` list drafts only, and always have.',
|
|
50
|
+
})
|
|
51
|
+
.optional(),
|
|
52
|
+
limit: z.number().meta({ description: 'Maximum number of prompts to return. Defaults to 100.' }).optional(),
|
|
53
|
+
offset: z.number().meta({ description: 'Number of prompts to skip.' }).optional(),
|
|
54
|
+
role: z.string().meta({ description: 'Exact match on the prompt role.' }).optional(),
|
|
55
|
+
tags: z.array(z.string()).meta({ description: 'Match prompts carrying any of these tags.' }).optional(),
|
|
56
|
+
matchInteractions: z
|
|
57
|
+
.boolean()
|
|
58
|
+
.meta({
|
|
59
|
+
description:
|
|
60
|
+
'Accepted and ignored. It used to attach the interactions referencing each prompt, in a shape no response component ever declared; nothing consumed it.',
|
|
61
|
+
})
|
|
62
|
+
.optional(),
|
|
63
|
+
})
|
|
64
|
+
.meta({ id: 'PromptSearchQuery' });
|
|
65
|
+
|
|
66
|
+
export const PromptTemplateInteractionUsageSchema = z
|
|
67
|
+
.strictObject({
|
|
68
|
+
id: z.string(),
|
|
69
|
+
name: z.string(),
|
|
70
|
+
versions: z.array(PromptTemplateInteractionVersionSchema),
|
|
71
|
+
})
|
|
72
|
+
.meta({ id: 'PromptTemplateInteractionUsage' });
|
|
73
|
+
|
|
74
|
+
export const ComputePromptFacetPayloadSchema = z
|
|
75
|
+
.strictObject({
|
|
76
|
+
facets: z.array(FacetSpecSchema),
|
|
77
|
+
query: PromptSearchQuerySchema.optional(),
|
|
78
|
+
})
|
|
79
|
+
.meta({ id: 'ComputePromptFacetPayload' });
|
|
80
|
+
|
|
81
|
+
export const PromptTemplateInteractionsResponseSchema = z
|
|
82
|
+
.strictObject({
|
|
83
|
+
prompt: z.string(),
|
|
84
|
+
interactions: z.array(PromptTemplateInteractionUsageSchema),
|
|
85
|
+
})
|
|
86
|
+
.meta({ id: 'PromptTemplateInteractionsResponse' });
|
|
87
|
+
|
|
88
|
+
export const PromptTemplateRefArraySchema = z.array(PromptTemplateRefSchema).meta({ id: 'PromptTemplateRefArray' });
|