@kindgi/api 0.1.4-rc.5 → 0.1.5-rc.0
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/dist/agent-binding.d.ts +13 -0
- package/dist/agent-binding.d.ts.map +1 -1
- package/dist/agent-pins.d.ts.map +1 -1
- package/dist/agent-pins.js +18 -2
- package/dist/agent-pins.js.map +1 -1
- package/dist/app.d.ts +110 -17
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +163 -35
- package/dist/app.js.map +1 -1
- package/dist/block-publish.d.ts +56 -0
- package/dist/block-publish.d.ts.map +1 -0
- package/dist/block-publish.js +132 -0
- package/dist/block-publish.js.map +1 -0
- package/dist/caller.d.ts +24 -0
- package/dist/caller.d.ts.map +1 -0
- package/dist/caller.js +47 -0
- package/dist/caller.js.map +1 -0
- package/dist/capability-binding.d.ts +11 -0
- package/dist/capability-binding.d.ts.map +1 -1
- package/dist/derive-agent-version.d.ts +7 -0
- package/dist/derive-agent-version.d.ts.map +1 -1
- package/dist/derive-agent-version.js +4 -0
- package/dist/derive-agent-version.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +73 -7
- package/dist/errors.js.map +1 -1
- package/dist/eval-case-binding.d.ts +16 -4
- package/dist/eval-case-binding.d.ts.map +1 -1
- package/dist/eval-run-binding.d.ts +31 -0
- package/dist/eval-run-binding.d.ts.map +1 -1
- package/dist/eval-run-dispatcher.d.ts +7 -0
- package/dist/eval-run-dispatcher.d.ts.map +1 -1
- package/dist/eval-run-dispatcher.js.map +1 -1
- package/dist/eval-sample.d.ts +11 -0
- package/dist/eval-sample.d.ts.map +1 -0
- package/dist/eval-sample.js +34 -0
- package/dist/eval-sample.js.map +1 -0
- package/dist/eval-suite-binding.d.ts +13 -0
- package/dist/eval-suite-binding.d.ts.map +1 -1
- package/dist/eval-suite-binding.js.map +1 -1
- package/dist/flow-binding.d.ts +18 -0
- package/dist/flow-binding.d.ts.map +1 -1
- package/dist/flow-pins.d.ts.map +1 -1
- package/dist/flow-pins.js +18 -2
- package/dist/flow-pins.js.map +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +25 -0
- package/dist/gate.js.map +1 -1
- package/dist/handler-binding.d.ts +32 -0
- package/dist/handler-binding.d.ts.map +1 -1
- package/dist/hitl-binding.d.ts +23 -0
- package/dist/hitl-binding.d.ts.map +1 -1
- package/dist/identity-directory-binding.d.ts +82 -4
- package/dist/identity-directory-binding.d.ts.map +1 -1
- package/dist/identity-provider-binding.d.ts +197 -17
- package/dist/identity-provider-binding.d.ts.map +1 -1
- package/dist/improvement-pass-binding.d.ts +196 -0
- package/dist/improvement-pass-binding.d.ts.map +1 -0
- package/dist/improvement-pass-binding.js +9 -0
- package/dist/improvement-pass-binding.js.map +1 -0
- package/dist/index.d.ts +35 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/judged-dispatcher.d.ts +25 -4
- package/dist/judged-dispatcher.d.ts.map +1 -1
- package/dist/judged-dispatcher.js +43 -6
- package/dist/judged-dispatcher.js.map +1 -1
- package/dist/judgment-binding.d.ts +25 -1
- package/dist/judgment-binding.d.ts.map +1 -1
- package/dist/mcp-endpoint-binding.d.ts +7 -0
- package/dist/mcp-endpoint-binding.d.ts.map +1 -1
- package/dist/memory-binding.d.ts +124 -17
- package/dist/memory-binding.d.ts.map +1 -1
- package/dist/memory-erasure-binding.d.ts +145 -0
- package/dist/memory-erasure-binding.d.ts.map +1 -0
- package/dist/memory-erasure-binding.js +4 -0
- package/dist/memory-erasure-binding.js.map +1 -0
- package/dist/middleware/auth.d.ts +66 -13
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +150 -50
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/authorize.d.ts +6 -0
- package/dist/middleware/authorize.d.ts.map +1 -1
- package/dist/middleware/authorize.js +113 -4
- package/dist/middleware/authorize.js.map +1 -1
- package/dist/middleware/error-mapper.d.ts +5 -0
- package/dist/middleware/error-mapper.d.ts.map +1 -1
- package/dist/middleware/error-mapper.js +14 -1
- package/dist/middleware/error-mapper.js.map +1 -1
- package/dist/middleware/idempotency.d.ts +70 -5
- package/dist/middleware/idempotency.d.ts.map +1 -1
- package/dist/middleware/idempotency.js +174 -41
- package/dist/middleware/idempotency.js.map +1 -1
- package/dist/middleware/key-project.d.ts +17 -0
- package/dist/middleware/key-project.d.ts.map +1 -0
- package/dist/middleware/key-project.js +75 -0
- package/dist/middleware/key-project.js.map +1 -0
- package/dist/middleware/principal.d.ts.map +1 -1
- package/dist/middleware/principal.js +9 -5
- package/dist/middleware/principal.js.map +1 -1
- package/dist/middleware/project-ref.d.ts.map +1 -1
- package/dist/middleware/project-ref.js +3 -0
- package/dist/middleware/project-ref.js.map +1 -1
- package/dist/openapi/generate.d.ts.map +1 -1
- package/dist/openapi/generate.js +5 -2
- package/dist/openapi/generate.js.map +1 -1
- package/dist/openapi/operations.d.ts.map +1 -1
- package/dist/openapi/operations.js +918 -139
- package/dist/openapi/operations.js.map +1 -1
- package/dist/openapi/schemas.d.ts +92 -13
- package/dist/openapi/schemas.d.ts.map +1 -1
- package/dist/openapi/schemas.js +2122 -370
- package/dist/openapi/schemas.js.map +1 -1
- package/dist/person-grants-binding.d.ts +77 -0
- package/dist/person-grants-binding.d.ts.map +1 -0
- package/dist/person-grants-binding.js +4 -0
- package/dist/person-grants-binding.js.map +1 -0
- package/dist/proposal-service.d.ts +121 -0
- package/dist/proposal-service.d.ts.map +1 -0
- package/dist/proposal-service.js +447 -0
- package/dist/proposal-service.js.map +1 -0
- package/dist/proposal-status.d.ts +60 -0
- package/dist/proposal-status.d.ts.map +1 -0
- package/dist/proposal-status.js +109 -0
- package/dist/proposal-status.js.map +1 -0
- package/dist/provider-binding.d.ts +10 -0
- package/dist/provider-binding.d.ts.map +1 -1
- package/dist/publish-refused.d.ts +18 -3
- package/dist/publish-refused.d.ts.map +1 -1
- package/dist/publish-refused.js +18 -3
- package/dist/publish-refused.js.map +1 -1
- package/dist/routes/adapters.d.ts +2 -1
- package/dist/routes/adapters.d.ts.map +1 -1
- package/dist/routes/adapters.js +3 -1
- package/dist/routes/adapters.js.map +1 -1
- package/dist/routes/agent-releases.d.ts +55 -3
- package/dist/routes/agent-releases.d.ts.map +1 -1
- package/dist/routes/agent-releases.js +85 -55
- package/dist/routes/agent-releases.js.map +1 -1
- package/dist/routes/agents.d.ts +12 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +100 -2
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/approvals.d.ts +15 -3
- package/dist/routes/approvals.d.ts.map +1 -1
- package/dist/routes/approvals.js +133 -122
- package/dist/routes/approvals.js.map +1 -1
- package/dist/routes/artifacts.d.ts +25 -3
- package/dist/routes/artifacts.d.ts.map +1 -1
- package/dist/routes/artifacts.js +116 -7
- package/dist/routes/artifacts.js.map +1 -1
- package/dist/routes/auth.d.ts +25 -1
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +655 -281
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/blocks.d.ts.map +1 -1
- package/dist/routes/blocks.js +2 -42
- package/dist/routes/blocks.js.map +1 -1
- package/dist/routes/capabilities.d.ts +2 -1
- package/dist/routes/capabilities.d.ts.map +1 -1
- package/dist/routes/capabilities.js +6 -1
- package/dist/routes/capabilities.js.map +1 -1
- package/dist/routes/compliance.d.ts +9 -10
- package/dist/routes/compliance.d.ts.map +1 -1
- package/dist/routes/compliance.js +42 -61
- package/dist/routes/compliance.js.map +1 -1
- package/dist/routes/conversations.d.ts +8 -1
- package/dist/routes/conversations.d.ts.map +1 -1
- package/dist/routes/conversations.js +87 -8
- package/dist/routes/conversations.js.map +1 -1
- package/dist/routes/cost.d.ts +7 -1
- package/dist/routes/cost.d.ts.map +1 -1
- package/dist/routes/cost.js +22 -3
- package/dist/routes/cost.js.map +1 -1
- package/dist/routes/denied.d.ts +11 -0
- package/dist/routes/denied.d.ts.map +1 -0
- package/dist/routes/denied.js +17 -0
- package/dist/routes/denied.js.map +1 -0
- package/dist/routes/deployments.d.ts +2 -1
- package/dist/routes/deployments.d.ts.map +1 -1
- package/dist/routes/deployments.js +44 -12
- package/dist/routes/deployments.js.map +1 -1
- package/dist/routes/eval-comparison.d.ts.map +1 -1
- package/dist/routes/eval-comparison.js +69 -1
- package/dist/routes/eval-comparison.js.map +1 -1
- package/dist/routes/eval-overrides.d.ts +18 -0
- package/dist/routes/eval-overrides.d.ts.map +1 -0
- package/dist/routes/eval-overrides.js +81 -0
- package/dist/routes/eval-overrides.js.map +1 -0
- package/dist/routes/eval-runs.d.ts +10 -1
- package/dist/routes/eval-runs.d.ts.map +1 -1
- package/dist/routes/eval-runs.js +63 -7
- package/dist/routes/eval-runs.js.map +1 -1
- package/dist/routes/eval-suites.d.ts.map +1 -1
- package/dist/routes/eval-suites.js +20 -1
- package/dist/routes/eval-suites.js.map +1 -1
- package/dist/routes/event-triggers.d.ts +5 -1
- package/dist/routes/event-triggers.d.ts.map +1 -1
- package/dist/routes/event-triggers.js +26 -3
- package/dist/routes/event-triggers.js.map +1 -1
- package/dist/routes/export-signing-keys.d.ts +12 -0
- package/dist/routes/export-signing-keys.d.ts.map +1 -0
- package/dist/routes/export-signing-keys.js +24 -0
- package/dist/routes/export-signing-keys.js.map +1 -0
- package/dist/routes/flows.d.ts.map +1 -1
- package/dist/routes/flows.js +9 -1
- package/dist/routes/flows.js.map +1 -1
- package/dist/routes/gate-policies.d.ts +4 -1
- package/dist/routes/gate-policies.d.ts.map +1 -1
- package/dist/routes/gate-policies.js +29 -5
- package/dist/routes/gate-policies.js.map +1 -1
- package/dist/routes/guardrails.d.ts +16 -14
- package/dist/routes/guardrails.d.ts.map +1 -1
- package/dist/routes/guardrails.js +39 -3
- package/dist/routes/guardrails.js.map +1 -1
- package/dist/routes/identity.d.ts +20 -4
- package/dist/routes/identity.d.ts.map +1 -1
- package/dist/routes/identity.js +246 -6
- package/dist/routes/identity.js.map +1 -1
- package/dist/routes/improvement-passes.d.ts +52 -0
- package/dist/routes/improvement-passes.d.ts.map +1 -0
- package/dist/routes/improvement-passes.js +449 -0
- package/dist/routes/improvement-passes.js.map +1 -0
- package/dist/routes/judged-suites.d.ts +50 -0
- package/dist/routes/judged-suites.d.ts.map +1 -1
- package/dist/routes/judged-suites.js +66 -27
- package/dist/routes/judged-suites.js.map +1 -1
- package/dist/routes/judgment-context.d.ts +18 -2
- package/dist/routes/judgment-context.d.ts.map +1 -1
- package/dist/routes/judgment-context.js +63 -5
- package/dist/routes/judgment-context.js.map +1 -1
- package/dist/routes/judgment-flow-context.d.ts.map +1 -1
- package/dist/routes/judgment-flow-context.js +14 -2
- package/dist/routes/judgment-flow-context.js.map +1 -1
- package/dist/routes/judgments.d.ts.map +1 -1
- package/dist/routes/judgments.js +8 -1
- package/dist/routes/judgments.js.map +1 -1
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +26 -1
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/memory-access.d.ts +43 -0
- package/dist/routes/memory-access.d.ts.map +1 -0
- package/dist/routes/memory-access.js +129 -0
- package/dist/routes/memory-access.js.map +1 -0
- package/dist/routes/memory-erasures.d.ts +25 -0
- package/dist/routes/memory-erasures.d.ts.map +1 -0
- package/dist/routes/memory-erasures.js +214 -0
- package/dist/routes/memory-erasures.js.map +1 -0
- package/dist/routes/memory-parse.d.ts +38 -0
- package/dist/routes/memory-parse.d.ts.map +1 -0
- package/dist/routes/memory-parse.js +199 -0
- package/dist/routes/memory-parse.js.map +1 -0
- package/dist/routes/memory.d.ts +9 -4
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/memory.js +226 -234
- package/dist/routes/memory.js.map +1 -1
- package/dist/routes/observations.d.ts +4 -1
- package/dist/routes/observations.d.ts.map +1 -1
- package/dist/routes/observations.js +8 -2
- package/dist/routes/observations.js.map +1 -1
- package/dist/routes/pagination.d.ts +7 -0
- package/dist/routes/pagination.d.ts.map +1 -1
- package/dist/routes/pagination.js +10 -0
- package/dist/routes/pagination.js.map +1 -1
- package/dist/routes/policies.d.ts +2 -1
- package/dist/routes/policies.d.ts.map +1 -1
- package/dist/routes/policies.js +3 -1
- package/dist/routes/policies.js.map +1 -1
- package/dist/routes/project-mismatch.d.ts +22 -0
- package/dist/routes/project-mismatch.d.ts.map +1 -0
- package/dist/routes/project-mismatch.js +34 -0
- package/dist/routes/project-mismatch.js.map +1 -0
- package/dist/routes/projects.d.ts +15 -4
- package/dist/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +100 -9
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/proposals.d.ts +25 -17
- package/dist/routes/proposals.d.ts.map +1 -1
- package/dist/routes/proposals.js +340 -507
- package/dist/routes/proposals.js.map +1 -1
- package/dist/routes/provenance.d.ts +17 -3
- package/dist/routes/provenance.d.ts.map +1 -1
- package/dist/routes/provenance.js +79 -103
- package/dist/routes/provenance.js.map +1 -1
- package/dist/routes/providers.d.ts +17 -1
- package/dist/routes/providers.d.ts.map +1 -1
- package/dist/routes/providers.js +188 -8
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/public-run-tokens.d.ts.map +1 -1
- package/dist/routes/public-run-tokens.js +3 -0
- package/dist/routes/public-run-tokens.js.map +1 -1
- package/dist/routes/runs.d.ts +10 -0
- package/dist/routes/runs.d.ts.map +1 -1
- package/dist/routes/runs.js +92 -42
- package/dist/routes/runs.js.map +1 -1
- package/dist/routes/schedules.d.ts +21 -13
- package/dist/routes/schedules.d.ts.map +1 -1
- package/dist/routes/schedules.js +416 -55
- package/dist/routes/schedules.js.map +1 -1
- package/dist/routes/segments.d.ts +2 -0
- package/dist/routes/segments.d.ts.map +1 -1
- package/dist/routes/segments.js +5 -0
- package/dist/routes/segments.js.map +1 -1
- package/dist/routes/service-accounts.d.ts +17 -0
- package/dist/routes/service-accounts.d.ts.map +1 -0
- package/dist/routes/service-accounts.js +212 -0
- package/dist/routes/service-accounts.js.map +1 -0
- package/dist/routes/sign-in-options.d.ts +50 -0
- package/dist/routes/sign-in-options.d.ts.map +1 -0
- package/dist/routes/sign-in-options.js +98 -0
- package/dist/routes/sign-in-options.js.map +1 -0
- package/dist/routes/signing-keys.d.ts +2 -1
- package/dist/routes/signing-keys.d.ts.map +1 -1
- package/dist/routes/signing-keys.js +3 -1
- package/dist/routes/signing-keys.js.map +1 -1
- package/dist/routes/tenant-access.d.ts +13 -0
- package/dist/routes/tenant-access.d.ts.map +1 -0
- package/dist/routes/tenant-access.js +26 -0
- package/dist/routes/tenant-access.js.map +1 -0
- package/dist/routes/tenant.d.ts.map +1 -1
- package/dist/routes/tenant.js +4 -0
- package/dist/routes/tenant.js.map +1 -1
- package/dist/routes/token-sign-in.d.ts +36 -0
- package/dist/routes/token-sign-in.d.ts.map +1 -0
- package/dist/routes/token-sign-in.js +101 -0
- package/dist/routes/token-sign-in.js.map +1 -0
- package/dist/routes/tokens.d.ts +15 -5
- package/dist/routes/tokens.d.ts.map +1 -1
- package/dist/routes/tokens.js +162 -43
- package/dist/routes/tokens.js.map +1 -1
- package/dist/routes/tools.d.ts.map +1 -1
- package/dist/routes/tools.js +9 -1
- package/dist/routes/tools.js.map +1 -1
- package/dist/routes/trigger-access.d.ts +29 -0
- package/dist/routes/trigger-access.d.ts.map +1 -0
- package/dist/routes/trigger-access.js +33 -0
- package/dist/routes/trigger-access.js.map +1 -0
- package/dist/routes/webhook-endpoints.d.ts +2 -1
- package/dist/routes/webhook-endpoints.d.ts.map +1 -1
- package/dist/routes/webhook-endpoints.js +11 -3
- package/dist/routes/webhook-endpoints.js.map +1 -1
- package/dist/routes/webhooks.d.ts +5 -1
- package/dist/routes/webhooks.d.ts.map +1 -1
- package/dist/routes/webhooks.js +25 -2
- package/dist/routes/webhooks.js.map +1 -1
- package/dist/run-failure.d.ts +21 -0
- package/dist/run-failure.d.ts.map +1 -0
- package/dist/run-failure.js +29 -0
- package/dist/run-failure.js.map +1 -0
- package/dist/service-account-binding.d.ts +108 -0
- package/dist/service-account-binding.d.ts.map +1 -0
- package/dist/service-account-binding.js +4 -0
- package/dist/service-account-binding.js.map +1 -0
- package/dist/session-store-binding.d.ts +61 -13
- package/dist/session-store-binding.d.ts.map +1 -1
- package/dist/signed-export.d.ts +89 -0
- package/dist/signed-export.d.ts.map +1 -0
- package/dist/signed-export.js +149 -0
- package/dist/signed-export.js.map +1 -0
- package/dist/supervisor-binding.d.ts +186 -413
- package/dist/supervisor-binding.d.ts.map +1 -1
- package/dist/testing/app-bindings.d.ts +33 -0
- package/dist/testing/app-bindings.d.ts.map +1 -0
- package/dist/testing/app-bindings.js +112 -0
- package/dist/testing/app-bindings.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +13 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/stub-binding.d.ts +34 -0
- package/dist/testing/stub-binding.d.ts.map +1 -0
- package/dist/testing/stub-binding.js +42 -0
- package/dist/testing/stub-binding.js.map +1 -0
- package/dist/testing/trigger-registry.d.ts +21 -0
- package/dist/testing/trigger-registry.d.ts.map +1 -0
- package/dist/testing/trigger-registry.js +206 -0
- package/dist/testing/trigger-registry.js.map +1 -0
- package/dist/token-admin.d.ts +46 -8
- package/dist/token-admin.d.ts.map +1 -1
- package/dist/token-admin.js.map +1 -1
- package/dist/tool-binding.d.ts +13 -0
- package/dist/tool-binding.d.ts.map +1 -1
- package/dist/trigger-binding.d.ts +2 -2
- package/dist/trigger-binding.d.ts.map +1 -1
- package/dist/trigger-binding.js +1 -1
- package/dist/trigger-binding.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/webhook-endpoint-binding.d.ts +19 -3
- package/dist/webhook-endpoint-binding.d.ts.map +1 -1
- package/dist/webhook-endpoint-binding.js +1 -1
- package/dist/webhook-endpoint-binding.js.map +1 -1
- package/openapi.json +15286 -8653
- package/package.json +26 -22
- package/src/agent-binding.ts +14 -0
- package/src/agent-pins.ts +18 -2
- package/src/app.ts +366 -80
- package/src/block-publish.ts +181 -0
- package/src/caller.ts +62 -0
- package/src/capability-binding.ts +12 -0
- package/src/derive-agent-version.ts +9 -1
- package/src/errors.ts +73 -7
- package/src/eval-case-binding.ts +17 -1
- package/src/eval-run-binding.ts +31 -0
- package/src/eval-run-dispatcher.ts +7 -0
- package/src/eval-sample.ts +42 -0
- package/src/eval-suite-binding.ts +14 -0
- package/src/flow-binding.ts +19 -0
- package/src/flow-pins.ts +18 -2
- package/src/gate.ts +26 -0
- package/src/handler-binding.ts +36 -1
- package/src/hitl-binding.ts +24 -0
- package/src/identity-directory-binding.ts +85 -4
- package/src/identity-provider-binding.ts +216 -21
- package/src/improvement-pass-binding.ts +193 -0
- package/src/index.ts +153 -31
- package/src/judged-dispatcher.ts +78 -11
- package/src/judgment-binding.ts +25 -1
- package/src/mcp-endpoint-binding.ts +7 -0
- package/src/memory-binding.ts +121 -17
- package/src/memory-erasure-binding.ts +156 -0
- package/src/middleware/auth.ts +228 -62
- package/src/middleware/authorize.ts +139 -3
- package/src/middleware/error-mapper.ts +15 -1
- package/src/middleware/idempotency.ts +230 -43
- package/src/middleware/key-project.ts +86 -0
- package/src/middleware/principal.ts +9 -5
- package/src/middleware/project-ref.ts +3 -0
- package/src/openapi/generate.ts +11 -2
- package/src/openapi/operations.ts +1059 -142
- package/src/openapi/schemas.ts +2438 -485
- package/src/person-grants-binding.ts +76 -0
- package/src/proposal-service.ts +640 -0
- package/src/proposal-status.ts +176 -0
- package/src/provider-binding.ts +10 -0
- package/src/publish-refused.ts +38 -9
- package/src/routes/adapters.ts +4 -0
- package/src/routes/agent-releases.ts +121 -69
- package/src/routes/agents.ts +128 -1
- package/src/routes/approvals.ts +164 -154
- package/src/routes/artifacts.ts +181 -11
- package/src/routes/auth.ts +804 -336
- package/src/routes/blocks.ts +2 -53
- package/src/routes/capabilities.ts +10 -1
- package/src/routes/compliance.ts +60 -99
- package/src/routes/conversations.ts +101 -7
- package/src/routes/cost.ts +32 -3
- package/src/routes/denied.ts +28 -0
- package/src/routes/deployments.ts +62 -16
- package/src/routes/eval-comparison.ts +81 -2
- package/src/routes/eval-overrides.ts +108 -0
- package/src/routes/eval-runs.ts +86 -6
- package/src/routes/eval-suites.ts +25 -1
- package/src/routes/event-triggers.ts +27 -3
- package/src/routes/export-signing-keys.ts +31 -0
- package/src/routes/flows.ts +12 -1
- package/src/routes/gate-policies.ts +37 -6
- package/src/routes/guardrails.ts +61 -2
- package/src/routes/identity.ts +328 -10
- package/src/routes/improvement-passes.ts +541 -0
- package/src/routes/judged-suites.ts +113 -43
- package/src/routes/judgment-context.ts +76 -5
- package/src/routes/judgment-flow-context.ts +16 -2
- package/src/routes/judgments.ts +17 -3
- package/src/routes/mcp.ts +29 -1
- package/src/routes/memory-access.ts +179 -0
- package/src/routes/memory-erasures.ts +240 -0
- package/src/routes/memory-parse.ts +250 -0
- package/src/routes/memory.ts +244 -286
- package/src/routes/observations.ts +15 -2
- package/src/routes/pagination.ts +12 -0
- package/src/routes/policies.ts +7 -1
- package/src/routes/project-mismatch.ts +56 -0
- package/src/routes/projects.ts +107 -13
- package/src/routes/proposals.ts +370 -611
- package/src/routes/provenance.ts +99 -133
- package/src/routes/providers.ts +223 -8
- package/src/routes/public-run-tokens.ts +3 -0
- package/src/routes/runs.ts +119 -39
- package/src/routes/schedules.ts +472 -60
- package/src/routes/segments.ts +11 -0
- package/src/routes/service-accounts.ts +262 -0
- package/src/routes/sign-in-options.ts +168 -0
- package/src/routes/signing-keys.ts +7 -1
- package/src/routes/tenant-access.ts +37 -0
- package/src/routes/tenant.ts +6 -0
- package/src/routes/token-sign-in.ts +161 -0
- package/src/routes/tokens.ts +172 -46
- package/src/routes/tools.ts +12 -1
- package/src/routes/trigger-access.ts +72 -0
- package/src/routes/webhook-endpoints.ts +15 -3
- package/src/routes/webhooks.ts +26 -2
- package/src/run-failure.ts +42 -0
- package/src/service-account-binding.ts +113 -0
- package/src/session-store-binding.ts +65 -13
- package/src/signed-export.ts +250 -0
- package/src/supervisor-binding.ts +169 -409
- package/src/testing/app-bindings.ts +142 -0
- package/src/testing/index.ts +21 -0
- package/src/testing/stub-binding.ts +53 -0
- package/src/testing/trigger-registry.ts +259 -0
- package/src/token-admin.ts +40 -8
- package/src/tool-binding.ts +14 -0
- package/src/trigger-binding.ts +8 -1
- package/src/types.ts +16 -0
- package/src/webhook-endpoint-binding.ts +18 -3
package/src/routes/artifacts.ts
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
import type { ArtifactId, Cursor, RunId, TenantId } from '@kindgi/types';
|
|
7
|
-
|
|
4
|
+
import { type ResourceRef, ref } from '@kindgi/authz';
|
|
8
5
|
import type { BlobFilter, BlobMeta, BlobPutInput, BlobStorageBinding } from '@kindgi/blob-binding';
|
|
6
|
+
import type { ProjectBinding, Scope } from '@kindgi/platform';
|
|
7
|
+
import type { RunBinding } from '@kindgi/runtime';
|
|
8
|
+
import type { ArtifactId, Cursor, ProjectId, RunId, TenantId } from '@kindgi/types';
|
|
9
|
+
import type { Context } from 'hono';
|
|
10
|
+
import { Hono } from 'hono';
|
|
11
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
9
12
|
import { statusFor, toWireError } from '../errors.js';
|
|
13
|
+
import type { Authorizer } from '../middleware/authorize.js';
|
|
10
14
|
import type { AppEnv } from '../types.js';
|
|
11
15
|
import { clampLimit } from './pagination.js';
|
|
12
16
|
|
|
17
|
+
/** The default upload cap: 100 MB. */
|
|
18
|
+
export const DEFAULT_ARTIFACT_MAX_BYTES = 100 * 1024 * 1024;
|
|
19
|
+
|
|
20
|
+
export interface ArtifactsRouterDeps {
|
|
21
|
+
/** Resolves an upload's owner run, whose project the artifact belongs to. */
|
|
22
|
+
readonly runBinding?: RunBinding;
|
|
23
|
+
/** The tenant's default project, for an upload that names neither run nor project. */
|
|
24
|
+
readonly projectBinding?: ProjectBinding;
|
|
25
|
+
/** Reads need `read` on the artifact's project; uploads and deletes need `write`. */
|
|
26
|
+
readonly authorizer?: Authorizer;
|
|
27
|
+
/** The most bytes an upload may carry (default 100 MB); more is `413 artifact-too-large`. */
|
|
28
|
+
readonly maxBytes?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
13
31
|
/**
|
|
14
32
|
* Artifacts resource routes over the caller-plugged, tenant-scoped
|
|
15
33
|
* `BlobStorageBinding` (from `@kindgi/blob-binding`). Five routes:
|
|
@@ -28,10 +46,29 @@ import { clampLimit } from './pagination.js';
|
|
|
28
46
|
* that run's project is the authoritative scope anchor, so scope
|
|
29
47
|
* filtering goes through runs rather than a field on the blob metadata.
|
|
30
48
|
* Callers who want scope-narrowed artifacts should first list runs at
|
|
31
|
-
* the desired scope, then list artifacts by `?ownerRunId
|
|
49
|
+
* the desired scope, then list artifacts by `?ownerRunId=`, or by
|
|
50
|
+
* `?projectId=`.
|
|
51
|
+
*
|
|
52
|
+
* Every artifact belongs to a project: its owner run's, else the
|
|
53
|
+
* upload's `projectId`, else the tenant's default project. With an
|
|
54
|
+
* authorizer, listing and downloading need `read` there (an artifact the
|
|
55
|
+
* caller can't read is `404`, as if absent), and uploading and deleting
|
|
56
|
+
* need `write`. An upload over `maxBytes` is `413 artifact-too-large`.
|
|
32
57
|
*/
|
|
33
|
-
export function artifactsRouter(
|
|
58
|
+
export function artifactsRouter(
|
|
59
|
+
binding: BlobStorageBinding,
|
|
60
|
+
deps: ArtifactsRouterDeps = {},
|
|
61
|
+
): Hono<AppEnv> {
|
|
34
62
|
const r = new Hono<AppEnv>();
|
|
63
|
+
const { authorizer } = deps;
|
|
64
|
+
const maxBytes = deps.maxBytes ?? DEFAULT_ARTIFACT_MAX_BYTES;
|
|
65
|
+
/** The artifact's project; a blob stored before projects were recorded answers to the tenant. */
|
|
66
|
+
const scopeOf = (c: Context<AppEnv>, m: BlobMeta): ResourceRef =>
|
|
67
|
+
m.projectId !== undefined
|
|
68
|
+
? ref('project', m.projectId as unknown as string)
|
|
69
|
+
: ref('tenant', c.get('tenantId') as unknown as string);
|
|
70
|
+
const may = async (c: Context<AppEnv>, action: 'read' | 'write', m: BlobMeta) =>
|
|
71
|
+
authorizer === undefined || (await authorizer.can(c, action, scopeOf(c, m)));
|
|
35
72
|
|
|
36
73
|
// ---------- GET / (list, cursor-paginated metadata) ----------
|
|
37
74
|
r.get('/', async (c) => {
|
|
@@ -39,7 +76,7 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
39
76
|
const tenantId = c.get('tenantId') as TenantId;
|
|
40
77
|
const limit = clampLimit(c.req.query('limit'));
|
|
41
78
|
|
|
42
|
-
const filter = decodeListFilter(new URL(c.req.url).searchParams);
|
|
79
|
+
const filter = decodeListFilter(new URL(c.req.url).searchParams, tenantId);
|
|
43
80
|
if (filter.kind === 'err') {
|
|
44
81
|
c.status(statusFor('bad-input') as never);
|
|
45
82
|
return c.json(toWireError({ code: 'bad-input', message: filter.message }, requestId));
|
|
@@ -56,8 +93,12 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
56
93
|
c.status(statusFor(page.error.code) as never);
|
|
57
94
|
return c.json(toWireError(page.error as never, requestId));
|
|
58
95
|
}
|
|
96
|
+
const visible =
|
|
97
|
+
authorizer === undefined
|
|
98
|
+
? page.value.data
|
|
99
|
+
: await authorizer.filterByCan(c, 'read', page.value.data, (m) => scopeOf(c, m));
|
|
59
100
|
return c.json({
|
|
60
|
-
data:
|
|
101
|
+
data: visible.map(serializeMeta),
|
|
61
102
|
hasMore: page.value.nextCursor !== undefined,
|
|
62
103
|
...(page.value.nextCursor !== undefined && {
|
|
63
104
|
nextCursor: page.value.nextCursor as unknown as string,
|
|
@@ -66,6 +107,25 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
66
107
|
});
|
|
67
108
|
|
|
68
109
|
// ---------- POST / (multipart upload) ----------
|
|
110
|
+
r.post(
|
|
111
|
+
'/',
|
|
112
|
+
bodyLimit({
|
|
113
|
+
maxSize: maxBytes,
|
|
114
|
+
onError: (c) => {
|
|
115
|
+
c.status(statusFor('artifact-too-large') as never);
|
|
116
|
+
return c.json(
|
|
117
|
+
toWireError(
|
|
118
|
+
{
|
|
119
|
+
code: 'artifact-too-large',
|
|
120
|
+
message: `An artifact may be at most ${maxBytes} bytes`,
|
|
121
|
+
maxBytes,
|
|
122
|
+
},
|
|
123
|
+
c.get('requestId'),
|
|
124
|
+
),
|
|
125
|
+
);
|
|
126
|
+
},
|
|
127
|
+
}),
|
|
128
|
+
);
|
|
69
129
|
r.post('/', async (c) => {
|
|
70
130
|
const requestId = c.get('requestId');
|
|
71
131
|
const tenantId = c.get('tenantId') as TenantId;
|
|
@@ -99,7 +159,35 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
99
159
|
c.status(statusFor('bad-input') as never);
|
|
100
160
|
return c.json(toWireError({ code: 'bad-input', message: validated.message }, requestId));
|
|
101
161
|
}
|
|
102
|
-
const
|
|
162
|
+
const project = await uploadProject(c, deps, validated.value);
|
|
163
|
+
if (project.kind === 'err') {
|
|
164
|
+
c.status(statusFor(project.code) as never);
|
|
165
|
+
return c.json(toWireError({ code: project.code, message: project.message }, requestId));
|
|
166
|
+
}
|
|
167
|
+
if (
|
|
168
|
+
authorizer !== undefined &&
|
|
169
|
+
!(await authorizer.can(
|
|
170
|
+
c,
|
|
171
|
+
'write',
|
|
172
|
+
project.projectId !== undefined
|
|
173
|
+
? ref('project', project.projectId as unknown as string)
|
|
174
|
+
: ref('tenant', tenantId as unknown as string),
|
|
175
|
+
))
|
|
176
|
+
) {
|
|
177
|
+
c.status(statusFor('permission-denied') as never);
|
|
178
|
+
return c.json(
|
|
179
|
+
toWireError(
|
|
180
|
+
{ code: 'permission-denied', message: 'Not allowed to add artifacts to this project' },
|
|
181
|
+
requestId,
|
|
182
|
+
),
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
const userId = c.get('userId') as unknown as string | undefined;
|
|
186
|
+
const input: BlobPutInput = {
|
|
187
|
+
...validated.value,
|
|
188
|
+
...(project.projectId !== undefined && { projectId: project.projectId }),
|
|
189
|
+
...(userId !== undefined && { createdBy: `user:${userId}` }),
|
|
190
|
+
};
|
|
103
191
|
|
|
104
192
|
const outcome = await binding.put(tenantId, input);
|
|
105
193
|
if (outcome.kind === 'err') {
|
|
@@ -116,6 +204,8 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
116
204
|
const tenantId = c.get('tenantId') as TenantId;
|
|
117
205
|
const blobId = c.req.param('blobId') as ArtifactId;
|
|
118
206
|
|
|
207
|
+
const found = await binding.head(tenantId, blobId);
|
|
208
|
+
if (found === null || !(await may(c, 'read', found))) return notFound(c, blobId);
|
|
119
209
|
const outcome = await binding.get(tenantId, blobId);
|
|
120
210
|
if (outcome.kind === 'err') {
|
|
121
211
|
c.status(statusFor(outcome.error.code) as never);
|
|
@@ -135,7 +225,7 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
135
225
|
const blobId = c.req.param('blobId') as ArtifactId;
|
|
136
226
|
|
|
137
227
|
const meta = await binding.head(tenantId, blobId);
|
|
138
|
-
if (meta === null) {
|
|
228
|
+
if (meta === null || !(await may(c, 'read', meta))) {
|
|
139
229
|
return new Response(null, {
|
|
140
230
|
status: 404,
|
|
141
231
|
headers: { 'X-Request-Id': requestId },
|
|
@@ -153,6 +243,19 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
153
243
|
const tenantId = c.get('tenantId') as TenantId;
|
|
154
244
|
const blobId = c.req.param('blobId') as ArtifactId;
|
|
155
245
|
|
|
246
|
+
const found = await binding.head(tenantId, blobId);
|
|
247
|
+
if (found !== null) {
|
|
248
|
+
if (!(await may(c, 'read', found))) return notFound(c, blobId);
|
|
249
|
+
if (!(await may(c, 'write', found))) {
|
|
250
|
+
c.status(statusFor('permission-denied') as never);
|
|
251
|
+
return c.json(
|
|
252
|
+
toWireError(
|
|
253
|
+
{ code: 'permission-denied', message: `Not allowed to delete artifact "${blobId}"` },
|
|
254
|
+
requestId,
|
|
255
|
+
),
|
|
256
|
+
);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
156
259
|
const outcome = await binding.delete(tenantId, blobId);
|
|
157
260
|
if (outcome.kind === 'err') {
|
|
158
261
|
c.status(statusFor(outcome.error.code) as never);
|
|
@@ -167,6 +270,56 @@ export function artifactsRouter(binding: BlobStorageBinding): Hono<AppEnv> {
|
|
|
167
270
|
return r;
|
|
168
271
|
}
|
|
169
272
|
|
|
273
|
+
function notFound(c: Context<AppEnv>, blobId: string) {
|
|
274
|
+
c.status(statusFor('blob-not-found') as never);
|
|
275
|
+
return c.json(
|
|
276
|
+
toWireError(
|
|
277
|
+
{ code: 'blob-not-found', message: `No artifact "${blobId}"`, blobId },
|
|
278
|
+
c.get('requestId'),
|
|
279
|
+
),
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
type UploadProject =
|
|
284
|
+
| { readonly kind: 'ok'; readonly projectId?: ProjectId }
|
|
285
|
+
| { readonly kind: 'err'; readonly code: string; readonly message: string };
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* The project an upload belongs to: its owner run's (the upload's
|
|
289
|
+
* `projectId`, if any, must agree), else the upload's `projectId`, else
|
|
290
|
+
* the tenant's default project.
|
|
291
|
+
*/
|
|
292
|
+
async function uploadProject(
|
|
293
|
+
c: Context<AppEnv>,
|
|
294
|
+
deps: ArtifactsRouterDeps,
|
|
295
|
+
input: BlobPutInput,
|
|
296
|
+
): Promise<UploadProject> {
|
|
297
|
+
const tenantId = c.get('tenantId') as TenantId;
|
|
298
|
+
const named = input.projectId;
|
|
299
|
+
if (input.ownerRunId !== undefined && deps.runBinding !== undefined) {
|
|
300
|
+
const run = await deps.runBinding.getRun(tenantId, input.ownerRunId);
|
|
301
|
+
if (run === null) {
|
|
302
|
+
return {
|
|
303
|
+
kind: 'err',
|
|
304
|
+
code: 'run-not-found',
|
|
305
|
+
message: `No run "${input.ownerRunId as unknown as string}"`,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
const runProject = run.projectId as unknown as ProjectId;
|
|
309
|
+
if (named !== undefined && named !== runProject) {
|
|
310
|
+
return {
|
|
311
|
+
kind: 'err',
|
|
312
|
+
code: 'bad-input',
|
|
313
|
+
message: `\`projectId\` must be the owner run's project ("${runProject as unknown as string}"), or absent`,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
return { kind: 'ok', projectId: runProject };
|
|
317
|
+
}
|
|
318
|
+
if (named !== undefined) return { kind: 'ok', projectId: named };
|
|
319
|
+
const fallback = (await deps.projectBinding?.getDefault(tenantId))?.id;
|
|
320
|
+
return { kind: 'ok', ...(fallback !== undefined && { projectId: fallback }) };
|
|
321
|
+
}
|
|
322
|
+
|
|
170
323
|
// -------------------- serialization --------------------
|
|
171
324
|
|
|
172
325
|
function serializeMeta(m: BlobMeta): Record<string, unknown> {
|
|
@@ -179,6 +332,8 @@ function serializeMeta(m: BlobMeta): Record<string, unknown> {
|
|
|
179
332
|
hash: m.hash,
|
|
180
333
|
tags: m.tags,
|
|
181
334
|
...(m.ownerRunId !== undefined && { ownerRunId: m.ownerRunId as unknown as string }),
|
|
335
|
+
...(m.projectId !== undefined && { projectId: m.projectId as unknown as string }),
|
|
336
|
+
...(m.createdBy !== undefined && { createdBy: m.createdBy }),
|
|
182
337
|
createdAt: m.createdAt as unknown as string,
|
|
183
338
|
...(m.bucket !== undefined && { bucket: m.bucket }),
|
|
184
339
|
...(m.key !== undefined && { key: m.key }),
|
|
@@ -260,6 +415,12 @@ function validateMultipart(form: FormData): ValidationResult<BlobPutInput> {
|
|
|
260
415
|
ownerRunId = ownerField as RunId;
|
|
261
416
|
}
|
|
262
417
|
|
|
418
|
+
let projectId: ProjectId | undefined;
|
|
419
|
+
const projectField = form.get('projectId');
|
|
420
|
+
if (typeof projectField === 'string' && projectField.length > 0) {
|
|
421
|
+
projectId = projectField as ProjectId;
|
|
422
|
+
}
|
|
423
|
+
|
|
263
424
|
let expectedHash: string | undefined;
|
|
264
425
|
const hashField = form.get('expectedHash');
|
|
265
426
|
if (typeof hashField === 'string' && hashField.length > 0) {
|
|
@@ -281,16 +442,21 @@ function validateMultipart(form: FormData): ValidationResult<BlobPutInput> {
|
|
|
281
442
|
size: file.size,
|
|
282
443
|
...(tags !== undefined && { tags }),
|
|
283
444
|
...(ownerRunId !== undefined && { ownerRunId }),
|
|
445
|
+
...(projectId !== undefined && { projectId }),
|
|
284
446
|
...(expectedHash !== undefined && { expectedHash }),
|
|
285
447
|
},
|
|
286
448
|
};
|
|
287
449
|
}
|
|
288
450
|
|
|
289
|
-
function decodeListFilter(
|
|
451
|
+
function decodeListFilter(
|
|
452
|
+
params: URLSearchParams,
|
|
453
|
+
tenantId: TenantId,
|
|
454
|
+
): ValidationResult<BlobFilter> {
|
|
290
455
|
const filter: {
|
|
291
456
|
ownerRunId?: RunId;
|
|
292
457
|
contentType?: string;
|
|
293
458
|
tags?: Record<string, string>;
|
|
459
|
+
scope?: Scope;
|
|
294
460
|
} = {};
|
|
295
461
|
const rawTags: Record<string, string> = {};
|
|
296
462
|
for (const [key, value] of params.entries()) {
|
|
@@ -303,6 +469,10 @@ function decodeListFilter(params: URLSearchParams): ValidationResult<BlobFilter>
|
|
|
303
469
|
filter.contentType = value;
|
|
304
470
|
continue;
|
|
305
471
|
}
|
|
472
|
+
if (key === 'projectId') {
|
|
473
|
+
filter.scope = { kind: 'project', tenantId, projectId: value as ProjectId };
|
|
474
|
+
continue;
|
|
475
|
+
}
|
|
306
476
|
if (key.startsWith('tag.')) {
|
|
307
477
|
const tagKey = key.slice('tag.'.length);
|
|
308
478
|
if (tagKey.length === 0) {
|