@databricks/appkit 0.71.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 (191) hide show
  1. package/CLAUDE.md +63 -0
  2. package/NOTICE.md +3 -2
  3. package/dist/appkit/package.js +1 -1
  4. package/dist/beta.d.ts +18 -3
  5. package/dist/beta.js +14 -1
  6. package/dist/cli/commands/agent/eval.js +120 -0
  7. package/dist/cli/commands/agent/eval.js.map +1 -0
  8. package/dist/cli/commands/agent/index.js +18 -0
  9. package/dist/cli/commands/agent/index.js.map +1 -0
  10. package/dist/cli/index.js +2 -0
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/connectors/index.js +2 -0
  13. package/dist/connectors/mlflow/auth.d.ts +28 -0
  14. package/dist/connectors/mlflow/auth.d.ts.map +1 -0
  15. package/dist/connectors/mlflow/auth.js +70 -0
  16. package/dist/connectors/mlflow/auth.js.map +1 -0
  17. package/dist/connectors/mlflow/client.d.ts +51 -0
  18. package/dist/connectors/mlflow/client.d.ts.map +1 -0
  19. package/dist/connectors/mlflow/client.js +93 -0
  20. package/dist/connectors/mlflow/client.js.map +1 -0
  21. package/dist/connectors/mlflow/index.d.ts +2 -0
  22. package/dist/database/errors.js +15 -5
  23. package/dist/database/errors.js.map +1 -1
  24. package/dist/database/runtime/data-path.d.ts +7 -0
  25. package/dist/database/runtime/data-path.d.ts.map +1 -0
  26. package/dist/database/runtime/data-path.js.map +1 -1
  27. package/dist/database/runtime/engine/drizzle-data-path.js +7 -5
  28. package/dist/database/runtime/engine/drizzle-data-path.js.map +1 -1
  29. package/dist/database/schema-builder/define-schema.d.ts +1 -1
  30. package/dist/database/schema-builder/define-schema.js +1 -1
  31. package/dist/database/schema-builder/define-schema.js.map +1 -1
  32. package/dist/errors/database-validation.d.ts +23 -0
  33. package/dist/errors/database-validation.d.ts.map +1 -0
  34. package/dist/errors/database-validation.js +24 -0
  35. package/dist/errors/database-validation.js.map +1 -0
  36. package/dist/errors/index.js +1 -0
  37. package/dist/evals/dataset.d.ts +36 -0
  38. package/dist/evals/dataset.d.ts.map +1 -0
  39. package/dist/evals/dataset.js +36 -0
  40. package/dist/evals/dataset.js.map +1 -0
  41. package/dist/evals/define-eval.d.ts +26 -0
  42. package/dist/evals/define-eval.d.ts.map +1 -0
  43. package/dist/evals/define-eval.js +28 -0
  44. package/dist/evals/define-eval.js.map +1 -0
  45. package/dist/evals/discover.d.ts +20 -0
  46. package/dist/evals/discover.d.ts.map +1 -0
  47. package/dist/evals/discover.js +49 -0
  48. package/dist/evals/discover.js.map +1 -0
  49. package/dist/evals/http-driver.d.ts +33 -0
  50. package/dist/evals/http-driver.d.ts.map +1 -0
  51. package/dist/evals/http-driver.js +123 -0
  52. package/dist/evals/http-driver.js.map +1 -0
  53. package/dist/evals/index.d.ts +14 -0
  54. package/dist/evals/index.js +14 -0
  55. package/dist/evals/judge.d.ts +27 -0
  56. package/dist/evals/judge.d.ts.map +1 -0
  57. package/dist/evals/judge.js +77 -0
  58. package/dist/evals/judge.js.map +1 -0
  59. package/dist/evals/matchers.d.ts +12 -0
  60. package/dist/evals/matchers.d.ts.map +1 -0
  61. package/dist/evals/matchers.js +26 -0
  62. package/dist/evals/matchers.js.map +1 -0
  63. package/dist/evals/mlflow-report.d.ts +37 -0
  64. package/dist/evals/mlflow-report.d.ts.map +1 -0
  65. package/dist/evals/mlflow-report.js +161 -0
  66. package/dist/evals/mlflow-report.js.map +1 -0
  67. package/dist/evals/mlflow-run.d.ts +13 -0
  68. package/dist/evals/mlflow-run.d.ts.map +1 -0
  69. package/dist/evals/mlflow-run.js +101 -0
  70. package/dist/evals/mlflow-run.js.map +1 -0
  71. package/dist/evals/pool.js +24 -0
  72. package/dist/evals/pool.js.map +1 -0
  73. package/dist/evals/report.d.ts +25 -0
  74. package/dist/evals/report.d.ts.map +1 -0
  75. package/dist/evals/report.js +57 -0
  76. package/dist/evals/report.js.map +1 -0
  77. package/dist/evals/run-eval.d.ts +23 -0
  78. package/dist/evals/run-eval.d.ts.map +1 -0
  79. package/dist/evals/run-eval.js +152 -0
  80. package/dist/evals/run-eval.js.map +1 -0
  81. package/dist/evals/run-evals.d.ts +94 -0
  82. package/dist/evals/run-evals.d.ts.map +1 -0
  83. package/dist/evals/run-evals.js +257 -0
  84. package/dist/evals/run-evals.js.map +1 -0
  85. package/dist/evals/types.d.ts +163 -0
  86. package/dist/evals/types.d.ts.map +1 -0
  87. package/dist/index.d.ts +2 -1
  88. package/dist/index.js +2 -1
  89. package/dist/plugin/plugin.d.ts.map +1 -1
  90. package/dist/plugin/plugin.js +1 -1
  91. package/dist/plugin/plugin.js.map +1 -1
  92. package/dist/plugins/agents/agents.js +1 -1
  93. package/dist/plugins/database/crud/contract.js +17 -8
  94. package/dist/plugins/database/crud/contract.js.map +1 -1
  95. package/dist/plugins/database/crud/exposure.js +63 -22
  96. package/dist/plugins/database/crud/exposure.js.map +1 -1
  97. package/dist/plugins/database/crud/request.js +50 -0
  98. package/dist/plugins/database/crud/request.js.map +1 -0
  99. package/dist/plugins/database/crud/response.js +77 -0
  100. package/dist/plugins/database/crud/response.js.map +1 -0
  101. package/dist/plugins/database/crud/routes.js +71 -52
  102. package/dist/plugins/database/crud/routes.js.map +1 -1
  103. package/dist/plugins/database/database.d.ts +6 -4
  104. package/dist/plugins/database/database.d.ts.map +1 -1
  105. package/dist/plugins/database/database.js +46 -16
  106. package/dist/plugins/database/database.js.map +1 -1
  107. package/dist/plugins/database/defaults.js +5 -1
  108. package/dist/plugins/database/defaults.js.map +1 -1
  109. package/dist/plugins/database/entity-client.js +143 -10
  110. package/dist/plugins/database/entity-client.js.map +1 -1
  111. package/dist/plugins/database/entity-types.d.ts +1 -1
  112. package/dist/plugins/database/hooks.d.ts +38 -0
  113. package/dist/plugins/database/hooks.d.ts.map +1 -0
  114. package/dist/plugins/database/index.d.ts +3 -2
  115. package/dist/plugins/database/lifecycle.js +67 -28
  116. package/dist/plugins/database/lifecycle.js.map +1 -1
  117. package/dist/plugins/database/scope.js +58 -0
  118. package/dist/plugins/database/scope.js.map +1 -0
  119. package/dist/plugins/database/types.d.ts +40 -12
  120. package/dist/plugins/database/types.d.ts.map +1 -1
  121. package/docs/api/appkit/Class.AppKitError.md +1 -0
  122. package/docs/api/appkit/Class.DatabaseValidationError.md +191 -0
  123. package/docs/api/appkit/Class.MlflowClient.md +103 -0
  124. package/docs/api/appkit/Function.buildAssessments.md +16 -0
  125. package/docs/api/appkit/Function.configureJudge.md +18 -0
  126. package/docs/api/appkit/Function.createHttpDriver.md +18 -0
  127. package/docs/api/appkit/Function.defineEval.md +35 -0
  128. package/docs/api/appkit/Function.defineSchema.md +1 -1
  129. package/docs/api/appkit/Function.discoverEvalFiles.md +18 -0
  130. package/docs/api/appkit/Function.equals.md +18 -0
  131. package/docs/api/appkit/Function.evalGlyph.md +18 -0
  132. package/docs/api/appkit/Function.formatEvalDetail.md +18 -0
  133. package/docs/api/appkit/Function.formatEvalHeadline.md +18 -0
  134. package/docs/api/appkit/Function.formatEvalResults.md +18 -0
  135. package/docs/api/appkit/Function.formatSummaryLine.md +18 -0
  136. package/docs/api/appkit/Function.includes.md +18 -0
  137. package/docs/api/appkit/Function.isJudgeConfigured.md +10 -0
  138. package/docs/api/appkit/Function.matches.md +18 -0
  139. package/docs/api/appkit/Function.normalizeHost.md +18 -0
  140. package/docs/api/appkit/Function.readEvalDataset.md +21 -0
  141. package/docs/api/appkit/Function.reportToMlflow.md +23 -0
  142. package/docs/api/appkit/Function.resolveDatabricksAuth.md +16 -0
  143. package/docs/api/appkit/Function.resolveWorkspaceClient.md +18 -0
  144. package/docs/api/appkit/Function.runEval.md +19 -0
  145. package/docs/api/appkit/Function.runEvalsInDir.md +18 -0
  146. package/docs/api/appkit/Function.summarize.md +16 -0
  147. package/docs/api/appkit/Interface.AssertionHandle.md +54 -0
  148. package/docs/api/appkit/Interface.AssertionResult.md +48 -0
  149. package/docs/api/appkit/Interface.Assessment.md +83 -0
  150. package/docs/api/appkit/Interface.CustomJudgeSpec.md +30 -0
  151. package/docs/api/appkit/Interface.DatabaseValidationIssue.md +21 -0
  152. package/docs/api/appkit/Interface.DatabricksAuth.md +21 -0
  153. package/docs/api/appkit/Interface.DatasetRow.md +21 -0
  154. package/docs/api/appkit/Interface.DiscoveredEval.md +36 -0
  155. package/docs/api/appkit/Interface.DriveResult.md +58 -0
  156. package/docs/api/appkit/Interface.EntityMutationHooks.md +173 -0
  157. package/docs/api/appkit/Interface.EvalDefinition.md +74 -0
  158. package/docs/api/appkit/Interface.EvalDriver.md +37 -0
  159. package/docs/api/appkit/Interface.EvalResult.md +83 -0
  160. package/docs/api/appkit/Interface.EvalRunSummary.md +46 -0
  161. package/docs/api/appkit/Interface.EvalSummary.md +48 -0
  162. package/docs/api/appkit/Interface.HookApp.md +12 -0
  163. package/docs/api/appkit/Interface.HookContext.md +21 -0
  164. package/docs/api/appkit/Interface.HttpDriverOptions.md +67 -0
  165. package/docs/api/appkit/Interface.JudgeConfig.md +34 -0
  166. package/docs/api/appkit/Interface.JudgeScore.md +21 -0
  167. package/docs/api/appkit/Interface.MatchResult.md +34 -0
  168. package/docs/api/appkit/Interface.PostResult.md +30 -0
  169. package/docs/api/appkit/Interface.ReadEvalDatasetOptions.md +34 -0
  170. package/docs/api/appkit/Interface.ReadSerializerContext.md +21 -0
  171. package/docs/api/appkit/Interface.ReportOutcome.md +53 -0
  172. package/docs/api/appkit/Interface.ResolveDatabricksAuthOptions.md +34 -0
  173. package/docs/api/appkit/Interface.RunEvalOptions.md +45 -0
  174. package/docs/api/appkit/Interface.RunEvalsOptions.md +214 -0
  175. package/docs/api/appkit/Interface.TestContext.md +245 -0
  176. package/docs/api/appkit/TypeAlias.DatabaseApiConfig.md +53 -0
  177. package/docs/api/appkit/TypeAlias.DatabaseApiWriteOperation.md +8 -0
  178. package/docs/api/appkit/TypeAlias.DatabaseApiWritesConfig.md +49 -0
  179. package/docs/api/appkit/TypeAlias.DatabaseExports.md +3 -3
  180. package/docs/api/appkit/TypeAlias.EntityHooks.md +25 -0
  181. package/docs/api/appkit/TypeAlias.EvalProgress.md +26 -0
  182. package/docs/api/appkit/TypeAlias.IDatabaseConfig.md +16 -5
  183. package/docs/api/appkit/TypeAlias.Matcher.md +18 -0
  184. package/docs/api/appkit/TypeAlias.ReadSerializer.md +19 -0
  185. package/docs/api/appkit/TypeAlias.Severity.md +8 -0
  186. package/docs/api/appkit/TypeAlias.TransactionClient.md +19 -0
  187. package/docs/api/appkit.md +157 -95
  188. package/docs/plugins/database.md +144 -0
  189. package/llms.txt +63 -0
  190. package/package.json +3 -2
  191. package/sbom.cdx.json +1 -1
@@ -0,0 +1,144 @@
1
+ # Database plugin
2
+
3
+ Beta plugin
4
+
5
+ This plugin is currently **beta**. APIs may change between minor releases. Import from `@databricks/appkit/beta`. See [Plugin Stability Tiers](./docs/plugins/stability.md).
6
+
7
+ Declare a schema and use `database({ schema })` to get generated HTTP CRUD and a server-side database client. CRUD is enabled for every declared table by default. Use `api` to restrict the generated routes without disabling server-side access.
8
+
9
+ Shared application access
10
+
11
+ This plugin uses the app's service principal in deployed Databricks Apps. It does not support OBO and does not apply per-user or per-row authorization. Every caller who can reach the generated API can perform every enabled operation on every exposed row, including delete.
12
+
13
+ Restrict access to the app and grant its service principal only the database permissions it needs. If users need different permissions or row ownership checks, disable the relevant generated routes and implement authorization in custom server routes. App admission alone does not provide row-level isolation.
14
+
15
+ ## Basic usage[​](#basic-usage "Direct link to Basic usage")
16
+
17
+ Configure a Lakebase `postgres` resource and its connection environment variables as described in [Lakebase configuration](./docs/plugins/lakebase.md#environment-variables). The database tables must already exist and match the declared schema. This plugin checks connectivity during setup; it does not create or migrate tables.
18
+
19
+ ```ts
20
+ import { createApp, server } from "@databricks/appkit";
21
+ import { database, defineSchema, id, text } from "@databricks/appkit/beta";
22
+
23
+ const schema = defineSchema((builder) => ({
24
+ notes: builder.table("notes", {
25
+ id: id(),
26
+ body: text().notNull(),
27
+ }),
28
+ }));
29
+
30
+ const AppKit = await createApp({
31
+ plugins: [server(), database({ schema })],
32
+ });
33
+
34
+ ```
35
+
36
+ With the server plugin enabled, this registers:
37
+
38
+ | Method | Path | Operation |
39
+ | ------ | ------------------------- | ------------ |
40
+ | GET | `/api/database/notes` | List rows |
41
+ | GET | `/api/database/notes/:id` | Find one row |
42
+ | POST | `/api/database/notes` | Create a row |
43
+ | PATCH | `/api/database/notes/:id` | Update a row |
44
+ | DELETE | `/api/database/notes/:id` | Delete a row |
45
+
46
+ A table without a public primary key supports list and create only. `upsert` is available to server code but has no generated HTTP route.
47
+
48
+ ## Restrict the generated API[​](#restrict-the-generated-api "Direct link to Restrict the generated API")
49
+
50
+ Omitting `api`, or setting it to `true` or `{}`, enables full CRUD. Restrictions are optional. There is no separate write opt-in.
51
+
52
+ ```ts
53
+ // No generated HTTP routes. The server-side client still works.
54
+ database({ schema, api: false });
55
+
56
+ // Read-only routes for every table.
57
+ database({ schema, api: { writes: false } });
58
+
59
+ // Full CRUD for selected tables only.
60
+ database({ schema, api: { tables: ["notes"] } });
61
+
62
+ // Allow reads, create, and update, but not delete.
63
+ database({
64
+ schema,
65
+ api: { writes: { operations: ["create", "update"] } },
66
+ });
67
+
68
+ // Read every table, but allow writes only to notes.
69
+ database({
70
+ schema,
71
+ api: { writes: { tables: ["notes"] } },
72
+ });
73
+
74
+ ```
75
+
76
+ | Option | Default | Effect |
77
+ | ----------------------- | ---------------------------- | ----------------------------------------- |
78
+ | `api` | `true` | `false` disables all generated routes |
79
+ | `api.tables` | All declared tables | Limits which tables have routes |
80
+ | `api.writes` | `true` | `false` keeps only read routes |
81
+ | `api.writes.tables` | All exposed tables | Limits which exposed tables accept writes |
82
+ | `api.writes.operations` | `create`, `update`, `delete` | Limits which writes are enabled |
83
+
84
+ `api.tables: []` disables all generated routes. An empty write-table or write-operation list keeps reads and disables writes. Tables omitted from `api.tables` also cannot be included through relations on exposed tables. These restrictions apply to HTTP only, not to the server-side client or hooks.
85
+
86
+ An omitted restriction uses its default. A malformed restriction fails setup. For example, `{ api: { write: false } }` is an error, not permission to generate all writes. Unknown tables, duplicate names, and unsupported operations also fail setup before the plugin creates a connection pool.
87
+
88
+ Replace the former `crudRoutes` option with `api`. The old name is rejected at runtime so an old opt-out cannot silently enable the API. To preserve read-only behavior, specify `api: { writes: false }`.
89
+
90
+ ### Table names and setup errors[​](#table-names-and-setup-errors "Direct link to Table names and setup errors")
91
+
92
+ Generated route names must:
93
+
94
+ * Start with an ASCII letter.
95
+ * Contain only ASCII letters, digits, underscores, or hyphens.
96
+ * Be at most 64 characters long.
97
+ * Be unique without regard to case, because Express routes are case-insensitive.
98
+
99
+ The default API validates every declared table. A table such as `_events` fails setup instead of being silently omitted. The error names the table and suggests renaming it, excluding it with `api.tables`, or disabling routes with `api: false`. An excluded table remains available to server code.
100
+
101
+ Configuration errors include actionable details in the server-side error message. Client-facing messages do not expose those details.
102
+
103
+ ## Validation and private columns[​](#validation-and-private-columns "Direct link to Validation and private columns")
104
+
105
+ The generated API validates request bodies and rejects unknown or read-only fields. Columns marked `.private()` are not available through generated routes. Database-generated primary keys, including `uuid().primaryKey().defaultRandom()`, cannot be supplied by HTTP callers. A natural primary key may be supplied on create, but primary keys cannot be updated through HTTP.
106
+
107
+ Validation is not authorization. A valid request can still read or change any exposed row. Use custom authorized routes when that is not the desired access model.
108
+
109
+ ## Mutation hooks[​](#mutation-hooks "Direct link to Mutation hooks")
110
+
111
+ A table can declare `beforeCreate`, `afterCreate`, `beforeUpdate`, `afterUpdate`, `beforeUpsert`, `afterUpsert`, `beforeDelete`, and `afterDelete`. Hooks and the mutation run in one database transaction. Related writes through `ctx.app.database` join that same transaction. This does not make writes through other plugins or external services transactional.
112
+
113
+ ```ts
114
+ import { DatabaseValidationError } from "@databricks/appkit";
115
+
116
+ database({
117
+ schema,
118
+ hooks: {
119
+ notes: {
120
+ beforeCreate(values) {
121
+ if (typeof values.body === "string" && values.body.length > 5_000) {
122
+ throw new DatabaseValidationError("Note too long", [
123
+ { path: ["body"], message: "Must be at most 5000 characters" },
124
+ ]);
125
+ }
126
+ },
127
+ },
128
+ },
129
+ });
130
+
131
+ ```
132
+
133
+ A `before*` hook can return replacement values, which are validated again before persistence. `DatabaseValidationError` produces HTTP 422 with issues limited to public columns. Other hook failures return an opaque server error.
134
+
135
+ Keep hooks short and await all database work. A transaction has a 30-second callback deadline, a shared budget of 100 database operations, and a maximum mutation nesting depth of 8. Repeating the same entity and mutation operation in a nested hook chain is rejected. PostgreSQL also enforces a 30-second `statement_timeout` and a 30-second `idle_in_transaction_session_timeout`.
136
+
137
+ The callback deadline does not cancel arbitrary JavaScript, HTTP requests, or other external side effects. Avoid putting external side effects in hooks that need database rollback semantics.
138
+
139
+ ## API reference[​](#api-reference "Direct link to API reference")
140
+
141
+ * [`database`](./docs/api/appkit/Function.database.md)
142
+ * [`IDatabaseConfig`](./docs/api/appkit/TypeAlias.IDatabaseConfig.md)
143
+ * [`DatabaseApiConfig`](./docs/api/appkit/TypeAlias.DatabaseApiConfig.md)
144
+ * [`EntityHooks`](./docs/api/appkit/TypeAlias.EntityHooks.md)
package/llms.txt CHANGED
@@ -48,6 +48,7 @@ npx @databricks/appkit docs <query>
48
48
  - [Analytics plugin](./docs/plugins/analytics.md): Enables SQL query execution against Databricks SQL Warehouses.
49
49
  - [Caching](./docs/plugins/caching.md): AppKit provides both global and plugin-level caching capabilities.
50
50
  - [Creating custom plugins](./docs/plugins/custom-plugins.md): If you need custom API routes or background logic, implement an AppKit plugin. The fastest way is to use the CLI:
51
+ - [Database plugin](./docs/plugins/database.md): This plugin is currently beta. APIs may change between minor releases. Import from @databricks/appkit/beta. See Plugin Stability Tiers.
51
52
  - [Execution context](./docs/plugins/execution-context.md): AppKit manages Databricks authentication via two contexts:
52
53
  - [Files plugin](./docs/plugins/files.md): File operations against Databricks Unity Catalog Volumes. Supports listing, reading, downloading, uploading, deleting, and previewing files with built-in caching, retry, and timeout handling via the execution interceptor pipeline.
53
54
  - [Genie plugin](./docs/plugins/genie.md): Integrates Databricks AI/BI Genie spaces into your AppKit application, enabling natural language data queries via a conversational interface.
@@ -68,9 +69,11 @@ npx @databricks/appkit docs <query>
68
69
  - [Class: AuthenticationError](./docs/api/appkit/Class.AuthenticationError.md): Error thrown when authentication fails.
69
70
  - [Class: ConfigurationError](./docs/api/appkit/Class.ConfigurationError.md): Error thrown when configuration is missing or invalid.
70
71
  - [Class: ConnectionError](./docs/api/appkit/Class.ConnectionError.md): Error thrown when a connection or network operation fails.
72
+ - [Class: DatabaseValidationError](./docs/api/appkit/Class.DatabaseValidationError.md): Deliberate validation failure raised by a database mutation hook. Generated
71
73
  - [Class: DatabricksAdapter](./docs/api/appkit/Class.DatabricksAdapter.md): Adapter that talks directly to Databricks Model Serving /invocations endpoint.
72
74
  - [Class: ExecutionError](./docs/api/appkit/Class.ExecutionError.md): Error thrown when an operation execution fails.
73
75
  - [Class: InitializationError](./docs/api/appkit/Class.InitializationError.md): Error thrown when a service or component is not properly initialized.
76
+ - [Class: MlflowClient](./docs/api/appkit/Class.MlflowClient.md): A thin client over the Databricks workspace REST API, owning the host + bearer
74
77
  - [Abstract Class: Plugin<TConfig>](./docs/api/appkit/Class.Plugin.md): Base abstract class for creating AppKit plugins.
75
78
  - [Class: PolicyDeniedError](./docs/api/appkit/Class.PolicyDeniedError.md): Thrown when a policy denies an action.
76
79
  - [Class: ResourceRegistry](./docs/api/appkit/Class.ResourceRegistry.md): Central registry for tracking plugin resource requirements.
@@ -86,20 +89,31 @@ npx @databricks/appkit docs <query>
86
89
  - [Function: bigid()](./docs/api/appkit/Function.bigid.md): Returns
87
90
  - [Function: bigint()](./docs/api/appkit/Function.bigint.md): Returns
88
91
  - [Function: boolean()](./docs/api/appkit/Function.boolean.md): Returns
92
+ - [Function: buildAssessments()](./docs/api/appkit/Function.buildAssessments.md): Parameters
93
+ - [Function: configureJudge()](./docs/api/appkit/Function.configureJudge.md): Configure the judge once. Sets the OpenAI-compatible client env autoevals
89
94
  - [Function: createAgent()](./docs/api/appkit/Function.createAgent.md): Pure factory for agent definitions: cycle-detects the sub-agent graph and
90
95
  - [Function: createApp()](./docs/api/appkit/Function.createApp.md): Bootstraps AppKit with the provided configuration.
96
+ - [Function: createHttpDriver()](./docs/api/appkit/Function.createHttpDriver.md): Drives an agent by POSTing to a running app's chat endpoint and parsing the
91
97
  - [Function: createLakebasePool()](./docs/api/appkit/Function.createLakebasePool.md): Create a Lakebase pool with appkit's logger integration.
92
98
  - [Function: createLakebasePoolManager()](./docs/api/appkit/Function.createLakebasePoolManager.md): Create a pool manager that maintains per-key Lakebase connection pools.
93
99
  - [Function: createWorkspaceClient()](./docs/api/appkit/Function.createWorkspaceClient.md): Construct an AppKit workspace client.
94
100
  - [Function: database()](./docs/api/appkit/Function.database.md): Create a typed database plugin registration for a finalized schema.
101
+ - [Function: defineEval()](./docs/api/appkit/Function.defineEval.md): Define an agent eval. Default-export the result from a
95
102
  - [Function: defineManifest()](./docs/api/appkit/Function.defineManifest.md): Validates a raw manifest (typically a manifest.json import) against the
96
103
  - [Function: defineSchema()](./docs/api/appkit/Function.defineSchema.md): Compile one declared schema. The returned type keeps the table names the
97
104
  - [Function: defineTool()](./docs/api/appkit/Function.defineTool.md): Defines a single tool entry for a plugin's internal registry.
105
+ - [Function: discoverEvalFiles()](./docs/api/appkit/Function.discoverEvalFiles.md): Discover evals under /server/agents//evals/ — co-located
98
106
  - [Function: enumColumn()](./docs/api/appkit/Function.enumColumn.md): Parameters
107
+ - [Function: equals()](./docs/api/appkit/Function.equals.md): Passes when the value equals expected exactly.
108
+ - [Function: evalGlyph()](./docs/api/appkit/Function.evalGlyph.md): Status glyph for a single eval result.
99
109
  - [Function: executeFromRegistry()](./docs/api/appkit/Function.executeFromRegistry.md): Validates tool-call arguments against the entry's schema and invokes its
100
110
  - [Function: extractServingEndpoints()](./docs/api/appkit/Function.extractServingEndpoints.md): Extract serving endpoint config from a server file by AST-parsing it.
101
111
  - [Function: findServerFile()](./docs/api/appkit/Function.findServerFile.md): Find the server entry file by checking candidate paths in order.
102
112
  - [Function: fk()](./docs/api/appkit/Function.fk.md): Declare foreign-key to another column.
113
+ - [Function: formatEvalDetail()](./docs/api/appkit/Function.formatEvalDetail.md): Indented detail lines for a failing eval (error + failing assertions).
114
+ - [Function: formatEvalHeadline()](./docs/api/appkit/Function.formatEvalHeadline.md): The one-line header for a single eval result (no failure detail).
115
+ - [Function: formatEvalResults()](./docs/api/appkit/Function.formatEvalResults.md): Render all results as a human-readable console report (non-streaming).
116
+ - [Function: formatSummaryLine()](./docs/api/appkit/Function.formatSummaryLine.md): The final PASS/FAIL summary line.
103
117
  - [Function: fromSupervisorApi()](./docs/api/appkit/Function.fromSupervisorApi.md): Creates an AgentAdapter backed by the Databricks AI Gateway
104
118
  - [Function: functionToolToDefinition()](./docs/api/appkit/Function.functionToolToDefinition.md): Parameters
105
119
  - [Function: generateDatabaseCredential()](./docs/api/appkit/Function.generateDatabaseCredential.md): Generate OAuth credentials for Postgres database connection using the proper Postgres API.
@@ -111,19 +125,30 @@ npx @databricks/appkit docs <query>
111
125
  - [Function: getUsernameWithApiLookup()](./docs/api/appkit/Function.getUsernameWithApiLookup.md): Resolves the PostgreSQL username for a Lakebase connection.
112
126
  - [Function: getWorkspaceClient()](./docs/api/appkit/Function.getWorkspaceClient.md): Get workspace client from config or SDK default auth chain
113
127
  - [Function: id()](./docs/api/appkit/Function.id.md): Returns
128
+ - [Function: includes()](./docs/api/appkit/Function.includes.md): Passes when the value contains substring.
114
129
  - [Function: integer()](./docs/api/appkit/Function.integer.md): Returns
115
130
  - [Function: isFunctionTool()](./docs/api/appkit/Function.isFunctionTool.md): Parameters
116
131
  - [Function: isHostedTool()](./docs/api/appkit/Function.isHostedTool.md): Parameters
132
+ - [Function: isJudgeConfigured()](./docs/api/appkit/Function.isJudgeConfigured.md): Returns
117
133
  - [Function: isSQLTypeMarker()](./docs/api/appkit/Function.isSQLTypeMarker.md): Type guard to check if a value is a SQL type marker
118
134
  - [Function: isSupervisorTool()](./docs/api/appkit/Function.isSupervisorTool.md): Type guard for HostedSupervisorTool. Used by the agents plugin
119
135
  - [Function: isToolkitEntry()](./docs/api/appkit/Function.isToolkitEntry.md): Type guard for ToolkitEntry — used by the agents plugin to differentiate
120
136
  - [Function: jsonb()](./docs/api/appkit/Function.jsonb.md): Returns
121
137
  - [Function: loadAgentFromFile()](./docs/api/appkit/Function.loadAgentFromFile.md): Loads a single markdown agent file and resolves its frontmatter against
122
138
  - [Function: loadAgentsFromDir()](./docs/api/appkit/Function.loadAgentsFromDir.md): Scans a directory for one subdirectory per agent, each containing
139
+ - [Function: matches()](./docs/api/appkit/Function.matches.md): Passes when the value matches pattern.
123
140
  - [Function: mcpServer()](./docs/api/appkit/Function.mcpServer.md): Factory for declaring a custom MCP server tool.
141
+ - [Function: normalizeHost()](./docs/api/appkit/Function.normalizeHost.md): Ensure the host has a scheme (Databricks env often lacks https://).
124
142
  - [Function: parseTextToolCalls()](./docs/api/appkit/Function.parseTextToolCalls.md): Parses text-based tool calls from model output.
143
+ - [Function: readEvalDataset()](./docs/api/appkit/Function.readEvalDataset.md): Read a Databricks managed evaluation dataset (a Unity Catalog table with
144
+ - [Function: reportToMlflow()](./docs/api/appkit/Function.reportToMlflow.md): Write one pass/fail assessment per eval result to the Databricks MLflow REST
145
+ - [Function: resolveDatabricksAuth()](./docs/api/appkit/Function.resolveDatabricksAuth.md): Parameters
125
146
  - [Function: resolveHostedTools()](./docs/api/appkit/Function.resolveHostedTools.md): Parameters
147
+ - [Function: resolveWorkspaceClient()](./docs/api/appkit/Function.resolveWorkspaceClient.md): Construct a Databricks WorkspaceClient for the eval runner — the object the
126
148
  - [Function: runAgent()](./docs/api/appkit/Function.runAgent.md): Standalone agent execution without createApp. Resolves the adapter, binds
149
+ - [Function: runEval()](./docs/api/appkit/Function.runEval.md): Run a single eval against a driver. Never throws for assertion or agent
150
+ - [Function: runEvalsInDir()](./docs/api/appkit/Function.runEvalsInDir.md): Discover, load, and run every eval under each agent's evals/ dir, driving
151
+ - [Function: summarize()](./docs/api/appkit/Function.summarize.md): Parameters
127
152
  - [Function: text()](./docs/api/appkit/Function.text.md): Returns
128
153
  - [Function: timestamp()](./docs/api/appkit/Function.timestamp.md): Parameters
129
154
  - [Function: tool()](./docs/api/appkit/Function.tool.md): Factory for defining function tools with Zod schemas.
@@ -136,18 +161,36 @@ npx @databricks/appkit docs <query>
136
161
  - [Interface: AgentRunContext](./docs/api/appkit/Interface.AgentRunContext.md): Properties
137
162
  - [Interface: AgentsPluginConfig](./docs/api/appkit/Interface.AgentsPluginConfig.md): Base configuration interface for AppKit plugins
138
163
  - [Interface: AgentToolDefinition](./docs/api/appkit/Interface.AgentToolDefinition.md): Properties
164
+ - [Interface: AssertionHandle](./docs/api/appkit/Interface.AssertionHandle.md): Chainable handle returned by every assertion to control its severity.
165
+ - [Interface: AssertionResult](./docs/api/appkit/Interface.AssertionResult.md): A single recorded assertion outcome.
166
+ - [Interface: Assessment](./docs/api/appkit/Interface.Assessment.md): A Feedback assessment in the MLflow REST proto-JSON shape.
139
167
  - [Interface: AutoInheritToolsConfig](./docs/api/appkit/Interface.AutoInheritToolsConfig.md): Auto-inherit configuration. When enabled for a given agent origin, agents
140
168
  - [Interface: BasePluginConfig](./docs/api/appkit/Interface.BasePluginConfig.md): Base configuration interface for AppKit plugins
141
169
  - [Interface: CacheConfig](./docs/api/appkit/Interface.CacheConfig.md): Configuration for the CacheInterceptor. Controls TTL, size limits, storage backend, and probabilistic cleanup.
170
+ - [Interface: CustomJudgeSpec](./docs/api/appkit/Interface.CustomJudgeSpec.md): A custom LLM-judge definition: a prompt template and choice→score mapping.
142
171
  - [Interface: DatabaseCredential](./docs/api/appkit/Interface.DatabaseCredential.md): Database credentials with OAuth token for Postgres connection
143
172
  - [Interface: DatabaseRegistry](./docs/api/appkit/Interface.DatabaseRegistry.md): CANONICAL augmentation target. Empty by default; the generated database.d.ts
173
+ - [Interface: DatabaseValidationIssue](./docs/api/appkit/Interface.DatabaseValidationIssue.md): One rejected field; path names public columns, never their values.
174
+ - [Interface: DatabricksAuth](./docs/api/appkit/Interface.DatabricksAuth.md): Resolved Databricks host + bearer token for the eval runner's REST calls.
175
+ - [Interface: DatasetRow](./docs/api/appkit/Interface.DatasetRow.md): One row of a managed evaluation dataset. inputs are the kwargs passed to the
176
+ - [Interface: DiscoveredEval](./docs/api/appkit/Interface.DiscoveredEval.md): An eval file found under server/agents//evals/.
177
+ - [Interface: DriveResult](./docs/api/appkit/Interface.DriveResult.md): What a driver returns for a single t.send.
144
178
  - [Interface: EndpointConfig](./docs/api/appkit/Interface.EndpointConfig.md): Properties
179
+ - [Interface: EntityMutationHooks<TTable>](./docs/api/appkit/Interface.EntityMutationHooks.md): Mutation lifecycle for one entity. A before hook may return a replacement
180
+ - [Interface: EvalDefinition](./docs/api/appkit/Interface.EvalDefinition.md): A single eval, default-exported from a *.eval.ts file.
181
+ - [Interface: EvalDriver](./docs/api/appkit/Interface.EvalDriver.md): Abstraction over how the agent is driven. The HTTP driver posts to a running
182
+ - [Interface: EvalResult](./docs/api/appkit/Interface.EvalResult.md): The outcome of running one eval.
183
+ - [Interface: EvalRunSummary](./docs/api/appkit/Interface.EvalRunSummary.md): Properties
184
+ - [Interface: EvalSummary](./docs/api/appkit/Interface.EvalSummary.md): Properties
145
185
  - [Interface: FilePolicyUser](./docs/api/appkit/Interface.FilePolicyUser.md): Minimal user identity passed to the policy function.
146
186
  - [Interface: FileResource](./docs/api/appkit/Interface.FileResource.md): Describes the file or directory being acted upon.
147
187
  - [Interface: FunctionTool](./docs/api/appkit/Interface.FunctionTool.md): Properties
148
188
  - [Interface: GenerateDatabaseCredentialRequest](./docs/api/appkit/Interface.GenerateDatabaseCredentialRequest.md): Request parameters for generating database OAuth credentials
149
189
  - [Interface: GenerationParams](./docs/api/appkit/Interface.GenerationParams.md): Optional generation parameters forwarded to the OpenAI-compatible serving
190
+ - [Interface: HookApp](./docs/api/appkit/Interface.HookApp.md): The only capability a hook receives: entities bound to its transaction.
191
+ - [Interface: HookContext](./docs/api/appkit/Interface.HookContext.md): Which entity is being mutated, and the surface a hook may write through.
150
192
  - [Interface: HostedSupervisorTool](./docs/api/appkit/Interface.HostedSupervisorTool.md): Tagged record returned by every supervisorTools factory. The
193
+ - [Interface: HttpDriverOptions](./docs/api/appkit/Interface.HttpDriverOptions.md): Properties
151
194
  - [Interface: IAiSearchConfig](./docs/api/appkit/Interface.IAiSearchConfig.md): Base configuration interface for AppKit plugins
152
195
  - [Interface: IJobsConfig](./docs/api/appkit/Interface.IJobsConfig.md): Configuration for the Jobs plugin.
153
196
  - [Interface: IndexConfig](./docs/api/appkit/Interface.IndexConfig.md): Properties
@@ -155,22 +198,32 @@ npx @databricks/appkit docs <query>
155
198
  - [Interface: JobAPI](./docs/api/appkit/Interface.JobAPI.md): User-facing API for a single configured job.
156
199
  - [Interface: JobConfig](./docs/api/appkit/Interface.JobConfig.md): Per-job configuration options.
157
200
  - [Interface: JobsConnectorConfig](./docs/api/appkit/Interface.JobsConnectorConfig.md): Properties
201
+ - [Interface: JudgeConfig](./docs/api/appkit/Interface.JudgeConfig.md): Properties
202
+ - [Interface: JudgeScore](./docs/api/appkit/Interface.JudgeScore.md): A normalized judge result. score is 0..1.
158
203
  - [Interface: LakebasePool](./docs/api/appkit/Interface.LakebasePool.md): Subset of pg.Pool exposed by the Lakebase plugin.
159
204
  - [Interface: LakebasePoolConfig](./docs/api/appkit/Interface.LakebasePoolConfig.md): Configuration for creating a Lakebase connection pool
160
205
  - [Interface: LakebasePoolManager](./docs/api/appkit/Interface.LakebasePoolManager.md): Manages multiple Lakebase connection pools keyed by an identifier (e.g. userId).
206
+ - [Interface: MatchResult](./docs/api/appkit/Interface.MatchResult.md): Result of a deterministic matcher run against a value.
161
207
  - [Interface: McpConnectAllResult](./docs/api/appkit/Interface.McpConnectAllResult.md): Per-endpoint outcome of AppKitMcpClient.connectAll. Callers (the
162
208
  - [Interface: Message](./docs/api/appkit/Interface.Message.md): Properties
163
209
  - [Interface: PluginManifest<TName>](./docs/api/appkit/Interface.PluginManifest.md): Plugin manifest that declares metadata and resource requirements.
164
210
  - [Interface: PluginToolkitProvider](./docs/api/appkit/Interface.PluginToolkitProvider.md): Minimum shape every entry in the Plugins map must expose. Core
211
+ - [Interface: PostResult](./docs/api/appkit/Interface.PostResult.md): Structured result for a best-effort POST that must not throw.
165
212
  - [Interface: PromptContext](./docs/api/appkit/Interface.PromptContext.md): Context passed to baseSystemPrompt callbacks.
213
+ - [Interface: ReadEvalDatasetOptions](./docs/api/appkit/Interface.ReadEvalDatasetOptions.md): Properties
214
+ - [Interface: ReadSerializerContext](./docs/api/appkit/Interface.ReadSerializerContext.md): Which entity and generated operation produced the row being shaped.
166
215
  - [Interface: RegisteredAgent](./docs/api/appkit/Interface.RegisteredAgent.md): Properties
216
+ - [Interface: ReportOutcome](./docs/api/appkit/Interface.ReportOutcome.md): Properties
167
217
  - [Interface: RequestedClaims](./docs/api/appkit/Interface.RequestedClaims.md): Optional claims for fine-grained Unity Catalog table permissions
168
218
  - [Interface: RequestedResource](./docs/api/appkit/Interface.RequestedResource.md): Resource to request permissions for in Unity Catalog
169
219
  - [Interface: RerankerConfig](./docs/api/appkit/Interface.RerankerConfig.md): Properties
220
+ - [Interface: ResolveDatabricksAuthOptions](./docs/api/appkit/Interface.ResolveDatabricksAuthOptions.md): Properties
170
221
  - [Interface: ResourceEntry](./docs/api/appkit/Interface.ResourceEntry.md): Internal representation of a resource in the registry.
171
222
  - [Interface: ResourceRequirement](./docs/api/appkit/Interface.ResourceRequirement.md): Declares a resource requirement for a plugin.
172
223
  - [Interface: RunAgentInput](./docs/api/appkit/Interface.RunAgentInput.md): Properties
173
224
  - [Interface: RunAgentResult](./docs/api/appkit/Interface.RunAgentResult.md): Properties
225
+ - [Interface: RunEvalOptions](./docs/api/appkit/Interface.RunEvalOptions.md): Properties
226
+ - [Interface: RunEvalsOptions](./docs/api/appkit/Interface.RunEvalsOptions.md): Properties
174
227
  - [Interface: Schema<TTableName>](./docs/api/appkit/Interface.Schema.md): One finalized schema. TTableName keeps the declared names in the type, so
175
228
  - [Interface: SearchRequest](./docs/api/appkit/Interface.SearchRequest.md): Properties
176
229
  - [Interface: SearchResponse<T>](./docs/api/appkit/Interface.SearchResponse.md): Type Parameters
@@ -181,6 +234,7 @@ npx @databricks/appkit docs <query>
181
234
  - [Interface: SupervisorApiAdapterOptions](./docs/api/appkit/Interface.SupervisorApiAdapterOptions.md): Properties
182
235
  - [Interface: SupervisorExtension](./docs/api/appkit/Interface.SupervisorExtension.md): Shape of the value at AgentInput.extensions[SUPERVISOREXTENSIONKEY].
183
236
  - [Interface: TelemetryConfig](./docs/api/appkit/Interface.TelemetryConfig.md): OpenTelemetry configuration for AppKit applications
237
+ - [Interface: TestContext](./docs/api/appkit/Interface.TestContext.md): The t context passed to an eval's test function.
184
238
  - [Interface: Thread](./docs/api/appkit/Interface.Thread.md): Properties
185
239
  - [Interface: ThreadStore](./docs/api/appkit/Interface.ThreadStore.md): Methods
186
240
  - [Interface: ToolAnnotations](./docs/api/appkit/Interface.ToolAnnotations.md): Properties
@@ -199,7 +253,12 @@ npx @databricks/appkit docs <query>
199
253
  - [Type Alias: AgentToolsFn()](./docs/api/appkit/TypeAlias.AgentToolsFn.md): Function form of AgentDefinition.tools. Receives the typed
200
254
  - [Type Alias: BaseSystemPromptOption](./docs/api/appkit/TypeAlias.BaseSystemPromptOption.md)
201
255
  - [Type Alias: ConfigSchema](./docs/api/appkit/TypeAlias.ConfigSchema.md): Configuration schema definition for plugin config.
256
+ - [Type Alias: DatabaseApiConfig<TSchema>](./docs/api/appkit/TypeAlias.DatabaseApiConfig.md): Full generated CRUD for every declared table by default. Set false to disable
257
+ - [Type Alias: DatabaseApiWriteOperation](./docs/api/appkit/TypeAlias.DatabaseApiWriteOperation.md): Generated HTTP write operations.
258
+ - [Type Alias: DatabaseApiWritesConfig<TSchema>](./docs/api/appkit/TypeAlias.DatabaseApiWritesConfig.md): All writes by default; false keeps reads only, and an object narrows writes.
202
259
  - [Type Alias: DatabaseExports](./docs/api/appkit/TypeAlias.DatabaseExports.md): Typed database API published by the plugin.
260
+ - [Type Alias: EntityHooks<TTable>](./docs/api/appkit/TypeAlias.EntityHooks.md): Response shaping and mutation lifecycle declared for one table.
261
+ - [Type Alias: EvalProgress](./docs/api/appkit/TypeAlias.EvalProgress.md)
203
262
  - [Type Alias: ExecutionResult<T>](./docs/api/appkit/TypeAlias.ExecutionResult.md): Discriminated union for plugin execution results.
204
263
  - [Type Alias: FileAction](./docs/api/appkit/TypeAlias.FileAction.md): Every action the files plugin can perform.
205
264
  - [Type Alias: FilePolicy()](./docs/api/appkit/TypeAlias.FilePolicy.md): A policy function that decides whether user may perform action on
@@ -207,16 +266,20 @@ npx @databricks/appkit docs <query>
207
266
  - [Type Alias: IAppRouter](./docs/api/appkit/TypeAlias.IAppRouter.md): Express router type for plugin route registration
208
267
  - [Type Alias: IDatabaseConfig<TSchema>](./docs/api/appkit/TypeAlias.IDatabaseConfig.md): Configuration for one schema-bound DatabasePlugin instance.
209
268
  - [Type Alias: JobsExport()](./docs/api/appkit/TypeAlias.JobsExport.md): Public API shape of the jobs plugin.
269
+ - [Type Alias: Matcher()](./docs/api/appkit/TypeAlias.Matcher.md): A deterministic matcher: inspects a string value and returns a result.
210
270
  - [Type Alias: PluginData<T, U, N>](./docs/api/appkit/TypeAlias.PluginData.md): Tuple of plugin class, config, and name. Created by toPlugin() and passed to createApp().
211
271
  - [Type Alias: Plugins](./docs/api/appkit/TypeAlias.Plugins.md): Plugin map passed to the function form of AgentDefinition.tools.
272
+ - [Type Alias: ReadSerializer()](./docs/api/appkit/TypeAlias.ReadSerializer.md): Shape one already private-safe row before it reaches the wire. A Promise
212
273
  - [Type Alias: ResolvedToolEntry](./docs/api/appkit/TypeAlias.ResolvedToolEntry.md): Internal tool-index entry after a tool record has been resolved to a dispatchable form.
213
274
  - [Type Alias: ResourceFieldEntry](./docs/api/appkit/TypeAlias.ResourceFieldEntry.md)
214
275
  - [Type Alias: ResourcePermission](./docs/api/appkit/TypeAlias.ResourcePermission.md): Union of all possible permission levels across all resource types.
215
276
  - [Type Alias: SearchFilters](./docs/api/appkit/TypeAlias.SearchFilters.md)
216
277
  - [Type Alias: ServingFactory](./docs/api/appkit/TypeAlias.ServingFactory.md): Factory function returned by AppKit.serving.
278
+ - [Type Alias: Severity](./docs/api/appkit/TypeAlias.Severity.md): Whether an assertion fails the eval (gate) or is tracked only (soft).
217
279
  - [Type Alias: SupervisorTool](./docs/api/appkit/TypeAlias.SupervisorTool.md): Tools supported by the Databricks AI Gateway Responses API. The shapes match
218
280
  - [Type Alias: ToolRegistry](./docs/api/appkit/TypeAlias.ToolRegistry.md)
219
281
  - [Type Alias: ToPlugin()<T, U, N>](./docs/api/appkit/TypeAlias.ToPlugin.md): Factory function type returned by toPlugin(). Accepts optional config and returns a PluginData tuple.
282
+ - [Type Alias: TransactionClient](./docs/api/appkit/TypeAlias.TransactionClient.md): Entity and SQL capabilities bound to one transaction.
220
283
  - [Variable: agents](./docs/api/appkit/Variable.agents.md): Plugin factory for the agents plugin. Discovers agents from
221
284
  - [Variable: aiSearch](./docs/api/appkit/Variable.aiSearch.md)
222
285
  - [Variable: READ_ACTIONS](./docs/api/appkit/Variable.READ_ACTIONS.md): Actions that only read data.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@databricks/appkit",
3
3
  "type": "module",
4
- "version": "0.71.0",
4
+ "version": "0.73.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "bin": {
@@ -56,7 +56,7 @@
56
56
  },
57
57
  "dependencies": {
58
58
  "@ast-grep/napi": "0.37.0",
59
- "@databricks/lakebase": "0.5.0",
59
+ "@databricks/lakebase": "0.6.0",
60
60
  "@databricks/sdk-experimental": "0.17.0",
61
61
  "@mlflow/core": "0.4.0",
62
62
  "@opentelemetry/api": "1.9.0",
@@ -76,6 +76,7 @@
76
76
  "@opentelemetry/semantic-conventions": "1.38.0",
77
77
  "@types/semver": "7.7.1",
78
78
  "apache-arrow": "21.1.0",
79
+ "autoevals": "0.3.0",
79
80
  "dotenv": "16.6.1",
80
81
  "drizzle-orm": "0.45.2",
81
82
  "express": "4.22.2",