@kindgi/api 0.0.0-bootstrap.0 → 0.1.1
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 +201 -0
- package/README.md +216 -1
- package/dist/adapter-binding.d.ts +177 -0
- package/dist/adapter-binding.d.ts.map +1 -0
- package/dist/adapter-binding.js +12 -0
- package/dist/adapter-binding.js.map +1 -0
- package/dist/agent-binding.d.ts +207 -0
- package/dist/agent-binding.d.ts.map +1 -0
- package/dist/agent-binding.js +4 -0
- package/dist/agent-binding.js.map +1 -0
- package/dist/app.d.ts +770 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +397 -0
- package/dist/app.js.map +1 -0
- package/dist/capability-binding.d.ts +76 -0
- package/dist/capability-binding.d.ts.map +1 -0
- package/dist/capability-binding.js +4 -0
- package/dist/capability-binding.js.map +1 -0
- package/dist/cost-binding.d.ts +175 -0
- package/dist/cost-binding.d.ts.map +1 -0
- package/dist/cost-binding.js +13 -0
- package/dist/cost-binding.js.map +1 -0
- package/dist/deployment-binding.d.ts +201 -0
- package/dist/deployment-binding.d.ts.map +1 -0
- package/dist/deployment-binding.js +4 -0
- package/dist/deployment-binding.js.map +1 -0
- package/dist/env-binding.d.ts +132 -0
- package/dist/env-binding.d.ts.map +1 -0
- package/dist/env-binding.js +4 -0
- package/dist/env-binding.js.map +1 -0
- package/dist/errors.d.ts +37 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +268 -0
- package/dist/errors.js.map +1 -0
- package/dist/eval-run-binding.d.ts +196 -0
- package/dist/eval-run-binding.d.ts.map +1 -0
- package/dist/eval-run-binding.js +16 -0
- package/dist/eval-run-binding.js.map +1 -0
- package/dist/eval-run-dispatcher.d.ts +131 -0
- package/dist/eval-run-dispatcher.d.ts.map +1 -0
- package/dist/eval-run-dispatcher.js +368 -0
- package/dist/eval-run-dispatcher.js.map +1 -0
- package/dist/eval-suite-binding.d.ts +227 -0
- package/dist/eval-suite-binding.d.ts.map +1 -0
- package/dist/eval-suite-binding.js +24 -0
- package/dist/eval-suite-binding.js.map +1 -0
- package/dist/event-bus-binding.d.ts +107 -0
- package/dist/event-bus-binding.d.ts.map +1 -0
- package/dist/event-bus-binding.js +5 -0
- package/dist/event-bus-binding.js.map +1 -0
- package/dist/flow-binding.d.ts +194 -0
- package/dist/flow-binding.d.ts.map +1 -0
- package/dist/flow-binding.js +4 -0
- package/dist/flow-binding.js.map +1 -0
- package/dist/guardrail-binding.d.ts +138 -0
- package/dist/guardrail-binding.d.ts.map +1 -0
- package/dist/guardrail-binding.js +4 -0
- package/dist/guardrail-binding.js.map +1 -0
- package/dist/handler-binding.d.ts +126 -0
- package/dist/handler-binding.d.ts.map +1 -0
- package/dist/handler-binding.js +4 -0
- package/dist/handler-binding.js.map +1 -0
- package/dist/hitl-binding.d.ts +115 -0
- package/dist/hitl-binding.d.ts.map +1 -0
- package/dist/hitl-binding.js +4 -0
- package/dist/hitl-binding.js.map +1 -0
- package/dist/identity-directory-binding.d.ts +116 -0
- package/dist/identity-directory-binding.d.ts.map +1 -0
- package/dist/identity-directory-binding.js +4 -0
- package/dist/identity-directory-binding.js.map +1 -0
- package/dist/identity-provider-binding.d.ts +184 -0
- package/dist/identity-provider-binding.d.ts.map +1 -0
- package/dist/identity-provider-binding.js +4 -0
- package/dist/identity-provider-binding.js.map +1 -0
- package/dist/image-registry-binding.d.ts +165 -0
- package/dist/image-registry-binding.d.ts.map +1 -0
- package/dist/image-registry-binding.js +4 -0
- package/dist/image-registry-binding.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/key-management-binding.d.ts +101 -0
- package/dist/key-management-binding.d.ts.map +1 -0
- package/dist/key-management-binding.js +4 -0
- package/dist/key-management-binding.js.map +1 -0
- package/dist/mcp-endpoint-binding.d.ts +312 -0
- package/dist/mcp-endpoint-binding.d.ts.map +1 -0
- package/dist/mcp-endpoint-binding.js +12 -0
- package/dist/mcp-endpoint-binding.js.map +1 -0
- package/dist/memory-binding.d.ts +209 -0
- package/dist/memory-binding.d.ts.map +1 -0
- package/dist/memory-binding.js +4 -0
- package/dist/memory-binding.js.map +1 -0
- package/dist/middleware/auth.d.ts +168 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +247 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/authorize.d.ts +26 -0
- package/dist/middleware/authorize.d.ts.map +1 -0
- package/dist/middleware/authorize.js +65 -0
- package/dist/middleware/authorize.js.map +1 -0
- package/dist/middleware/error-mapper.d.ts +20 -0
- package/dist/middleware/error-mapper.d.ts.map +1 -0
- package/dist/middleware/error-mapper.js +34 -0
- package/dist/middleware/error-mapper.js.map +1 -0
- package/dist/middleware/idempotency.d.ts +43 -0
- package/dist/middleware/idempotency.d.ts.map +1 -0
- package/dist/middleware/idempotency.js +118 -0
- package/dist/middleware/idempotency.js.map +1 -0
- package/dist/middleware/principal.d.ts +4 -0
- package/dist/middleware/principal.d.ts.map +1 -0
- package/dist/middleware/principal.js +42 -0
- package/dist/middleware/principal.js.map +1 -0
- package/dist/middleware/public-run-routes.d.ts +16 -0
- package/dist/middleware/public-run-routes.d.ts.map +1 -0
- package/dist/middleware/public-run-routes.js +43 -0
- package/dist/middleware/public-run-routes.js.map +1 -0
- package/dist/middleware/request-id.d.ts +14 -0
- package/dist/middleware/request-id.d.ts.map +1 -0
- package/dist/middleware/request-id.js +24 -0
- package/dist/middleware/request-id.js.map +1 -0
- package/dist/middleware/sigv4-verify.d.ts +64 -0
- package/dist/middleware/sigv4-verify.d.ts.map +1 -0
- package/dist/middleware/sigv4-verify.js +286 -0
- package/dist/middleware/sigv4-verify.js.map +1 -0
- package/dist/middleware/sigv4.d.ts +25 -0
- package/dist/middleware/sigv4.d.ts.map +1 -0
- package/dist/middleware/sigv4.js +120 -0
- package/dist/middleware/sigv4.js.map +1 -0
- package/dist/openapi/generate.d.ts +15 -0
- package/dist/openapi/generate.d.ts.map +1 -0
- package/dist/openapi/generate.js +241 -0
- package/dist/openapi/generate.js.map +1 -0
- package/dist/openapi/operations.d.ts +70 -0
- package/dist/openapi/operations.d.ts.map +1 -0
- package/dist/openapi/operations.js +5050 -0
- package/dist/openapi/operations.js.map +1 -0
- package/dist/openapi/schemas.d.ts +590 -0
- package/dist/openapi/schemas.d.ts.map +1 -0
- package/dist/openapi/schemas.js +5820 -0
- package/dist/openapi/schemas.js.map +1 -0
- package/dist/provenance-binding.d.ts +116 -0
- package/dist/provenance-binding.d.ts.map +1 -0
- package/dist/provenance-binding.js +31 -0
- package/dist/provenance-binding.js.map +1 -0
- package/dist/provider-binding.d.ts +174 -0
- package/dist/provider-binding.d.ts.map +1 -0
- package/dist/provider-binding.js +4 -0
- package/dist/provider-binding.js.map +1 -0
- package/dist/public-run-token.d.ts +97 -0
- package/dist/public-run-token.d.ts.map +1 -0
- package/dist/public-run-token.js +167 -0
- package/dist/public-run-token.js.map +1 -0
- package/dist/retention-binding.d.ts +69 -0
- package/dist/retention-binding.d.ts.map +1 -0
- package/dist/retention-binding.js +4 -0
- package/dist/retention-binding.js.map +1 -0
- package/dist/reviewer-binding.d.ts +84 -0
- package/dist/reviewer-binding.d.ts.map +1 -0
- package/dist/reviewer-binding.js +4 -0
- package/dist/reviewer-binding.js.map +1 -0
- package/dist/rotation-status-store.d.ts +96 -0
- package/dist/rotation-status-store.d.ts.map +1 -0
- package/dist/rotation-status-store.js +106 -0
- package/dist/rotation-status-store.js.map +1 -0
- package/dist/routes/adapters.d.ts +29 -0
- package/dist/routes/adapters.d.ts.map +1 -0
- package/dist/routes/adapters.js +230 -0
- package/dist/routes/adapters.js.map +1 -0
- package/dist/routes/agents.d.ts +17 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +342 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/routes/approvals.d.ts +37 -0
- package/dist/routes/approvals.d.ts.map +1 -0
- package/dist/routes/approvals.js +551 -0
- package/dist/routes/approvals.js.map +1 -0
- package/dist/routes/artifacts.d.ts +25 -0
- package/dist/routes/artifacts.d.ts.map +1 -0
- package/dist/routes/artifacts.js +265 -0
- package/dist/routes/artifacts.js.map +1 -0
- package/dist/routes/audit.d.ts +6 -0
- package/dist/routes/audit.d.ts.map +1 -0
- package/dist/routes/audit.js +162 -0
- package/dist/routes/audit.js.map +1 -0
- package/dist/routes/auth.d.ts +47 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +630 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/capabilities.d.ts +14 -0
- package/dist/routes/capabilities.d.ts.map +1 -0
- package/dist/routes/capabilities.js +62 -0
- package/dist/routes/capabilities.js.map +1 -0
- package/dist/routes/compliance.d.ts +37 -0
- package/dist/routes/compliance.d.ts.map +1 -0
- package/dist/routes/compliance.js +321 -0
- package/dist/routes/compliance.js.map +1 -0
- package/dist/routes/conversations.d.ts +13 -0
- package/dist/routes/conversations.d.ts.map +1 -0
- package/dist/routes/conversations.js +295 -0
- package/dist/routes/conversations.js.map +1 -0
- package/dist/routes/cost.d.ts +24 -0
- package/dist/routes/cost.d.ts.map +1 -0
- package/dist/routes/cost.js +243 -0
- package/dist/routes/cost.js.map +1 -0
- package/dist/routes/deployments.d.ts +122 -0
- package/dist/routes/deployments.d.ts.map +1 -0
- package/dist/routes/deployments.js +1036 -0
- package/dist/routes/deployments.js.map +1 -0
- package/dist/routes/env.d.ts +62 -0
- package/dist/routes/env.d.ts.map +1 -0
- package/dist/routes/env.js +311 -0
- package/dist/routes/env.js.map +1 -0
- package/dist/routes/eval-runs.d.ts +28 -0
- package/dist/routes/eval-runs.d.ts.map +1 -0
- package/dist/routes/eval-runs.js +479 -0
- package/dist/routes/eval-runs.js.map +1 -0
- package/dist/routes/eval-suites.d.ts +24 -0
- package/dist/routes/eval-suites.d.ts.map +1 -0
- package/dist/routes/eval-suites.js +381 -0
- package/dist/routes/eval-suites.js.map +1 -0
- package/dist/routes/event-triggers.d.ts +12 -0
- package/dist/routes/event-triggers.d.ts.map +1 -0
- package/dist/routes/event-triggers.js +218 -0
- package/dist/routes/event-triggers.js.map +1 -0
- package/dist/routes/flows.d.ts +23 -0
- package/dist/routes/flows.d.ts.map +1 -0
- package/dist/routes/flows.js +344 -0
- package/dist/routes/flows.js.map +1 -0
- package/dist/routes/guardrails.d.ts +33 -0
- package/dist/routes/guardrails.d.ts.map +1 -0
- package/dist/routes/guardrails.js +236 -0
- package/dist/routes/guardrails.js.map +1 -0
- package/dist/routes/identity.d.ts +39 -0
- package/dist/routes/identity.d.ts.map +1 -0
- package/dist/routes/identity.js +138 -0
- package/dist/routes/identity.js.map +1 -0
- package/dist/routes/mcp.d.ts +23 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +727 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/memory.d.ts +16 -0
- package/dist/routes/memory.d.ts.map +1 -0
- package/dist/routes/memory.js +353 -0
- package/dist/routes/memory.js.map +1 -0
- package/dist/routes/observations.d.ts +19 -0
- package/dist/routes/observations.d.ts.map +1 -0
- package/dist/routes/observations.js +135 -0
- package/dist/routes/observations.js.map +1 -0
- package/dist/routes/orgs.d.ts +24 -0
- package/dist/routes/orgs.d.ts.map +1 -0
- package/dist/routes/orgs.js +208 -0
- package/dist/routes/orgs.js.map +1 -0
- package/dist/routes/pagination.d.ts +18 -0
- package/dist/routes/pagination.d.ts.map +1 -0
- package/dist/routes/pagination.js +35 -0
- package/dist/routes/pagination.js.map +1 -0
- package/dist/routes/policies.d.ts +23 -0
- package/dist/routes/policies.d.ts.map +1 -0
- package/dist/routes/policies.js +314 -0
- package/dist/routes/policies.js.map +1 -0
- package/dist/routes/projects.d.ts +45 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +485 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/proposals.d.ts +24 -0
- package/dist/routes/proposals.d.ts.map +1 -0
- package/dist/routes/proposals.js +581 -0
- package/dist/routes/proposals.js.map +1 -0
- package/dist/routes/provenance.d.ts +34 -0
- package/dist/routes/provenance.d.ts.map +1 -0
- package/dist/routes/provenance.js +274 -0
- package/dist/routes/provenance.js.map +1 -0
- package/dist/routes/providers.d.ts +32 -0
- package/dist/routes/providers.d.ts.map +1 -0
- package/dist/routes/providers.js +490 -0
- package/dist/routes/providers.js.map +1 -0
- package/dist/routes/public-run-tokens.d.ts +17 -0
- package/dist/routes/public-run-tokens.d.ts.map +1 -0
- package/dist/routes/public-run-tokens.js +69 -0
- package/dist/routes/public-run-tokens.js.map +1 -0
- package/dist/routes/retention.d.ts +19 -0
- package/dist/routes/retention.d.ts.map +1 -0
- package/dist/routes/retention.js +152 -0
- package/dist/routes/retention.js.map +1 -0
- package/dist/routes/reviewers.d.ts +5 -0
- package/dist/routes/reviewers.d.ts.map +1 -0
- package/dist/routes/reviewers.js +161 -0
- package/dist/routes/reviewers.js.map +1 -0
- package/dist/routes/runs.d.ts +34 -0
- package/dist/routes/runs.d.ts.map +1 -0
- package/dist/routes/runs.js +705 -0
- package/dist/routes/runs.js.map +1 -0
- package/dist/routes/s3.d.ts +31 -0
- package/dist/routes/s3.d.ts.map +1 -0
- package/dist/routes/s3.js +433 -0
- package/dist/routes/s3.js.map +1 -0
- package/dist/routes/schedules.d.ts +20 -0
- package/dist/routes/schedules.d.ts.map +1 -0
- package/dist/routes/schedules.js +234 -0
- package/dist/routes/schedules.js.map +1 -0
- package/dist/routes/scope-params.d.ts +57 -0
- package/dist/routes/scope-params.d.ts.map +1 -0
- package/dist/routes/scope-params.js +105 -0
- package/dist/routes/scope-params.js.map +1 -0
- package/dist/routes/secret-ref.d.ts +20 -0
- package/dist/routes/secret-ref.d.ts.map +1 -0
- package/dist/routes/secret-ref.js +42 -0
- package/dist/routes/secret-ref.js.map +1 -0
- package/dist/routes/secrets.d.ts +53 -0
- package/dist/routes/secrets.d.ts.map +1 -0
- package/dist/routes/secrets.js +715 -0
- package/dist/routes/secrets.js.map +1 -0
- package/dist/routes/signing-keys.d.ts +23 -0
- package/dist/routes/signing-keys.d.ts.map +1 -0
- package/dist/routes/signing-keys.js +212 -0
- package/dist/routes/signing-keys.js.map +1 -0
- package/dist/routes/sse.d.ts +58 -0
- package/dist/routes/sse.d.ts.map +1 -0
- package/dist/routes/sse.js +92 -0
- package/dist/routes/sse.js.map +1 -0
- package/dist/routes/teams.d.ts +30 -0
- package/dist/routes/teams.d.ts.map +1 -0
- package/dist/routes/teams.js +443 -0
- package/dist/routes/teams.js.map +1 -0
- package/dist/routes/tenant.d.ts +57 -0
- package/dist/routes/tenant.d.ts.map +1 -0
- package/dist/routes/tenant.js +352 -0
- package/dist/routes/tenant.js.map +1 -0
- package/dist/routes/tokens.d.ts +14 -0
- package/dist/routes/tokens.d.ts.map +1 -0
- package/dist/routes/tokens.js +231 -0
- package/dist/routes/tokens.js.map +1 -0
- package/dist/routes/tools.d.ts +33 -0
- package/dist/routes/tools.d.ts.map +1 -0
- package/dist/routes/tools.js +380 -0
- package/dist/routes/tools.js.map +1 -0
- package/dist/routes/webhook-endpoints.d.ts +10 -0
- package/dist/routes/webhook-endpoints.d.ts.map +1 -0
- package/dist/routes/webhook-endpoints.js +407 -0
- package/dist/routes/webhook-endpoints.js.map +1 -0
- package/dist/routes/webhooks.d.ts +21 -0
- package/dist/routes/webhooks.d.ts.map +1 -0
- package/dist/routes/webhooks.js +228 -0
- package/dist/routes/webhooks.js.map +1 -0
- package/dist/s3-credential-binding.d.ts +54 -0
- package/dist/s3-credential-binding.d.ts.map +1 -0
- package/dist/s3-credential-binding.js +4 -0
- package/dist/s3-credential-binding.js.map +1 -0
- package/dist/secrets-binding.d.ts +281 -0
- package/dist/secrets-binding.d.ts.map +1 -0
- package/dist/secrets-binding.js +10 -0
- package/dist/secrets-binding.js.map +1 -0
- package/dist/secrets-provider-binding.d.ts +164 -0
- package/dist/secrets-provider-binding.d.ts.map +1 -0
- package/dist/secrets-provider-binding.js +4 -0
- package/dist/secrets-provider-binding.js.map +1 -0
- package/dist/session-store-binding.d.ts +148 -0
- package/dist/session-store-binding.d.ts.map +1 -0
- package/dist/session-store-binding.js +4 -0
- package/dist/session-store-binding.js.map +1 -0
- package/dist/signing-key-binding.d.ts +210 -0
- package/dist/signing-key-binding.d.ts.map +1 -0
- package/dist/signing-key-binding.js +4 -0
- package/dist/signing-key-binding.js.map +1 -0
- package/dist/state-store-binding.d.ts +53 -0
- package/dist/state-store-binding.d.ts.map +1 -0
- package/dist/state-store-binding.js +38 -0
- package/dist/state-store-binding.js.map +1 -0
- package/dist/supervisor-binding.d.ts +526 -0
- package/dist/supervisor-binding.d.ts.map +1 -0
- package/dist/supervisor-binding.js +4 -0
- package/dist/supervisor-binding.js.map +1 -0
- package/dist/tenant-host-access.d.ts +41 -0
- package/dist/tenant-host-access.d.ts.map +1 -0
- package/dist/tenant-host-access.js +42 -0
- package/dist/tenant-host-access.js.map +1 -0
- package/dist/token-admin.d.ts +99 -0
- package/dist/token-admin.d.ts.map +1 -0
- package/dist/token-admin.js +4 -0
- package/dist/token-admin.js.map +1 -0
- package/dist/tool-binding.d.ts +247 -0
- package/dist/tool-binding.d.ts.map +1 -0
- package/dist/tool-binding.js +4 -0
- package/dist/tool-binding.js.map +1 -0
- package/dist/trigger-binding.d.ts +13 -0
- package/dist/trigger-binding.d.ts.map +1 -0
- package/dist/trigger-binding.js +4 -0
- package/dist/trigger-binding.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/webhook-endpoint-binding.d.ts +230 -0
- package/dist/webhook-endpoint-binding.d.ts.map +1 -0
- package/dist/webhook-endpoint-binding.js +12 -0
- package/dist/webhook-endpoint-binding.js.map +1 -0
- package/dist/xml.d.ts +79 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +115 -0
- package/dist/xml.js.map +1 -0
- package/openapi.json +29649 -0
- package/package.json +76 -4
- package/scripts/emit-openapi.mjs +44 -0
- package/src/adapter-binding.ts +204 -0
- package/src/agent-binding.ts +231 -0
- package/src/app.ts +1286 -0
- package/src/capability-binding.ts +83 -0
- package/src/cost-binding.ts +213 -0
- package/src/deployment-binding.ts +225 -0
- package/src/env-binding.ts +140 -0
- package/src/errors.ts +295 -0
- package/src/eval-run-binding.ts +209 -0
- package/src/eval-run-dispatcher.ts +497 -0
- package/src/eval-suite-binding.ts +257 -0
- package/src/event-bus-binding.ts +127 -0
- package/src/flow-binding.ts +213 -0
- package/src/guardrail-binding.ts +151 -0
- package/src/handler-binding.ts +132 -0
- package/src/hitl-binding.ts +172 -0
- package/src/identity-directory-binding.ts +128 -0
- package/src/identity-provider-binding.ts +203 -0
- package/src/image-registry-binding.ts +193 -0
- package/src/index.ts +606 -0
- package/src/key-management-binding.ts +91 -0
- package/src/mcp-endpoint-binding.ts +311 -0
- package/src/memory-binding.ts +239 -0
- package/src/middleware/auth.ts +437 -0
- package/src/middleware/authorize.ts +125 -0
- package/src/middleware/error-mapper.ts +40 -0
- package/src/middleware/idempotency.ts +160 -0
- package/src/middleware/principal.ts +64 -0
- package/src/middleware/public-run-routes.ts +50 -0
- package/src/middleware/request-id.ts +28 -0
- package/src/middleware/sigv4-verify.ts +374 -0
- package/src/middleware/sigv4.ts +165 -0
- package/src/openapi/generate.ts +307 -0
- package/src/openapi/operations.ts +5444 -0
- package/src/openapi/schemas.ts +6363 -0
- package/src/provenance-binding.ts +169 -0
- package/src/provider-binding.ts +196 -0
- package/src/public-run-token.ts +263 -0
- package/src/retention-binding.ts +78 -0
- package/src/reviewer-binding.ts +99 -0
- package/src/rotation-status-store.ts +209 -0
- package/src/routes/adapters.ts +319 -0
- package/src/routes/agents.ts +424 -0
- package/src/routes/approvals.ts +759 -0
- package/src/routes/artifacts.ts +317 -0
- package/src/routes/audit.ts +219 -0
- package/src/routes/auth.ts +806 -0
- package/src/routes/capabilities.ts +79 -0
- package/src/routes/compliance.ts +482 -0
- package/src/routes/conversations.ts +369 -0
- package/src/routes/cost.ts +327 -0
- package/src/routes/deployments.ts +1493 -0
- package/src/routes/env.ts +429 -0
- package/src/routes/eval-runs.ts +631 -0
- package/src/routes/eval-suites.ts +490 -0
- package/src/routes/event-triggers.ts +283 -0
- package/src/routes/flows.ts +423 -0
- package/src/routes/guardrails.ts +320 -0
- package/src/routes/identity.ts +203 -0
- package/src/routes/mcp.ts +940 -0
- package/src/routes/memory.ts +430 -0
- package/src/routes/observations.ts +175 -0
- package/src/routes/orgs.ts +273 -0
- package/src/routes/pagination.ts +51 -0
- package/src/routes/policies.ts +413 -0
- package/src/routes/projects.ts +634 -0
- package/src/routes/proposals.ts +719 -0
- package/src/routes/provenance.ts +406 -0
- package/src/routes/providers.ts +624 -0
- package/src/routes/public-run-tokens.ts +104 -0
- package/src/routes/retention.ts +193 -0
- package/src/routes/reviewers.ts +209 -0
- package/src/routes/runs.ts +892 -0
- package/src/routes/s3.ts +519 -0
- package/src/routes/schedules.ts +300 -0
- package/src/routes/scope-params.ts +133 -0
- package/src/routes/secret-ref.ts +52 -0
- package/src/routes/secrets.ts +975 -0
- package/src/routes/signing-keys.ts +259 -0
- package/src/routes/sse.ts +148 -0
- package/src/routes/teams.ts +584 -0
- package/src/routes/tenant.ts +530 -0
- package/src/routes/tokens.ts +285 -0
- package/src/routes/tools.ts +491 -0
- package/src/routes/webhook-endpoints.ts +534 -0
- package/src/routes/webhooks.ts +296 -0
- package/src/s3-credential-binding.ts +58 -0
- package/src/secrets-binding.ts +308 -0
- package/src/secrets-provider-binding.ts +167 -0
- package/src/session-store-binding.ts +163 -0
- package/src/signing-key-binding.ts +235 -0
- package/src/state-store-binding.ts +84 -0
- package/src/supervisor-binding.ts +554 -0
- package/src/tenant-host-access.ts +62 -0
- package/src/token-admin.ts +104 -0
- package/src/tool-binding.ts +274 -0
- package/src/trigger-binding.ts +38 -0
- package/src/types.ts +74 -0
- package/src/webhook-endpoint-binding.ts +246 -0
- package/src/xml.ts +196 -0
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
|
|
4
|
+
import { Hono } from 'hono';
|
|
5
|
+
|
|
6
|
+
import { type Agent, type AgentId, type DefineAgentSpec, defineAgent } from '@kindgi/agents';
|
|
7
|
+
import { type Principal, ref, tuplesForCreate } from '@kindgi/authz';
|
|
8
|
+
import type { Cursor, ProjectId, Semver, TenantId, UserId } from '@kindgi/types';
|
|
9
|
+
|
|
10
|
+
import type { AgentRegistryBinding } from '../agent-binding.js';
|
|
11
|
+
import { statusFor, toWireError } from '../errors.js';
|
|
12
|
+
import type { Authorizer } from '../middleware/authorize.js';
|
|
13
|
+
import type { AppEnv } from '../types.js';
|
|
14
|
+
import { clampLimit } from './pagination.js';
|
|
15
|
+
import { parseScopeParams } from './scope-params.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Agents resource routes.
|
|
19
|
+
*
|
|
20
|
+
* Registry storage is caller-plugged via `AgentRegistryBinding`. The
|
|
21
|
+
* API package does not own persistence — the binding implementation
|
|
22
|
+
* supplies the store (tests wrap the in-memory `AgentRegistry` from
|
|
23
|
+
* `@kindgi/agents`).
|
|
24
|
+
*
|
|
25
|
+
* Publish is data-as-code: the body is a full `DefineAgentSpec` (the
|
|
26
|
+
* same value `defineAgent(...)` accepts).
|
|
27
|
+
*/
|
|
28
|
+
export function agentsRouter(binding: AgentRegistryBinding, authorizer?: Authorizer): Hono<AppEnv> {
|
|
29
|
+
const r = new Hono<AppEnv>();
|
|
30
|
+
|
|
31
|
+
// Authorization — check the resource directly (ref('agent', businessId));
|
|
32
|
+
// permissions cascade from the parent project because the
|
|
33
|
+
// AgentRegistryBinding's `publish` writes the `agent:X#parent@project:Y`
|
|
34
|
+
// tuple via the enqueueTuples hook (see AgentPublishInput contract).
|
|
35
|
+
//
|
|
36
|
+
// POST / → admin on body.projectId
|
|
37
|
+
// GET /:agentId, GET /:agentId/versions[/…] → read on the agent
|
|
38
|
+
// POST /:agentId/versions/:version/unregister → admin on the agent
|
|
39
|
+
// POST /:agentId/versions/:version/reinstate → admin on the agent
|
|
40
|
+
// GET / (list) → tenant-scoped fetch;
|
|
41
|
+
// with a project scope
|
|
42
|
+
// (?scopeKind=project&scopeId=),
|
|
43
|
+
// require read on that project
|
|
44
|
+
if (authorizer !== undefined) {
|
|
45
|
+
r.use('/', async (c, next) => {
|
|
46
|
+
if (c.req.method !== 'POST') return next();
|
|
47
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
48
|
+
const mw = authorizer.authorize('admin', async () => {
|
|
49
|
+
try {
|
|
50
|
+
const body = await c.req.json();
|
|
51
|
+
const pid =
|
|
52
|
+
body !== null && typeof body === 'object'
|
|
53
|
+
? (body as Record<string, unknown>).projectId
|
|
54
|
+
: undefined;
|
|
55
|
+
if (typeof pid === 'string' && pid.length > 0) return ref('project', pid);
|
|
56
|
+
} catch {
|
|
57
|
+
// POST handler validates + returns 400
|
|
58
|
+
}
|
|
59
|
+
return ref('tenant', tenantId as unknown as string);
|
|
60
|
+
});
|
|
61
|
+
return mw(c, next);
|
|
62
|
+
});
|
|
63
|
+
r.use('/', async (c, next) => {
|
|
64
|
+
if (c.req.method !== 'GET') return next();
|
|
65
|
+
// A project filter needs read on that project. Parse it as the
|
|
66
|
+
// handler does (`?scopeKind=project&scopeId=`).
|
|
67
|
+
const s = parseScopeParams((n) => c.req.query(n), {
|
|
68
|
+
tenantId: c.get('tenantId') as TenantId,
|
|
69
|
+
});
|
|
70
|
+
if (s.kind !== 'ok' || s.scope?.kind !== 'project') return next();
|
|
71
|
+
const scopeProjectId = s.scope.projectId as unknown as string;
|
|
72
|
+
const mw = authorizer.authorize('read', () => ref('project', scopeProjectId));
|
|
73
|
+
return mw(c, next);
|
|
74
|
+
});
|
|
75
|
+
r.use('/:agentId/*', async (c, next) => {
|
|
76
|
+
const action = c.req.method === 'GET' ? 'read' : 'admin';
|
|
77
|
+
const agentId = c.req.param('agentId') ?? '';
|
|
78
|
+
const mw = authorizer.authorize(action, () => ref('agent', agentId));
|
|
79
|
+
return mw(c, next);
|
|
80
|
+
});
|
|
81
|
+
r.use('/:agentId', async (c, next) => {
|
|
82
|
+
if (c.req.method !== 'GET') return next();
|
|
83
|
+
const agentId = c.req.param('agentId') ?? '';
|
|
84
|
+
const mw = authorizer.authorize('read', () => ref('agent', agentId));
|
|
85
|
+
return mw(c, next);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ---------- GET / (list, cursor-paginated) ----------
|
|
90
|
+
r.get('/', async (c) => {
|
|
91
|
+
const requestId = c.get('requestId');
|
|
92
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
93
|
+
const limit = clampLimit(c.req.query('limit'));
|
|
94
|
+
|
|
95
|
+
const cursorRaw = c.req.query('cursor');
|
|
96
|
+
const nameRaw = c.req.query('name');
|
|
97
|
+
|
|
98
|
+
const scopeParsed = parseScopeParams(c.req.query(), { tenantId });
|
|
99
|
+
if (scopeParsed.kind === 'err') {
|
|
100
|
+
c.status(statusFor('scope-invalid') as never);
|
|
101
|
+
return c.json(
|
|
102
|
+
toWireError({ code: 'scope-invalid', message: scopeParsed.message }, requestId),
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const page = await binding.list({
|
|
107
|
+
tenantId,
|
|
108
|
+
limit,
|
|
109
|
+
...(cursorRaw !== undefined && cursorRaw.length > 0 && { cursor: cursorRaw as Cursor }),
|
|
110
|
+
...(nameRaw !== undefined && nameRaw.length > 0 && { nameFilter: nameRaw }),
|
|
111
|
+
...(scopeParsed.scope !== undefined && { scope: scopeParsed.scope }),
|
|
112
|
+
...(scopeParsed.inherit !== undefined && { inherit: scopeParsed.inherit }),
|
|
113
|
+
});
|
|
114
|
+
return c.json({
|
|
115
|
+
data: page.data.map(serializeAgent),
|
|
116
|
+
hasMore: page.nextCursor !== undefined,
|
|
117
|
+
...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// ---------- GET /:agentId (latest version) ----------
|
|
122
|
+
r.get('/:agentId', async (c) => {
|
|
123
|
+
const requestId = c.get('requestId');
|
|
124
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
125
|
+
const agentId = c.req.param('agentId') as AgentId;
|
|
126
|
+
|
|
127
|
+
const agent = await binding.get({ tenantId, agentId });
|
|
128
|
+
if (agent === null) {
|
|
129
|
+
// Distinguish 410 gone (identity exists — head row present, no
|
|
130
|
+
// active version) from 404 not-found (never registered).
|
|
131
|
+
// Retirement is a derived state (no active
|
|
132
|
+
// versions); the head row is the identity marker.
|
|
133
|
+
const exists = await binding.headExists({ tenantId, agentId });
|
|
134
|
+
if (exists) {
|
|
135
|
+
c.status(statusFor('agent-gone') as never);
|
|
136
|
+
return c.json(
|
|
137
|
+
toWireError(
|
|
138
|
+
{
|
|
139
|
+
code: 'agent-gone',
|
|
140
|
+
message: `Agent "${agentId as unknown as string}" has no active versions; reinstate a tombstoned version or publish a new one`,
|
|
141
|
+
agentId: agentId as unknown as string,
|
|
142
|
+
},
|
|
143
|
+
requestId,
|
|
144
|
+
),
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
c.status(statusFor('agent-not-found') as never);
|
|
148
|
+
return c.json(
|
|
149
|
+
toWireError(
|
|
150
|
+
{
|
|
151
|
+
code: 'agent-not-found',
|
|
152
|
+
message: `No agent registered with id "${agentId as unknown as string}"`,
|
|
153
|
+
agentId: agentId as unknown as string,
|
|
154
|
+
},
|
|
155
|
+
requestId,
|
|
156
|
+
),
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
return c.json(serializeAgent(agent));
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
// ---------- GET /:agentId/versions (list versions) ----------
|
|
163
|
+
r.get('/:agentId/versions', async (c) => {
|
|
164
|
+
const requestId = c.get('requestId');
|
|
165
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
166
|
+
const agentId = c.req.param('agentId') as AgentId;
|
|
167
|
+
const limit = clampLimit(c.req.query('limit'));
|
|
168
|
+
const cursorRaw = c.req.query('cursor');
|
|
169
|
+
|
|
170
|
+
// Confirm the id exists at all — an empty versions list from the
|
|
171
|
+
// binding is ambiguous (no versions vs. unknown id), so we do a
|
|
172
|
+
// preliminary `get` to flip an unknown id to a `404`.
|
|
173
|
+
const latest = await binding.get({ tenantId, agentId });
|
|
174
|
+
if (latest === null) {
|
|
175
|
+
c.status(statusFor('agent-not-found') as never);
|
|
176
|
+
return c.json(
|
|
177
|
+
toWireError(
|
|
178
|
+
{
|
|
179
|
+
code: 'agent-not-found',
|
|
180
|
+
message: `No agent registered with id "${agentId as unknown as string}"`,
|
|
181
|
+
agentId: agentId as unknown as string,
|
|
182
|
+
},
|
|
183
|
+
requestId,
|
|
184
|
+
),
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const page = await binding.listVersions({
|
|
189
|
+
tenantId,
|
|
190
|
+
agentId,
|
|
191
|
+
limit,
|
|
192
|
+
...(cursorRaw !== undefined && cursorRaw.length > 0 && { cursor: cursorRaw as Cursor }),
|
|
193
|
+
});
|
|
194
|
+
return c.json({
|
|
195
|
+
data: page.data.map(serializeAgent),
|
|
196
|
+
hasMore: page.nextCursor !== undefined,
|
|
197
|
+
...(page.nextCursor !== undefined && { nextCursor: page.nextCursor as unknown as string }),
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// ---------- GET /:agentId/versions/:version ----------
|
|
202
|
+
r.get('/:agentId/versions/:version', async (c) => {
|
|
203
|
+
const requestId = c.get('requestId');
|
|
204
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
205
|
+
const agentId = c.req.param('agentId') as AgentId;
|
|
206
|
+
const version = c.req.param('version') as Semver;
|
|
207
|
+
|
|
208
|
+
const agent = await binding.getVersion({ tenantId, agentId, version });
|
|
209
|
+
if (agent === null) {
|
|
210
|
+
c.status(statusFor('agent-not-found') as never);
|
|
211
|
+
return c.json(
|
|
212
|
+
toWireError(
|
|
213
|
+
{
|
|
214
|
+
code: 'agent-not-found',
|
|
215
|
+
message: `No agent "${agentId as unknown as string}" at version "${version as unknown as string}"`,
|
|
216
|
+
agentId: agentId as unknown as string,
|
|
217
|
+
version: version as unknown as string,
|
|
218
|
+
},
|
|
219
|
+
requestId,
|
|
220
|
+
),
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
return c.json(serializeAgent(agent));
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
// ---------- POST / (publish) ----------
|
|
227
|
+
r.post('/', async (c) => {
|
|
228
|
+
const requestId = c.get('requestId');
|
|
229
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
230
|
+
|
|
231
|
+
let body: unknown;
|
|
232
|
+
try {
|
|
233
|
+
body = await c.req.json();
|
|
234
|
+
} catch {
|
|
235
|
+
c.status(statusFor('bad-input') as never);
|
|
236
|
+
return c.json(
|
|
237
|
+
toWireError({ code: 'bad-input', message: 'Request body must be valid JSON' }, requestId),
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
if (body === null || typeof body !== 'object') {
|
|
241
|
+
c.status(statusFor('bad-input') as never);
|
|
242
|
+
return c.json(
|
|
243
|
+
toWireError({ code: 'bad-input', message: 'Request body must be an object' }, requestId),
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// `projectId` is REQUIRED on the POST body.
|
|
248
|
+
// Missing / empty / non-string → 400 bad-input. Absent from the
|
|
249
|
+
// agent-shape validator on purpose — the caller controls what
|
|
250
|
+
// project the agent lands in; the agent definition itself is
|
|
251
|
+
// project-agnostic.
|
|
252
|
+
const bodyObj = body as Record<string, unknown>;
|
|
253
|
+
const projectIdRaw = bodyObj.projectId;
|
|
254
|
+
if (typeof projectIdRaw !== 'string' || projectIdRaw.length === 0) {
|
|
255
|
+
c.status(statusFor('bad-input') as never);
|
|
256
|
+
return c.json(
|
|
257
|
+
toWireError({ code: 'bad-input', message: '`projectId` is required' }, requestId),
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
const projectId = projectIdRaw as ProjectId;
|
|
261
|
+
|
|
262
|
+
// Validate via defineAgent — same rules as the runtime primitive,
|
|
263
|
+
// so an agent published through the API is byte-identical to one
|
|
264
|
+
// constructed in-process. `defineAgent` returns a Result rather
|
|
265
|
+
// than throwing. `projectId` is stripped from the spec passed to
|
|
266
|
+
// `defineAgent` — the agent definition itself is project-agnostic
|
|
267
|
+
// (the runtime primitive doesn't know about projects).
|
|
268
|
+
const { projectId: _pid, ...specWithoutProjectId } = bodyObj;
|
|
269
|
+
const defined = defineAgent(specWithoutProjectId as unknown as DefineAgentSpec);
|
|
270
|
+
if (defined.kind === 'err') {
|
|
271
|
+
c.status(statusFor('invalid-agent') as never);
|
|
272
|
+
return c.json(
|
|
273
|
+
toWireError(
|
|
274
|
+
{
|
|
275
|
+
code: 'validation-failed',
|
|
276
|
+
message: defined.error.message,
|
|
277
|
+
issues: defined.error.issues as unknown as Record<string, unknown>[],
|
|
278
|
+
},
|
|
279
|
+
requestId,
|
|
280
|
+
),
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const principal = c.get('principal') as Principal | undefined;
|
|
285
|
+
const creatorUserId =
|
|
286
|
+
principal?.actor.kind === 'user'
|
|
287
|
+
? (principal.actor.id as UserId)
|
|
288
|
+
: ('00000000-0000-0000-0000-000000000000' as UserId);
|
|
289
|
+
const outcome = await binding.publish({
|
|
290
|
+
tenantId,
|
|
291
|
+
projectId,
|
|
292
|
+
agent: defined.value,
|
|
293
|
+
// Write the authorization tuples in the same transaction as the
|
|
294
|
+
// registry row. The binding calls this with the business
|
|
295
|
+
// `agentId`.
|
|
296
|
+
enqueueTuples: (agentId) =>
|
|
297
|
+
tuplesForCreate(
|
|
298
|
+
{ kind: 'agent', id: agentId as AgentId, tenantId, projectId },
|
|
299
|
+
creatorUserId,
|
|
300
|
+
),
|
|
301
|
+
});
|
|
302
|
+
if (outcome.kind === 'already-registered') {
|
|
303
|
+
c.status(statusFor('agent-already-registered') as never);
|
|
304
|
+
return c.json(
|
|
305
|
+
toWireError(
|
|
306
|
+
{
|
|
307
|
+
code: 'agent-already-registered',
|
|
308
|
+
message: `Agent "${outcome.agentId as unknown as string}" version "${outcome.version as unknown as string}" is already registered`,
|
|
309
|
+
agentId: outcome.agentId as unknown as string,
|
|
310
|
+
version: outcome.version as unknown as string,
|
|
311
|
+
},
|
|
312
|
+
requestId,
|
|
313
|
+
),
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
if (outcome.kind === 'project-not-found') {
|
|
317
|
+
// Caller supplied a `projectId` that does not resolve within
|
|
318
|
+
// this tenant. Distinct signal from `already-registered` so the
|
|
319
|
+
// client can prompt for a valid project rather than assume the
|
|
320
|
+
// version was already used. Answered as `400 bad-input`; the
|
|
321
|
+
// caller learns from the message which field was invalid.
|
|
322
|
+
c.status(statusFor('bad-input') as never);
|
|
323
|
+
return c.json(
|
|
324
|
+
toWireError(
|
|
325
|
+
{
|
|
326
|
+
code: 'bad-input',
|
|
327
|
+
message: `\`projectId\` "${outcome.projectId as unknown as string}" does not resolve to a project in this tenant`,
|
|
328
|
+
},
|
|
329
|
+
requestId,
|
|
330
|
+
),
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
c.status(201);
|
|
334
|
+
return c.json({
|
|
335
|
+
agentId: outcome.agentId as unknown as string,
|
|
336
|
+
version: outcome.version as unknown as string,
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
// ---------- POST /:agentId/versions/:version/unregister ----------
|
|
341
|
+
r.post('/:agentId/versions/:version/unregister', async (c) => {
|
|
342
|
+
const requestId = c.get('requestId');
|
|
343
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
344
|
+
const agentId = c.req.param('agentId') as AgentId;
|
|
345
|
+
const version = c.req.param('version') as Semver;
|
|
346
|
+
|
|
347
|
+
const outcome = await binding.unregister({ tenantId, agentId, version });
|
|
348
|
+
if (!outcome.unregistered) {
|
|
349
|
+
c.status(statusFor('agent-not-found') as never);
|
|
350
|
+
return c.json(
|
|
351
|
+
toWireError(
|
|
352
|
+
{
|
|
353
|
+
code: 'agent-not-found',
|
|
354
|
+
message: `No agent "${agentId as unknown as string}" at version "${version as unknown as string}" to unregister`,
|
|
355
|
+
agentId: agentId as unknown as string,
|
|
356
|
+
version: version as unknown as string,
|
|
357
|
+
},
|
|
358
|
+
requestId,
|
|
359
|
+
),
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
return c.json({
|
|
363
|
+
agentId: agentId as unknown as string,
|
|
364
|
+
version: version as unknown as string,
|
|
365
|
+
unregistered: true,
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
// ---------- POST /:agentId/versions/:version/reinstate ----------
|
|
370
|
+
// Un-tombstone a specific version — clears the version's tombstone
|
|
371
|
+
// and recomputes the agent's latest version across active
|
|
372
|
+
// versions. Restores the manifest bytes verbatim (semver hygiene:
|
|
373
|
+
// reinstate never mutates). Idempotent: reinstating an active
|
|
374
|
+
// version returns `wasTombstoned: false`.
|
|
375
|
+
r.post('/:agentId/versions/:version/reinstate', async (c) => {
|
|
376
|
+
const requestId = c.get('requestId');
|
|
377
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
378
|
+
const agentId = c.req.param('agentId') as AgentId;
|
|
379
|
+
const version = c.req.param('version') as Semver;
|
|
380
|
+
|
|
381
|
+
const outcome = await binding.reinstateVersion({ tenantId, agentId, version });
|
|
382
|
+
if (outcome.kind === 'not-found') {
|
|
383
|
+
c.status(statusFor('agent-not-found') as never);
|
|
384
|
+
return c.json(
|
|
385
|
+
toWireError(
|
|
386
|
+
{
|
|
387
|
+
code: 'agent-not-found',
|
|
388
|
+
message: `No agent "${agentId as unknown as string}" at version "${version as unknown as string}" to reinstate`,
|
|
389
|
+
agentId: agentId as unknown as string,
|
|
390
|
+
version: version as unknown as string,
|
|
391
|
+
},
|
|
392
|
+
requestId,
|
|
393
|
+
),
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
return c.json({
|
|
397
|
+
agentId: outcome.agentId as unknown as string,
|
|
398
|
+
version: outcome.version as unknown as string,
|
|
399
|
+
wasTombstoned: outcome.wasTombstoned,
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
return r;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
function serializeAgent(a: Agent): Record<string, unknown> {
|
|
407
|
+
return {
|
|
408
|
+
id: a.id as unknown as string,
|
|
409
|
+
version: a.version as unknown as string,
|
|
410
|
+
name: a.name,
|
|
411
|
+
...(a.description !== undefined && { description: a.description }),
|
|
412
|
+
instructions: a.instructions,
|
|
413
|
+
...(a.parameters !== undefined && { parameters: a.parameters }),
|
|
414
|
+
capabilities: a.capabilities,
|
|
415
|
+
tools: a.tools,
|
|
416
|
+
retrieval: a.retrieval,
|
|
417
|
+
guardrails: a.guardrails,
|
|
418
|
+
...(a.conversationPolicy !== undefined && { conversationPolicy: a.conversationPolicy }),
|
|
419
|
+
...(a.budget !== undefined && { budget: a.budget }),
|
|
420
|
+
...(a.tags !== undefined && { tags: a.tags }),
|
|
421
|
+
...(a.preferredProvider !== undefined && { preferredProvider: a.preferredProvider }),
|
|
422
|
+
...(a.preferredModel !== undefined && { preferredModel: a.preferredModel }),
|
|
423
|
+
};
|
|
424
|
+
}
|