@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.
Files changed (59) hide show
  1. package/NOTICE.md +10 -12
  2. package/README.md +40 -20
  3. package/dist/appkit/package.js +1 -1
  4. package/dist/cli/commands/codemod/on-plugins-ready.js +2 -1
  5. package/dist/cli/commands/codemod/on-plugins-ready.js.map +1 -1
  6. package/dist/cli/commands/lint.js +2 -1
  7. package/dist/cli/commands/lint.js.map +1 -1
  8. package/dist/cli/commands/plugin/add-resource/add-resource.js +1 -1
  9. package/dist/cli/commands/plugin/add-resource/add-resource.js.map +1 -1
  10. package/dist/cli/commands/plugin/create/create.js +1 -1
  11. package/dist/cli/commands/plugin/create/create.js.map +1 -1
  12. package/dist/cli/commands/plugin/create/prompt-resource.js +1 -1
  13. package/dist/cli/commands/plugin/create/prompt-resource.js.map +1 -1
  14. package/dist/cli/commands/plugin/list/list.js +22 -9
  15. package/dist/cli/commands/plugin/list/list.js.map +1 -1
  16. package/dist/cli/commands/plugin/sync/sync.js +12 -3
  17. package/dist/cli/commands/plugin/sync/sync.js.map +1 -1
  18. package/dist/cli/commands/registry/env-writer.js +4 -1
  19. package/dist/cli/commands/registry/env-writer.js.map +1 -1
  20. package/dist/evals/judge.d.ts.map +1 -1
  21. package/dist/evals/judge.js +8 -2
  22. package/dist/evals/judge.js.map +1 -1
  23. package/dist/plugins/agents/mlflow.js +6 -1
  24. package/dist/plugins/agents/mlflow.js.map +1 -1
  25. package/dist/plugins/server/index.js +2 -2
  26. package/dist/plugins/server/index.js.map +1 -1
  27. package/dist/plugins/server/remote-tunnel/remote-tunnel-manager.js +3 -3
  28. package/dist/plugins/server/remote-tunnel/remote-tunnel-manager.js.map +1 -1
  29. package/dist/plugins/server/static-server.js +3 -3
  30. package/dist/plugins/server/static-server.js.map +1 -1
  31. package/dist/plugins/server/utils.js +3 -3
  32. package/dist/plugins/server/utils.js.map +1 -1
  33. package/dist/plugins/server/vite-dev-server.js +4 -4
  34. package/dist/plugins/server/vite-dev-server.js.map +1 -1
  35. package/dist/plugins/serving/manifest.js +3 -2
  36. package/dist/plugins/serving/serving.d.ts +6 -0
  37. package/dist/plugins/serving/serving.d.ts.map +1 -1
  38. package/dist/plugins/serving/serving.js +7 -0
  39. package/dist/plugins/serving/serving.js.map +1 -1
  40. package/dist/schemas/manifest.d.ts +1 -0
  41. package/dist/schemas/manifest.d.ts.map +1 -1
  42. package/dist/schemas/manifest.js +2 -0
  43. package/dist/schemas/manifest.js.map +1 -1
  44. package/dist/shared/src/plugin.d.ts +3 -1
  45. package/dist/shared/src/plugin.d.ts.map +1 -1
  46. package/dist/shared/src/schemas/manifest.d.ts +34 -33
  47. package/dist/shared/src/schemas/manifest.d.ts.map +1 -1
  48. package/dist/shared/src/schemas/manifest.js +2 -0
  49. package/dist/shared/src/schemas/manifest.js.map +1 -1
  50. package/dist/type-generator/database/generate.js +3 -3
  51. package/dist/type-generator/database/generate.js.map +1 -1
  52. package/dist/type-generator/migration.js +2 -2
  53. package/dist/type-generator/migration.js.map +1 -1
  54. package/dist/type-generator/serving/server-file-extractor.js +3 -3
  55. package/dist/type-generator/serving/server-file-extractor.js.map +1 -1
  56. package/docs/api/appkit/Interface.PluginManifest.md +29 -11
  57. package/docs/plugins/agents.md +3 -1
  58. package/package.json +12 -4
  59. 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-1 "Direct link to 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-2 "Direct link to 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-3 "Direct link to 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-4 "Direct link to 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-5 "Direct link to 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-6 "Direct link to 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-7 "Direct link to 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-8 "Direct link to 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-9 "Direct link to 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-10 "Direct link to 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-11 "Direct link to Inherited from")
353
+ #### Inherited from[​](#inherited-from-12 "Direct link to Inherited from")
336
354
 
337
355
  ```ts
338
356
  Omit.version
@@ -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.76.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.21.0",
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": {