@askdb/core 1.0.0-beta.44 → 1.0.0-beta.45

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.
Files changed (109) hide show
  1. package/README.md +6 -7
  2. package/dist/ask.d.ts +30 -38
  3. package/dist/ask.d.ts.map +1 -1
  4. package/dist/ask.js +126 -307
  5. package/dist/ask.js.map +1 -1
  6. package/dist/enrichment/index.d.ts +1 -1
  7. package/dist/enrichment/index.d.ts.map +1 -1
  8. package/dist/enrichment/prompt.d.ts +3 -3
  9. package/dist/enrichment/prompt.d.ts.map +1 -1
  10. package/dist/enrichment/prompt.js +41 -17
  11. package/dist/enrichment/prompt.js.map +1 -1
  12. package/dist/enrichment/suggest.d.ts +2 -2
  13. package/dist/enrichment/suggest.d.ts.map +1 -1
  14. package/dist/enrichment/suggest.js +3 -1
  15. package/dist/enrichment/suggest.js.map +1 -1
  16. package/dist/enrichment/types.d.ts +20 -1
  17. package/dist/enrichment/types.d.ts.map +1 -1
  18. package/dist/errors.d.ts +68 -1
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +21 -0
  21. package/dist/errors.js.map +1 -1
  22. package/dist/index.d.ts +5 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +4 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/retrieval/synthesize-ddl.d.ts +7 -1
  27. package/dist/retrieval/synthesize-ddl.d.ts.map +1 -1
  28. package/dist/retrieval/synthesize-ddl.js +36 -33
  29. package/dist/retrieval/synthesize-ddl.js.map +1 -1
  30. package/dist/schema/normalize.d.ts +6 -0
  31. package/dist/schema/normalize.d.ts.map +1 -1
  32. package/dist/schema/normalize.js +1 -0
  33. package/dist/schema/normalize.js.map +1 -1
  34. package/dist/schema/v2/format.d.ts +28 -1
  35. package/dist/schema/v2/format.d.ts.map +1 -1
  36. package/dist/schema/v2/format.js +53 -19
  37. package/dist/schema/v2/format.js.map +1 -1
  38. package/dist/schema/v2/index.d.ts +1 -1
  39. package/dist/schema/v2/index.d.ts.map +1 -1
  40. package/dist/schema/v2/index.js +1 -1
  41. package/dist/schema/v2/index.js.map +1 -1
  42. package/dist/schema/v2/loader.d.ts +7 -4
  43. package/dist/schema/v2/loader.d.ts.map +1 -1
  44. package/dist/schema/v2/loader.js +87 -27
  45. package/dist/schema/v2/loader.js.map +1 -1
  46. package/dist/schema/v2/mentions.d.ts +12 -0
  47. package/dist/schema/v2/mentions.d.ts.map +1 -1
  48. package/dist/schema/v2/mentions.js +65 -11
  49. package/dist/schema/v2/mentions.js.map +1 -1
  50. package/dist/schema/v2/tenant-policy.d.ts +2 -2
  51. package/dist/sql/bind.d.ts +18 -5
  52. package/dist/sql/bind.d.ts.map +1 -1
  53. package/dist/sql/bind.js +32 -14
  54. package/dist/sql/bind.js.map +1 -1
  55. package/dist/sql/dialect-spec.d.ts.map +1 -1
  56. package/dist/sql/dialect-spec.js +5 -1
  57. package/dist/sql/dialect-spec.js.map +1 -1
  58. package/dist/sql/generate.d.ts +17 -11
  59. package/dist/sql/generate.d.ts.map +1 -1
  60. package/dist/sql/generate.js +65 -33
  61. package/dist/sql/generate.js.map +1 -1
  62. package/dist/sql/guardrail-decide.d.ts +56 -0
  63. package/dist/sql/guardrail-decide.d.ts.map +1 -0
  64. package/dist/sql/guardrail-decide.js +161 -0
  65. package/dist/sql/guardrail-decide.js.map +1 -0
  66. package/dist/sql/guardrails.d.ts +52 -0
  67. package/dist/sql/guardrails.d.ts.map +1 -0
  68. package/dist/sql/guardrails.js +100 -0
  69. package/dist/sql/guardrails.js.map +1 -0
  70. package/dist/sql/index.d.ts +2 -1
  71. package/dist/sql/index.d.ts.map +1 -1
  72. package/dist/sql/index.js +2 -1
  73. package/dist/sql/index.js.map +1 -1
  74. package/dist/sql/lexer.d.ts +13 -0
  75. package/dist/sql/lexer.d.ts.map +1 -1
  76. package/dist/sql/lexer.js +42 -7
  77. package/dist/sql/lexer.js.map +1 -1
  78. package/dist/sql/prompt.d.ts.map +1 -1
  79. package/dist/sql/prompt.js +2 -1
  80. package/dist/sql/prompt.js.map +1 -1
  81. package/dist/sql/rebind.d.ts +89 -0
  82. package/dist/sql/rebind.d.ts.map +1 -0
  83. package/dist/sql/rebind.js +175 -0
  84. package/dist/sql/rebind.js.map +1 -0
  85. package/dist/sql/sensitive-guardrail.d.ts +7 -2
  86. package/dist/sql/sensitive-guardrail.d.ts.map +1 -1
  87. package/dist/sql/sensitive-guardrail.js +14 -33
  88. package/dist/sql/sensitive-guardrail.js.map +1 -1
  89. package/dist/sql/tenant-guardrail.d.ts +3 -14
  90. package/dist/sql/tenant-guardrail.d.ts.map +1 -1
  91. package/dist/sql/tenant-guardrail.js +16 -65
  92. package/dist/sql/tenant-guardrail.js.map +1 -1
  93. package/dist/sql/tenant-placeholders.d.ts +14 -3
  94. package/dist/sql/tenant-placeholders.d.ts.map +1 -1
  95. package/dist/sql/tenant-placeholders.js +43 -24
  96. package/dist/sql/tenant-placeholders.js.map +1 -1
  97. package/dist/sql/tenant-scope-expand.d.ts +46 -0
  98. package/dist/sql/tenant-scope-expand.d.ts.map +1 -0
  99. package/dist/sql/tenant-scope-expand.js +101 -0
  100. package/dist/sql/tenant-scope-expand.js.map +1 -0
  101. package/dist/sql/tsql-batch.d.ts +56 -0
  102. package/dist/sql/tsql-batch.d.ts.map +1 -0
  103. package/dist/sql/tsql-batch.js +246 -0
  104. package/dist/sql/tsql-batch.js.map +1 -0
  105. package/dist/sql/validate.d.ts +5 -2
  106. package/dist/sql/validate.d.ts.map +1 -1
  107. package/dist/sql/validate.js +22 -2
  108. package/dist/sql/validate.js.map +1 -1
  109. package/package.json +1 -1
package/README.md CHANGED
@@ -21,7 +21,7 @@ pnpm add @askdb/ai
21
21
 
22
22
  `ai` is a **peer dependency** (`^6.0.0 || ^7.0.51`: AI SDK 6, or 7.0.51 and later), not a bundled dependency: `ask()` receives a `LanguageModel` your app constructs, so core must use the same `ai` instance your app does. Hosts on AI SDK 6 (e.g. `@ai-sdk/openai@3`) and AI SDK 7 (`@ai-sdk/openai@4`) are both supported. The config-driven path (`@askdb/ai` and `@askdb/client`) currently requires AI SDK 7.
23
23
 
24
- `ai` is a required peer, not an optional one, and core loads it at import time. So any package that depends on `@askdb/core` needs `ai` installed, even for introspection only. That covers `@askdb/client`, `@askdb/connectors`, `@askdb/introspect`, the engine packages, `@askdb/prisma`, `@askdb/enrich` and `@askdb/rag`. npm 7+ and pnpm install the missing peer for you. Yarn doesn't, so add `ai` yourself. ADR 0006 records why (2026-09 amendment).
24
+ `ai` is a required peer, not an optional one, and core loads it at import time. So any package that depends on `@askdb/core` needs `ai` installed, even for introspection only. That covers `@askdb/client`, `@askdb/introspect`, the engine packages, `@askdb/prisma`, `@askdb/enrich` and `@askdb/rag`. npm 7+ and pnpm install the missing peer for you. Yarn doesn't, so add `ai` yourself. ADR 0006 records why (2026-09 amendment).
25
25
 
26
26
  `@askdb/core` itself does not depend on `pg`. The optional `pg` peer lives on `@askdb/postgres` for live Postgres introspection.
27
27
 
@@ -87,10 +87,8 @@ await pool.query(result.sql); // ready to run
87
87
  await pool.query(result.unboundSql!, result.params); // driver binding
88
88
 
89
89
  // Render a form from result.parameters, then rebind locally — no model call.
90
- const rebound = bindPreparedQuery(result.preparedQuery!, {
91
- state_name: "Utah",
92
- ":tenant_agency_ids": authorizedAgencyIds,
93
- });
90
+ // The guardrails run again on the template under this schema and scope.
91
+ const rebound = bindPreparedQuery(result.preparedQuery!, { state_name: "Utah" }, { schema, tenantScope });
94
92
  await pool.query(rebound.sql);
95
93
  ```
96
94
 
@@ -99,7 +97,7 @@ Key rules:
99
97
  - `parameterize` defaults to **true**. Set `parameterize: false` when the extra output tokens are not worth it.
100
98
  - If the model's extra blocks are missing or inconsistent, the extras are omitted and `result.sql` is unaffected. No new error reaches a caller who does not call `bindPreparedQuery()`.
101
99
  - The model decides what to parameterize, so a mistake changes the *form*, not the query. Constrain form inputs using returned `type` and `description`.
102
- - `bindPreparedQuery()` is mechanical: it checks names, types, and cardinality, and **does not authorize tenant IDs**. Authorization is the host's, exactly as when building `tenantScope`.
100
+ - `bindPreparedQuery(prepared, values, { schema, tenantScope?, sensitiveGuardrailMode?, acceptWarnings? })` re-runs the read-only, tenant and sensitive checks on the stored template under the schema, scope and modes you pass, then binds. Tenant IDs come from `tenantScope`, never from `values`. Under a policy with `enforcement: warn`, a template that fails the tenant check is refused unless `acceptWarnings` includes `"tenant"`. Authorizing `tenantScope` is the host's job, exactly as for `ask()`. Expand a `subtree` scope with `expandTenantScope()` first.
103
101
  - Callers using the new fields must execute with `params`, not `tenantParams`.
104
102
  - List parameters are arity-stable in `unboundSql` only on PostgreSQL/CockroachDB (`= ANY($n)`); elsewhere a changed list length changes the marker count — rebind through `bindPreparedQuery()` rather than swapping the array.
105
103
  - Markers: `$N` (Postgres/CockroachDB), `?` (MySQL/MariaDB/SQLite), `@pN` (SQL Server, 0-based). Map values via `parameters[].markers` for SQL Server.
@@ -107,7 +105,8 @@ Key rules:
107
105
  ## What you get
108
106
 
109
107
  - `ask({ question, schema, model, dialect })` — generate checked SQL (plus optional `unboundSql` / `params` / `parameters` / `preparedQuery`).
110
- - `bindPreparedQuery(prepared, values)` — pure local rebind of a `PreparedQuery` (no model call).
108
+ - `bindPreparedQuery(prepared, values, guardrails)` — local rebind of a `PreparedQuery` (no model call), re-checked under the given schema and tenant scope.
109
+ - `expandTenantScope(policy, scope, resolveTenantDescendants)` — the `subtree` expansion `ask()` runs, for a rebind.
111
110
  - `AskDbLanguageModel` — AskDB's public name for the AI SDK language model contract.
112
111
  - `AskDialect` — the dialect adapter contract. `@askdb/postgres` exports a ready-made one.
113
112
  - `loadSchema(path)` — load a Schema v2 directory, bundled JSON, or `schema.json` path.
package/dist/ask.d.ts CHANGED
@@ -7,8 +7,11 @@ import type { Retriever } from "./retrieval/types.js";
7
7
  import type { TenantScope } from "./schema/v2/tenant-policy.js";
8
8
  import { type BuiltInDialectId, type DialectSpec } from "./sql/dialect-spec.js";
9
9
  import { type TenantSqlOutputMode, type TenantBinding } from "./sql/tenant-placeholders.js";
10
+ import { type ResolveTenantDescendants, type TenantIdsByRoot } from "./sql/tenant-scope-expand.js";
10
11
  import { type SensitiveGuardrailMode, type SensitiveGuardrailResult } from "./sql/sensitive-guardrail.js";
12
+ import { type GuardrailVerdict } from "./errors.js";
11
13
  import { type PreparedQuery, type QueryParameterBinding, type QueryParamSlot } from "./sql/bind.js";
14
+ export type { ResolveTenantDescendants, TenantIdsByRoot };
12
15
  /** Options forwarded to a dialect's generator. Stable across dialects. */
13
16
  export type AskDialectGenerateOptions = {
14
17
  logger?: AskDbLogger;
@@ -39,9 +42,11 @@ export type AskDialectGenerateResult = {
39
42
  explain?: unknown;
40
43
  /**
41
44
  * Optional tenant guardrail result from a custom generator. When the schema has a
42
- * tenant policy, `ask()` merges its warnings into its own check of `sql` and
43
- * `unboundNamedSql` (before tenant rendering); it can add failures but never replace
44
- * or relax that check.
45
+ * tenant policy, its warnings become tenant findings (`form: "generator"`) next to
46
+ * `ask()`'s own check of `sql` and `unboundNamedSql`, decided under the policy's
47
+ * `enforcement`; `passed: false` with no warnings becomes one `UNPROVABLE_SCOPE`
48
+ * finding. It can add findings but never replace or relax that check. Without a tenant
49
+ * policy it is passed through to `result.tenantGuardrail` unchanged.
45
50
  */
46
51
  tenantGuardrail?: import("./sql/tenant-guardrail.js").TenantGuardrailResult;
47
52
  usage?: AskUsage;
@@ -67,8 +72,10 @@ export type AskDialectGenerateResult = {
67
72
  * policy, `ask()` runs the tenant guardrail on the returned `sql` (and
68
73
  * `unboundNamedSql`), with its `:tenant_<root>_ids` placeholders still in place,
69
74
  * then substitutes them, regardless of dialect; `strict` policies throw
70
- * `TenantGuardrailError`. A `tenantGuardrail` your
71
- * generator returns is merged into that result, never used in place of it.
75
+ * `TenantGuardrailError`. A `tenantGuardrail` your generator returns adds
76
+ * findings to that check (`form: "generator"`), never replaces it.
77
+ * - The sensitive-identifier check runs on your SQL too, unless
78
+ * `sensitiveGuardrailMode` is `"off"`.
72
79
  */
73
80
  export type AskDialect = {
74
81
  generate(question: string, schema: AnyNormalizedSchema, model: AskDbLanguageModel, options?: AskDialectGenerateOptions): Promise<AskDialectGenerateResult>;
@@ -92,28 +99,6 @@ export type AskGenerateDeps = {
92
99
  */
93
100
  providerOptions?: Record<string, unknown>;
94
101
  };
95
- /**
96
- * A subtree's IDs grouped by tenant root: each key is a root table id from the
97
- * tenant policy (`"table:public.clients"`), and its value holds IDs of that root's
98
- * own `tenantIdColumn`, never IDs of another root.
99
- *
100
- * Root tables have separate ID spaces, so client `5` and agency `5` are different
101
- * tenants. Keying the IDs by root lets `ask()` bind each root's IDs to that root's
102
- * own `:tenant_<label>_ids` placeholder.
103
- */
104
- export type TenantIdsByRoot = Readonly<Record<string, readonly string[]>>;
105
- /**
106
- * Host callback that expands a `subtree` tenant scope. Given the tenant root id and
107
- * the seed IDs, return the subtree's IDs grouped by root ({@link TenantIdsByRoot}):
108
- *
109
- * - under `tenantRoot`: the seeds and any same-table descendants (e.g. child
110
- * agencies through `agencies.parent_agency_id`);
111
- * - under each descendant root the policy declares (`roots[].parent` or
112
- * `hierarchy[]`): that root's IDs in the subtree.
113
- *
114
- * Pass it to `ask()` as {@link AskPipelineOptions.resolveTenantDescendants}.
115
- */
116
- export type ResolveTenantDescendants = (tenantRoot: string, seedIds: readonly string[]) => Promise<TenantIdsByRoot> | TenantIdsByRoot;
117
102
  export type AskPipelineOptions = {
118
103
  question: string;
119
104
  schema: AnyNormalizedSchema;
@@ -217,8 +202,9 @@ export type AskPipelineOptions = {
217
202
  * `askdb.pipeline.sensitive_sql_warning` is logged, but `ask()` still resolves.
218
203
  * `"strict"` throws {@link SensitiveReferenceError} instead. `"off"` skips the check.
219
204
  *
220
- * This only covers SQL produced by *this* call. Hosts that cache or replay SQL
221
- * should call `validateSensitiveReferences` on every execution path.
205
+ * Covers SQL produced by *this* call. A rebind with `bindPreparedQuery()` runs the
206
+ * check again on the stored template; hosts that store and replay `sql` itself should
207
+ * call `validateSensitiveReferences` on that path.
222
208
  */
223
209
  sensitiveGuardrailMode?: SensitiveGuardrailMode | "off";
224
210
  };
@@ -247,18 +233,24 @@ export type AskPipelineResult = {
247
233
  preparedQuery?: PreparedQuery;
248
234
  explain?: unknown;
249
235
  /**
250
- * Sensitive-identifier guardrail result for `sql`. Present when the schema declares
251
- * at least one `sensitive` table/column and `sensitiveGuardrailMode` is not `"off"`.
236
+ * Every guardrail finding for the model's SQL, checked before AskDB renders it (its
237
+ * bound `sql` and `sql-unbound` block, with the `:tenant_<root>_ids` placeholders still
238
+ * in place), and the outcome: `allow`, or `warn` when a `warn`-mode check found
239
+ * something. A `deny` throws the check's typed error instead, with this verdict on it.
240
+ */
241
+ verdict: GuardrailVerdict;
242
+ /**
243
+ * Sensitive-identifier guardrail result, derived from {@link verdict}. Present when the
244
+ * schema declares at least one `sensitive` table/column and `sensitiveGuardrailMode` is
245
+ * not `"off"`.
252
246
  */
253
247
  sensitiveGuardrail?: SensitiveGuardrailResult;
254
248
  /**
255
- * Tenant guardrail result for the model's SQL, checked before tenant rendering: the
256
- * bound `sql` and its `sql-unbound` block, with the `:tenant_<root>_ids` placeholders
257
- * still in place. `sql` and `unboundSql` differ from those only by the substituted
258
- * tenant IDs or markers. Present whenever the schema has a tenant policy, for every
259
- * dialect form. In `strict` mode a failure
260
- * throws `TenantGuardrailError` instead, so a returned result is always `passed`
261
- * under `strict`.
249
+ * Tenant guardrail result, derived from {@link verdict}: its tenant findings, once each.
250
+ * `sql` and `unboundSql` differ from the checked forms only by the substituted tenant IDs
251
+ * or markers. Present whenever the schema has a tenant policy, for every dialect form.
252
+ * In `strict` mode a failure throws `TenantGuardrailError` instead, so a returned result
253
+ * is always `passed` under `strict`.
262
254
  */
263
255
  tenantGuardrail?: import("./sql/tenant-guardrail.js").TenantGuardrailResult;
264
256
  /**
package/dist/ask.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}