ai-database 2.1.1 → 2.3.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 +47 -1
- package/README.md +1063 -186
- package/dist/actions.d.ts +2 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +1 -1
- package/dist/actions.js.map +1 -1
- package/dist/ai-promise-db.d.ts +52 -23
- package/dist/ai-promise-db.d.ts.map +1 -1
- package/dist/ai-promise-db.js +185 -164
- package/dist/ai-promise-db.js.map +1 -1
- package/dist/authorization.d.ts.map +1 -1
- package/dist/authorization.js +38 -30
- package/dist/authorization.js.map +1 -1
- package/dist/cascade-orchestrator.d.ts +404 -0
- package/dist/cascade-orchestrator.d.ts.map +1 -0
- package/dist/cascade-orchestrator.js +828 -0
- package/dist/cascade-orchestrator.js.map +1 -0
- package/dist/cascade-write-strategy.d.ts +584 -0
- package/dist/cascade-write-strategy.d.ts.map +1 -0
- package/dist/cascade-write-strategy.js +590 -0
- package/dist/cascade-write-strategy.js.map +1 -0
- package/dist/ch-adapter.d.ts +358 -0
- package/dist/ch-adapter.d.ts.map +1 -0
- package/dist/ch-adapter.js +929 -0
- package/dist/ch-adapter.js.map +1 -0
- package/dist/client/index.d.ts +42 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +43 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client.d.ts +266 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +81 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +64 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +52 -2
- package/dist/constants.js.map +1 -1
- package/dist/dataloader.d.ts +99 -0
- package/dist/dataloader.d.ts.map +1 -0
- package/dist/dataloader.js +225 -0
- package/dist/dataloader.js.map +1 -0
- package/dist/db-provider-port.d.ts +501 -0
- package/dist/db-provider-port.d.ts.map +1 -0
- package/dist/db-provider-port.js +113 -0
- package/dist/db-provider-port.js.map +1 -0
- package/dist/digital-objects-provider.d.ts +49 -0
- package/dist/digital-objects-provider.d.ts.map +1 -0
- package/dist/digital-objects-provider.js +55 -0
- package/dist/digital-objects-provider.js.map +1 -0
- package/dist/do-sqlite-adapter.d.ts +402 -0
- package/dist/do-sqlite-adapter.d.ts.map +1 -0
- package/dist/do-sqlite-adapter.js +745 -0
- package/dist/do-sqlite-adapter.js.map +1 -0
- package/dist/docs-rels/custom-types.d.ts +134 -0
- package/dist/docs-rels/custom-types.d.ts.map +1 -0
- package/dist/docs-rels/custom-types.js +70 -0
- package/dist/docs-rels/custom-types.js.map +1 -0
- package/dist/docs-rels/index.d.ts +16 -0
- package/dist/docs-rels/index.d.ts.map +1 -0
- package/dist/docs-rels/index.js +16 -0
- package/dist/docs-rels/index.js.map +1 -0
- package/dist/docs-rels/migrations/index.d.ts +30 -0
- package/dist/docs-rels/migrations/index.d.ts.map +1 -0
- package/dist/docs-rels/migrations/index.js +128 -0
- package/dist/docs-rels/migrations/index.js.map +1 -0
- package/dist/docs-rels/schema.d.ts +2961 -0
- package/dist/docs-rels/schema.d.ts.map +1 -0
- package/dist/docs-rels/schema.js +244 -0
- package/dist/docs-rels/schema.js.map +1 -0
- package/dist/durable-clickhouse.d.ts.map +1 -1
- package/dist/durable-clickhouse.js +16 -13
- package/dist/durable-clickhouse.js.map +1 -1
- package/dist/durable-promise.d.ts.map +1 -1
- package/dist/durable-promise.js +34 -15
- package/dist/durable-promise.js.map +1 -1
- package/dist/errors.d.ts +127 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +210 -0
- package/dist/errors.js.map +1 -0
- package/dist/eventbridge.d.ts +117 -0
- package/dist/eventbridge.d.ts.map +1 -0
- package/dist/eventbridge.js +238 -0
- package/dist/eventbridge.js.map +1 -0
- package/dist/events.d.ts +2 -2
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -1
- package/dist/events.js.map +1 -1
- package/dist/execution-queue.d.ts.map +1 -1
- package/dist/execution-queue.js +4 -5
- package/dist/execution-queue.js.map +1 -1
- package/dist/index.d.ts +37 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +112 -6
- package/dist/index.js.map +1 -1
- package/dist/linguistic.d.ts +3 -108
- package/dist/linguistic.d.ts.map +1 -1
- package/dist/linguistic.js +3 -372
- package/dist/linguistic.js.map +1 -1
- package/dist/logger.d.ts +132 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +137 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory-provider.d.ts +129 -0
- package/dist/memory-provider.d.ts.map +1 -1
- package/dist/memory-provider.js +592 -257
- package/dist/memory-provider.js.map +1 -1
- package/dist/pg-adapter.d.ts +424 -0
- package/dist/pg-adapter.d.ts.map +1 -0
- package/dist/pg-adapter.js +921 -0
- package/dist/pg-adapter.js.map +1 -0
- package/dist/pipelines-iceberg-emitter.d.ts +327 -0
- package/dist/pipelines-iceberg-emitter.d.ts.map +1 -0
- package/dist/pipelines-iceberg-emitter.js +351 -0
- package/dist/pipelines-iceberg-emitter.js.map +1 -0
- package/dist/provider-capabilities.d.ts +146 -0
- package/dist/provider-capabilities.d.ts.map +1 -0
- package/dist/provider-capabilities.js +214 -0
- package/dist/provider-capabilities.js.map +1 -0
- package/dist/rdb-provider-adapter.d.ts +195 -0
- package/dist/rdb-provider-adapter.d.ts.map +1 -0
- package/dist/rdb-provider-adapter.js +291 -0
- package/dist/rdb-provider-adapter.js.map +1 -0
- package/dist/schema/cascade.d.ts +49 -10
- package/dist/schema/cascade.d.ts.map +1 -1
- package/dist/schema/cascade.js +491 -273
- package/dist/schema/cascade.js.map +1 -1
- package/dist/schema/definition-caches.d.ts +24 -0
- package/dist/schema/definition-caches.d.ts.map +1 -0
- package/dist/schema/definition-caches.js +26 -0
- package/dist/schema/definition-caches.js.map +1 -0
- package/dist/schema/dependency-graph.d.ts +45 -0
- package/dist/schema/dependency-graph.d.ts.map +1 -0
- package/dist/schema/dependency-graph.js +47 -0
- package/dist/schema/dependency-graph.js.map +1 -0
- package/dist/schema/diff.d.ts +103 -0
- package/dist/schema/diff.d.ts.map +1 -0
- package/dist/schema/diff.js +329 -0
- package/dist/schema/diff.js.map +1 -0
- package/dist/schema/entity-operations.d.ts +99 -0
- package/dist/schema/entity-operations.d.ts.map +1 -0
- package/dist/schema/entity-operations.js +818 -0
- package/dist/schema/entity-operations.js.map +1 -0
- package/dist/schema/generation-context.d.ts +202 -0
- package/dist/schema/generation-context.d.ts.map +1 -0
- package/dist/schema/generation-context.js +393 -0
- package/dist/schema/generation-context.js.map +1 -0
- package/dist/schema/index.d.ts +32 -34
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +462 -519
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/migration.d.ts +205 -0
- package/dist/schema/migration.d.ts.map +1 -0
- package/dist/schema/migration.js +327 -0
- package/dist/schema/migration.js.map +1 -0
- package/dist/schema/nl-query-generator.d.ts +68 -0
- package/dist/schema/nl-query-generator.d.ts.map +1 -0
- package/dist/schema/nl-query-generator.js +362 -0
- package/dist/schema/nl-query-generator.js.map +1 -0
- package/dist/schema/nl-query.d.ts +65 -0
- package/dist/schema/nl-query.d.ts.map +1 -0
- package/dist/schema/nl-query.js +178 -0
- package/dist/schema/nl-query.js.map +1 -0
- package/dist/schema/parse.d.ts.map +1 -1
- package/dist/schema/parse.js +152 -89
- package/dist/schema/parse.js.map +1 -1
- package/dist/schema/provider.d.ts +38 -0
- package/dist/schema/provider.d.ts.map +1 -1
- package/dist/schema/provider.js +15 -7
- package/dist/schema/provider.js.map +1 -1
- package/dist/schema/resolve.d.ts +46 -5
- package/dist/schema/resolve.d.ts.map +1 -1
- package/dist/schema/resolve.js +334 -117
- package/dist/schema/resolve.js.map +1 -1
- package/dist/schema/search-utils.d.ts +76 -0
- package/dist/schema/search-utils.d.ts.map +1 -0
- package/dist/schema/search-utils.js +86 -0
- package/dist/schema/search-utils.js.map +1 -0
- package/dist/schema/seed.d.ts +53 -0
- package/dist/schema/seed.d.ts.map +1 -0
- package/dist/schema/seed.js +94 -0
- package/dist/schema/seed.js.map +1 -0
- package/dist/schema/semantic.d.ts +11 -0
- package/dist/schema/semantic.d.ts.map +1 -1
- package/dist/schema/semantic.js +262 -68
- package/dist/schema/semantic.js.map +1 -1
- package/dist/schema/sub-apis.d.ts +52 -0
- package/dist/schema/sub-apis.d.ts.map +1 -0
- package/dist/schema/sub-apis.js +216 -0
- package/dist/schema/sub-apis.js.map +1 -0
- package/dist/schema/system-entities.d.ts +42 -0
- package/dist/schema/system-entities.d.ts.map +1 -0
- package/dist/schema/system-entities.js +101 -0
- package/dist/schema/system-entities.js.map +1 -0
- package/dist/schema/types.d.ts +91 -9
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/union-fallback.d.ts +219 -0
- package/dist/schema/union-fallback.d.ts.map +1 -0
- package/dist/schema/union-fallback.js +331 -0
- package/dist/schema/union-fallback.js.map +1 -0
- package/dist/schema/value-generators/ai.d.ts +54 -0
- package/dist/schema/value-generators/ai.d.ts.map +1 -0
- package/dist/schema/value-generators/ai.js +136 -0
- package/dist/schema/value-generators/ai.js.map +1 -0
- package/dist/schema/value-generators/index.d.ts +126 -0
- package/dist/schema/value-generators/index.d.ts.map +1 -0
- package/dist/schema/value-generators/index.js +219 -0
- package/dist/schema/value-generators/index.js.map +1 -0
- package/dist/schema/value-generators/placeholder.d.ts +52 -0
- package/dist/schema/value-generators/placeholder.d.ts.map +1 -0
- package/dist/schema/value-generators/placeholder.js +328 -0
- package/dist/schema/value-generators/placeholder.js.map +1 -0
- package/dist/schema/value-generators/types.d.ts +116 -0
- package/dist/schema/value-generators/types.d.ts.map +1 -0
- package/dist/schema/value-generators/types.js +11 -0
- package/dist/schema/value-generators/types.js.map +1 -0
- package/dist/schema/verb-derivation.d.ts +167 -0
- package/dist/schema/verb-derivation.d.ts.map +1 -0
- package/dist/schema/verb-derivation.js +281 -0
- package/dist/schema/verb-derivation.js.map +1 -0
- package/dist/schema/version.d.ts +111 -0
- package/dist/schema/version.d.ts.map +1 -0
- package/dist/schema/version.js +190 -0
- package/dist/schema/version.js.map +1 -0
- package/dist/schema.d.ts +1095 -23
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2854 -38
- package/dist/schema.js.map +1 -1
- package/dist/semantic-vectors.d.ts +39 -0
- package/dist/semantic-vectors.d.ts.map +1 -0
- package/dist/semantic-vectors.js +334 -0
- package/dist/semantic-vectors.js.map +1 -0
- package/dist/semantic.d.ts +29 -1
- package/dist/semantic.d.ts.map +1 -1
- package/dist/semantic.js +26 -16
- package/dist/semantic.js.map +1 -1
- package/dist/telemetry.d.ts +128 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +305 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tests.d.ts.map +1 -1
- package/dist/tests.js +30 -22
- package/dist/tests.js.map +1 -1
- package/dist/type-guards.d.ts +212 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +318 -0
- package/dist/type-guards.js.map +1 -0
- package/dist/types.d.ts +33 -245
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +62 -72
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts +165 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +639 -0
- package/dist/validation.js.map +1 -0
- package/dist/worker/db-provider.d.ts +168 -0
- package/dist/worker/db-provider.d.ts.map +1 -0
- package/dist/worker/db-provider.js +277 -0
- package/dist/worker/db-provider.js.map +1 -0
- package/dist/worker/index.d.ts +35 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +37 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker.d.ts +779 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +2786 -0
- package/dist/worker.js.map +1 -0
- package/package.json +38 -8
- package/src/docs-rels/migrations/0001-init.sql +125 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade-orchestrator.js","sourceRoot":"","sources":["../src/cascade-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade Write Strategy — sharded parallel writes for cascade generation
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 entry point of the cascade epic per
|
|
5
|
+
* [ADR-0003](../../../docs/adr/0003-storage-strategy-pg-clickhouse-default.md)
|
|
6
|
+
* and the
|
|
7
|
+
* [implementation plan](../../../docs/plans/2026-05-05-cascade-storage-execution-implementation.md).
|
|
8
|
+
*
|
|
9
|
+
* This module is **strategy + scaffolding** — the *primitive* the cascade
|
|
10
|
+
* orchestrator (`aip-8yal`) calls. It does not run the orchestration loop
|
|
11
|
+
* itself, does not call LLMs, and does not implement the dual-write to
|
|
12
|
+
* Pipelines/Iceberg fan-out (that's `aip-0ypt`). It does:
|
|
13
|
+
*
|
|
14
|
+
* 1. **Shard-key derivation** — given a cascade context, pick the
|
|
15
|
+
* {@link ShardRef} the next batch should land in. Built-in strategies
|
|
16
|
+
* cover the three sharding models declared on `DBProvider`:
|
|
17
|
+
* `per-cascade` (DO SQLite default), `partitioned-by-tenant` (PG
|
|
18
|
+
* schema-per-tenant or `tenant_id` partition key), `unsharded`.
|
|
19
|
+
*
|
|
20
|
+
* 2. **Bulk-write API** — {@link writeBatch} routes a batch of Things +
|
|
21
|
+
* Actions through the adapter's cascade fast path. For PG, that's the
|
|
22
|
+
* **CTE jsonb-bulk shape** proven by the substrate-write-probes
|
|
23
|
+
* (91 ms p50 for 500 things + 499 actions on Neon HTTP — see
|
|
24
|
+
* `docs/reviews/2026-05-05-cascade-poc-evaluation.md`). For DO SQLite,
|
|
25
|
+
* the routing layer pins the shard and forwards the batch into the
|
|
26
|
+
* per-cascade DO. For ClickHouse, JSONEachRow is the path.
|
|
27
|
+
*
|
|
28
|
+
* 3. **Read-back-during-traversal API** — {@link readShardLocal} performs a
|
|
29
|
+
* point read against the same shard the batch was written to. Cascade
|
|
30
|
+
* generation reads back just-written entities to inform the next
|
|
31
|
+
* generation step; cross-shard reads on the hot path are explicitly
|
|
32
|
+
* not supported.
|
|
33
|
+
*
|
|
34
|
+
* 4. **Pipelines fan-out hook** — a {@link AnalyticalEmitter} callback the
|
|
35
|
+
* caller may pass to {@link writeBatch}. The cascade-write-strategy
|
|
36
|
+
* invokes it post-commit so Stack B's dual-write
|
|
37
|
+
* (DO SQLite local → Pipelines → Iceberg → ClickHouse) can be wired
|
|
38
|
+
* later by `aip-0ypt` without changing this surface.
|
|
39
|
+
*
|
|
40
|
+
* ## Why a separate module
|
|
41
|
+
*
|
|
42
|
+
* The cascade orchestrator is long, has its own retry/validation/policy
|
|
43
|
+
* concerns, and needs swappable storage. Pulling the write-strategy
|
|
44
|
+
* primitive out keeps the orchestration module focused, lets us unit-test
|
|
45
|
+
* shard-key derivation independently of LLM calls, and keeps the
|
|
46
|
+
* provenance of the write shape (the substrate-write-probes verdict)
|
|
47
|
+
* documented in one place rather than scattered through orchestrator code.
|
|
48
|
+
*
|
|
49
|
+
* @see {@link ../docs/adr/0003-storage-strategy-pg-clickhouse-default.md}
|
|
50
|
+
* @see {@link ../docs/reviews/2026-05-05-cascade-poc-evaluation.md}
|
|
51
|
+
* @packageDocumentation
|
|
52
|
+
*/
|
|
53
|
+
import type { DBProvider } from './schema/provider.js';
|
|
54
|
+
import type { DBProviderPort, ShardingModel, SVOAction } from './db-provider-port.js';
|
|
55
|
+
/**
|
|
56
|
+
* Stable handle the cascade orchestrator carries between
|
|
57
|
+
* {@link CascadeWriteStrategy.pickShard} and subsequent calls to
|
|
58
|
+
* {@link CascadeWriteStrategy.writeBatch} / {@link CascadeWriteStrategy.readShardLocal}.
|
|
59
|
+
*
|
|
60
|
+
* `key` is the routing key the strategy emitted (e.g. `'cascade:abc'`,
|
|
61
|
+
* `'tenant:acme'`, `'__shared__'`); adapters consume it through
|
|
62
|
+
* `context.cascadeId` / `context.tenantId` / a custom hook. `model` is the
|
|
63
|
+
* sharding model that produced the key — useful for diagnostics and for
|
|
64
|
+
* orchestrators that route differently when shards are per-cascade vs.
|
|
65
|
+
* per-tenant.
|
|
66
|
+
*
|
|
67
|
+
* The opaque `context` field carries the full cascade context that
|
|
68
|
+
* produced this `ShardRef`; the DO SQLite shard-routing helper consumes
|
|
69
|
+
* it via {@link DOSqliteAdapter.withContext} so per-op operations land in
|
|
70
|
+
* the correct DO.
|
|
71
|
+
*/
|
|
72
|
+
export interface ShardRef {
|
|
73
|
+
/** Routing key emitted by the active sharding strategy. */
|
|
74
|
+
key: string;
|
|
75
|
+
/** Sharding model declared on the underlying DBProvider adapter. */
|
|
76
|
+
model: ShardingModel;
|
|
77
|
+
/** Cascade context that produced the key (for read-back routing). */
|
|
78
|
+
context: CascadeShardContext;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Per-batch context the cascade orchestrator passes into
|
|
82
|
+
* {@link CascadeWriteStrategy.pickShard}.
|
|
83
|
+
*
|
|
84
|
+
* Required fields are deliberately small. The full shape is open via
|
|
85
|
+
* `[key: string]: unknown` so callers can carry deployment-specific
|
|
86
|
+
* routing hints (e.g. region pin, A/B bucket) without changing this
|
|
87
|
+
* port.
|
|
88
|
+
*
|
|
89
|
+
* `rootEntity` is the cascade's root (e.g. `FoundingHypothesis-abc123`);
|
|
90
|
+
* the strategy may inspect its `$type` for type-aware sharding. It is
|
|
91
|
+
* NOT used as the routing key directly — that's `cascadeId`.
|
|
92
|
+
*/
|
|
93
|
+
export interface CascadeShardContext {
|
|
94
|
+
/**
|
|
95
|
+
* The cascade root entity reference. The strategy may derive type-aware
|
|
96
|
+
* routing from this (e.g. type-per-shard) but the canonical
|
|
97
|
+
* `'per-cascade'` strategy uses {@link CascadeShardContext.cascadeId}.
|
|
98
|
+
*/
|
|
99
|
+
rootEntity?: {
|
|
100
|
+
$id: string;
|
|
101
|
+
$type: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Stable cascade id. Required for `'per-cascade'` strategy. The
|
|
105
|
+
* orchestrator typically derives this from a content hash of the
|
|
106
|
+
* root entity + cascade definition so re-runs route to the same shard.
|
|
107
|
+
*/
|
|
108
|
+
cascadeId?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Tenant id. Required for `'partitioned-by-tenant'` strategy.
|
|
111
|
+
*/
|
|
112
|
+
tenantId?: string;
|
|
113
|
+
/**
|
|
114
|
+
* Free-form context the caller may consult inside a custom strategy.
|
|
115
|
+
*/
|
|
116
|
+
[key: string]: unknown;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* A sharding strategy maps a {@link CascadeShardContext} to a
|
|
120
|
+
* {@link ShardRef}.
|
|
121
|
+
*
|
|
122
|
+
* Strategies MUST be deterministic — the same context MUST produce the
|
|
123
|
+
* same key — so the cascade orchestrator's read-back during traversal
|
|
124
|
+
* lands on the shard that received the write.
|
|
125
|
+
*
|
|
126
|
+
* Built-in strategies are exported as constants on
|
|
127
|
+
* {@link CascadeShardingStrategies}; callers can also pass any
|
|
128
|
+
* `(ctx) => ShardRef` callback.
|
|
129
|
+
*/
|
|
130
|
+
export type CascadeShardingStrategy = (ctx: CascadeShardContext) => ShardRef;
|
|
131
|
+
/**
|
|
132
|
+
* Built-in cascade sharding strategies.
|
|
133
|
+
*
|
|
134
|
+
* Each maps the abstract {@link ShardingModel} declared on a `DBProvider`
|
|
135
|
+
* to a concrete routing-key derivation. Adapters consult their adapter's
|
|
136
|
+
* declared sharding model via {@link getProviderCapabilities} when
|
|
137
|
+
* picking a default; callers can override.
|
|
138
|
+
*
|
|
139
|
+
* - {@link perCascade} — one shard per cascade. Default for
|
|
140
|
+
* `do-sqlite` adapter (per ADR-0003 enabling pattern). Throws if
|
|
141
|
+
* {@link CascadeShardContext.cascadeId} is missing.
|
|
142
|
+
* - {@link partitionedByTenant} — one shard per tenant. Default for
|
|
143
|
+
* `pg+pgvector` adapter. Throws if {@link CascadeShardContext.tenantId}
|
|
144
|
+
* is missing.
|
|
145
|
+
* - {@link unsharded} — single global shard. Default for `memory` and any
|
|
146
|
+
* adapter that does not declare a sharding model. Always returns the
|
|
147
|
+
* constant key `'__shared__'`.
|
|
148
|
+
*/
|
|
149
|
+
export declare const CascadeShardingStrategies: {
|
|
150
|
+
/**
|
|
151
|
+
* One shard per cascade. Stack B's enabling pattern: every active
|
|
152
|
+
* cascade gets its own DO (or its own PG partition / temp schema)
|
|
153
|
+
* giving full single-shard write throughput in parallel.
|
|
154
|
+
*
|
|
155
|
+
* @param defaultCascadeId - Fallback when the per-op context omits
|
|
156
|
+
* `cascadeId`. Useful when the orchestrator has a stable cascade
|
|
157
|
+
* scope but individual write batches don't restate it.
|
|
158
|
+
*/
|
|
159
|
+
readonly perCascade: (defaultCascadeId?: string) => CascadeShardingStrategy;
|
|
160
|
+
/**
|
|
161
|
+
* One shard per tenant. The natural shape for multi-tenant Postgres
|
|
162
|
+
* (schema-per-tenant or `tenant_id` partition key). Many cascades
|
|
163
|
+
* within the same tenant share a partition; tenants are isolated.
|
|
164
|
+
*
|
|
165
|
+
* @param defaultTenantId - Fallback when the per-op context omits
|
|
166
|
+
* `tenantId`.
|
|
167
|
+
*/
|
|
168
|
+
readonly partitionedByTenant: (defaultTenantId?: string) => CascadeShardingStrategy;
|
|
169
|
+
/**
|
|
170
|
+
* Single global shard. Default for in-memory / dev / single small PG
|
|
171
|
+
* deployments. Cascade throughput hits the underlying adapter's
|
|
172
|
+
* single-writer ceiling.
|
|
173
|
+
*/
|
|
174
|
+
readonly unsharded: () => CascadeShardingStrategy;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* A Thing to write in a cascade batch.
|
|
178
|
+
*
|
|
179
|
+
* The cascade orchestrator pre-derives stable ids (content hashes
|
|
180
|
+
* including the parent's full idempotency key per the lineage-key
|
|
181
|
+
* discipline from `cf-substrate/tierA-cascade`) before commit so
|
|
182
|
+
* grandchildren backrefs point at the right parent. This module
|
|
183
|
+
* trusts the caller's id discipline and writes verbatim.
|
|
184
|
+
*/
|
|
185
|
+
export interface CascadeThing {
|
|
186
|
+
/** Stable, content-hashed id derived upstream by the orchestrator. */
|
|
187
|
+
id: string;
|
|
188
|
+
/** Thing `$type` (e.g. `'Customer'`, `'Order'`, `'NameCandidate'`). */
|
|
189
|
+
type: string;
|
|
190
|
+
/** Thing payload. The adapter writes this as a jsonb / String column. */
|
|
191
|
+
data: Record<string, unknown>;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* An Action to write in a cascade batch.
|
|
195
|
+
*
|
|
196
|
+
* Wire-compatible with {@link SVOAction} minus `id` (caller-supplied or
|
|
197
|
+
* adapter-generated) and lifecycle timestamps (adapters set these at
|
|
198
|
+
* commit time). Actions carry **subject** + **object** + **Frame
|
|
199
|
+
* roles** — the post-SVO recording shape; adapters route them to the
|
|
200
|
+
* per-row columns / role jsonb map per their schema.
|
|
201
|
+
*
|
|
202
|
+
* `relateTuple` is the legacy `(fromType, fromId, relation, toType, toId)`
|
|
203
|
+
* shape some callers may carry; for backward compatibility the cascade
|
|
204
|
+
* orchestrator can populate it and the strategy converts to an Action
|
|
205
|
+
* before write. Pure SVO callers omit it.
|
|
206
|
+
*/
|
|
207
|
+
export interface CascadeAction {
|
|
208
|
+
/** Optional caller-supplied id. Adapter generates if omitted. */
|
|
209
|
+
id?: string;
|
|
210
|
+
/** Verb name. References a Verb in the adapter's registry. */
|
|
211
|
+
verb: string;
|
|
212
|
+
/** Subject Thing id (actor / who-acts). */
|
|
213
|
+
subject?: string;
|
|
214
|
+
/** Object Thing id (what-is-acted-on). */
|
|
215
|
+
object?: string;
|
|
216
|
+
/** Frame role assignments beyond subject/object (recipient/source/...). */
|
|
217
|
+
roles?: Record<string, string>;
|
|
218
|
+
/** Verb-specific payload. */
|
|
219
|
+
data?: Record<string, unknown>;
|
|
220
|
+
/**
|
|
221
|
+
* Action lifecycle status. Defaults to `'completed'` for cascade
|
|
222
|
+
* relations (the relation is observed-as-true at write time). The
|
|
223
|
+
* orchestrator may pass `'pending'` for Actions that record an
|
|
224
|
+
* in-flight LLM step and transition to `'completed'`/`'failed'`
|
|
225
|
+
* after the call returns.
|
|
226
|
+
*/
|
|
227
|
+
status?: SVOAction['status'];
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* The unit of work the cascade orchestrator hands the strategy.
|
|
231
|
+
*
|
|
232
|
+
* Both arrays may be empty independently — a batch may be Things-only
|
|
233
|
+
* (entity creation) or Actions-only (relation recording).
|
|
234
|
+
*/
|
|
235
|
+
export interface CascadeBatch {
|
|
236
|
+
things?: ReadonlyArray<CascadeThing>;
|
|
237
|
+
actions?: ReadonlyArray<CascadeAction>;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Result returned by {@link CascadeWriteStrategy.writeBatch}.
|
|
241
|
+
*
|
|
242
|
+
* `thingsInserted` / `actionsInserted` reflect the count actually inserted
|
|
243
|
+
* (excludes idempotent conflicts). Adapters whose drivers don't surface
|
|
244
|
+
* row counts (some ClickHouse paths) report the input batch size — see
|
|
245
|
+
* adapter-specific docs.
|
|
246
|
+
*/
|
|
247
|
+
export interface CascadeBatchResult {
|
|
248
|
+
thingsInserted: number;
|
|
249
|
+
actionsInserted: number;
|
|
250
|
+
shard: ShardRef;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Optional `commitBatch` shape adapters expose to opt into the cascade
|
|
254
|
+
* fast path. PG and CH adapters in this package implement this; in-memory
|
|
255
|
+
* and DO SQLite do not (they fall back to per-op writes).
|
|
256
|
+
*
|
|
257
|
+
* When present, the strategy routes the entire batch through
|
|
258
|
+
* `commitBatch` — for PG that's the CTE jsonb-bulk shape, for CH it's
|
|
259
|
+
* the JSONEachRow path.
|
|
260
|
+
*/
|
|
261
|
+
export interface BulkCommitCapable {
|
|
262
|
+
commitBatch(input: {
|
|
263
|
+
things?: ReadonlyArray<{
|
|
264
|
+
id: string;
|
|
265
|
+
type: string;
|
|
266
|
+
data: Record<string, unknown>;
|
|
267
|
+
}>;
|
|
268
|
+
actions?: ReadonlyArray<{
|
|
269
|
+
id?: string;
|
|
270
|
+
verb: string;
|
|
271
|
+
subject?: string | undefined;
|
|
272
|
+
object?: string | undefined;
|
|
273
|
+
roles?: Record<string, string> | undefined;
|
|
274
|
+
data?: Record<string, unknown> | undefined;
|
|
275
|
+
status?: SVOAction['status'] | undefined;
|
|
276
|
+
}>;
|
|
277
|
+
}): Promise<{
|
|
278
|
+
thingsInserted: number;
|
|
279
|
+
actionsInserted: number;
|
|
280
|
+
}>;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Optional context-binding shape adapters expose to receive shard
|
|
284
|
+
* routing for every subsequent operation. The DO SQLite adapter
|
|
285
|
+
* implements `withCascade`/`withTenant`/`withContext`; PG and CH
|
|
286
|
+
* adapters return `this` (no per-shard binding needed — their `ns`
|
|
287
|
+
* column carries the partition key already).
|
|
288
|
+
*/
|
|
289
|
+
export interface ShardContextBindable<T> {
|
|
290
|
+
withContext(context: Record<string, unknown>): T;
|
|
291
|
+
withCascade?(cascadeId: string): T;
|
|
292
|
+
withTenant?(tenantId: string): T;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Hook the cascade-write-strategy invokes after a successful commit so
|
|
296
|
+
* Stack B's dual-write (DO SQLite local → Pipelines → Iceberg → CH) can
|
|
297
|
+
* fan-out the same batch to the analytical store.
|
|
298
|
+
*
|
|
299
|
+
* Implementation lives in `aip-0ypt`; this strategy only surfaces the
|
|
300
|
+
* extension point. Failures inside the emitter are logged and swallowed
|
|
301
|
+
* — the analytical fan-out is not load-bearing for cascade correctness.
|
|
302
|
+
*/
|
|
303
|
+
export type AnalyticalEmitter = (input: {
|
|
304
|
+
shard: ShardRef;
|
|
305
|
+
batch: CascadeBatch;
|
|
306
|
+
result: {
|
|
307
|
+
thingsInserted: number;
|
|
308
|
+
actionsInserted: number;
|
|
309
|
+
};
|
|
310
|
+
}) => Promise<void> | void;
|
|
311
|
+
/**
|
|
312
|
+
* Constructor options for {@link CascadeWriteStrategy}.
|
|
313
|
+
*/
|
|
314
|
+
export interface CascadeWriteStrategyOptions {
|
|
315
|
+
/**
|
|
316
|
+
* The DBProvider adapter to write through. Must be
|
|
317
|
+
* {@link BulkCommitCapable} for the cascade fast path; if not, the
|
|
318
|
+
* strategy falls back to per-op writes (`create()` + `relate()`).
|
|
319
|
+
*/
|
|
320
|
+
adapter: DBProvider | DBProviderPort;
|
|
321
|
+
/**
|
|
322
|
+
* Sharding strategy. One of:
|
|
323
|
+
* - A built-in strategy from {@link CascadeShardingStrategies}.
|
|
324
|
+
* - A custom `(ctx) => ShardRef` callback.
|
|
325
|
+
* - A shorthand string mapped to a built-in:
|
|
326
|
+
* - `'per-cascade'` → `CascadeShardingStrategies.perCascade()`
|
|
327
|
+
* - `'partitioned-by-tenant'` → `CascadeShardingStrategies.partitionedByTenant()`
|
|
328
|
+
* - `'unsharded'` → `CascadeShardingStrategies.unsharded()`
|
|
329
|
+
*
|
|
330
|
+
* Default: derived from the adapter's declared
|
|
331
|
+
* {@link ProviderTierCapabilities.shardingModel} via
|
|
332
|
+
* {@link getProviderCapabilities}. Adapters that don't declare default
|
|
333
|
+
* to `'unsharded'`.
|
|
334
|
+
*/
|
|
335
|
+
sharding?: CascadeShardingStrategy | 'per-cascade' | 'partitioned-by-tenant' | 'unsharded';
|
|
336
|
+
/**
|
|
337
|
+
* Default cascade id used when {@link CascadeShardingStrategies.perCascade}
|
|
338
|
+
* is the active strategy and the per-op context omits it.
|
|
339
|
+
*/
|
|
340
|
+
defaultCascadeId?: string;
|
|
341
|
+
/**
|
|
342
|
+
* Default tenant id used when
|
|
343
|
+
* {@link CascadeShardingStrategies.partitionedByTenant} is the active
|
|
344
|
+
* strategy and the per-op context omits it.
|
|
345
|
+
*/
|
|
346
|
+
defaultTenantId?: string;
|
|
347
|
+
/**
|
|
348
|
+
* Maximum number of Things + Actions per round-trip to the adapter.
|
|
349
|
+
* Per the substrate-write-probes verdict the CTE jsonb-bulk shape
|
|
350
|
+
* achieves sublinear scaling above N=100 and 91 ms p50 at N=500. We
|
|
351
|
+
* default to **1000** — well within the sweet spot for both PG and
|
|
352
|
+
* DO SQLite per-op limits — and chunk larger batches into rounds.
|
|
353
|
+
*
|
|
354
|
+
* @default 1000
|
|
355
|
+
*/
|
|
356
|
+
maxBatchSize?: number;
|
|
357
|
+
/**
|
|
358
|
+
* Optional analytical fan-out hook (see {@link AnalyticalEmitter}).
|
|
359
|
+
* Implementation deferred to `aip-0ypt`; surfaced here as a
|
|
360
|
+
* non-blocking extension point.
|
|
361
|
+
*/
|
|
362
|
+
analyticalEmitter?: AnalyticalEmitter;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* The cascade write strategy primitive.
|
|
366
|
+
*
|
|
367
|
+
* Composes a `DBProvider` adapter with a sharding strategy and exposes
|
|
368
|
+
* the bulk-write + read-back surface the cascade orchestrator
|
|
369
|
+
* (`aip-8yal`) calls per traversal step. This module owns:
|
|
370
|
+
*
|
|
371
|
+
* - Routing-key derivation ({@link pickShard})
|
|
372
|
+
* - Bulk write via the adapter's cascade fast path ({@link writeBatch})
|
|
373
|
+
* - Local read-back from the same shard ({@link readShardLocal})
|
|
374
|
+
* - Analytical fan-out hook (post-commit; opt-in)
|
|
375
|
+
*
|
|
376
|
+
* It does NOT own:
|
|
377
|
+
*
|
|
378
|
+
* - LLM-driven generation (the orchestrator calls it before issuing batches)
|
|
379
|
+
* - Validation / policy / retry (the orchestrator wraps the strategy)
|
|
380
|
+
* - Pipelines→Iceberg dual-write semantics (`aip-0ypt`)
|
|
381
|
+
* - Cross-shard joins (out of scope per ADR-0003 hot-path constraint)
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* ```ts
|
|
385
|
+
* import {
|
|
386
|
+
* CascadeWriteStrategy,
|
|
387
|
+
* createPostgresProvider,
|
|
388
|
+
* } from 'ai-database'
|
|
389
|
+
*
|
|
390
|
+
* const adapter = createPostgresProvider({ executor, namespace: 'tenant-9' })
|
|
391
|
+
* const strategy = new CascadeWriteStrategy({
|
|
392
|
+
* adapter,
|
|
393
|
+
* sharding: 'partitioned-by-tenant',
|
|
394
|
+
* defaultTenantId: 'tenant-9',
|
|
395
|
+
* })
|
|
396
|
+
*
|
|
397
|
+
* const shard = strategy.pickShard({
|
|
398
|
+
* rootEntity: { $id: 'fh-1', $type: 'FoundingHypothesis' },
|
|
399
|
+
* tenantId: 'tenant-9',
|
|
400
|
+
* })
|
|
401
|
+
*
|
|
402
|
+
* await strategy.writeBatch(shard, {
|
|
403
|
+
* things: [{ id: 'cust-1', type: 'Customer', data: { name: 'Acme' } }],
|
|
404
|
+
* actions: [{ verb: 'placedBy', subject: 'order-1', object: 'cust-1', status: 'completed' }],
|
|
405
|
+
* })
|
|
406
|
+
* ```
|
|
407
|
+
*/
|
|
408
|
+
export declare class CascadeWriteStrategy {
|
|
409
|
+
private readonly adapter;
|
|
410
|
+
private readonly strategy;
|
|
411
|
+
readonly maxBatchSize: number;
|
|
412
|
+
private readonly emitter;
|
|
413
|
+
constructor(options: CascadeWriteStrategyOptions);
|
|
414
|
+
/**
|
|
415
|
+
* Derive the {@link ShardRef} the next batch should land in. Pure —
|
|
416
|
+
* never touches the adapter.
|
|
417
|
+
*
|
|
418
|
+
* Throws when the active strategy needs context the caller didn't
|
|
419
|
+
* supply (e.g. `'per-cascade'` with no `cascadeId`).
|
|
420
|
+
*/
|
|
421
|
+
pickShard(context: CascadeShardContext): ShardRef;
|
|
422
|
+
/**
|
|
423
|
+
* Bulk-commit a batch of Things + Actions to the shard.
|
|
424
|
+
*
|
|
425
|
+
* - When the adapter is {@link BulkCommitCapable}, the entire batch
|
|
426
|
+
* travels in a single fast-path call — for PG that's the CTE
|
|
427
|
+
* jsonb-bulk shape (91 ms p50 / 500 things on Neon HTTP), for CH
|
|
428
|
+
* the JSONEachRow path.
|
|
429
|
+
* - When the adapter is not bulk-capable (in-memory, DO SQLite via
|
|
430
|
+
* the current wire shape), the strategy falls back to per-op
|
|
431
|
+
* `create()` + `relate()` calls. This still flows through the
|
|
432
|
+
* shard-aware adapter so reads land on the same shard, but
|
|
433
|
+
* throughput is the per-op ceiling.
|
|
434
|
+
* - Batches larger than {@link maxBatchSize} are split into rounds.
|
|
435
|
+
* Rounds run sequentially within a single `writeBatch` call to
|
|
436
|
+
* preserve write-order guarantees the orchestrator may rely on
|
|
437
|
+
* (e.g. parents before children). Sibling parallelism is the
|
|
438
|
+
* orchestrator's concern, not this primitive's.
|
|
439
|
+
*
|
|
440
|
+
* Post-commit, if an {@link AnalyticalEmitter} was configured, it is
|
|
441
|
+
* invoked once per chunk so Stack B's analytical fan-out can mirror
|
|
442
|
+
* the same batch into Pipelines→Iceberg. Emitter failures are logged
|
|
443
|
+
* and swallowed — they MUST NOT fail the cascade write.
|
|
444
|
+
*/
|
|
445
|
+
writeBatch(shard: ShardRef, batch: CascadeBatch): Promise<CascadeBatchResult>;
|
|
446
|
+
/**
|
|
447
|
+
* Read a Thing back from the same shard the batch was written to.
|
|
448
|
+
*
|
|
449
|
+
* Cascade generation reads back just-written entities to inform the
|
|
450
|
+
* next traversal step (e.g. resolve a freshly-written `Customer`
|
|
451
|
+
* before generating its `Orders`). Cross-shard reads are explicitly
|
|
452
|
+
* not supported on the hot path per ADR-0003.
|
|
453
|
+
*
|
|
454
|
+
* Returns `null` if the entity is not in the shard. The caller may
|
|
455
|
+
* still attempt a cross-shard read via the unsharded adapter surface
|
|
456
|
+
* if needed for cold-path reconciliation.
|
|
457
|
+
*/
|
|
458
|
+
readShardLocal(shard: ShardRef, type: string, id: string): Promise<Record<string, unknown> | null>;
|
|
459
|
+
/**
|
|
460
|
+
* Read a list of just-written entities from the shard. Wraps
|
|
461
|
+
* `adapter.list(type)` after binding the shard context.
|
|
462
|
+
*
|
|
463
|
+
* Use when the cascade needs to enumerate all of a type the current
|
|
464
|
+
* cascade has produced (e.g. all `OrderItem` for the current
|
|
465
|
+
* `Order`). For point reads, prefer {@link readShardLocal}.
|
|
466
|
+
*/
|
|
467
|
+
listShardLocal(shard: ShardRef, type: string, options?: {
|
|
468
|
+
limit?: number;
|
|
469
|
+
offset?: number;
|
|
470
|
+
}): Promise<Record<string, unknown>[]>;
|
|
471
|
+
/**
|
|
472
|
+
* Bind the adapter to the shard so subsequent ops route correctly.
|
|
473
|
+
*
|
|
474
|
+
* For DO SQLite, {@link DOSqliteAdapter.withContext} is used to pin
|
|
475
|
+
* the cascade/tenant id. For PG/CH, the `ns` column on the adapter
|
|
476
|
+
* already carries the partition key, so this is a no-op (return
|
|
477
|
+
* `this`).
|
|
478
|
+
*/
|
|
479
|
+
private bindAdapterToShard;
|
|
480
|
+
/**
|
|
481
|
+
* Write a single chunk through the adapter's cascade fast path or
|
|
482
|
+
* the per-op fallback.
|
|
483
|
+
*/
|
|
484
|
+
private writeChunk;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Stand-alone helper that emits the PG cascade-write SQL the
|
|
488
|
+
* substrate-write-probes proved out: a single CTE round-trip with
|
|
489
|
+
* bulk `VALUES (...), (...)` inserts and `ON CONFLICT DO NOTHING`.
|
|
490
|
+
*
|
|
491
|
+
* **This is the shape the canonical PG adapter's
|
|
492
|
+
* {@link PostgresProvider.commitBatch} uses.** The helper is exported so
|
|
493
|
+
* cascade orchestrators that bypass the adapter (e.g. running raw SQL
|
|
494
|
+
* for benchmarking) can still use the proven shape without re-deriving
|
|
495
|
+
* it. The adapter's `commitBatch` remains the recommended path.
|
|
496
|
+
*
|
|
497
|
+
* Returns the SQL text + ordered positional params. Things take 4
|
|
498
|
+
* columns: `(ns, id, type, data)`. Actions take 10 columns:
|
|
499
|
+
* `(ns, id, verb, subject, object, roles, data, status, created_at, completed_at)`.
|
|
500
|
+
*
|
|
501
|
+
* Why: documenting the shape in a stand-alone helper anchors the write
|
|
502
|
+
* shape to the substrate-write-probes evidence (91 ms p50 for 500 docs +
|
|
503
|
+
* 499 rels on Neon HTTP, sublinear scaling above N=100). Future schema
|
|
504
|
+
* changes that invalidate the column list will land here visibly.
|
|
505
|
+
*
|
|
506
|
+
* @internal Use {@link PostgresProvider.commitBatch} for production code.
|
|
507
|
+
*/
|
|
508
|
+
export declare function buildPgCommitBatchSql(input: {
|
|
509
|
+
schema: string;
|
|
510
|
+
namespace: string;
|
|
511
|
+
things: ReadonlyArray<CascadeThing>;
|
|
512
|
+
actions: ReadonlyArray<CascadeAction>;
|
|
513
|
+
/** ISO-8601 string for `created_at` / `completed_at` columns. */
|
|
514
|
+
now: string;
|
|
515
|
+
}): {
|
|
516
|
+
sql: string;
|
|
517
|
+
params: unknown[];
|
|
518
|
+
} | null;
|
|
519
|
+
/**
|
|
520
|
+
* Resolve the DO id name for a given shard from a Cloudflare DO
|
|
521
|
+
* namespace binding.
|
|
522
|
+
*
|
|
523
|
+
* The actual shard pinning happens inside `DOSqliteAdapter` —
|
|
524
|
+
* {@link DOSqliteAdapter.withContext} consumes the `ShardRef.context`
|
|
525
|
+
* when subsequent ops are issued, and the adapter's internal
|
|
526
|
+
* `resolveStub` calls `namespace.idFromName(...).` This helper exposes
|
|
527
|
+
* the same routing logic for callers that need to **manually** route a
|
|
528
|
+
* batch into a per-cascade DO without going through the adapter (e.g.
|
|
529
|
+
* direct fetch into a DO that hasn't been wrapped yet).
|
|
530
|
+
*
|
|
531
|
+
* For canonical use, prefer the adapter — `withContext(shard.context)`
|
|
532
|
+
* encapsulates this.
|
|
533
|
+
*
|
|
534
|
+
* @example
|
|
535
|
+
* ```ts
|
|
536
|
+
* import { resolveDOIdName, CascadeShardingStrategies } from 'ai-database'
|
|
537
|
+
*
|
|
538
|
+
* const strategy = CascadeShardingStrategies.perCascade()
|
|
539
|
+
* const shard = strategy({ cascadeId: 'abc' })
|
|
540
|
+
* const idName = resolveDOIdName(shard) // 'cascade:abc'
|
|
541
|
+
* const id = env.DATABASE.idFromName(idName)
|
|
542
|
+
* const stub = env.DATABASE.get(id)
|
|
543
|
+
* await stub.fetch(...)
|
|
544
|
+
* ```
|
|
545
|
+
*/
|
|
546
|
+
export declare function resolveDOIdName(shard: ShardRef): string;
|
|
547
|
+
/**
|
|
548
|
+
* Split a batch into chunks no larger than `maxBatchSize` rows
|
|
549
|
+
* (Things + Actions counted together).
|
|
550
|
+
*
|
|
551
|
+
* The substrate-write-probes verdict shows sublinear scaling above N=100
|
|
552
|
+
* for the CTE shape — a single round-trip carrying 500 things + 499 rels
|
|
553
|
+
* lands in 91 ms p50. We default to 1000 rows/chunk in the strategy;
|
|
554
|
+
* callers can override via {@link CascadeWriteStrategyOptions.maxBatchSize}.
|
|
555
|
+
*
|
|
556
|
+
* Things and Actions are kept together within a chunk so a parent +
|
|
557
|
+
* child + their relation can fit in one round-trip when the orchestrator
|
|
558
|
+
* emits them as one batch. When the chunk boundary falls inside a
|
|
559
|
+
* Thing/Action group the orchestrator built, callers should size their
|
|
560
|
+
* batches (or the `maxBatchSize`) to avoid splitting groups.
|
|
561
|
+
*
|
|
562
|
+
* @internal exported for tests.
|
|
563
|
+
*/
|
|
564
|
+
export declare function chunkBatch(batch: CascadeBatch, maxBatchSize: number): CascadeBatch[];
|
|
565
|
+
/**
|
|
566
|
+
* Convenience factory.
|
|
567
|
+
*
|
|
568
|
+
* @example
|
|
569
|
+
* ```ts
|
|
570
|
+
* import {
|
|
571
|
+
* createCascadeWriteStrategy,
|
|
572
|
+
* createPostgresProvider,
|
|
573
|
+
* } from 'ai-database'
|
|
574
|
+
*
|
|
575
|
+
* const adapter = createPostgresProvider({ executor, namespace: 't9' })
|
|
576
|
+
* const strategy = createCascadeWriteStrategy({
|
|
577
|
+
* adapter,
|
|
578
|
+
* sharding: 'partitioned-by-tenant',
|
|
579
|
+
* defaultTenantId: 't9',
|
|
580
|
+
* })
|
|
581
|
+
* ```
|
|
582
|
+
*/
|
|
583
|
+
export declare function createCascadeWriteStrategy(options: CascadeWriteStrategyOptions): CascadeWriteStrategy;
|
|
584
|
+
//# sourceMappingURL=cascade-write-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade-write-strategy.d.ts","sourceRoot":"","sources":["../src/cascade-write-strategy.ts"],"names":[],"mappings":"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"}
|