@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,228 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { Hono } from 'hono';
|
|
5
|
+
import { statusFor, toWireError } from '../errors.js';
|
|
6
|
+
import { clampLimit } from './pagination.js';
|
|
7
|
+
/**
|
|
8
|
+
* Webhook triggers — fire a flow run when an HMAC-signed request
|
|
9
|
+
* arrives at the receiver URL.
|
|
10
|
+
*
|
|
11
|
+
* Seven admin routes on this file. The unauthenticated external
|
|
12
|
+
* receiver is not part of this router.
|
|
13
|
+
*
|
|
14
|
+
* Admin URLs use `:triggerId` (the row id) for consistency with
|
|
15
|
+
* schedules and event-triggers. Response bodies include `webhookId`
|
|
16
|
+
* (the routable identifier) so clients can compose the receiver URL.
|
|
17
|
+
*
|
|
18
|
+
* HMAC secrets — never plaintext on this row. The register body
|
|
19
|
+
* carries `hmacSecretName`, a handle into the tenant secrets store the
|
|
20
|
+
* caller wrote to first via `POST /v1/secrets`. Rotation flows through
|
|
21
|
+
* `POST /v1/secrets/:name/rotate` — trigger row untouched.
|
|
22
|
+
*/
|
|
23
|
+
export function webhooksRouter(binding) {
|
|
24
|
+
const r = new Hono();
|
|
25
|
+
// ---------- POST / (register) ----------
|
|
26
|
+
r.post('/', async (c) => {
|
|
27
|
+
const requestId = c.get('requestId');
|
|
28
|
+
const tenantId = c.get('tenantId');
|
|
29
|
+
const parsed = await parseJsonObject(c, requestId);
|
|
30
|
+
if (parsed.kind === 'err')
|
|
31
|
+
return parsed.response;
|
|
32
|
+
const body = parsed.value;
|
|
33
|
+
const flowId = requireString(body, 'flowId');
|
|
34
|
+
const flowVersion = requireString(body, 'flowVersion');
|
|
35
|
+
const hmacSecretName = requireString(body, 'hmacSecretName');
|
|
36
|
+
if (flowId.kind === 'err')
|
|
37
|
+
return bad(c, requestId, flowId.message);
|
|
38
|
+
if (flowVersion.kind === 'err')
|
|
39
|
+
return bad(c, requestId, flowVersion.message);
|
|
40
|
+
if (hmacSecretName.kind === 'err')
|
|
41
|
+
return bad(c, requestId, hmacSecretName.message);
|
|
42
|
+
const rawConfig = (body.config ?? {});
|
|
43
|
+
// Route mints the webhookId — a random UUID, returned so the caller
|
|
44
|
+
// learns the receiver URL from the response.
|
|
45
|
+
const webhookId = randomUUID();
|
|
46
|
+
const registerInput = {
|
|
47
|
+
kind: 'webhook',
|
|
48
|
+
tenantId,
|
|
49
|
+
flowId: flowId.value,
|
|
50
|
+
flowVersion: flowVersion.value,
|
|
51
|
+
config: {
|
|
52
|
+
...('input' in rawConfig && { input: rawConfig.input }),
|
|
53
|
+
},
|
|
54
|
+
webhookId,
|
|
55
|
+
hmacSecretName: hmacSecretName.value,
|
|
56
|
+
...(typeof body.label === 'string' && body.label.length > 0 && { label: body.label }),
|
|
57
|
+
};
|
|
58
|
+
const result = await binding.register(registerInput);
|
|
59
|
+
if (result.kind === 'err') {
|
|
60
|
+
c.status(statusFor(result.error.code));
|
|
61
|
+
return c.json(toWireError({ code: result.error.code, message: result.error.message }, requestId));
|
|
62
|
+
}
|
|
63
|
+
c.status(201);
|
|
64
|
+
return c.json(serializeWebhook(result.value));
|
|
65
|
+
});
|
|
66
|
+
// ---------- GET / (list) ----------
|
|
67
|
+
r.get('/', async (c) => {
|
|
68
|
+
const tenantId = c.get('tenantId');
|
|
69
|
+
const limit = clampLimit(c.req.query('limit'));
|
|
70
|
+
const cursorRaw = c.req.query('cursor');
|
|
71
|
+
const statusRaw = c.req.query('status');
|
|
72
|
+
let statusFilter;
|
|
73
|
+
if (statusRaw === 'active' || statusRaw === 'paused')
|
|
74
|
+
statusFilter = statusRaw;
|
|
75
|
+
const page = await binding.list({
|
|
76
|
+
tenantId,
|
|
77
|
+
kind: 'webhook',
|
|
78
|
+
limit,
|
|
79
|
+
...(cursorRaw !== undefined && cursorRaw.length > 0 && { cursor: cursorRaw }),
|
|
80
|
+
...(statusFilter !== undefined && { status: statusFilter }),
|
|
81
|
+
});
|
|
82
|
+
return c.json({
|
|
83
|
+
data: page.data.map((row) => serializeWebhook(row)),
|
|
84
|
+
hasMore: page.nextCursor !== undefined,
|
|
85
|
+
...(page.nextCursor !== undefined && { nextCursor: page.nextCursor }),
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
// ---------- GET /:triggerId (get) ----------
|
|
89
|
+
r.get('/:triggerId', async (c) => {
|
|
90
|
+
const requestId = c.get('requestId');
|
|
91
|
+
const tenantId = c.get('tenantId');
|
|
92
|
+
const triggerId = c.req.param('triggerId');
|
|
93
|
+
const rec = await binding.get({ tenantId, triggerId });
|
|
94
|
+
if (rec === null || rec.kind !== 'webhook')
|
|
95
|
+
return notFound(c, requestId, triggerId);
|
|
96
|
+
return c.json(serializeWebhook(rec));
|
|
97
|
+
});
|
|
98
|
+
// ---------- PATCH /:triggerId (update) ----------
|
|
99
|
+
r.patch('/:triggerId', async (c) => {
|
|
100
|
+
const requestId = c.get('requestId');
|
|
101
|
+
const tenantId = c.get('tenantId');
|
|
102
|
+
const triggerId = c.req.param('triggerId');
|
|
103
|
+
const parsed = await parseJsonObject(c, requestId);
|
|
104
|
+
if (parsed.kind === 'err')
|
|
105
|
+
return parsed.response;
|
|
106
|
+
const body = parsed.value;
|
|
107
|
+
const patchConfig = body.config;
|
|
108
|
+
const cfg = {};
|
|
109
|
+
if (patchConfig !== undefined && 'input' in patchConfig)
|
|
110
|
+
cfg.input = patchConfig.input;
|
|
111
|
+
const updateInput = {
|
|
112
|
+
kind: 'webhook',
|
|
113
|
+
tenantId,
|
|
114
|
+
triggerId,
|
|
115
|
+
...(Object.keys(cfg).length > 0 && { config: cfg }),
|
|
116
|
+
...('label' in body && { label: body.label === null ? null : body.label }),
|
|
117
|
+
...(typeof body.flowVersion === 'string' && { flowVersion: body.flowVersion }),
|
|
118
|
+
};
|
|
119
|
+
const result = await binding.update(updateInput);
|
|
120
|
+
if (result.kind === 'err') {
|
|
121
|
+
c.status(statusFor(result.error.code));
|
|
122
|
+
return c.json(toWireError({
|
|
123
|
+
code: result.error.code,
|
|
124
|
+
message: result.error.message,
|
|
125
|
+
triggerId: triggerId,
|
|
126
|
+
}, requestId));
|
|
127
|
+
}
|
|
128
|
+
return c.json(serializeWebhook(result.value));
|
|
129
|
+
});
|
|
130
|
+
// ---------- POST /:triggerId/pause ----------
|
|
131
|
+
r.post('/:triggerId/pause', async (c) => {
|
|
132
|
+
const requestId = c.get('requestId');
|
|
133
|
+
const tenantId = c.get('tenantId');
|
|
134
|
+
const triggerId = c.req.param('triggerId');
|
|
135
|
+
const result = await binding.pause({ tenantId, triggerId });
|
|
136
|
+
if (result.kind === 'err')
|
|
137
|
+
return lifecycleError(c, requestId, result.error, triggerId);
|
|
138
|
+
return c.json(serializeWebhook(result.value));
|
|
139
|
+
});
|
|
140
|
+
// ---------- POST /:triggerId/resume ----------
|
|
141
|
+
r.post('/:triggerId/resume', async (c) => {
|
|
142
|
+
const requestId = c.get('requestId');
|
|
143
|
+
const tenantId = c.get('tenantId');
|
|
144
|
+
const triggerId = c.req.param('triggerId');
|
|
145
|
+
const result = await binding.resume({ tenantId, triggerId });
|
|
146
|
+
if (result.kind === 'err')
|
|
147
|
+
return lifecycleError(c, requestId, result.error, triggerId);
|
|
148
|
+
return c.json(serializeWebhook(result.value));
|
|
149
|
+
});
|
|
150
|
+
// ---------- POST /:triggerId/unregister (soft delete) ----------
|
|
151
|
+
r.post('/:triggerId/unregister', async (c) => {
|
|
152
|
+
const tenantId = c.get('tenantId');
|
|
153
|
+
const triggerId = c.req.param('triggerId');
|
|
154
|
+
const outcome = await binding.unregister({ tenantId, triggerId });
|
|
155
|
+
return c.json({
|
|
156
|
+
triggerId: triggerId,
|
|
157
|
+
unregistered: outcome.unregistered,
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
return r;
|
|
161
|
+
}
|
|
162
|
+
function serializeWebhook(r) {
|
|
163
|
+
return {
|
|
164
|
+
triggerId: r.triggerId,
|
|
165
|
+
webhookId: r.webhookId,
|
|
166
|
+
flowId: r.flowId,
|
|
167
|
+
flowVersion: r.flowVersion,
|
|
168
|
+
...(r.config.input !== undefined && { input: r.config.input }),
|
|
169
|
+
hmacSecretName: r.hmacSecretName,
|
|
170
|
+
label: r.label,
|
|
171
|
+
status: r.status,
|
|
172
|
+
lastFiredAt: r.lastFiredAt,
|
|
173
|
+
createdAt: r.createdAt,
|
|
174
|
+
updatedAt: r.updatedAt,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async function parseJsonObject(c, requestId) {
|
|
178
|
+
let body;
|
|
179
|
+
try {
|
|
180
|
+
body = await c.req.json();
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
c.status(statusFor('bad-input'));
|
|
184
|
+
return {
|
|
185
|
+
kind: 'err',
|
|
186
|
+
response: c.json(toWireError({ code: 'bad-input', message: 'Request body must be valid JSON' }, requestId)),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body)) {
|
|
190
|
+
c.status(statusFor('bad-input'));
|
|
191
|
+
return {
|
|
192
|
+
kind: 'err',
|
|
193
|
+
response: c.json(toWireError({ code: 'bad-input', message: 'Request body must be a JSON object' }, requestId)),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
return { kind: 'ok', value: body };
|
|
197
|
+
}
|
|
198
|
+
function requireString(obj, path) {
|
|
199
|
+
const parts = path.split('.');
|
|
200
|
+
let cur = obj;
|
|
201
|
+
for (const part of parts) {
|
|
202
|
+
if (cur === null || typeof cur !== 'object') {
|
|
203
|
+
return { kind: 'err', message: `\`${path}\` is required` };
|
|
204
|
+
}
|
|
205
|
+
cur = cur[part];
|
|
206
|
+
}
|
|
207
|
+
if (typeof cur !== 'string' || cur.length === 0) {
|
|
208
|
+
return { kind: 'err', message: `\`${path}\` is required` };
|
|
209
|
+
}
|
|
210
|
+
return { kind: 'ok', value: cur };
|
|
211
|
+
}
|
|
212
|
+
function bad(c, requestId, message) {
|
|
213
|
+
c.status(statusFor('bad-input'));
|
|
214
|
+
return c.json(toWireError({ code: 'bad-input', message }, requestId));
|
|
215
|
+
}
|
|
216
|
+
function notFound(c, requestId, triggerId) {
|
|
217
|
+
c.status(statusFor('trigger-not-found'));
|
|
218
|
+
return c.json(toWireError({
|
|
219
|
+
code: 'trigger-not-found',
|
|
220
|
+
message: `No trigger with id "${triggerId}"`,
|
|
221
|
+
triggerId: triggerId,
|
|
222
|
+
}, requestId));
|
|
223
|
+
}
|
|
224
|
+
function lifecycleError(c, requestId, error, triggerId) {
|
|
225
|
+
c.status(statusFor(error.code));
|
|
226
|
+
return c.json(toWireError({ code: error.code, message: error.message, triggerId: triggerId }, requestId));
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/routes/webhooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { TenantId } from '@kindgi/types';
|
|
2
|
+
/**
|
|
3
|
+
* Caller-plugged surface for AWS-style credentials that authenticate
|
|
4
|
+
* against the S3-compat `/s3/*` wire surface. Mirrors the
|
|
5
|
+
* `TokenResolver` shape (auth.ts): resolve an `accessKeyId` to a
|
|
6
|
+
* `S3Credential`, or `null` for missing / expired / revoked.
|
|
7
|
+
*
|
|
8
|
+
* Every deployment owns credential issuance out-of-band (an admin
|
|
9
|
+
* route or an operator console). This binding only resolves; it
|
|
10
|
+
* does not mint. Deployments typically issue credentials paired 1-to-1
|
|
11
|
+
* with a bucket + tenant.
|
|
12
|
+
*
|
|
13
|
+
* The SigV4 middleware calls `resolve(accessKeyId)` on every request,
|
|
14
|
+
* uses `secretKey` to recompute the expected signature, and if the
|
|
15
|
+
* comparison passes, sets `c.set('tenantId', credential.tenantId)` +
|
|
16
|
+
* `c.set('bucket', credential.bucket)` for downstream routes. The
|
|
17
|
+
* caller-supplied bucket in the URL is compared to `credential.bucket`
|
|
18
|
+
* — mismatch → `403 AccessDenied` (bucket-scoped credentials).
|
|
19
|
+
*
|
|
20
|
+
* ## Scope classification
|
|
21
|
+
*
|
|
22
|
+
* S3 credentials are a policy/config-scoped resource. This binding
|
|
23
|
+
* does not carry the uniform `{ scope?: Scope, inherit?: boolean }`
|
|
24
|
+
* filter fields because it exposes only a runtime-bound
|
|
25
|
+
* `resolve(accessKeyId)` entry-point — no `list()` / `*ListInput` /
|
|
26
|
+
* filter surface. The Scope discipline still applies to stored
|
|
27
|
+
* credentials (each carries a tenant / org / project scope, like MCP
|
|
28
|
+
* endpoints), and a `list()` method — if added for an admin plane —
|
|
29
|
+
* must gain the same `{ scope?: Scope, inherit?: boolean }` shape
|
|
30
|
+
* (policy/config semantics: `inherit` load-bearing). There is no admin
|
|
31
|
+
* list surface.
|
|
32
|
+
*/
|
|
33
|
+
export type S3CredentialBinding = {
|
|
34
|
+
resolve(accessKeyId: string): Promise<S3Credential | null>;
|
|
35
|
+
};
|
|
36
|
+
export interface S3Credential {
|
|
37
|
+
/** Long-form secret paired with `accessKeyId`; used to recompute SigV4. */
|
|
38
|
+
readonly secretKey: string;
|
|
39
|
+
/** Which tenant this credential belongs to. */
|
|
40
|
+
readonly tenantId: TenantId;
|
|
41
|
+
/**
|
|
42
|
+
* Which bucket this credential is authorized for. One bucket per
|
|
43
|
+
* credential. Requests for other buckets return `403 AccessDenied`.
|
|
44
|
+
* The `artifacts` bucket is where bespoke uploads conventionally land
|
|
45
|
+
* — credentials granted this bucket see bespoke uploads too.
|
|
46
|
+
*/
|
|
47
|
+
readonly bucket: string;
|
|
48
|
+
/**
|
|
49
|
+
* Optional expiration. If set and past, the middleware treats the
|
|
50
|
+
* credential as expired even if this resolver returned it.
|
|
51
|
+
*/
|
|
52
|
+
readonly expiresAt?: Date;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=s3-credential-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-credential-binding.d.ts","sourceRoot":"","sources":["../src/s3-credential-binding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3-credential-binding.js","sourceRoot":"","sources":["../src/s3-credential-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import type { TupleEnqueueHook } from '@kindgi/authz';
|
|
2
|
+
import type { Scope } from '@kindgi/platform';
|
|
3
|
+
import type { Cursor, EnvName, Result } from '@kindgi/types';
|
|
4
|
+
/**
|
|
5
|
+
* Secret names starting with this prefix are reserved for framework-internal
|
|
6
|
+
* material (e.g. webhook HMAC keys the runtime manages). `SecretBinding.set` rejects them
|
|
7
|
+
* from callers unless the adapter was constructed to allow reserved names.
|
|
8
|
+
* Every adapter enforces the same prefix — import it, don't redefine it.
|
|
9
|
+
*/
|
|
10
|
+
export declare const RESERVED_SECRET_NAME_PREFIX = "kindgi.";
|
|
11
|
+
/**
|
|
12
|
+
* Caller-plugged secret store — the framework consumer's surface for
|
|
13
|
+
* every secret-lifecycle op. Every method is scope + env-scoped, where
|
|
14
|
+
* `scope` is the discriminated primitive from `@kindgi/platform`
|
|
15
|
+
* (Tenant / Org / Project). Writes declare the scope explicitly; reads
|
|
16
|
+
* resolve via most-specific-wins walk across the scope hierarchy.
|
|
17
|
+
*
|
|
18
|
+
* Callers (routes, runtime dispatch, SDK clients) speak this interface
|
|
19
|
+
* ONLY. Concrete storage — envelope-encrypted bytes in a database,
|
|
20
|
+
* delegation to an external secret manager, etc. — is a `SecretBinding`
|
|
21
|
+
* implementation choice.
|
|
22
|
+
*
|
|
23
|
+
* Wire-safety: plaintext is returned only by `resolve`. `SecretRecord`
|
|
24
|
+
* carries no value, and `SecretVersionRecord.value` is always `null`
|
|
25
|
+
* from `getVersion` / `listVersions`. All list / get paths return
|
|
26
|
+
* metadata only. This is a STRUCTURAL guardrail of the interface, not
|
|
27
|
+
* a caller convention.
|
|
28
|
+
*
|
|
29
|
+
* Env-safety: cross-env reads are refused. A caller in `envName:
|
|
30
|
+
* staging` cannot resolve a secret written under `envName: production`
|
|
31
|
+
* — adapter returns `secret-not-found` (indistinguishable from
|
|
32
|
+
* "doesn't exist" by design; refuses to leak the existence of a
|
|
33
|
+
* cross-env sibling).
|
|
34
|
+
*/
|
|
35
|
+
export interface SecretBinding {
|
|
36
|
+
/** Cursor-paginated list of secret metadata. Never returns `value`. */
|
|
37
|
+
list(input: SecretListInput): Promise<SecretListPage>;
|
|
38
|
+
/** Fetch metadata for a single secret. `null` when unknown. */
|
|
39
|
+
get(input: SecretGetInput): Promise<SecretRecord | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve a secret's plaintext value at dispatch time. Distinct
|
|
42
|
+
* method from `get` — different capability gate, different audit
|
|
43
|
+
* event, different rate profile. Called by the runtime (handler
|
|
44
|
+
* dispatch, deploy-time sync, boot — see `ResolveContext.caller`),
|
|
45
|
+
* not by the HTTP routes. Emits a `secret-resolved` compliance-evidence
|
|
46
|
+
* event on every call.
|
|
47
|
+
*/
|
|
48
|
+
resolve(input: SecretResolveInput): Promise<Result<SecretResolveOutcome, SecretError>>;
|
|
49
|
+
/** Metadata for a specific version. */
|
|
50
|
+
getVersion(input: SecretGetVersionInput): Promise<SecretVersionRecord | null>;
|
|
51
|
+
/** List all versions for a secret. Metadata only. */
|
|
52
|
+
listVersions(input: SecretListVersionsInput): Promise<SecretVersionPage>;
|
|
53
|
+
/**
|
|
54
|
+
* Create a secret OR write a new version. `writeMode` discriminates:
|
|
55
|
+
* - `'create-new'` fails with `already-exists` if the secret exists
|
|
56
|
+
* - `'add-version'` writes a new version, bumps counter atomically
|
|
57
|
+
*/
|
|
58
|
+
set(input: SecretSetInput): Promise<SecretSetOutcome>;
|
|
59
|
+
/**
|
|
60
|
+
* Explicit rotation. Adapters that support caller-driven rotation
|
|
61
|
+
* accept `newValue`; provider-driven rotation (a secret manager's own
|
|
62
|
+
* rotation workflow) ignores it and returns the new version once the
|
|
63
|
+
* provider workflow completes. Emits a `secret-rotated` event.
|
|
64
|
+
*/
|
|
65
|
+
rotate(input: SecretRotateInput): Promise<Result<SecretRotateOutcome, SecretError>>;
|
|
66
|
+
/**
|
|
67
|
+
* Revoke a secret. Retains the record (soft-delete) so audit trails
|
|
68
|
+
* remain resolvable; adapters MUST return `null` from `get` /
|
|
69
|
+
* `resolve` for revoked secrets. `hard: true` performs irreversible
|
|
70
|
+
* destroy for GDPR right-to-erasure. Emits a `secret-revoked` event.
|
|
71
|
+
*/
|
|
72
|
+
revoke(input: SecretRevokeInput): Promise<Result<SecretRevokeOutcome, SecretError>>;
|
|
73
|
+
}
|
|
74
|
+
export interface SecretRecord {
|
|
75
|
+
readonly scope: Scope;
|
|
76
|
+
readonly envName: EnvName;
|
|
77
|
+
readonly name: string;
|
|
78
|
+
readonly currentVersion: number;
|
|
79
|
+
readonly createdAt: string;
|
|
80
|
+
readonly updatedAt: string;
|
|
81
|
+
readonly revokedAt?: string;
|
|
82
|
+
readonly revokeReason?: string;
|
|
83
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
84
|
+
readonly rotationDueAt?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface SecretVersionRecord {
|
|
87
|
+
readonly scope: Scope;
|
|
88
|
+
readonly envName: EnvName;
|
|
89
|
+
readonly name: string;
|
|
90
|
+
readonly versionId: number;
|
|
91
|
+
readonly createdAt: string;
|
|
92
|
+
/**
|
|
93
|
+
* Always `null` from `getVersion` / `listVersions`; plaintext comes only
|
|
94
|
+
* from `resolve` (`SecretResolveOutcome.value`).
|
|
95
|
+
*/
|
|
96
|
+
readonly value: string | null;
|
|
97
|
+
readonly revokedAt?: string;
|
|
98
|
+
}
|
|
99
|
+
export interface SecretListInput {
|
|
100
|
+
readonly scope: Scope;
|
|
101
|
+
readonly envName: EnvName;
|
|
102
|
+
readonly limit: number;
|
|
103
|
+
readonly cursor?: Cursor;
|
|
104
|
+
readonly namePrefix?: string;
|
|
105
|
+
readonly tagFilter?: Readonly<Record<string, string>>;
|
|
106
|
+
readonly includeRevoked?: boolean;
|
|
107
|
+
}
|
|
108
|
+
export interface SecretListPage {
|
|
109
|
+
readonly data: readonly SecretRecord[];
|
|
110
|
+
readonly nextCursor?: Cursor;
|
|
111
|
+
}
|
|
112
|
+
export interface SecretGetInput {
|
|
113
|
+
readonly scope: Scope;
|
|
114
|
+
readonly envName: EnvName;
|
|
115
|
+
readonly name: string;
|
|
116
|
+
}
|
|
117
|
+
export interface SecretResolveInput {
|
|
118
|
+
readonly scope: Scope;
|
|
119
|
+
readonly envName: EnvName;
|
|
120
|
+
readonly name: string;
|
|
121
|
+
readonly version?: number;
|
|
122
|
+
readonly resolveContext: ResolveContext;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Uniform across `EnvBinding.resolve` + `SecretBinding.resolve`.
|
|
126
|
+
* Names the caller of the resolution for audit-emit attribution.
|
|
127
|
+
*
|
|
128
|
+
* Declared here (rather than in a separate module) because the
|
|
129
|
+
* `SecretBinding` interface is the larger of the two — env-binding.ts
|
|
130
|
+
* imports the type back from this module to keep the ownership flow
|
|
131
|
+
* one-directional (env → secrets, not both).
|
|
132
|
+
*/
|
|
133
|
+
export interface ResolveContext {
|
|
134
|
+
readonly runId?: string;
|
|
135
|
+
readonly deploymentId?: string;
|
|
136
|
+
readonly nodeId?: string;
|
|
137
|
+
readonly caller: 'dispatch' | 'deploy-sync' | 'admin-cli' | 'boot-bridge';
|
|
138
|
+
}
|
|
139
|
+
export interface SecretResolveOutcome {
|
|
140
|
+
readonly name: string;
|
|
141
|
+
readonly versionId: number;
|
|
142
|
+
readonly value: string;
|
|
143
|
+
}
|
|
144
|
+
export interface SecretGetVersionInput {
|
|
145
|
+
readonly scope: Scope;
|
|
146
|
+
readonly envName: EnvName;
|
|
147
|
+
readonly name: string;
|
|
148
|
+
readonly versionId: number;
|
|
149
|
+
}
|
|
150
|
+
export interface SecretListVersionsInput {
|
|
151
|
+
readonly scope: Scope;
|
|
152
|
+
readonly envName: EnvName;
|
|
153
|
+
readonly name: string;
|
|
154
|
+
readonly limit: number;
|
|
155
|
+
readonly cursor?: Cursor;
|
|
156
|
+
}
|
|
157
|
+
export interface SecretVersionPage {
|
|
158
|
+
readonly data: readonly SecretVersionRecord[];
|
|
159
|
+
readonly nextCursor?: Cursor;
|
|
160
|
+
}
|
|
161
|
+
export interface SecretSetInput {
|
|
162
|
+
readonly scope: Scope;
|
|
163
|
+
readonly envName: EnvName;
|
|
164
|
+
readonly name: string;
|
|
165
|
+
readonly value: string;
|
|
166
|
+
readonly writeMode: 'create-new' | 'add-version';
|
|
167
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
168
|
+
readonly rotationDueAt?: string;
|
|
169
|
+
readonly ifVersion?: number;
|
|
170
|
+
/**
|
|
171
|
+
* REQUIRED. Called inside the binding's write tx on FRESH insert
|
|
172
|
+
* (writeMode: 'create-new' → new secret identity). Receives the new
|
|
173
|
+
* secret's id as the FGA subject id. Returns tuples for
|
|
174
|
+
* the same tx — typically `tuplesForCreate({kind:'secret', id,
|
|
175
|
+
* tenantId, scope}, creatorUserId?)`. Not invoked on `add-version`
|
|
176
|
+
* (identity already exists in FGA). See `AgentPublishInput.enqueueTuples`
|
|
177
|
+
* for the design rationale.
|
|
178
|
+
*/
|
|
179
|
+
readonly enqueueTuples: TupleEnqueueHook;
|
|
180
|
+
}
|
|
181
|
+
export type SecretSetOutcome = {
|
|
182
|
+
readonly kind: 'ok';
|
|
183
|
+
readonly record: SecretRecord;
|
|
184
|
+
readonly versionId: number;
|
|
185
|
+
} | {
|
|
186
|
+
readonly kind: 'already-exists';
|
|
187
|
+
readonly record: SecretRecord;
|
|
188
|
+
} | {
|
|
189
|
+
readonly kind: 'version-conflict';
|
|
190
|
+
readonly currentVersion: number;
|
|
191
|
+
} | {
|
|
192
|
+
readonly kind: 'error';
|
|
193
|
+
readonly code: string;
|
|
194
|
+
readonly message: string;
|
|
195
|
+
};
|
|
196
|
+
export interface SecretRotateInput {
|
|
197
|
+
readonly scope: Scope;
|
|
198
|
+
readonly envName: EnvName;
|
|
199
|
+
readonly name: string;
|
|
200
|
+
readonly newValue?: string;
|
|
201
|
+
readonly revokeOldAfterMs?: number;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Discriminated `SecretRotateOutcome`.
|
|
205
|
+
*
|
|
206
|
+
* Sync providers (stores that write the new version immediately)
|
|
207
|
+
* return `{ kind: 'ok', newVersionId, oldVersionId, oldVersionRevokedAt? }`
|
|
208
|
+
* inline. The `/v1/secrets` HTTP route translates this to a 201
|
|
209
|
+
* response.
|
|
210
|
+
*
|
|
211
|
+
* Async providers (a secret manager whose rotation workflow completes
|
|
212
|
+
* later) return `{ kind: 'rotation-pending', resumeToken, provider }`.
|
|
213
|
+
* The HTTP route mints a `rotationId`, records it in the caller-plugged
|
|
214
|
+
* `RotationStatusStore`, and returns 202 with `{ rotationId, statusUrl,
|
|
215
|
+
* eventsUrl }`. `resumeToken` is the provider-native handle a
|
|
216
|
+
* background process uses to poll the async workflow to terminal.
|
|
217
|
+
*/
|
|
218
|
+
export type SecretRotateOutcome = {
|
|
219
|
+
readonly kind: 'ok';
|
|
220
|
+
readonly newVersionId: number;
|
|
221
|
+
readonly oldVersionId: number;
|
|
222
|
+
readonly oldVersionRevokedAt?: string;
|
|
223
|
+
} | {
|
|
224
|
+
readonly kind: 'rotation-pending';
|
|
225
|
+
readonly resumeToken: string;
|
|
226
|
+
readonly provider: string;
|
|
227
|
+
};
|
|
228
|
+
export interface SecretRevokeInput {
|
|
229
|
+
readonly scope: Scope;
|
|
230
|
+
readonly envName: EnvName;
|
|
231
|
+
readonly name: string;
|
|
232
|
+
readonly hard?: boolean;
|
|
233
|
+
readonly reason?: string;
|
|
234
|
+
}
|
|
235
|
+
export interface SecretRevokeOutcome {
|
|
236
|
+
readonly revoked: boolean;
|
|
237
|
+
readonly hard: boolean;
|
|
238
|
+
}
|
|
239
|
+
export type SecretError = {
|
|
240
|
+
readonly code: 'secret-not-found';
|
|
241
|
+
readonly message: string;
|
|
242
|
+
readonly name: string;
|
|
243
|
+
} | {
|
|
244
|
+
readonly code: 'secret-revoked';
|
|
245
|
+
readonly message: string;
|
|
246
|
+
readonly name: string;
|
|
247
|
+
} | {
|
|
248
|
+
readonly code: 'secret-version-not-found';
|
|
249
|
+
readonly message: string;
|
|
250
|
+
readonly name: string;
|
|
251
|
+
readonly versionId: number;
|
|
252
|
+
} | {
|
|
253
|
+
readonly code: 'secret-encryption-failed';
|
|
254
|
+
readonly message: string;
|
|
255
|
+
readonly cause?: unknown;
|
|
256
|
+
} | {
|
|
257
|
+
readonly code: 'secret-decryption-failed';
|
|
258
|
+
readonly message: string;
|
|
259
|
+
readonly cause?: unknown;
|
|
260
|
+
} | {
|
|
261
|
+
readonly code: 'secret-provider-unavailable';
|
|
262
|
+
readonly message: string;
|
|
263
|
+
readonly cause?: unknown;
|
|
264
|
+
} | {
|
|
265
|
+
readonly code: 'secret-provider-unauthorized';
|
|
266
|
+
readonly message: string;
|
|
267
|
+
readonly cause?: unknown;
|
|
268
|
+
} | {
|
|
269
|
+
readonly code: 'secret-provider-rate-limited';
|
|
270
|
+
readonly message: string;
|
|
271
|
+
readonly retryAfterMs?: number;
|
|
272
|
+
} | {
|
|
273
|
+
readonly code: 'secret-write-conflict';
|
|
274
|
+
readonly message: string;
|
|
275
|
+
readonly currentVersion: number;
|
|
276
|
+
} | {
|
|
277
|
+
readonly code: 'secret-store-error';
|
|
278
|
+
readonly message: string;
|
|
279
|
+
readonly cause?: unknown;
|
|
280
|
+
};
|
|
281
|
+
//# sourceMappingURL=secrets-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets-binding.d.ts","sourceRoot":"","sources":["../src/secrets-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Secret names starting with this prefix are reserved for framework-internal
|
|
5
|
+
* material (e.g. webhook HMAC keys the runtime manages). `SecretBinding.set` rejects them
|
|
6
|
+
* from callers unless the adapter was constructed to allow reserved names.
|
|
7
|
+
* Every adapter enforces the same prefix — import it, don't redefine it.
|
|
8
|
+
*/
|
|
9
|
+
export const RESERVED_SECRET_NAME_PREFIX = 'kindgi.';
|
|
10
|
+
//# sourceMappingURL=secrets-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets-binding.js","sourceRoot":"","sources":["../src/secrets-binding.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAMjC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,SAAS,CAAC"}
|