@databricks/appkit 0.76.0 → 0.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +10 -12
- package/README.md +40 -20
- package/dist/appkit/package.js +1 -1
- package/dist/cli/commands/codemod/on-plugins-ready.js +2 -1
- package/dist/cli/commands/codemod/on-plugins-ready.js.map +1 -1
- package/dist/cli/commands/lint.js +2 -1
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/plugin/add-resource/add-resource.js +1 -1
- package/dist/cli/commands/plugin/add-resource/add-resource.js.map +1 -1
- package/dist/cli/commands/plugin/create/create.js +1 -1
- package/dist/cli/commands/plugin/create/create.js.map +1 -1
- package/dist/cli/commands/plugin/create/prompt-resource.js +1 -1
- package/dist/cli/commands/plugin/create/prompt-resource.js.map +1 -1
- package/dist/cli/commands/plugin/list/list.js +22 -9
- package/dist/cli/commands/plugin/list/list.js.map +1 -1
- package/dist/cli/commands/plugin/sync/sync.js +12 -3
- package/dist/cli/commands/plugin/sync/sync.js.map +1 -1
- package/dist/cli/commands/registry/env-writer.js +4 -1
- package/dist/cli/commands/registry/env-writer.js.map +1 -1
- package/dist/evals/judge.d.ts.map +1 -1
- package/dist/evals/judge.js +8 -2
- package/dist/evals/judge.js.map +1 -1
- package/dist/plugins/agents/mlflow.js +6 -1
- package/dist/plugins/agents/mlflow.js.map +1 -1
- package/dist/plugins/server/index.js +2 -2
- package/dist/plugins/server/index.js.map +1 -1
- package/dist/plugins/server/remote-tunnel/remote-tunnel-manager.js +3 -3
- package/dist/plugins/server/remote-tunnel/remote-tunnel-manager.js.map +1 -1
- package/dist/plugins/server/static-server.js +3 -3
- package/dist/plugins/server/static-server.js.map +1 -1
- package/dist/plugins/server/utils.js +3 -3
- package/dist/plugins/server/utils.js.map +1 -1
- package/dist/plugins/server/vite-dev-server.js +4 -4
- package/dist/plugins/server/vite-dev-server.js.map +1 -1
- package/dist/plugins/serving/manifest.js +3 -2
- package/dist/plugins/serving/serving.d.ts +6 -0
- package/dist/plugins/serving/serving.d.ts.map +1 -1
- package/dist/plugins/serving/serving.js +7 -0
- package/dist/plugins/serving/serving.js.map +1 -1
- package/dist/schemas/manifest.d.ts +1 -0
- package/dist/schemas/manifest.d.ts.map +1 -1
- package/dist/schemas/manifest.js +2 -0
- package/dist/schemas/manifest.js.map +1 -1
- package/dist/shared/src/plugin.d.ts +3 -1
- package/dist/shared/src/plugin.d.ts.map +1 -1
- package/dist/shared/src/schemas/manifest.d.ts +34 -33
- package/dist/shared/src/schemas/manifest.d.ts.map +1 -1
- package/dist/shared/src/schemas/manifest.js +2 -0
- package/dist/shared/src/schemas/manifest.js.map +1 -1
- package/dist/type-generator/database/generate.js +3 -3
- package/dist/type-generator/database/generate.js.map +1 -1
- package/dist/type-generator/migration.js +2 -2
- package/dist/type-generator/migration.js.map +1 -1
- package/dist/type-generator/serving/server-file-extractor.js +3 -3
- package/dist/type-generator/serving/server-file-extractor.js.map +1 -1
- package/docs/api/appkit/Interface.PluginManifest.md +29 -11
- package/docs/plugins/agents.md +3 -1
- package/package.json +12 -4
- package/sbom.cdx.json +1 -1
|
@@ -57,6 +57,24 @@ schema: JSONSchema7;
|
|
|
57
57
|
|
|
58
58
|
***
|
|
59
59
|
|
|
60
|
+
### deprecated?[](#deprecated "Direct link to deprecated?")
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
optional deprecated: boolean;
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
When true, the plugin is deprecated. It still ships and functions, but tooling (e.g. `appkit plugin list`) may hide or flag it. The recommended replacement is noted in the plugin description.
|
|
68
|
+
|
|
69
|
+
#### Inherited from[](#inherited-from-1 "Direct link to Inherited from")
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
Omit.deprecated
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
***
|
|
77
|
+
|
|
60
78
|
### description[](#description "Direct link to description")
|
|
61
79
|
|
|
62
80
|
```ts
|
|
@@ -66,7 +84,7 @@ description: string;
|
|
|
66
84
|
|
|
67
85
|
Brief description of what the plugin does
|
|
68
86
|
|
|
69
|
-
#### Inherited from[](#inherited-from-
|
|
87
|
+
#### Inherited from[](#inherited-from-2 "Direct link to Inherited from")
|
|
70
88
|
|
|
71
89
|
```ts
|
|
72
90
|
Omit.description
|
|
@@ -84,7 +102,7 @@ optional devOnly: boolean;
|
|
|
84
102
|
|
|
85
103
|
When true, this plugin is only registered when NODE\_ENV === "development". In any other environment createApp skips it entirely (not constructed, no routes, resources not validated). Use for dev-only tooling that must never run in a deployed app.
|
|
86
104
|
|
|
87
|
-
#### Inherited from[](#inherited-from-
|
|
105
|
+
#### Inherited from[](#inherited-from-3 "Direct link to Inherited from")
|
|
88
106
|
|
|
89
107
|
```ts
|
|
90
108
|
Omit.devOnly
|
|
@@ -102,7 +120,7 @@ displayName: string;
|
|
|
102
120
|
|
|
103
121
|
Human-readable display name for UI and CLI
|
|
104
122
|
|
|
105
|
-
#### Inherited from[](#inherited-from-
|
|
123
|
+
#### Inherited from[](#inherited-from-4 "Direct link to Inherited from")
|
|
106
124
|
|
|
107
125
|
```ts
|
|
108
126
|
Omit.displayName
|
|
@@ -120,7 +138,7 @@ optional hidden: boolean;
|
|
|
120
138
|
|
|
121
139
|
When true, this plugin is excluded from the template plugins manifest (appkit.plugins.json) during sync.
|
|
122
140
|
|
|
123
|
-
#### Inherited from[](#inherited-from-
|
|
141
|
+
#### Inherited from[](#inherited-from-5 "Direct link to Inherited from")
|
|
124
142
|
|
|
125
143
|
```ts
|
|
126
144
|
Omit.hidden
|
|
@@ -138,7 +156,7 @@ optional keywords: string[];
|
|
|
138
156
|
|
|
139
157
|
Keywords for plugin discovery
|
|
140
158
|
|
|
141
|
-
#### Inherited from[](#inherited-from-
|
|
159
|
+
#### Inherited from[](#inherited-from-6 "Direct link to Inherited from")
|
|
142
160
|
|
|
143
161
|
```ts
|
|
144
162
|
Omit.keywords
|
|
@@ -156,7 +174,7 @@ optional license: string;
|
|
|
156
174
|
|
|
157
175
|
SPDX license identifier
|
|
158
176
|
|
|
159
|
-
#### Inherited from[](#inherited-from-
|
|
177
|
+
#### Inherited from[](#inherited-from-7 "Direct link to Inherited from")
|
|
160
178
|
|
|
161
179
|
```ts
|
|
162
180
|
Omit.license
|
|
@@ -192,7 +210,7 @@ optional onSetupMessage: string;
|
|
|
192
210
|
|
|
193
211
|
Message displayed to the user after project initialization. Use this to inform about manual setup steps (e.g. environment variables, resource provisioning).
|
|
194
212
|
|
|
195
|
-
#### Inherited from[](#inherited-from-
|
|
213
|
+
#### Inherited from[](#inherited-from-8 "Direct link to Inherited from")
|
|
196
214
|
|
|
197
215
|
```ts
|
|
198
216
|
Omit.onSetupMessage
|
|
@@ -210,7 +228,7 @@ optional repository: string;
|
|
|
210
228
|
|
|
211
229
|
URL to the plugin's source repository
|
|
212
230
|
|
|
213
|
-
#### Inherited from[](#inherited-from-
|
|
231
|
+
#### Inherited from[](#inherited-from-9 "Direct link to Inherited from")
|
|
214
232
|
|
|
215
233
|
```ts
|
|
216
234
|
Omit.repository
|
|
@@ -296,7 +314,7 @@ optional should: string[];
|
|
|
296
314
|
|
|
297
315
|
```
|
|
298
316
|
|
|
299
|
-
#### Inherited from[](#inherited-from-
|
|
317
|
+
#### Inherited from[](#inherited-from-10 "Direct link to Inherited from")
|
|
300
318
|
|
|
301
319
|
```ts
|
|
302
320
|
Omit.scaffolding
|
|
@@ -314,7 +332,7 @@ optional stability: "beta" | "ga";
|
|
|
314
332
|
|
|
315
333
|
Plugin stability level. Beta plugins may have breaking API changes between minor releases but are on a path to GA. GA (general availability) plugins follow semver strictly.
|
|
316
334
|
|
|
317
|
-
#### Inherited from[](#inherited-from-
|
|
335
|
+
#### Inherited from[](#inherited-from-11 "Direct link to Inherited from")
|
|
318
336
|
|
|
319
337
|
```ts
|
|
320
338
|
Omit.stability
|
|
@@ -332,7 +350,7 @@ optional version: string;
|
|
|
332
350
|
|
|
333
351
|
Plugin version (semver format)
|
|
334
352
|
|
|
335
|
-
#### Inherited from[](#inherited-from-
|
|
353
|
+
#### Inherited from[](#inherited-from-12 "Direct link to Inherited from")
|
|
336
354
|
|
|
337
355
|
```ts
|
|
338
356
|
Omit.version
|
package/docs/plugins/agents.md
CHANGED
|
@@ -34,6 +34,8 @@ await createApp({
|
|
|
34
34
|
|
|
35
35
|
That alone gives you a live HTTP server with `POST /invocations` (and its alias `POST /responses`) wired to a markdown-driven agent. Use `POST /chat` instead when you want the streaming, HITL-capable surface.
|
|
36
36
|
|
|
37
|
+
> **Optional dependencies.** Two opt-in features load their heavy dependencies lazily, so they are declared as optional peer dependencies and are *not* installed with AppKit by default: agent tracing to an MLflow experiment needs `@mlflow/core` (`npm i @mlflow/core`), and the eval judges below need `autoevals` (`npm i autoevals`). Skip them and agents still run — tracing simply stays off and `t.judge.*` reports the missing package.
|
|
38
|
+
|
|
37
39
|
## Level 1: drop a markdown agent package[](#level-1-drop-a-markdown-agent-package "Direct link to Level 1: drop a markdown agent package")
|
|
38
40
|
|
|
39
41
|
Each agent lives in its own folder under `server/agents/` with entry file `agent.md`. A folder is an agent only if it holds an entry file (`agent.md` or `agent.ts`); a folder without one is skipped, so per-agent asset folders sit beside the entry — notably a `skills/` folder holding [Skills](#skills) (on-demand instruction packs the agent loads by name). A shared `server/agents/skills/` folder holds skills available to any agent.
|
|
@@ -760,7 +762,7 @@ Call `t.skip("reason")` to skip an eval, and read `t.reply`, `t.toolCalls`, and
|
|
|
760
762
|
|
|
761
763
|
### LLM-as-judge[](#llm-as-judge "Direct link to LLM-as-judge")
|
|
762
764
|
|
|
763
|
-
`t.judge.*` scores the last reply with an LLM judge (via `autoevals` pointed at a Databricks serving endpoint). Each judge returns a scored assertion (0..1) that **gates by default** — a miss fails the eval. Chain `.atLeast(n)` to set the pass threshold, or `.soft()` to track it only. Judges require a judge model: pass `--judge-model <endpoint>` (or set `APPKIT_JUDGE_MODEL`) plus Databricks auth; without one, `t.judge.*` throws with a clear message.
|
|
765
|
+
`t.judge.*` scores the last reply with an LLM judge (via `autoevals` pointed at a Databricks serving endpoint). Each judge returns a scored assertion (0..1) that **gates by default** — a miss fails the eval. Chain `.atLeast(n)` to set the pass threshold, or `.soft()` to track it only. Judges require a judge model: pass `--judge-model <endpoint>` (or set `APPKIT_JUDGE_MODEL`) plus Databricks auth; without one, `t.judge.*` throws with a clear message. `autoevals` is an optional peer dependency — install it (`npm i autoevals`) to use the judges.
|
|
764
766
|
|
|
765
767
|
```ts
|
|
766
768
|
async test(t) {
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@databricks/appkit",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.77.0",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"bin": {
|
|
8
8
|
"appkit": "./bin/appkit.js"
|
|
9
9
|
},
|
|
10
|
-
"packageManager": "pnpm@
|
|
10
|
+
"packageManager": "pnpm@11.0.8",
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
@@ -58,7 +58,6 @@
|
|
|
58
58
|
"@ast-grep/napi": "0.37.0",
|
|
59
59
|
"@databricks/lakebase": "0.6.0",
|
|
60
60
|
"@databricks/sdk-experimental": "0.17.0",
|
|
61
|
-
"@mlflow/core": "0.4.0",
|
|
62
61
|
"@opentelemetry/api": "1.9.0",
|
|
63
62
|
"@opentelemetry/api-logs": "0.219.0",
|
|
64
63
|
"@opentelemetry/auto-instrumentations-node": "0.77.0",
|
|
@@ -76,7 +75,6 @@
|
|
|
76
75
|
"@opentelemetry/semantic-conventions": "1.38.0",
|
|
77
76
|
"@types/semver": "7.7.1",
|
|
78
77
|
"apache-arrow": "21.1.0",
|
|
79
|
-
"autoevals": "0.3.0",
|
|
80
78
|
"dotenv": "16.6.1",
|
|
81
79
|
"drizzle-orm": "0.45.2",
|
|
82
80
|
"express": "4.22.2",
|
|
@@ -97,14 +95,23 @@
|
|
|
97
95
|
"yaml": "2.8.2"
|
|
98
96
|
},
|
|
99
97
|
"peerDependencies": {
|
|
98
|
+
"@mlflow/core": "0.4.0",
|
|
99
|
+
"autoevals": "0.3.0",
|
|
100
100
|
"vitest": ">=3"
|
|
101
101
|
},
|
|
102
102
|
"peerDependenciesMeta": {
|
|
103
|
+
"@mlflow/core": {
|
|
104
|
+
"optional": true
|
|
105
|
+
},
|
|
106
|
+
"autoevals": {
|
|
107
|
+
"optional": true
|
|
108
|
+
},
|
|
103
109
|
"vitest": {
|
|
104
110
|
"optional": true
|
|
105
111
|
}
|
|
106
112
|
},
|
|
107
113
|
"devDependencies": {
|
|
114
|
+
"@mlflow/core": "0.4.0",
|
|
108
115
|
"@opentelemetry/context-async-hooks": "2.8.0",
|
|
109
116
|
"@types/express": "4.17.25",
|
|
110
117
|
"@types/js-yaml": "4.0.9",
|
|
@@ -112,6 +119,7 @@
|
|
|
112
119
|
"@types/pg": "8.16.0",
|
|
113
120
|
"@types/ws": "8.18.1",
|
|
114
121
|
"@vitejs/plugin-react": "5.1.1",
|
|
122
|
+
"autoevals": "0.3.0",
|
|
115
123
|
"vitest": "3.2.4"
|
|
116
124
|
},
|
|
117
125
|
"overrides": {
|