@databricks/appkit 0.64.0 → 0.65.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 (67) hide show
  1. package/CLAUDE.md +1 -0
  2. package/dist/appkit/package.js +1 -1
  3. package/dist/cli/commands/doctor/resolve-targets.js +1 -1
  4. package/dist/cli/commands/plugin/create/scaffold.js +2 -2
  5. package/dist/cli/commands/plugin/create/scaffold.js.map +1 -1
  6. package/dist/core/appkit.js +1 -1
  7. package/dist/index.d.ts +12 -12
  8. package/dist/index.js +2 -2
  9. package/dist/plugin/plugin.d.ts +2 -2
  10. package/dist/plugins/agents/agents.d.ts +3 -3
  11. package/dist/plugins/agents/agents.d.ts.map +1 -1
  12. package/dist/plugins/agents/agents.js +3 -1
  13. package/dist/plugins/agents/agents.js.map +1 -1
  14. package/dist/plugins/ai-search/ai-search.d.ts +1 -1
  15. package/dist/plugins/ai-search/ai-search.d.ts.map +1 -1
  16. package/dist/plugins/ai-search/ai-search.js +3 -1
  17. package/dist/plugins/ai-search/ai-search.js.map +1 -1
  18. package/dist/plugins/analytics/analytics.d.ts +2 -2
  19. package/dist/plugins/analytics/analytics.d.ts.map +1 -1
  20. package/dist/plugins/analytics/analytics.js +3 -1
  21. package/dist/plugins/analytics/analytics.js.map +1 -1
  22. package/dist/plugins/files/plugin.d.ts +5 -4
  23. package/dist/plugins/files/plugin.d.ts.map +1 -1
  24. package/dist/plugins/files/plugin.js +2 -1
  25. package/dist/plugins/files/plugin.js.map +1 -1
  26. package/dist/plugins/genie/genie.d.ts +2 -2
  27. package/dist/plugins/genie/genie.d.ts.map +1 -1
  28. package/dist/plugins/genie/genie.js +3 -1
  29. package/dist/plugins/genie/genie.js.map +1 -1
  30. package/dist/plugins/jobs/plugin.d.ts +3 -2
  31. package/dist/plugins/jobs/plugin.d.ts.map +1 -1
  32. package/dist/plugins/jobs/plugin.js +2 -1
  33. package/dist/plugins/jobs/plugin.js.map +1 -1
  34. package/dist/plugins/lakebase/lakebase.d.ts +4 -4
  35. package/dist/plugins/lakebase/lakebase.d.ts.map +1 -1
  36. package/dist/plugins/lakebase/lakebase.js +3 -1
  37. package/dist/plugins/lakebase/lakebase.js.map +1 -1
  38. package/dist/plugins/server/index.d.ts +1 -1
  39. package/dist/plugins/server/index.d.ts.map +1 -1
  40. package/dist/plugins/server/index.js +3 -1
  41. package/dist/plugins/server/index.js.map +1 -1
  42. package/dist/plugins/serving/serving.d.ts +1 -0
  43. package/dist/plugins/serving/serving.d.ts.map +1 -1
  44. package/dist/plugins/serving/serving.js +2 -1
  45. package/dist/plugins/serving/serving.js.map +1 -1
  46. package/dist/plugins/ui-variants/index.js +3 -1
  47. package/dist/plugins/ui-variants/index.js.map +1 -1
  48. package/dist/registry/index.d.ts +1 -1
  49. package/dist/registry/index.js +1 -1
  50. package/dist/registry/manifest-loader.d.ts +20 -1
  51. package/dist/registry/manifest-loader.d.ts.map +1 -1
  52. package/dist/registry/manifest-loader.js +23 -1
  53. package/dist/registry/manifest-loader.js.map +1 -1
  54. package/dist/schemas/manifest.d.ts +1 -1
  55. package/dist/shared/src/index.d.ts +1 -1
  56. package/dist/shared/src/naming.js +13 -1
  57. package/dist/shared/src/naming.js.map +1 -1
  58. package/dist/shared/src/schemas/manifest.d.ts +1 -1
  59. package/dist/shared/src/schemas/manifest.js +463 -0
  60. package/dist/shared/src/schemas/manifest.js.map +1 -0
  61. package/dist/testing/fixtures.d.ts +1 -1
  62. package/docs/api/appkit/Function.defineManifest.md +32 -0
  63. package/docs/api/appkit/Variable.agents.md +1 -1
  64. package/docs/api/appkit.md +1 -0
  65. package/llms.txt +1 -0
  66. package/package.json +1 -1
  67. package/sbom.cdx.json +1 -1
package/CLAUDE.md CHANGED
@@ -88,6 +88,7 @@ npx @databricks/appkit docs <query>
88
88
  - [Function: createLakebasePool()](./docs/api/appkit/Function.createLakebasePool.md): Create a Lakebase pool with appkit's logger integration.
89
89
  - [Function: createLakebasePoolManager()](./docs/api/appkit/Function.createLakebasePoolManager.md): Create a pool manager that maintains per-key Lakebase connection pools.
90
90
  - [Function: createWorkspaceClient()](./docs/api/appkit/Function.createWorkspaceClient.md): Construct an AppKit workspace client.
91
+ - [Function: defineManifest()](./docs/api/appkit/Function.defineManifest.md): Validates a raw manifest (typically a manifest.json import) against the
91
92
  - [Function: defineTool()](./docs/api/appkit/Function.defineTool.md): Defines a single tool entry for a plugin's internal registry.
92
93
  - [Function: executeFromRegistry()](./docs/api/appkit/Function.executeFromRegistry.md): Validates tool-call arguments against the entry's schema and invokes its
93
94
  - [Function: extractServingEndpoints()](./docs/api/appkit/Function.extractServingEndpoints.md): Extract serving endpoint config from a server file by AST-parsing it.
@@ -1,6 +1,6 @@
1
1
  //#region package.json
2
2
  var name = "@databricks/appkit";
3
- var version = "0.64.0";
3
+ var version = "0.65.0";
4
4
 
5
5
  //#endregion
6
6
  export { name, version };
@@ -1,5 +1,5 @@
1
- import { errorMessage } from "./utils.js";
2
1
  import { computeOriginFromField } from "../../../schemas/manifest.js";
2
+ import { errorMessage } from "./utils.js";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
5
5
 
@@ -85,15 +85,15 @@ function scaffoldPlugin(targetDir, answers, options) {
85
85
  const exportName = toCamelCase(answers.name);
86
86
  writeTracked(path.join(targetDir, "manifest.json"), `${JSON.stringify(manifest, null, 2)}\n`, written);
87
87
  const pluginTs = `import {
88
+ defineManifest,
88
89
  Plugin,
89
90
  toPlugin,
90
91
  type IAppRouter,
91
- type PluginManifest,
92
92
  } from "@databricks/appkit";
93
93
  import manifest from "./manifest.json";
94
94
 
95
95
  export class ${className} extends Plugin {
96
- static manifest = manifest as PluginManifest<"${answers.name}">;
96
+ static manifest = defineManifest<"${answers.name}">(manifest);
97
97
 
98
98
  injectRoutes(router: IAppRouter): void {
99
99
  // Add your routes here, e.g.:
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","names":[],"sources":["../../../../../src/cli/commands/plugin/create/scaffold.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { humanizeResourceType, MANIFEST_SCHEMA_ID } from \"./resource-defaults\";\nimport type { CreateAnswers } from \"./types\";\n\n/** Convert kebab-name to PascalCase (e.g. my-plugin -> MyPlugin). */\nfunction toPascalCase(name: string): string {\n return name\n .split(\"-\")\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/** Convert kebab-name to camelCase (e.g. my-plugin -> myPlugin). */\nfunction toCamelCase(name: string): string {\n const pascal = toPascalCase(name);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/** Build manifest.json resources from selected resources. */\nfunction buildManifestResources(answers: CreateAnswers) {\n const required: unknown[] = [];\n const optional: unknown[] = [];\n\n for (const r of answers.resources) {\n const alias = humanizeResourceType(r.type);\n const entry = {\n type: r.type,\n alias,\n resourceKey: r.resourceKey,\n description: r.description || `Required for ${alias} functionality.`,\n permission: r.permission,\n fields: r.fields,\n };\n if (r.required) {\n required.push(entry);\n } else {\n optional.push(entry);\n }\n }\n\n return { required, optional };\n}\n\n/** Build full manifest object for manifest.json. */\nfunction buildManifest(answers: CreateAnswers): Record<string, unknown> {\n const { required, optional } = buildManifestResources(answers);\n const manifest: Record<string, unknown> = {\n $schema: MANIFEST_SCHEMA_ID,\n name: answers.name,\n displayName: answers.displayName,\n description: answers.description,\n resources: { required, optional },\n };\n if (answers.stability) manifest.stability = answers.stability;\n if (answers.author) manifest.author = answers.author;\n manifest.version = answers.version || \"0.1.0\";\n if (answers.license) manifest.license = answers.license;\n return manifest;\n}\n\n/** Resolve absolute target directory from cwd and answers. */\nexport function resolveTargetDir(cwd: string, answers: CreateAnswers): string {\n return path.resolve(cwd, answers.targetPath);\n}\n\n/** Track files written during scaffolding for rollback on failure. */\nfunction writeTracked(\n filePath: string,\n content: string,\n written: string[],\n): void {\n fs.writeFileSync(filePath, content);\n written.push(filePath);\n}\n\n/** Remove files written during a failed scaffold attempt. */\nfunction rollback(written: string[], targetDir: string): void {\n for (const filePath of written.reverse()) {\n try {\n fs.unlinkSync(filePath);\n } catch {\n // best-effort cleanup\n }\n }\n try {\n const remaining = fs.readdirSync(targetDir);\n if (remaining.length === 0) fs.rmdirSync(targetDir);\n } catch {\n // directory may not be empty or may have been removed already\n }\n}\n\n/**\n * Scaffold plugin files into targetDir. Pure: no interactive I/O.\n * Writes manifest.json, {name}.ts, index.ts; for isolated also package.json, tsconfig.json, README.md.\n * On failure, rolls back any files already written.\n */\nexport function scaffoldPlugin(\n targetDir: string,\n answers: CreateAnswers,\n options: { isolated: boolean },\n): void {\n fs.mkdirSync(targetDir, { recursive: true });\n\n const written: string[] = [];\n\n try {\n const manifest = buildManifest(answers);\n const className = toPascalCase(answers.name);\n const exportName = toCamelCase(answers.name);\n\n writeTracked(\n path.join(targetDir, \"manifest.json\"),\n `${JSON.stringify(manifest, null, 2)}\\n`,\n written,\n );\n\n const pluginTs = `import {\n Plugin,\n toPlugin,\n type IAppRouter,\n type PluginManifest,\n} from \"@databricks/appkit\";\nimport manifest from \"./manifest.json\";\n\nexport class ${className} extends Plugin {\n static manifest = manifest as PluginManifest<\"${answers.name}\">;\n\n injectRoutes(router: IAppRouter): void {\n // Add your routes here, e.g.:\n // this.route(router, {\n // name: \"example\",\n // method: \"get\",\n // path: \"/\",\n // handler: async (_req, res) => {\n // res.json({ message: \"Hello from ${answers.name}\" });\n // },\n // });\n }\n}\n\nexport const ${exportName} = toPlugin(${className});\n`;\n\n writeTracked(path.join(targetDir, `${answers.name}.ts`), pluginTs, written);\n\n const indexTs = `export { ${className}, ${exportName} } from \"./${answers.name}\";\n`;\n\n writeTracked(path.join(targetDir, \"index.ts\"), indexTs, written);\n\n if (options.isolated) {\n const packageName =\n answers.name.includes(\"/\") || answers.name.startsWith(\"@\")\n ? answers.name\n : `appkit-plugin-${answers.name}`;\n\n const packageJson = {\n name: packageName,\n version: answers.version || \"0.1.0\",\n type: \"module\",\n main: \"./dist/index.js\",\n types: \"./dist/index.d.ts\",\n files: [\"dist\"],\n scripts: {\n build: \"tsc\",\n typecheck: \"tsc --noEmit\",\n },\n peerDependencies: {\n \"@databricks/appkit\": \">=0.5.0\",\n },\n devDependencies: {\n typescript: \"^5.0.0\",\n },\n };\n\n writeTracked(\n path.join(targetDir, \"package.json\"),\n `${JSON.stringify(packageJson, null, 2)}\\n`,\n written,\n );\n\n const tsconfigJson = {\n compilerOptions: {\n target: \"ES2022\",\n module: \"NodeNext\",\n moduleResolution: \"NodeNext\",\n outDir: \"dist\",\n rootDir: \".\",\n declaration: true,\n strict: true,\n skipLibCheck: true,\n },\n include: [\"*.ts\"],\n exclude: [\"node_modules\", \"dist\"],\n };\n\n writeTracked(\n path.join(targetDir, \"tsconfig.json\"),\n `${JSON.stringify(tsconfigJson, null, 2)}\\n`,\n written,\n );\n\n const readme = `# ${answers.displayName}\n\n${answers.description}\n\n## Installation\n\n\\`\\`\\`bash\npnpm add ${packageName} @databricks/appkit\n\\`\\`\\`\n\n## Usage\n\nRegister the plugin in your AppKit app:\n\n\\`\\`\\`ts\nimport { createApp } from \"@databricks/appkit\";\nimport { ${exportName} } from \"${packageName}\";\n\ncreateApp({\n plugins: [\n ${exportName}(),\n // ... other plugins\n ],\n}).then((app) => { /* ... */ });\n\\`\\`\\`\n`;\n\n writeTracked(path.join(targetDir, \"README.md\"), readme, written);\n }\n } catch (err) {\n rollback(written, targetDir);\n throw err;\n }\n}\n"],"mappings":";;;;;;AAOA,SAAS,aAAa,MAAsB;AAC1C,QAAO,KACJ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,CAChE,KAAK,GAAG;;;AAIb,SAAS,YAAY,MAAsB;CACzC,MAAM,SAAS,aAAa,KAAK;AACjC,QAAO,OAAO,OAAO,EAAE,CAAC,aAAa,GAAG,OAAO,MAAM,EAAE;;;AAIzD,SAAS,uBAAuB,SAAwB;CACtD,MAAM,WAAsB,EAAE;CAC9B,MAAM,WAAsB,EAAE;AAE9B,MAAK,MAAM,KAAK,QAAQ,WAAW;EACjC,MAAM,QAAQ,qBAAqB,EAAE,KAAK;EAC1C,MAAM,QAAQ;GACZ,MAAM,EAAE;GACR;GACA,aAAa,EAAE;GACf,aAAa,EAAE,eAAe,gBAAgB,MAAM;GACpD,YAAY,EAAE;GACd,QAAQ,EAAE;GACX;AACD,MAAI,EAAE,SACJ,UAAS,KAAK,MAAM;MAEpB,UAAS,KAAK,MAAM;;AAIxB,QAAO;EAAE;EAAU;EAAU;;;AAI/B,SAAS,cAAc,SAAiD;CACtE,MAAM,EAAE,UAAU,aAAa,uBAAuB,QAAQ;CAC9D,MAAM,WAAoC;EACxC,SAAS;EACT,MAAM,QAAQ;EACd,aAAa,QAAQ;EACrB,aAAa,QAAQ;EACrB,WAAW;GAAE;GAAU;GAAU;EAClC;AACD,KAAI,QAAQ,UAAW,UAAS,YAAY,QAAQ;AACpD,KAAI,QAAQ,OAAQ,UAAS,SAAS,QAAQ;AAC9C,UAAS,UAAU,QAAQ,WAAW;AACtC,KAAI,QAAQ,QAAS,UAAS,UAAU,QAAQ;AAChD,QAAO;;;AAIT,SAAgB,iBAAiB,KAAa,SAAgC;AAC5E,QAAO,KAAK,QAAQ,KAAK,QAAQ,WAAW;;;AAI9C,SAAS,aACP,UACA,SACA,SACM;AACN,IAAG,cAAc,UAAU,QAAQ;AACnC,SAAQ,KAAK,SAAS;;;AAIxB,SAAS,SAAS,SAAmB,WAAyB;AAC5D,MAAK,MAAM,YAAY,QAAQ,SAAS,CACtC,KAAI;AACF,KAAG,WAAW,SAAS;SACjB;AAIV,KAAI;AAEF,MADkB,GAAG,YAAY,UAAU,CAC7B,WAAW,EAAG,IAAG,UAAU,UAAU;SAC7C;;;;;;;AAUV,SAAgB,eACd,WACA,SACA,SACM;AACN,IAAG,UAAU,WAAW,EAAE,WAAW,MAAM,CAAC;CAE5C,MAAM,UAAoB,EAAE;AAE5B,KAAI;EACF,MAAM,WAAW,cAAc,QAAQ;EACvC,MAAM,YAAY,aAAa,QAAQ,KAAK;EAC5C,MAAM,aAAa,YAAY,QAAQ,KAAK;AAE5C,eACE,KAAK,KAAK,WAAW,gBAAgB,EACrC,GAAG,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC,KACrC,QACD;EAED,MAAM,WAAW;;;;;;;;eAQN,UAAU;kDACyB,QAAQ,KAAK;;;;;;;;;6CASlB,QAAQ,KAAK;;;;;;eAM3C,WAAW,cAAc,UAAU;;AAG9C,eAAa,KAAK,KAAK,WAAW,GAAG,QAAQ,KAAK,KAAK,EAAE,UAAU,QAAQ;EAE3E,MAAM,UAAU,YAAY,UAAU,IAAI,WAAW,aAAa,QAAQ,KAAK;;AAG/E,eAAa,KAAK,KAAK,WAAW,WAAW,EAAE,SAAS,QAAQ;AAEhE,MAAI,QAAQ,UAAU;GACpB,MAAM,cACJ,QAAQ,KAAK,SAAS,IAAI,IAAI,QAAQ,KAAK,WAAW,IAAI,GACtD,QAAQ,OACR,iBAAiB,QAAQ;GAE/B,MAAM,cAAc;IAClB,MAAM;IACN,SAAS,QAAQ,WAAW;IAC5B,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO,CAAC,OAAO;IACf,SAAS;KACP,OAAO;KACP,WAAW;KACZ;IACD,kBAAkB,EAChB,sBAAsB,WACvB;IACD,iBAAiB,EACf,YAAY,UACb;IACF;AAED,gBACE,KAAK,KAAK,WAAW,eAAe,EACpC,GAAG,KAAK,UAAU,aAAa,MAAM,EAAE,CAAC,KACxC,QACD;AAiBD,gBACE,KAAK,KAAK,WAAW,gBAAgB,EACrC,GAAG,KAAK,UAjBW;IACnB,iBAAiB;KACf,QAAQ;KACR,QAAQ;KACR,kBAAkB;KAClB,QAAQ;KACR,SAAS;KACT,aAAa;KACb,QAAQ;KACR,cAAc;KACf;IACD,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,gBAAgB,OAAO;IAClC,EAIiC,MAAM,EAAE,CAAC,KACzC,QACD;GAED,MAAM,SAAS,KAAK,QAAQ,YAAY;;EAE5C,QAAQ,YAAY;;;;;WAKX,YAAY;;;;;;;;;WASZ,WAAW,WAAW,YAAY;;;;MAIvC,WAAW;;;;;;AAOX,gBAAa,KAAK,KAAK,WAAW,YAAY,EAAE,QAAQ,QAAQ;;UAE3D,KAAK;AACZ,WAAS,SAAS,UAAU;AAC5B,QAAM"}
1
+ {"version":3,"file":"scaffold.js","names":[],"sources":["../../../../../src/cli/commands/plugin/create/scaffold.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { humanizeResourceType, MANIFEST_SCHEMA_ID } from \"./resource-defaults\";\nimport type { CreateAnswers } from \"./types\";\n\n/** Convert kebab-name to PascalCase (e.g. my-plugin -> MyPlugin). */\nfunction toPascalCase(name: string): string {\n return name\n .split(\"-\")\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())\n .join(\"\");\n}\n\n/** Convert kebab-name to camelCase (e.g. my-plugin -> myPlugin). */\nfunction toCamelCase(name: string): string {\n const pascal = toPascalCase(name);\n return pascal.charAt(0).toLowerCase() + pascal.slice(1);\n}\n\n/** Build manifest.json resources from selected resources. */\nfunction buildManifestResources(answers: CreateAnswers) {\n const required: unknown[] = [];\n const optional: unknown[] = [];\n\n for (const r of answers.resources) {\n const alias = humanizeResourceType(r.type);\n const entry = {\n type: r.type,\n alias,\n resourceKey: r.resourceKey,\n description: r.description || `Required for ${alias} functionality.`,\n permission: r.permission,\n fields: r.fields,\n };\n if (r.required) {\n required.push(entry);\n } else {\n optional.push(entry);\n }\n }\n\n return { required, optional };\n}\n\n/** Build full manifest object for manifest.json. */\nfunction buildManifest(answers: CreateAnswers): Record<string, unknown> {\n const { required, optional } = buildManifestResources(answers);\n const manifest: Record<string, unknown> = {\n $schema: MANIFEST_SCHEMA_ID,\n name: answers.name,\n displayName: answers.displayName,\n description: answers.description,\n resources: { required, optional },\n };\n if (answers.stability) manifest.stability = answers.stability;\n if (answers.author) manifest.author = answers.author;\n manifest.version = answers.version || \"0.1.0\";\n if (answers.license) manifest.license = answers.license;\n return manifest;\n}\n\n/** Resolve absolute target directory from cwd and answers. */\nexport function resolveTargetDir(cwd: string, answers: CreateAnswers): string {\n return path.resolve(cwd, answers.targetPath);\n}\n\n/** Track files written during scaffolding for rollback on failure. */\nfunction writeTracked(\n filePath: string,\n content: string,\n written: string[],\n): void {\n fs.writeFileSync(filePath, content);\n written.push(filePath);\n}\n\n/** Remove files written during a failed scaffold attempt. */\nfunction rollback(written: string[], targetDir: string): void {\n for (const filePath of written.reverse()) {\n try {\n fs.unlinkSync(filePath);\n } catch {\n // best-effort cleanup\n }\n }\n try {\n const remaining = fs.readdirSync(targetDir);\n if (remaining.length === 0) fs.rmdirSync(targetDir);\n } catch {\n // directory may not be empty or may have been removed already\n }\n}\n\n/**\n * Scaffold plugin files into targetDir. Pure: no interactive I/O.\n * Writes manifest.json, {name}.ts, index.ts; for isolated also package.json, tsconfig.json, README.md.\n * On failure, rolls back any files already written.\n */\nexport function scaffoldPlugin(\n targetDir: string,\n answers: CreateAnswers,\n options: { isolated: boolean },\n): void {\n fs.mkdirSync(targetDir, { recursive: true });\n\n const written: string[] = [];\n\n try {\n const manifest = buildManifest(answers);\n const className = toPascalCase(answers.name);\n const exportName = toCamelCase(answers.name);\n\n writeTracked(\n path.join(targetDir, \"manifest.json\"),\n `${JSON.stringify(manifest, null, 2)}\\n`,\n written,\n );\n\n const pluginTs = `import {\n defineManifest,\n Plugin,\n toPlugin,\n type IAppRouter,\n} from \"@databricks/appkit\";\nimport manifest from \"./manifest.json\";\n\nexport class ${className} extends Plugin {\n static manifest = defineManifest<\"${answers.name}\">(manifest);\n\n injectRoutes(router: IAppRouter): void {\n // Add your routes here, e.g.:\n // this.route(router, {\n // name: \"example\",\n // method: \"get\",\n // path: \"/\",\n // handler: async (_req, res) => {\n // res.json({ message: \"Hello from ${answers.name}\" });\n // },\n // });\n }\n}\n\nexport const ${exportName} = toPlugin(${className});\n`;\n\n writeTracked(path.join(targetDir, `${answers.name}.ts`), pluginTs, written);\n\n const indexTs = `export { ${className}, ${exportName} } from \"./${answers.name}\";\n`;\n\n writeTracked(path.join(targetDir, \"index.ts\"), indexTs, written);\n\n if (options.isolated) {\n const packageName =\n answers.name.includes(\"/\") || answers.name.startsWith(\"@\")\n ? answers.name\n : `appkit-plugin-${answers.name}`;\n\n const packageJson = {\n name: packageName,\n version: answers.version || \"0.1.0\",\n type: \"module\",\n main: \"./dist/index.js\",\n types: \"./dist/index.d.ts\",\n files: [\"dist\"],\n scripts: {\n build: \"tsc\",\n typecheck: \"tsc --noEmit\",\n },\n peerDependencies: {\n \"@databricks/appkit\": \">=0.5.0\",\n },\n devDependencies: {\n typescript: \"^5.0.0\",\n },\n };\n\n writeTracked(\n path.join(targetDir, \"package.json\"),\n `${JSON.stringify(packageJson, null, 2)}\\n`,\n written,\n );\n\n const tsconfigJson = {\n compilerOptions: {\n target: \"ES2022\",\n module: \"NodeNext\",\n moduleResolution: \"NodeNext\",\n outDir: \"dist\",\n rootDir: \".\",\n declaration: true,\n strict: true,\n skipLibCheck: true,\n },\n include: [\"*.ts\"],\n exclude: [\"node_modules\", \"dist\"],\n };\n\n writeTracked(\n path.join(targetDir, \"tsconfig.json\"),\n `${JSON.stringify(tsconfigJson, null, 2)}\\n`,\n written,\n );\n\n const readme = `# ${answers.displayName}\n\n${answers.description}\n\n## Installation\n\n\\`\\`\\`bash\npnpm add ${packageName} @databricks/appkit\n\\`\\`\\`\n\n## Usage\n\nRegister the plugin in your AppKit app:\n\n\\`\\`\\`ts\nimport { createApp } from \"@databricks/appkit\";\nimport { ${exportName} } from \"${packageName}\";\n\ncreateApp({\n plugins: [\n ${exportName}(),\n // ... other plugins\n ],\n}).then((app) => { /* ... */ });\n\\`\\`\\`\n`;\n\n writeTracked(path.join(targetDir, \"README.md\"), readme, written);\n }\n } catch (err) {\n rollback(written, targetDir);\n throw err;\n }\n}\n"],"mappings":"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"}
@@ -9,10 +9,10 @@ import { isInternalTelemetryEnabled } from "../internal-telemetry/config.js";
9
9
  import { TelemetryReporter } from "../internal-telemetry/reporter.js";
10
10
  import "../internal-telemetry/index.js";
11
11
  import { isPlainObject } from "../plugin/plugin.js";
12
- import { uiVariants } from "../plugins/ui-variants/index.js";
13
12
  import { ResourceType } from "../registry/types.generated.js";
14
13
  import { ResourceRegistry } from "../registry/resource-registry.js";
15
14
  import "../registry/index.js";
15
+ import { uiVariants } from "../plugins/ui-variants/index.js";
16
16
  import { LifecycleManager } from "./lifecycle-manager.js";
17
17
  import { PluginContext, isToolProvider } from "./plugin-context.js";
18
18
 
package/dist/index.d.ts CHANGED
@@ -7,18 +7,7 @@ import { ApiError } from "./shared/src/workspace-client/errors.js";
7
7
  import { createWorkspaceClient } from "./shared/src/workspace-client/factory.js";
8
8
  import "./shared/src/index.js";
9
9
  import { WorkspaceClient, WorkspaceClientOptions } from "./workspace-client/index.js";
10
- import { ExecutionResult } from "./plugin/execution-result.js";
11
10
  import { CacheManager } from "./cache/index.js";
12
- import { ITelemetry, TelemetryConfig } from "./telemetry/types.js";
13
- import { Counter, Histogram, SeverityNumber, Span, SpanStatusCode } from "./telemetry/index.js";
14
- import { Plugin } from "./plugin/plugin.js";
15
- import { toPlugin } from "./plugin/to-plugin.js";
16
- import "./plugin/index.js";
17
- import { ResourcePermission, ResourceType } from "./registry/types.generated.js";
18
- import { ConfigSchema, PluginManifest, ResourceEntry, ResourceRequirement, ValidationResult } from "./registry/types.js";
19
- import { getPluginManifest, getResourceRequirements } from "./registry/manifest-loader.js";
20
- import { ResourceRegistry } from "./registry/resource-registry.js";
21
- import "./registry/index.js";
22
11
  import { JobsConnectorConfig } from "./connectors/jobs/types.js";
23
12
  import "./connectors/jobs/index.js";
24
13
  import { LakebasePoolManager, createLakebasePoolManager } from "./connectors/lakebase/pool-manager.js";
@@ -26,6 +15,8 @@ import { LakebasePool } from "./connectors/lakebase/routing-pool.js";
26
15
  import { DatabaseCredential, GenerateDatabaseCredentialRequest, LakebasePoolConfig, RequestedClaims, RequestedClaimsPermissionSet, RequestedResource, createLakebasePool, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient } from "./connectors/lakebase/index.js";
27
16
  import { getExecutionContext } from "./context/execution-context.js";
28
17
  import "./context/index.js";
18
+ import { ITelemetry, TelemetryConfig } from "./telemetry/types.js";
19
+ import { Counter, Histogram, SeverityNumber, Span, SpanStatusCode } from "./telemetry/index.js";
29
20
  import { createApp } from "./core/appkit.js";
30
21
  import "./core/index.js";
31
22
  import { AppKitError } from "./errors/base.js";
@@ -37,8 +28,17 @@ import { InitializationError } from "./errors/initialization.js";
37
28
  import { ServerError } from "./errors/server.js";
38
29
  import { TunnelError } from "./errors/tunnel.js";
39
30
  import { ValidationError } from "./errors/validation.js";
31
+ import { ExecutionResult } from "./plugin/execution-result.js";
32
+ import { Plugin } from "./plugin/plugin.js";
33
+ import { toPlugin } from "./plugin/to-plugin.js";
34
+ import "./plugin/index.js";
40
35
  import { FileAction, FilePolicy, FilePolicyUser, FileResource, PolicyDeniedError, READ_ACTIONS, WRITE_ACTIONS } from "./plugins/files/policy.js";
41
36
  import { analytics } from "./plugins/analytics/analytics.js";
37
+ import { ResourcePermission, ResourceType } from "./registry/types.generated.js";
38
+ import { ConfigSchema, PluginManifest, ResourceEntry, ResourceRequirement, ValidationResult } from "./registry/types.js";
39
+ import { defineManifest, getPluginManifest, getResourceRequirements } from "./registry/manifest-loader.js";
40
+ import { ResourceRegistry } from "./registry/resource-registry.js";
41
+ import "./registry/index.js";
42
42
  import { files } from "./plugins/files/plugin.js";
43
43
  import { genie } from "./plugins/genie/genie.js";
44
44
  import { IJobsConfig, JobAPI, JobConfig, JobsExport } from "./plugins/jobs/types.js";
@@ -52,4 +52,4 @@ import "./plugins/ga-exports.generated.js";
52
52
  import { extractServingEndpoints, findServerFile } from "./type-generator/serving/server-file-extractor.js";
53
53
  import { appKitServingTypesPlugin } from "./type-generator/serving/vite-plugin.js";
54
54
  import { appKitTypesPlugin } from "./type-generator/vite-plugin.js";
55
- export { ApiError, AppKitError, AuthenticationError, type BasePluginConfig, type CacheConfig, CacheManager, type ConfigSchema, ConfigurationError, ConnectionError, type Counter, type DatabaseCredential, type EndpointConfig, ExecutionError, type ExecutionResult, type FileAction, type FilePolicy, type FilePolicyUser, type FileResource, type GenerateDatabaseCredentialRequest, type Histogram, type IAppRouter, type IJobsConfig, type ITelemetry, InitializationError, type JobAPI, type JobConfig, type JobsConnectorConfig, type JobsExport, type LakebasePool, type LakebasePoolConfig, type LakebasePoolManager, Plugin, type PluginData, type PluginManifest, PolicyDeniedError, READ_ACTIONS, type RequestedClaims, RequestedClaimsPermissionSet, type RequestedResource, type ResourceEntry, type ResourceFieldEntry, type ResourcePermission, ResourceRegistry, type ResourceRequirement, ResourceType, ServerError, type ServingEndpointEntry, type ServingEndpointRegistry, type ServingFactory, SeverityNumber, type Span, SpanStatusCode, type StreamExecutionSettings, type TelemetryConfig, type ToPlugin, TunnelError, ValidationError, type ValidationResult, WRITE_ACTIONS, type WorkspaceClient, type WorkspaceClientOptions, analytics, appKitServingTypesPlugin, appKitTypesPlugin, createApp, createLakebasePool, createLakebasePoolManager, createWorkspaceClient, extractServingEndpoints, files, findServerFile, generateDatabaseCredential, genie, getExecutionContext, getLakebaseOrmConfig, getLakebasePgConfig, getPluginManifest, getResourceRequirements, getUsernameWithApiLookup, getWorkspaceClient, isSQLTypeMarker, jobs, lakebase, server, serving, sql, toPlugin };
55
+ export { ApiError, AppKitError, AuthenticationError, type BasePluginConfig, type CacheConfig, CacheManager, type ConfigSchema, ConfigurationError, ConnectionError, type Counter, type DatabaseCredential, type EndpointConfig, ExecutionError, type ExecutionResult, type FileAction, type FilePolicy, type FilePolicyUser, type FileResource, type GenerateDatabaseCredentialRequest, type Histogram, type IAppRouter, type IJobsConfig, type ITelemetry, InitializationError, type JobAPI, type JobConfig, type JobsConnectorConfig, type JobsExport, type LakebasePool, type LakebasePoolConfig, type LakebasePoolManager, Plugin, type PluginData, type PluginManifest, PolicyDeniedError, READ_ACTIONS, type RequestedClaims, RequestedClaimsPermissionSet, type RequestedResource, type ResourceEntry, type ResourceFieldEntry, type ResourcePermission, ResourceRegistry, type ResourceRequirement, ResourceType, ServerError, type ServingEndpointEntry, type ServingEndpointRegistry, type ServingFactory, SeverityNumber, type Span, SpanStatusCode, type StreamExecutionSettings, type TelemetryConfig, type ToPlugin, TunnelError, ValidationError, type ValidationResult, WRITE_ACTIONS, type WorkspaceClient, type WorkspaceClientOptions, analytics, appKitServingTypesPlugin, appKitTypesPlugin, createApp, createLakebasePool, createLakebasePoolManager, createWorkspaceClient, defineManifest, extractServingEndpoints, files, findServerFile, generateDatabaseCredential, genie, getExecutionContext, getLakebaseOrmConfig, getLakebasePgConfig, getPluginManifest, getResourceRequirements, getUsernameWithApiLookup, getWorkspaceClient, isSQLTypeMarker, jobs, lakebase, server, serving, sql, toPlugin };
package/dist/index.js CHANGED
@@ -21,7 +21,7 @@ import { Plugin } from "./plugin/plugin.js";
21
21
  import { toPlugin } from "./plugin/to-plugin.js";
22
22
  import "./plugin/index.js";
23
23
  import { ResourceType } from "./registry/types.generated.js";
24
- import { getPluginManifest, getResourceRequirements } from "./registry/manifest-loader.js";
24
+ import { defineManifest, getPluginManifest, getResourceRequirements } from "./registry/manifest-loader.js";
25
25
  import { ResourceRegistry } from "./registry/resource-registry.js";
26
26
  import "./registry/index.js";
27
27
  import { createApp } from "./core/appkit.js";
@@ -39,4 +39,4 @@ import { server } from "./plugins/server/index.js";
39
39
  import { serving } from "./plugins/serving/serving.js";
40
40
  import "./plugins/ga-exports.generated.js";
41
41
 
42
- export { ApiError, AppKitError, AuthenticationError, CacheManager, ConfigurationError, ConnectionError, ExecutionError, InitializationError, Plugin, PolicyDeniedError, READ_ACTIONS, RequestedClaimsPermissionSet, ResourceRegistry, ResourceType, ServerError, SeverityNumber, SpanStatusCode, TunnelError, ValidationError, WRITE_ACTIONS, analytics, appKitServingTypesPlugin, appKitTypesPlugin, createApp, createLakebasePool, createLakebasePoolManager, createWorkspaceClient, extractServingEndpoints, files, findServerFile, generateDatabaseCredential, genie, getExecutionContext, getLakebaseOrmConfig, getLakebasePgConfig, getPluginManifest, getResourceRequirements, getUsernameWithApiLookup, getWorkspaceClient, isSQLTypeMarker, jobs, lakebase, server, serving, sql, toPlugin };
42
+ export { ApiError, AppKitError, AuthenticationError, CacheManager, ConfigurationError, ConnectionError, ExecutionError, InitializationError, Plugin, PolicyDeniedError, READ_ACTIONS, RequestedClaimsPermissionSet, ResourceRegistry, ResourceType, ServerError, SeverityNumber, SpanStatusCode, TunnelError, ValidationError, WRITE_ACTIONS, analytics, appKitServingTypesPlugin, appKitTypesPlugin, createApp, createLakebasePool, createLakebasePoolManager, createWorkspaceClient, defineManifest, extractServingEndpoints, files, findServerFile, generateDatabaseCredential, genie, getExecutionContext, getLakebaseOrmConfig, getLakebasePgConfig, getPluginManifest, getResourceRequirements, getUsernameWithApiLookup, getWorkspaceClient, isSQLTypeMarker, jobs, lakebase, server, serving, sql, toPlugin };
@@ -1,11 +1,11 @@
1
1
  import { BasePlugin, BasePluginConfig, IAppResponse, PluginEndpointMap, PluginPhase, RouteConfig } from "../shared/src/plugin.js";
2
2
  import { PluginExecutionSettings, StreamExecuteHandler, StreamExecutionSettings } from "../shared/src/execute.js";
3
3
  import "../shared/src/index.js";
4
- import { ExecutionResult } from "./execution-result.js";
5
- import { AppManager } from "../app/index.js";
6
4
  import { CacheManager } from "../cache/index.js";
7
5
  import { ITelemetry } from "../telemetry/types.js";
8
6
  import "../telemetry/index.js";
7
+ import { ExecutionResult } from "./execution-result.js";
8
+ import { AppManager } from "../app/index.js";
9
9
  import { PluginContext } from "../core/plugin-context.js";
10
10
  import { StreamManager } from "../stream/stream-manager.js";
11
11
  import "../stream/index.js";
@@ -5,11 +5,11 @@ import { AgentDefinition, AgentsPluginConfig, RegisteredAgent } from "../../core
5
5
  import { Plugin } from "../../plugin/plugin.js";
6
6
  import "../../plugin/index.js";
7
7
  import { PluginManifest } from "../../registry/types.js";
8
- import "../../registry/index.js";
8
+ import "../../index.js";
9
9
 
10
10
  //#region src/plugins/agents/agents.d.ts
11
11
  declare class AgentsPlugin extends Plugin implements ToolProvider {
12
- static manifest: PluginManifest;
12
+ static manifest: PluginManifest<"agents">;
13
13
  static phase: PluginPhase;
14
14
  protected config: AgentsPluginConfig;
15
15
  private agents;
@@ -264,7 +264,7 @@ declare class AgentsPlugin extends Plugin implements ToolProvider {
264
264
  * });
265
265
  * ```
266
266
  */
267
- declare const agents: ToPlugin<typeof AgentsPlugin, AgentsPluginConfig, string>;
267
+ declare const agents: ToPlugin<typeof AgentsPlugin, AgentsPluginConfig, "agents">;
268
268
  //#endregion
269
269
  export { AgentsPlugin, agents };
270
270
  //# sourceMappingURL=agents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","names":[],"sources":["../../../src/plugins/agents/agents.ts"],"mappings":";;;;;;;;;;cAsJa,YAAA,SAAqB,MAAA,YAAkB,YAAA;EAAA,OAK3C,QAAA,EAAkC,cAAA;EAAA,OAClC,KAAA,EAAO,WAAA;EAAA,UAEI,MAAA,EAAQ,kBAAA;EAAA,QAElB,MAAA;EAAA,QACA,gBAAA;EAAA,QACA,aAAA;EAZgB;;;;;;EAAA,QAsBhB,gBAAA;EAAA,QACA,SAAA;EAAA,QACA,WAAA;EAAA,QACA,YAAA;EAqzBa;EAAA,QAnzBb,0BAAA;EA+wDU;EAAA,QA7wDV,6BAAA;cAEI,MAAA,EAAQ,kBAAA;EAwxDE;;;;;;;;;;EAAA,QAzvDd,oBAAA;EAAA,YAKI,sBAAA,CAAA;EA7DL;EAAA,YAuFK,cAAA,CAAA;EArFM;EAAA,QAwGV,gBAAA;EAtGA;;;;;;EAAA,QAgHA,WAAA;EA/FA;;;;;EAAA,QAgHA,aAAA;EAYF,KAAA,CAAA,GAAK,OAAA;EA1DC;;;;;;EAyEN,MAAA,CAAA,GAAU,OAAA;EAAA;;;;;EAAA,QA0BF,kBAAA;EAsKA;;;;;EAAA,QAjEN,mBAAA;EAsPM;;;;EAAA,QAxNN,uBAAA;EAifR;;;;EAAA,QAleQ,0BAAA;EAAA,QAUA,iBAAA;EAkfa;;;;;;EAAA,QAxeP,cAAA;EAguBA;EAAA,QAnsBN,mBAAA;EAAA,QAeM,mBAAA;EA4rCA;;;;;;EAAA,QAzoCN,mBAAA;EAAA,QAmBM,oBAAA;EAAA,QAuBA,cAAA;EA2zCI;;;;;EAAA,QA/wCJ,cAAA;EAyxCmC;;;;;;;;;;;EAAA,QAzqCzC,eAAA;EAmrCM;;;AAwJhB;;;;;;;;;EAxJgB,QAvpCN,eAAA;EAAA,QAkBM,gBAAA;EAAA,QA0DA,kBAAA;EAiEd,aAAA,CAAA,GAAiB,mBAAA;EAIX,gBAAA,CAAA,GAAoB,OAAA;;;;;;;UAYlB,iBAAA;EAUR,YAAA,CAAa,MAAA,EAAQ,UAAA;EAkDrB,YAAA,CAAA,GAAgB,MAAA;EAAA,QAOF,WAAA;;;;;;;;;;;;UA6EN,gCAAA;;;;;;;;;;;UAuBM,aAAA;EAAA,QA2FA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;UA2NA,qBAAA;;;;;;;;;;;;UA0KA,gBAAA;;;;;;;;;;;;;;;UAmIA,WAAA;EAAA,QAiGA,aAAA;EAAA,QA2BA,cAAA;EAAA,QAuCA,kBAAA;EAAA,QASA,gBAAA;EAAA,QAUA,mBAAA;EAAA,QAaN,YAAA;EAAA,QASA,aAAA;EAgBF,QAAA,CAAA,GAAY,OAAA;EAQlB,OAAA,CAAA;6BAE2B,GAAA,EAAO,eAAA,KAAe,OAAA;;2BAG3B,eAAA;;;oCAGS,OAAA,CAAA,MAAA;EAAA;EAAA,QAIjB,iBAAA;AAAA;;;;;;;;;;;;;;;;;;cAwJH,MAAA,EAAM,QAAA,QAAA,YAAA,EAAA,kBAAA"}
1
+ {"version":3,"file":"agents.d.ts","names":[],"sources":["../../../src/plugins/agents/agents.ts"],"mappings":";;;;;;;;;;cAsJa,YAAA,SAAqB,MAAA,YAAkB,YAAA;EAAA,OAC3C,QAAA,EADiB,cAAA;EAAA,OAEjB,KAAA,EAAO,WAAA;EAAA,UAEI,MAAA,EAAQ,kBAAA;EAAA,QAElB,MAAA;EAAA,QACA,gBAAA;EAAA,QACA,aAAA;EARG;;;;;;EAAA,QAkBH,gBAAA;EAAA,QACA,SAAA;EAAA,QACA,WAAA;EAAA,QACA,YAAA;EA+xBkB;EAAA,QA7xBlB,0BAAA;EAq2BQ;EAAA,QAn2BR,6BAAA;cAEI,MAAA,EAAQ,kBAAA;EAqxD6B;;;;;;;;;;EAAA,QAtvDzC,oBAAA;EAAA,YAKI,sBAAA,CAAA;EA9DG;EAAA,YAwFH,cAAA,CAAA;EAvFE;EAAA,QA0GN,gBAAA;EAxGkB;;;;;;EAAA,QAkHlB,WAAA;EAjGA;;;;;EAAA,QAkHA,aAAA;EAYF,KAAA,CAAA,GAAK,OAAA;EApFC;;;;;;EAmGN,MAAA,CAAA,GAAU,OAAA;EAAV;;;;;EAAA,QA0BQ,kBAAA;EA4JN;;;;;EAAA,QAvDA,mBAAA;EA0MM;;;;EAAA,QA5KN,uBAAA;EAgbM;;;;EAAA,QAjaN,0BAAA;EAAA,QAUA,iBAAA;EAkfR;;;;;;EAAA,QAxec,cAAA;EAqoBA;EAAA,QAxmBN,mBAAA;EAAA,QAeM,mBAAA;EAyjCA;;;;;;EAAA,QAtgCN,mBAAA;EAAA,QAmBM,oBAAA;EAAA,QAuBA,cAAA;EA2zCR;;;;;EAAA,QA/wCQ,cAAA;EAyxCa;;;;;;;;;;;EAAA,QAzqCnB,eAAA;EA+qCuB;;;;AA4JjC;;;;;;;;EA5JiC,QAnpCvB,eAAA;EAAA,QAkBM,gBAAA;EAAA,QA0DA,kBAAA;EAiEd,aAAA,CAAA,GAAiB,mBAAA;EAIX,gBAAA,CAAA,GAAoB,OAAA;;;;;;;UAYlB,iBAAA;EAUR,YAAA,CAAa,MAAA,EAAQ,UAAA;EAkDrB,YAAA,CAAA,GAAgB,MAAA;EAAA,QAOF,WAAA;;;;;;;;;;;;UA6EN,gCAAA;;;;;;;;;;;UAuBM,aAAA;EAAA,QA2FA,YAAA;;;;;;;;;;;;;;;;;;;;;;;;UA2NA,qBAAA;;;;;;;;;;;;UA0KA,gBAAA;;;;;;;;;;;;;;;UAmIA,WAAA;EAAA,QAiGA,aAAA;EAAA,QA2BA,cAAA;EAAA,QAuCA,kBAAA;EAAA,QASA,gBAAA;EAAA,QAUA,mBAAA;EAAA,QAaN,YAAA;EAAA,QASA,aAAA;EAgBF,QAAA,CAAA,GAAY,OAAA;EAQlB,OAAA,CAAA;6BAE2B,GAAA,EAAO,eAAA,KAAe,OAAA;;2BAG3B,eAAA;;;oCAGS,OAAA,CAAA,MAAA;EAAA;EAAA,QAIjB,iBAAA;AAAA;;;;;;;;;;;;;;;;;;cAwJH,MAAA,EAAM,QAAA,QAAA,YAAA,EAAA,kBAAA"}
@@ -2,6 +2,8 @@ import { createLogger } from "../../logging/logger.js";
2
2
  import { Plugin } from "../../plugin/plugin.js";
3
3
  import { toPlugin } from "../../plugin/to-plugin.js";
4
4
  import "../../plugin/index.js";
5
+ import { defineManifest } from "../../registry/manifest-loader.js";
6
+ import "../../registry/index.js";
5
7
  import { buildMcpHostPolicy } from "../../connectors/mcp/host-policy.js";
6
8
  import { AppKitMcpClient } from "../../connectors/mcp/client.js";
7
9
  import "../../connectors/mcp/index.js";
@@ -58,7 +60,7 @@ function requiresApproval(annotations) {
58
60
  }
59
61
  }
60
62
  var AgentsPlugin = class extends Plugin {
61
- static manifest = manifest_default;
63
+ static manifest = defineManifest(manifest_default);
62
64
  static phase = "deferred";
63
65
  agents = /* @__PURE__ */ new Map();
64
66
  defaultAgentName = null;