@databricks/appkit 0.72.0 → 0.73.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.
Files changed (117) hide show
  1. package/CLAUDE.md +17 -0
  2. package/NOTICE.md +1 -0
  3. package/dist/appkit/package.js +1 -1
  4. package/dist/beta.d.ts +7 -4
  5. package/dist/beta.js +3 -2
  6. package/dist/cli/commands/agent/eval.js +9 -1
  7. package/dist/cli/commands/agent/eval.js.map +1 -1
  8. package/dist/connectors/index.js +1 -1
  9. package/dist/connectors/mlflow/auth.d.ts +11 -1
  10. package/dist/connectors/mlflow/auth.d.ts.map +1 -1
  11. package/dist/connectors/mlflow/auth.js +22 -2
  12. package/dist/connectors/mlflow/auth.js.map +1 -1
  13. package/dist/connectors/mlflow/index.d.ts +2 -0
  14. package/dist/database/errors.js +15 -5
  15. package/dist/database/errors.js.map +1 -1
  16. package/dist/database/runtime/data-path.d.ts +7 -0
  17. package/dist/database/runtime/data-path.d.ts.map +1 -0
  18. package/dist/database/runtime/data-path.js.map +1 -1
  19. package/dist/database/runtime/engine/drizzle-data-path.js +7 -5
  20. package/dist/database/runtime/engine/drizzle-data-path.js.map +1 -1
  21. package/dist/database/schema-builder/define-schema.d.ts +1 -1
  22. package/dist/database/schema-builder/define-schema.js +1 -1
  23. package/dist/database/schema-builder/define-schema.js.map +1 -1
  24. package/dist/errors/database-validation.d.ts +23 -0
  25. package/dist/errors/database-validation.d.ts.map +1 -0
  26. package/dist/errors/database-validation.js +24 -0
  27. package/dist/errors/database-validation.js.map +1 -0
  28. package/dist/errors/index.js +1 -0
  29. package/dist/evals/dataset.d.ts +36 -0
  30. package/dist/evals/dataset.d.ts.map +1 -0
  31. package/dist/evals/dataset.js +36 -0
  32. package/dist/evals/dataset.js.map +1 -0
  33. package/dist/evals/http-driver.js +56 -51
  34. package/dist/evals/http-driver.js.map +1 -1
  35. package/dist/evals/index.d.ts +14 -0
  36. package/dist/evals/index.js +2 -1
  37. package/dist/evals/judge.d.ts +1 -0
  38. package/dist/evals/judge.d.ts.map +1 -1
  39. package/dist/evals/mlflow-report.d.ts +1 -0
  40. package/dist/evals/mlflow-report.d.ts.map +1 -1
  41. package/dist/evals/mlflow-run.d.ts +2 -0
  42. package/dist/evals/mlflow-run.d.ts.map +1 -1
  43. package/dist/evals/run-eval.d.ts +3 -0
  44. package/dist/evals/run-eval.d.ts.map +1 -1
  45. package/dist/evals/run-eval.js +10 -2
  46. package/dist/evals/run-eval.js.map +1 -1
  47. package/dist/evals/run-evals.d.ts +9 -0
  48. package/dist/evals/run-evals.d.ts.map +1 -1
  49. package/dist/evals/run-evals.js +101 -22
  50. package/dist/evals/run-evals.js.map +1 -1
  51. package/dist/evals/types.d.ts +40 -4
  52. package/dist/evals/types.d.ts.map +1 -1
  53. package/dist/index.d.ts +2 -1
  54. package/dist/index.js +2 -1
  55. package/dist/plugin/plugin.d.ts.map +1 -1
  56. package/dist/plugin/plugin.js +1 -1
  57. package/dist/plugin/plugin.js.map +1 -1
  58. package/dist/plugins/database/crud/contract.js +17 -8
  59. package/dist/plugins/database/crud/contract.js.map +1 -1
  60. package/dist/plugins/database/crud/exposure.js +63 -22
  61. package/dist/plugins/database/crud/exposure.js.map +1 -1
  62. package/dist/plugins/database/crud/request.js +50 -0
  63. package/dist/plugins/database/crud/request.js.map +1 -0
  64. package/dist/plugins/database/crud/response.js +77 -0
  65. package/dist/plugins/database/crud/response.js.map +1 -0
  66. package/dist/plugins/database/crud/routes.js +71 -52
  67. package/dist/plugins/database/crud/routes.js.map +1 -1
  68. package/dist/plugins/database/database.d.ts +6 -4
  69. package/dist/plugins/database/database.d.ts.map +1 -1
  70. package/dist/plugins/database/database.js +46 -16
  71. package/dist/plugins/database/database.js.map +1 -1
  72. package/dist/plugins/database/defaults.js +5 -1
  73. package/dist/plugins/database/defaults.js.map +1 -1
  74. package/dist/plugins/database/entity-client.js +143 -10
  75. package/dist/plugins/database/entity-client.js.map +1 -1
  76. package/dist/plugins/database/entity-types.d.ts +1 -1
  77. package/dist/plugins/database/hooks.d.ts +38 -0
  78. package/dist/plugins/database/hooks.d.ts.map +1 -0
  79. package/dist/plugins/database/index.d.ts +3 -2
  80. package/dist/plugins/database/lifecycle.js +67 -28
  81. package/dist/plugins/database/lifecycle.js.map +1 -1
  82. package/dist/plugins/database/scope.js +58 -0
  83. package/dist/plugins/database/scope.js.map +1 -0
  84. package/dist/plugins/database/types.d.ts +40 -12
  85. package/dist/plugins/database/types.d.ts.map +1 -1
  86. package/dist/shared/src/schemas/manifest.d.ts +33 -33
  87. package/docs/api/appkit/Class.AppKitError.md +1 -0
  88. package/docs/api/appkit/Class.DatabaseValidationError.md +191 -0
  89. package/docs/api/appkit/Function.defineSchema.md +1 -1
  90. package/docs/api/appkit/Function.readEvalDataset.md +21 -0
  91. package/docs/api/appkit/Function.resolveWorkspaceClient.md +18 -0
  92. package/docs/api/appkit/Interface.AssertionHandle.md +1 -1
  93. package/docs/api/appkit/Interface.DatabaseValidationIssue.md +21 -0
  94. package/docs/api/appkit/Interface.DatasetRow.md +21 -0
  95. package/docs/api/appkit/Interface.EntityMutationHooks.md +173 -0
  96. package/docs/api/appkit/Interface.EvalDefinition.md +28 -0
  97. package/docs/api/appkit/Interface.EvalDriver.md +16 -1
  98. package/docs/api/appkit/Interface.HookApp.md +12 -0
  99. package/docs/api/appkit/Interface.HookContext.md +21 -0
  100. package/docs/api/appkit/Interface.ReadEvalDatasetOptions.md +34 -0
  101. package/docs/api/appkit/Interface.ReadSerializerContext.md +21 -0
  102. package/docs/api/appkit/Interface.RunEvalOptions.md +11 -0
  103. package/docs/api/appkit/Interface.RunEvalsOptions.md +22 -0
  104. package/docs/api/appkit/Interface.TestContext.md +41 -4
  105. package/docs/api/appkit/TypeAlias.DatabaseApiConfig.md +53 -0
  106. package/docs/api/appkit/TypeAlias.DatabaseApiWriteOperation.md +8 -0
  107. package/docs/api/appkit/TypeAlias.DatabaseApiWritesConfig.md +49 -0
  108. package/docs/api/appkit/TypeAlias.DatabaseExports.md +3 -3
  109. package/docs/api/appkit/TypeAlias.EntityHooks.md +25 -0
  110. package/docs/api/appkit/TypeAlias.IDatabaseConfig.md +16 -5
  111. package/docs/api/appkit/TypeAlias.ReadSerializer.md +19 -0
  112. package/docs/api/appkit/TypeAlias.TransactionClient.md +19 -0
  113. package/docs/api/appkit.md +135 -119
  114. package/docs/plugins/database.md +144 -0
  115. package/llms.txt +17 -0
  116. package/package.json +2 -2
  117. package/sbom.cdx.json +1 -1
@@ -0,0 +1,191 @@
1
+ # Class: DatabaseValidationError
2
+
3
+ Deliberate validation failure raised by a database mutation hook. Generated routes answer `422` and echo only the issues naming a public column; every other failure raised inside a hook stays an opaque server error.
4
+
5
+ ## Extends[​](#extends "Direct link to Extends")
6
+
7
+ * [`AppKitError`](./docs/api/appkit/Class.AppKitError.md)
8
+
9
+ ## Constructors[​](#constructors "Direct link to Constructors")
10
+
11
+ ### Constructor[​](#constructor "Direct link to Constructor")
12
+
13
+ ```ts
14
+ new DatabaseValidationError(message: string, issues: readonly DatabaseValidationIssue[]): DatabaseValidationError;
15
+
16
+ ```
17
+
18
+ #### Parameters[​](#parameters "Direct link to Parameters")
19
+
20
+ | Parameter | Type | Default value |
21
+ | --------- | ----------------------------------------------------------------------------------------------------- | ------------- |
22
+ | `message` | `string` | `undefined` |
23
+ | `issues` | readonly [`DatabaseValidationIssue`](./docs/api/appkit/Interface.DatabaseValidationIssue.md)\[] | `[]` |
24
+
25
+ #### Returns[​](#returns "Direct link to Returns")
26
+
27
+ `DatabaseValidationError`
28
+
29
+ #### Overrides[​](#overrides "Direct link to Overrides")
30
+
31
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`constructor`](./docs/api/appkit/Class.AppKitError.md#constructor)
32
+
33
+ ## Properties[​](#properties "Direct link to Properties")
34
+
35
+ ### \_clientMessage?[​](#_clientmessage "Direct link to _clientMessage?")
36
+
37
+ ```ts
38
+ protected readonly optional _clientMessage: string;
39
+
40
+ ```
41
+
42
+ Client-safe error message. When set, callers serializing the error to a client (SSE, HTTP body) MUST prefer `clientMessage` over `message` — `message` may contain raw upstream / SDK text including statement fragments, internal object names, and correlation IDs.
43
+
44
+ Subclasses can set this in their constructor for a fixed sanitized string. When unset, `clientMessage` defaults to a generic per-code string (see the getter), and the raw `message` is kept server-side only.
45
+
46
+ #### Inherited from[​](#inherited-from "Direct link to Inherited from")
47
+
48
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`_clientMessage`](./docs/api/appkit/Class.AppKitError.md#_clientmessage)
49
+
50
+ ***
51
+
52
+ ### cause?[​](#cause "Direct link to cause?")
53
+
54
+ ```ts
55
+ readonly optional cause: Error;
56
+
57
+ ```
58
+
59
+ Optional cause of the error
60
+
61
+ #### Inherited from[​](#inherited-from-1 "Direct link to Inherited from")
62
+
63
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`cause`](./docs/api/appkit/Class.AppKitError.md#cause)
64
+
65
+ ***
66
+
67
+ ### code[​](#code "Direct link to code")
68
+
69
+ ```ts
70
+ readonly code: "DATABASE_VALIDATION_ERROR" = "DATABASE_VALIDATION_ERROR";
71
+
72
+ ```
73
+
74
+ Error code for programmatic error handling
75
+
76
+ #### Overrides[​](#overrides-1 "Direct link to Overrides")
77
+
78
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`code`](./docs/api/appkit/Class.AppKitError.md#code)
79
+
80
+ ***
81
+
82
+ ### context?[​](#context "Direct link to context?")
83
+
84
+ ```ts
85
+ readonly optional context: Record<string, unknown>;
86
+
87
+ ```
88
+
89
+ Additional context for the error
90
+
91
+ #### Inherited from[​](#inherited-from-2 "Direct link to Inherited from")
92
+
93
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`context`](./docs/api/appkit/Class.AppKitError.md#context)
94
+
95
+ ***
96
+
97
+ ### isRetryable[​](#isretryable "Direct link to isRetryable")
98
+
99
+ ```ts
100
+ readonly isRetryable: false = false;
101
+
102
+ ```
103
+
104
+ Whether this error type is generally safe to retry
105
+
106
+ #### Overrides[​](#overrides-2 "Direct link to Overrides")
107
+
108
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`isRetryable`](./docs/api/appkit/Class.AppKitError.md#isretryable)
109
+
110
+ ***
111
+
112
+ ### issues[​](#issues "Direct link to issues")
113
+
114
+ ```ts
115
+ readonly issues: readonly DatabaseValidationIssue[];
116
+
117
+ ```
118
+
119
+ ***
120
+
121
+ ### statusCode[​](#statuscode "Direct link to statusCode")
122
+
123
+ ```ts
124
+ readonly statusCode: 422 = 422;
125
+
126
+ ```
127
+
128
+ HTTP status code suggestion (can be overridden)
129
+
130
+ #### Overrides[​](#overrides-3 "Direct link to Overrides")
131
+
132
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`statusCode`](./docs/api/appkit/Class.AppKitError.md#statuscode)
133
+
134
+ ## Accessors[​](#accessors "Direct link to Accessors")
135
+
136
+ ### clientMessage[​](#clientmessage "Direct link to clientMessage")
137
+
138
+ #### Get Signature[​](#get-signature "Direct link to Get Signature")
139
+
140
+ ```ts
141
+ get clientMessage(): string;
142
+
143
+ ```
144
+
145
+ Sanitized message safe to forward to clients. Override in subclasses if a more specific default is appropriate.
146
+
147
+ ##### Returns[​](#returns-1 "Direct link to Returns")
148
+
149
+ `string`
150
+
151
+ #### Inherited from[​](#inherited-from-3 "Direct link to Inherited from")
152
+
153
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`clientMessage`](./docs/api/appkit/Class.AppKitError.md#clientmessage)
154
+
155
+ ## Methods[​](#methods "Direct link to Methods")
156
+
157
+ ### toJSON()[​](#tojson "Direct link to toJSON()")
158
+
159
+ ```ts
160
+ toJSON(): Record<string, unknown>;
161
+
162
+ ```
163
+
164
+ Convert error to JSON for logging/serialization. Sensitive values in context are automatically redacted.
165
+
166
+ #### Returns[​](#returns-2 "Direct link to Returns")
167
+
168
+ `Record`<`string`, `unknown`>
169
+
170
+ #### Inherited from[​](#inherited-from-4 "Direct link to Inherited from")
171
+
172
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`toJSON`](./docs/api/appkit/Class.AppKitError.md#tojson)
173
+
174
+ ***
175
+
176
+ ### toString()[​](#tostring "Direct link to toString()")
177
+
178
+ ```ts
179
+ toString(): string;
180
+
181
+ ```
182
+
183
+ Create a human-readable string representation
184
+
185
+ #### Returns[​](#returns-3 "Direct link to Returns")
186
+
187
+ `string`
188
+
189
+ #### Inherited from[​](#inherited-from-5 "Direct link to Inherited from")
190
+
191
+ [`AppKitError`](./docs/api/appkit/Class.AppKitError.md).[`toString`](./docs/api/appkit/Class.AppKitError.md#tostring)
@@ -5,7 +5,7 @@ function defineSchema<TTables>(builder: (context: SchemaBuilderContext) => TTabl
5
5
 
6
6
  ```
7
7
 
8
- Compile one declared schema. The returned type keeps the table names the builder returned, so `crudRoutes` and `hooks` can name only real tables.
8
+ Compile one declared schema. The returned type keeps the table names the builder returned, so `api.tables` and `hooks` can name only real tables.
9
9
 
10
10
  ## Type Parameters[​](#type-parameters "Direct link to Type Parameters")
11
11
 
@@ -0,0 +1,21 @@
1
+ # Function: readEvalDataset()
2
+
3
+ ```ts
4
+ function readEvalDataset(client: WorkspaceClient, options: ReadEvalDatasetOptions): Promise<DatasetRow[]>;
5
+
6
+ ```
7
+
8
+ Read a Databricks managed evaluation dataset (a Unity Catalog table with `inputs`/`expectations` columns) into rows, over the public SQL Statement Execution API. Reuses SQLWarehouseConnector for submit/poll/transform — its result transform already JSON-parses string columns into objects, so `inputs`/`expectations` come back as records whether the table stores them as JSON strings or structs.
9
+
10
+ The Python `mlflow.genai.datasets` API needs a Spark session (no TS equivalent), so we read the backing table directly.
11
+
12
+ ## Parameters[​](#parameters "Direct link to Parameters")
13
+
14
+ | Parameter | Type |
15
+ | --------- | --------------------------------------------------------------------------------------- |
16
+ | `client` | [`WorkspaceClient`](./docs/api/appkit/Interface.WorkspaceClient.md) |
17
+ | `options` | [`ReadEvalDatasetOptions`](./docs/api/appkit/Interface.ReadEvalDatasetOptions.md) |
18
+
19
+ ## Returns[​](#returns "Direct link to Returns")
20
+
21
+ `Promise`<[`DatasetRow`](./docs/api/appkit/Interface.DatasetRow.md)\[]>
@@ -0,0 +1,18 @@
1
+ # Function: resolveWorkspaceClient()
2
+
3
+ ```ts
4
+ function resolveWorkspaceClient(options: ResolveDatabricksAuthOptions): WorkspaceClient | undefined;
5
+
6
+ ```
7
+
8
+ Construct a Databricks `WorkspaceClient` for the eval runner — the object the SDK-backed connectors (e.g. `SQLWarehouseConnector`) take. An explicit host+token builds a PAT client; otherwise the profile (or ambient config) is used and the SDK resolves credentials, minting OAuth as needed. Returns `undefined` if construction throws (missing/invalid config).
9
+
10
+ ## Parameters[​](#parameters "Direct link to Parameters")
11
+
12
+ | Parameter | Type |
13
+ | --------- | --------------------------------------------------------------------------------------------------- |
14
+ | `options` | [`ResolveDatabricksAuthOptions`](./docs/api/appkit/Interface.ResolveDatabricksAuthOptions.md) |
15
+
16
+ ## Returns[​](#returns "Direct link to Returns")
17
+
18
+ [`WorkspaceClient`](./docs/api/appkit/Interface.WorkspaceClient.md) | `undefined`
@@ -11,7 +11,7 @@ atLeast(threshold: number): AssertionHandle;
11
11
 
12
12
  ```
13
13
 
14
- Soft assertion that passes only when the score is at least `threshold`.
14
+ Set the pass threshold for a scored assertion: it passes only when the score is at least `threshold`. Keeps the current severity (gate unless also chained with `.soft()`).
15
15
 
16
16
  #### Parameters[​](#parameters "Direct link to Parameters")
17
17
 
@@ -0,0 +1,21 @@
1
+ # Interface: DatabaseValidationIssue
2
+
3
+ One rejected field; `path` names public columns, never their values.
4
+
5
+ ## Properties[​](#properties "Direct link to Properties")
6
+
7
+ ### message[​](#message "Direct link to message")
8
+
9
+ ```ts
10
+ readonly message: string;
11
+
12
+ ```
13
+
14
+ ***
15
+
16
+ ### path[​](#path "Direct link to path")
17
+
18
+ ```ts
19
+ readonly path: readonly string[];
20
+
21
+ ```
@@ -0,0 +1,21 @@
1
+ # Interface: DatasetRow
2
+
3
+ One row of a managed evaluation dataset. `inputs` are the kwargs passed to the agent for the turn; `expectations` (when present) is the row's ground truth / guidelines. Mirrors the `{inputs, expectations}` shape of `mlflow.genai` datasets and of the Unity Catalog table backing a managed eval dataset.
4
+
5
+ ## Properties[​](#properties "Direct link to Properties")
6
+
7
+ ### expectations?[​](#expectations "Direct link to expectations?")
8
+
9
+ ```ts
10
+ optional expectations: Record<string, unknown>;
11
+
12
+ ```
13
+
14
+ ***
15
+
16
+ ### inputs[​](#inputs "Direct link to inputs")
17
+
18
+ ```ts
19
+ inputs: Record<string, unknown>;
20
+
21
+ ```
@@ -0,0 +1,173 @@
1
+ # Interface: EntityMutationHooks\<TTable>
2
+
3
+ Mutation lifecycle for one entity. A before hook may return a replacement payload, which is revalidated against the trusted schema before it is persisted. Every hook, the mutation, and any write a hook issues through `ctx.app.database` share one transaction, so a rejection anywhere rolls all of them back. Throw `DatabaseValidationError` to answer a generated route with `422`; any other failure stays an opaque server error.
4
+
5
+ ## Type Parameters[​](#type-parameters "Direct link to Type Parameters")
6
+
7
+ | Type Parameter | Default type |
8
+ | --------------------------- | ------------ |
9
+ | `TTable` *extends* `string` | `string` |
10
+
11
+ ## Methods[​](#methods "Direct link to Methods")
12
+
13
+ ### afterCreate()?[​](#aftercreate "Direct link to afterCreate()?")
14
+
15
+ ```ts
16
+ optional afterCreate(row: FacetOf<TTable, "row">, context: HookContext): MaybePromise<void>;
17
+
18
+ ```
19
+
20
+ #### Parameters[​](#parameters "Direct link to Parameters")
21
+
22
+ | Parameter | Type |
23
+ | --------- | ----------------------------------------------------------------- |
24
+ | `row` | `FacetOf`<`TTable`, `"row"`> |
25
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
26
+
27
+ #### Returns[​](#returns "Direct link to Returns")
28
+
29
+ `MaybePromise`<`void`>
30
+
31
+ ***
32
+
33
+ ### afterDelete()?[​](#afterdelete "Direct link to afterDelete()?")
34
+
35
+ ```ts
36
+ optional afterDelete(id: IdValue, context: HookContext): MaybePromise<void>;
37
+
38
+ ```
39
+
40
+ #### Parameters[​](#parameters-1 "Direct link to Parameters")
41
+
42
+ | Parameter | Type |
43
+ | --------- | ----------------------------------------------------------------- |
44
+ | `id` | `IdValue` |
45
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
46
+
47
+ #### Returns[​](#returns-1 "Direct link to Returns")
48
+
49
+ `MaybePromise`<`void`>
50
+
51
+ ***
52
+
53
+ ### afterUpdate()?[​](#afterupdate "Direct link to afterUpdate()?")
54
+
55
+ ```ts
56
+ optional afterUpdate(row: FacetOf<TTable, "row">, context: HookContext): MaybePromise<void>;
57
+
58
+ ```
59
+
60
+ #### Parameters[​](#parameters-2 "Direct link to Parameters")
61
+
62
+ | Parameter | Type |
63
+ | --------- | ----------------------------------------------------------------- |
64
+ | `row` | `FacetOf`<`TTable`, `"row"`> |
65
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
66
+
67
+ #### Returns[​](#returns-2 "Direct link to Returns")
68
+
69
+ `MaybePromise`<`void`>
70
+
71
+ ***
72
+
73
+ ### afterUpsert()?[​](#afterupsert "Direct link to afterUpsert()?")
74
+
75
+ ```ts
76
+ optional afterUpsert(row: FacetOf<TTable, "row">, context: HookContext): MaybePromise<void>;
77
+
78
+ ```
79
+
80
+ #### Parameters[​](#parameters-3 "Direct link to Parameters")
81
+
82
+ | Parameter | Type |
83
+ | --------- | ----------------------------------------------------------------- |
84
+ | `row` | `FacetOf`<`TTable`, `"row"`> |
85
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
86
+
87
+ #### Returns[​](#returns-3 "Direct link to Returns")
88
+
89
+ `MaybePromise`<`void`>
90
+
91
+ ***
92
+
93
+ ### beforeCreate()?[​](#beforecreate "Direct link to beforeCreate()?")
94
+
95
+ ```ts
96
+ optional beforeCreate(values: FacetOf<TTable, "insert">, context: HookContext): MaybePromise<void | FacetOf<TTable, "insert">>;
97
+
98
+ ```
99
+
100
+ #### Parameters[​](#parameters-4 "Direct link to Parameters")
101
+
102
+ | Parameter | Type |
103
+ | --------- | ----------------------------------------------------------------- |
104
+ | `values` | `FacetOf`<`TTable`, `"insert"`> |
105
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
106
+
107
+ #### Returns[​](#returns-4 "Direct link to Returns")
108
+
109
+ `MaybePromise`<`void` | `FacetOf`<`TTable`, `"insert"`>>
110
+
111
+ ***
112
+
113
+ ### beforeDelete()?[​](#beforedelete "Direct link to beforeDelete()?")
114
+
115
+ ```ts
116
+ optional beforeDelete(id: IdValue, context: HookContext): MaybePromise<void>;
117
+
118
+ ```
119
+
120
+ #### Parameters[​](#parameters-5 "Direct link to Parameters")
121
+
122
+ | Parameter | Type |
123
+ | --------- | ----------------------------------------------------------------- |
124
+ | `id` | `IdValue` |
125
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
126
+
127
+ #### Returns[​](#returns-5 "Direct link to Returns")
128
+
129
+ `MaybePromise`<`void`>
130
+
131
+ ***
132
+
133
+ ### beforeUpdate()?[​](#beforeupdate "Direct link to beforeUpdate()?")
134
+
135
+ ```ts
136
+ optional beforeUpdate(
137
+ id: IdValue,
138
+ values: FacetOf<TTable, "update">,
139
+ context: HookContext): MaybePromise<void | FacetOf<TTable, "update">>;
140
+
141
+ ```
142
+
143
+ #### Parameters[​](#parameters-6 "Direct link to Parameters")
144
+
145
+ | Parameter | Type |
146
+ | --------- | ----------------------------------------------------------------- |
147
+ | `id` | `IdValue` |
148
+ | `values` | `FacetOf`<`TTable`, `"update"`> |
149
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
150
+
151
+ #### Returns[​](#returns-6 "Direct link to Returns")
152
+
153
+ `MaybePromise`<`void` | `FacetOf`<`TTable`, `"update"`>>
154
+
155
+ ***
156
+
157
+ ### beforeUpsert()?[​](#beforeupsert "Direct link to beforeUpsert()?")
158
+
159
+ ```ts
160
+ optional beforeUpsert(values: FacetOf<TTable, "insert">, context: HookContext): MaybePromise<void | FacetOf<TTable, "insert">>;
161
+
162
+ ```
163
+
164
+ #### Parameters[​](#parameters-7 "Direct link to Parameters")
165
+
166
+ | Parameter | Type |
167
+ | --------- | ----------------------------------------------------------------- |
168
+ | `values` | `FacetOf`<`TTable`, `"insert"`> |
169
+ | `context` | [`HookContext`](./docs/api/appkit/Interface.HookContext.md) |
170
+
171
+ #### Returns[​](#returns-7 "Direct link to Returns")
172
+
173
+ `MaybePromise`<`void` | `FacetOf`<`TTable`, `"insert"`>>
@@ -15,6 +15,34 @@ Target agent id. Defaults to the eval's parent `server/agents/<id>` dir.
15
15
 
16
16
  ***
17
17
 
18
+ ### dataset?[​](#dataset "Direct link to dataset?")
19
+
20
+ ```ts
21
+ optional dataset: {
22
+ limit?: number;
23
+ table: string;
24
+ };
25
+
26
+ ```
27
+
28
+ Run this eval once per row of a Databricks managed evaluation dataset (a Unity Catalog `catalog.schema.table` with `inputs`/`expectations` columns). Each row is bound to `t.input`/`t.expected`. Requires the runner to have a workspace client + warehouse (`--warehouse-id`). Omit for a single-run eval.
29
+
30
+ #### limit?[​](#limit "Direct link to limit?")
31
+
32
+ ```ts
33
+ optional limit: number;
34
+
35
+ ```
36
+
37
+ #### table[​](#table "Direct link to table")
38
+
39
+ ```ts
40
+ table: string;
41
+
42
+ ```
43
+
44
+ ***
45
+
18
46
  ### description?[​](#description "Direct link to description?")
19
47
 
20
48
  ```ts
@@ -4,6 +4,21 @@ Abstraction over how the agent is driven. The HTTP driver posts to a running app
4
4
 
5
5
  ## Methods[​](#methods "Direct link to Methods")
6
6
 
7
+ ### reset()?[​](#reset "Direct link to reset()?")
8
+
9
+ ```ts
10
+ optional reset(): void;
11
+
12
+ ```
13
+
14
+ Drop the current conversation so the next `send` starts a fresh thread. Optional: drivers without a session concept omit it.
15
+
16
+ #### Returns[​](#returns "Direct link to Returns")
17
+
18
+ `void`
19
+
20
+ ***
21
+
7
22
  ### send()[​](#send "Direct link to send()")
8
23
 
9
24
  ```ts
@@ -17,6 +32,6 @@ send(message: string): Promise<DriveResult>;
17
32
  | --------- | -------- |
18
33
  | `message` | `string` |
19
34
 
20
- #### Returns[​](#returns "Direct link to Returns")
35
+ #### Returns[​](#returns-1 "Direct link to Returns")
21
36
 
22
37
  `Promise`<[`DriveResult`](./docs/api/appkit/Interface.DriveResult.md)>
@@ -0,0 +1,12 @@
1
+ # Interface: HookApp
2
+
3
+ The only capability a hook receives: entities bound to its transaction.
4
+
5
+ ## Properties[​](#properties "Direct link to Properties")
6
+
7
+ ### database[​](#database "Direct link to database")
8
+
9
+ ```ts
10
+ readonly database: TransactionClient;
11
+
12
+ ```
@@ -0,0 +1,21 @@
1
+ # Interface: HookContext
2
+
3
+ Which entity is being mutated, and the surface a hook may write through.
4
+
5
+ ## Properties[​](#properties "Direct link to Properties")
6
+
7
+ ### app[​](#app "Direct link to app")
8
+
9
+ ```ts
10
+ readonly app: HookApp;
11
+
12
+ ```
13
+
14
+ ***
15
+
16
+ ### entity[​](#entity "Direct link to entity")
17
+
18
+ ```ts
19
+ readonly entity: string;
20
+
21
+ ```
@@ -0,0 +1,34 @@
1
+ # Interface: ReadEvalDatasetOptions
2
+
3
+ ## Properties[​](#properties "Direct link to Properties")
4
+
5
+ ### limit?[​](#limit "Direct link to limit?")
6
+
7
+ ```ts
8
+ optional limit: number;
9
+
10
+ ```
11
+
12
+ Optional row cap.
13
+
14
+ ***
15
+
16
+ ### table[​](#table "Direct link to table")
17
+
18
+ ```ts
19
+ table: string;
20
+
21
+ ```
22
+
23
+ Fully-qualified UC table: `catalog.schema.table`.
24
+
25
+ ***
26
+
27
+ ### warehouseId[​](#warehouseid "Direct link to warehouseId")
28
+
29
+ ```ts
30
+ warehouseId: string;
31
+
32
+ ```
33
+
34
+ SQL warehouse id to run the read against.
@@ -0,0 +1,21 @@
1
+ # Interface: ReadSerializerContext
2
+
3
+ Which entity and generated operation produced the row being shaped.
4
+
5
+ ## Properties[​](#properties "Direct link to Properties")
6
+
7
+ ### entity[​](#entity "Direct link to entity")
8
+
9
+ ```ts
10
+ readonly entity: string;
11
+
12
+ ```
13
+
14
+ ***
15
+
16
+ ### operation[​](#operation "Direct link to operation")
17
+
18
+ ```ts
19
+ readonly operation: "detail" | "list";
20
+
21
+ ```
@@ -24,6 +24,17 @@ Stable id for the eval (e.g. its file path relative to the evals dir).
24
24
 
25
25
  ***
26
26
 
27
+ ### row?[​](#row "Direct link to row?")
28
+
29
+ ```ts
30
+ optional row: DatasetRow;
31
+
32
+ ```
33
+
34
+ Dataset row bound to `t.input`/`t.expected` for dataset-driven evals.
35
+
36
+ ***
37
+
27
38
  ### strict?[​](#strict "Direct link to strict?")
28
39
 
29
40
  ```ts
@@ -190,3 +190,25 @@ optional timeoutMs: number;
190
190
  ```
191
191
 
192
192
  Per-turn wall-clock timeout (ms) before a turn is failed. Defaults to 120s.
193
+
194
+ ***
195
+
196
+ ### warehouseId?[​](#warehouseid "Direct link to warehouseId?")
197
+
198
+ ```ts
199
+ optional warehouseId: string;
200
+
201
+ ```
202
+
203
+ SQL warehouse id used to read managed evaluation datasets.
204
+
205
+ ***
206
+
207
+ ### workspaceClient?[​](#workspaceclient "Direct link to workspaceClient?")
208
+
209
+ ```ts
210
+ optional workspaceClient: WorkspaceClient;
211
+
212
+ ```
213
+
214
+ Workspace client used to read managed evaluation datasets (for evals that declare `dataset`). Required alongside [warehouseId](#warehouseid) for those evals.