@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,241 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* OpenAPI 3.1 document generator. Assembles `info` + `servers` +
|
|
5
|
+
* `components` + `paths` + `tags` from the operation registry
|
|
6
|
+
* (`operations.ts`) and the schema registry (`schemas.ts`).
|
|
7
|
+
*
|
|
8
|
+
* The output is a plain JSON-serializable object — the caller decides
|
|
9
|
+
* how to expose it (route handler, static file, both).
|
|
10
|
+
*/
|
|
11
|
+
import { OPERATIONS, honoToOpenapiPath, } from './operations.js';
|
|
12
|
+
import { COMPONENT_SCHEMAS } from './schemas.js';
|
|
13
|
+
const DEFAULT_INFO = {
|
|
14
|
+
title: 'Kindgi Platform API',
|
|
15
|
+
version: '0.1.0',
|
|
16
|
+
description: 'REST + SSE API for Kindgi: runs, agents, flows, human-in-the-loop approvals and the admin control plane. Generated from the route and schema registrations in `@kindgi/api` and drift-checked against the mounted routes.',
|
|
17
|
+
};
|
|
18
|
+
const DEFAULT_SERVERS = [
|
|
19
|
+
{ url: '/', description: 'Same-origin — path relative to the deployment root.' },
|
|
20
|
+
];
|
|
21
|
+
const TAG_DESCRIPTIONS = {
|
|
22
|
+
system: 'Health + spec discovery.',
|
|
23
|
+
runs: 'Run lifecycle (start, list, get, cancel, resume, journal, stream).',
|
|
24
|
+
'signing-keys': 'The deployment trust list: the public keys whose signatures `POST /v1/deployments` accepts. Revoked keys stay readable for audit.',
|
|
25
|
+
tokens: 'API token administration (mint + revoke), and public run tokens: short-lived, read-only tokens a browser uses to follow specific runs.',
|
|
26
|
+
approvals: 'Human-in-the-loop review queue (role-scoped).',
|
|
27
|
+
observations: 'Supervisor readback of run outcomes.',
|
|
28
|
+
agents: 'Agent catalog (list, get, publish, unregister — caller-plugged registry).',
|
|
29
|
+
flows: 'Flow catalog (list, get, publish, unregister — caller-plugged registry). Enables non-agent workflows via HTTP — publish once, execute many via `POST /v1/runs`.',
|
|
30
|
+
tools: 'Tool catalog (list, get, register, unregister — caller-plugged registry, metadata-only).',
|
|
31
|
+
guardrails: 'Guardrail catalog (list, get, register, unregister — caller-plugged registry, metadata-only).',
|
|
32
|
+
conversations: 'Durable multi-turn threads (open, list, get, close, read messages).',
|
|
33
|
+
memory: 'Fact catalog + retrieval (list, get, write, supersede, retrieve — caller-plugged binding wraps the memory subsystem).',
|
|
34
|
+
proposals: 'Supervisor fix-proposal lifecycle (draft, dry-run, submit-review, apply, rollback, withdraw — caller-plugged binding wraps the supervisor).',
|
|
35
|
+
provenance: 'Causal DAG readback + signed exports (list, get, export — signing is caller-plugged via `SigningKeyBinding`).',
|
|
36
|
+
artifacts: 'Blob storage (list metadata, multipart upload, streaming download, HEAD, delete). Caller-plugged via `BlobStorageBinding` (from `@kindgi/blob-binding`).',
|
|
37
|
+
capabilities: 'Capability catalog (list + get) — part of the admin control plane. Read-only over HTTP. Capabilities are framework-declared (`FEATURES` enum + `@kindgi/specs/capability.schema.json`) and deployment-extended at boot time via `CapabilityRegistryBinding`; tenants do NOT author capabilities via the API.',
|
|
38
|
+
providers: 'Model-provider catalog (list, get, register, unregister, capabilities sub-resource) — part of the admin control plane. Full CRUD. `ProviderMetadata` is the wire shape; secrets never cross the wire (they live inside `ProviderRegistryBinding`). The capability router picks a best-fit provider from this set per capability requirement at run time.',
|
|
39
|
+
cost: 'Cost readback (list records, get record, aggregate across a required time window) — part of the admin control plane. Read-only over HTTP; records are written by the runtime usage instrumentation (agents, tools, sandboxes). Caller-plugged via `CostBinding`. Budgets are not enforced through this surface.',
|
|
40
|
+
adapters: 'Unified adapter catalog (list, get, test) — part of the admin control plane. Covers every adapter kind the deployment wired: model providers, embedding providers, blob storage, sandbox providers, eval judges. Read-only + smoke-test-only over HTTP; adapter lifecycle (register / unregister / reconfigure) is a deployment concern — the runtime learns about adapters at `CreateAppInput` time. Caller-plugged via `AdapterRegistryBinding`. Config is REDACTED on the wire — no secrets crossing.',
|
|
41
|
+
policies: 'Tenant policy catalog (list, get, versions, publish, unregister) — part of the admin control plane. Full versioned CRUD, mirrors `flows` 1:1. Registry-only: enforcement is out of scope. `policyKind` selects the shape of `spec` — closed enum, extended additively (`access-control`, `model-routing`, `adapter-allowlist`, `rate-limit`, `retention`, `compliance`). Runtime consumers (e.g. model routing for `model-routing`, retention sweeps for `retention`) read policies from this store and apply them at their own boundary. Caller-plugged via `PolicyRegistryBinding`.',
|
|
42
|
+
'eval-suites': 'Evaluation suite catalog (list, get, versions, publish, unregister) — part of the admin control plane. Full versioned CRUD, mirrors `policies` 1:1. Registry-only: eval-run execution + per-kind grader dispatch live on the `eval-runs` tag. `evalKind` selects the shape of `spec` — closed enum, extended additively (`accuracy`, `pairwise`, `regression`, `human-review`, `benchmark`, `custom`). Runs against these suites are started through the `eval-runs` tag. Caller-plugged via `EvalSuiteRegistryBinding`.',
|
|
43
|
+
'eval-runs': 'Eval-run data plane (start, list, get, cancel, events SSE). Dispatches an eval run against a registered suite. Dispatch is per-`EvalKind`; kinds without a registered dispatcher return `422 dispatcher-not-registered`. `result` is kind-specific opaque JSON on the wire — for `accuracy` it is `{ passCount, totalCount, meanScore, perCase[] }`. SSE events mirror run streaming: per-case progress followed by a terminal frame carrying the aggregate. Caller-plugged via `EvalRunBinding`.',
|
|
44
|
+
auth: 'OAuth 2.0 / OIDC identity providers + session lifecycle. Layers browser-based auth on top of the static bearer-token surface: bearer tokens continue to work byte-shape-identical; session tokens use the `kgi_sk_*` prefix so the same middleware routes both flavors. Providers are caller-plugged via `IdentityProviderBinding` (no baked-in list). Sessions persist via `SessionStoreBinding`. Code exchange is caller-supplied via `exchangeCode`. PKCE (S256) is mandatory. `clientSecretRef` is a REFERENCE — the plaintext secret never crosses the wire.',
|
|
45
|
+
identity: 'Tenant-scoped identity directory (list, get, list-active-sessions, revoke-sessions, whoami) — part of the admin control plane. Caller-plugged via `IdentityDirectoryBinding` — deployments plug in their own user store (LDAP, SCIM, or bespoke). Registry-only over HTTP: the framework does NOT own user persistence. The directory is flat; groups, roles, invitations, directory sync and impersonation are not part of this surface. `primaryEmail` may be redacted per tenant policy — the routes treat it as opaque. Provider access-token / refresh-token NEVER cross the wire, even to admins.',
|
|
46
|
+
mcp: "MCP-endpoint catalog (list, get, register, unregister). Tenants declare the remote MCP servers (`stdio` / `http-sse` / `streamable-http`) they want the runtime to consume. The runtime discovers each endpoint's tools and registers them into `ToolRegistryBinding` under the same tenant — remote MCP tools become native Kindgi tools without a recompile. Secrets never cross the wire: `secretRef` names a secret in the deployment's store, resolved at the endpoint's tenant scope. A deployment refuses `stdio` endpoints unless `KINDGI_TENANT_HOST_ACCESS=local`. Caller-plugged via `MCPEndpointRegistryBinding`.",
|
|
47
|
+
deployments: 'Signed pack deployments (register, list, get). The single wire surface that lands a signed OCI image + index.json into the platform. Register runs a six-step atomic transaction: Ed25519 signature verify over the canonical `{imageDigest, artifactVersion, indexHash, tenantId, publishedAt}` envelope, tenant-scoped trust-list check via `SigningKeyRegistryBinding`, image pullability + `/app/index.json` sha256 match via `ImageRegistryBinding`, per-primitive manifest validation, registry upserts (tools + guardrails + agents + flows), append-only deployment ledger row via `DeploymentBinding`. All-or-nothing rollback on any failure; digest-based idempotency (redeploying the same image returns the existing record). Records are immutable — rollback = re-register the previous digest.',
|
|
48
|
+
compliance: 'Compliance-evidence readback + signed exports (list, get, export). Reads are a classification lens over `AuditEventBinding`; only classifier-marked `exportable` kinds appear on the wire. Signed export is caller-plugged via `SigningKeyBinding` — deployments without a signing key get `404 signing-not-configured`. Bundle envelope matches `provenance.export` + audit-bundle byte-for-byte so verifiers reuse one `verifyEd25519` wrapper across all three surfaces. Redaction happens when evidence is generated, not at the export boundary — records are stored already redacted.',
|
|
49
|
+
audit: 'PDP decision audit stream (list). Every route-level authz `check()` emits one `AuditEvent` (kind `authz-decision`) via the `AuditEventBinding`; this route pages through them, tenant-scoped, with `?actorSubject=` / `?onBehalfOf=` / `?action=` / `?resource=` / `?outcome=` / `?runId=` / `?from=` / `?to=` filters. Admin@tenant only. This view is a filtered projection of the tenant audit events.',
|
|
50
|
+
orgs: 'Multi-tenant hierarchy — Org CRUD (list, create, get, patch, delete). Optional structural subdivision within a tenant; small tenants ignore Orgs entirely. Caller-plugged via `OrgBinding` from `@kindgi/platform`.',
|
|
51
|
+
teams: 'Multi-tenant hierarchy — Team CRUD (list, create, get, patch, delete) + `TeamMembership` sub-resource (list, add, updateRole, remove). People-groups that work together on projects; users belong to many teams. Team memberships are framework-owned (no external directory sync). Membership add is idempotent on `(teamId, userId)` — role mutation goes through PATCH.',
|
|
52
|
+
projects: 'Multi-tenant hierarchy — Project CRUD (list, create, get, patch, delete) + `/projects/default` shortcut + `ProjectMembership` sub-resource (list, add, updateRole, remove). Primary content scope: every content resource belongs to exactly one project. The Default project (`isDefault: true`) is auto-created per tenant at inception — exactly one per tenant, enforced at the storage layer.',
|
|
53
|
+
tenant: 'Sovereignty boundary readback + tenant-scoped config (get tenant; list + upsert entries routed to the env / secrets bindings). There is no `/v1/tenants` collection — the caller\'s tenant is implicit from the bearer token. `PATCH /config` routes writes to `SecretBinding` when `sensitive: true` OR `kind: "secret"`; else to `EnvBinding`. `GET /config` merges both bindings at tenant scope; secret values are ALWAYS redacted here. The `/config` sub-routes mount when at least one of `envBinding` / `secretsBinding` is wired. Prefer `/v1/env/*` + `/v1/secrets/*` for new callers.',
|
|
54
|
+
env: 'Non-sensitive per-env values (`/v1/env/*`). Every route requires `envName` + `scopeKind` (+ `scopeId` for org / project); `value` is present on every read path (env is non-sensitive by definition). Writes require the `env:write` capability. Caller-plugged via `EnvBinding` (`@kindgi/env-inmemory` is an in-memory implementation for development and tests).',
|
|
55
|
+
'webhook-endpoints': 'Outbound webhooks: endpoints the platform sends signed events to (`run.finished` when a top-level run completes, fails or is cancelled), their delivery log, redelivery and a test event. Signed in the Standard Webhooks format with a secret the endpoint references by name (`secretRef`); delivered at least once, so receivers deduplicate on `webhook-id`. Event bodies are under `webhooks`. Not to be confused with `/v1/webhooks`, which are inbound triggers. Caller-plugged via `WebhookEndpointBinding`.',
|
|
56
|
+
secrets: 'Sensitive per-env values (`/v1/secrets/*`). The ONLY endpoint that accepts plaintext is `POST /v1/secrets`; every other route is metadata-only (`value` NEVER returns on list / get / listVersions / getVersion — structural redaction). Rotation is discriminated: sync providers return 201 inline, async providers return 202 with a status URL + SSE events URL. Hard-revoke performs cryptographic erasure. Every mutating route is capability-gated (`secrets:write`, `secrets:rotate`, `secrets:revoke`, `secrets:revoke:hard`).',
|
|
57
|
+
};
|
|
58
|
+
export function generateOpenApiDocument(opts = {}) {
|
|
59
|
+
const info = { ...DEFAULT_INFO, ...opts.info };
|
|
60
|
+
const servers = opts.servers ?? DEFAULT_SERVERS;
|
|
61
|
+
const paths = buildPaths(OPERATIONS);
|
|
62
|
+
const components = {
|
|
63
|
+
schemas: Object.fromEntries(COMPONENT_SCHEMAS),
|
|
64
|
+
securitySchemes: {
|
|
65
|
+
bearerAuth: {
|
|
66
|
+
type: 'http',
|
|
67
|
+
scheme: 'bearer',
|
|
68
|
+
description: "Bearer token minted via `POST /v1/tokens` (or the deployment's equivalent). See `docs/API-ROUTE-CONVENTIONS.md` §2.",
|
|
69
|
+
},
|
|
70
|
+
publicRunToken: {
|
|
71
|
+
type: 'http',
|
|
72
|
+
scheme: 'bearer',
|
|
73
|
+
bearerFormat: 'kgi_pt',
|
|
74
|
+
description: 'Public run token (`kgi_pt_…`): short-lived and read-only, for a browser following specific runs. Returned by `POST /v1/runs` and minted by `POST /v1/tokens/public`. Accepted only by `GET /v1/runs/{runId}/progress` and its stream.',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
const tags = uniqueTags(OPERATIONS).map((name) => ({
|
|
79
|
+
name,
|
|
80
|
+
...(TAG_DESCRIPTIONS[name] !== undefined && { description: TAG_DESCRIPTIONS[name] }),
|
|
81
|
+
}));
|
|
82
|
+
return {
|
|
83
|
+
openapi: '3.1.0',
|
|
84
|
+
info,
|
|
85
|
+
servers,
|
|
86
|
+
tags,
|
|
87
|
+
components,
|
|
88
|
+
paths,
|
|
89
|
+
webhooks: buildOutboundWebhooks(),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The requests the platform sends to registered webhook endpoints
|
|
94
|
+
* (OpenAPI 3.1 `webhooks`): one entry per event type, all signed the same
|
|
95
|
+
* way.
|
|
96
|
+
*/
|
|
97
|
+
function buildOutboundWebhooks() {
|
|
98
|
+
const signatureHeaders = [
|
|
99
|
+
{
|
|
100
|
+
name: 'webhook-id',
|
|
101
|
+
in: 'header',
|
|
102
|
+
required: true,
|
|
103
|
+
description: 'The event id; the same on every retry. Deduplicate on it.',
|
|
104
|
+
schema: { type: 'string' },
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'webhook-timestamp',
|
|
108
|
+
in: 'header',
|
|
109
|
+
required: true,
|
|
110
|
+
description: 'Unix seconds when the request was signed. Reject requests far from your clock.',
|
|
111
|
+
schema: { type: 'string', pattern: '^[0-9]+$' },
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'webhook-signature',
|
|
115
|
+
in: 'header',
|
|
116
|
+
required: true,
|
|
117
|
+
description: '`v1,<base64 HMAC-SHA256 of "{webhook-id}.{webhook-timestamp}.{body}">` under the endpoint\'s secret; space-separated when two secrets sign during a rotation.',
|
|
118
|
+
schema: { type: 'string' },
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
const event = (type, summary, schema) => ({
|
|
122
|
+
post: {
|
|
123
|
+
operationId: `webhook.${type}`,
|
|
124
|
+
summary,
|
|
125
|
+
tags: ['webhook-endpoints'],
|
|
126
|
+
// The receiver authenticates the request by its signature
|
|
127
|
+
// (`webhook-signature`), not by an API credential.
|
|
128
|
+
security: [],
|
|
129
|
+
parameters: signatureHeaders,
|
|
130
|
+
requestBody: {
|
|
131
|
+
required: true,
|
|
132
|
+
content: { 'application/json': { schema: { $ref: `#/components/schemas/${schema}` } } },
|
|
133
|
+
},
|
|
134
|
+
responses: {
|
|
135
|
+
'2XX': {
|
|
136
|
+
description: 'Received. Any other answer, or none within 10 seconds, is retried.',
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
'run.finished': event('run.finished', 'A top-level run completed, failed or was cancelled', 'RunFinishedEvent'),
|
|
143
|
+
'webhook.test': event('webhook.test', 'A test event sent on request (`POST /v1/webhook-endpoints/{endpointId}/test`)', 'WebhookTestEvent'),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// ---------------- internals ----------------
|
|
147
|
+
function buildPaths(ops) {
|
|
148
|
+
const paths = {};
|
|
149
|
+
for (const op of ops) {
|
|
150
|
+
const key = op.openapiPath ?? honoToOpenapiPath(op.honoPath);
|
|
151
|
+
let bucket = paths[key];
|
|
152
|
+
if (bucket === undefined) {
|
|
153
|
+
bucket = {};
|
|
154
|
+
paths[key] = bucket;
|
|
155
|
+
}
|
|
156
|
+
if (bucket[op.method] !== undefined) {
|
|
157
|
+
throw new Error(`Duplicate operation for ${op.method.toUpperCase()} ${key}`);
|
|
158
|
+
}
|
|
159
|
+
bucket[op.method] = buildOperation(op);
|
|
160
|
+
}
|
|
161
|
+
return paths;
|
|
162
|
+
}
|
|
163
|
+
function buildOperation(op) {
|
|
164
|
+
const doc = {
|
|
165
|
+
operationId: op.operationId,
|
|
166
|
+
summary: op.summary,
|
|
167
|
+
tags: [...op.tags],
|
|
168
|
+
responses: buildResponses(op.responses),
|
|
169
|
+
};
|
|
170
|
+
if (op.description !== undefined)
|
|
171
|
+
doc.description = op.description;
|
|
172
|
+
if (op.parameters !== undefined && op.parameters.length > 0) {
|
|
173
|
+
doc.parameters = op.parameters.map(buildParameter);
|
|
174
|
+
}
|
|
175
|
+
if (op.requestBody !== undefined) {
|
|
176
|
+
const contentType = op.requestBody.contentType ?? 'application/json';
|
|
177
|
+
const contentSlot = { schema: op.requestBody.schema };
|
|
178
|
+
if (op.requestBody.encoding !== undefined) {
|
|
179
|
+
contentSlot.encoding = op.requestBody.encoding;
|
|
180
|
+
}
|
|
181
|
+
doc.requestBody = {
|
|
182
|
+
required: op.requestBody.required ?? true,
|
|
183
|
+
...(op.requestBody.description !== undefined && {
|
|
184
|
+
description: op.requestBody.description,
|
|
185
|
+
}),
|
|
186
|
+
content: {
|
|
187
|
+
[contentType]: contentSlot,
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (op.security === 'bearer') {
|
|
192
|
+
doc.security = [{ bearerAuth: [] }];
|
|
193
|
+
}
|
|
194
|
+
else if (op.security === 'bearer-or-public-run') {
|
|
195
|
+
doc.security = [{ bearerAuth: [] }, { publicRunToken: [] }];
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
doc.security = [];
|
|
199
|
+
}
|
|
200
|
+
return doc;
|
|
201
|
+
}
|
|
202
|
+
function buildParameter(p) {
|
|
203
|
+
const doc = {
|
|
204
|
+
name: p.name,
|
|
205
|
+
in: p.in,
|
|
206
|
+
schema: p.schema,
|
|
207
|
+
};
|
|
208
|
+
if (p.required !== undefined)
|
|
209
|
+
doc.required = p.required;
|
|
210
|
+
else if (p.in === 'path')
|
|
211
|
+
doc.required = true;
|
|
212
|
+
if (p.description !== undefined)
|
|
213
|
+
doc.description = p.description;
|
|
214
|
+
return doc;
|
|
215
|
+
}
|
|
216
|
+
function buildResponses(responses) {
|
|
217
|
+
const doc = {};
|
|
218
|
+
for (const [status, spec] of Object.entries(responses)) {
|
|
219
|
+
const entry = { description: spec.description };
|
|
220
|
+
if (spec.schema !== undefined) {
|
|
221
|
+
const contentType = spec.contentType ?? 'application/json';
|
|
222
|
+
entry.content = { [contentType]: { schema: spec.schema } };
|
|
223
|
+
}
|
|
224
|
+
doc[status] = entry;
|
|
225
|
+
}
|
|
226
|
+
return doc;
|
|
227
|
+
}
|
|
228
|
+
function uniqueTags(ops) {
|
|
229
|
+
const seen = new Set();
|
|
230
|
+
const out = [];
|
|
231
|
+
for (const op of ops) {
|
|
232
|
+
for (const t of op.tags) {
|
|
233
|
+
if (seen.has(t))
|
|
234
|
+
continue;
|
|
235
|
+
seen.add(t);
|
|
236
|
+
out.push(t);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return out;
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/openapi/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation registry — the single source of truth for the OpenAPI
|
|
3
|
+
* document. Every route mounted on the Hono app has exactly one entry
|
|
4
|
+
* here; the drift test in `tests/openapi.test.ts` fails if that
|
|
5
|
+
* guardrail breaks.
|
|
6
|
+
*
|
|
7
|
+
* Fields:
|
|
8
|
+
* - `honoPath` — the path segment as registered via `r.get(path, ...)` in
|
|
9
|
+
* the corresponding router. `:id` style.
|
|
10
|
+
* - `openapiPath` — OpenAPI 3.1 templated path (`{id}` style). Derived
|
|
11
|
+
* automatically by the drift test if you leave it out —
|
|
12
|
+
* but authored explicitly here so the emitted JSON is
|
|
13
|
+
* easy to scan.
|
|
14
|
+
* - `security` — `'bearer'` (default) or `'public'`. Public routes are
|
|
15
|
+
* mounted outside the `/v1/*` auth chain.
|
|
16
|
+
*
|
|
17
|
+
* All request/response schemas are `$ref`s into
|
|
18
|
+
* `components.schemas` (populated from `schemas.ts`).
|
|
19
|
+
*/
|
|
20
|
+
import { type JsonSchema } from './schemas.js';
|
|
21
|
+
export type HttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete' | 'head';
|
|
22
|
+
export interface ParameterSpec {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly in: 'query' | 'header' | 'path';
|
|
25
|
+
readonly required?: boolean;
|
|
26
|
+
readonly description?: string;
|
|
27
|
+
readonly schema: JsonSchema;
|
|
28
|
+
}
|
|
29
|
+
export interface ResponseSpec {
|
|
30
|
+
readonly description: string;
|
|
31
|
+
/** JSON body schema for `application/json` responses. Omit for streaming responses. */
|
|
32
|
+
readonly schema?: JsonSchema;
|
|
33
|
+
/** Content-type of the response body. Defaults to `application/json`. */
|
|
34
|
+
readonly contentType?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface OperationSpec {
|
|
37
|
+
readonly method: HttpMethod;
|
|
38
|
+
readonly honoPath: string;
|
|
39
|
+
readonly openapiPath: string;
|
|
40
|
+
readonly operationId: string;
|
|
41
|
+
readonly summary: string;
|
|
42
|
+
readonly description?: string;
|
|
43
|
+
readonly tags: readonly string[];
|
|
44
|
+
/**
|
|
45
|
+
* `bearer`: an API token. `bearer-or-public-run`: an API token, or a
|
|
46
|
+
* public run token (`kgi_pt_…`) naming the run, which gets the public
|
|
47
|
+
* view. `public`: no authentication.
|
|
48
|
+
*/
|
|
49
|
+
readonly security: 'bearer' | 'bearer-or-public-run' | 'public';
|
|
50
|
+
readonly parameters?: readonly ParameterSpec[];
|
|
51
|
+
readonly requestBody?: {
|
|
52
|
+
readonly required?: boolean;
|
|
53
|
+
readonly description?: string;
|
|
54
|
+
readonly schema: JsonSchema;
|
|
55
|
+
/**
|
|
56
|
+
* Wire content type. Defaults to `application/json`. Set to
|
|
57
|
+
* `multipart/form-data` (or a comma-separated list) for uploads
|
|
58
|
+
* — the schema then describes the form parts, and OpenAPI will
|
|
59
|
+
* emit the appropriate `content.<type>` slot.
|
|
60
|
+
*/
|
|
61
|
+
readonly contentType?: string;
|
|
62
|
+
/** Optional `encoding` map for multipart form parts. */
|
|
63
|
+
readonly encoding?: Readonly<Record<string, Record<string, unknown>>>;
|
|
64
|
+
};
|
|
65
|
+
readonly responses: Readonly<Record<string, ResponseSpec>>;
|
|
66
|
+
}
|
|
67
|
+
export declare const OPERATIONS: readonly OperationSpec[];
|
|
68
|
+
/** Utility used by both the generator and the drift test. */
|
|
69
|
+
export declare function honoToOpenapiPath(honoPath: string): string;
|
|
70
|
+
//# sourceMappingURL=operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/openapi/operations.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAO,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,sBAAsB,GAAG,QAAQ,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;QAC5B;;;;;WAKG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,wDAAwD;QACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;CAC5D;AAyyBD,eAAO,MAAM,UAAU,EAAE,SAAS,aAAa,EA48IrC,CAAC;AAEX,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|