@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
package/package.json
CHANGED
|
@@ -1,7 +1,79 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kindgi/api",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "REST + SSE HTTP surface for Kindgi™. createApp assembles a Hono app serving the /v1/* REST API (bearer or session-token auth; OpenAPI 3.1 document at /v1/openapi.json) and an optional S3-compatible /s3/* surface (SigV4), over caller-plugged bindings for the runtime (runs, agents, flows, HITL, supervisor) and for storage. Route conventions: docs/API-ROUTE-CONVENTIONS.md.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"repository": {
|
|
7
|
-
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/kindgi/kindgi-sdk.git",
|
|
9
|
+
"directory": "packages/api"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/kindgi/kindgi-sdk/tree/main/packages/api#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/kindgi/kindgi-sdk/issues"
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./openapi.json": "./openapi.json",
|
|
24
|
+
"./package.json": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"src",
|
|
29
|
+
"scripts",
|
|
30
|
+
"README.md",
|
|
31
|
+
"openapi.json"
|
|
32
|
+
],
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@kindgi/agents": "0.1.1",
|
|
35
|
+
"@kindgi/audit-events": "0.1.1",
|
|
36
|
+
"@kindgi/compliance": "0.1.1",
|
|
37
|
+
"@kindgi/authz": "0.1.1",
|
|
38
|
+
"@kindgi/blob-binding": "0.1.1",
|
|
39
|
+
"@kindgi/capabilities": "0.1.1",
|
|
40
|
+
"@kindgi/crypto": "0.1.1",
|
|
41
|
+
"@kindgi/flow": "0.1.1",
|
|
42
|
+
"@kindgi/guardrails": "0.1.1",
|
|
43
|
+
"@kindgi/memory": "0.1.1",
|
|
44
|
+
"@kindgi/platform": "0.1.1",
|
|
45
|
+
"@kindgi/provenance": "0.1.1",
|
|
46
|
+
"@kindgi/runtime": "0.1.1",
|
|
47
|
+
"@kindgi/policy-contract": "0.1.1",
|
|
48
|
+
"@kindgi/schema": "0.1.1",
|
|
49
|
+
"@kindgi/tools": "0.1.1",
|
|
50
|
+
"@kindgi/types": "0.1.1",
|
|
51
|
+
"@scalar/hono-api-reference": "^0.12.2",
|
|
52
|
+
"drizzle-orm": "^0.36.4",
|
|
53
|
+
"hono": "^4.6.14"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@kindgi/audit-events-inmemory": "0.1.1",
|
|
57
|
+
"@kindgi/specs": "0.1.1",
|
|
58
|
+
"@kindgi/testing": "0.1.1",
|
|
59
|
+
"@types/aws4": "^1.11.6",
|
|
60
|
+
"@types/node": "^22.10.5",
|
|
61
|
+
"aws4": "^1.13.2",
|
|
62
|
+
"typescript": "^5.7.3",
|
|
63
|
+
"vitest": "^2.1.8"
|
|
64
|
+
},
|
|
65
|
+
"engines": {
|
|
66
|
+
"node": ">=22.0.0"
|
|
67
|
+
},
|
|
68
|
+
"publishConfig": {
|
|
69
|
+
"access": "public",
|
|
70
|
+
"provenance": true
|
|
71
|
+
},
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsc -p tsconfig.build.json",
|
|
74
|
+
"typecheck": "tsc --noEmit",
|
|
75
|
+
"test": "vitest run",
|
|
76
|
+
"gen:openapi": "tsc -p tsconfig.build.json && node scripts/emit-openapi.mjs",
|
|
77
|
+
"clean": "rm -rf dist *.tsbuildinfo"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
4
|
+
|
|
5
|
+
// Emits `openapi.json` (this package's root) from the built `@kindgi/api`
|
|
6
|
+
// route + schema registry. The file ships with the package and is exported
|
|
7
|
+
// as `@kindgi/api/openapi.json` — SDK codegen and other consumers resolve
|
|
8
|
+
// it by package name, never by repo path. Kept as a pure `.mjs` script (no
|
|
9
|
+
// tsx dep) — mirrors `@kindgi/specs`' `scripts/validate.mjs`.
|
|
10
|
+
//
|
|
11
|
+
// Usage: `pnpm --filter @kindgi/api gen:openapi`.
|
|
12
|
+
// The npm script builds first so the imported dist is always fresh.
|
|
13
|
+
// `tests/openapi-artifact.test.ts` fails when the committed file is stale.
|
|
14
|
+
|
|
15
|
+
import { existsSync } from 'node:fs';
|
|
16
|
+
import { writeFile } from 'node:fs/promises';
|
|
17
|
+
import { dirname, join, resolve } from 'node:path';
|
|
18
|
+
import { fileURLToPath } from 'node:url';
|
|
19
|
+
|
|
20
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
const PACKAGE_ROOT = resolve(__dirname, '..');
|
|
22
|
+
const DIST_ENTRY = join(PACKAGE_ROOT, 'dist', 'index.js');
|
|
23
|
+
const OUTPUT_PATH = join(PACKAGE_ROOT, 'openapi.json');
|
|
24
|
+
|
|
25
|
+
if (!existsSync(DIST_ENTRY)) {
|
|
26
|
+
console.error(
|
|
27
|
+
`error: expected built entry at ${DIST_ENTRY}. Run \`pnpm --filter @kindgi/api build\` first, or use \`pnpm --filter @kindgi/api gen:openapi\` which chains both.`,
|
|
28
|
+
);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const { generateOpenApiDocument } = await import(DIST_ENTRY);
|
|
33
|
+
const doc = generateOpenApiDocument();
|
|
34
|
+
|
|
35
|
+
await writeFile(OUTPUT_PATH, `${JSON.stringify(doc, null, 2)}\n`, 'utf8');
|
|
36
|
+
|
|
37
|
+
const pathCount = Object.keys(doc.paths).length;
|
|
38
|
+
const opCount = Object.values(doc.paths).reduce(
|
|
39
|
+
(sum, methods) => sum + Object.keys(methods).length,
|
|
40
|
+
0,
|
|
41
|
+
);
|
|
42
|
+
console.log(
|
|
43
|
+
`wrote ${OUTPUT_PATH} — ${pathCount} paths, ${opCount} operations, ${Object.keys(doc.components.schemas).length} schemas`,
|
|
44
|
+
);
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
|
|
4
|
+
import type { Cursor, TenantId } from '@kindgi/types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Caller-plugged surface for the adapter catalog — part of the admin
|
|
8
|
+
* control plane. Read-only + smoke-test-only
|
|
9
|
+
* over HTTP: tenants + operators see every adapter the deployment
|
|
10
|
+
* wired at boot time and probe each one for liveness.
|
|
11
|
+
*
|
|
12
|
+
* Adapters are the concrete bridges the runtime uses to talk to
|
|
13
|
+
* outside systems: model providers, embedding providers, blob storage,
|
|
14
|
+
* sandbox providers, eval judges. Each adapter package
|
|
15
|
+
* (the filesystem blob adapter, the inprocess sandbox adapter,
|
|
16
|
+
* `@kindgi/adapter-model-in-process`, `@kindgi/adapter-model-openai-compat`,
|
|
17
|
+
* the local embedding adapter, the AJV eval-judge adapter, ...)
|
|
18
|
+
* exports a factory + optional metadata; the deployment aggregates the
|
|
19
|
+
* ones it actually wired into an `AdapterRegistryBinding`.
|
|
20
|
+
*
|
|
21
|
+
* ## Why read-only + test-only
|
|
22
|
+
*
|
|
23
|
+
* Adapter lifecycle (register / unregister / reconfigure) is a
|
|
24
|
+
* **deployment concern**, not a runtime one. The runtime learns about
|
|
25
|
+
* adapters at `CreateAppInput` time; if a deployment wants to change
|
|
26
|
+
* what's wired it restarts the process with different config. This
|
|
27
|
+
* mirrors the pattern used elsewhere in the framework where lifecycle
|
|
28
|
+
* state is deployment-owned (bucket allocation in S3, key store for
|
|
29
|
+
* signing). HTTP-driven adapter reconfigure would require the runtime
|
|
30
|
+
* to accept live reconfiguration, which it does not.
|
|
31
|
+
*
|
|
32
|
+
* ## Wire shape discipline
|
|
33
|
+
*
|
|
34
|
+
* `AdapterInfo.config` is REDACTED — no secrets on the wire. A binding
|
|
35
|
+
* MAY expose non-sensitive routing hints (`{ region: 'us-east-1' }`)
|
|
36
|
+
* but MUST NOT surface API keys, endpoints, credentials, or any
|
|
37
|
+
* material that could be used to impersonate the adapter. The binding
|
|
38
|
+
* is authoritative on what counts as safe to expose per adapter kind.
|
|
39
|
+
*
|
|
40
|
+
* ## Probe semantics
|
|
41
|
+
*
|
|
42
|
+
* `test(...)` runs a kind-specific smoke probe against the adapter.
|
|
43
|
+
* Probe failures return an `AdapterTestOutcome` with `ok: false` — not
|
|
44
|
+
* an error. A failed probe is a valid observation about the adapter's
|
|
45
|
+
* state, not a server error. The route surfaces `AdapterTestOutcome`
|
|
46
|
+
* as HTTP 200 either way; a 5xx would indicate the probe machinery
|
|
47
|
+
* itself broke (which is legitimately a server error).
|
|
48
|
+
*
|
|
49
|
+
* ### Default probes by adapter kind
|
|
50
|
+
*
|
|
51
|
+
* - `blob`: write 32 random bytes → read back → verify hash → delete.
|
|
52
|
+
* - `sandbox`: create a context-isolated (or `none`) sandbox → run
|
|
53
|
+
* `1 + 1 === 2` → verify result → destroy.
|
|
54
|
+
* - `model` / `model-provider`: minimal completion with
|
|
55
|
+
* `[{ role: 'user', content: 'ping' }]` and `maxTokens: 1` — verify
|
|
56
|
+
* the provider returns a well-shaped response.
|
|
57
|
+
* - `embedding`: embed the string `'ping'` — verify the vector length
|
|
58
|
+
* matches the advertised dimension.
|
|
59
|
+
* - `eval-judge`: run a trivial pass-through eval — verify success.
|
|
60
|
+
*
|
|
61
|
+
* Adapter authors MAY accept a caller-supplied `input` on `test(...)`
|
|
62
|
+
* for more elaborate probes; when absent the binding falls back to
|
|
63
|
+
* the default above.
|
|
64
|
+
*
|
|
65
|
+
* Every method is tenant-scoped. Cursors are opaque — the binding
|
|
66
|
+
* chooses its encoding. The API layer only validates round-trip as a
|
|
67
|
+
* string; it never inspects the payload.
|
|
68
|
+
*/
|
|
69
|
+
export interface AdapterRegistryBinding {
|
|
70
|
+
/**
|
|
71
|
+
* Cursor-paginated list of adapters the deployment has wired.
|
|
72
|
+
* Optional filters narrow to a specific `kind` or `status`.
|
|
73
|
+
*/
|
|
74
|
+
list(input: AdapterListInput): Promise<AdapterPage>;
|
|
75
|
+
/**
|
|
76
|
+
* Fetch a single adapter by id, or `null` when unknown. The route
|
|
77
|
+
* surfaces `null` as `404 adapter-not-found`.
|
|
78
|
+
*/
|
|
79
|
+
get(input: AdapterGetInput): Promise<AdapterInfo | null>;
|
|
80
|
+
/**
|
|
81
|
+
* Run the kind-specific smoke probe. Returns `null` when the id is
|
|
82
|
+
* unknown — the route surfaces that as `404 adapter-not-found`.
|
|
83
|
+
* Otherwise returns an `AdapterTestOutcome` (which itself carries
|
|
84
|
+
* `ok: true | false` — failed probes are data, not errors).
|
|
85
|
+
*/
|
|
86
|
+
test(input: AdapterTestInput): Promise<AdapterTestOutcome | null>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Closed set of adapter kinds the framework knows about. New kinds
|
|
91
|
+
* require an additive schema update — we enumerate rather than accept
|
|
92
|
+
* an open string so wire consumers (UIs, command-line tools) can render
|
|
93
|
+
* kind-specific columns without guessing.
|
|
94
|
+
*
|
|
95
|
+
* `model-provider` is distinct from `model` for adapters that wrap a
|
|
96
|
+
* remote provider gateway (a hosted API or a self-hosted inference
|
|
97
|
+
* server) vs. adapters that host the model in-process.
|
|
98
|
+
*/
|
|
99
|
+
export type AdapterKind =
|
|
100
|
+
| 'model'
|
|
101
|
+
| 'model-provider'
|
|
102
|
+
| 'embedding'
|
|
103
|
+
| 'blob'
|
|
104
|
+
| 'sandbox'
|
|
105
|
+
| 'eval-judge';
|
|
106
|
+
|
|
107
|
+
export const ADAPTER_KINDS: readonly AdapterKind[] = [
|
|
108
|
+
'model',
|
|
109
|
+
'model-provider',
|
|
110
|
+
'embedding',
|
|
111
|
+
'blob',
|
|
112
|
+
'sandbox',
|
|
113
|
+
'eval-judge',
|
|
114
|
+
];
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Adapter status the wire surface exposes. `active` = wired and
|
|
118
|
+
* last-observed healthy. `degraded` = wired but the binding has seen
|
|
119
|
+
* recent failures / partial capability loss. `error` = wired but
|
|
120
|
+
* unusable (e.g. auth material missing at boot). The binding is
|
|
121
|
+
* authoritative on how it derives the value.
|
|
122
|
+
*/
|
|
123
|
+
export type AdapterStatus = 'active' | 'degraded' | 'error';
|
|
124
|
+
|
|
125
|
+
export const ADAPTER_STATUSES: readonly AdapterStatus[] = ['active', 'degraded', 'error'];
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Wire shape for a single wired adapter. Deployments produce this
|
|
129
|
+
* from whatever data structure they use to hold their adapter set —
|
|
130
|
+
* commonly the `describe()` output on the adapter factory plus a
|
|
131
|
+
* status field the deployment tracks itself.
|
|
132
|
+
*/
|
|
133
|
+
export interface AdapterInfo {
|
|
134
|
+
/** Stable id chosen by the deployment (e.g. `'sandbox-primary'`). */
|
|
135
|
+
readonly adapterId: string;
|
|
136
|
+
readonly kind: AdapterKind;
|
|
137
|
+
/** Package name that owns the implementation (e.g. `'@kindgi/adapter-model-in-process'`). */
|
|
138
|
+
readonly name: string;
|
|
139
|
+
/** Semver of the wired package. */
|
|
140
|
+
readonly version: string;
|
|
141
|
+
/**
|
|
142
|
+
* Kind-specific capability tags. Free-form strings scoped by kind —
|
|
143
|
+
* e.g. `['context-isolated']` for a sandbox adapter, `['tool-use', 'streaming']`
|
|
144
|
+
* for a model adapter, `['multipart-upload']` for blob storage.
|
|
145
|
+
*/
|
|
146
|
+
readonly capabilities: readonly string[];
|
|
147
|
+
/**
|
|
148
|
+
* Redacted routing hints only. No secrets. Absent when the binding
|
|
149
|
+
* has nothing safe to expose.
|
|
150
|
+
*/
|
|
151
|
+
readonly config?: Readonly<Record<string, unknown>>;
|
|
152
|
+
readonly status: AdapterStatus;
|
|
153
|
+
/** Human-readable reason accompanying `degraded` / `error` status. */
|
|
154
|
+
readonly statusReason?: string;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface AdapterListInput {
|
|
158
|
+
readonly tenantId: TenantId;
|
|
159
|
+
readonly limit: number;
|
|
160
|
+
readonly cursor?: Cursor;
|
|
161
|
+
readonly filter?: AdapterListFilter;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export interface AdapterListFilter {
|
|
165
|
+
readonly kind?: AdapterKind;
|
|
166
|
+
readonly status?: AdapterStatus;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface AdapterPage {
|
|
170
|
+
readonly data: readonly AdapterInfo[];
|
|
171
|
+
readonly nextCursor?: Cursor;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export interface AdapterGetInput {
|
|
175
|
+
readonly tenantId: TenantId;
|
|
176
|
+
readonly adapterId: string;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export interface AdapterTestInput {
|
|
180
|
+
readonly tenantId: TenantId;
|
|
181
|
+
readonly adapterId: string;
|
|
182
|
+
/**
|
|
183
|
+
* Optional kind-specific probe input. When absent the binding runs
|
|
184
|
+
* the default probe documented in the interface JSDoc above. Shape
|
|
185
|
+
* is intentionally open so bindings can extend the probe surface
|
|
186
|
+
* per kind without a schema change.
|
|
187
|
+
*/
|
|
188
|
+
readonly input?: Readonly<Record<string, unknown>>;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Result of a probe run. `ok: false` is a valid observation — the
|
|
193
|
+
* route serialises it as HTTP 200 either way.
|
|
194
|
+
*
|
|
195
|
+
* `probe` is kind-specific data (e.g. `{ vectorLength: 384 }` for an
|
|
196
|
+
* embedding probe, `{ latencyMs: 42, completion: '2' }` for a model
|
|
197
|
+
* probe). Consumers should not depend on its exact shape — the UI
|
|
198
|
+
* treats it as a diagnostic bag to render as JSON.
|
|
199
|
+
*/
|
|
200
|
+
export interface AdapterTestOutcome {
|
|
201
|
+
readonly ok: boolean;
|
|
202
|
+
readonly latencyMs: number;
|
|
203
|
+
readonly probe: Readonly<Record<string, unknown>>;
|
|
204
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
|
|
4
|
+
import type { Agent, AgentId } from '@kindgi/agents';
|
|
5
|
+
import type { TupleEnqueueHook } from '@kindgi/authz';
|
|
6
|
+
import type { Scope } from '@kindgi/platform';
|
|
7
|
+
import type { Cursor, ProjectId, Semver, TenantId } from '@kindgi/types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Caller-plugged surface for the agent catalog. Same shape as
|
|
11
|
+
* `TokenAdmin` / `ReviewerBinding` / `RunHandlerBinding`: the API
|
|
12
|
+
* package does NOT own registry persistence. Deployments wire a
|
|
13
|
+
* runtime `AgentRegistry` (from `@kindgi/agents`) — or a durable
|
|
14
|
+
* pack-backed store — through this binding.
|
|
15
|
+
*
|
|
16
|
+
* Every method is tenant-scoped: callers pass `tenantId` explicitly so
|
|
17
|
+
* multi-tenant deployments can partition storage without exposing the
|
|
18
|
+
* scoping inside the API package.
|
|
19
|
+
*
|
|
20
|
+
* Cursors are opaque — the binding chooses its encoding (index-based,
|
|
21
|
+
* `id@version`, ISO timestamps). The API layer only validates that a
|
|
22
|
+
* cursor round-trips as a string; it never inspects the payload.
|
|
23
|
+
*/
|
|
24
|
+
export interface AgentRegistryBinding {
|
|
25
|
+
/**
|
|
26
|
+
* Cursor-paginated list of agents (latest version per id, sorted by
|
|
27
|
+
* agent id ascending). Optional `nameFilter` is a prefix match on the
|
|
28
|
+
* agent id — the runtime uses dotted namespaces (`acme.*`), so
|
|
29
|
+
* prefix matching is the natural filter shape.
|
|
30
|
+
*/
|
|
31
|
+
list(input: AgentListInput): Promise<AgentPage>;
|
|
32
|
+
/**
|
|
33
|
+
* Latest version of the given agent id, or `null` if unknown. The
|
|
34
|
+
* route surfaces `null` as `404 agent-not-found`.
|
|
35
|
+
*/
|
|
36
|
+
get(input: AgentGetInput): Promise<Agent | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Specific `(agentId, version)` lookup, or `null` if unknown.
|
|
39
|
+
* Returns tombstoned versions too (unlike `list` / `get` which
|
|
40
|
+
* filter them) — the specific-version lookup is used by provenance
|
|
41
|
+
* paths that need to resolve historical run references.
|
|
42
|
+
*/
|
|
43
|
+
getVersion(input: AgentGetVersionInput): Promise<Agent | null>;
|
|
44
|
+
/**
|
|
45
|
+
* Head-row existence check. Returns `true` iff the agent id has been
|
|
46
|
+
* registered in the tenant (regardless of whether any versions are
|
|
47
|
+
* active). Lets `GET /v1/agents/{id}` distinguish
|
|
48
|
+
* `410 gone` (identity exists, no active version) from `404 not-
|
|
49
|
+
* found` (never registered) — `.get(...)` returns `null` in both
|
|
50
|
+
* cases.
|
|
51
|
+
*/
|
|
52
|
+
headExists(input: AgentGetInput): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Cursor-paginated list of versions for a specific agent id. Sort
|
|
55
|
+
* order is binding-defined; the built-in in-memory registry sorts
|
|
56
|
+
* ascending semver. Returns an empty page (no error) when the id is
|
|
57
|
+
* unknown — the route flips that to `404` via a prior `get`.
|
|
58
|
+
*/
|
|
59
|
+
listVersions(input: AgentListVersionsInput): Promise<AgentPage>;
|
|
60
|
+
/**
|
|
61
|
+
* Publish a validated agent definition. The API route validates
|
|
62
|
+
* shape via `defineAgent(...)` before calling — the binding receives
|
|
63
|
+
* a well-formed `Agent`. Bindings MAY reject with `already-registered`
|
|
64
|
+
* when the same `(agentId, version)` is re-published; the route
|
|
65
|
+
* maps that to `409`.
|
|
66
|
+
*/
|
|
67
|
+
publish(input: AgentPublishInput): Promise<AgentPublishOutcome>;
|
|
68
|
+
/**
|
|
69
|
+
* Soft-tombstone a specific `(agentId, version)`. Returns
|
|
70
|
+
* `{ unregistered: true }` on success; `{ unregistered: false }`
|
|
71
|
+
* when the version was unknown OR already tombstoned — the route
|
|
72
|
+
* flips the latter to `404`. Head row is preserved; when this
|
|
73
|
+
* unregister leaves NO active versions, the agent has no latest
|
|
74
|
+
* version — it enters the derived "retired" state
|
|
75
|
+
* (GET returns 410 gone) but the identity persists. Publish of a
|
|
76
|
+
* new version reactivates.
|
|
77
|
+
*/
|
|
78
|
+
unregister(input: AgentUnregisterInput): Promise<AgentUnregisterOutcome>;
|
|
79
|
+
/**
|
|
80
|
+
* Un-tombstone a specific `(agentId, version)` — clears the
|
|
81
|
+
* version's tombstone and recomputes the agent's latest version
|
|
82
|
+
* across active versions. Restores the version's
|
|
83
|
+
* manifest bytes verbatim (semver hygiene: reinstate never mutates
|
|
84
|
+
* the manifest). Idempotent: reinstating an active version is a
|
|
85
|
+
* no-op. `{ kind: 'not-found' }` when the version was never
|
|
86
|
+
* published.
|
|
87
|
+
*/
|
|
88
|
+
reinstateVersion(input: AgentReinstateVersionInput): Promise<AgentReinstateVersionOutcome>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface AgentListInput {
|
|
92
|
+
readonly tenantId: TenantId;
|
|
93
|
+
readonly limit: number;
|
|
94
|
+
readonly cursor?: Cursor;
|
|
95
|
+
/** Prefix match on `Agent.id`. Undefined = no filter. */
|
|
96
|
+
readonly nameFilter?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Narrow the list to a specific scope. Absent = no scope narrow
|
|
99
|
+
* (return every row in the tenant the caller can see — admin/audit
|
|
100
|
+
* default).
|
|
101
|
+
*
|
|
102
|
+
* Content-scoped semantics (this binding):
|
|
103
|
+
* - `{ kind: 'project', projectId }` — rows in that project.
|
|
104
|
+
* - `{ kind: 'org', orgId }` — rows in every project belonging to
|
|
105
|
+
* that org.
|
|
106
|
+
* - `{ kind: 'tenant', tenantId }` — every row in the tenant.
|
|
107
|
+
*
|
|
108
|
+
* Content rows always belong to a project, so `inherit` has no
|
|
109
|
+
* effect here.
|
|
110
|
+
*/
|
|
111
|
+
readonly scope?: Scope;
|
|
112
|
+
/**
|
|
113
|
+
* `false` = literal-at-this-scope only (admin/audit view).
|
|
114
|
+
* `true` (default) = inheritance walk (user-facing view).
|
|
115
|
+
* No-op for content-scoped bindings (rows only exist at
|
|
116
|
+
* project-level — there is no upward hierarchy to walk). Kept for
|
|
117
|
+
* uniformity: scope-aware bindings share one filter shape across the
|
|
118
|
+
* SDK and OpenAPI schemas.
|
|
119
|
+
*/
|
|
120
|
+
readonly inherit?: boolean;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface AgentGetInput {
|
|
124
|
+
readonly tenantId: TenantId;
|
|
125
|
+
readonly agentId: AgentId;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface AgentGetVersionInput {
|
|
129
|
+
readonly tenantId: TenantId;
|
|
130
|
+
readonly agentId: AgentId;
|
|
131
|
+
readonly version: Semver;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface AgentListVersionsInput {
|
|
135
|
+
readonly tenantId: TenantId;
|
|
136
|
+
readonly agentId: AgentId;
|
|
137
|
+
readonly limit: number;
|
|
138
|
+
readonly cursor?: Cursor;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface AgentPublishInput {
|
|
142
|
+
readonly tenantId: TenantId;
|
|
143
|
+
/**
|
|
144
|
+
* Project the agent is published into. REQUIRED. Callers that
|
|
145
|
+
* don't naturally know a projectId
|
|
146
|
+
* (e.g. the deployments route) resolve the tenant's Default
|
|
147
|
+
* via `projectBinding.getDefault(tenantId)` at THEIR layer and
|
|
148
|
+
* thread the resolved id here — the storage adapter never
|
|
149
|
+
* silently falls back to Default.
|
|
150
|
+
*/
|
|
151
|
+
readonly projectId: ProjectId;
|
|
152
|
+
readonly agent: Agent;
|
|
153
|
+
/**
|
|
154
|
+
* REQUIRED. Called inside the binding's write transaction after the
|
|
155
|
+
* head + version rows are inserted, receiving the FGA subject id
|
|
156
|
+
* (the business `agentId`). Returns the
|
|
157
|
+
* `TupleIntent[]` to enqueue in the same tx — typically
|
|
158
|
+
* `tuplesForCreate({kind:'agent', id, tenantId, projectId}, creatorUserId)`.
|
|
159
|
+
*
|
|
160
|
+
* Required, not opt-in: a binding that cannot enqueue tuples must fail
|
|
161
|
+
* loudly rather than silently skip.
|
|
162
|
+
*/
|
|
163
|
+
readonly enqueueTuples: TupleEnqueueHook;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export interface AgentUnregisterInput {
|
|
167
|
+
readonly tenantId: TenantId;
|
|
168
|
+
readonly agentId: AgentId;
|
|
169
|
+
readonly version: Semver;
|
|
170
|
+
// No enqueueTuples hook. `unregister` soft-tombstones a version and
|
|
171
|
+
// recomputes the latest version; the head row is PRESERVED, so the
|
|
172
|
+
// agent identity persists in FGA as a retired entity. A method that
|
|
173
|
+
// fully removed the identity would take an `enqueueTuples` parameter
|
|
174
|
+
// for the `tuplesForDelete(...)` cleanup.
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export interface AgentReinstateVersionInput {
|
|
178
|
+
readonly tenantId: TenantId;
|
|
179
|
+
readonly agentId: AgentId;
|
|
180
|
+
readonly version: Semver;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export interface AgentPage {
|
|
184
|
+
readonly data: readonly Agent[];
|
|
185
|
+
readonly nextCursor?: Cursor;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export type AgentPublishOutcome =
|
|
189
|
+
| {
|
|
190
|
+
readonly kind: 'ok';
|
|
191
|
+
readonly agentId: AgentId;
|
|
192
|
+
readonly version: Semver;
|
|
193
|
+
}
|
|
194
|
+
| {
|
|
195
|
+
readonly kind: 'already-registered';
|
|
196
|
+
readonly agentId: AgentId;
|
|
197
|
+
readonly version: Semver;
|
|
198
|
+
}
|
|
199
|
+
| {
|
|
200
|
+
/**
|
|
201
|
+
* The caller-supplied `projectId` does not resolve to a real
|
|
202
|
+
* project row in this tenant. Distinct from
|
|
203
|
+
* `already-registered` so callers can surface a clean error (the
|
|
204
|
+
* agents route answers `400 bad-input`) rather than the
|
|
205
|
+
* misleading `already-registered` fallback. Implementations
|
|
206
|
+
* detect a missing project at publish time (a SQL store typically
|
|
207
|
+
* from its foreign-key violation).
|
|
208
|
+
*/
|
|
209
|
+
readonly kind: 'project-not-found';
|
|
210
|
+
readonly agentId: AgentId;
|
|
211
|
+
readonly version: Semver;
|
|
212
|
+
readonly projectId: ProjectId;
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
export type AgentUnregisterOutcome = {
|
|
216
|
+
readonly unregistered: boolean;
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
export type AgentReinstateVersionOutcome =
|
|
220
|
+
| {
|
|
221
|
+
readonly kind: 'ok';
|
|
222
|
+
readonly agentId: AgentId;
|
|
223
|
+
readonly version: Semver;
|
|
224
|
+
/** `false` when the version was already active (idempotent no-op). */
|
|
225
|
+
readonly wasTombstoned: boolean;
|
|
226
|
+
}
|
|
227
|
+
| {
|
|
228
|
+
readonly kind: 'not-found';
|
|
229
|
+
readonly agentId: AgentId;
|
|
230
|
+
readonly version: Semver;
|
|
231
|
+
};
|