@weave-kit/engine 0.11.0 → 1.0.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/CHANGELOG.md +55 -0
- package/README.md +40 -20
- package/dist/adapters/auth/index.d.ts +1 -1
- package/dist/adapters/auth/index.d.ts.map +1 -1
- package/dist/adapters/auth/index.js +1 -1
- package/dist/adapters/auth/index.js.map +1 -1
- package/dist/adapters/auth/source.d.ts +3 -0
- package/dist/adapters/auth/source.d.ts.map +1 -1
- package/dist/adapters/auth/source.js.map +1 -1
- package/dist/adapters/auth/subject.d.ts +6 -0
- package/dist/adapters/auth/subject.d.ts.map +1 -1
- package/dist/adapters/auth/subject.js +15 -0
- package/dist/adapters/auth/subject.js.map +1 -1
- package/dist/adapters/auth/verify.d.ts +2 -0
- package/dist/adapters/auth/verify.d.ts.map +1 -1
- package/dist/adapters/events/index.d.ts.map +1 -1
- package/dist/adapters/events/index.js +6 -1
- package/dist/adapters/events/index.js.map +1 -1
- package/dist/adapters/graphql/http.d.ts.map +1 -1
- package/dist/adapters/graphql/http.js +4 -2
- package/dist/adapters/graphql/http.js.map +1 -1
- package/dist/adapters/graphql/resolvers.d.ts.map +1 -1
- package/dist/adapters/graphql/resolvers.js +1 -0
- package/dist/adapters/graphql/resolvers.js.map +1 -1
- package/dist/adapters/graphql/security.d.ts.map +1 -1
- package/dist/adapters/graphql/security.js +14 -4
- package/dist/adapters/graphql/security.js.map +1 -1
- package/dist/adapters/graphql/types.d.ts +2 -0
- package/dist/adapters/graphql/types.d.ts.map +1 -1
- package/dist/adapters/mcp/generate.d.ts.map +1 -1
- package/dist/adapters/mcp/generate.js +1 -0
- package/dist/adapters/mcp/generate.js.map +1 -1
- package/dist/adapters/mcp/http.d.ts.map +1 -1
- package/dist/adapters/mcp/http.js +21 -7
- package/dist/adapters/mcp/http.js.map +1 -1
- package/dist/adapters/mcp/tools.d.ts.map +1 -1
- package/dist/adapters/mcp/tools.js +4 -0
- package/dist/adapters/mcp/tools.js.map +1 -1
- package/dist/adapters/mcp/types.d.ts +2 -0
- package/dist/adapters/mcp/types.d.ts.map +1 -1
- package/dist/adapters/mcp/types.js.map +1 -1
- package/dist/adapters/openapi/document.d.ts.map +1 -1
- package/dist/adapters/openapi/document.js +2 -1
- package/dist/adapters/openapi/document.js.map +1 -1
- package/dist/adapters/openapi/types.d.ts +1 -0
- package/dist/adapters/openapi/types.d.ts.map +1 -1
- package/dist/adapters/ops/index.d.ts.map +1 -1
- package/dist/adapters/ops/index.js +2 -1
- package/dist/adapters/ops/index.js.map +1 -1
- package/dist/adapters/rest/audit.d.ts.map +1 -1
- package/dist/adapters/rest/audit.js +14 -2
- package/dist/adapters/rest/audit.js.map +1 -1
- package/dist/adapters/rest/ingress.d.ts.map +1 -1
- package/dist/adapters/rest/ingress.js +4 -1
- package/dist/adapters/rest/ingress.js.map +1 -1
- package/dist/adapters/rest/plugin.d.ts.map +1 -1
- package/dist/adapters/rest/plugin.js +14 -5
- package/dist/adapters/rest/plugin.js.map +1 -1
- package/dist/adapters/rest/proxy.d.ts.map +1 -1
- package/dist/adapters/rest/proxy.js +4 -1
- package/dist/adapters/rest/proxy.js.map +1 -1
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/deploy.js +60 -1
- package/dist/cli/commands/deploy.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +6 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +159 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +13 -0
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/index.js +9 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/types/commands.d.ts +18 -0
- package/dist/cli/types/commands.d.ts.map +1 -1
- package/dist/cli/types/index.d.ts +3 -3
- package/dist/cli/types/index.d.ts.map +1 -1
- package/dist/cli/types/index.js +1 -1
- package/dist/cli/types/index.js.map +1 -1
- package/dist/cli/types/values.d.ts +9 -0
- package/dist/cli/types/values.d.ts.map +1 -1
- package/dist/cli/types/values.js +8 -0
- package/dist/cli/types/values.js.map +1 -1
- package/dist/core/audit/types.d.ts +23 -3
- package/dist/core/audit/types.d.ts.map +1 -1
- package/dist/core/audit/types.js.map +1 -1
- package/dist/core/i18n/ar.d.ts.map +1 -1
- package/dist/core/i18n/ar.js +1 -0
- package/dist/core/i18n/ar.js.map +1 -1
- package/dist/core/i18n/de.d.ts.map +1 -1
- package/dist/core/i18n/de.js +1 -0
- package/dist/core/i18n/de.js.map +1 -1
- package/dist/core/i18n/en.d.ts +1 -0
- package/dist/core/i18n/en.d.ts.map +1 -1
- package/dist/core/i18n/en.js +1 -0
- package/dist/core/i18n/en.js.map +1 -1
- package/dist/core/i18n/es.d.ts.map +1 -1
- package/dist/core/i18n/es.js +1 -0
- package/dist/core/i18n/es.js.map +1 -1
- package/dist/core/i18n/fr.d.ts.map +1 -1
- package/dist/core/i18n/fr.js +1 -0
- package/dist/core/i18n/fr.js.map +1 -1
- package/dist/core/i18n/hi.d.ts.map +1 -1
- package/dist/core/i18n/hi.js +1 -0
- package/dist/core/i18n/hi.js.map +1 -1
- package/dist/core/i18n/id.d.ts.map +1 -1
- package/dist/core/i18n/id.js +1 -0
- package/dist/core/i18n/id.js.map +1 -1
- package/dist/core/i18n/ja.d.ts.map +1 -1
- package/dist/core/i18n/ja.js +1 -0
- package/dist/core/i18n/ja.js.map +1 -1
- package/dist/core/i18n/ko.d.ts.map +1 -1
- package/dist/core/i18n/ko.js +1 -0
- package/dist/core/i18n/ko.js.map +1 -1
- package/dist/core/i18n/pt.d.ts.map +1 -1
- package/dist/core/i18n/pt.js +1 -0
- package/dist/core/i18n/pt.js.map +1 -1
- package/dist/core/i18n/ru.d.ts.map +1 -1
- package/dist/core/i18n/ru.js +1 -0
- package/dist/core/i18n/ru.js.map +1 -1
- package/dist/core/i18n/vi.d.ts.map +1 -1
- package/dist/core/i18n/vi.js +1 -0
- package/dist/core/i18n/vi.js.map +1 -1
- package/dist/core/i18n/zh-hant.d.ts.map +1 -1
- package/dist/core/i18n/zh-hant.js +1 -0
- package/dist/core/i18n/zh-hant.js.map +1 -1
- package/dist/core/i18n/zh.d.ts.map +1 -1
- package/dist/core/i18n/zh.js +1 -0
- package/dist/core/i18n/zh.js.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/limiter/index.d.ts +1 -1
- package/dist/core/limiter/index.d.ts.map +1 -1
- package/dist/core/limiter/index.js +1 -1
- package/dist/core/limiter/index.js.map +1 -1
- package/dist/core/limiter/quota.d.ts +5 -0
- package/dist/core/limiter/quota.d.ts.map +1 -1
- package/dist/core/limiter/quota.js +7 -0
- package/dist/core/limiter/quota.js.map +1 -1
- package/dist/core/object/system-objects.d.ts.map +1 -1
- package/dist/core/object/system-objects.js +2 -0
- package/dist/core/object/system-objects.js.map +1 -1
- package/dist/core/object/validate/field.d.ts.map +1 -1
- package/dist/core/object/validate/field.js +4 -2
- package/dist/core/object/validate/field.js.map +1 -1
- package/dist/core/observability/index.d.ts +64 -0
- package/dist/core/observability/index.d.ts.map +1 -0
- package/dist/core/observability/index.js +41 -0
- package/dist/core/observability/index.js.map +1 -0
- package/dist/core/provider/identity/directory.d.ts +3 -0
- package/dist/core/provider/identity/directory.d.ts.map +1 -1
- package/dist/core/provider/identity/types.d.ts +2 -0
- package/dist/core/provider/identity/types.d.ts.map +1 -1
- package/dist/core/proxy/types.d.ts +3 -0
- package/dist/core/proxy/types.d.ts.map +1 -1
- package/dist/core/proxy/types.js.map +1 -1
- package/dist/core/rbac/rls.d.ts +3 -1
- package/dist/core/rbac/rls.d.ts.map +1 -1
- package/dist/core/rbac/rls.js +12 -1
- package/dist/core/rbac/rls.js.map +1 -1
- package/dist/core/rbac/rowScope.d.ts.map +1 -1
- package/dist/core/rbac/rowScope.js +15 -0
- package/dist/core/rbac/rowScope.js.map +1 -1
- package/dist/core/script/types.d.ts +2 -0
- package/dist/core/script/types.d.ts.map +1 -1
- package/dist/core/script/types.js.map +1 -1
- package/dist/core/storage/impact.d.ts +49 -0
- package/dist/core/storage/impact.d.ts.map +1 -0
- package/dist/core/storage/impact.js +130 -0
- package/dist/core/storage/impact.js.map +1 -0
- package/dist/core/storage/index.d.ts +2 -0
- package/dist/core/storage/index.d.ts.map +1 -1
- package/dist/core/storage/index.js +1 -0
- package/dist/core/storage/index.js.map +1 -1
- package/dist/core/storage/system-tables.d.ts.map +1 -1
- package/dist/core/storage/system-tables.js +2 -0
- package/dist/core/storage/system-tables.js.map +1 -1
- package/dist/core/tools/pipeline.d.ts +25 -0
- package/dist/core/tools/pipeline.d.ts.map +1 -1
- package/dist/core/tools/types.d.ts +8 -0
- package/dist/core/tools/types.d.ts.map +1 -1
- package/dist/core/trace.d.ts +29 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +41 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/core/types/fields.d.ts +2 -0
- package/dist/core/types/fields.d.ts.map +1 -1
- package/dist/core/types/principal.d.ts +11 -3
- package/dist/core/types/principal.d.ts.map +1 -1
- package/dist/core/types/principal.js +19 -5
- package/dist/core/types/principal.js.map +1 -1
- package/dist/core/types/values.d.ts +3 -1
- package/dist/core/types/values.d.ts.map +1 -1
- package/dist/core/types/values.js +3 -1
- package/dist/core/types/values.js.map +1 -1
- package/dist/core/types/workflow.d.ts +7 -1
- package/dist/core/types/workflow.d.ts.map +1 -1
- package/dist/core/types/workflow.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/data-access/cursor.d.ts +2 -0
- package/dist/runtime/data-access/cursor.d.ts.map +1 -1
- package/dist/runtime/data-access/cursor.js +1 -1
- package/dist/runtime/data-access/cursor.js.map +1 -1
- package/dist/runtime/data-access/index.d.ts +2 -2
- package/dist/runtime/data-access/index.d.ts.map +1 -1
- package/dist/runtime/data-access/index.js +2 -2
- package/dist/runtime/data-access/index.js.map +1 -1
- package/dist/runtime/data-access/query-budget.d.ts.map +1 -1
- package/dist/runtime/data-access/query-budget.js +6 -3
- package/dist/runtime/data-access/query-budget.js.map +1 -1
- package/dist/runtime/data-access/query.d.ts +5 -0
- package/dist/runtime/data-access/query.d.ts.map +1 -1
- package/dist/runtime/data-access/query.js +43 -3
- package/dist/runtime/data-access/query.js.map +1 -1
- package/dist/runtime/data-access/rbac.d.ts +2 -0
- package/dist/runtime/data-access/rbac.d.ts.map +1 -1
- package/dist/runtime/data-access/rbac.js +29 -20
- package/dist/runtime/data-access/rbac.js.map +1 -1
- package/dist/runtime/data-access/sql-executor.d.ts +2 -0
- package/dist/runtime/data-access/sql-executor.d.ts.map +1 -1
- package/dist/runtime/data-access/sql-executor.js +3 -0
- package/dist/runtime/data-access/sql-executor.js.map +1 -1
- package/dist/runtime/data-access/types.d.ts +6 -0
- package/dist/runtime/data-access/types.d.ts.map +1 -1
- package/dist/runtime/data-access/types.js +5 -1
- package/dist/runtime/data-access/types.js.map +1 -1
- package/dist/runtime/engine.d.ts +34 -3
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +39 -6
- package/dist/runtime/engine.js.map +1 -1
- package/dist/runtime/tools/executor.d.ts +2 -0
- package/dist/runtime/tools/executor.d.ts.map +1 -1
- package/dist/runtime/tools/executor.js +9 -0
- package/dist/runtime/tools/executor.js.map +1 -1
- package/dist/subsystems/audit/index.d.ts +12 -1
- package/dist/subsystems/audit/index.d.ts.map +1 -1
- package/dist/subsystems/audit/index.js +16 -0
- package/dist/subsystems/audit/index.js.map +1 -1
- package/dist/subsystems/audit/store.d.ts.map +1 -1
- package/dist/subsystems/audit/store.js +32 -11
- package/dist/subsystems/audit/store.js.map +1 -1
- package/dist/subsystems/evidence/index.d.ts +2 -1
- package/dist/subsystems/evidence/index.d.ts.map +1 -1
- package/dist/subsystems/evidence/index.js +1 -1
- package/dist/subsystems/evidence/index.js.map +1 -1
- package/dist/subsystems/evidence/store.d.ts +7 -1
- package/dist/subsystems/evidence/store.d.ts.map +1 -1
- package/dist/subsystems/evidence/store.js +68 -0
- package/dist/subsystems/evidence/store.js.map +1 -1
- package/dist/subsystems/script/backend/types.d.ts +1 -0
- package/dist/subsystems/script/backend/types.d.ts.map +1 -1
- package/dist/subsystems/script/bridge.d.ts.map +1 -1
- package/dist/subsystems/script/bridge.js +7 -2
- package/dist/subsystems/script/bridge.js.map +1 -1
- package/dist/version.d.ts +8 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +8 -1
- package/dist/version.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,61 @@
|
|
|
3
3
|
All notable changes to `@weave-kit/engine`. Format follows [Keep a Changelog](https://keepachangelog.com/);
|
|
4
4
|
the project uses [Semantic Versioning](https://semver.org/).
|
|
5
5
|
|
|
6
|
+
## [1.0.0]
|
|
7
|
+
|
|
8
|
+
The **G1 contract-freeze** release: the public surface (schema/workflow formats, REST routes, MCP tool
|
|
9
|
+
names, event types, error codes, data-access/RBAC contracts, package exports) is now frozen under
|
|
10
|
+
`CONTRACT_VERSION` (`1`) and evolves **additively** from here. It also lands multi-tenancy, the
|
|
11
|
+
observability seam and operational tooling.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **Multi-tenancy (row).** `EngineConfig.tenants = { enabled?, defaultTenant? }`; an object field
|
|
16
|
+
marked `"tenant": true` scopes every read/write to the subject's tenant — RBAC row scope (even for
|
|
17
|
+
`read: "all"`) + native RLS (`weavekit.tenant_id` GUC) + audit (`tenant_id`). The tenant is forced
|
|
18
|
+
on create and immutable on update (`object.tenant.immutable`); `withDefaultTenant` stamps a subject
|
|
19
|
+
that lacks one. Absent tenant = single-tenant (unchanged). Exported `principalTenantId`, `tenantOf`,
|
|
20
|
+
`scopedQuotaKey`, `ROW_SCOPE_MARKERS.TENANT`.
|
|
21
|
+
- **Contract freeze (G1).** `CONTRACT_VERSION` (exported from the package root; mirrored in
|
|
22
|
+
`GET /version` and the OpenAPI `info.x-contract-version`) plus a freeze gate test and the
|
|
23
|
+
contract-freeze / deprecation policy.
|
|
24
|
+
- **Observability seam.** `MetricsSink` / `TraceSink` + single-source `METRIC_NAMES`
|
|
25
|
+
(`core/observability`), injected via `EngineConfig.observability`; the engine emits request
|
|
26
|
+
latency/status, `rbac.deny` and `query.budget.reject`, and records spans. `core/trace.ts`
|
|
27
|
+
(`parseTraceparent`) parses the inbound W3C `traceparent`; the `traceId` threads through
|
|
28
|
+
audit / evidence / events. No-op default; no telemetry backend bundled.
|
|
29
|
+
- **`weave doctor` preflight** — read-only (connection, PostgreSQL compatibility, schema↔DB drift,
|
|
30
|
+
engine system tables, RLS role + sandbox), `--json` supported; `weave migrate --preflight` runs it
|
|
31
|
+
first and aborts on any failure.
|
|
32
|
+
- **`weave deploy plan` schema-impact analysis** (`analyzeImpact` / `SchemaImpact`): creates, column
|
|
33
|
+
adds, constraints, indexes, enum + RLS changes, a data-compat risk and an API-breaking flag, plus
|
|
34
|
+
the live schema revision and a **config-drift** flag.
|
|
35
|
+
- **Audit + evidence keyset cursor.** `AuditQuery.cursor` / `AuditQueryResult.nextCursor` and
|
|
36
|
+
`EvidenceQuery` / `EvidenceQueryResult` + `queryEvidence` (stable `(ts DESC, id DESC)` paging;
|
|
37
|
+
offset still supported).
|
|
38
|
+
- **Enterprise seams** documented and annotated (`@enterprise-reserved`): `AuditSink`,
|
|
39
|
+
`ApprovalsBackend`, `WorkflowTimerStore` / `WorkflowBackend`, `IdentityStore`,
|
|
40
|
+
`AuthSource` / `AuthVerifier`, `GuardrailPolicy`, `ProxyTargetResolver`, `MetricsSink` / `TraceSink`.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- **GraphQL query cost is weighted by the list `limit`** (was a raw field count), matching the
|
|
45
|
+
documented behavior.
|
|
46
|
+
- Query-budget filter counting is robust against malformed `$or` groups.
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
|
|
50
|
+
- **System-principal audit `actorId` is `'system'`** again (matches the documented contract; the
|
|
51
|
+
specific capability is kept on the event's `meta.capability`).
|
|
52
|
+
- **Tenant write isolation**: `create` forces the tenant column to the subject's tenant, and `update`
|
|
53
|
+
rejects moving a row to another tenant (`object.tenant.immutable`).
|
|
54
|
+
- MCP argument-validation denials are audited under `tool.args.invalid` (not `mcp.tool.notFound`).
|
|
55
|
+
|
|
56
|
+
### Removed
|
|
57
|
+
|
|
58
|
+
- `EngineAuditConfig.retention` — the no-op placeholder is gone (retention / export / compliance are
|
|
59
|
+
the enterprise E2 layer).
|
|
60
|
+
|
|
6
61
|
## [0.11.0]
|
|
7
62
|
|
|
8
63
|
### Added
|
package/README.md
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
<h1 align="center">Let AI agents operate your data — safely</h1>
|
|
2
2
|
|
|
3
|
-
Define your data model once in `schema.json`, and WeaveKit compiles it into PostgreSQL tables,
|
|
4
|
-
|
|
5
|
-
agents call with typed tools — never raw SQL. Self-hosted: your data
|
|
3
|
+
Define your data model once in `schema.json`, and WeaveKit compiles it into PostgreSQL tables, REST
|
|
4
|
+
and GraphQL APIs with row- and field-level RBAC, an immutable audit log with execution evidence, and
|
|
5
|
+
an MCP tool surface that AI agents call with typed tools — never raw SQL. Self-hosted: your data
|
|
6
|
+
stays in your database.
|
|
6
7
|
|
|
7
8
|
```
|
|
8
9
|
objects/leads/schema.json → Git commit (source of truth)
|
|
9
10
|
PostgreSQL tables + indexes + RLS
|
|
10
|
-
REST
|
|
11
|
-
MCP tools (per-identity surface + guardrails)
|
|
12
|
-
Immutable audit log
|
|
11
|
+
REST + GraphQL APIs (CRUD + RBAC)
|
|
12
|
+
MCP tools (per-identity surface + guardrails + approvals)
|
|
13
|
+
Immutable audit log + execution evidence
|
|
13
14
|
TypeScript types
|
|
14
15
|
```
|
|
15
16
|
|
|
@@ -29,8 +30,8 @@ objects/leads/schema.json → Git commit (source of truth)
|
|
|
29
30
|
- **Typed tools in minutes, not weeks** — hand-writing an MCP server (tools + permissions + audit)
|
|
30
31
|
for a few tables takes days; here it is a few `schema.json` files, and new fields or tables
|
|
31
32
|
extend the tool surface automatically.
|
|
32
|
-
- **More than MCP** — the same schema also drives
|
|
33
|
-
people and agents share one governed contract.
|
|
33
|
+
- **More than MCP** — the same schema also drives REST and GraphQL APIs and generated TypeScript
|
|
34
|
+
types, so people and agents share one governed contract.
|
|
34
35
|
- **Self-hosted** — the engine runs in your environment; no data leaves your database.
|
|
35
36
|
|
|
36
37
|
## How it works
|
|
@@ -52,23 +53,38 @@ write.
|
|
|
52
53
|
types. Declared in a project-local, Git-committed `field-types/` directory.
|
|
53
54
|
- **Named enums** — declare a shared enum once in `enums/` and reference it from any object by
|
|
54
55
|
`enumType`; every field shares one native PostgreSQL type and one set of per-value labels.
|
|
55
|
-
- **Governed REST API** — object CRUD with row-level (`all`/`own`/`
|
|
56
|
-
uniform error contract.
|
|
56
|
+
- **Governed REST API** — object CRUD with row-level (`all`/`own`/`department`) and field-level RBAC
|
|
57
|
+
and a uniform error contract.
|
|
57
58
|
- **MCP tool surface** — a streamable HTTP endpoint at `/mcp` with a per-identity tool surface and
|
|
58
59
|
guardrails.
|
|
59
60
|
- **GraphQL API** — an opt-in read/write GraphQL endpoint compiled from the same `schema.json`, with
|
|
60
61
|
nested relations, the same RBAC/audit, per-request batching and query hardening.
|
|
61
|
-
- **
|
|
62
|
+
- **Schema revisions & atomic deploys** — `weave deploy plan` previews the diff; `weave deploy apply`
|
|
63
|
+
commits the DDL, the metadata cache and a global **schema revision** in one transaction (no
|
|
64
|
+
half-applied deploys).
|
|
65
|
+
- **Agent execution pipeline** — every write and tool call runs through one
|
|
66
|
+
Plan → Validate → Authorize → Guardrail → Approval → Execute → Commit → Evidence pipeline, so
|
|
67
|
+
guardrails and approvals cover REST, MCP and GraphQL alike; enable `evidence` to record a
|
|
68
|
+
`weavekit_evidence` row per execution (correlated by request / trace / schema revision).
|
|
69
|
+
- **Query budget** — bound a read/query across the engine: rows, filters and sorts in data-access,
|
|
70
|
+
joins / SQL length / statement timeout in restricted SQL, and GraphQL depth.
|
|
71
|
+
- **Multi-tenancy (row)** — mark a field `"tenant": true` and every read/write is scoped to the
|
|
72
|
+
subject's tenant (RBAC row scope + PostgreSQL RLS + audit); single-tenant by default.
|
|
73
|
+
- **Audit log** — an immutable event log for data mutations, with durability modes
|
|
74
|
+
(`best-effort` / `transactional` / `durable`) and a keyset-cursor query.
|
|
75
|
+
- **Observability** — a low-level metrics/trace seam (`MetricsSink` / `TraceSink`, `METRIC_NAMES`)
|
|
76
|
+
that emits request latency, RBAC denials, query-budget rejects and W3C `traceparent`-correlated
|
|
77
|
+
spans; the engine ships a no-op default and brings no backend.
|
|
62
78
|
- **Sandboxed hooks** — `*.server.js` lifecycle hooks running in isolated workers.
|
|
63
79
|
- **Type generation** — object-level TypeScript types derived from the schema.
|
|
64
80
|
- **Live events** — an SSE stream with replay.
|
|
65
|
-
- **Operations** — health / readiness / version endpoints, request rate
|
|
66
|
-
structured logging.
|
|
81
|
+
- **Operations** — `weave doctor` preflight, health / readiness / version endpoints, request rate
|
|
82
|
+
limiting, CORS and structured logging.
|
|
67
83
|
|
|
68
84
|
## Requirements
|
|
69
85
|
|
|
70
86
|
- Node.js 22+
|
|
71
|
-
- PostgreSQL
|
|
87
|
+
- PostgreSQL 12+ (the engine's tested floor; `weave doctor` reports the version)
|
|
72
88
|
|
|
73
89
|
## Quick start
|
|
74
90
|
|
|
@@ -100,11 +116,11 @@ Full documentation: **[docs.weavekit.io/engine](https://docs.weavekit.io/engine)
|
|
|
100
116
|
|
|
101
117
|
- [Getting started](https://docs.weavekit.io/engine/guides/getting-started) — scaffold, migrate, run, consume
|
|
102
118
|
- [Git-versioned metadata](https://docs.weavekit.io/engine/guides/model/git-versioned-metadata) — your data model as reviewable Git commits
|
|
103
|
-
- [Schema guide](https://docs.weavekit.io/engine/guides/model/schema) · [RBAC](https://docs.weavekit.io/engine/guides/access/rbac) · [Formulas](https://docs.weavekit.io/engine/guides/model/formulas) · [Audit](https://docs.weavekit.io/engine/guides/platform/audit)
|
|
104
|
-
- [CLI reference](https://docs.weavekit.io/engine/guides/platform/cli) · [MCP](https://docs.weavekit.io/engine/guides/agents/mcp) · [Script hooks](https://docs.weavekit.io/engine/guides/automation/script-hooks)
|
|
105
|
-
- [Custom tools & guardrails](https://docs.weavekit.io/engine/guides/agents/custom-tools-and-guardrails) · [Custom field types](https://docs.weavekit.io/engine/reference/schema/custom-field-types) · [Quotas](https://docs.weavekit.io/engine/guides/automation/quotas) · [Inbound events](https://docs.weavekit.io/engine/guides/integration/ingress)
|
|
106
|
-
- [Public API & dependency budget](https://docs.weavekit.io/engine/reference/api/public-api)
|
|
107
|
-
- [Practices & operations](https://docs.weavekit.io/engine/practices/agent/existing-crm-to-mcp) — real integration and deployment walkthroughs
|
|
119
|
+
- [Schema guide](https://docs.weavekit.io/engine/guides/model/schema) · [RBAC](https://docs.weavekit.io/engine/guides/access/rbac) · [Multi-tenancy](https://docs.weavekit.io/engine/guides/access/multi-tenancy) · [Formulas](https://docs.weavekit.io/engine/guides/model/formulas) · [Audit](https://docs.weavekit.io/engine/guides/platform/audit)
|
|
120
|
+
- [CLI reference](https://docs.weavekit.io/engine/guides/platform/cli) · [Observability](https://docs.weavekit.io/engine/guides/platform/observability) · [MCP](https://docs.weavekit.io/engine/guides/agents/mcp) · [Execution & evidence](https://docs.weavekit.io/engine/guides/agents/execution-and-evidence) · [Script hooks](https://docs.weavekit.io/engine/guides/automation/script-hooks)
|
|
121
|
+
- [Custom tools & guardrails](https://docs.weavekit.io/engine/guides/agents/custom-tools-and-guardrails) · [Query budget](https://docs.weavekit.io/engine/guides/automation/query-budget) · [Custom field types](https://docs.weavekit.io/engine/reference/schema/custom-field-types) · [Quotas](https://docs.weavekit.io/engine/guides/automation/quotas) · [Inbound events](https://docs.weavekit.io/engine/guides/integration/ingress)
|
|
122
|
+
- [Public API & dependency budget](https://docs.weavekit.io/engine/reference/api/public-api) · [Enterprise seams](https://docs.weavekit.io/engine/reference/enterprise-seams) · [Contract freeze](https://docs.weavekit.io/engine/reference/contract-freeze)
|
|
123
|
+
- [Practices & operations](https://docs.weavekit.io/engine/practices/agent/existing-crm-to-mcp) · [Release checklist](https://docs.weavekit.io/engine/operations/release) — real integration and deployment walkthroughs
|
|
108
124
|
|
|
109
125
|
The Markdown sources live in [`docs/`](https://github.com/weavekit/engine/tree/main/docs).
|
|
110
126
|
|
|
@@ -135,6 +151,8 @@ await engine.app.listen({ port: 3000 });
|
|
|
135
151
|
| Command | Description |
|
|
136
152
|
| --- | --- |
|
|
137
153
|
| `weave migrate [--dry-run]` | State-diff migration + metadata cache + auto-commit |
|
|
154
|
+
| `weave deploy plan` / `weave deploy apply` | Preview / atomically apply schema changes and record a global schema revision |
|
|
155
|
+
| `weave doctor` | Read-only preflight (connection, PostgreSQL compatibility, drift, system tables, RLS + sandbox) |
|
|
138
156
|
| `weave dev [--port]` | Run with hot reload |
|
|
139
157
|
| `weave build` | Bundle the server entry (esbuild) |
|
|
140
158
|
| `weave test` | Proxy the project test suite |
|
|
@@ -152,7 +170,7 @@ await engine.app.listen({ port: 3000 });
|
|
|
152
170
|
| `weave field-type:check` | Validate registrations + schemas against the registry |
|
|
153
171
|
| `weave enum:list` | List declared named enums (`enums/<name>.json`) |
|
|
154
172
|
| `weave enum:check` | Validate enum declarations + schema references |
|
|
155
|
-
| `weave module:add` / `module:remove <name>` | Enable/disable an optional subsystem (audit/script) |
|
|
173
|
+
| `weave module:add` / `module:remove <name>` | Enable/disable an optional subsystem (audit/script/workflow) |
|
|
156
174
|
|
|
157
175
|
## Object-level types
|
|
158
176
|
|
|
@@ -174,8 +192,10 @@ const { rows } = await leads.find({ filter: { status: 'open' } });
|
|
|
174
192
|
npm install
|
|
175
193
|
npm run build # tsc → dist
|
|
176
194
|
npm test # unit + e2e (e2e needs DATABASE_URL)
|
|
195
|
+
npm run test:coverage # coverage gate on security-critical paths
|
|
177
196
|
npm run typecheck
|
|
178
197
|
npm run lint
|
|
198
|
+
node scripts/check-exports.mjs # verify package exports + contract names
|
|
179
199
|
```
|
|
180
200
|
|
|
181
201
|
Issues and pull requests are welcome. See [`AGENTS.md`](AGENTS.md) for architecture notes and
|
|
@@ -4,7 +4,7 @@ import { type AuthConfig, type Authenticator } from './source.js';
|
|
|
4
4
|
export type { Authenticator, AuthConfig, AuthResolver, AuthSource } from './source.js';
|
|
5
5
|
export { createAuth } from './source.js';
|
|
6
6
|
export type { AuthVerifier } from './verify.js';
|
|
7
|
-
export { createDirectoryAuthenticator, enforceSyncedIdentity } from './subject.js';
|
|
7
|
+
export { createDirectoryAuthenticator, enforceSyncedIdentity, withDefaultTenant } from './subject.js';
|
|
8
8
|
/**
|
|
9
9
|
* Resolve the Authorization header into a subject, or throw a 401-family
|
|
10
10
|
* {@link SchemaError}. Missing header → `auth.missingKey`; present but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAc,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9E,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAc,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9E,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtG;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAK1B;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,CAEpE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SchemaError } from '../../core/index.js';
|
|
2
2
|
import { createAuth } from './source.js';
|
|
3
3
|
export { createAuth } from './source.js';
|
|
4
|
-
export { createDirectoryAuthenticator, enforceSyncedIdentity } from './subject.js';
|
|
4
|
+
export { createDirectoryAuthenticator, enforceSyncedIdentity, withDefaultTenant } from './subject.js';
|
|
5
5
|
/**
|
|
6
6
|
* Resolve the Authorization header into a subject, or throw a 401-family
|
|
7
7
|
* {@link SchemaError}. Missing header → `auth.missingKey`; present but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAuC,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAuC,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtG;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAA4B,EAC5B,MAA0B,EAC1B,MAAc;IAEd,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACnD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -13,6 +13,9 @@ export type AuthResolver = (header: string | undefined) => IdentitySubject | nul
|
|
|
13
13
|
/**
|
|
14
14
|
* The authentication source: either a static key map or a resolver function.
|
|
15
15
|
* `source` is required whenever `auth` is configured (fail fast otherwise).
|
|
16
|
+
*
|
|
17
|
+
* Stable seam (`@enterprise-reserved`): SSO/OIDC/SAML is enterprise E1; the
|
|
18
|
+
* engine ships static-key and custom-resolver sources.
|
|
16
19
|
*/
|
|
17
20
|
export type AuthSource = Record<string, IdentitySubject> | AuthResolver;
|
|
18
21
|
/** authentication config — the single source of truth is `source` */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC/F;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAEpH
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CAC/F;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,eAAe,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;AAEpH;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,YAAY,CAAC;AAExE,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,CAiB5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/adapters/auth/source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/adapters/auth/source.ts"],"names":[],"mappings":"AA6BA,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC;IACpB,OAAO;QACL,OAAO,CAAC,MAA0B;YAChC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACtC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACxB,sEAAsE;YACtE,6DAA6D;YAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -19,4 +19,10 @@ export declare function createDirectoryAuthenticator(options: {
|
|
|
19
19
|
* roles/department. Unknown identities are rejected with `identity.notSynced`.
|
|
20
20
|
*/
|
|
21
21
|
export declare function enforceSyncedIdentity(inner: Authenticator, directory: IdentityDirectory, locale: Locale): Authenticator;
|
|
22
|
+
/**
|
|
23
|
+
* Multi-tenancy: decorate an authenticator so a resolved subject without a
|
|
24
|
+
* tenant is stamped with the configured default tenant (row-mode single-tenant
|
|
25
|
+
* deployments). A subject that already carries a tenant is left untouched.
|
|
26
|
+
*/
|
|
27
|
+
export declare function withDefaultTenant(inner: Authenticator, defaultTenant: string): Authenticator;
|
|
22
28
|
//# sourceMappingURL=subject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/subject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,uCAAuC,CAAC;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,aAAa,CAahB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GACb,aAAa,CAYf"}
|
|
1
|
+
{"version":3,"file":"subject.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/subject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,uCAAuC,CAAC;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,aAAa,CAahB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GACb,aAAa,CAYf;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAQ5F"}
|
|
@@ -39,4 +39,19 @@ export function enforceSyncedIdentity(inner, directory, locale) {
|
|
|
39
39
|
},
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Multi-tenancy: decorate an authenticator so a resolved subject without a
|
|
44
|
+
* tenant is stamped with the configured default tenant (row-mode single-tenant
|
|
45
|
+
* deployments). A subject that already carries a tenant is left untouched.
|
|
46
|
+
*/
|
|
47
|
+
export function withDefaultTenant(inner, defaultTenant) {
|
|
48
|
+
return {
|
|
49
|
+
async resolve(header) {
|
|
50
|
+
const subject = await inner.resolve(header);
|
|
51
|
+
if (subject === null || subject.tenantId !== undefined)
|
|
52
|
+
return subject;
|
|
53
|
+
return { ...subject, tenantId: defaultTenant };
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
42
57
|
//# sourceMappingURL=subject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject.js","sourceRoot":"","sources":["../../../src/adapters/auth/subject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAI5C;IACC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAChD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAA0B;YACtC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,SAA4B,EAC5B,MAAc;IAEd,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAA0B;YACtC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"subject.js","sourceRoot":"","sources":["../../../src/adapters/auth/subject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAI5C;IACC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAChD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAA0B;YACtC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAoB,EACpB,SAA4B,EAC5B,MAAc;IAEd,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAA0B;YACtC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAoB,EAAE,aAAqB;IAC3E,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAA0B;YACtC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YACvE,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -5,6 +5,8 @@ import type { VerifiedIdentity } from '../../core/provider/identity/index.js';
|
|
|
5
5
|
* supplied by integrations (e.g. `@weave-kit/enterprise`); the engine defines
|
|
6
6
|
* the contract and composes it with the identity directory. Returning `null`
|
|
7
7
|
* means the credential is missing/invalid (401).
|
|
8
|
+
*
|
|
9
|
+
* Stable seam (`@enterprise-reserved`): protocol verifiers are enterprise E1.
|
|
8
10
|
*/
|
|
9
11
|
export interface AuthVerifier {
|
|
10
12
|
verify(header: string | undefined): VerifiedIdentity | null | Promise<VerifiedIdentity | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/adapters/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CAChG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAGV,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;CAC1C;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAmB,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAGV,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;CAC1C;AAuBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,IAAI,CAuD9G"}
|
|
@@ -12,7 +12,12 @@ function passesFilter(event, subject, readable, isAdmin) {
|
|
|
12
12
|
}
|
|
13
13
|
case EVENT_TYPES.AUDIT_EVENT: {
|
|
14
14
|
const payload = event.payload;
|
|
15
|
-
|
|
15
|
+
if (isAdmin)
|
|
16
|
+
return true;
|
|
17
|
+
if (payload.event.actorId !== subject.id)
|
|
18
|
+
return false;
|
|
19
|
+
// tenant boundary: a tenant-scoped identity never sees another tenant's events
|
|
20
|
+
return subject.tenantId === undefined || payload.event.tenantId === undefined || payload.event.tenantId === subject.tenantId;
|
|
16
21
|
}
|
|
17
22
|
default:
|
|
18
23
|
return true; // schema.changed — broadcast
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/events/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AASzE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAwC9D,SAAS,YAAY,CAAC,KAAkB,EAAE,OAAwB,EAAE,QAAqB,EAAE,OAAgB;IACzG,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW,CAAC,cAAc,CAAC;QAChC,KAAK,WAAW,CAAC,cAAc,CAAC;QAChC,KAAK,WAAW,CAAC,cAAc,CAAC;QAChC,KAAK,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAA6B,CAAC;YACpD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAA4B,CAAC;YACnD,OAAO,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/events/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,EAA0C,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,EAA0C,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAqE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErH,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;GASG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAyED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAkFxF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execute, GraphQLError, parse, validate } from 'graphql';
|
|
2
|
-
import { createSlidingWindow, SchemaError } from '../../core/index.js';
|
|
2
|
+
import { createSlidingWindow, SchemaError, traceIdOf } from '../../core/index.js';
|
|
3
3
|
import { mapSchemaError } from '../../core/api/index.js';
|
|
4
4
|
import { authenticate } from '../auth/index.js';
|
|
5
5
|
import { createRecordLoader } from './loader.js';
|
|
@@ -128,12 +128,14 @@ export function registerGraphQLRoutes(app, deps) {
|
|
|
128
128
|
}
|
|
129
129
|
throw error;
|
|
130
130
|
}
|
|
131
|
+
const traceHeader = request.headers.traceparent;
|
|
132
|
+
const traceId = traceIdOf(Array.isArray(traceHeader) ? traceHeader[0] : traceHeader);
|
|
131
133
|
const result = await execute({
|
|
132
134
|
schema: deps.schema,
|
|
133
135
|
document,
|
|
134
136
|
...(parsed.variables === undefined ? {} : { variableValues: parsed.variables }),
|
|
135
137
|
...(parsed.operationName === undefined ? {} : { operationName: parsed.operationName }),
|
|
136
|
-
contextValue: { subject, engine: deps.engine, loader: createRecordLoader(deps.engine, subject), requestId: request.id },
|
|
138
|
+
contextValue: { subject, engine: deps.engine, loader: createRecordLoader(deps.engine, subject), requestId: request.id, ...(traceId === undefined ? {} : { traceId }) },
|
|
137
139
|
});
|
|
138
140
|
const body = {};
|
|
139
141
|
if (result.data !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/adapters/graphql/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAsB,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAqC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/adapters/graphql/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/resolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAA6B,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AAEH,UAAU,QAAQ;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/resolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAA6B,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;GAMG;AAEH,UAAU,QAAQ;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmCD,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,IAE3C,SAAS,OAAO,EAChB,MAAM,QAAQ,EACd,SAAS,cAAc,KACtB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB/C;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,IACjC,SAAS,OAAO,EAAE,MAAM;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAOjG;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,IACjC,SAAS,OAAO,EAAE,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAMpH;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,IAE7C,SAAS,OAAO,EAChB,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACtD,SAAS,cAAc,KACtB,OAAO,CAAC,OAAO,CAAC,CAMpB;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,IACjC,SAAS,OAAO,EAAE,MAAM;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAIjG;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,IAEjD,SAAS,OAAO,EAChB,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACvE,SAAS,cAAc,KACtB,OAAO,CAAC,OAAO,CAAC,CAapB;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAE9D,QAAQ,OAAO,EACf,OAAO,OAAO,EACd,SAAS,cAAc,KACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAK3C;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,IACpF,QAAQ,OAAO,EAAE,OAAO,OAAO,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAS5G;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,IACnC,QAAQ,OAAO,EAAE,OAAO,OAAO,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAK5G"}
|
|
@@ -11,6 +11,7 @@ function dataContext(context) {
|
|
|
11
11
|
principal: userPrincipal(context.subject),
|
|
12
12
|
locale: context.engine.locale,
|
|
13
13
|
...(context.requestId === undefined ? {} : { requestId: context.requestId }),
|
|
14
|
+
...(context.traceId === undefined ? {} : { traceId: context.traceId }),
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
/** map a thrown SchemaError to a GraphQLError carrying its stable code */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../src/adapters/graphql/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAmB7B,uFAAuF;AACvF,SAAS,YAAY,CAAC,GAAqB;IACzC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC;AAChH,CAAC;AAED,SAAS,WAAW,CAAC,OAAuB;IAC1C,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;QACzB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ;QACjC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;QAC7B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../src/adapters/graphql/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/security.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/security.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;;GAKG;AAEH,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,aAAa,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjC;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAE5D;AAeD,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,SAAS,GAAG,gBAAgB,CAQ3F;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,cAAc,EAAE,CAErF;AAED,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA4CtG"}
|
|
@@ -2,6 +2,7 @@ import { createHash } from 'node:crypto';
|
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { NoSchemaIntrospectionCustomRule, print, specifiedRules, visit, } from 'graphql';
|
|
4
4
|
import { SchemaError } from '../../core/index.js';
|
|
5
|
+
import { PAGINATION } from '../../runtime/data-access/index.js';
|
|
5
6
|
/**
|
|
6
7
|
* Query hardening (depth / complexity / alias / introspection / allow-list).
|
|
7
8
|
* Limits are computed from the parsed document with `visit`; introspection is a
|
|
@@ -47,7 +48,7 @@ export function validateQuery(document, security, locale) {
|
|
|
47
48
|
}
|
|
48
49
|
let depth = 0;
|
|
49
50
|
let maxDepth = 0;
|
|
50
|
-
let
|
|
51
|
+
let cost = 0;
|
|
51
52
|
let aliases = 0;
|
|
52
53
|
visit(document, {
|
|
53
54
|
SelectionSet: {
|
|
@@ -62,9 +63,18 @@ export function validateQuery(document, security, locale) {
|
|
|
62
63
|
},
|
|
63
64
|
Field: {
|
|
64
65
|
enter: (node) => {
|
|
65
|
-
fields += 1;
|
|
66
66
|
if (node.alias !== undefined)
|
|
67
67
|
aliases += 1;
|
|
68
|
+
// cost is weighted by the field's `limit` argument (a list field can
|
|
69
|
+
// return up to `limit` rows), capped at the engine pagination ceiling
|
|
70
|
+
let weight = 1;
|
|
71
|
+
const limitArg = node.arguments?.find((a) => a.name.value === 'limit');
|
|
72
|
+
if (limitArg !== undefined && limitArg.value.kind === 'IntValue') {
|
|
73
|
+
const n = Number(limitArg.value.value);
|
|
74
|
+
if (Number.isFinite(n) && n > 0)
|
|
75
|
+
weight = Math.min(Math.floor(n), PAGINATION.MAX_LIMIT);
|
|
76
|
+
}
|
|
77
|
+
cost += weight;
|
|
68
78
|
},
|
|
69
79
|
},
|
|
70
80
|
});
|
|
@@ -74,8 +84,8 @@ export function validateQuery(document, security, locale) {
|
|
|
74
84
|
if (maxDepth > security.maxDepth) {
|
|
75
85
|
throw new SchemaError('graphql.depthExceeded', { depth: maxDepth, max: security.maxDepth }, locale);
|
|
76
86
|
}
|
|
77
|
-
if (security.maxComplexity !== undefined &&
|
|
78
|
-
throw new SchemaError('graphql.complexityExceeded', { cost
|
|
87
|
+
if (security.maxComplexity !== undefined && cost > security.maxComplexity) {
|
|
88
|
+
throw new SchemaError('graphql.complexityExceeded', { cost, max: security.maxComplexity }, locale);
|
|
79
89
|
}
|
|
80
90
|
}
|
|
81
91
|
//# sourceMappingURL=security.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/adapters/graphql/security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,+BAA+B,EAC/B,KAAK,EACL,cAAc,EACd,KAAK,GAGN,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAe,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/adapters/graphql/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,8 @@ export interface GraphQLContext {
|
|
|
20
20
|
loader: RecordLoader;
|
|
21
21
|
/** request correlation id, attached to audit events */
|
|
22
22
|
requestId?: string;
|
|
23
|
+
/** distributed trace id (parsed from inbound W3C `traceparent`) */
|
|
24
|
+
traceId?: string;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* Per-request, same-tick batching loader for nested relation resolution. Each
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/graphql/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,qEAAqE;IACrE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACrF,0EAA0E;IAC1E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED,oFAAoF;AACpF,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAUjE,OAAO,KAAK,EAAc,SAAS,EAAiB,WAAW,EAAmB,MAAM,YAAY,CAAC;AAErG;;;;;;;;;;GAUG;AAEH,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAUjE,OAAO,KAAK,EAAc,SAAS,EAAiB,WAAW,EAAmB,MAAM,YAAY,CAAC;AAErG;;;;;;;;;;GAUG;AAEH,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AA6MD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,eAAe,EACxB,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC1D,YAAY,EAAE,CAiChB"}
|
|
@@ -181,6 +181,7 @@ function customToolTools(engine, subject, custom) {
|
|
|
181
181
|
args,
|
|
182
182
|
locale: ctx.engine.locale,
|
|
183
183
|
...(ctx.requestId === undefined ? {} : { requestId: ctx.requestId }),
|
|
184
|
+
...(ctx.traceId === undefined ? {} : { traceId: ctx.traceId }),
|
|
184
185
|
...(ctx.schemaRevision === undefined ? {} : { schemaRevision: ctx.schemaRevision }),
|
|
185
186
|
});
|
|
186
187
|
return result;
|