@vertesia/common 1.2.0 → 1.3.0-dev.20260620.061059Z
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/LICENSE +198 -10
- package/lib/{types/Progress.d.ts → Progress.d.ts} +1 -0
- package/lib/Progress.d.ts.map +1 -0
- package/lib/{esm/Progress.js → Progress.js} +2 -2
- package/lib/Progress.js.map +1 -0
- package/lib/access-control.d.ts +140 -0
- package/lib/access-control.d.ts.map +1 -0
- package/lib/{esm/access-control.js → access-control.js} +38 -0
- package/lib/access-control.js.map +1 -0
- package/lib/agent-request-template.d.ts +4 -0
- package/lib/agent-request-template.d.ts.map +1 -0
- package/lib/agent-request-template.js +46 -0
- package/lib/agent-request-template.js.map +1 -0
- package/lib/{types/analytics.d.ts → analytics.d.ts} +3 -2
- package/lib/analytics.d.ts.map +1 -0
- package/lib/{cjs/analytics.js.map → analytics.js.map} +1 -1
- package/lib/{types/apikey.d.ts → apikey.d.ts} +37 -7
- package/lib/apikey.d.ts.map +1 -0
- package/lib/{esm/apikey.js → apikey.js} +1 -0
- package/lib/apikey.js.map +1 -0
- package/lib/{types/apps.d.ts → apps.d.ts} +523 -36
- package/lib/apps.d.ts.map +1 -0
- package/lib/apps.js +210 -0
- package/lib/apps.js.map +1 -0
- package/lib/{types/ask-user.d.ts → ask-user.d.ts} +1 -0
- package/lib/ask-user.d.ts.map +1 -0
- package/lib/{esm/ask-user.js.map → ask-user.js.map} +1 -1
- package/lib/{types/audit-trail.d.ts → audit-trail.d.ts} +2 -1
- package/lib/audit-trail.d.ts.map +1 -0
- package/lib/audit-trail.js +3 -0
- package/lib/audit-trail.js.map +1 -0
- package/lib/browser-credentials.d.ts +123 -0
- package/lib/browser-credentials.d.ts.map +1 -0
- package/lib/browser-credentials.js +2 -0
- package/lib/browser-credentials.js.map +1 -0
- package/lib/{types/channels.d.ts → channels.d.ts} +3 -2
- package/lib/channels.d.ts.map +1 -0
- package/lib/{esm/channels.js → channels.js} +3 -3
- package/lib/channels.js.map +1 -0
- package/lib/{types/common.d.ts → common.d.ts} +18 -10
- package/lib/common.d.ts.map +1 -0
- package/lib/common.js.map +1 -0
- package/lib/{types/cost-analytics.d.ts → cost-analytics.d.ts} +2 -3
- package/lib/cost-analytics.d.ts.map +1 -0
- package/lib/cost-analytics.js.map +1 -0
- package/lib/{types/data-platform.d.ts → data-platform.d.ts} +134 -7
- package/lib/data-platform.d.ts.map +1 -0
- package/lib/data-platform.js.map +1 -0
- package/lib/{types/email.d.ts → email.d.ts} +6 -2
- package/lib/email.d.ts.map +1 -0
- package/lib/{esm/email.js → email.js} +2 -2
- package/lib/email.js.map +1 -0
- package/lib/embeddings.d.ts +65 -0
- package/lib/embeddings.d.ts.map +1 -0
- package/lib/embeddings.js +2 -0
- package/lib/embeddings.js.map +1 -0
- package/lib/{types/environment.d.ts → environment.d.ts} +19 -5
- package/lib/environment.d.ts.map +1 -0
- package/lib/{esm/environment.js → environment.js} +17 -7
- package/lib/environment.js.map +1 -0
- package/lib/{types/facets.d.ts → facets.d.ts} +6 -5
- package/lib/facets.d.ts.map +1 -0
- package/lib/facets.js.map +1 -0
- package/lib/{types/group.d.ts → group.d.ts} +15 -2
- package/lib/group.d.ts.map +1 -0
- package/lib/group.js +3 -0
- package/lib/group.js.map +1 -0
- package/lib/host-utils.d.ts +8 -0
- package/lib/host-utils.d.ts.map +1 -0
- package/lib/host-utils.js +84 -0
- package/lib/host-utils.js.map +1 -0
- package/lib/{types/index.d.ts → index.d.ts} +19 -10
- package/lib/index.d.ts.map +1 -0
- package/lib/{esm/index.js → index.js} +18 -10
- package/lib/index.js.map +1 -0
- package/lib/integrations.d.ts +151 -0
- package/lib/integrations.d.ts.map +1 -0
- package/lib/{esm/integrations.js → integrations.js} +6 -0
- package/lib/integrations.js.map +1 -0
- package/lib/{types/interaction.d.ts → interaction.d.ts} +99 -56
- package/lib/interaction.d.ts.map +1 -0
- package/lib/{esm/interaction.js → interaction.js} +3 -3
- package/lib/interaction.js.map +1 -0
- package/lib/json-schema.d.ts +2 -0
- package/lib/json-schema.d.ts.map +1 -0
- package/lib/{cjs/json-schema.js.map → json-schema.js.map} +1 -1
- package/lib/json.d.ts +2 -0
- package/lib/json.d.ts.map +1 -0
- package/lib/json.js.map +1 -0
- package/lib/{types/meters.d.ts → meters.d.ts} +2 -1
- package/lib/meters.d.ts.map +1 -0
- package/lib/meters.js.map +1 -0
- package/lib/model_utility.d.ts +2 -0
- package/lib/model_utility.d.ts.map +1 -0
- package/lib/model_utility.js +2 -0
- package/lib/model_utility.js.map +1 -0
- package/lib/oauth-scopes.d.ts +18 -0
- package/lib/oauth-scopes.d.ts.map +1 -0
- package/lib/oauth-scopes.js +57 -0
- package/lib/oauth-scopes.js.map +1 -0
- package/lib/{types/oauth-server.d.ts → oauth-server.d.ts} +64 -4
- package/lib/oauth-server.d.ts.map +1 -0
- package/lib/{cjs/oauth-server.js.map → oauth-server.js.map} +1 -1
- package/lib/{types/oauth.d.ts → oauth.d.ts} +1 -0
- package/lib/oauth.d.ts.map +1 -0
- package/lib/oauth.js.map +1 -0
- package/lib/{types/payload.d.ts → payload.d.ts} +5 -4
- package/lib/payload.d.ts.map +1 -0
- package/lib/{cjs/payload.js.map → payload.js.map} +1 -1
- package/lib/{types/pending-asks.d.ts → pending-asks.d.ts} +8 -1
- package/lib/pending-asks.d.ts.map +1 -0
- package/lib/pending-asks.js.map +1 -0
- package/lib/principal-context.d.ts +27 -0
- package/lib/principal-context.d.ts.map +1 -0
- package/lib/principal-context.js +2 -0
- package/lib/principal-context.js.map +1 -0
- package/lib/{types/project.d.ts → project.d.ts} +279 -50
- package/lib/project.d.ts.map +1 -0
- package/lib/project.js +230 -0
- package/lib/project.js.map +1 -0
- package/lib/{types/prompt.d.ts → prompt.d.ts} +16 -9
- package/lib/prompt.d.ts.map +1 -0
- package/lib/prompt.js.map +1 -0
- package/lib/{types/query.d.ts → query.d.ts} +11 -8
- package/lib/query.d.ts.map +1 -0
- package/lib/query.js.map +1 -0
- package/lib/{types/rate-limiter.d.ts → rate-limiter.d.ts} +1 -0
- package/lib/rate-limiter.d.ts.map +1 -0
- package/lib/rate-limiter.js.map +1 -0
- package/lib/{types/refs.d.ts → refs.d.ts} +1 -0
- package/lib/refs.d.ts.map +1 -0
- package/lib/refs.js.map +1 -0
- package/lib/roles/types.d.ts +54 -0
- package/lib/roles/types.d.ts.map +1 -0
- package/lib/roles/types.js +17 -0
- package/lib/roles/types.js.map +1 -0
- package/lib/{types/runs.d.ts → runs.d.ts} +3 -2
- package/lib/runs.d.ts.map +1 -0
- package/lib/runs.js.map +1 -0
- package/lib/secrets.d.ts +47 -0
- package/lib/secrets.d.ts.map +1 -0
- package/lib/secrets.js +2 -0
- package/lib/secrets.js.map +1 -0
- package/lib/{types/skill.d.ts → skill.d.ts} +2 -1
- package/lib/skill.d.ts.map +1 -0
- package/lib/skill.js.map +1 -0
- package/lib/{types/store → store}/activity-catalog.d.ts +2 -1
- package/lib/store/activity-catalog.d.ts.map +1 -0
- package/lib/store/activity-catalog.js.map +1 -0
- package/lib/{types/store → store}/agent-run.d.ts +206 -35
- package/lib/store/agent-run.d.ts.map +1 -0
- package/lib/store/agent-run.js.map +1 -0
- package/lib/{types/store → store}/collections.d.ts +18 -9
- package/lib/store/collections.d.ts.map +1 -0
- package/lib/store/collections.js.map +1 -0
- package/lib/{types/store → store}/common.d.ts +1 -0
- package/lib/store/common.d.ts.map +1 -0
- package/lib/{cjs → store}/common.js.map +1 -1
- package/lib/{types/store → store}/conversation-state.d.ts +51 -5
- package/lib/store/conversation-state.d.ts.map +1 -0
- package/lib/{esm/store → store}/conversation-state.js +3 -0
- package/lib/store/conversation-state.js.map +1 -0
- package/lib/{types/store → store}/doc-analyzer.d.ts +20 -14
- package/lib/store/doc-analyzer.d.ts.map +1 -0
- package/lib/{cjs/store → store}/doc-analyzer.js.map +1 -1
- package/lib/{types/store → store}/dsl-workflow.d.ts +42 -24
- package/lib/store/dsl-workflow.d.ts.map +1 -0
- package/lib/store/dsl-workflow.js +8 -0
- package/lib/store/dsl-workflow.js.map +1 -0
- package/lib/{types/store → store}/hive-memory.d.ts +2 -1
- package/lib/store/hive-memory.d.ts.map +1 -0
- package/lib/{cjs/store → store}/hive-memory.js.map +1 -1
- package/lib/store/index.d.ts +20 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/store/index.js +20 -0
- package/lib/store/index.js.map +1 -0
- package/lib/{types/store → store}/object-types.d.ts +2 -1
- package/lib/store/object-types.d.ts.map +1 -0
- package/lib/store/object-types.js +95 -0
- package/lib/store/object-types.js.map +1 -0
- package/lib/store/process-schema.d.ts +481 -0
- package/lib/store/process-schema.d.ts.map +1 -0
- package/lib/store/process-schema.js +482 -0
- package/lib/store/process-schema.js.map +1 -0
- package/lib/store/process-validation.d.ts +17 -0
- package/lib/store/process-validation.d.ts.map +1 -0
- package/lib/store/process-validation.js +428 -0
- package/lib/store/process-validation.js.map +1 -0
- package/lib/store/process.d.ts +261 -0
- package/lib/store/process.d.ts.map +1 -0
- package/lib/store/process.js +2 -0
- package/lib/store/process.js.map +1 -0
- package/lib/{types/store → store}/rendering.d.ts +5 -4
- package/lib/store/rendering.d.ts.map +1 -0
- package/lib/{esm/store → store}/rendering.js +6 -6
- package/lib/store/rendering.js.map +1 -0
- package/lib/{types/store → store}/schedule.d.ts +4 -3
- package/lib/store/schedule.d.ts.map +1 -0
- package/lib/store/schedule.js.map +1 -0
- package/lib/{types/store → store}/signals.d.ts +17 -1
- package/lib/store/signals.d.ts.map +1 -0
- package/lib/{cjs/store → store}/signals.js.map +1 -1
- package/lib/{types/store → store}/store.d.ts +67 -38
- package/lib/store/store.d.ts.map +1 -0
- package/lib/{esm/store → store}/store.js +17 -8
- package/lib/store/store.js.map +1 -0
- package/lib/store/task.d.ts +63 -0
- package/lib/store/task.d.ts.map +1 -0
- package/lib/store/task.js +5 -0
- package/lib/store/task.js.map +1 -0
- package/lib/store/temporalio.d.ts +17 -0
- package/lib/store/temporalio.d.ts.map +1 -0
- package/lib/{esm/store → store}/temporalio.js +6 -6
- package/lib/store/temporalio.js.map +1 -0
- package/lib/{types/store → store}/workflow.d.ts +120 -34
- package/lib/store/workflow.d.ts.map +1 -0
- package/lib/{esm/store → store}/workflow.js +44 -42
- package/lib/store/workflow.js.map +1 -0
- package/lib/{types/sts-token-types.d.ts → sts-token-types.d.ts} +29 -2
- package/lib/sts-token-types.d.ts.map +1 -0
- package/lib/{esm/sts-token-types.js → sts-token-types.js} +0 -4
- package/lib/sts-token-types.js.map +1 -0
- package/lib/{types/tenant.d.ts → tenant.d.ts} +1 -0
- package/lib/tenant.d.ts.map +1 -0
- package/lib/tenant.js.map +1 -0
- package/lib/{types/tool-execution.d.ts → tool-execution.d.ts} +3 -2
- package/lib/tool-execution.d.ts.map +1 -0
- package/lib/tool-execution.js.map +1 -0
- package/lib/tools.d.ts +101 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +2 -0
- package/lib/tools.js.map +1 -0
- package/lib/{types/training.d.ts → training.d.ts} +10 -9
- package/lib/training.d.ts.map +1 -0
- package/lib/training.js.map +1 -0
- package/lib/{types/transient-tokens.d.ts → transient-tokens.d.ts} +4 -3
- package/lib/transient-tokens.d.ts.map +1 -0
- package/lib/transient-tokens.js.map +1 -0
- package/lib/{types/user.d.ts → user.d.ts} +14 -8
- package/lib/user.d.ts.map +1 -0
- package/lib/{esm/user.js → user.js} +2 -2
- package/lib/user.js.map +1 -0
- package/lib/{types/utils → utils}/auth.d.ts +2 -1
- package/lib/utils/auth.d.ts.map +1 -0
- package/lib/{esm/utils → utils}/auth.js +1 -1
- package/lib/utils/auth.js.map +1 -0
- package/lib/{types/utils → utils}/schemas.d.ts +5 -4
- package/lib/utils/schemas.d.ts.map +1 -0
- package/lib/{esm/utils → utils}/schemas.js +24 -22
- package/lib/utils/schemas.js.map +1 -0
- package/lib/{types/utils → utils}/type-helpers.d.ts +1 -0
- package/lib/utils/type-helpers.d.ts.map +1 -0
- package/lib/{cjs/utils → utils}/type-helpers.js.map +1 -1
- package/lib/{types/versions.d.ts → versions.d.ts} +1 -0
- package/lib/versions.d.ts.map +1 -0
- package/lib/versions.js.map +1 -0
- package/lib/vertesia-common.js +1 -1
- package/lib/vertesia-common.js.map +1 -1
- package/lib/{types/workflow-analytics.d.ts → workflow-analytics.d.ts} +10 -3
- package/lib/workflow-analytics.d.ts.map +1 -0
- package/lib/workflow-analytics.js.map +1 -0
- package/package.json +21 -20
- package/src/Progress.ts +9 -7
- package/src/access-control.ts +127 -59
- package/src/agent-request-template.test.ts +40 -0
- package/src/agent-request-template.ts +45 -0
- package/src/analytics.ts +11 -16
- package/src/apikey.ts +46 -14
- package/src/apps.test.ts +37 -0
- package/src/apps.ts +702 -79
- package/src/audit-trail.ts +3 -5
- package/src/browser-credentials.ts +133 -0
- package/src/channels.ts +5 -5
- package/src/common.ts +17 -11
- package/src/cost-analytics.ts +10 -4
- package/src/data-platform.ts +142 -7
- package/src/email.ts +7 -4
- package/src/embeddings.ts +76 -0
- package/src/environment.ts +44 -25
- package/src/facets.ts +19 -21
- package/src/group.ts +14 -3
- package/src/host-utils.test.ts +61 -0
- package/src/host-utils.ts +93 -0
- package/src/index.ts +18 -10
- package/src/integrations.ts +134 -26
- package/src/interaction.ts +185 -141
- package/src/json-schema.ts +1 -1
- package/src/json.ts +6 -3
- package/src/meters.ts +6 -9
- package/src/model_utility.ts +1 -1
- package/src/oauth-scopes.ts +72 -0
- package/src/oauth-server.ts +80 -5
- package/src/payload.ts +6 -6
- package/src/pending-asks.ts +8 -1
- package/src/principal-context.ts +27 -0
- package/src/project.ts +416 -109
- package/src/prompt.ts +30 -27
- package/src/query.ts +19 -17
- package/src/rate-limiter.ts +1 -1
- package/src/refs.ts +19 -24
- package/src/roles/types.ts +58 -0
- package/src/roles.test.ts +32 -0
- package/src/runs.ts +14 -15
- package/src/secrets.ts +60 -0
- package/src/skill.ts +1 -2
- package/src/store/activity-catalog.ts +13 -1
- package/src/store/agent-run.ts +270 -42
- package/src/store/collections.ts +21 -13
- package/src/store/common.ts +1 -2
- package/src/store/conversation-state.ts +59 -5
- package/src/store/doc-analyzer.ts +22 -14
- package/src/store/dsl-workflow.ts +54 -29
- package/src/store/hive-memory.ts +10 -10
- package/src/store/index.ts +19 -17
- package/src/store/ms.d.ts +34 -3
- package/src/store/object-types.ts +75 -79
- package/src/store/process-schema.test.ts +106 -0
- package/src/store/process-schema.ts +485 -0
- package/src/store/process-validation.test.ts +432 -0
- package/src/store/process-validation.ts +548 -0
- package/src/store/process.ts +305 -0
- package/src/store/rendering.ts +12 -12
- package/src/store/schedule.ts +3 -3
- package/src/store/signals.ts +17 -1
- package/src/store/store.ts +119 -89
- package/src/store/task.ts +71 -0
- package/src/store/temporalio.ts +14 -14
- package/src/store/workflow.test.ts +76 -14
- package/src/store/workflow.ts +220 -125
- package/src/sts-token-types.ts +30 -4
- package/src/tool-execution.ts +2 -2
- package/src/tools.ts +103 -0
- package/src/training.ts +25 -27
- package/src/transient-tokens.ts +5 -8
- package/src/user.ts +26 -36
- package/src/utils/auth.ts +2 -2
- package/src/utils/schemas.ts +36 -31
- package/src/utils/type-helpers.ts +2 -4
- package/src/workflow-analytics.ts +15 -18
- package/lib/cjs/Progress.js +0 -61
- package/lib/cjs/Progress.js.map +0 -1
- package/lib/cjs/access-control.js +0 -58
- package/lib/cjs/access-control.js.map +0 -1
- package/lib/cjs/analytics.js +0 -3
- package/lib/cjs/apikey.js +0 -17
- package/lib/cjs/apikey.js.map +0 -1
- package/lib/cjs/apps.js +0 -89
- package/lib/cjs/apps.js.map +0 -1
- package/lib/cjs/ask-user.js +0 -8
- package/lib/cjs/ask-user.js.map +0 -1
- package/lib/cjs/audit-trail.js +0 -10
- package/lib/cjs/audit-trail.js.map +0 -1
- package/lib/cjs/channels.js +0 -63
- package/lib/cjs/channels.js.map +0 -1
- package/lib/cjs/common.js +0 -3
- package/lib/cjs/cost-analytics.js +0 -13
- package/lib/cjs/cost-analytics.js.map +0 -1
- package/lib/cjs/data-platform.js +0 -127
- package/lib/cjs/data-platform.js.map +0 -1
- package/lib/cjs/email.js +0 -20
- package/lib/cjs/email.js.map +0 -1
- package/lib/cjs/environment.js +0 -44
- package/lib/cjs/environment.js.map +0 -1
- package/lib/cjs/facets.js +0 -3
- package/lib/cjs/facets.js.map +0 -1
- package/lib/cjs/group.js +0 -6
- package/lib/cjs/group.js.map +0 -1
- package/lib/cjs/index.js +0 -60
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/integrations.js +0 -16
- package/lib/cjs/integrations.js.map +0 -1
- package/lib/cjs/interaction.js +0 -101
- package/lib/cjs/interaction.js.map +0 -1
- package/lib/cjs/json-schema.js +0 -3
- package/lib/cjs/json.js +0 -3
- package/lib/cjs/json.js.map +0 -1
- package/lib/cjs/meters.js +0 -13
- package/lib/cjs/meters.js.map +0 -1
- package/lib/cjs/model_utility.js +0 -6
- package/lib/cjs/model_utility.js.map +0 -1
- package/lib/cjs/oauth-server.js +0 -3
- package/lib/cjs/oauth.js +0 -7
- package/lib/cjs/oauth.js.map +0 -1
- package/lib/cjs/openapi.js +0 -3
- package/lib/cjs/openapi.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/payload.js +0 -3
- package/lib/cjs/pending-asks.js +0 -7
- package/lib/cjs/pending-asks.js.map +0 -1
- package/lib/cjs/project.js +0 -143
- package/lib/cjs/project.js.map +0 -1
- package/lib/cjs/prompt.js +0 -21
- package/lib/cjs/prompt.js.map +0 -1
- package/lib/cjs/query.js +0 -3
- package/lib/cjs/query.js.map +0 -1
- package/lib/cjs/rate-limiter.js +0 -6
- package/lib/cjs/rate-limiter.js.map +0 -1
- package/lib/cjs/refs.js +0 -14
- package/lib/cjs/refs.js.map +0 -1
- package/lib/cjs/runs.js +0 -3
- package/lib/cjs/runs.js.map +0 -1
- package/lib/cjs/skill.js +0 -14
- package/lib/cjs/skill.js.map +0 -1
- package/lib/cjs/store/activity-catalog.js +0 -3
- package/lib/cjs/store/activity-catalog.js.map +0 -1
- package/lib/cjs/store/agent-run.js +0 -16
- package/lib/cjs/store/agent-run.js.map +0 -1
- package/lib/cjs/store/collections.js +0 -9
- package/lib/cjs/store/collections.js.map +0 -1
- package/lib/cjs/store/common.js +0 -3
- package/lib/cjs/store/common.js.map +0 -1
- package/lib/cjs/store/conversation-state.js +0 -19
- package/lib/cjs/store/conversation-state.js.map +0 -1
- package/lib/cjs/store/doc-analyzer.js +0 -3
- package/lib/cjs/store/dsl-workflow.js +0 -5
- package/lib/cjs/store/dsl-workflow.js.map +0 -1
- package/lib/cjs/store/hive-memory.js +0 -3
- package/lib/cjs/store/index.js +0 -33
- package/lib/cjs/store/index.js.map +0 -1
- package/lib/cjs/store/object-types.js +0 -98
- package/lib/cjs/store/object-types.js.map +0 -1
- package/lib/cjs/store/rendering.js +0 -26
- package/lib/cjs/store/rendering.js.map +0 -1
- package/lib/cjs/store/schedule.js +0 -32
- package/lib/cjs/store/schedule.js.map +0 -1
- package/lib/cjs/store/signals.js +0 -3
- package/lib/cjs/store/store.js +0 -182
- package/lib/cjs/store/store.js.map +0 -1
- package/lib/cjs/store/temporalio.js +0 -44
- package/lib/cjs/store/temporalio.js.map +0 -1
- package/lib/cjs/store/worker.js +0 -3
- package/lib/cjs/store/worker.js.map +0 -1
- package/lib/cjs/store/workflow.js +0 -306
- package/lib/cjs/store/workflow.js.map +0 -1
- package/lib/cjs/sts-token-types.js +0 -32
- package/lib/cjs/sts-token-types.js.map +0 -1
- package/lib/cjs/tenant.js +0 -3
- package/lib/cjs/tenant.js.map +0 -1
- package/lib/cjs/tool-execution.js +0 -6
- package/lib/cjs/tool-execution.js.map +0 -1
- package/lib/cjs/training.js +0 -14
- package/lib/cjs/training.js.map +0 -1
- package/lib/cjs/transient-tokens.js +0 -9
- package/lib/cjs/transient-tokens.js.map +0 -1
- package/lib/cjs/user.js +0 -26
- package/lib/cjs/user.js.map +0 -1
- package/lib/cjs/utils/auth.js +0 -15
- package/lib/cjs/utils/auth.js.map +0 -1
- package/lib/cjs/utils/schemas.js +0 -182
- package/lib/cjs/utils/schemas.js.map +0 -1
- package/lib/cjs/utils/type-helpers.js +0 -3
- package/lib/cjs/versions.js +0 -10
- package/lib/cjs/versions.js.map +0 -1
- package/lib/cjs/workflow-analytics.js +0 -52
- package/lib/cjs/workflow-analytics.js.map +0 -1
- package/lib/esm/Progress.js.map +0 -1
- package/lib/esm/access-control.js.map +0 -1
- package/lib/esm/analytics.js.map +0 -1
- package/lib/esm/apikey.js.map +0 -1
- package/lib/esm/apps.js +0 -79
- package/lib/esm/apps.js.map +0 -1
- package/lib/esm/audit-trail.js +0 -7
- package/lib/esm/audit-trail.js.map +0 -1
- package/lib/esm/channels.js.map +0 -1
- package/lib/esm/common.js.map +0 -1
- package/lib/esm/cost-analytics.js.map +0 -1
- package/lib/esm/data-platform.js.map +0 -1
- package/lib/esm/email.js.map +0 -1
- package/lib/esm/environment.js.map +0 -1
- package/lib/esm/facets.js.map +0 -1
- package/lib/esm/group.js +0 -3
- package/lib/esm/group.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/integrations.js.map +0 -1
- package/lib/esm/interaction.js.map +0 -1
- package/lib/esm/json-schema.js.map +0 -1
- package/lib/esm/json.js.map +0 -1
- package/lib/esm/meters.js.map +0 -1
- package/lib/esm/model_utility.js +0 -2
- package/lib/esm/model_utility.js.map +0 -1
- package/lib/esm/oauth-server.js.map +0 -1
- package/lib/esm/oauth.js.map +0 -1
- package/lib/esm/openapi.js +0 -2
- package/lib/esm/openapi.js.map +0 -1
- package/lib/esm/payload.js.map +0 -1
- package/lib/esm/pending-asks.js.map +0 -1
- package/lib/esm/project.js +0 -138
- package/lib/esm/project.js.map +0 -1
- package/lib/esm/prompt.js.map +0 -1
- package/lib/esm/query.js.map +0 -1
- package/lib/esm/rate-limiter.js.map +0 -1
- package/lib/esm/refs.js.map +0 -1
- package/lib/esm/runs.js.map +0 -1
- package/lib/esm/skill.js.map +0 -1
- package/lib/esm/store/activity-catalog.js.map +0 -1
- package/lib/esm/store/agent-run.js.map +0 -1
- package/lib/esm/store/collections.js.map +0 -1
- package/lib/esm/store/common.js.map +0 -1
- package/lib/esm/store/conversation-state.js.map +0 -1
- package/lib/esm/store/doc-analyzer.js.map +0 -1
- package/lib/esm/store/dsl-workflow.js +0 -2
- package/lib/esm/store/dsl-workflow.js.map +0 -1
- package/lib/esm/store/hive-memory.js.map +0 -1
- package/lib/esm/store/index.js +0 -17
- package/lib/esm/store/index.js.map +0 -1
- package/lib/esm/store/object-types.js +0 -95
- package/lib/esm/store/object-types.js.map +0 -1
- package/lib/esm/store/rendering.js.map +0 -1
- package/lib/esm/store/schedule.js.map +0 -1
- package/lib/esm/store/signals.js.map +0 -1
- package/lib/esm/store/store.js.map +0 -1
- package/lib/esm/store/temporalio.js.map +0 -1
- package/lib/esm/store/worker.js +0 -2
- package/lib/esm/store/worker.js.map +0 -1
- package/lib/esm/store/workflow.js.map +0 -1
- package/lib/esm/sts-token-types.js.map +0 -1
- package/lib/esm/tenant.js.map +0 -1
- package/lib/esm/tool-execution.js.map +0 -1
- package/lib/esm/training.js.map +0 -1
- package/lib/esm/transient-tokens.js.map +0 -1
- package/lib/esm/user.js.map +0 -1
- package/lib/esm/utils/auth.js.map +0 -1
- package/lib/esm/utils/schemas.js.map +0 -1
- package/lib/esm/utils/type-helpers.js.map +0 -1
- package/lib/esm/versions.js.map +0 -1
- package/lib/esm/workflow-analytics.js.map +0 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/lib/types/Progress.d.ts.map +0 -1
- package/lib/types/access-control.d.ts +0 -79
- package/lib/types/access-control.d.ts.map +0 -1
- package/lib/types/analytics.d.ts.map +0 -1
- package/lib/types/apikey.d.ts.map +0 -1
- package/lib/types/apps.d.ts.map +0 -1
- package/lib/types/ask-user.d.ts.map +0 -1
- package/lib/types/audit-trail.d.ts.map +0 -1
- package/lib/types/channels.d.ts.map +0 -1
- package/lib/types/common.d.ts.map +0 -1
- package/lib/types/cost-analytics.d.ts.map +0 -1
- package/lib/types/data-platform.d.ts.map +0 -1
- package/lib/types/email.d.ts.map +0 -1
- package/lib/types/environment.d.ts.map +0 -1
- package/lib/types/facets.d.ts.map +0 -1
- package/lib/types/group.d.ts.map +0 -1
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/integrations.d.ts +0 -83
- package/lib/types/integrations.d.ts.map +0 -1
- package/lib/types/interaction.d.ts.map +0 -1
- package/lib/types/json-schema.d.ts +0 -1
- package/lib/types/json-schema.d.ts.map +0 -1
- package/lib/types/json.d.ts +0 -1
- package/lib/types/json.d.ts.map +0 -1
- package/lib/types/meters.d.ts.map +0 -1
- package/lib/types/model_utility.d.ts +0 -1
- package/lib/types/model_utility.d.ts.map +0 -1
- package/lib/types/oauth-server.d.ts.map +0 -1
- package/lib/types/oauth.d.ts.map +0 -1
- package/lib/types/openapi.d.ts +0 -90
- package/lib/types/openapi.d.ts.map +0 -1
- package/lib/types/payload.d.ts.map +0 -1
- package/lib/types/pending-asks.d.ts.map +0 -1
- package/lib/types/project.d.ts.map +0 -1
- package/lib/types/prompt.d.ts.map +0 -1
- package/lib/types/query.d.ts.map +0 -1
- package/lib/types/rate-limiter.d.ts.map +0 -1
- package/lib/types/refs.d.ts.map +0 -1
- package/lib/types/runs.d.ts.map +0 -1
- package/lib/types/skill.d.ts.map +0 -1
- package/lib/types/store/activity-catalog.d.ts.map +0 -1
- package/lib/types/store/agent-run.d.ts.map +0 -1
- package/lib/types/store/collections.d.ts.map +0 -1
- package/lib/types/store/common.d.ts.map +0 -1
- package/lib/types/store/conversation-state.d.ts.map +0 -1
- package/lib/types/store/doc-analyzer.d.ts.map +0 -1
- package/lib/types/store/dsl-workflow.d.ts.map +0 -1
- package/lib/types/store/hive-memory.d.ts.map +0 -1
- package/lib/types/store/index.d.ts +0 -16
- package/lib/types/store/index.d.ts.map +0 -1
- package/lib/types/store/object-types.d.ts.map +0 -1
- package/lib/types/store/rendering.d.ts.map +0 -1
- package/lib/types/store/schedule.d.ts.map +0 -1
- package/lib/types/store/signals.d.ts.map +0 -1
- package/lib/types/store/store.d.ts.map +0 -1
- package/lib/types/store/temporalio.d.ts +0 -16
- package/lib/types/store/temporalio.d.ts.map +0 -1
- package/lib/types/store/worker.d.ts +0 -18
- package/lib/types/store/worker.d.ts.map +0 -1
- package/lib/types/store/workflow.d.ts.map +0 -1
- package/lib/types/sts-token-types.d.ts.map +0 -1
- package/lib/types/tenant.d.ts.map +0 -1
- package/lib/types/tool-execution.d.ts.map +0 -1
- package/lib/types/training.d.ts.map +0 -1
- package/lib/types/transient-tokens.d.ts.map +0 -1
- package/lib/types/user.d.ts.map +0 -1
- package/lib/types/utils/auth.d.ts.map +0 -1
- package/lib/types/utils/schemas.d.ts.map +0 -1
- package/lib/types/utils/type-helpers.d.ts.map +0 -1
- package/lib/types/versions.d.ts.map +0 -1
- package/lib/types/workflow-analytics.d.ts.map +0 -1
- package/src/openapi.ts +0 -102
- package/src/store/worker.ts +0 -19
- /package/lib/{esm/analytics.js → analytics.js} +0 -0
- /package/lib/{esm/ask-user.js → ask-user.js} +0 -0
- /package/lib/{esm/common.js → common.js} +0 -0
- /package/lib/{esm/cost-analytics.js → cost-analytics.js} +0 -0
- /package/lib/{esm/data-platform.js → data-platform.js} +0 -0
- /package/lib/{esm/facets.js → facets.js} +0 -0
- /package/lib/{esm/json-schema.js → json-schema.js} +0 -0
- /package/lib/{esm/json.js → json.js} +0 -0
- /package/lib/{esm/meters.js → meters.js} +0 -0
- /package/lib/{esm/oauth-server.js → oauth-server.js} +0 -0
- /package/lib/{esm/oauth.js → oauth.js} +0 -0
- /package/lib/{esm/payload.js → payload.js} +0 -0
- /package/lib/{esm/pending-asks.js → pending-asks.js} +0 -0
- /package/lib/{esm/prompt.js → prompt.js} +0 -0
- /package/lib/{esm/query.js → query.js} +0 -0
- /package/lib/{esm/rate-limiter.js → rate-limiter.js} +0 -0
- /package/lib/{esm/refs.js → refs.js} +0 -0
- /package/lib/{esm/runs.js → runs.js} +0 -0
- /package/lib/{esm/skill.js → skill.js} +0 -0
- /package/lib/{esm/store → store}/activity-catalog.js +0 -0
- /package/lib/{esm/store → store}/agent-run.js +0 -0
- /package/lib/{esm/store → store}/collections.js +0 -0
- /package/lib/{esm/store → store}/common.js +0 -0
- /package/lib/{esm/store → store}/doc-analyzer.js +0 -0
- /package/lib/{esm/store → store}/hive-memory.js +0 -0
- /package/lib/{esm/store → store}/schedule.js +0 -0
- /package/lib/{esm/store → store}/signals.js +0 -0
- /package/lib/{esm/tenant.js → tenant.js} +0 -0
- /package/lib/{esm/tool-execution.js → tool-execution.js} +0 -0
- /package/lib/{esm/training.js → training.js} +0 -0
- /package/lib/{esm/transient-tokens.js → transient-tokens.js} +0 -0
- /package/lib/{esm/utils → utils}/type-helpers.js +0 -0
- /package/lib/{esm/versions.js → versions.js} +0 -0
- /package/lib/{esm/workflow-analytics.js → workflow-analytics.js} +0 -0
package/src/apps.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { JSONObject, JSONSchema, ToolDefinition } from
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { JSONObject, JSONSchema, ToolDefinition } from '@llumiverse/common';
|
|
2
|
+
import type { AppDashboardDefinition } from './data-platform.js';
|
|
3
|
+
import type { CatalogInteractionRef } from './interaction.js';
|
|
4
|
+
import type { DSLActivityOptions, InCodeProcessDefinition, InCodeTypeDefinition } from './store/index.js';
|
|
4
5
|
|
|
5
6
|
/** Allowed values for AppUINavItem.preferredSection */
|
|
6
|
-
export const PREFERRED_SECTIONS = [
|
|
7
|
+
export const PREFERRED_SECTIONS = ['default', 'footer', 'settings'] as const;
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Additional navigation item for an app's UI configuration.
|
|
@@ -44,7 +45,7 @@ export interface AppUIConfig {
|
|
|
44
45
|
* - shadow - use Shadow DOM to fully isolate the plugin from the host.
|
|
45
46
|
* - css - use CSS processing (like prefixing or other isolation techniques). Ligther but plugins may conflict with the host
|
|
46
47
|
*/
|
|
47
|
-
isolation?:
|
|
48
|
+
isolation?: 'shadow' | 'css';
|
|
48
49
|
/**
|
|
49
50
|
* Navigation items for the app's sidebar UI.
|
|
50
51
|
* Only applicable for apps with UI capability in shell contexts (ie. CompositeApp shell).
|
|
@@ -72,12 +73,12 @@ export interface AppInstallationsQuery {
|
|
|
72
73
|
/**
|
|
73
74
|
* Authentication type for tool collections
|
|
74
75
|
*/
|
|
75
|
-
export type ToolCollectionAuthType =
|
|
76
|
+
export type ToolCollectionAuthType = 'oauth' | 'other';
|
|
76
77
|
|
|
77
78
|
/**
|
|
78
79
|
* Tool collection type
|
|
79
80
|
*/
|
|
80
|
-
export type ToolCollectionType =
|
|
81
|
+
export type ToolCollectionType = 'mcp' | 'vertesia_sdk';
|
|
81
82
|
|
|
82
83
|
/**
|
|
83
84
|
* Base tool collection configuration
|
|
@@ -131,7 +132,7 @@ export interface MCPOAuthConfig {
|
|
|
131
132
|
* MCP tool collection configuration (requires name, description, and namespace)
|
|
132
133
|
*/
|
|
133
134
|
export interface MCPToolCollectionObject extends BaseToolCollectionObject {
|
|
134
|
-
type:
|
|
135
|
+
type: 'mcp';
|
|
135
136
|
|
|
136
137
|
/**
|
|
137
138
|
* Stable identifier for this collection.
|
|
@@ -196,7 +197,7 @@ export interface MCPToolCollectionObject extends BaseToolCollectionObject {
|
|
|
196
197
|
* Vertesia SDK tool collection configuration
|
|
197
198
|
*/
|
|
198
199
|
export interface VertesiaSDKToolCollectionObject extends BaseToolCollectionObject {
|
|
199
|
-
type:
|
|
200
|
+
type: 'vertesia_sdk';
|
|
200
201
|
|
|
201
202
|
/**
|
|
202
203
|
* Optional namespace to use for tool names from this collection.
|
|
@@ -220,14 +221,17 @@ export interface VertesiaSDKToolCollectionObject extends BaseToolCollectionObjec
|
|
|
220
221
|
/**
|
|
221
222
|
* Tool collection configuration (object format)
|
|
222
223
|
*/
|
|
224
|
+
/**
|
|
225
|
+
* @discriminator type
|
|
226
|
+
*/
|
|
223
227
|
export type ToolCollectionObject = MCPToolCollectionObject | VertesiaSDKToolCollectionObject;
|
|
224
228
|
|
|
225
229
|
/**
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
230
|
+
* Backward-compatible TypeScript alias. Public API payloads should reference
|
|
231
|
+
* ToolCollectionObject directly so generated clients do not create a wrapper
|
|
232
|
+
* model around the discriminated union.
|
|
229
233
|
*/
|
|
230
|
-
export type ToolCollection =
|
|
234
|
+
export type ToolCollection = ToolCollectionObject;
|
|
231
235
|
|
|
232
236
|
export const MCP_COLLECTION_ID_PATTERN = /^[a-z0-9]+(?:_[a-z0-9]+)*$/;
|
|
233
237
|
export const MCP_COLLECTION_NAMESPACE_PATTERN = /^[a-z0-9]+(?:_[a-z0-9]+)*$/;
|
|
@@ -255,46 +259,34 @@ export function getDefaultOAuthAppNameForCollectionId(collectionId: string): str
|
|
|
255
259
|
|
|
256
260
|
/**
|
|
257
261
|
* Normalizes a tool collection to the object format.
|
|
258
|
-
*
|
|
262
|
+
* Applies optional `{{var}}` substitution to the URL so manifests can reference
|
|
263
|
+
* deployment-time variables like `{{studio_ui}}`.
|
|
259
264
|
*
|
|
260
|
-
* @param collection -
|
|
265
|
+
* @param collection - ToolCollectionObject
|
|
266
|
+
* @param vars - Optional endpoint variables to substitute in URLs
|
|
261
267
|
* @returns Normalized ToolCollectionObject
|
|
262
268
|
*/
|
|
263
|
-
export function normalizeToolCollection(collection:
|
|
264
|
-
if (typeof collection
|
|
265
|
-
|
|
266
|
-
if (collection.startsWith('mcp:')) {
|
|
267
|
-
const url = collection.substring('mcp:'.length);
|
|
268
|
-
// For legacy MCP strings, derive name and prefix from URL
|
|
269
|
-
const urlObj = new URL(url);
|
|
270
|
-
const name = urlObj.hostname.replace(/\./g, '-');
|
|
271
|
-
const id = deriveMCPCollectionId(urlObj.hostname);
|
|
272
|
-
return {
|
|
273
|
-
url,
|
|
274
|
-
type: 'mcp',
|
|
275
|
-
id,
|
|
276
|
-
name,
|
|
277
|
-
description: `MCP server at ${url}`,
|
|
278
|
-
namespace: name
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
return {
|
|
282
|
-
url: collection,
|
|
283
|
-
type: 'vertesia_sdk'
|
|
284
|
-
};
|
|
269
|
+
export function normalizeToolCollection(collection: ToolCollectionObject, vars?: Endpoints): ToolCollectionObject {
|
|
270
|
+
if (!collection || typeof collection !== 'object') {
|
|
271
|
+
throw new TypeError('Tool collection must be an object');
|
|
285
272
|
}
|
|
286
|
-
|
|
273
|
+
const substitutedUrl = vars && collection.url ? substituteEndpoints(collection.url, vars) : collection.url;
|
|
274
|
+
const urlChanged = substitutedUrl !== collection.url;
|
|
287
275
|
if (collection.type === 'mcp') {
|
|
288
276
|
const fallbackId = deriveMCPCollectionId(collection.id || collection.name || collection.url);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
277
|
+
if (urlChanged || !collection.id) {
|
|
278
|
+
return {
|
|
279
|
+
...collection,
|
|
280
|
+
url: substitutedUrl,
|
|
281
|
+
id: collection.id || fallbackId,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
} else if (urlChanged) {
|
|
285
|
+
return { ...collection, url: substitutedUrl };
|
|
293
286
|
}
|
|
294
287
|
return collection;
|
|
295
288
|
}
|
|
296
289
|
|
|
297
|
-
|
|
298
290
|
/**
|
|
299
291
|
* Metadata hints from MCP tool annotations (per MCP spec).
|
|
300
292
|
*/
|
|
@@ -316,7 +308,7 @@ export interface MCPToolAnnotations {
|
|
|
316
308
|
*/
|
|
317
309
|
export interface AgentToolDefinition extends ToolDefinition {
|
|
318
310
|
/**
|
|
319
|
-
* The tool execution URL. It can be an absolute URL or a path in which case the URL is obtained
|
|
311
|
+
* The tool execution URL. It can be an absolute URL or a path in which case the URL is obtained
|
|
320
312
|
* using the base URL of the tool server API. Ex: http://tool-server.com/api/
|
|
321
313
|
* Example of relative URLs: "tools/my-tool-collection" or "/api/tools/my-tool-collection"
|
|
322
314
|
*/
|
|
@@ -328,18 +320,29 @@ export interface AgentToolDefinition extends ToolDefinition {
|
|
|
328
320
|
/**
|
|
329
321
|
* Whether this tool is available by default.
|
|
330
322
|
* - true/undefined: Tool is always available to agents
|
|
331
|
-
* - false: Tool is only available when
|
|
323
|
+
* - false: Tool is only available when enabled by a skill via `tools`
|
|
332
324
|
*/
|
|
333
325
|
default?: boolean;
|
|
334
326
|
/**
|
|
335
|
-
* For skill tools (learn_
|
|
336
|
-
*
|
|
327
|
+
* For skill tools (`learn_*`): the tool names this skill enables when called.
|
|
328
|
+
* Matches the `tools:` key used in SKILL.md frontmatter and built-in skill
|
|
329
|
+
* definitions — one name across the whole stack.
|
|
337
330
|
*/
|
|
338
|
-
|
|
331
|
+
tools?: string[];
|
|
339
332
|
/**
|
|
340
333
|
* MCP tool annotations providing hints about tool behavior and safety.
|
|
341
334
|
*/
|
|
342
335
|
annotations?: MCPToolAnnotations;
|
|
336
|
+
/**
|
|
337
|
+
* When true, agents must obtain explicit user confirmation via `ask_user`
|
|
338
|
+
* (Yes/No) before invoking this tool. If the user answers No, the tool
|
|
339
|
+
* must not run and should return an error indicating the user declined.
|
|
340
|
+
*
|
|
341
|
+
* Stronger than `annotations.destructiveHint` (which is only a hint) —
|
|
342
|
+
* this is a hard contract the agent is expected to honor. Set on tools
|
|
343
|
+
* that perform irreversible or destructive actions (e.g. delete_*).
|
|
344
|
+
*/
|
|
345
|
+
requires_user_confirmation?: boolean;
|
|
343
346
|
}
|
|
344
347
|
|
|
345
348
|
/**
|
|
@@ -357,9 +360,9 @@ export interface RemoteActivityDefinition {
|
|
|
357
360
|
/** Description of what the activity does */
|
|
358
361
|
description?: string;
|
|
359
362
|
/** JSON Schema for the activity input parameters */
|
|
360
|
-
input_schema?: Record<string,
|
|
363
|
+
input_schema?: Record<string, unknown>;
|
|
361
364
|
/** JSON Schema for the activity output */
|
|
362
|
-
output_schema?: Record<string,
|
|
365
|
+
output_schema?: Record<string, unknown>;
|
|
363
366
|
/**
|
|
364
367
|
* The activity execution URL. Can be absolute or relative to the tool server base URL.
|
|
365
368
|
* If not provided, the collection-specific activities endpoint is used.
|
|
@@ -369,8 +372,331 @@ export interface RemoteActivityDefinition {
|
|
|
369
372
|
options?: DSLActivityOptions;
|
|
370
373
|
}
|
|
371
374
|
|
|
372
|
-
export type AppCapabilities = 'ui' | 'tools' | 'interactions' | 'types' | 'templates';
|
|
375
|
+
export type AppCapabilities = 'ui' | 'tools' | 'interactions' | 'types' | 'processes' | 'templates' | 'dashboards';
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Canonical runtime list of {@link AppCapabilities} — the app capabilities Studio
|
|
379
|
+
* renders/supports. Co-located with the type so TypeScript rejects any drift between
|
|
380
|
+
* the two. Consumers (publish manifest derivation, etc.) must use this rather than
|
|
381
|
+
* re-listing the values.
|
|
382
|
+
*/
|
|
383
|
+
export const APP_CAPABILITIES: readonly AppCapabilities[] = [
|
|
384
|
+
'ui',
|
|
385
|
+
'tools',
|
|
386
|
+
'interactions',
|
|
387
|
+
'types',
|
|
388
|
+
'processes',
|
|
389
|
+
'templates',
|
|
390
|
+
'dashboards',
|
|
391
|
+
];
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Header carrying the app version a generated-app UI is running, so studio/zeno resolve app-owned
|
|
395
|
+
* capability refs (`app:<app>:...`) against that version (candidate testing) instead of current.
|
|
396
|
+
* Resolution-time only; never persisted. Set by the generated app template via client.withAppVersion.
|
|
397
|
+
*/
|
|
398
|
+
export const APP_VERSION_HEADER = 'x-vertesia-app-version';
|
|
399
|
+
/**
|
|
400
|
+
* The platform-artifact types an app build can be required to create. A finer-grained
|
|
401
|
+
* counterpart to {@link AppCapabilities}: a single `interactions` capability may comprise
|
|
402
|
+
* several `interaction` artifacts plus `agent`, `activity`, and `tool` artifacts that
|
|
403
|
+
* {@link AppCapabilities} folds together. Used by the App Solution Architect manifest and
|
|
404
|
+
* the publish-time capability gate.
|
|
405
|
+
*/
|
|
406
|
+
export type AppArtifactType =
|
|
407
|
+
| 'interaction'
|
|
408
|
+
| 'agent'
|
|
409
|
+
| 'type'
|
|
410
|
+
| 'process'
|
|
411
|
+
| 'template'
|
|
412
|
+
| 'dashboard'
|
|
413
|
+
| 'activity'
|
|
414
|
+
| 'tool';
|
|
415
|
+
|
|
416
|
+
export const APP_ARTIFACT_TYPES: readonly AppArtifactType[] = [
|
|
417
|
+
'interaction',
|
|
418
|
+
'agent',
|
|
419
|
+
'type',
|
|
420
|
+
'process',
|
|
421
|
+
'template',
|
|
422
|
+
'dashboard',
|
|
423
|
+
'activity',
|
|
424
|
+
'tool',
|
|
425
|
+
];
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* A single platform artifact the App Solution Architect requires the build to create.
|
|
429
|
+
* `id` is the app-owned in-code id the implementation must register and reference
|
|
430
|
+
* (e.g. `app:<name>:main:extract-item` for interactions/agents, `app:<name>:<type>` for
|
|
431
|
+
* types, `app:<name>:<process>` for processes).
|
|
432
|
+
*/
|
|
433
|
+
/**
|
|
434
|
+
* Build progress for one artifact, maintained by the developer agent as a living checklist:
|
|
435
|
+
* - `pending` — defined by the architect, not yet built.
|
|
436
|
+
* - `built` — registered in the package, not yet successfully exercised.
|
|
437
|
+
* - `done` — built AND successfully exercised against real data.
|
|
438
|
+
* This is the agent's self-reported claim for tracking/handoff; the capability gate verifies
|
|
439
|
+
* the truth independently via package registration + run/data telemetry and does not trust it.
|
|
440
|
+
*/
|
|
441
|
+
export type AppArtifactStatus = 'pending' | 'built' | 'done';
|
|
442
|
+
|
|
443
|
+
export const APP_ARTIFACT_STATUSES: readonly AppArtifactStatus[] = ['pending', 'built', 'done'];
|
|
444
|
+
|
|
445
|
+
export interface AppPlannedArtifact {
|
|
446
|
+
/** App-owned in-code id the build must register and reference. */
|
|
447
|
+
id: string;
|
|
448
|
+
type: AppArtifactType;
|
|
449
|
+
/** Short human label. */
|
|
450
|
+
name?: string;
|
|
451
|
+
/** Why this artifact exists / what it does — carried into the build checklist. */
|
|
452
|
+
purpose?: string;
|
|
453
|
+
/**
|
|
454
|
+
* When false, the artifact is planned but optional: the capability gate warns rather
|
|
455
|
+
* than blocks if it is missing or never exercised. Defaults to required (true).
|
|
456
|
+
*/
|
|
457
|
+
required?: boolean;
|
|
458
|
+
/** Build progress, updated by the developer agent. Defaults to `pending`. */
|
|
459
|
+
status?: AppArtifactStatus;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Structured result the App Solution Architect emits alongside its prose artifacts — the
|
|
464
|
+
* machine-readable contract for the build. The implementation MUST create and successfully
|
|
465
|
+
* exercise every required artifact before preview/publish. Persisted into the app repo as
|
|
466
|
+
* {@link APP_CAPABILITY_MANIFEST_PATH} so it survives across runs and the publish-time
|
|
467
|
+
* capability gate can verify against it deterministically. If the builder finds the plan
|
|
468
|
+
* wrong or insufficient, the orchestrator relaunches the architect to revise the manifest;
|
|
469
|
+
* the gate always checks against the latest committed copy.
|
|
470
|
+
*/
|
|
471
|
+
export interface AppCapabilityManifest {
|
|
472
|
+
/** Artifact-storage ref to the prose architecture spec (e.g. the architecture `.md`). */
|
|
473
|
+
spec_artifact: string;
|
|
474
|
+
/** Platform artifacts the build must create. */
|
|
475
|
+
artifacts: AppPlannedArtifact[];
|
|
476
|
+
/**
|
|
477
|
+
* Monotonic revision, starting at 1, bumped each time the architect evolves the manifest for
|
|
478
|
+
* the SAME app on a later iteration (read the committed manifest, preserve untouched artifacts,
|
|
479
|
+
* add/modify/remove, then bump). Lets downstream agents tell which contract they are building to.
|
|
480
|
+
*/
|
|
481
|
+
revision?: number;
|
|
482
|
+
/**
|
|
483
|
+
* Newest-first change notes, one entry per revision (what was added/modified/removed and why).
|
|
484
|
+
* How manifest changes are communicated to downstream agents across iterations.
|
|
485
|
+
*/
|
|
486
|
+
changelog?: string[];
|
|
487
|
+
/** Optional free-form notes the architect wants the builder to honor. */
|
|
488
|
+
notes?: string;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/** Repo-relative path the capability manifest is committed to, read by the publish gate. */
|
|
492
|
+
export const APP_CAPABILITY_MANIFEST_PATH = 'docs/app-capability-manifest.json';
|
|
493
|
+
|
|
373
494
|
export type AppAvailableIn = 'app_portal' | 'composite_app';
|
|
495
|
+
|
|
496
|
+
export type AppVersionKind = 'design' | 'preview' | 'published';
|
|
497
|
+
export type AppVersionState = 'ready' | 'failed' | 'expired';
|
|
498
|
+
export type AppVersionTarget = 'static' | 'service';
|
|
499
|
+
export type AppVersionGitRefType = 'branch' | 'tag' | 'commit' | 'detached';
|
|
500
|
+
export type AppBuildIntent = 'preview' | 'publish';
|
|
501
|
+
export type AppBuildTrigger = 'ui' | 'git_push' | 'agent' | 'api';
|
|
502
|
+
|
|
503
|
+
export interface AppVersionStorage {
|
|
504
|
+
tenant_id?: string;
|
|
505
|
+
app_prefix?: string;
|
|
506
|
+
artifacts_prefix?: string;
|
|
507
|
+
source_archive?: string;
|
|
508
|
+
source_git?: AppVersionGitSource;
|
|
509
|
+
build_prefix?: string;
|
|
510
|
+
manifest_path?: string;
|
|
511
|
+
service_archive?: string;
|
|
512
|
+
live_metadata_path?: string;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
export interface AppVersionGitSource {
|
|
516
|
+
url?: string;
|
|
517
|
+
remote?: string;
|
|
518
|
+
/**
|
|
519
|
+
* The source ref that should be used to reproduce this version. For immutable
|
|
520
|
+
* app versions this is normally the tag created during preview/publish.
|
|
521
|
+
*/
|
|
522
|
+
ref?: string;
|
|
523
|
+
ref_type?: AppVersionGitRefType;
|
|
524
|
+
branch?: string;
|
|
525
|
+
tag?: string;
|
|
526
|
+
commit?: string;
|
|
527
|
+
dirty?: boolean;
|
|
528
|
+
pushed?: boolean;
|
|
529
|
+
push_warning?: string;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
export interface AppVersionUrls {
|
|
533
|
+
live_url?: string;
|
|
534
|
+
app_url?: string;
|
|
535
|
+
plugin_url?: string;
|
|
536
|
+
package_url?: string;
|
|
537
|
+
internal_preview_url?: string;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
export interface AppVersionRecord {
|
|
541
|
+
id: string;
|
|
542
|
+
account: string;
|
|
543
|
+
project: string;
|
|
544
|
+
app?: string;
|
|
545
|
+
app_id: string;
|
|
546
|
+
app_name: string;
|
|
547
|
+
version_id: string;
|
|
548
|
+
kind: AppVersionKind;
|
|
549
|
+
state: AppVersionState;
|
|
550
|
+
active?: boolean;
|
|
551
|
+
target?: AppVersionTarget;
|
|
552
|
+
agent_run_id?: string;
|
|
553
|
+
sandbox_id?: string;
|
|
554
|
+
title?: string;
|
|
555
|
+
description?: string;
|
|
556
|
+
storage?: AppVersionStorage;
|
|
557
|
+
urls?: AppVersionUrls;
|
|
558
|
+
manifest?: Record<string, unknown>;
|
|
559
|
+
files?: string[];
|
|
560
|
+
file_count?: number;
|
|
561
|
+
source_file_count?: number;
|
|
562
|
+
screenshot_artifact?: string;
|
|
563
|
+
checks?: string[];
|
|
564
|
+
created_by?: string;
|
|
565
|
+
created_at: string;
|
|
566
|
+
updated_at: string;
|
|
567
|
+
published_at?: string;
|
|
568
|
+
checked_at?: string;
|
|
569
|
+
expires_at?: string;
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
export interface UpsertAppVersionRequest {
|
|
573
|
+
app?: string;
|
|
574
|
+
app_id: string;
|
|
575
|
+
app_name?: string;
|
|
576
|
+
version_id: string;
|
|
577
|
+
kind: AppVersionKind;
|
|
578
|
+
state?: AppVersionState;
|
|
579
|
+
active?: boolean;
|
|
580
|
+
target?: AppVersionTarget;
|
|
581
|
+
agent_run_id?: string;
|
|
582
|
+
sandbox_id?: string;
|
|
583
|
+
title?: string;
|
|
584
|
+
description?: string;
|
|
585
|
+
storage?: AppVersionStorage;
|
|
586
|
+
urls?: AppVersionUrls;
|
|
587
|
+
manifest?: Record<string, unknown>;
|
|
588
|
+
files?: string[];
|
|
589
|
+
file_count?: number;
|
|
590
|
+
source_file_count?: number;
|
|
591
|
+
screenshot_artifact?: string;
|
|
592
|
+
checks?: string[];
|
|
593
|
+
published_at?: string;
|
|
594
|
+
checked_at?: string;
|
|
595
|
+
expires_at?: string;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
export interface AppVersionListQuery {
|
|
599
|
+
app_id?: string;
|
|
600
|
+
kind?: AppVersionKind;
|
|
601
|
+
include_expired?: boolean;
|
|
602
|
+
limit?: number;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
export interface ActivateAppVersionResponse {
|
|
606
|
+
version: AppVersionRecord;
|
|
607
|
+
app?: AppManifest;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
export interface StartAppBuildRequest {
|
|
611
|
+
/**
|
|
612
|
+
* Source branch, tag, or commit to build. When omitted, the app source
|
|
613
|
+
* configuration chooses the dev branch for previews and production branch
|
|
614
|
+
* for publishes.
|
|
615
|
+
*/
|
|
616
|
+
source_ref?: string;
|
|
617
|
+
source_ref_type?: Extract<AppVersionGitRefType, 'branch' | 'tag' | 'commit'>;
|
|
618
|
+
intent?: AppBuildIntent;
|
|
619
|
+
trigger?: AppBuildTrigger;
|
|
620
|
+
target?: AppVersionTarget;
|
|
621
|
+
activate?: boolean;
|
|
622
|
+
title?: string;
|
|
623
|
+
description?: string;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
export interface StartAppBuildResponse {
|
|
627
|
+
workflow_id: string;
|
|
628
|
+
run_id: string;
|
|
629
|
+
app_id: string;
|
|
630
|
+
intent: AppBuildIntent;
|
|
631
|
+
source_ref?: string;
|
|
632
|
+
source_ref_type?: Extract<AppVersionGitRefType, 'branch' | 'tag' | 'commit'>;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
export interface AppBuildWorkflowInput extends StartAppBuildRequest {
|
|
636
|
+
app_id: string;
|
|
637
|
+
app_record_id?: string;
|
|
638
|
+
app_title?: string;
|
|
639
|
+
app_description?: string;
|
|
640
|
+
source_git_url?: string;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
export interface AppBuildWorkflowResult {
|
|
644
|
+
app_id: string;
|
|
645
|
+
version_id: string;
|
|
646
|
+
kind: Extract<AppVersionKind, 'preview' | 'published'>;
|
|
647
|
+
state: AppVersionState;
|
|
648
|
+
source_git?: AppVersionGitSource;
|
|
649
|
+
urls?: AppVersionUrls;
|
|
650
|
+
file_count?: number;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
export type AppBuildProgressStatus = 'queued' | 'resolving' | 'building' | 'completed' | 'failed';
|
|
654
|
+
|
|
655
|
+
export interface AppBuildProgress {
|
|
656
|
+
status: AppBuildProgressStatus;
|
|
657
|
+
step: string;
|
|
658
|
+
app_id?: string;
|
|
659
|
+
version_id?: string;
|
|
660
|
+
intent?: AppBuildIntent;
|
|
661
|
+
source_ref?: string;
|
|
662
|
+
source_ref_type?: Extract<AppVersionGitRefType, 'branch' | 'tag' | 'commit'>;
|
|
663
|
+
source_commit?: string;
|
|
664
|
+
file_count?: number;
|
|
665
|
+
app_url?: string;
|
|
666
|
+
error?: string;
|
|
667
|
+
updated_at: string;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* Access control policy for an app installation.
|
|
672
|
+
* Declares which access surfaces are gated by per-user ACEs.
|
|
673
|
+
*
|
|
674
|
+
* - 'all' (default): every surface (UI portal, tool/endpoint use, contributions) requires
|
|
675
|
+
* an explicit app_member ACE — the historical behavior.
|
|
676
|
+
* - 'ui': UI portal visibility requires an ACE, but tool/endpoint use and contributions
|
|
677
|
+
* are open to anyone in the project.
|
|
678
|
+
* - 'none': fully open within the project — no ACE required for any surface.
|
|
679
|
+
*
|
|
680
|
+
* Declared on the manifest as the app's default. May be overridden per-installation.
|
|
681
|
+
*/
|
|
682
|
+
export type AppAccessControl = 'all' | 'ui' | 'none';
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* Resolve the effective access_control policy for an installed app:
|
|
686
|
+
* installation override wins, then manifest default, then `'all'`.
|
|
687
|
+
*
|
|
688
|
+
* Shared by the STS (JWT generation), the studio-server (validation), and the UI (badge display)
|
|
689
|
+
* so the resolution rule lives in exactly one place. Named `effectiveAppAccessControl` (not just
|
|
690
|
+
* `effectiveAccessControl`) because exports from `@vertesia/common` are flattened — the broader
|
|
691
|
+
* name would risk colliding with other access-control families added later.
|
|
692
|
+
*/
|
|
693
|
+
export function effectiveAppAccessControl(
|
|
694
|
+
installation: { access_control?: AppAccessControl } | null | undefined,
|
|
695
|
+
manifest: { access_control?: AppAccessControl } | null | undefined,
|
|
696
|
+
): AppAccessControl {
|
|
697
|
+
return installation?.access_control ?? manifest?.access_control ?? 'all';
|
|
698
|
+
}
|
|
699
|
+
|
|
374
700
|
export interface AppManifestData {
|
|
375
701
|
/**
|
|
376
702
|
* The name of the app, used as the id in the system.
|
|
@@ -384,7 +710,7 @@ export interface AppManifestData {
|
|
|
384
710
|
* - "private": visible only to the owning account
|
|
385
711
|
* - "vertesia": visible only to Vertesia team members (any project)
|
|
386
712
|
*/
|
|
387
|
-
visibility:
|
|
713
|
+
visibility: 'public' | 'private' | 'vertesia';
|
|
388
714
|
|
|
389
715
|
title: string;
|
|
390
716
|
description: string;
|
|
@@ -401,19 +727,31 @@ export interface AppManifestData {
|
|
|
401
727
|
*/
|
|
402
728
|
color?: string;
|
|
403
729
|
|
|
404
|
-
|
|
730
|
+
/**
|
|
731
|
+
* Optional preview screenshot for the app-management UI, captured by the builder during a
|
|
732
|
+
* build/QA run. Resolved client-side from the owning agent run's artifact storage, so it
|
|
733
|
+
* carries both the run id and the artifact path.
|
|
734
|
+
*/
|
|
735
|
+
preview_screenshot?: {
|
|
736
|
+
/** Agent run id whose artifact storage holds the screenshot. */
|
|
737
|
+
agent_run_id: string;
|
|
738
|
+
/** Artifact path within that storage, e.g. "preview-checks/app-preview-<ts>.png". */
|
|
739
|
+
artifact: string;
|
|
740
|
+
};
|
|
741
|
+
|
|
742
|
+
status: 'beta' | 'stable' | 'deprecated';
|
|
405
743
|
|
|
406
744
|
/**
|
|
407
|
-
* The UI configuration of the app. If not specified and the app "ui" is in the app capabilities
|
|
745
|
+
* The UI configuration of the app. If not specified and the app "ui" is in the app capabilities
|
|
408
746
|
* then the ui configuration will be fetched from the endpoint property.
|
|
409
747
|
*/
|
|
410
|
-
ui?: AppUIConfig
|
|
748
|
+
ui?: AppUIConfig;
|
|
411
749
|
|
|
412
750
|
/**
|
|
413
751
|
* A list of tool collections endpoints to be used by this app.
|
|
414
752
|
* Prefer using endpoint over tool_collections.
|
|
415
753
|
*/
|
|
416
|
-
tool_collections?:
|
|
754
|
+
tool_collections?: ToolCollectionObject[];
|
|
417
755
|
|
|
418
756
|
/**
|
|
419
757
|
* Named OAuth providers shared across multiple MCP tool collections.
|
|
@@ -429,7 +767,7 @@ export interface AppManifestData {
|
|
|
429
767
|
* The URL must provide 2 endpoints:
|
|
430
768
|
* 1. GET URL - must return a JSON array with the list of interactions (as AppInteractionRef[])
|
|
431
769
|
* 2. GET URL/{interaction_name} - must return the full interaction definition for the specified interaction.
|
|
432
|
-
* This feature is for advanced composition of interactions. Prefer using endpoint.
|
|
770
|
+
* This feature is for advanced composition of interactions. Prefer using endpoint.
|
|
433
771
|
*/
|
|
434
772
|
interactions?: string;
|
|
435
773
|
|
|
@@ -456,11 +794,14 @@ export interface AppManifestData {
|
|
|
456
794
|
* - tools
|
|
457
795
|
* - interactions
|
|
458
796
|
* - types
|
|
797
|
+
* - processes
|
|
798
|
+
* - templates
|
|
799
|
+
* - dashboards
|
|
459
800
|
* - settings
|
|
460
801
|
* - all (the default if no scope is provided)
|
|
461
802
|
* You can also use comma-separated values to combine scopes (e.g. "ui,tools").
|
|
462
|
-
*
|
|
463
|
-
* Example:
|
|
803
|
+
*
|
|
804
|
+
* Example:
|
|
464
805
|
* - ?scope=ui,tools - returns only the UI configuration
|
|
465
806
|
*/
|
|
466
807
|
endpoint?: string;
|
|
@@ -472,41 +813,223 @@ export interface AppManifestData {
|
|
|
472
813
|
* Only dev environment names are allowed as keys (starting with "desktop-" or "dev-").
|
|
473
814
|
*/
|
|
474
815
|
endpoint_overrides?: Record<string, string>;
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* Optional app version string (e.g. "1.0.0") — informational.
|
|
819
|
+
*/
|
|
820
|
+
version?: string;
|
|
821
|
+
|
|
822
|
+
/**
|
|
823
|
+
* Source repository configuration for apps generated and maintained through
|
|
824
|
+
* AppGen. Branches are mutable deployment lanes; immutable app versions
|
|
825
|
+
* record their exact source tag/commit in AppVersionRecord.storage.source_git.
|
|
826
|
+
*/
|
|
827
|
+
source?: AppSourceConfig;
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* Free-form tags used for classification and filtering. Platform apps
|
|
831
|
+
* carry `"system"` so UIs can skip install/uninstall/manage-permission
|
|
832
|
+
* controls that don't apply to synthetic installations.
|
|
833
|
+
*/
|
|
834
|
+
tags?: string[];
|
|
835
|
+
|
|
836
|
+
/**
|
|
837
|
+
* Access control policy for the app. Defaults to 'all' (ACE-gated everywhere)
|
|
838
|
+
* when undefined. See {@link AppAccessControl} for semantics. May be overridden
|
|
839
|
+
* on the AppInstallation.
|
|
840
|
+
*/
|
|
841
|
+
access_control?: AppAccessControl;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
export interface AppGitSourceConfig {
|
|
845
|
+
url?: string;
|
|
846
|
+
default_branch?: string;
|
|
847
|
+
production_branch?: string;
|
|
848
|
+
development_branch?: string;
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
export interface AppSourceConfig {
|
|
852
|
+
kind: 'git';
|
|
853
|
+
git?: AppGitSourceConfig;
|
|
475
854
|
}
|
|
476
855
|
|
|
856
|
+
/**
|
|
857
|
+
* Reserved deployment environment names that may never be used as endpoint
|
|
858
|
+
* override keys. Reserving them prevents a manifest from hijacking auto-resolution
|
|
859
|
+
* on a shared production studio-server (whose `Env.environment` is one of these).
|
|
860
|
+
*/
|
|
861
|
+
const RESERVED_ENDPOINT_OVERRIDE_ENVS = new Set(['production', 'preview', 'staging']);
|
|
862
|
+
|
|
477
863
|
/**
|
|
478
864
|
* Returns true if the given environment name is allowed as an endpoint override key.
|
|
479
|
-
*
|
|
865
|
+
* Any non-empty name is accepted except the reserved shared-deployment names.
|
|
480
866
|
*/
|
|
481
867
|
export function isValidEndpointOverrideEnv(envName: string): boolean {
|
|
482
|
-
|
|
868
|
+
if (!envName) return false;
|
|
869
|
+
return !RESERVED_ENDPOINT_OVERRIDE_ENVS.has(envName.toLowerCase());
|
|
483
870
|
}
|
|
484
871
|
|
|
485
872
|
/**
|
|
486
|
-
*
|
|
487
|
-
*
|
|
873
|
+
* Deployment-time URL endpoints that can be referenced in app manifest URLs
|
|
874
|
+
* via `{{key}}` placeholders. The caller (typically studio-server) supplies
|
|
875
|
+
* these from environment config so that system apps can ship a single manifest
|
|
876
|
+
* with endpoints like `{{studio}}/api/package` that resolve per deployment.
|
|
877
|
+
*/
|
|
878
|
+
export interface Endpoints {
|
|
879
|
+
/** The Studio API (studio-server) base URL */
|
|
880
|
+
studio?: string;
|
|
881
|
+
/** The Store API (zeno-server) base URL */
|
|
882
|
+
store?: string;
|
|
883
|
+
/** The token server base URL */
|
|
884
|
+
token?: string;
|
|
885
|
+
/** The browser-facing Studio UI (composable-ui) base URL */
|
|
886
|
+
ui?: string;
|
|
887
|
+
/** The Smart HTTP app source git server base URL */
|
|
888
|
+
git?: string;
|
|
889
|
+
/** The appgen app-gateway base URL (serves published app bundles + their `/api` runtime). */
|
|
890
|
+
gateway?: string;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* Substitutes `{{key}}` placeholders in a URL with the matching endpoint.
|
|
895
|
+
* Unknown placeholders are left untouched (so failures surface as fetch errors
|
|
896
|
+
* with the unresolved placeholder visible, rather than silently pointing nowhere).
|
|
897
|
+
* Trailing slashes on replacement values are stripped to avoid `//api/...` joins.
|
|
898
|
+
*/
|
|
899
|
+
export function substituteEndpoints(url: string, endpoints?: Endpoints): string {
|
|
900
|
+
if (!url || !endpoints) return url;
|
|
901
|
+
return url.replace(/\{\{\s*(\w+)\s*\}\}/g, (match, key: string) => {
|
|
902
|
+
const value = (endpoints as Record<string, string | undefined>)[key];
|
|
903
|
+
if (typeof value !== 'string' || !value) return match;
|
|
904
|
+
return trimTrailingSlashes(value);
|
|
905
|
+
});
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
function trimTrailingSlashes(value: string): string {
|
|
909
|
+
let end = value.length;
|
|
910
|
+
while (end > 0 && value[end - 1] === '/') {
|
|
911
|
+
end--;
|
|
912
|
+
}
|
|
913
|
+
return end === value.length ? value : value.slice(0, end);
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
/**
|
|
917
|
+
* Resolves the effective endpoint for an app.
|
|
918
|
+
*
|
|
919
|
+
* Order of resolution:
|
|
920
|
+
* 1. If `requestedOverride` matches an `endpoint_overrides` key, use that URL
|
|
921
|
+
* (caller must verify the user is allowed to use the override).
|
|
922
|
+
* 2. Else if `envName` matches an `endpoint_overrides` key, use that URL
|
|
923
|
+
* (auto-resolution from the studio-server's deployment env).
|
|
924
|
+
* 3. Otherwise use the main `endpoint`.
|
|
925
|
+
* 4. Apply `{{var}}` substitution using `vars`.
|
|
488
926
|
*/
|
|
489
927
|
export function resolveAppEndpoint(
|
|
490
928
|
manifest: Pick<AppManifestData, 'endpoint' | 'endpoint_overrides'>,
|
|
491
|
-
envName?: string
|
|
929
|
+
envName?: string,
|
|
930
|
+
vars?: Endpoints,
|
|
931
|
+
requestedOverride?: string,
|
|
492
932
|
): string | undefined {
|
|
493
|
-
|
|
494
|
-
|
|
933
|
+
let raw: string | undefined;
|
|
934
|
+
if (
|
|
935
|
+
requestedOverride &&
|
|
936
|
+
manifest.endpoint_overrides?.[requestedOverride] &&
|
|
937
|
+
isValidEndpointOverrideEnv(requestedOverride)
|
|
938
|
+
) {
|
|
939
|
+
raw = manifest.endpoint_overrides[requestedOverride];
|
|
940
|
+
} else if (envName && manifest.endpoint_overrides?.[envName] && isValidEndpointOverrideEnv(envName)) {
|
|
941
|
+
raw = manifest.endpoint_overrides[envName];
|
|
942
|
+
} else {
|
|
943
|
+
raw = manifest.endpoint;
|
|
944
|
+
}
|
|
945
|
+
return raw ? substituteEndpoints(raw, vars) : raw;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
/**
|
|
949
|
+
* Resolves all URL placeholders in a manifest in place (both `endpoint` and
|
|
950
|
+
* `tool_collections[].url`). Intended for server-side serialization — clients and
|
|
951
|
+
* downstream workers receive already-substituted URLs so they don't need to know
|
|
952
|
+
* about deployment-time vars.
|
|
953
|
+
*
|
|
954
|
+
* Mutates the manifest rather than returning a copy so it works cleanly with
|
|
955
|
+
* Mongoose populated subdocs.
|
|
956
|
+
*/
|
|
957
|
+
export function resolveManifestUrls(
|
|
958
|
+
manifest: Partial<AppManifestData> | null | undefined,
|
|
959
|
+
envName?: string,
|
|
960
|
+
vars?: Endpoints,
|
|
961
|
+
requestedOverride?: string,
|
|
962
|
+
): void {
|
|
963
|
+
if (!manifest) return;
|
|
964
|
+
|
|
965
|
+
if (manifest.endpoint) {
|
|
966
|
+
const resolved = resolveAppEndpoint(manifest, envName, vars, requestedOverride);
|
|
967
|
+
if (resolved && resolved !== manifest.endpoint) {
|
|
968
|
+
manifest.endpoint = resolved;
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
const toolCollections = manifest.tool_collections as ToolCollectionObject[] | undefined;
|
|
973
|
+
if (toolCollections && Array.isArray(toolCollections)) {
|
|
974
|
+
for (let i = 0; i < toolCollections.length; i++) {
|
|
975
|
+
const item = toolCollections[i];
|
|
976
|
+
if (item && typeof item === 'object' && item.url) {
|
|
977
|
+
const sub = substituteEndpoints(item.url, vars);
|
|
978
|
+
if (sub !== item.url) item.url = sub;
|
|
979
|
+
}
|
|
980
|
+
}
|
|
495
981
|
}
|
|
496
|
-
return manifest.endpoint;
|
|
497
982
|
}
|
|
498
983
|
|
|
499
|
-
export type AppPackageScope =
|
|
984
|
+
export type AppPackageScope =
|
|
985
|
+
| 'ui'
|
|
986
|
+
| 'tools'
|
|
987
|
+
| 'interactions'
|
|
988
|
+
| 'types'
|
|
989
|
+
| 'processes'
|
|
990
|
+
| 'templates'
|
|
991
|
+
| 'dashboards'
|
|
992
|
+
| 'settings'
|
|
993
|
+
| 'widgets'
|
|
994
|
+
| 'activities'
|
|
995
|
+
| 'all';
|
|
996
|
+
|
|
997
|
+
/**
|
|
998
|
+
* Canonical runtime list of {@link AppPackageScope} — every package scope, including the
|
|
999
|
+
* catch-all `'all'`. Co-located with the type so TypeScript rejects drift. Consumers (the
|
|
1000
|
+
* /package?scope= parser, the inspection report) must use this rather than re-listing.
|
|
1001
|
+
*/
|
|
1002
|
+
export const APP_PACKAGE_SCOPES: readonly AppPackageScope[] = [
|
|
1003
|
+
'ui',
|
|
1004
|
+
'tools',
|
|
1005
|
+
'interactions',
|
|
1006
|
+
'types',
|
|
1007
|
+
'processes',
|
|
1008
|
+
'templates',
|
|
1009
|
+
'dashboards',
|
|
1010
|
+
'settings',
|
|
1011
|
+
'widgets',
|
|
1012
|
+
'activities',
|
|
1013
|
+
'all',
|
|
1014
|
+
];
|
|
500
1015
|
export interface AppPackage {
|
|
501
1016
|
/**
|
|
502
1017
|
* The UI configuration of the app
|
|
503
1018
|
*/
|
|
504
|
-
ui?: AppUIConfig
|
|
1019
|
+
ui?: AppUIConfig;
|
|
505
1020
|
|
|
506
1021
|
/**
|
|
507
1022
|
* A list of tools exposed by the app.
|
|
508
1023
|
*/
|
|
509
|
-
tools?: AgentToolDefinition[]
|
|
1024
|
+
tools?: AgentToolDefinition[];
|
|
1025
|
+
|
|
1026
|
+
/**
|
|
1027
|
+
* A list of skills (`learn_*` tools) exposed by the app. Kept separate from
|
|
1028
|
+
* `tools` so clients can render them distinctly — consumers that don't care
|
|
1029
|
+
* (e.g. the worker building a combined tool registry) should concatenate
|
|
1030
|
+
* the two lists.
|
|
1031
|
+
*/
|
|
1032
|
+
skills?: AgentToolDefinition[];
|
|
510
1033
|
|
|
511
1034
|
/**
|
|
512
1035
|
* A list of interactions exposed by the app
|
|
@@ -518,11 +1041,21 @@ export interface AppPackage {
|
|
|
518
1041
|
*/
|
|
519
1042
|
types?: InCodeTypeDefinition[];
|
|
520
1043
|
|
|
1044
|
+
/**
|
|
1045
|
+
* A list of process definitions exposed by the app.
|
|
1046
|
+
*/
|
|
1047
|
+
processes?: InCodeProcessDefinition[];
|
|
1048
|
+
|
|
521
1049
|
/**
|
|
522
1050
|
* Templates provided by the app.
|
|
523
1051
|
*/
|
|
524
1052
|
templates?: RenderingTemplateDefinitionRef[];
|
|
525
1053
|
|
|
1054
|
+
/**
|
|
1055
|
+
* Dashboards provided by the app.
|
|
1056
|
+
*/
|
|
1057
|
+
dashboards?: AppDashboardDefinition[];
|
|
1058
|
+
|
|
526
1059
|
/**
|
|
527
1060
|
* Widgets provided by the app.
|
|
528
1061
|
*/
|
|
@@ -541,6 +1074,61 @@ export interface AppPackage {
|
|
|
541
1074
|
settings_schema?: JSONSchema;
|
|
542
1075
|
}
|
|
543
1076
|
|
|
1077
|
+
/**
|
|
1078
|
+
* A single diagnostic produced while inspecting an app's registration state.
|
|
1079
|
+
*/
|
|
1080
|
+
export interface AppInspectionIssue {
|
|
1081
|
+
severity: 'error' | 'warning';
|
|
1082
|
+
/** The capability this issue relates to, when applicable (e.g. 'types'). */
|
|
1083
|
+
capability?: AppPackageScope;
|
|
1084
|
+
/** Stable machine code, e.g. 'capability_declared_but_empty', 'endpoint_unreachable', 'not_installed'. */
|
|
1085
|
+
code: string;
|
|
1086
|
+
/** Human-readable explanation, safe to surface to the model and the UI. */
|
|
1087
|
+
message: string;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
/**
|
|
1091
|
+
* Per-capability report of what an app's published package actually exposes,
|
|
1092
|
+
* compared against what its manifest declares.
|
|
1093
|
+
*/
|
|
1094
|
+
export interface AppInspectionCapabilityReport {
|
|
1095
|
+
capability: AppPackageScope;
|
|
1096
|
+
/** True when the manifest's `capabilities` array declares this capability. */
|
|
1097
|
+
declared: boolean;
|
|
1098
|
+
/** The local ids the published package actually serves for this capability. */
|
|
1099
|
+
exposed_ids: string[];
|
|
1100
|
+
/** Convenience count of `exposed_ids`. */
|
|
1101
|
+
exposed_count: number;
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
/**
|
|
1105
|
+
* Result of inspecting an app's registration: the resolved manifest state, what
|
|
1106
|
+
* the published package actually exposes per capability, and diagnostics. This
|
|
1107
|
+
* is the ground truth used by the `app_inspect_registration` agent tool and the
|
|
1108
|
+
* Build › App inspection UI to verify what is registered vs declared, instead of
|
|
1109
|
+
* inferring it from failed object/import calls.
|
|
1110
|
+
*/
|
|
1111
|
+
export interface AppInspectionResult {
|
|
1112
|
+
app_id: string;
|
|
1113
|
+
name: string;
|
|
1114
|
+
version?: string;
|
|
1115
|
+
/** The resolved package endpoint for the current environment, if any. */
|
|
1116
|
+
endpoint?: string;
|
|
1117
|
+
/** True when the package endpoint responded to the capability probe. */
|
|
1118
|
+
endpoint_reachable: boolean;
|
|
1119
|
+
/** True when the app is installed in the current project. */
|
|
1120
|
+
installed: boolean;
|
|
1121
|
+
access_control?: string;
|
|
1122
|
+
/** The capabilities declared on the manifest. */
|
|
1123
|
+
capabilities: AppPackageScope[];
|
|
1124
|
+
/** What the published package exposes, per capability. */
|
|
1125
|
+
package: AppInspectionCapabilityReport[];
|
|
1126
|
+
/** Diagnostics — errors and warnings about the registration state. */
|
|
1127
|
+
issues: AppInspectionIssue[];
|
|
1128
|
+
/** Populated when the package probe itself failed (endpoint error/unreachable). */
|
|
1129
|
+
probe_error?: string;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
544
1132
|
export interface AppWidgetInfo {
|
|
545
1133
|
collection: string;
|
|
546
1134
|
skill: string;
|
|
@@ -620,7 +1208,7 @@ export interface AppInstallation {
|
|
|
620
1208
|
id: string;
|
|
621
1209
|
project: string; // the project where the app is installed
|
|
622
1210
|
manifest: string; // the app manifest
|
|
623
|
-
settings?: Record<string,
|
|
1211
|
+
settings?: Record<string, unknown>; // settings for the app installation
|
|
624
1212
|
/**
|
|
625
1213
|
* Admin-managed allowlist of tool names permitted for this installation.
|
|
626
1214
|
* When undefined, all tools from the app are permitted.
|
|
@@ -639,6 +1227,12 @@ export interface AppInstallation {
|
|
|
639
1227
|
* Multiple collections sharing the same provider all resolve to the same OAuth provider.
|
|
640
1228
|
*/
|
|
641
1229
|
provider_bindings?: AppInstallationProviderBinding[];
|
|
1230
|
+
/**
|
|
1231
|
+
* Per-installation override of the manifest's access_control policy.
|
|
1232
|
+
* When set, takes precedence over the manifest value. When undefined, the
|
|
1233
|
+
* manifest value (or 'all' default) applies.
|
|
1234
|
+
*/
|
|
1235
|
+
access_control?: AppAccessControl;
|
|
642
1236
|
created_at: string;
|
|
643
1237
|
updated_at: string;
|
|
644
1238
|
}
|
|
@@ -673,7 +1267,20 @@ export type AppOAuthProviderParams = Record<string, OAuthClientCredentials>;
|
|
|
673
1267
|
|
|
674
1268
|
export interface AppInstallationPayload {
|
|
675
1269
|
app_id: string;
|
|
676
|
-
settings?: Record<string,
|
|
1270
|
+
settings?: Record<string, unknown>;
|
|
1271
|
+
/**
|
|
1272
|
+
* Per-installation override of the manifest's `access_control` policy. When provided, takes precedence
|
|
1273
|
+
* over the manifest default for every access check. Sibling of `settings` — admin-controlled, not
|
|
1274
|
+
* part of the app's own settings JSON.
|
|
1275
|
+
*
|
|
1276
|
+
* Three send-time semantics on update:
|
|
1277
|
+
* - Field omitted entirely from the payload → leave the existing override unchanged.
|
|
1278
|
+
* - Explicit `null` → clear the override, fall back to the manifest default.
|
|
1279
|
+
* - String enum → set the override to that value.
|
|
1280
|
+
*
|
|
1281
|
+
* (On install, the same shape applies; omit or pass `null` to use the manifest default.)
|
|
1282
|
+
*/
|
|
1283
|
+
access_control?: AppAccessControl | null;
|
|
677
1284
|
/**
|
|
678
1285
|
* OAuth credentials for each collection, keyed by collection.id.
|
|
679
1286
|
* Legacy callers may still use collection.name for older manifests.
|
|
@@ -711,7 +1318,7 @@ export interface AppToolCollection {
|
|
|
711
1318
|
/**
|
|
712
1319
|
* the tools provided by this collection
|
|
713
1320
|
*/
|
|
714
|
-
tools: AgentToolDefinition[]
|
|
1321
|
+
tools: AgentToolDefinition[];
|
|
715
1322
|
}
|
|
716
1323
|
|
|
717
1324
|
/**
|
|
@@ -743,7 +1350,7 @@ export interface ProjectToolInfo {
|
|
|
743
1350
|
* The app installation settings.
|
|
744
1351
|
* Only included for agent tokens, not user tokens (security: may contain API keys).
|
|
745
1352
|
*/
|
|
746
|
-
settings?: Record<string,
|
|
1353
|
+
settings?: Record<string, unknown>;
|
|
747
1354
|
}
|
|
748
1355
|
|
|
749
1356
|
/**
|
|
@@ -829,10 +1436,9 @@ export interface CompositeAppLogoOverrides {
|
|
|
829
1436
|
hideFooterLogo?: boolean;
|
|
830
1437
|
}
|
|
831
1438
|
|
|
832
|
-
|
|
833
1439
|
/**
|
|
834
1440
|
* Message banner overrides for the shell header.
|
|
835
|
-
*/
|
|
1441
|
+
*/
|
|
836
1442
|
export type CompositeAppMessageStyle = 'foreground' | 'info' | 'success' | 'attention' | 'destructive';
|
|
837
1443
|
export interface CompositeAppMessageOverrides {
|
|
838
1444
|
/** Message text to display */
|
|
@@ -930,7 +1536,7 @@ export interface CompositeAppNavItemPermissions {
|
|
|
930
1536
|
groupsAllowed?: string[];
|
|
931
1537
|
/** User IDs who can see this item. */
|
|
932
1538
|
usersAllowed?: string[];
|
|
933
|
-
/**
|
|
1539
|
+
/** SystemRoles values (e.g. "developer", "manager") whose holders can see this item. */
|
|
934
1540
|
rolesAllowed?: string[];
|
|
935
1541
|
}
|
|
936
1542
|
|
|
@@ -995,9 +1601,9 @@ export interface CompositeAppHomePlugin {
|
|
|
995
1601
|
*/
|
|
996
1602
|
export interface CompositeAppConfig {
|
|
997
1603
|
/**
|
|
998
|
-
* The unique identifier for this CompositeApp configuration
|
|
1604
|
+
* The unique identifier for this CompositeApp configuration
|
|
999
1605
|
* Undefined if the configuration doesn't exists yet.
|
|
1000
|
-
|
|
1606
|
+
*/
|
|
1001
1607
|
id?: string;
|
|
1002
1608
|
/** The project this CompositeApp belongs to */
|
|
1003
1609
|
project: string;
|
|
@@ -1038,3 +1644,20 @@ export interface ValidateUrlRequest {
|
|
|
1038
1644
|
export interface ValidateUrlResponse {
|
|
1039
1645
|
valid: true;
|
|
1040
1646
|
}
|
|
1647
|
+
|
|
1648
|
+
/**
|
|
1649
|
+
* Result of DELETE /api/v1/apps/:id. With `?confirm=true` the cascade runs and
|
|
1650
|
+
* `deleted: true` is set; without it the endpoint returns a dry-run summary so
|
|
1651
|
+
* the UI can show what would be removed.
|
|
1652
|
+
*/
|
|
1653
|
+
export interface AppDeleteSummary {
|
|
1654
|
+
confirmed: boolean;
|
|
1655
|
+
app_id: string;
|
|
1656
|
+
app_name: string;
|
|
1657
|
+
versions: number;
|
|
1658
|
+
installations: number;
|
|
1659
|
+
storage_prefix: string;
|
|
1660
|
+
git_repo_url?: string;
|
|
1661
|
+
deleted: boolean;
|
|
1662
|
+
warnings: string[];
|
|
1663
|
+
}
|