@databricks/appkit 0.79.0 → 0.80.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.
@@ -1,6 +1,6 @@
1
1
  //#region package.json
2
2
  var name = "@databricks/appkit";
3
- var version = "0.79.0";
3
+ var version = "0.80.0";
4
4
 
5
5
  //#endregion
6
6
  export { name, version };
@@ -26,6 +26,8 @@ declare class DatabasePlugin<TSchema extends Schema = DefaultDatabaseSchema> ext
26
26
  setup(): Promise<void>;
27
27
  /** Register generated CRUD, subject to the configured table and write restrictions. */
28
28
  injectRoutes(router: express.Router): void;
29
+ /** Name every declared table once at boot, beside what reaches it over HTTP. */
30
+ private printTables;
29
31
  /** Typed hook keys are schema table names, which routing addresses at runtime. */
30
32
  private hooks;
31
33
  /** Return the typed database API only while the plugin is active. */
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","names":[],"sources":["../../../src/plugins/database/database.ts"],"mappings":";;;;;;;;;;;;;cAoCa,cAAA,iBACK,MAAA,GAAS,qBAAA,UACjB,MAAA,CAAO,eAAA,CAAgB,OAAA;;SAExB,QAAA,EAAuB,cAAA;EAAA,UACZ,MAAA,EAAQ,eAAA,CAAgB,OAAA;EAAA,QAClC,KAAA;EAAA,QACA,YAAA;EAAA,QACA,QAAA;EAAA,QACA,eAAA;EAAA,QACA,QAAA;EAAA,QACA,cAAA;cAEI,MAAA,GAAQ,eAAA,CAAgB,OAAA;EATN;EAoBxB,KAAA,CAAA,GAAS,OAAA;EAnBW;EAoE1B,YAAA,CAAa,MAAA,EAAQ,OAAA,CAAQ,MAAA;EA5DT;EAAA,QA6HZ,KAAA;EAjEa;EAsErB,OAAA,CAAA,GAOO,eAAA;EAIW;EAAZ,QAAA,CAAA,GAAY,OAAA;EAxJJ;EAAA,QA4KN,YAAA;AAAA;AAAA,KA8BL,oBAAA,iBAAqC,MAAA;EACxC,MAAA,EAAQ,iBAAA,CAAkB,gBAAA,EAAkB,cAAA,CAAe,OAAA;EAC3D,MAAA,EAAQ,eAAA,CAAgB,OAAA;EACxB,IAAA;AAAA;;;;;iBAOc,QAAA,iBAAyB,MAAA,CAAA,CACvC,MAAA,EAAQ,eAAA,CAAgB,OAAA;EAAA,SAAsB,MAAA,EAAQ,OAAA;AAAA,IACrD,oBAAA,CAAqB,OAAA;EACtB,MAAA,EAAQ,eAAA,CAAgB,OAAA;IAAA,SAAsB,MAAA,EAAQ,OAAA;EAAA;AAAA;;;;;;iBAOxC,QAAA,iBAAyB,MAAA,GAAS,qBAAA,CAAA,CAChD,MAAA,GAAS,eAAA,CAAgB,OAAA,IACxB,oBAAA,CAAqB,OAAA"}
1
+ {"version":3,"file":"database.d.ts","names":[],"sources":["../../../src/plugins/database/database.ts"],"mappings":";;;;;;;;;;;;;cAqCa,cAAA,iBACK,MAAA,GAAS,qBAAA,UACjB,MAAA,CAAO,eAAA,CAAgB,OAAA;;SAExB,QAAA,EAAuB,cAAA;EAAA,UACZ,MAAA,EAAQ,eAAA,CAAgB,OAAA;EAAA,QAClC,KAAA;EAAA,QACA,YAAA;EAAA,QACA,QAAA;EAAA,QACA,eAAA;EAAA,QACA,QAAA;EAAA,QACA,cAAA;cAEI,MAAA,GAAQ,eAAA,CAAgB,OAAA;EATN;EAoBxB,KAAA,CAAA,GAAS,OAAA;EAnBW;EAqE1B,YAAA,CAAa,MAAA,EAAQ,OAAA,CAAQ,MAAA;EA7DT;EAAA,QA8HZ,WAAA;EAjEa;EAAA,QAqGb,KAAA;EAgBU;EAXlB,OAAA,CAAA,GAOO,eAAA;EAzLO;EA6LR,QAAA,CAAA,GAAY,OAAA;EA9LlB;EAAA,QAkNQ,YAAA;AAAA;AAAA,KA8BL,oBAAA,iBAAqC,MAAA;EACxC,MAAA,EAAQ,iBAAA,CAAkB,gBAAA,EAAkB,cAAA,CAAe,OAAA;EAC3D,MAAA,EAAQ,eAAA,CAAgB,OAAA;EACxB,IAAA;AAAA;;;;;iBAOc,QAAA,iBAAyB,MAAA,CAAA,CACvC,MAAA,EAAQ,eAAA,CAAgB,OAAA;EAAA,SAAsB,MAAA,EAAQ,OAAA;AAAA,IACrD,oBAAA,CAAqB,OAAA;EACtB,MAAA,EAAQ,eAAA,CAAgB,OAAA;IAAA,SAAsB,MAAA,EAAQ,OAAA;EAAA;AAAA;;;;;;iBAOxC,QAAA,iBAAyB,MAAA,GAAS,qBAAA,CAAA,CAChD,MAAA,GAAS,eAAA,CAAgB,OAAA,IACxB,oBAAA,CAAqB,OAAA"}
@@ -10,6 +10,7 @@ import { createCreateHandler, createDeleteHandler, createDetailHandler, createLi
10
10
  import { createDatabaseState } from "./lifecycle.js";
11
11
  import { loadDefaultDatabaseSchema } from "./load-schema.js";
12
12
  import manifest_default from "./manifest.js";
13
+ import pc from "picocolors";
13
14
 
14
15
  //#region src/plugins/database/database.ts
15
16
  /** Schema-driven database plugin */
@@ -56,6 +57,7 @@ var DatabasePlugin = class extends Plugin {
56
57
  this.resolvedSchema = schema;
57
58
  this.exposure = exposure;
58
59
  this.state = candidate;
60
+ this.printTables(schema);
59
61
  })();
60
62
  return this.setupPromise;
61
63
  }
@@ -108,6 +110,38 @@ var DatabasePlugin = class extends Plugin {
108
110
  });
109
111
  }
110
112
  }
113
+ /** Name every declared table once at boot, beside what reaches it over HTTP. */
114
+ printTables(schema) {
115
+ const names = Object.keys(schema.$tables).sort();
116
+ if (names.length === 0) return;
117
+ const exposed = new Set(this.exposure.tables);
118
+ const separator = pc.dim("─".repeat(60));
119
+ const rows = names.map((name) => {
120
+ const table = schema.$tables[name];
121
+ const columns = Object.keys(table.$columns).length;
122
+ const relations = table.$relations.length;
123
+ return {
124
+ name,
125
+ columns: `${columns} ${columns === 1 ? "column" : "columns"}`,
126
+ relations: `${relations} ${relations === 1 ? "relation" : "relations"}`,
127
+ serverOnly: !exposed.has(name)
128
+ };
129
+ });
130
+ const nameWidth = Math.max(...rows.map((r) => r.name.length));
131
+ const columnsWidth = Math.max(...rows.map((r) => r.columns.length));
132
+ const relationsWidth = Math.max(...rows.map((r) => r.relations.length));
133
+ console.log("");
134
+ console.log(` ${pc.bold("Tables")} ${pc.dim(`(${names.length})`)}`);
135
+ console.log(` ${separator}`);
136
+ for (const row of rows) {
137
+ const name = pc.bold(row.name.padEnd(nameWidth));
138
+ const columns = pc.dim(row.columns.padEnd(columnsWidth));
139
+ const line = row.serverOnly ? `${pc.dim(row.relations.padEnd(relationsWidth))} ${pc.yellow("server-only")}` : pc.dim(row.relations);
140
+ console.log(` ${name} ${columns} ${line}`);
141
+ }
142
+ console.log(` ${separator}`);
143
+ console.log("");
144
+ }
111
145
  /** Typed hook keys are schema table names, which routing addresses at runtime. */
112
146
  hooks() {
113
147
  return this.config.hooks;
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","names":["manifest"],"sources":["../../../src/plugins/database/database.ts"],"sourcesContent":["import type express from \"express\";\nimport type { BasePluginConfig, PluginConstructor } from \"shared\";\n\nimport {\n DatabasePluginError,\n databaseSetupFailed,\n} from \"../../database/errors\";\nimport type { Schema } from \"../../database/schema-builder\";\nimport { assertFinalizedSchema } from \"../../database/schema-builder/define-schema\";\nimport { Plugin } from \"../../plugin\";\nimport type { PluginManifest } from \"../../registry\";\nimport { assertDatabaseConfig } from \"./config\";\nimport { compileCrudTables } from \"./crud/contract\";\nimport { type CrudExposure, resolveCrudExposure } from \"./crud/exposure\";\nimport { routeOutcome } from \"./crud/response\";\nimport {\n type CrudEntity,\n type CrudOperation,\n type CrudRouteDeps,\n createCreateHandler,\n createDeleteHandler,\n createDetailHandler,\n createListHandler,\n createUpdateHandler,\n} from \"./crud/routes\";\nimport type { DatabaseExports } from \"./entity-types\";\nimport { createDatabaseState, type DatabaseState } from \"./lifecycle\";\nimport { loadDefaultDatabaseSchema } from \"./load-schema\";\nimport manifest from \"./manifest.json\";\nimport type {\n DatabaseHooks,\n DefaultDatabaseSchema,\n IDatabaseConfig,\n} from \"./types\";\n\n/** Schema-driven database plugin */\nexport class DatabasePlugin<\n TSchema extends Schema = DefaultDatabaseSchema,\n> extends Plugin<IDatabaseConfig<TSchema>> {\n /** Plugin metadata and required PostgreSQL resource. */\n static manifest = manifest as PluginManifest<\"database\">;\n declare protected config: IDatabaseConfig<TSchema>;\n private state: DatabaseState | null = null;\n private setupPromise: Promise<void> | null = null;\n private draining = false;\n private shutdownPromise: Promise<void> | null = null;\n private exposure: CrudExposure = { tables: [], writes: new Map() };\n private resolvedSchema: Schema | null = null;\n\n constructor(config: IDatabaseConfig<TSchema> = {}) {\n assertDatabaseConfig(config);\n super({ schema: config.schema });\n this.config = {\n schema: config.schema,\n api: config.api,\n hooks: config.hooks,\n };\n }\n\n /** Build and verify one candidate state before publishing its exports. */\n async setup(): Promise<void> {\n if (this.draining || this.state) throw databaseSetupFailed();\n if (!this.setupPromise) {\n const attempt = (async () => {\n const schema =\n this.config.schema === undefined\n ? await loadDefaultDatabaseSchema()\n : this.config.schema;\n try {\n assertFinalizedSchema(schema);\n } catch {\n throw databaseSetupFailed(\n \"schema must be a finalized AppKit schema created with defineSchema().\",\n );\n }\n if (this.draining) throw databaseSetupFailed();\n const exposure = resolveCrudExposure(\n this.config.api,\n Object.keys(schema.$tables),\n );\n // A hook key naming no declared table would silently never run.\n for (const name of Object.keys(this.hooks() ?? {})) {\n if (!Object.hasOwn(schema.$tables, name)) {\n throw databaseSetupFailed(\n `hooks names undeclared table ${JSON.stringify(name)}. Use a table declared in schema.`,\n );\n }\n }\n const candidate = await createDatabaseState(\n schema,\n (operation, options) => this.execute(operation, options),\n this.hooks(),\n );\n if (this.draining) {\n // Setup may finish while shutdown is waiting; never publish that state.\n candidate.deactivate();\n await candidate.pool.end().catch(() => undefined);\n throw databaseSetupFailed();\n }\n this.resolvedSchema = schema;\n this.exposure = exposure;\n this.state = candidate;\n })();\n this.setupPromise = attempt;\n }\n return this.setupPromise;\n }\n\n /** Register generated CRUD, subject to the configured table and write restrictions. */\n injectRoutes(router: express.Router): void {\n if (this.exposure.tables.length === 0) return;\n const schema = this.resolvedSchema;\n if (!schema) throw databaseSetupFailed();\n const tables = compileCrudTables(\n Object.fromEntries(\n this.exposure.tables.map((name) => [name, schema.$tables[name]]),\n ),\n );\n const hooks = this.hooks();\n // Every exposed name is a declared table, so its export is an entity client.\n const entities = () =>\n this.exports() as unknown as Record<string, CrudEntity>;\n\n for (const table of tables.values()) {\n const deps: CrudRouteDeps = {\n table,\n entity: () => entities()[table.name],\n serialize: hooks?.[table.name]?.serialize,\n runRouteSpan: (operation, route, run) =>\n this.runRouteSpan(table.name, operation, route, run),\n };\n this.route(router, {\n name: `${table.name}.list`,\n method: \"get\",\n path: `/${table.name}`,\n handler: createListHandler(deps),\n });\n const writes = this.exposure.writes.get(table.name);\n if (writes?.has(\"create\")) {\n this.route(router, {\n name: `${table.name}.create`,\n method: \"post\",\n path: `/${table.name}`,\n handler: createCreateHandler(deps),\n });\n }\n // Addressing one row needs a public key.\n if (!table.primaryKey) continue;\n this.route(router, {\n name: `${table.name}.detail`,\n method: \"get\",\n path: `/${table.name}/:id`,\n handler: createDetailHandler(deps),\n });\n if (writes?.has(\"update\")) {\n this.route(router, {\n name: `${table.name}.update`,\n method: \"patch\",\n path: `/${table.name}/:id`,\n handler: createUpdateHandler(deps),\n });\n }\n if (writes?.has(\"delete\")) {\n this.route(router, {\n name: `${table.name}.delete`,\n method: \"delete\",\n path: `/${table.name}/:id`,\n handler: createDeleteHandler(deps),\n });\n }\n }\n }\n\n /** Typed hook keys are schema table names, which routing addresses at runtime. */\n private hooks(): DatabaseHooks | undefined {\n return this.config.hooks as DatabaseHooks | undefined;\n }\n\n /** Return the typed database API only while the plugin is active. */\n exports() {\n if (!this.state || this.draining)\n throw new DatabasePluginError(\"INTERNAL\", \"read\");\n // AppKit binds exported functions onto this object on every access.\n return Object.assign(\n Object.create(null),\n this.state.exports,\n ) as DatabaseExports;\n }\n\n /** Stop new work, wait for setup, and close the owned pool exactly once. */\n async shutdown(): Promise<void> {\n if (this.shutdownPromise) return this.shutdownPromise;\n this.draining = true;\n this.shutdownPromise = (async () => {\n await this.setupPromise?.catch(() => undefined);\n const state = this.state;\n state?.deactivate();\n this.state = null;\n if (state) {\n try {\n await state.pool.end();\n } catch {\n throw new DatabasePluginError(\"INTERNAL\", \"shutdown\");\n }\n }\n })();\n return this.shutdownPromise;\n }\n\n /** Trace one generated route with allowlisted, low-cardinality attributes. */\n private runRouteSpan(\n table: string,\n operation: CrudOperation,\n route: string,\n run: () => Promise<void>,\n ): Promise<void> {\n return this.telemetry.startActiveSpan(\n \"database.crud.route\",\n {\n attributes: {\n table_name: table,\n operation,\n \"http.route\": `/api/${this.name}${route}`,\n },\n },\n async (span) => {\n try {\n await run();\n span.setAttribute(\"outcome\", \"success\");\n } catch (error) {\n span.setAttribute(\"outcome\", routeOutcome(error));\n throw error;\n } finally {\n span.end();\n }\n },\n );\n }\n}\n\ntype DatabaseRegistration<TSchema extends Schema> = {\n plugin: PluginConstructor<BasePluginConfig, DatabasePlugin<TSchema>>;\n config: IDatabaseConfig<TSchema>;\n name: \"database\";\n};\n\n/**\n * Create the database plugin. Omit configuration to load\n * `config/database/schema.ts`, or supply a typed schema override.\n */\nexport function database<TSchema extends Schema>(\n config: IDatabaseConfig<TSchema> & { readonly schema: TSchema },\n): DatabaseRegistration<TSchema> & {\n config: IDatabaseConfig<TSchema> & { readonly schema: TSchema };\n};\n/**\n * Register the database plugin with opinionated defaults and full HTTP CRUD.\n * By default, setup loads the named `schema` export from the application's\n * `config/database/schema.ts`. Registration itself performs no file or database I/O.\n */\nexport function database<TSchema extends Schema = DefaultDatabaseSchema>(\n config?: IDatabaseConfig<TSchema>,\n): DatabaseRegistration<TSchema>;\nexport function database<TSchema extends Schema = DefaultDatabaseSchema>(\n config: IDatabaseConfig<TSchema> = {},\n): DatabaseRegistration<TSchema> {\n assertDatabaseConfig(config);\n return {\n plugin: DatabasePlugin as unknown as PluginConstructor<\n BasePluginConfig,\n DatabasePlugin<TSchema>\n >,\n config,\n name: \"database\" as const,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"database.js","names":["manifest"],"sources":["../../../src/plugins/database/database.ts"],"sourcesContent":["import type express from \"express\";\nimport pc from \"picocolors\";\nimport type { BasePluginConfig, PluginConstructor } from \"shared\";\n\nimport {\n DatabasePluginError,\n databaseSetupFailed,\n} from \"../../database/errors\";\nimport type { Schema } from \"../../database/schema-builder\";\nimport { assertFinalizedSchema } from \"../../database/schema-builder/define-schema\";\nimport { Plugin } from \"../../plugin\";\nimport type { PluginManifest } from \"../../registry\";\nimport { assertDatabaseConfig } from \"./config\";\nimport { compileCrudTables } from \"./crud/contract\";\nimport { type CrudExposure, resolveCrudExposure } from \"./crud/exposure\";\nimport { routeOutcome } from \"./crud/response\";\nimport {\n type CrudEntity,\n type CrudOperation,\n type CrudRouteDeps,\n createCreateHandler,\n createDeleteHandler,\n createDetailHandler,\n createListHandler,\n createUpdateHandler,\n} from \"./crud/routes\";\nimport type { DatabaseExports } from \"./entity-types\";\nimport { createDatabaseState, type DatabaseState } from \"./lifecycle\";\nimport { loadDefaultDatabaseSchema } from \"./load-schema\";\nimport manifest from \"./manifest.json\";\nimport type {\n DatabaseHooks,\n DefaultDatabaseSchema,\n IDatabaseConfig,\n} from \"./types\";\n\n/** Schema-driven database plugin */\nexport class DatabasePlugin<\n TSchema extends Schema = DefaultDatabaseSchema,\n> extends Plugin<IDatabaseConfig<TSchema>> {\n /** Plugin metadata and required PostgreSQL resource. */\n static manifest = manifest as PluginManifest<\"database\">;\n declare protected config: IDatabaseConfig<TSchema>;\n private state: DatabaseState | null = null;\n private setupPromise: Promise<void> | null = null;\n private draining = false;\n private shutdownPromise: Promise<void> | null = null;\n private exposure: CrudExposure = { tables: [], writes: new Map() };\n private resolvedSchema: Schema | null = null;\n\n constructor(config: IDatabaseConfig<TSchema> = {}) {\n assertDatabaseConfig(config);\n super({ schema: config.schema });\n this.config = {\n schema: config.schema,\n api: config.api,\n hooks: config.hooks,\n };\n }\n\n /** Build and verify one candidate state before publishing its exports. */\n async setup(): Promise<void> {\n if (this.draining || this.state) throw databaseSetupFailed();\n if (!this.setupPromise) {\n const attempt = (async () => {\n const schema =\n this.config.schema === undefined\n ? await loadDefaultDatabaseSchema()\n : this.config.schema;\n try {\n assertFinalizedSchema(schema);\n } catch {\n throw databaseSetupFailed(\n \"schema must be a finalized AppKit schema created with defineSchema().\",\n );\n }\n if (this.draining) throw databaseSetupFailed();\n const exposure = resolveCrudExposure(\n this.config.api,\n Object.keys(schema.$tables),\n );\n // A hook key naming no declared table would silently never run.\n for (const name of Object.keys(this.hooks() ?? {})) {\n if (!Object.hasOwn(schema.$tables, name)) {\n throw databaseSetupFailed(\n `hooks names undeclared table ${JSON.stringify(name)}. Use a table declared in schema.`,\n );\n }\n }\n const candidate = await createDatabaseState(\n schema,\n (operation, options) => this.execute(operation, options),\n this.hooks(),\n );\n if (this.draining) {\n // Setup may finish while shutdown is waiting; never publish that state.\n candidate.deactivate();\n await candidate.pool.end().catch(() => undefined);\n throw databaseSetupFailed();\n }\n this.resolvedSchema = schema;\n this.exposure = exposure;\n this.state = candidate;\n this.printTables(schema);\n })();\n this.setupPromise = attempt;\n }\n return this.setupPromise;\n }\n\n /** Register generated CRUD, subject to the configured table and write restrictions. */\n injectRoutes(router: express.Router): void {\n if (this.exposure.tables.length === 0) return;\n const schema = this.resolvedSchema;\n if (!schema) throw databaseSetupFailed();\n const tables = compileCrudTables(\n Object.fromEntries(\n this.exposure.tables.map((name) => [name, schema.$tables[name]]),\n ),\n );\n const hooks = this.hooks();\n // Every exposed name is a declared table, so its export is an entity client.\n const entities = () =>\n this.exports() as unknown as Record<string, CrudEntity>;\n\n for (const table of tables.values()) {\n const deps: CrudRouteDeps = {\n table,\n entity: () => entities()[table.name],\n serialize: hooks?.[table.name]?.serialize,\n runRouteSpan: (operation, route, run) =>\n this.runRouteSpan(table.name, operation, route, run),\n };\n this.route(router, {\n name: `${table.name}.list`,\n method: \"get\",\n path: `/${table.name}`,\n handler: createListHandler(deps),\n });\n const writes = this.exposure.writes.get(table.name);\n if (writes?.has(\"create\")) {\n this.route(router, {\n name: `${table.name}.create`,\n method: \"post\",\n path: `/${table.name}`,\n handler: createCreateHandler(deps),\n });\n }\n // Addressing one row needs a public key.\n if (!table.primaryKey) continue;\n this.route(router, {\n name: `${table.name}.detail`,\n method: \"get\",\n path: `/${table.name}/:id`,\n handler: createDetailHandler(deps),\n });\n if (writes?.has(\"update\")) {\n this.route(router, {\n name: `${table.name}.update`,\n method: \"patch\",\n path: `/${table.name}/:id`,\n handler: createUpdateHandler(deps),\n });\n }\n if (writes?.has(\"delete\")) {\n this.route(router, {\n name: `${table.name}.delete`,\n method: \"delete\",\n path: `/${table.name}/:id`,\n handler: createDeleteHandler(deps),\n });\n }\n }\n }\n\n /** Name every declared table once at boot, beside what reaches it over HTTP. */\n private printTables(schema: Schema): void {\n const names = Object.keys(schema.$tables).sort();\n if (names.length === 0) return;\n const exposed = new Set(this.exposure.tables);\n const separator = pc.dim(\"─\".repeat(60));\n const rows = names.map((name) => {\n const table = schema.$tables[name];\n const columns = Object.keys(table.$columns).length;\n const relations = table.$relations.length;\n return {\n name,\n columns: `${columns} ${columns === 1 ? \"column\" : \"columns\"}`,\n relations: `${relations} ${relations === 1 ? \"relation\" : \"relations\"}`,\n serverOnly: !exposed.has(name),\n };\n });\n const nameWidth = Math.max(...rows.map((r) => r.name.length));\n const columnsWidth = Math.max(...rows.map((r) => r.columns.length));\n const relationsWidth = Math.max(...rows.map((r) => r.relations.length));\n\n console.log(\"\");\n console.log(` ${pc.bold(\"Tables\")} ${pc.dim(`(${names.length})`)}`);\n console.log(` ${separator}`);\n for (const row of rows) {\n const name = pc.bold(row.name.padEnd(nameWidth));\n const columns = pc.dim(row.columns.padEnd(columnsWidth));\n const line = row.serverOnly\n ? `${pc.dim(row.relations.padEnd(relationsWidth))} ${pc.yellow(\"server-only\")}`\n : pc.dim(row.relations);\n console.log(` ${name} ${columns} ${line}`);\n }\n console.log(` ${separator}`);\n console.log(\"\");\n }\n\n /** Typed hook keys are schema table names, which routing addresses at runtime. */\n private hooks(): DatabaseHooks | undefined {\n return this.config.hooks as DatabaseHooks | undefined;\n }\n\n /** Return the typed database API only while the plugin is active. */\n exports() {\n if (!this.state || this.draining)\n throw new DatabasePluginError(\"INTERNAL\", \"read\");\n // AppKit binds exported functions onto this object on every access.\n return Object.assign(\n Object.create(null),\n this.state.exports,\n ) as DatabaseExports;\n }\n\n /** Stop new work, wait for setup, and close the owned pool exactly once. */\n async shutdown(): Promise<void> {\n if (this.shutdownPromise) return this.shutdownPromise;\n this.draining = true;\n this.shutdownPromise = (async () => {\n await this.setupPromise?.catch(() => undefined);\n const state = this.state;\n state?.deactivate();\n this.state = null;\n if (state) {\n try {\n await state.pool.end();\n } catch {\n throw new DatabasePluginError(\"INTERNAL\", \"shutdown\");\n }\n }\n })();\n return this.shutdownPromise;\n }\n\n /** Trace one generated route with allowlisted, low-cardinality attributes. */\n private runRouteSpan(\n table: string,\n operation: CrudOperation,\n route: string,\n run: () => Promise<void>,\n ): Promise<void> {\n return this.telemetry.startActiveSpan(\n \"database.crud.route\",\n {\n attributes: {\n table_name: table,\n operation,\n \"http.route\": `/api/${this.name}${route}`,\n },\n },\n async (span) => {\n try {\n await run();\n span.setAttribute(\"outcome\", \"success\");\n } catch (error) {\n span.setAttribute(\"outcome\", routeOutcome(error));\n throw error;\n } finally {\n span.end();\n }\n },\n );\n }\n}\n\ntype DatabaseRegistration<TSchema extends Schema> = {\n plugin: PluginConstructor<BasePluginConfig, DatabasePlugin<TSchema>>;\n config: IDatabaseConfig<TSchema>;\n name: \"database\";\n};\n\n/**\n * Create the database plugin. Omit configuration to load\n * `config/database/schema.ts`, or supply a typed schema override.\n */\nexport function database<TSchema extends Schema>(\n config: IDatabaseConfig<TSchema> & { readonly schema: TSchema },\n): DatabaseRegistration<TSchema> & {\n config: IDatabaseConfig<TSchema> & { readonly schema: TSchema };\n};\n/**\n * Register the database plugin with opinionated defaults and full HTTP CRUD.\n * By default, setup loads the named `schema` export from the application's\n * `config/database/schema.ts`. Registration itself performs no file or database I/O.\n */\nexport function database<TSchema extends Schema = DefaultDatabaseSchema>(\n config?: IDatabaseConfig<TSchema>,\n): DatabaseRegistration<TSchema>;\nexport function database<TSchema extends Schema = DefaultDatabaseSchema>(\n config: IDatabaseConfig<TSchema> = {},\n): DatabaseRegistration<TSchema> {\n assertDatabaseConfig(config);\n return {\n plugin: DatabasePlugin as unknown as PluginConstructor<\n BasePluginConfig,\n DatabasePlugin<TSchema>\n >,\n config,\n name: \"database\" as const,\n };\n}\n"],"mappings":"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"}
@@ -53,21 +53,101 @@ const METHOD_COLORS = {
53
53
  HEAD: pc.magenta,
54
54
  OPTIONS: pc.magenta
55
55
  };
56
+ /**
57
+ * Fold lines that share a method and differ in exactly one static segment:
58
+ * `/api/{a,b}/:id` instead of `/api/a/:id` and `/api/b/:id`. The largest fold
59
+ * is taken first, so each route lands on exactly one line.
60
+ */
61
+ function collapseRoutes(lines) {
62
+ const pending = new Map(lines.map((line) => [`${line.method} ${line.path}`, line]));
63
+ const collapsed = [];
64
+ while (pending.size > 0) {
65
+ const folds = /* @__PURE__ */ new Map();
66
+ let best;
67
+ for (const line of pending.values()) {
68
+ const segments = line.path.split("/");
69
+ for (let index = 0; index < segments.length; index++) {
70
+ const segment = segments[index];
71
+ if (segment === "" || /[:*?(){}[\],]/.test(segment)) continue;
72
+ const masked = segments.slice();
73
+ masked[index] = "\0";
74
+ const key = `${line.method} ${masked.join("/")}`;
75
+ let fold = folds.get(key);
76
+ if (!fold) {
77
+ fold = {
78
+ index,
79
+ members: []
80
+ };
81
+ folds.set(key, fold);
82
+ }
83
+ fold.members.push(line);
84
+ if (fold.members.length > (best?.members.length ?? 1)) best = fold;
85
+ }
86
+ }
87
+ if (!best) {
88
+ collapsed.push(...pending.values());
89
+ break;
90
+ }
91
+ const { index, members } = best;
92
+ const segments = members[0].path.split("/");
93
+ segments[index] = `{${members.map((m) => m.path.split("/")[index]).sort().join(",")}}`;
94
+ collapsed.push({
95
+ method: members[0].method,
96
+ path: segments.join("/")
97
+ });
98
+ for (const m of members) pending.delete(`${m.method} ${m.path}`);
99
+ }
100
+ return collapsed.sort((a, b) => a.method.localeCompare(b.method) || a.path.localeCompare(b.path));
101
+ }
56
102
  function printRoutes(routes) {
57
103
  if (routes.length === 0) return;
58
104
  const rows = routes.flatMap((r) => r.methods.map((m) => ({
59
105
  method: m,
60
106
  path: r.path
61
- }))).sort((a, b) => a.method.localeCompare(b.method) || a.path.localeCompare(b.path));
62
- const maxMethodLen = Math.max(...rows.map((r) => r.method.length));
107
+ })));
108
+ const lines = collapseRoutes(rows);
109
+ const maxMethodLen = Math.max(...lines.map((r) => r.method.length));
63
110
  const separator = pc.dim("─".repeat(50));
64
- const colorizeParams = (p) => p.replace(/(:[a-zA-Z_]\w*)/g, (match) => pc.cyan(match));
111
+ const width = process.stdout.columns || 80;
112
+ const pathColumn = 2 + maxMethodLen + 2;
113
+ const foldSegment = /^\{[^{}:,/]+(,[^{}:,/]+)+\}$/;
114
+ const legend = /* @__PURE__ */ new Map();
65
115
  console.log("");
66
116
  console.log(` ${pc.bold("Registered Routes")} ${pc.dim(`(${rows.length})`)}`);
67
117
  console.log(` ${separator}`);
68
- for (const { method, path } of rows) {
118
+ for (const { method, path } of lines) {
69
119
  const methodStr = (METHOD_COLORS[method] || pc.white)(pc.bold(method.padEnd(maxMethodLen)));
70
- console.log(` ${methodStr} ${colorizeParams(path)}`);
120
+ const fits = pathColumn + path.length <= width;
121
+ const painted = path.split("/").map((segment) => {
122
+ if (!foldSegment.test(segment)) return segment.replace(/(:[a-zA-Z_]\w*)/g, (m) => pc.cyan(m));
123
+ if (fits) return segment.replace(/[{},]/g, (c) => pc.dim(c));
124
+ let label = legend.get(segment);
125
+ if (!label) {
126
+ label = `{#${legend.size + 1}}`;
127
+ legend.set(segment, label);
128
+ }
129
+ return pc.magenta(label);
130
+ }).join("/");
131
+ console.log(` ${methodStr} ${painted}`);
132
+ }
133
+ if (legend.size > 0) console.log("");
134
+ const legendWidth = Math.min(width, 80);
135
+ for (const [segment, label] of legend) {
136
+ const indent = " ".repeat(label.length + 2);
137
+ const wrapped = [];
138
+ let current = "";
139
+ for (const name of segment.slice(1, -1).split(",")) {
140
+ const next = current ? `${current}, ${name}` : name;
141
+ if (current && 2 + indent.length + next.length + 1 > legendWidth) {
142
+ wrapped.push(`${current},`);
143
+ current = name;
144
+ } else current = next;
145
+ }
146
+ wrapped.push(current);
147
+ wrapped.forEach((text, i) => {
148
+ const head = i === 0 ? `${pc.magenta(label)} ` : indent;
149
+ console.log(` ${head}${text}`);
150
+ });
71
151
  }
72
152
  console.log(` ${separator}`);
73
153
  console.log("");
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["fs"],"sources":["../../../src/plugins/server/utils.ts"],"sourcesContent":["import crypto from \"node:crypto\";\nimport fs from \"node:fs\";\nimport type http from \"node:http\";\nimport path from \"node:path\";\n\nimport pc from \"picocolors\";\nimport type { PluginClientConfigs, PluginEndpoints } from \"shared\";\n\nexport function parseCookies(\n req: http.IncomingMessage,\n): Record<string, string> {\n const cookieHeader = req.headers.cookie;\n if (!cookieHeader) return {};\n\n // Fast path: if there's no semicolon, there's only one cookie\n const semicolonIndex = cookieHeader.indexOf(\";\");\n if (semicolonIndex === -1) {\n const eqIndex = cookieHeader.indexOf(\"=\");\n if (eqIndex === -1) return {};\n return {\n [cookieHeader.slice(0, eqIndex).trim()]: cookieHeader.slice(eqIndex + 1),\n };\n }\n\n // Multiple cookies: parse them all\n const cookies: Record<string, string> = {};\n const parts = cookieHeader.split(\";\");\n for (let i = 0; i < parts.length; i++) {\n const eqIndex = parts[i].indexOf(\"=\");\n if (eqIndex !== -1) {\n const key = parts[i].slice(0, eqIndex).trim();\n const value = parts[i].slice(eqIndex + 1);\n cookies[key] = value;\n }\n }\n return cookies;\n}\n\nexport function generateTunnelIdFromEmail(email?: string): string | undefined {\n if (!email) return undefined;\n\n const tunnelId = crypto\n .createHash(\"sha256\")\n .update(email)\n .digest(\"base64url\")\n .slice(0, 8);\n\n return tunnelId;\n}\n\nexport function getRoutes(stack: unknown[], basePath = \"\") {\n const routes: Array<{ path: string; methods: string[] }> = [];\n\n stack.forEach((layer: any) => {\n if (layer.route) {\n // normal route\n const path = basePath + layer.route.path;\n const methods = Object.keys(layer.route.methods).map((m) =>\n m.toUpperCase(),\n );\n routes.push({ path, methods });\n } else if (layer.name === \"router\" && layer.handle.stack) {\n // nested router\n const nestedBase =\n basePath +\n layer.regexp.source\n .replace(\"^\\\\\", \"\")\n .replace(\"\\\\/?(?=\\\\/|$)\", \"\")\n .replace(/\\\\\\//g, \"/\") // convert escaped slashes\n .replace(/\\$$/, \"\") || \"\";\n routes.push(...getRoutes(layer.handle.stack, nestedBase));\n }\n });\n\n return routes;\n}\n\nconst METHOD_COLORS: Record<string, (s: string) => string> = {\n GET: pc.green,\n POST: pc.blue,\n PUT: pc.yellow,\n PATCH: pc.yellow,\n DELETE: pc.red,\n HEAD: pc.magenta,\n OPTIONS: pc.magenta,\n};\n\nexport function printRoutes(\n routes: Array<{ path: string; methods: string[] }>,\n) {\n if (routes.length === 0) return;\n\n const rows = routes\n .flatMap((r) => r.methods.map((m) => ({ method: m, path: r.path })))\n .sort(\n (a, b) =>\n a.method.localeCompare(b.method) || a.path.localeCompare(b.path),\n );\n\n const maxMethodLen = Math.max(...rows.map((r) => r.method.length));\n const separator = pc.dim(\"─\".repeat(50));\n\n const colorizeParams = (p: string) =>\n p.replace(/(:[a-zA-Z_]\\w*)/g, (match) => pc.cyan(match));\n\n console.log(\"\");\n console.log(\n ` ${pc.bold(\"Registered Routes\")} ${pc.dim(`(${rows.length})`)}`,\n );\n console.log(` ${separator}`);\n\n for (const { method, path } of rows) {\n const colorize = METHOD_COLORS[method] || pc.white;\n const methodStr = colorize(pc.bold(method.padEnd(maxMethodLen)));\n console.log(` ${methodStr} ${colorizeParams(path)}`);\n }\n\n console.log(` ${separator}`);\n console.log(\"\");\n}\n\nexport function getQueries(configFolder: string) {\n const queriesFolder = path.join(configFolder, \"queries\");\n\n if (!fs.existsSync(queriesFolder)) {\n return {};\n }\n\n return Object.fromEntries(\n fs\n .readdirSync(queriesFolder)\n .filter((f) => path.extname(f) === \".sql\")\n .map((f) => [path.basename(f, \".sql\"), path.basename(f, \".sql\")]),\n );\n}\n\nexport type { PluginClientConfigs, PluginEndpoints };\n\ninterface RuntimeConfig {\n appName: string;\n queries: Record<string, string>;\n endpoints: PluginEndpoints;\n plugins: PluginClientConfigs;\n}\n\nconst APPKIT_CONFIG_SCRIPT_ID = \"__appkit__\";\nconst EMPTY_RUNTIME_CONFIG: RuntimeConfig = {\n appName: \"\",\n queries: {},\n endpoints: {},\n plugins: {},\n};\nconst EMPTY_RUNTIME_CONFIG_JSON = JSON.stringify(EMPTY_RUNTIME_CONFIG);\nconst JSON_SCRIPT_ESCAPE_MAP: Record<string, string> = {\n \"<\": \"\\\\u003c\",\n \">\": \"\\\\u003e\",\n \"&\": \"\\\\u0026\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\",\n};\n\nexport function getRuntimeConfig(\n endpoints: PluginEndpoints = {},\n pluginConfigs: PluginClientConfigs = {},\n): RuntimeConfig {\n const configFolder = path.join(process.cwd(), \"config\");\n\n return {\n appName: process.env.DATABRICKS_APP_NAME || \"\",\n queries: getQueries(configFolder),\n endpoints,\n plugins: pluginConfigs,\n };\n}\n\nexport function getConfigScript(\n endpoints: PluginEndpoints = {},\n pluginConfigs: PluginClientConfigs = {},\n): string {\n const config = getRuntimeConfig(endpoints, pluginConfigs);\n\n return `\n <script id=\"${APPKIT_CONFIG_SCRIPT_ID}\" type=\"application/json\">\n ${serializeRuntimeConfig(config)}\n </script>\n <script>\n window.__appkit__ = JSON.parse(\n document.getElementById(\"${APPKIT_CONFIG_SCRIPT_ID}\")?.textContent ||\n '${EMPTY_RUNTIME_CONFIG_JSON}',\n );\n </script>\n `;\n}\n\nfunction serializeRuntimeConfig(config: RuntimeConfig): string {\n return JSON.stringify(config).replace(\n /[<>&\\u2028\\u2029]/g,\n (char) => JSON_SCRIPT_ESCAPE_MAP[char] ?? char,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["fs"],"sources":["../../../src/plugins/server/utils.ts"],"sourcesContent":["import crypto from \"node:crypto\";\nimport fs from \"node:fs\";\nimport type http from \"node:http\";\nimport path from \"node:path\";\n\nimport pc from \"picocolors\";\nimport type { PluginClientConfigs, PluginEndpoints } from \"shared\";\n\nexport function parseCookies(\n req: http.IncomingMessage,\n): Record<string, string> {\n const cookieHeader = req.headers.cookie;\n if (!cookieHeader) return {};\n\n // Fast path: if there's no semicolon, there's only one cookie\n const semicolonIndex = cookieHeader.indexOf(\";\");\n if (semicolonIndex === -1) {\n const eqIndex = cookieHeader.indexOf(\"=\");\n if (eqIndex === -1) return {};\n return {\n [cookieHeader.slice(0, eqIndex).trim()]: cookieHeader.slice(eqIndex + 1),\n };\n }\n\n // Multiple cookies: parse them all\n const cookies: Record<string, string> = {};\n const parts = cookieHeader.split(\";\");\n for (let i = 0; i < parts.length; i++) {\n const eqIndex = parts[i].indexOf(\"=\");\n if (eqIndex !== -1) {\n const key = parts[i].slice(0, eqIndex).trim();\n const value = parts[i].slice(eqIndex + 1);\n cookies[key] = value;\n }\n }\n return cookies;\n}\n\nexport function generateTunnelIdFromEmail(email?: string): string | undefined {\n if (!email) return undefined;\n\n const tunnelId = crypto\n .createHash(\"sha256\")\n .update(email)\n .digest(\"base64url\")\n .slice(0, 8);\n\n return tunnelId;\n}\n\nexport function getRoutes(stack: unknown[], basePath = \"\") {\n const routes: Array<{ path: string; methods: string[] }> = [];\n\n stack.forEach((layer: any) => {\n if (layer.route) {\n // normal route\n const path = basePath + layer.route.path;\n const methods = Object.keys(layer.route.methods).map((m) =>\n m.toUpperCase(),\n );\n routes.push({ path, methods });\n } else if (layer.name === \"router\" && layer.handle.stack) {\n // nested router\n const nestedBase =\n basePath +\n layer.regexp.source\n .replace(\"^\\\\\", \"\")\n .replace(\"\\\\/?(?=\\\\/|$)\", \"\")\n .replace(/\\\\\\//g, \"/\") // convert escaped slashes\n .replace(/\\$$/, \"\") || \"\";\n routes.push(...getRoutes(layer.handle.stack, nestedBase));\n }\n });\n\n return routes;\n}\n\nconst METHOD_COLORS: Record<string, (s: string) => string> = {\n GET: pc.green,\n POST: pc.blue,\n PUT: pc.yellow,\n PATCH: pc.yellow,\n DELETE: pc.red,\n HEAD: pc.magenta,\n OPTIONS: pc.magenta,\n};\n\ntype RouteLine = { method: string; path: string };\n\n/**\n * Fold lines that share a method and differ in exactly one static segment:\n * `/api/{a,b}/:id` instead of `/api/a/:id` and `/api/b/:id`. The largest fold\n * is taken first, so each route lands on exactly one line.\n */\nexport function collapseRoutes(lines: RouteLine[]): RouteLine[] {\n const pending = new Map(\n lines.map((line) => [`${line.method} ${line.path}`, line]),\n );\n const collapsed: RouteLine[] = [];\n\n while (pending.size > 0) {\n const folds = new Map<string, { index: number; members: RouteLine[] }>();\n let best: { index: number; members: RouteLine[] } | undefined;\n for (const line of pending.values()) {\n const segments = line.path.split(\"/\");\n for (let index = 0; index < segments.length; index++) {\n const segment = segments[index];\n // Only fixed path parts fold; parameters and patterns keep their own line.\n if (segment === \"\" || /[:*?(){}[\\],]/.test(segment)) continue;\n const masked = segments.slice();\n masked[index] = \"\\0\";\n const key = `${line.method} ${masked.join(\"/\")}`;\n let fold = folds.get(key);\n if (!fold) {\n fold = { index, members: [] };\n folds.set(key, fold);\n }\n fold.members.push(line);\n if (fold.members.length > (best?.members.length ?? 1)) best = fold;\n }\n }\n if (!best) {\n collapsed.push(...pending.values());\n break;\n }\n\n const { index, members } = best;\n const segments = members[0].path.split(\"/\");\n const names = members.map((m) => m.path.split(\"/\")[index]).sort();\n segments[index] = `{${names.join(\",\")}}`;\n collapsed.push({ method: members[0].method, path: segments.join(\"/\") });\n for (const m of members) pending.delete(`${m.method} ${m.path}`);\n }\n\n return collapsed.sort(\n (a, b) => a.method.localeCompare(b.method) || a.path.localeCompare(b.path),\n );\n}\n\nexport function printRoutes(\n routes: Array<{ path: string; methods: string[] }>,\n) {\n if (routes.length === 0) return;\n\n const rows = routes.flatMap((r) =>\n r.methods.map((m) => ({ method: m, path: r.path })),\n );\n const lines = collapseRoutes(rows);\n\n const maxMethodLen = Math.max(...lines.map((r) => r.method.length));\n const separator = pc.dim(\"─\".repeat(50));\n const width = process.stdout.columns || 80;\n const pathColumn = 2 + maxMethodLen + 2;\n // A `{a,b}` segment folded by `collapseRoutes`.\n const foldSegment = /^\\{[^{}:,/]+(,[^{}:,/]+)+\\}$/;\n // A fold too wide for its line prints once, in the legend, under a label.\n const legend = new Map<string, string>();\n\n console.log(\"\");\n console.log(\n ` ${pc.bold(\"Registered Routes\")} ${pc.dim(`(${rows.length})`)}`,\n );\n console.log(` ${separator}`);\n\n for (const { method, path } of lines) {\n const colorize = METHOD_COLORS[method] || pc.white;\n const methodStr = colorize(pc.bold(method.padEnd(maxMethodLen)));\n const fits = pathColumn + path.length <= width;\n const painted = path\n .split(\"/\")\n .map((segment) => {\n if (!foldSegment.test(segment)) {\n return segment.replace(/(:[a-zA-Z_]\\w*)/g, (m) => pc.cyan(m));\n }\n if (fits) return segment.replace(/[{},]/g, (c) => pc.dim(c));\n let label = legend.get(segment);\n if (!label) {\n label = `{#${legend.size + 1}}`;\n legend.set(segment, label);\n }\n return pc.magenta(label);\n })\n .join(\"/\");\n console.log(` ${methodStr} ${painted}`);\n }\n\n if (legend.size > 0) console.log(\"\");\n // Long name lists read better as a narrow block than as one screen-wide line.\n const legendWidth = Math.min(width, 80);\n for (const [segment, label] of legend) {\n const indent = \" \".repeat(label.length + 2);\n const wrapped: string[] = [];\n let current = \"\";\n for (const name of segment.slice(1, -1).split(\",\")) {\n const next = current ? `${current}, ${name}` : name;\n // +1 leaves room for the trailing comma of a wrapped line.\n if (current && 2 + indent.length + next.length + 1 > legendWidth) {\n wrapped.push(`${current},`);\n current = name;\n } else {\n current = next;\n }\n }\n wrapped.push(current);\n wrapped.forEach((text, i) => {\n const head = i === 0 ? `${pc.magenta(label)} ` : indent;\n console.log(` ${head}${text}`);\n });\n }\n\n console.log(` ${separator}`);\n console.log(\"\");\n}\n\nexport function getQueries(configFolder: string) {\n const queriesFolder = path.join(configFolder, \"queries\");\n\n if (!fs.existsSync(queriesFolder)) {\n return {};\n }\n\n return Object.fromEntries(\n fs\n .readdirSync(queriesFolder)\n .filter((f) => path.extname(f) === \".sql\")\n .map((f) => [path.basename(f, \".sql\"), path.basename(f, \".sql\")]),\n );\n}\n\nexport type { PluginClientConfigs, PluginEndpoints };\n\ninterface RuntimeConfig {\n appName: string;\n queries: Record<string, string>;\n endpoints: PluginEndpoints;\n plugins: PluginClientConfigs;\n}\n\nconst APPKIT_CONFIG_SCRIPT_ID = \"__appkit__\";\nconst EMPTY_RUNTIME_CONFIG: RuntimeConfig = {\n appName: \"\",\n queries: {},\n endpoints: {},\n plugins: {},\n};\nconst EMPTY_RUNTIME_CONFIG_JSON = JSON.stringify(EMPTY_RUNTIME_CONFIG);\nconst JSON_SCRIPT_ESCAPE_MAP: Record<string, string> = {\n \"<\": \"\\\\u003c\",\n \">\": \"\\\\u003e\",\n \"&\": \"\\\\u0026\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\",\n};\n\nexport function getRuntimeConfig(\n endpoints: PluginEndpoints = {},\n pluginConfigs: PluginClientConfigs = {},\n): RuntimeConfig {\n const configFolder = path.join(process.cwd(), \"config\");\n\n return {\n appName: process.env.DATABRICKS_APP_NAME || \"\",\n queries: getQueries(configFolder),\n endpoints,\n plugins: pluginConfigs,\n };\n}\n\nexport function getConfigScript(\n endpoints: PluginEndpoints = {},\n pluginConfigs: PluginClientConfigs = {},\n): string {\n const config = getRuntimeConfig(endpoints, pluginConfigs);\n\n return `\n <script id=\"${APPKIT_CONFIG_SCRIPT_ID}\" type=\"application/json\">\n ${serializeRuntimeConfig(config)}\n </script>\n <script>\n window.__appkit__ = JSON.parse(\n document.getElementById(\"${APPKIT_CONFIG_SCRIPT_ID}\")?.textContent ||\n '${EMPTY_RUNTIME_CONFIG_JSON}',\n );\n </script>\n `;\n}\n\nfunction serializeRuntimeConfig(config: RuntimeConfig): string {\n return JSON.stringify(config).replace(\n /[<>&\\u2028\\u2029]/g,\n (char) => JSON_SCRIPT_ESCAPE_MAP[char] ?? char,\n );\n}\n"],"mappings":"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"}
@@ -13,8 +13,8 @@ declare const resourceFieldEntrySchema: z.ZodObject<{
13
13
  type: z.ZodLiteral<"kind">;
14
14
  resourceKind: z.ZodEnum<{
15
15
  volume: "volume";
16
- genie_space: "genie_space";
17
16
  warehouse: "warehouse";
17
+ genie_space: "genie_space";
18
18
  postgres_project: "postgres_project";
19
19
  postgres_branch: "postgres_branch";
20
20
  postgres_database: "postgres_database";
@@ -59,8 +59,8 @@ declare const pluginManifestSchema: z.ZodObject<{
59
59
  type: z.ZodLiteral<"kind">;
60
60
  resourceKind: z.ZodEnum<{
61
61
  volume: "volume";
62
- genie_space: "genie_space";
63
62
  warehouse: "warehouse";
63
+ genie_space: "genie_space";
64
64
  postgres_project: "postgres_project";
65
65
  postgres_branch: "postgres_branch";
66
66
  postgres_database: "postgres_database";
@@ -100,8 +100,8 @@ declare const pluginManifestSchema: z.ZodObject<{
100
100
  type: z.ZodLiteral<"kind">;
101
101
  resourceKind: z.ZodEnum<{
102
102
  volume: "volume";
103
- genie_space: "genie_space";
104
103
  warehouse: "warehouse";
104
+ genie_space: "genie_space";
105
105
  postgres_project: "postgres_project";
106
106
  postgres_branch: "postgres_branch";
107
107
  postgres_database: "postgres_database";
@@ -140,8 +140,8 @@ declare const pluginManifestSchema: z.ZodObject<{
140
140
  type: z.ZodLiteral<"kind">;
141
141
  resourceKind: z.ZodEnum<{
142
142
  volume: "volume";
143
- genie_space: "genie_space";
144
143
  warehouse: "warehouse";
144
+ genie_space: "genie_space";
145
145
  postgres_project: "postgres_project";
146
146
  postgres_branch: "postgres_branch";
147
147
  postgres_database: "postgres_database";
@@ -162,9 +162,9 @@ declare const pluginManifestSchema: z.ZodObject<{
162
162
  type: z.ZodLiteral<"sql_warehouse">;
163
163
  }, z.core.$strict>, z.ZodObject<{
164
164
  permission: z.ZodEnum<{
165
+ CAN_QUERY: "CAN_QUERY";
165
166
  CAN_VIEW: "CAN_VIEW";
166
167
  CAN_MANAGE: "CAN_MANAGE";
167
- CAN_QUERY: "CAN_QUERY";
168
168
  }>;
169
169
  alias: z.ZodString;
170
170
  resourceKey: z.ZodString;
@@ -181,8 +181,8 @@ declare const pluginManifestSchema: z.ZodObject<{
181
181
  type: z.ZodLiteral<"kind">;
182
182
  resourceKind: z.ZodEnum<{
183
183
  volume: "volume";
184
- genie_space: "genie_space";
185
184
  warehouse: "warehouse";
185
+ genie_space: "genie_space";
186
186
  postgres_project: "postgres_project";
187
187
  postgres_branch: "postgres_branch";
188
188
  postgres_database: "postgres_database";
@@ -221,8 +221,8 @@ declare const pluginManifestSchema: z.ZodObject<{
221
221
  type: z.ZodLiteral<"kind">;
222
222
  resourceKind: z.ZodEnum<{
223
223
  volume: "volume";
224
- genie_space: "genie_space";
225
224
  warehouse: "warehouse";
225
+ genie_space: "genie_space";
226
226
  postgres_project: "postgres_project";
227
227
  postgres_branch: "postgres_branch";
228
228
  postgres_database: "postgres_database";
@@ -260,8 +260,8 @@ declare const pluginManifestSchema: z.ZodObject<{
260
260
  type: z.ZodLiteral<"kind">;
261
261
  resourceKind: z.ZodEnum<{
262
262
  volume: "volume";
263
- genie_space: "genie_space";
264
263
  warehouse: "warehouse";
264
+ genie_space: "genie_space";
265
265
  postgres_project: "postgres_project";
266
266
  postgres_branch: "postgres_branch";
267
267
  postgres_database: "postgres_database";
@@ -299,8 +299,8 @@ declare const pluginManifestSchema: z.ZodObject<{
299
299
  type: z.ZodLiteral<"kind">;
300
300
  resourceKind: z.ZodEnum<{
301
301
  volume: "volume";
302
- genie_space: "genie_space";
303
302
  warehouse: "warehouse";
303
+ genie_space: "genie_space";
304
304
  postgres_project: "postgres_project";
305
305
  postgres_branch: "postgres_branch";
306
306
  postgres_database: "postgres_database";
@@ -338,8 +338,8 @@ declare const pluginManifestSchema: z.ZodObject<{
338
338
  type: z.ZodLiteral<"kind">;
339
339
  resourceKind: z.ZodEnum<{
340
340
  volume: "volume";
341
- genie_space: "genie_space";
342
341
  warehouse: "warehouse";
342
+ genie_space: "genie_space";
343
343
  postgres_project: "postgres_project";
344
344
  postgres_branch: "postgres_branch";
345
345
  postgres_database: "postgres_database";
@@ -377,8 +377,8 @@ declare const pluginManifestSchema: z.ZodObject<{
377
377
  type: z.ZodLiteral<"kind">;
378
378
  resourceKind: z.ZodEnum<{
379
379
  volume: "volume";
380
- genie_space: "genie_space";
381
380
  warehouse: "warehouse";
381
+ genie_space: "genie_space";
382
382
  postgres_project: "postgres_project";
383
383
  postgres_branch: "postgres_branch";
384
384
  postgres_database: "postgres_database";
@@ -416,8 +416,8 @@ declare const pluginManifestSchema: z.ZodObject<{
416
416
  type: z.ZodLiteral<"kind">;
417
417
  resourceKind: z.ZodEnum<{
418
418
  volume: "volume";
419
- genie_space: "genie_space";
420
419
  warehouse: "warehouse";
420
+ genie_space: "genie_space";
421
421
  postgres_project: "postgres_project";
422
422
  postgres_branch: "postgres_branch";
423
423
  postgres_database: "postgres_database";
@@ -438,10 +438,10 @@ declare const pluginManifestSchema: z.ZodObject<{
438
438
  type: z.ZodLiteral<"postgres">;
439
439
  }, z.core.$strict>, z.ZodObject<{
440
440
  permission: z.ZodEnum<{
441
+ CAN_EDIT: "CAN_EDIT";
441
442
  CAN_VIEW: "CAN_VIEW";
442
443
  CAN_MANAGE: "CAN_MANAGE";
443
444
  CAN_RUN: "CAN_RUN";
444
- CAN_EDIT: "CAN_EDIT";
445
445
  }>;
446
446
  alias: z.ZodString;
447
447
  resourceKey: z.ZodString;
@@ -458,8 +458,8 @@ declare const pluginManifestSchema: z.ZodObject<{
458
458
  type: z.ZodLiteral<"kind">;
459
459
  resourceKind: z.ZodEnum<{
460
460
  volume: "volume";
461
- genie_space: "genie_space";
462
461
  warehouse: "warehouse";
462
+ genie_space: "genie_space";
463
463
  postgres_project: "postgres_project";
464
464
  postgres_branch: "postgres_branch";
465
465
  postgres_database: "postgres_database";
@@ -480,8 +480,8 @@ declare const pluginManifestSchema: z.ZodObject<{
480
480
  type: z.ZodLiteral<"genie_space">;
481
481
  }, z.core.$strict>, z.ZodObject<{
482
482
  permission: z.ZodEnum<{
483
- CAN_MANAGE: "CAN_MANAGE";
484
483
  CAN_EDIT: "CAN_EDIT";
484
+ CAN_MANAGE: "CAN_MANAGE";
485
485
  CAN_READ: "CAN_READ";
486
486
  }>;
487
487
  alias: z.ZodString;
@@ -499,8 +499,8 @@ declare const pluginManifestSchema: z.ZodObject<{
499
499
  type: z.ZodLiteral<"kind">;
500
500
  resourceKind: z.ZodEnum<{
501
501
  volume: "volume";
502
- genie_space: "genie_space";
503
502
  warehouse: "warehouse";
503
+ genie_space: "genie_space";
504
504
  postgres_project: "postgres_project";
505
505
  postgres_branch: "postgres_branch";
506
506
  postgres_database: "postgres_database";
@@ -538,8 +538,8 @@ declare const pluginManifestSchema: z.ZodObject<{
538
538
  type: z.ZodLiteral<"kind">;
539
539
  resourceKind: z.ZodEnum<{
540
540
  volume: "volume";
541
- genie_space: "genie_space";
542
541
  warehouse: "warehouse";
542
+ genie_space: "genie_space";
543
543
  postgres_project: "postgres_project";
544
544
  postgres_branch: "postgres_branch";
545
545
  postgres_database: "postgres_database";
@@ -580,8 +580,8 @@ declare const pluginManifestSchema: z.ZodObject<{
580
580
  type: z.ZodLiteral<"kind">;
581
581
  resourceKind: z.ZodEnum<{
582
582
  volume: "volume";
583
- genie_space: "genie_space";
584
583
  warehouse: "warehouse";
584
+ genie_space: "genie_space";
585
585
  postgres_project: "postgres_project";
586
586
  postgres_branch: "postgres_branch";
587
587
  postgres_database: "postgres_database";
@@ -621,8 +621,8 @@ declare const pluginManifestSchema: z.ZodObject<{
621
621
  type: z.ZodLiteral<"kind">;
622
622
  resourceKind: z.ZodEnum<{
623
623
  volume: "volume";
624
- genie_space: "genie_space";
625
624
  warehouse: "warehouse";
625
+ genie_space: "genie_space";
626
626
  postgres_project: "postgres_project";
627
627
  postgres_branch: "postgres_branch";
628
628
  postgres_database: "postgres_database";
@@ -661,8 +661,8 @@ declare const pluginManifestSchema: z.ZodObject<{
661
661
  type: z.ZodLiteral<"kind">;
662
662
  resourceKind: z.ZodEnum<{
663
663
  volume: "volume";
664
- genie_space: "genie_space";
665
664
  warehouse: "warehouse";
665
+ genie_space: "genie_space";
666
666
  postgres_project: "postgres_project";
667
667
  postgres_branch: "postgres_branch";
668
668
  postgres_database: "postgres_database";
@@ -683,9 +683,9 @@ declare const pluginManifestSchema: z.ZodObject<{
683
683
  type: z.ZodLiteral<"sql_warehouse">;
684
684
  }, z.core.$strict>, z.ZodObject<{
685
685
  permission: z.ZodEnum<{
686
+ CAN_QUERY: "CAN_QUERY";
686
687
  CAN_VIEW: "CAN_VIEW";
687
688
  CAN_MANAGE: "CAN_MANAGE";
688
- CAN_QUERY: "CAN_QUERY";
689
689
  }>;
690
690
  alias: z.ZodString;
691
691
  resourceKey: z.ZodString;
@@ -702,8 +702,8 @@ declare const pluginManifestSchema: z.ZodObject<{
702
702
  type: z.ZodLiteral<"kind">;
703
703
  resourceKind: z.ZodEnum<{
704
704
  volume: "volume";
705
- genie_space: "genie_space";
706
705
  warehouse: "warehouse";
706
+ genie_space: "genie_space";
707
707
  postgres_project: "postgres_project";
708
708
  postgres_branch: "postgres_branch";
709
709
  postgres_database: "postgres_database";
@@ -742,8 +742,8 @@ declare const pluginManifestSchema: z.ZodObject<{
742
742
  type: z.ZodLiteral<"kind">;
743
743
  resourceKind: z.ZodEnum<{
744
744
  volume: "volume";
745
- genie_space: "genie_space";
746
745
  warehouse: "warehouse";
746
+ genie_space: "genie_space";
747
747
  postgres_project: "postgres_project";
748
748
  postgres_branch: "postgres_branch";
749
749
  postgres_database: "postgres_database";
@@ -781,8 +781,8 @@ declare const pluginManifestSchema: z.ZodObject<{
781
781
  type: z.ZodLiteral<"kind">;
782
782
  resourceKind: z.ZodEnum<{
783
783
  volume: "volume";
784
- genie_space: "genie_space";
785
784
  warehouse: "warehouse";
785
+ genie_space: "genie_space";
786
786
  postgres_project: "postgres_project";
787
787
  postgres_branch: "postgres_branch";
788
788
  postgres_database: "postgres_database";
@@ -820,8 +820,8 @@ declare const pluginManifestSchema: z.ZodObject<{
820
820
  type: z.ZodLiteral<"kind">;
821
821
  resourceKind: z.ZodEnum<{
822
822
  volume: "volume";
823
- genie_space: "genie_space";
824
823
  warehouse: "warehouse";
824
+ genie_space: "genie_space";
825
825
  postgres_project: "postgres_project";
826
826
  postgres_branch: "postgres_branch";
827
827
  postgres_database: "postgres_database";
@@ -859,8 +859,8 @@ declare const pluginManifestSchema: z.ZodObject<{
859
859
  type: z.ZodLiteral<"kind">;
860
860
  resourceKind: z.ZodEnum<{
861
861
  volume: "volume";
862
- genie_space: "genie_space";
863
862
  warehouse: "warehouse";
863
+ genie_space: "genie_space";
864
864
  postgres_project: "postgres_project";
865
865
  postgres_branch: "postgres_branch";
866
866
  postgres_database: "postgres_database";
@@ -898,8 +898,8 @@ declare const pluginManifestSchema: z.ZodObject<{
898
898
  type: z.ZodLiteral<"kind">;
899
899
  resourceKind: z.ZodEnum<{
900
900
  volume: "volume";
901
- genie_space: "genie_space";
902
901
  warehouse: "warehouse";
902
+ genie_space: "genie_space";
903
903
  postgres_project: "postgres_project";
904
904
  postgres_branch: "postgres_branch";
905
905
  postgres_database: "postgres_database";
@@ -937,8 +937,8 @@ declare const pluginManifestSchema: z.ZodObject<{
937
937
  type: z.ZodLiteral<"kind">;
938
938
  resourceKind: z.ZodEnum<{
939
939
  volume: "volume";
940
- genie_space: "genie_space";
941
940
  warehouse: "warehouse";
941
+ genie_space: "genie_space";
942
942
  postgres_project: "postgres_project";
943
943
  postgres_branch: "postgres_branch";
944
944
  postgres_database: "postgres_database";
@@ -959,10 +959,10 @@ declare const pluginManifestSchema: z.ZodObject<{
959
959
  type: z.ZodLiteral<"postgres">;
960
960
  }, z.core.$strict>, z.ZodObject<{
961
961
  permission: z.ZodEnum<{
962
+ CAN_EDIT: "CAN_EDIT";
962
963
  CAN_VIEW: "CAN_VIEW";
963
964
  CAN_MANAGE: "CAN_MANAGE";
964
965
  CAN_RUN: "CAN_RUN";
965
- CAN_EDIT: "CAN_EDIT";
966
966
  }>;
967
967
  alias: z.ZodString;
968
968
  resourceKey: z.ZodString;
@@ -979,8 +979,8 @@ declare const pluginManifestSchema: z.ZodObject<{
979
979
  type: z.ZodLiteral<"kind">;
980
980
  resourceKind: z.ZodEnum<{
981
981
  volume: "volume";
982
- genie_space: "genie_space";
983
982
  warehouse: "warehouse";
983
+ genie_space: "genie_space";
984
984
  postgres_project: "postgres_project";
985
985
  postgres_branch: "postgres_branch";
986
986
  postgres_database: "postgres_database";
@@ -1001,8 +1001,8 @@ declare const pluginManifestSchema: z.ZodObject<{
1001
1001
  type: z.ZodLiteral<"genie_space">;
1002
1002
  }, z.core.$strict>, z.ZodObject<{
1003
1003
  permission: z.ZodEnum<{
1004
- CAN_MANAGE: "CAN_MANAGE";
1005
1004
  CAN_EDIT: "CAN_EDIT";
1005
+ CAN_MANAGE: "CAN_MANAGE";
1006
1006
  CAN_READ: "CAN_READ";
1007
1007
  }>;
1008
1008
  alias: z.ZodString;
@@ -1020,8 +1020,8 @@ declare const pluginManifestSchema: z.ZodObject<{
1020
1020
  type: z.ZodLiteral<"kind">;
1021
1021
  resourceKind: z.ZodEnum<{
1022
1022
  volume: "volume";
1023
- genie_space: "genie_space";
1024
1023
  warehouse: "warehouse";
1024
+ genie_space: "genie_space";
1025
1025
  postgres_project: "postgres_project";
1026
1026
  postgres_branch: "postgres_branch";
1027
1027
  postgres_database: "postgres_database";
@@ -1059,8 +1059,8 @@ declare const pluginManifestSchema: z.ZodObject<{
1059
1059
  type: z.ZodLiteral<"kind">;
1060
1060
  resourceKind: z.ZodEnum<{
1061
1061
  volume: "volume";
1062
- genie_space: "genie_space";
1063
1062
  warehouse: "warehouse";
1063
+ genie_space: "genie_space";
1064
1064
  postgres_project: "postgres_project";
1065
1065
  postgres_branch: "postgres_branch";
1066
1066
  postgres_database: "postgres_database";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@databricks/appkit",
3
3
  "type": "module",
4
- "version": "0.79.0",
4
+ "version": "0.80.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "bin": {
package/sbom.cdx.json CHANGED
@@ -1 +1 @@
1
- {"bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:66e567f6-1189-43c9-9d9c-a8d3ced06bfa","version":1,"metadata":{"timestamp":"2026-09-28T14:00:00Z","tools":{"components":[{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}]},"authors":[{"name":"OWASP Foundation"}],"lifecycles":[{"phase":"build"}],"component":{"name":"appkit","group":"@databricks","version":"0.79.0","purl":"pkg:npm/%40databricks/appkit@0.79.0","bom-ref":"pkg:npm/@databricks/appkit@0.79.0","type":"application","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"externalReferences":[{"type":"vcs","url":"git+https://github.com/databricks/appkit.git"}]},"properties":[{"name":"cdx:bom:componentTypes","value":"npm"},{"name":"cdx:bom:componentNamespaces","value":"@ast-grep\\n@databricks\\n@mlflow\\n@opentelemetry"},{"name":"cdx:bom:componentSrcFiles","value":"packages/appkit/node_modules/@ast-grep/napi/package.json\\npackages/appkit/node_modules/@databricks/lakebase/package.json\\npackages/appkit/node_modules/@databricks/sdk-experimental/package.json\\npackages/appkit/node_modules/@mlflow/core/package.json\\npackages/appkit/node_modules/@opentelemetry/api-logs/package.json\\npackages/appkit/node_modules/@opentelemetry/api/package.json\\npackages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json\\npackages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json\\npackages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json\\npackages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json\\npackages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json\\npackages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json\\npackages/appkit/node_modules/@opentelemetry/instrumentation/package.json\\npackages/appkit/node_modules/@opentelemetry/resources/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-logs/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json\\npackages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json\\npackages/appkit/node_modules/apache-arrow/package.json\\npackages/appkit/node_modules/dotenv/package.json\\npackages/appkit/node_modules/drizzle-orm/package.json\\npackages/appkit/node_modules/express/package.json\\npackages/appkit/node_modules/get-port/package.json\\npackages/appkit/node_modules/js-yaml/package.json\\npackages/appkit/node_modules/magic-string/package.json\\npackages/appkit/node_modules/obug/package.json\\npackages/appkit/node_modules/pg/package.json\\npackages/appkit/node_modules/picocolors/package.json\\npackages/appkit/node_modules/semver/package.json\\npackages/appkit/node_modules/shared/package.json\\npackages/appkit/node_modules/vitest/package.json\\npackages/appkit/node_modules/ws/package.json\\npackages/appkit/node_modules/zod/package.json"}]},"components":[{"group":"@ast-grep","name":"napi","version":"0.37.0","description":"Search and Rewrite code at large scale using precise AST pattern","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40ast-grep/napi@0.37.0","externalReferences":[{"type":"vcs","url":"https://ast-grep.github.io"}],"type":"library","bom-ref":"pkg:npm/@ast-grep/napi@0.37.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@ast-grep/napi/package.json"},{"name":"ImportedModules","value":"@ast-grep/napi,Lang,@ast-grep/napi/Lang,parse,@ast-grep/napi/parse,SgNode,@ast-grep/napi/SgNode"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@ast-grep/napi/package.json"}],"concludedValue":"packages/appkit/node_modules/@ast-grep/napi/package.json"}],"occurrences":[{"location":"dist/plugins/server/react-source-loc-vite-plugin.js#2"},{"location":"dist/type-generator/serving/server-file-extractor.js#4"},{"location":"tmp/dist/cli/commands/registry/server-register.js#4"},{"location":"tmp/dist/plugins/server/react-source-loc-vite-plugin.js#2"},{"location":"tmp/dist/type-generator/serving/server-file-extractor.js#4"},{"location":"src/plugins/server/react-source-loc-vite-plugin.ts#3"},{"location":"src/type-generator/serving/server-file-extractor.ts#4"}]}},{"group":"@databricks","name":"lakebase","version":"0.6.0","description":"PostgreSQL driver for Databricks Lakebase Autoscaling with automatic OAuth token refresh","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40databricks/lakebase@0.6.0","externalReferences":[{"type":"vcs","url":"git+https://github.com/databricks/appkit.git"}],"type":"library","bom-ref":"pkg:npm/@databricks/lakebase@0.6.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@databricks/lakebase/package.json"},{"name":"ExportedModules","value":"@databricks/lakebase,DatabaseCredential,@databricks/lakebase/DatabaseCredential,GenerateDatabaseCredentialRequest,@databricks/lakebase/GenerateDatabaseCredentialRequest,generateDatabaseCredential,@databricks/lakebase/generateDatabaseCredential,getLakebaseOrmConfig,@databricks/lakebase/getLakebaseOrmConfig,getLakebasePgConfig,@databricks/lakebase/getLakebasePgConfig,getUsernameWithApiLookup,@databricks/lakebase/getUsernameWithApiLookup,getWorkspaceClient,@databricks/lakebase/getWorkspaceClient,LakebasePoolConfig,@databricks/lakebase/LakebasePoolConfig,RequestedClaims,@databricks/lakebase/RequestedClaims,RequestedClaimsPermissionSet,@databricks/lakebase/RequestedClaimsPermissionSet,RequestedResource,@databricks/lakebase/RequestedResource"},{"name":"ImportedModules","value":"@databricks/lakebase,RequestedClaimsPermissionSet,@databricks/lakebase/RequestedClaimsPermissionSet,createLakebasePool,@databricks/lakebase/createLakebasePool,generateDatabaseCredential,@databricks/lakebase/generateDatabaseCredential,getLakebaseOrmConfig,@databricks/lakebase/getLakebaseOrmConfig,getLakebasePgConfig,@databricks/lakebase/getLakebasePgConfig,getUsernameWithApiLookup,@databricks/lakebase/getUsernameWithApiLookup,getWorkspaceClient,@databricks/lakebase/getWorkspaceClient,LakebasePoolConfig,@databricks/lakebase/LakebasePoolConfig"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@databricks/lakebase/package.json"}],"concludedValue":"packages/appkit/node_modules/@databricks/lakebase/package.json"}],"occurrences":[{"location":"dist/connectors/lakebase/index.js#9"},{"location":"tmp/dist/connectors/lakebase/index.js#9"},{"location":"src/connectors/lakebase/index.ts#5"},{"location":"src/connectors/lakebase/index.ts#73"},{"location":"src/connectors/lakebase/pool-manager.ts#1"}]},"tags":["token"]},{"group":"@databricks","name":"sdk-experimental","version":"0.17.0","description":"Databricks SDK","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40databricks/sdk-experimental@0.17.0","externalReferences":[{"type":"vcs","url":"https://github.com/databricks/databricks-sdk-js"},{"type":"vcs","url":"git+https://github.com/databricks/databricks-sdk-js.git#main"}],"type":"library","bom-ref":"pkg:npm/@databricks/sdk-experimental@0.17.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@databricks/sdk-experimental/package.json"},{"name":"ImportedModules","value":"@databricks/sdk-experimental,ApiError,@databricks/sdk-experimental/ApiError"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@databricks/sdk-experimental/package.json"}],"concludedValue":"packages/appkit/node_modules/@databricks/sdk-experimental/package.json"}],"occurrences":[{"location":"dist/shared/src/workspace-client/errors.js#1"},{"location":"dist/shared/src/workspace-client/legacy.js#1"},{"location":"tmp/dist/shared/src/workspace-client/errors.js#1"},{"location":"tmp/dist/shared/src/workspace-client/legacy.js#1"},{"location":"tmp/dist/workspace-client/errors.js#1"},{"location":"tmp/dist/workspace-client/legacy.js#1"}]}},{"authors":[{"name":"MLflow (https://mlflow.org/)"}],"group":"@mlflow","name":"core","version":"0.4.0","description":"TypeScript implementation of MLflow Tracing SDK for LLM observability","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40mlflow/core@0.4.0","externalReferences":[{"type":"website","url":"https://mlflow.org/"},{"type":"vcs","url":"https://github.com/mlflow/mlflow.git"}],"type":"library","bom-ref":"pkg:npm/@mlflow/core@0.4.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@mlflow/core/package.json"},{"name":"ExportedModules","value":"core/agent/create-agent,core/agent/run-agent,core/agent/tools,core/agent/build-toolkit,core/agent/consume-adapter-stream,core/agent/load-agents,core/agent/normalize-result,core/agent/system-prompt,core/agent/toolkit-resolver,core/agent/types,core/agent/skills/load-skills,core/agent/skills/parse-skill,core/agent/skills/read-resource,core/agent/skills/render,core/agent/skills/resolve-catalog,core/agent/skills/types,core/agent/tools/define-tool,core/agent/tools/function-tool,core/agent/tools/hosted-tools,core/agent/tools/tool,core/appkit,core,core/plugin-context,RunAgentInput,core/agent/run-agent/RunAgentInput,RunAgentResult,core/agent/run-agent/RunAgentResult,runAgent,core/agent/run-agent/runAgent,run-agent/RunAgentInput,run-agent/RunAgentResult,run-agent/runAgent,AppKitMcpClient,core/agent/tools/AppKitMcpClient,defineTool,core/agent/tools/defineTool,executeFromRegistry,core/agent/tools/executeFromRegistry,FunctionTool,core/agent/tools/FunctionTool,functionToolToDefinition,core/agent/tools/functionToolToDefinition,HostedTool,core/agent/tools/HostedTool,isFunctionTool,core/agent/tools/isFunctionTool,isHostedTool,core/agent/tools/isHostedTool,McpConnectAllResult,core/agent/tools/McpConnectAllResult,mcpServer,core/agent/tools/mcpServer,resolveHostedTools,core/agent/tools/resolveHostedTools,ToolConfig,core/agent/tools/ToolConfig,ToolEntry,core/agent/tools/ToolEntry,ToolRegistry,core/agent/tools/ToolRegistry,toolsFromRegistry,core/agent/tools/toolsFromRegistry,tools/defineTool,tools/executeFromRegistry,tools/FunctionTool,tools/functionToolToDefinition,tools/HostedTool,tools/isFunctionTool,tools/isHostedTool,tools/mcpServer,tools/resolveHostedTools,tools/ToolConfig,tools/ToolEntry,tools/ToolRegistry,tools/toolsFromRegistry,agentIdFromMarkdownPath,load-agents/agentIdFromMarkdownPath,LoadContext,load-agents/LoadContext,LoadResult,load-agents/LoadResult,loadAgentFromFile,load-agents/loadAgentFromFile,loadAgentsFromDir,load-agents/loadAgentsFromDir,parseFrontmatter,load-agents/parseFrontmatter,.../core/agent/load-agents/agentIdFromMarkdownPath,.../core/agent/load-agents/LoadContext,.../core/agent/load-agents/LoadResult,.../core/agent/load-agents/loadAgentFromFile,.../core/agent/load-agents/loadAgentsFromDir,.../core/agent/load-agents/parseFrontmatter,buildBaseSystemPrompt,system-prompt/buildBaseSystemPrompt,composeSystemPrompt,system-prompt/composeSystemPrompt,AgentDefinition,types/AgentDefinition,AgentsPluginConfig,types/AgentsPluginConfig,AgentTool,types/AgentTool,AgentTools,types/AgentTools,AgentToolsFn,types/AgentToolsFn,AutoInheritToolsConfig,types/AutoInheritToolsConfig,BaseSystemPromptOption,types/BaseSystemPromptOption,isToolkitEntry,types/isToolkitEntry,Plugins,types/Plugins,PluginToolkitProvider,types/PluginToolkitProvider,PromptContext,types/PromptContext,RegisteredAgent,types/RegisteredAgent,ResolvedToolEntry,types/ResolvedToolEntry,ToolkitEntry,types/ToolkitEntry,ToolkitOptions,types/ToolkitOptions,.../core/agent/types/AgentDefinition,.../core/agent/types/AgentsPluginConfig,.../core/agent/types/AgentTool,.../core/agent/types/AgentTools,.../core/agent/types/AgentToolsFn,.../core/agent/types/AutoInheritToolsConfig,.../core/agent/types/BaseSystemPromptOption,.../core/agent/types/isToolkitEntry,.../core/agent/types/Plugins,.../core/agent/types/PluginToolkitProvider,.../core/agent/types/PromptContext,.../core/agent/types/RegisteredAgent,.../core/agent/types/ResolvedToolEntry,.../core/agent/types/ToolkitEntry,.../core/agent/types/ToolkitOptions,renderLoadedSkill,render/renderLoadedSkill,renderSkillCatalog,render/renderSkillCatalog,resolveSkill,resolve-catalog/resolveSkill,resolveSkillCatalog,resolve-catalog/resolveSkillCatalog,ResolvedSkillCatalog,types/ResolvedSkillCatalog,SkillDefinition,types/SkillDefinition,define-tool/defineTool,define-tool/executeFromRegistry,define-tool/ToolEntry,define-tool/ToolRegistry,define-tool/toolsFromRegistry,function-tool/FunctionTool,function-tool/functionToolToDefinition,function-tool/isFunctionTool,hosted-tools/HostedTool,hosted-tools/isHostedTool,hosted-tools/mcpServer,hosted-tools/resolveHostedTools,tool/ToolConfig"},{"name":"ImportedModules","value":"@mlflow/core,UnityCatalogLocation,@mlflow/core/UnityCatalogLocation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@mlflow/core/package.json"}],"concludedValue":"packages/appkit/node_modules/@mlflow/core/package.json"}],"occurrences":[{"location":"src/plugins/agents/mlflow.ts#1"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"api-logs","version":"0.219.0","description":"Public logs API for OpenTelemetry","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/api-logs@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/api-logs"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/api-logs@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/api-logs/package.json"},{"name":"ExportedModules","value":"@opentelemetry/api-logs"},{"name":"ImportedModules","value":"@opentelemetry/api-logs,SeverityNumber,@opentelemetry/api-logs/SeverityNumber,logs,@opentelemetry/api-logs/logs,createNoopLogger,@opentelemetry/api-logs/createNoopLogger,Logger,@opentelemetry/api-logs/Logger,LogRecord,@opentelemetry/api-logs/LogRecord"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/api-logs/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/api-logs/package.json"}],"occurrences":[{"location":"dist/logging/wide-event-emitter.js#1"},{"location":"dist/telemetry/index.js#6"},{"location":"dist/telemetry/noop.js#2"},{"location":"dist/telemetry/telemetry-manager.js#5"},{"location":"dist/telemetry/telemetry-provider.js#4"},{"location":"tmp/dist/logging/wide-event-emitter.js#1"},{"location":"tmp/dist/telemetry/index.js#6"},{"location":"tmp/dist/telemetry/noop.js#2"},{"location":"tmp/dist/telemetry/telemetry-manager.js#5"},{"location":"tmp/dist/telemetry/telemetry-provider.js#4"},{"location":"src/logging/wide-event-emitter.ts#1"},{"location":"src/telemetry/index.ts#3"},{"location":"src/telemetry/noop.ts#23"},{"location":"src/telemetry/telemetry-manager.ts#2"},{"location":"src/telemetry/telemetry-provider.ts#3"},{"location":"src/telemetry/types.ts#2"}]},"tags":["api"]},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"api","version":"1.9.0","description":"Public API for OpenTelemetry","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/api@1.9.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/api"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/api@1.9.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/api/package.json"},{"name":"ExportedModules","value":"@opentelemetry/api,@opentelemetry/api-logs,Counter,@opentelemetry/api/Counter,Histogram,@opentelemetry/api/Histogram,Span,@opentelemetry/api/Span,SpanKind,@opentelemetry/api/SpanKind,SpanStatusCode,@opentelemetry/api/SpanStatusCode"},{"name":"ImportedModules","value":"@opentelemetry/api,trace,@opentelemetry/api/trace,context,@opentelemetry/api/context,createContextKey,@opentelemetry/api/createContextKey,SpanKind,@opentelemetry/api/SpanKind,SpanStatusCode,@opentelemetry/api/SpanStatusCode,INVALID_SPAN_CONTEXT,@opentelemetry/api/INVALID_SPAN_CONTEXT,createNoopMeter,@opentelemetry/api/createNoopMeter,metrics,@opentelemetry/api/metrics,Context,@opentelemetry/api/Context,Span,@opentelemetry/api/Span,SpanContext,@opentelemetry/api/SpanContext,SpanOptions,@opentelemetry/api/SpanOptions,Tracer,@opentelemetry/api/Tracer,Meter,@opentelemetry/api/Meter,Attributes,@opentelemetry/api/Attributes,Link,@opentelemetry/api/Link"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/api/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/api/package.json"}],"occurrences":[{"location":"dist/logging/logger.js#6"},{"location":"dist/plugin/plugin.js#23"},{"location":"dist/plugins/agents/mlflow.js#4"},{"location":"dist/stream/stream-manager.js#12"},{"location":"dist/telemetry/index.js#5"},{"location":"dist/telemetry/noop.js#1"},{"location":"dist/telemetry/telemetry-manager.js#4"},{"location":"dist/telemetry/telemetry-provider.js#3"},{"location":"tmp/dist/logging/logger.js#6"},{"location":"tmp/dist/plugin/plugin.js#23"},{"location":"tmp/dist/plugins/agents/mlflow.js#4"},{"location":"tmp/dist/stream/stream-manager.js#12"},{"location":"tmp/dist/telemetry/index.js#5"},{"location":"tmp/dist/telemetry/noop.js#1"},{"location":"tmp/dist/telemetry/telemetry-manager.js#4"},{"location":"tmp/dist/telemetry/telemetry-provider.js#3"},{"location":"src/logging/logger.ts#4"},{"location":"src/plugin/plugin.ts#1"},{"location":"src/plugins/agents/mlflow.ts#2"},{"location":"src/stream/stream-manager.ts#3"},{"location":"src/stream/types.ts#1"},{"location":"src/telemetry/index.ts#1"},{"location":"src/telemetry/index.ts#2"},{"location":"src/telemetry/noop.ts#17"},{"location":"src/telemetry/noop.ts#22"},{"location":"src/telemetry/telemetry-manager.ts#1"},{"location":"src/telemetry/telemetry-provider.ts#1"},{"location":"src/telemetry/telemetry-provider.ts#2"},{"location":"src/telemetry/trace-sampler.ts#1"},{"location":"src/telemetry/types.ts#1"},{"location":"src/testing/fixtures.ts#3"}]},"tags":["api"]},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"auto-instrumentations-node","version":"0.77.0","description":"Metapackage which bundles opentelemetry node core and contrib instrumentations","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/auto-instrumentations-node@0.77.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/auto-instrumentations-node#readme"},{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib.git"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/auto-instrumentations-node@0.77.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json"},{"name":"ImportedModules","value":"@opentelemetry/auto-instrumentations-node,getNodeAutoInstrumentations,@opentelemetry/auto-instrumentations-node/getNodeAutoInstrumentations"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#6"},{"location":"tmp/dist/telemetry/telemetry-manager.js#6"},{"location":"src/telemetry/telemetry-manager.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"exporter-logs-otlp-proto","version":"0.219.0","description":"An OTLP exporter to send logs using protobuf over HTTP","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/exporter-logs-otlp-proto@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/exporter-logs-otlp-proto@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json"},{"name":"ImportedModules","value":"@opentelemetry/exporter-logs-otlp-proto,OTLPLogExporter,@opentelemetry/exporter-logs-otlp-proto/OTLPLogExporter"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#7"},{"location":"tmp/dist/telemetry/telemetry-manager.js#7"},{"location":"src/telemetry/telemetry-manager.ts#4"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"exporter-metrics-otlp-proto","version":"0.219.0","description":"OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/exporter-metrics-otlp-proto@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/exporter-metrics-otlp-proto@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json"},{"name":"ImportedModules","value":"@opentelemetry/exporter-metrics-otlp-proto,OTLPMetricExporter,@opentelemetry/exporter-metrics-otlp-proto/OTLPMetricExporter"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#8"},{"location":"tmp/dist/telemetry/telemetry-manager.js#8"},{"location":"src/telemetry/telemetry-manager.ts#5"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"exporter-trace-otlp-proto","version":"0.219.0","description":"OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/exporter-trace-otlp-proto@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/exporter-trace-otlp-proto@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json"},{"name":"ImportedModules","value":"@opentelemetry/exporter-trace-otlp-proto,OTLPTraceExporter,@opentelemetry/exporter-trace-otlp-proto/OTLPTraceExporter"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#9"},{"location":"tmp/dist/telemetry/telemetry-manager.js#9"},{"location":"src/telemetry/telemetry-manager.ts#6"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"instrumentation-express","version":"0.67.0","description":"OpenTelemetry instrumentation for `express` http web application framework","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/instrumentation-express@0.67.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-express#readme"},{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib.git"}],"type":"framework","bom-ref":"pkg:npm/@opentelemetry/instrumentation-express@0.67.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json"},{"name":"ImportedModules","value":"@opentelemetry/instrumentation-express,ExpressInstrumentation,@opentelemetry/instrumentation-express/ExpressInstrumentation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json"}],"occurrences":[{"location":"dist/telemetry/instrumentations.js#2"},{"location":"tmp/dist/telemetry/instrumentations.js#2"},{"location":"src/telemetry/instrumentations.ts#2"}]},"tags":["framework","web"]},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"instrumentation-http","version":"0.219.0","description":"OpenTelemetry instrumentation for `node:http` and `node:https` http client and server modules","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/instrumentation-http@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/instrumentation-http@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json"},{"name":"ImportedModules","value":"@opentelemetry/instrumentation-http,HttpInstrumentation,@opentelemetry/instrumentation-http/HttpInstrumentation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json"}],"occurrences":[{"location":"dist/telemetry/instrumentations.js#3"},{"location":"tmp/dist/telemetry/instrumentations.js#3"},{"location":"src/telemetry/instrumentations.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"instrumentation","version":"0.219.0","description":"Base class for node which OpenTelemetry instrumentation modules extend","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/instrumentation@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation"},{"type":"vcs","url":"git+https://github.com/open-telemetry/opentelemetry-js.git"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/instrumentation@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/instrumentation/package.json"},{"name":"ImportedModules","value":"@opentelemetry/instrumentation,registerInstrumentations,@opentelemetry/instrumentation/registerInstrumentations,Instrumentation,@opentelemetry/instrumentation/Instrumentation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/instrumentation/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/instrumentation/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#10"},{"location":"tmp/dist/telemetry/telemetry-manager.js#10"},{"location":"src/telemetry/instrumentations.ts#1"},{"location":"src/telemetry/telemetry-manager.ts#10"},{"location":"src/telemetry/telemetry-provider.ts#4"},{"location":"src/telemetry/types.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"resources","version":"2.8.0","description":"OpenTelemetry SDK resources","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/resources@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/resources@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/resources/package.json"},{"name":"ImportedModules","value":"@opentelemetry/resources,detectResources,@opentelemetry/resources/detectResources,envDetector,@opentelemetry/resources/envDetector,hostDetector,@opentelemetry/resources/hostDetector,processDetector,@opentelemetry/resources/processDetector,resourceFromAttributes,@opentelemetry/resources/resourceFromAttributes,Resource,@opentelemetry/resources/Resource"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/resources/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/resources/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#11"},{"location":"tmp/dist/telemetry/telemetry-manager.js#11"},{"location":"src/telemetry/telemetry-manager.ts#18"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-logs","version":"0.219.0","description":"OpenTelemetry logs SDK","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-logs@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/sdk-logs"},{"type":"vcs","url":"git+https://github.com/open-telemetry/opentelemetry-js.git"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-logs@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-logs/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-logs,BatchLogRecordProcessor,@opentelemetry/sdk-logs/BatchLogRecordProcessor,LoggerProvider,@opentelemetry/sdk-logs/LoggerProvider"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-logs/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-logs/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#12"},{"location":"tmp/dist/telemetry/telemetry-manager.js#12"},{"location":"src/telemetry/telemetry-manager.ts#22"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-metrics","version":"2.8.0","description":"OpenTelemetry metrics SDK","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-metrics@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-metrics@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-metrics,MeterProvider,@opentelemetry/sdk-metrics/MeterProvider,PeriodicExportingMetricReader,@opentelemetry/sdk-metrics/PeriodicExportingMetricReader"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#13"},{"location":"tmp/dist/telemetry/telemetry-manager.js#13"},{"location":"src/telemetry/telemetry-manager.ts#26"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-trace-base","version":"2.8.0","description":"OpenTelemetry Tracing","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-trace-base@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-trace-base@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-trace-base,BatchSpanProcessor,@opentelemetry/sdk-trace-base/BatchSpanProcessor,SamplingDecision,@opentelemetry/sdk-trace-base/SamplingDecision,SpanProcessor,@opentelemetry/sdk-trace-base/SpanProcessor,Sampler,@opentelemetry/sdk-trace-base/Sampler,SamplingResult,@opentelemetry/sdk-trace-base/SamplingResult"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#14"},{"location":"dist/telemetry/trace-sampler.js#2"},{"location":"tmp/dist/telemetry/telemetry-manager.js#14"},{"location":"tmp/dist/telemetry/trace-sampler.js#2"},{"location":"src/plugins/agents/mlflow.ts#3"},{"location":"src/telemetry/telemetry-manager.ts#30"},{"location":"src/telemetry/trace-sampler.ts#2"},{"location":"src/telemetry/trace-sampler.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-trace-node","version":"2.8.0","description":"OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-trace-node@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-trace-node@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-trace-node,NodeTracerProvider,@opentelemetry/sdk-trace-node/NodeTracerProvider"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#15"},{"location":"tmp/dist/telemetry/telemetry-manager.js#15"},{"location":"src/telemetry/telemetry-manager.ts#31"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"semantic-conventions","version":"1.38.0","description":"OpenTelemetry semantic conventions","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/semantic-conventions@1.38.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/semantic-conventions@1.38.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json"},{"name":"ImportedModules","value":"@opentelemetry/semantic-conventions,ATTR_SERVICE_NAME,@opentelemetry/semantic-conventions/ATTR_SERVICE_NAME,ATTR_SERVICE_VERSION,@opentelemetry/semantic-conventions/ATTR_SERVICE_VERSION"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#16"},{"location":"tmp/dist/telemetry/telemetry-manager.js#16"},{"location":"src/telemetry/telemetry-manager.ts#35"}]}},{"authors":[{"name":"Apache Software Foundation"}],"group":"","name":"apache-arrow","version":"21.1.0","description":"Apache Arrow columnar in-memory format","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/apache-arrow@21.1.0","externalReferences":[{"type":"website","url":"https://arrow.apache.org/js/"},{"type":"vcs","url":"git+https://github.com/apache/arrow-js.git"}],"type":"library","bom-ref":"pkg:npm/apache-arrow@21.1.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/apache-arrow/package.json"},{"name":"ImportedModules","value":"apache-arrow,Binary,apache-arrow/Binary,Bool,apache-arrow/Bool,DateDay,apache-arrow/DateDay,Decimal,apache-arrow/Decimal,DurationMicrosecond,apache-arrow/DurationMicrosecond,Field,apache-arrow/Field,Float32,apache-arrow/Float32,Float64,apache-arrow/Float64,Int16,apache-arrow/Int16,Int32,apache-arrow/Int32,Int64,apache-arrow/Int64,Int8,apache-arrow/Int8,IntervalYearMonth,apache-arrow/IntervalYearMonth,List,apache-arrow/List,Map_,apache-arrow/Map_,Null,apache-arrow/Null,Schema,apache-arrow/Schema,Struct,apache-arrow/Struct,Table,apache-arrow/Table,TimestampMicrosecond,apache-arrow/TimestampMicrosecond,Utf8,apache-arrow/Utf8,tableToIPC,apache-arrow/tableToIPC,Type,apache-arrow/Type,tableFromIPC,apache-arrow/tableFromIPC,DataType,apache-arrow/DataType"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/apache-arrow/package.json"}],"concludedValue":"packages/appkit/node_modules/apache-arrow/package.json"}],"occurrences":[{"location":"dist/connectors/sql-warehouse/arrow-schema.js#1"},{"location":"dist/plugins/analytics/result-delivery.js#4"},{"location":"dist/type-generator/query-registry.js#13"},{"location":"tmp/dist/connectors/sql-warehouse/arrow-schema.js#1"},{"location":"tmp/dist/plugins/analytics/result-delivery.js#4"},{"location":"tmp/dist/type-generator/query-registry.js#13"},{"location":"src/connectors/sql-warehouse/arrow-schema.ts#25"},{"location":"src/plugins/analytics/result-delivery.ts#1"},{"location":"src/type-generator/query-registry.ts#4"}]}},{"group":"","name":"dotenv","version":"16.6.1","description":"Loads environment variables from .env file","scope":"required","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://opensource.org/licenses/BSD-2-Clause"}}],"purl":"pkg:npm/dotenv@16.6.1","externalReferences":[{"type":"vcs","url":"https://github.com/motdotla/dotenv#readme"},{"type":"vcs","url":"git://github.com/motdotla/dotenv.git"}],"type":"library","bom-ref":"pkg:npm/dotenv@16.6.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/dotenv/package.json"},{"name":"ImportedModules","value":"dotenv,dotenv/config"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/dotenv/package.json"}],"concludedValue":"packages/appkit/node_modules/dotenv/package.json"}],"occurrences":[{"location":"dist/plugins/server/index.js#23"},{"location":"dist/type-generator/index.js#21"},{"location":"tmp/dist/cli/commands/doctor/index.js#6"},{"location":"tmp/dist/cli/commands/registry/env-reconcile.js#2"},{"location":"tmp/dist/cli/index.js#12"},{"location":"tmp/dist/plugins/server/index.js#23"},{"location":"tmp/dist/type-generator/index.js#21"},{"location":"src/plugins/server/index.ts#5"},{"location":"src/type-generator/index.ts#5"},{"location":"tmp/dist/cli/index.js#12"}]}},{"authors":[{"name":"Drizzle Team"}],"group":"","name":"drizzle-orm","version":"0.45.2","description":"Drizzle ORM package for SQL databases","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/drizzle-orm@0.45.2","externalReferences":[{"type":"website","url":"https://orm.drizzle.team"},{"type":"vcs","url":"git+https://github.com/drizzle-team/drizzle-orm.git"}],"type":"library","bom-ref":"pkg:npm/drizzle-orm@0.45.2","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/drizzle-orm/package.json"},{"name":"ImportedModules","value":"drizzle-orm,drizzle-orm/and,drizzle-orm/eq,isSQLWrapper,drizzle-orm/isSQLWrapper,drizzle-orm/sql,drizzle-orm/node-postgres,drizzle,drizzle-orm/node-postgres/drizzle,drizzle-orm/asc,desc,drizzle-orm/desc,drizzle-orm/gt,drizzle-orm/gte,ilike,drizzle-orm/ilike,inArray,drizzle-orm/inArray,isNull,drizzle-orm/isNull,like,drizzle-orm/like,drizzle-orm/lt,drizzle-orm/lte,drizzle-orm/ne,drizzle-orm/or,relations,drizzle-orm/relations,drizzle-orm/pg-core,bigint,drizzle-orm/pg-core/bigint,boolean,drizzle-orm/pg-core/boolean,integer,drizzle-orm/pg-core/integer,jsonb,drizzle-orm/pg-core/jsonb,pgEnum,drizzle-orm/pg-core/pgEnum,pgSchema,drizzle-orm/pg-core/pgSchema,pgTable,drizzle-orm/pg-core/pgTable,text,drizzle-orm/pg-core/text,timestamp,drizzle-orm/pg-core/timestamp,uuid,drizzle-orm/pg-core/uuid,varchar,drizzle-orm/pg-core/varchar,drizzle-orm/SQL,NodePgDatabase,drizzle-orm/node-postgres/NodePgDatabase,PgTable,drizzle-orm/pg-core/PgTable,AnyPgColumn,drizzle-orm/pg-core/AnyPgColumn,Relation,drizzle-orm/Relation,PgColumnBuilderBase,drizzle-orm/pg-core/PgColumnBuilderBase,PgEnum,drizzle-orm/pg-core/PgEnum"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/drizzle-orm/package.json"}],"concludedValue":"packages/appkit/node_modules/drizzle-orm/package.json"}],"occurrences":[{"location":"dist/database/runtime/engine/drizzle-data-path.js#7"},{"location":"dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"dist/database/runtime/engine/translate.js#7"},{"location":"dist/database/schema-builder/engine/relations.js#2"},{"location":"dist/database/schema-builder/engine/tables.js#2"},{"location":"tmp/dist/database/runtime/engine/drizzle-data-path.js#7"},{"location":"tmp/dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"tmp/dist/database/runtime/engine/translate.js#7"},{"location":"tmp/dist/database/schema-builder/engine/relations.js#2"},{"location":"tmp/dist/database/schema-builder/engine/tables.js#2"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#1"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#2"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#3"},{"location":"src/database/runtime/engine/translate.ts#18"},{"location":"src/database/runtime/engine/translate.ts#19"},{"location":"src/database/schema-builder/engine/relations.ts#1"},{"location":"src/database/schema-builder/engine/relations.ts#2"},{"location":"src/database/schema-builder/engine/tables.ts#16"},{"location":"dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"tmp/dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#2"},{"location":"dist/database/schema-builder/engine/tables.js#2"},{"location":"tmp/dist/database/schema-builder/engine/tables.js#2"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#3"},{"location":"src/database/runtime/engine/translate.ts#19"},{"location":"src/database/schema-builder/engine/relations.ts#2"},{"location":"src/database/schema-builder/engine/tables.ts#16"}]},"tags":["orm","sql"]},{"authors":[{"name":"TJ Holowaychuk <tj@vision-media.ca>"}],"group":"","name":"express","version":"4.22.2","description":"Fast, unopinionated, minimalist web framework","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/express@4.22.2","externalReferences":[{"type":"website","url":"http://expressjs.com/"}],"type":"framework","bom-ref":"pkg:npm/express@4.22.2","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/express/package.json"},{"name":"ImportedModules","value":"express,NextFunction,express/NextFunction,Request,express/Request,Response,express/Response"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/express/package.json"}],"concludedValue":"packages/appkit/node_modules/express/package.json"}],"occurrences":[{"location":"dist/plugins/server/index.js#24"},{"location":"dist/plugins/server/static-server.js#4"},{"location":"tmp/dist/plugins/server/index.js#24"},{"location":"tmp/dist/plugins/server/static-server.js#4"},{"location":"src/core/plugin-context.ts#1"},{"location":"src/logging/logger.ts#5"},{"location":"src/plugin/plugin.ts#2"},{"location":"src/plugins/agents/agents.ts#5"},{"location":"src/plugins/agents/tool-dispatch.ts#3"},{"location":"src/plugins/ai-search/ai-search.ts#3"},{"location":"src/plugins/analytics/analytics.ts#1"},{"location":"src/plugins/database/crud/response.ts#1"},{"location":"src/plugins/database/crud/routes.ts#1"},{"location":"src/plugins/database/database.ts#1"},{"location":"src/plugins/files/plugin.ts#4"},{"location":"src/plugins/genie/genie.ts#3"},{"location":"src/plugins/jobs/plugin.ts#3"},{"location":"src/plugins/server/base-server.ts#1"},{"location":"src/plugins/server/index.ts#6"},{"location":"src/plugins/server/remote-tunnel/gate.ts#1"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-controller.ts#3"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-manager.ts#7"},{"location":"src/plugins/server/static-server.ts#4"},{"location":"src/plugins/server/static-server.ts#5"},{"location":"src/plugins/server/vite-dev-server.ts#4"},{"location":"src/plugins/serving/serving.ts#5"},{"location":"src/testing/test-plugin-context.ts#1"},{"location":"src/utils/safe-handler.ts#1"}]},"tags":["framework","web"]},{"authors":[{"name":"Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)"}],"group":"","name":"get-port","version":"7.2.0","description":"Get an available port","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/get-port@7.2.0","type":"library","bom-ref":"pkg:npm/get-port@7.2.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/get-port/package.json"},{"name":"ImportedModules","value":"get-port,portNumbers,get-port/portNumbers"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/get-port/package.json"}],"concludedValue":"packages/appkit/node_modules/get-port/package.json"}],"occurrences":[{"location":"dist/plugins/server/index.js#25"},{"location":"tmp/dist/plugins/server/index.js#25"},{"location":"src/plugins/server/index.ts#7"}]}},{"authors":[{"name":"Vladimir Zapparov <dervus.grim@gmail.com>"}],"group":"","name":"js-yaml","version":"4.3.1","description":"YAML 1.2 parser and serializer","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/js-yaml@4.3.1","type":"library","bom-ref":"pkg:npm/js-yaml@4.3.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/js-yaml/package.json"},{"name":"ImportedModules","value":"js-yaml"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/js-yaml/package.json"}],"concludedValue":"packages/appkit/node_modules/js-yaml/package.json"}],"occurrences":[{"location":"dist/core/agent/load-agents.js#7"},{"location":"dist/core/agent/skills/parse-skill.js#3"},{"location":"tmp/dist/cli/commands/doctor/bundle.js#5"},{"location":"tmp/dist/core/agent/load-agents.js#7"},{"location":"tmp/dist/core/agent/skills/parse-skill.js#3"},{"location":"src/core/agent/load-agents.ts#5"},{"location":"src/core/agent/skills/parse-skill.ts#1"}]}},{"authors":[{"name":"Rich Harris"}],"group":"","name":"magic-string","version":"0.30.21","description":"Modify strings, generate sourcemaps","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/magic-string@0.30.21","externalReferences":[{"type":"vcs","url":"git+https://github.com/Rich-Harris/magic-string.git"}],"type":"library","bom-ref":"pkg:npm/magic-string@0.30.21","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/magic-string/package.json"},{"name":"ImportedModules","value":"magic-string"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/magic-string/package.json"}],"concludedValue":"packages/appkit/node_modules/magic-string/package.json"}],"occurrences":[{"location":"dist/plugins/server/react-source-loc-vite-plugin.js#3"},{"location":"tmp/dist/plugins/server/react-source-loc-vite-plugin.js#3"},{"location":"src/plugins/server/react-source-loc-vite-plugin.ts#4"}]}},{"authors":[{"name":"Kevin Deng <sxzz@sxzz.moe>"}],"group":"","name":"obug","version":"2.1.1","description":"A lightweight JavaScript debugging utility, forked from debug, featuring TypeScript and ESM support.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/obug@2.1.1","externalReferences":[{"type":"vcs","url":"https://github.com/sxzz/obug#readme"},{"type":"vcs","url":"git+https://github.com/sxzz/obug.git"}],"type":"library","bom-ref":"pkg:npm/obug@2.1.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/obug/package.json"},{"name":"ImportedModules","value":"obug,createDebug,obug/createDebug"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/obug/package.json"}],"concludedValue":"packages/appkit/node_modules/obug/package.json"}],"occurrences":[{"location":"dist/logging/logger.js#7"},{"location":"tmp/dist/logging/logger.js#7"},{"location":"src/logging/logger.ts#6"}]}},{"authors":[{"name":"Brian Carlson <brian.m.carlson@gmail.com>"}],"group":"","name":"pg","version":"8.18.0","description":"PostgreSQL client - pure javascript & libpq with the same API","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/pg@8.18.0","externalReferences":[{"type":"vcs","url":"https://github.com/brianc/node-postgres"},{"type":"vcs","url":"git://github.com/brianc/node-postgres.git"}],"type":"library","bom-ref":"pkg:npm/pg@8.18.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/pg/package.json"},{"name":"ImportedModules","value":"pg,Pool,pg/Pool,PoolClient,pg/PoolClient,QueryResult,pg/QueryResult,QueryResultRow,pg/QueryResultRow"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/pg/package.json"}],"concludedValue":"packages/appkit/node_modules/pg/package.json"}],"occurrences":[{"location":"src/cache/storage/persistent.ts#3"},{"location":"src/connectors/lakebase/index.ts#6"},{"location":"src/connectors/lakebase/pool-manager.ts#2"},{"location":"src/connectors/lakebase/routing-pool.ts#1"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#4"},{"location":"src/plugins/lakebase/lakebase.ts#1"}]}},{"authors":[{"name":"Alexey Raspopov"}],"group":"","name":"picocolors","version":"1.1.1","description":"The tiniest and the fastest library for terminal output formatting with ANSI colors","scope":"required","licenses":[{"license":{"id":"ISC","url":"https://opensource.org/licenses/ISC"}}],"purl":"pkg:npm/picocolors@1.1.1","type":"library","bom-ref":"pkg:npm/picocolors@1.1.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/picocolors/package.json"},{"name":"ImportedModules","value":"picocolors"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/picocolors/package.json"}],"concludedValue":"packages/appkit/node_modules/picocolors/package.json"}],"occurrences":[{"location":"dist/errors/configuration.js#2"},{"location":"dist/plugins/agents/agents.js#40"},{"location":"dist/plugins/server/client-config-sanitizer.js#2"},{"location":"dist/plugins/server/utils.js#2"},{"location":"dist/type-generator/index.js#17"},{"location":"dist/type-generator/migration.js#2"},{"location":"dist/type-generator/query-registry.js#10"},{"location":"dist/type-generator/serving/generator.js#8"},{"location":"tmp/dist/cli/commands/doctor/report.js#2"},{"location":"tmp/dist/cli/commands/registry/add.js#12"},{"location":"tmp/dist/cli/commands/registry/config-writer.js#6"},{"location":"tmp/dist/cli/commands/registry/env-writer.js#5"},{"location":"tmp/dist/cli/commands/registry/info.js#6"},{"location":"tmp/dist/cli/commands/registry/list.js#5"},{"location":"tmp/dist/cli/commands/registry/requirements.js#3"},{"location":"tmp/dist/errors/configuration.js#2"},{"location":"tmp/dist/plugins/agents/agents.js#40"},{"location":"tmp/dist/plugins/server/client-config-sanitizer.js#2"},{"location":"tmp/dist/plugins/server/utils.js#2"},{"location":"tmp/dist/type-generator/index.js#17"},{"location":"tmp/dist/type-generator/migration.js#2"},{"location":"tmp/dist/type-generator/query-registry.js#10"},{"location":"tmp/dist/type-generator/serving/generator.js#8"},{"location":"src/errors/configuration.ts#1"},{"location":"src/plugins/agents/agents.ts#6"},{"location":"src/plugins/server/client-config-sanitizer.ts#1"},{"location":"src/plugins/server/utils.ts#6"},{"location":"src/type-generator/index.ts#6"},{"location":"src/type-generator/migration.ts#5"},{"location":"src/type-generator/query-registry.ts#5"},{"location":"src/type-generator/serving/generator.ts#4"}]}},{"authors":[{"name":"GitHub Inc."}],"group":"","name":"semver","version":"7.7.3","description":"The semantic version parser used by npm.","scope":"required","licenses":[{"license":{"id":"ISC","url":"https://opensource.org/licenses/ISC"}}],"purl":"pkg:npm/semver@7.7.3","externalReferences":[{"type":"vcs","url":"git+https://github.com/npm/node-semver.git"}],"type":"library","bom-ref":"pkg:npm/semver@7.7.3","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/semver/package.json"},{"name":"ImportedModules","value":"semver,coerce,semver/coerce"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/semver/package.json"}],"concludedValue":"packages/appkit/node_modules/semver/package.json"}],"occurrences":[{"location":"dist/context/client-options.js#2"},{"location":"tmp/dist/context/client-options.js#2"},{"location":"src/context/client-options.ts#1"}]}},{"group":"","name":"shared","version":"0.0.1","scope":"required","purl":"pkg:npm/shared@0.0.1","type":"library","bom-ref":"pkg:npm/shared@0.0.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/shared/package.json"},{"name":"ExportedModules","value":"shared,shared/workspace-client,AgentAdapter,shared/AgentAdapter,AgentEvent,shared/AgentEvent,AgentInput,shared/AgentInput,AgentRunContext,shared/AgentRunContext,AgentToolDefinition,shared/AgentToolDefinition,Message,shared/Message,Thread,shared/Thread,ThreadStore,shared/ThreadStore,ToolAnnotations,shared/ToolAnnotations,ToolProvider,shared/ToolProvider,GenieAttachmentResponse,shared/GenieAttachmentResponse,GenieMessageResponse,shared/GenieMessageResponse,GenieStatementResponse,shared/GenieStatementResponse,GenieStreamEvent,shared/GenieStreamEvent,BasePluginConfig,shared/BasePluginConfig,CacheConfig,shared/CacheConfig,IAppRouter,shared/IAppRouter,PluginData,shared/PluginData,StreamExecutionSettings,shared/StreamExecutionSettings,isSQLTypeMarker,shared/isSQLTypeMarker,shared/sql,MetricFilter,shared/MetricFilter,MetricFilterOperatorName,shared/MetricFilterOperatorName,MetricOrderBy,shared/MetricOrderBy,MetricPredicate,shared/MetricPredicate,ApiError,shared/ApiError,ConfigError,shared/ConfigError,Context,shared/Context,createWorkspaceClient,shared/createWorkspaceClient,Time,shared/Time,TimeUnits,shared/TimeUnits,CancellationToken,shared/workspace-client/CancellationToken,ClientOptions,shared/workspace-client/ClientOptions,files,shared/workspace-client/files,GenieMessage,shared/workspace-client/GenieMessage,jobs,shared/workspace-client/jobs,serving,shared/workspace-client/serving,shared/workspace-client/sql,Waiter,shared/workspace-client/Waiter,WorkspaceClient,shared/workspace-client/WorkspaceClient,WorkspaceClientOptions,shared/workspace-client/WorkspaceClientOptions"},{"name":"ImportedModules","value":"shared,AgentAdapter,shared/AgentAdapter,AgentEvent,shared/AgentEvent,AgentInput,shared/AgentInput,AgentRunContext,shared/AgentRunContext,AgentToolDefinition,shared/AgentToolDefinition,Message,shared/Message,ResponseStreamEvent,shared/ResponseStreamEvent,CacheConfig,shared/CacheConfig,CacheEntry,shared/CacheEntry,CacheStorage,shared/CacheStorage,TelemetryOptions,shared/TelemetryOptions,GenieMessageResponse,shared/GenieMessageResponse,PluginConstructor,shared/PluginConstructor,PluginData,shared/PluginData,ToolProvider,shared/ToolProvider,ToolAnnotations,shared/ToolAnnotations,BasePluginConfig,shared/BasePluginConfig,ThreadStore,shared/ThreadStore,BasePlugin,shared/BasePlugin,InputPluginMap,shared/InputPluginMap,OptionalConfigPluginDef,shared/OptionalConfigPluginDef,PluginMap,shared/PluginMap,IAppRequest,shared/IAppRequest,TunnelConnection,shared/TunnelConnection,RetryConfig,shared/RetryConfig,TelemetryConfig,shared/TelemetryConfig,IAppResponse,shared/IAppResponse,PluginEndpointMap,shared/PluginEndpointMap,PluginExecuteConfig,shared/PluginExecuteConfig,PluginExecutionSettings,shared/PluginExecutionSettings,PluginPhase,shared/PluginPhase,RouteConfig,shared/RouteConfig,StreamExecuteHandler,shared/StreamExecuteHandler,StreamExecutionSettings,shared/StreamExecutionSettings,camelToKebab,shared/camelToKebab,ToPlugin,shared/ToPlugin,IAppRouter,shared/IAppRouter,ResponseOutputMessage,shared/ResponseOutputMessage,Thread,shared/Thread,ResponseFunctionCallOutput,shared/ResponseFunctionCallOutput,ResponseFunctionToolCall,shared/ResponseFunctionToolCall,AnalyticsSseMessage,shared/AnalyticsSseMessage,makeResultMessage,shared/makeResultMessage,SQLTypeMarker,shared/SQLTypeMarker,MetricFilterOperatorName,shared/MetricFilterOperatorName,MetricOrderDirection,shared/MetricOrderDirection,shared/sql,MetricViewColumnDisplay,shared/MetricViewColumnDisplay,MetricViewsMetadata,shared/MetricViewsMetadata,isSQLTypeMarker,shared/isSQLTypeMarker,MetricFilter,shared/MetricFilter,MetricOrderBy,shared/MetricOrderBy,PluginClientConfigs,shared/PluginClientConfigs,PluginEndpoints,shared/PluginEndpoints,pluginManifestSchema,shared/pluginManifestSchema,ResourceFieldEntry,shared/ResourceFieldEntry,PluginManifest,shared/PluginManifest,StreamConfig,shared/StreamConfig,shared/workspace-client"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/shared/package.json"}],"concludedValue":"packages/appkit/node_modules/shared/package.json"}],"occurrences":[{"location":"src/agents/databricks.ts#7"},{"location":"src/agents/supervisor-api.ts#8"},{"location":"src/beta.ts#20"},{"location":"src/cache/defaults.ts#1"},{"location":"src/cache/index.ts#3"},{"location":"src/cache/storage/memory.ts#1"},{"location":"src/cache/storage/persistent.ts#4"},{"location":"src/connectors/ai-search/types.ts#1"},{"location":"src/connectors/files/client.ts#3"},{"location":"src/connectors/genie/types.ts#3"},{"location":"src/connectors/genie/types.ts#10"},{"location":"src/connectors/jobs/types.ts#1"},{"location":"src/connectors/mcp/client.ts#25"},{"location":"src/connectors/sql-warehouse/client.ts#1"},{"location":"src/core/agent/build-toolkit.ts#1"},{"location":"src/core/agent/consume-adapter-stream.ts#1"},{"location":"src/core/agent/load-agents.ts#6"},{"location":"src/core/agent/run-agent.ts#11"},{"location":"src/core/agent/toolkit-resolver.ts#1"},{"location":"src/core/agent/tools/define-tool.ts#1"},{"location":"src/core/agent/tools/function-tool.ts#1"},{"location":"src/core/agent/tools/tool.ts#1"},{"location":"src/core/agent/types.ts#7"},{"location":"src/core/appkit.ts#9"},{"location":"src/core/lifecycle-manager.ts#1"},{"location":"src/core/plugin-context.ts#2"},{"location":"src/index.ts#15"},{"location":"src/index.ts#16"},{"location":"src/plugin/dev-reader.ts#3"},{"location":"src/plugin/index.ts#1"},{"location":"src/plugin/interceptors/cache.ts#1"},{"location":"src/plugin/interceptors/retry.ts#1"},{"location":"src/plugin/interceptors/telemetry.ts#1"},{"location":"src/plugin/plugin.ts#14"},{"location":"src/plugin/plugin.ts#15"},{"location":"src/plugin/to-plugin.ts#1"},{"location":"src/plugins/agents/adapter-extensions.ts#1"},{"location":"src/plugins/agents/agents.ts#17"},{"location":"src/plugins/agents/approval.ts#1"},{"location":"src/plugins/agents/builtin-tools.ts#1"},{"location":"src/plugins/agents/defaults.ts#1"},{"location":"src/plugins/agents/event-translator.ts#9"},{"location":"src/plugins/agents/thread-store.ts#3"},{"location":"src/plugins/agents/tool-dispatch.ts#4"},{"location":"src/plugins/ai-search/ai-search.ts#4"},{"location":"src/plugins/ai-search/defaults.ts#1"},{"location":"src/plugins/ai-search/types.ts#1"},{"location":"src/plugins/analytics/analytics.ts#11"},{"location":"src/plugins/analytics/defaults.ts#1"},{"location":"src/plugins/analytics/mv/constants.ts#1"},{"location":"src/plugins/analytics/mv/formatters.ts#1"},{"location":"src/plugins/analytics/mv/metadata.ts#1"},{"location":"src/plugins/analytics/query.ts#3"},{"location":"src/plugins/analytics/result-delivery.ts#2"},{"location":"src/plugins/analytics/types.ts#7"},{"location":"src/plugins/analytics/types.ts#14"},{"location":"src/plugins/database/database.ts#2"},{"location":"src/plugins/database/defaults.ts#1"},{"location":"src/plugins/database/entity-client.ts#1"},{"location":"src/plugins/files/defaults.ts#1"},{"location":"src/plugins/files/plugin.ts#10"},{"location":"src/plugins/files/types.ts#1"},{"location":"src/plugins/genie/defaults.ts#1"},{"location":"src/plugins/genie/genie.ts#9"},{"location":"src/plugins/genie/types.ts#1"},{"location":"src/plugins/genie/types.ts#4"},{"location":"src/plugins/jobs/defaults.ts#1"},{"location":"src/plugins/jobs/plugin.ts#8"},{"location":"src/plugins/jobs/types.ts#1"},{"location":"src/plugins/lakebase/lakebase.ts#2"},{"location":"src/plugins/lakebase/types.ts#1"},{"location":"src/plugins/server/index.ts#8"},{"location":"src/plugins/server/index.ts#9"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-manager.ts#8"},{"location":"src/plugins/server/types.ts#1"},{"location":"src/plugins/server/utils.ts#7"},{"location":"src/plugins/serving/serving.ts#6"},{"location":"src/plugins/serving/types.ts#1"},{"location":"src/plugins/ui-variants/index.ts#1"},{"location":"src/registry/manifest-loader.ts#1"},{"location":"src/registry/resource-registry.ts#13"},{"location":"src/registry/types.ts#33"},{"location":"src/registry/types.ts#39"},{"location":"src/stream/sse-writer.ts#1"},{"location":"src/stream/stream-manager.ts#4"},{"location":"src/stream/types.ts#2"},{"location":"src/telemetry/telemetry-manager.ts#36"},{"location":"src/telemetry/telemetry-provider.ts#5"},{"location":"src/testing/create-test-app.ts#13"},{"location":"src/testing/create-test-plugin.ts#1"},{"location":"src/testing/fixtures.ts#4"},{"location":"src/testing/test-app.ts#1"},{"location":"src/testing/test-plugin-context.ts#7"},{"location":"src/workspace-client/index.ts#15"},{"location":"src/workspace-client/index.ts#27"},{"location":"src/workspace-client/index.ts#27"}]},"tags":["sql"]},{"authors":[{"name":"Anthony Fu <anthonyfu117@hotmail.com>"}],"group":"","name":"vitest","version":"3.2.4","description":"Next generation testing framework powered by Vite","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/vitest@3.2.4","externalReferences":[{"type":"vcs","url":"https://github.com/vitest-dev/vitest#readme"},{"type":"vcs","url":"git+https://github.com/vitest-dev/vitest.git"}],"type":"framework","bom-ref":"pkg:npm/vitest@3.2.4","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/vitest/package.json"},{"name":"ImportedModules","value":"vitest,vitest/vi,afterEach,vitest/afterEach,beforeEach,vitest/beforeEach,onTestFinished,vitest/onTestFinished,Mock,vitest/Mock"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/vitest/package.json"}],"concludedValue":"packages/appkit/node_modules/vitest/package.json"}],"occurrences":[{"location":"dist/testing/create-test-app.js#7"},{"location":"dist/testing/fixtures.js#8"},{"location":"dist/testing/mock-workspace-client.js#1"},{"location":"dist/testing/test-app.js#2"},{"location":"dist/testing/test-cache.js#5"},{"location":"dist/testing/test-plugin-context.js#9"},{"location":"tmp/dist/testing/create-test-app.js#7"},{"location":"tmp/dist/testing/fixtures.js#8"},{"location":"tmp/dist/testing/mock-workspace-client.js#1"},{"location":"tmp/dist/testing/test-app.js#2"},{"location":"tmp/dist/testing/test-cache.js#5"},{"location":"tmp/dist/testing/test-plugin-context.js#9"},{"location":"src/testing/create-test-app.ts#14"},{"location":"src/testing/fixtures.ts#5"},{"location":"src/testing/mock-workspace-client.ts#6"},{"location":"src/testing/mock-workspace-client.ts#7"},{"location":"src/testing/test-app.ts#2"},{"location":"src/testing/test-cache.ts#1"},{"location":"src/testing/test-plugin-context.ts#8"}]},"tags":["framework"]},{"authors":[{"name":"Einar Otto Stangvik <einaros@gmail.com> (http://2x.io)"}],"group":"","name":"ws","version":"8.21.0","description":"Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/ws@8.21.0","externalReferences":[{"type":"vcs","url":"https://github.com/websockets/ws"},{"type":"vcs","url":"git+https://github.com/websockets/ws.git"}],"type":"library","bom-ref":"pkg:npm/ws@8.21.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/ws/package.json"},{"name":"ImportedModules","value":"ws,WebSocketServer,ws/WebSocketServer"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/ws/package.json"}],"concludedValue":"packages/appkit/node_modules/ws/package.json"}],"occurrences":[{"location":"dist/plugins/server/remote-tunnel/remote-tunnel-manager.js#8"},{"location":"tmp/dist/plugins/server/remote-tunnel/remote-tunnel-manager.js#8"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-manager.ts#9"}]}},{"authors":[{"name":"Colin McDonnell <zod@colinhacks.com>"}],"group":"","name":"zod","version":"4.3.6","description":"TypeScript-first schema declaration and validation library with static type inference","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/zod@4.3.6","externalReferences":[{"type":"website","url":"https://zod.dev"},{"type":"vcs","url":"git+https://github.com/colinhacks/zod.git"}],"type":"library","bom-ref":"pkg:npm/zod@4.3.6","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/zod/package.json"},{"name":"ImportedModules","value":"zod,toJSONSchema,zod/toJSONSchema,zod/z,ZodType,zod/ZodType"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/zod/package.json"}],"concludedValue":"packages/appkit/node_modules/zod/package.json"}],"occurrences":[{"location":"dist/core/agent/tools/json-schema.js#1"},{"location":"dist/database/schema-builder/validators.js#1"},{"location":"dist/plugins/agents/schemas.js#1"},{"location":"dist/plugins/analytics/analytics.js#30"},{"location":"dist/plugins/analytics/mv/schemas.js#6"},{"location":"dist/plugins/files/plugin.js#24"},{"location":"dist/plugins/genie/genie.js#16"},{"location":"dist/plugins/jobs/plugin.js#18"},{"location":"dist/plugins/lakebase/lakebase.js#17"},{"location":"dist/shared/src/schemas/manifest.js#2"},{"location":"dist/shared/src/schemas/metric-metadata-bundle.js#2"},{"location":"dist/shared/src/schemas/metric-source.js#2"},{"location":"dist/shared/src/sse/analytics.js#1"},{"location":"tmp/dist/core/agent/tools/json-schema.js#1"},{"location":"tmp/dist/database/schema-builder/validators.js#1"},{"location":"tmp/dist/plugins/agents/schemas.js#1"},{"location":"tmp/dist/plugins/analytics/analytics.js#30"},{"location":"tmp/dist/plugins/analytics/mv/schemas.js#6"},{"location":"tmp/dist/plugins/files/plugin.js#24"},{"location":"tmp/dist/plugins/genie/genie.js#16"},{"location":"tmp/dist/plugins/jobs/plugin.js#18"},{"location":"tmp/dist/plugins/lakebase/lakebase.js#17"},{"location":"tmp/dist/schemas/manifest.js#2"},{"location":"tmp/dist/shared/src/schemas/manifest.js#2"},{"location":"tmp/dist/shared/src/schemas/metric-metadata-bundle.js#2"},{"location":"tmp/dist/shared/src/schemas/metric-source.js#2"},{"location":"tmp/dist/shared/src/sse/analytics.js#1"},{"location":"src/core/agent/tools/define-tool.ts#2"},{"location":"src/core/agent/tools/json-schema.ts#1"},{"location":"src/core/agent/tools/tool.ts#2"},{"location":"src/database/schema-builder/validators.ts#1"},{"location":"src/database/schema-builder/validators.ts#2"},{"location":"src/plugins/agents/schemas.ts#1"},{"location":"src/plugins/analytics/analytics.ts#12"},{"location":"src/plugins/analytics/mv/schemas.ts#1"},{"location":"src/plugins/files/plugin.ts#11"},{"location":"src/plugins/genie/genie.ts#10"},{"location":"src/plugins/jobs/plugin.ts#9"},{"location":"src/plugins/jobs/types.ts#2"},{"location":"src/plugins/lakebase/lakebase.ts#3"}]},"tags":["validation"]}],"dependencies":[],"compositions":[{"bom-ref":"pkg:npm/@databricks/appkit@0.79.0","aggregate":"incomplete"}],"annotations":[{"bom-ref":"metadata-annotations","subjects":["pkg:npm/@databricks/appkit@0.79.0"],"annotator":{"component":{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}},"timestamp":"2026-09-28T14:00:00Z","text":"This Software Bill-of-Materials (SBOM) document was created on Monday, September 28, 2026 with cdxgen. The data was captured during the build lifecycle phase. The document describes an application named 'appkit' with version '0.79.0'. There are 34 components. The package type in this SBOM is npm with 4 purl namespaces described under components. The components were identified from 34 source files."}]}
1
+ {"bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:8e5f487d-196d-46ff-8151-64ee56317c08","version":1,"metadata":{"timestamp":"2026-09-28T17:23:10Z","tools":{"components":[{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}]},"authors":[{"name":"OWASP Foundation"}],"lifecycles":[{"phase":"build"}],"component":{"name":"appkit","group":"@databricks","version":"0.80.0","purl":"pkg:npm/%40databricks/appkit@0.80.0","bom-ref":"pkg:npm/@databricks/appkit@0.80.0","type":"application","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"externalReferences":[{"type":"vcs","url":"git+https://github.com/databricks/appkit.git"}]},"properties":[{"name":"cdx:bom:componentTypes","value":"npm"},{"name":"cdx:bom:componentNamespaces","value":"@ast-grep\\n@databricks\\n@mlflow\\n@opentelemetry"},{"name":"cdx:bom:componentSrcFiles","value":"packages/appkit/node_modules/@ast-grep/napi/package.json\\npackages/appkit/node_modules/@databricks/lakebase/package.json\\npackages/appkit/node_modules/@databricks/sdk-experimental/package.json\\npackages/appkit/node_modules/@mlflow/core/package.json\\npackages/appkit/node_modules/@opentelemetry/api-logs/package.json\\npackages/appkit/node_modules/@opentelemetry/api/package.json\\npackages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json\\npackages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json\\npackages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json\\npackages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json\\npackages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json\\npackages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json\\npackages/appkit/node_modules/@opentelemetry/instrumentation/package.json\\npackages/appkit/node_modules/@opentelemetry/resources/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-logs/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json\\npackages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json\\npackages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json\\npackages/appkit/node_modules/apache-arrow/package.json\\npackages/appkit/node_modules/dotenv/package.json\\npackages/appkit/node_modules/drizzle-orm/package.json\\npackages/appkit/node_modules/express/package.json\\npackages/appkit/node_modules/get-port/package.json\\npackages/appkit/node_modules/js-yaml/package.json\\npackages/appkit/node_modules/magic-string/package.json\\npackages/appkit/node_modules/obug/package.json\\npackages/appkit/node_modules/pg/package.json\\npackages/appkit/node_modules/picocolors/package.json\\npackages/appkit/node_modules/semver/package.json\\npackages/appkit/node_modules/shared/package.json\\npackages/appkit/node_modules/vitest/package.json\\npackages/appkit/node_modules/ws/package.json\\npackages/appkit/node_modules/zod/package.json"}]},"components":[{"group":"@ast-grep","name":"napi","version":"0.37.0","description":"Search and Rewrite code at large scale using precise AST pattern","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40ast-grep/napi@0.37.0","externalReferences":[{"type":"vcs","url":"https://ast-grep.github.io"}],"type":"library","bom-ref":"pkg:npm/@ast-grep/napi@0.37.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@ast-grep/napi/package.json"},{"name":"ImportedModules","value":"@ast-grep/napi,Lang,@ast-grep/napi/Lang,parse,@ast-grep/napi/parse,SgNode,@ast-grep/napi/SgNode"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@ast-grep/napi/package.json"}],"concludedValue":"packages/appkit/node_modules/@ast-grep/napi/package.json"}],"occurrences":[{"location":"dist/plugins/server/react-source-loc-vite-plugin.js#2"},{"location":"dist/type-generator/serving/server-file-extractor.js#4"},{"location":"tmp/dist/cli/commands/registry/server-register.js#4"},{"location":"tmp/dist/plugins/server/react-source-loc-vite-plugin.js#2"},{"location":"tmp/dist/type-generator/serving/server-file-extractor.js#4"},{"location":"src/plugins/server/react-source-loc-vite-plugin.ts#3"},{"location":"src/type-generator/serving/server-file-extractor.ts#4"}]}},{"group":"@databricks","name":"lakebase","version":"0.6.0","description":"PostgreSQL driver for Databricks Lakebase Autoscaling with automatic OAuth token refresh","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40databricks/lakebase@0.6.0","externalReferences":[{"type":"vcs","url":"git+https://github.com/databricks/appkit.git"}],"type":"library","bom-ref":"pkg:npm/@databricks/lakebase@0.6.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@databricks/lakebase/package.json"},{"name":"ExportedModules","value":"@databricks/lakebase,DatabaseCredential,@databricks/lakebase/DatabaseCredential,GenerateDatabaseCredentialRequest,@databricks/lakebase/GenerateDatabaseCredentialRequest,generateDatabaseCredential,@databricks/lakebase/generateDatabaseCredential,getLakebaseOrmConfig,@databricks/lakebase/getLakebaseOrmConfig,getLakebasePgConfig,@databricks/lakebase/getLakebasePgConfig,getUsernameWithApiLookup,@databricks/lakebase/getUsernameWithApiLookup,getWorkspaceClient,@databricks/lakebase/getWorkspaceClient,LakebasePoolConfig,@databricks/lakebase/LakebasePoolConfig,RequestedClaims,@databricks/lakebase/RequestedClaims,RequestedClaimsPermissionSet,@databricks/lakebase/RequestedClaimsPermissionSet,RequestedResource,@databricks/lakebase/RequestedResource"},{"name":"ImportedModules","value":"@databricks/lakebase,RequestedClaimsPermissionSet,@databricks/lakebase/RequestedClaimsPermissionSet,createLakebasePool,@databricks/lakebase/createLakebasePool,generateDatabaseCredential,@databricks/lakebase/generateDatabaseCredential,getLakebaseOrmConfig,@databricks/lakebase/getLakebaseOrmConfig,getLakebasePgConfig,@databricks/lakebase/getLakebasePgConfig,getUsernameWithApiLookup,@databricks/lakebase/getUsernameWithApiLookup,getWorkspaceClient,@databricks/lakebase/getWorkspaceClient,LakebasePoolConfig,@databricks/lakebase/LakebasePoolConfig"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@databricks/lakebase/package.json"}],"concludedValue":"packages/appkit/node_modules/@databricks/lakebase/package.json"}],"occurrences":[{"location":"dist/connectors/lakebase/index.js#9"},{"location":"tmp/dist/connectors/lakebase/index.js#9"},{"location":"src/connectors/lakebase/index.ts#5"},{"location":"src/connectors/lakebase/index.ts#73"},{"location":"src/connectors/lakebase/pool-manager.ts#1"}]},"tags":["token"]},{"group":"@databricks","name":"sdk-experimental","version":"0.17.0","description":"Databricks SDK","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40databricks/sdk-experimental@0.17.0","externalReferences":[{"type":"vcs","url":"https://github.com/databricks/databricks-sdk-js"},{"type":"vcs","url":"git+https://github.com/databricks/databricks-sdk-js.git#main"}],"type":"library","bom-ref":"pkg:npm/@databricks/sdk-experimental@0.17.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@databricks/sdk-experimental/package.json"},{"name":"ImportedModules","value":"@databricks/sdk-experimental,ApiError,@databricks/sdk-experimental/ApiError"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@databricks/sdk-experimental/package.json"}],"concludedValue":"packages/appkit/node_modules/@databricks/sdk-experimental/package.json"}],"occurrences":[{"location":"dist/shared/src/workspace-client/errors.js#1"},{"location":"dist/shared/src/workspace-client/legacy.js#1"},{"location":"tmp/dist/shared/src/workspace-client/errors.js#1"},{"location":"tmp/dist/shared/src/workspace-client/legacy.js#1"},{"location":"tmp/dist/workspace-client/errors.js#1"},{"location":"tmp/dist/workspace-client/legacy.js#1"}]}},{"authors":[{"name":"MLflow (https://mlflow.org/)"}],"group":"@mlflow","name":"core","version":"0.4.0","description":"TypeScript implementation of MLflow Tracing SDK for LLM observability","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40mlflow/core@0.4.0","externalReferences":[{"type":"website","url":"https://mlflow.org/"},{"type":"vcs","url":"https://github.com/mlflow/mlflow.git"}],"type":"library","bom-ref":"pkg:npm/@mlflow/core@0.4.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@mlflow/core/package.json"},{"name":"ExportedModules","value":"core/agent/create-agent,core/agent/run-agent,core/agent/tools,core/agent/build-toolkit,core/agent/consume-adapter-stream,core/agent/load-agents,core/agent/normalize-result,core/agent/system-prompt,core/agent/toolkit-resolver,core/agent/types,core/agent/skills/load-skills,core/agent/skills/parse-skill,core/agent/skills/read-resource,core/agent/skills/render,core/agent/skills/resolve-catalog,core/agent/skills/types,core/agent/tools/define-tool,core/agent/tools/function-tool,core/agent/tools/hosted-tools,core/agent/tools/tool,core/appkit,core,core/plugin-context,RunAgentInput,core/agent/run-agent/RunAgentInput,RunAgentResult,core/agent/run-agent/RunAgentResult,runAgent,core/agent/run-agent/runAgent,run-agent/RunAgentInput,run-agent/RunAgentResult,run-agent/runAgent,AppKitMcpClient,core/agent/tools/AppKitMcpClient,defineTool,core/agent/tools/defineTool,executeFromRegistry,core/agent/tools/executeFromRegistry,FunctionTool,core/agent/tools/FunctionTool,functionToolToDefinition,core/agent/tools/functionToolToDefinition,HostedTool,core/agent/tools/HostedTool,isFunctionTool,core/agent/tools/isFunctionTool,isHostedTool,core/agent/tools/isHostedTool,McpConnectAllResult,core/agent/tools/McpConnectAllResult,mcpServer,core/agent/tools/mcpServer,resolveHostedTools,core/agent/tools/resolveHostedTools,ToolConfig,core/agent/tools/ToolConfig,ToolEntry,core/agent/tools/ToolEntry,ToolRegistry,core/agent/tools/ToolRegistry,toolsFromRegistry,core/agent/tools/toolsFromRegistry,tools/defineTool,tools/executeFromRegistry,tools/FunctionTool,tools/functionToolToDefinition,tools/HostedTool,tools/isFunctionTool,tools/isHostedTool,tools/mcpServer,tools/resolveHostedTools,tools/ToolConfig,tools/ToolEntry,tools/ToolRegistry,tools/toolsFromRegistry,agentIdFromMarkdownPath,load-agents/agentIdFromMarkdownPath,LoadContext,load-agents/LoadContext,LoadResult,load-agents/LoadResult,loadAgentFromFile,load-agents/loadAgentFromFile,loadAgentsFromDir,load-agents/loadAgentsFromDir,parseFrontmatter,load-agents/parseFrontmatter,.../core/agent/load-agents/agentIdFromMarkdownPath,.../core/agent/load-agents/LoadContext,.../core/agent/load-agents/LoadResult,.../core/agent/load-agents/loadAgentFromFile,.../core/agent/load-agents/loadAgentsFromDir,.../core/agent/load-agents/parseFrontmatter,buildBaseSystemPrompt,system-prompt/buildBaseSystemPrompt,composeSystemPrompt,system-prompt/composeSystemPrompt,AgentDefinition,types/AgentDefinition,AgentsPluginConfig,types/AgentsPluginConfig,AgentTool,types/AgentTool,AgentTools,types/AgentTools,AgentToolsFn,types/AgentToolsFn,AutoInheritToolsConfig,types/AutoInheritToolsConfig,BaseSystemPromptOption,types/BaseSystemPromptOption,isToolkitEntry,types/isToolkitEntry,Plugins,types/Plugins,PluginToolkitProvider,types/PluginToolkitProvider,PromptContext,types/PromptContext,RegisteredAgent,types/RegisteredAgent,ResolvedToolEntry,types/ResolvedToolEntry,ToolkitEntry,types/ToolkitEntry,ToolkitOptions,types/ToolkitOptions,.../core/agent/types/AgentDefinition,.../core/agent/types/AgentsPluginConfig,.../core/agent/types/AgentTool,.../core/agent/types/AgentTools,.../core/agent/types/AgentToolsFn,.../core/agent/types/AutoInheritToolsConfig,.../core/agent/types/BaseSystemPromptOption,.../core/agent/types/isToolkitEntry,.../core/agent/types/Plugins,.../core/agent/types/PluginToolkitProvider,.../core/agent/types/PromptContext,.../core/agent/types/RegisteredAgent,.../core/agent/types/ResolvedToolEntry,.../core/agent/types/ToolkitEntry,.../core/agent/types/ToolkitOptions,renderLoadedSkill,render/renderLoadedSkill,renderSkillCatalog,render/renderSkillCatalog,resolveSkill,resolve-catalog/resolveSkill,resolveSkillCatalog,resolve-catalog/resolveSkillCatalog,ResolvedSkillCatalog,types/ResolvedSkillCatalog,SkillDefinition,types/SkillDefinition,define-tool/defineTool,define-tool/executeFromRegistry,define-tool/ToolEntry,define-tool/ToolRegistry,define-tool/toolsFromRegistry,function-tool/FunctionTool,function-tool/functionToolToDefinition,function-tool/isFunctionTool,hosted-tools/HostedTool,hosted-tools/isHostedTool,hosted-tools/mcpServer,hosted-tools/resolveHostedTools,tool/ToolConfig"},{"name":"ImportedModules","value":"@mlflow/core,UnityCatalogLocation,@mlflow/core/UnityCatalogLocation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@mlflow/core/package.json"}],"concludedValue":"packages/appkit/node_modules/@mlflow/core/package.json"}],"occurrences":[{"location":"src/plugins/agents/mlflow.ts#1"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"api-logs","version":"0.219.0","description":"Public logs API for OpenTelemetry","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/api-logs@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/api-logs"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/api-logs@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/api-logs/package.json"},{"name":"ExportedModules","value":"@opentelemetry/api-logs"},{"name":"ImportedModules","value":"@opentelemetry/api-logs,SeverityNumber,@opentelemetry/api-logs/SeverityNumber,logs,@opentelemetry/api-logs/logs,createNoopLogger,@opentelemetry/api-logs/createNoopLogger,Logger,@opentelemetry/api-logs/Logger,LogRecord,@opentelemetry/api-logs/LogRecord"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/api-logs/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/api-logs/package.json"}],"occurrences":[{"location":"dist/logging/wide-event-emitter.js#1"},{"location":"dist/telemetry/index.js#6"},{"location":"dist/telemetry/noop.js#2"},{"location":"dist/telemetry/telemetry-manager.js#5"},{"location":"dist/telemetry/telemetry-provider.js#4"},{"location":"tmp/dist/logging/wide-event-emitter.js#1"},{"location":"tmp/dist/telemetry/index.js#6"},{"location":"tmp/dist/telemetry/noop.js#2"},{"location":"tmp/dist/telemetry/telemetry-manager.js#5"},{"location":"tmp/dist/telemetry/telemetry-provider.js#4"},{"location":"src/logging/wide-event-emitter.ts#1"},{"location":"src/telemetry/index.ts#3"},{"location":"src/telemetry/noop.ts#23"},{"location":"src/telemetry/telemetry-manager.ts#2"},{"location":"src/telemetry/telemetry-provider.ts#3"},{"location":"src/telemetry/types.ts#2"}]},"tags":["api"]},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"api","version":"1.9.0","description":"Public API for OpenTelemetry","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/api@1.9.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/api"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/api@1.9.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/api/package.json"},{"name":"ExportedModules","value":"@opentelemetry/api,@opentelemetry/api-logs,Counter,@opentelemetry/api/Counter,Histogram,@opentelemetry/api/Histogram,Span,@opentelemetry/api/Span,SpanKind,@opentelemetry/api/SpanKind,SpanStatusCode,@opentelemetry/api/SpanStatusCode"},{"name":"ImportedModules","value":"@opentelemetry/api,trace,@opentelemetry/api/trace,context,@opentelemetry/api/context,createContextKey,@opentelemetry/api/createContextKey,SpanKind,@opentelemetry/api/SpanKind,SpanStatusCode,@opentelemetry/api/SpanStatusCode,INVALID_SPAN_CONTEXT,@opentelemetry/api/INVALID_SPAN_CONTEXT,createNoopMeter,@opentelemetry/api/createNoopMeter,metrics,@opentelemetry/api/metrics,Context,@opentelemetry/api/Context,Span,@opentelemetry/api/Span,SpanContext,@opentelemetry/api/SpanContext,SpanOptions,@opentelemetry/api/SpanOptions,Tracer,@opentelemetry/api/Tracer,Meter,@opentelemetry/api/Meter,Attributes,@opentelemetry/api/Attributes,Link,@opentelemetry/api/Link"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/api/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/api/package.json"}],"occurrences":[{"location":"dist/logging/logger.js#6"},{"location":"dist/plugin/plugin.js#23"},{"location":"dist/plugins/agents/mlflow.js#4"},{"location":"dist/stream/stream-manager.js#12"},{"location":"dist/telemetry/index.js#5"},{"location":"dist/telemetry/noop.js#1"},{"location":"dist/telemetry/telemetry-manager.js#4"},{"location":"dist/telemetry/telemetry-provider.js#3"},{"location":"tmp/dist/logging/logger.js#6"},{"location":"tmp/dist/plugin/plugin.js#23"},{"location":"tmp/dist/plugins/agents/mlflow.js#4"},{"location":"tmp/dist/stream/stream-manager.js#12"},{"location":"tmp/dist/telemetry/index.js#5"},{"location":"tmp/dist/telemetry/noop.js#1"},{"location":"tmp/dist/telemetry/telemetry-manager.js#4"},{"location":"tmp/dist/telemetry/telemetry-provider.js#3"},{"location":"src/logging/logger.ts#4"},{"location":"src/plugin/plugin.ts#1"},{"location":"src/plugins/agents/mlflow.ts#2"},{"location":"src/stream/stream-manager.ts#3"},{"location":"src/stream/types.ts#1"},{"location":"src/telemetry/index.ts#1"},{"location":"src/telemetry/index.ts#2"},{"location":"src/telemetry/noop.ts#17"},{"location":"src/telemetry/noop.ts#22"},{"location":"src/telemetry/telemetry-manager.ts#1"},{"location":"src/telemetry/telemetry-provider.ts#1"},{"location":"src/telemetry/telemetry-provider.ts#2"},{"location":"src/telemetry/trace-sampler.ts#1"},{"location":"src/telemetry/types.ts#1"},{"location":"src/testing/fixtures.ts#3"}]},"tags":["api"]},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"auto-instrumentations-node","version":"0.77.0","description":"Metapackage which bundles opentelemetry node core and contrib instrumentations","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/auto-instrumentations-node@0.77.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/auto-instrumentations-node#readme"},{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib.git"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/auto-instrumentations-node@0.77.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json"},{"name":"ImportedModules","value":"@opentelemetry/auto-instrumentations-node,getNodeAutoInstrumentations,@opentelemetry/auto-instrumentations-node/getNodeAutoInstrumentations"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/auto-instrumentations-node/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#6"},{"location":"tmp/dist/telemetry/telemetry-manager.js#6"},{"location":"src/telemetry/telemetry-manager.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"exporter-logs-otlp-proto","version":"0.219.0","description":"An OTLP exporter to send logs using protobuf over HTTP","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/exporter-logs-otlp-proto@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-logs-otlp-proto"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/exporter-logs-otlp-proto@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json"},{"name":"ImportedModules","value":"@opentelemetry/exporter-logs-otlp-proto,OTLPLogExporter,@opentelemetry/exporter-logs-otlp-proto/OTLPLogExporter"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#7"},{"location":"tmp/dist/telemetry/telemetry-manager.js#7"},{"location":"src/telemetry/telemetry-manager.ts#4"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"exporter-metrics-otlp-proto","version":"0.219.0","description":"OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/exporter-metrics-otlp-proto@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/exporter-metrics-otlp-proto@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json"},{"name":"ImportedModules","value":"@opentelemetry/exporter-metrics-otlp-proto,OTLPMetricExporter,@opentelemetry/exporter-metrics-otlp-proto/OTLPMetricExporter"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#8"},{"location":"tmp/dist/telemetry/telemetry-manager.js#8"},{"location":"src/telemetry/telemetry-manager.ts#5"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"exporter-trace-otlp-proto","version":"0.219.0","description":"OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/exporter-trace-otlp-proto@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/exporter-trace-otlp-proto@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json"},{"name":"ImportedModules","value":"@opentelemetry/exporter-trace-otlp-proto,OTLPTraceExporter,@opentelemetry/exporter-trace-otlp-proto/OTLPTraceExporter"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#9"},{"location":"tmp/dist/telemetry/telemetry-manager.js#9"},{"location":"src/telemetry/telemetry-manager.ts#6"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"instrumentation-express","version":"0.67.0","description":"OpenTelemetry instrumentation for `express` http web application framework","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/instrumentation-express@0.67.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-express#readme"},{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js-contrib.git"}],"type":"framework","bom-ref":"pkg:npm/@opentelemetry/instrumentation-express@0.67.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json"},{"name":"ImportedModules","value":"@opentelemetry/instrumentation-express,ExpressInstrumentation,@opentelemetry/instrumentation-express/ExpressInstrumentation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/instrumentation-express/package.json"}],"occurrences":[{"location":"dist/telemetry/instrumentations.js#2"},{"location":"tmp/dist/telemetry/instrumentations.js#2"},{"location":"src/telemetry/instrumentations.ts#2"}]},"tags":["framework","web"]},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"instrumentation-http","version":"0.219.0","description":"OpenTelemetry instrumentation for `node:http` and `node:https` http client and server modules","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/instrumentation-http@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/instrumentation-http@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json"},{"name":"ImportedModules","value":"@opentelemetry/instrumentation-http,HttpInstrumentation,@opentelemetry/instrumentation-http/HttpInstrumentation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/instrumentation-http/package.json"}],"occurrences":[{"location":"dist/telemetry/instrumentations.js#3"},{"location":"tmp/dist/telemetry/instrumentations.js#3"},{"location":"src/telemetry/instrumentations.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"instrumentation","version":"0.219.0","description":"Base class for node which OpenTelemetry instrumentation modules extend","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/instrumentation@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation"},{"type":"vcs","url":"git+https://github.com/open-telemetry/opentelemetry-js.git"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/instrumentation@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/instrumentation/package.json"},{"name":"ImportedModules","value":"@opentelemetry/instrumentation,registerInstrumentations,@opentelemetry/instrumentation/registerInstrumentations,Instrumentation,@opentelemetry/instrumentation/Instrumentation"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/instrumentation/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/instrumentation/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#10"},{"location":"tmp/dist/telemetry/telemetry-manager.js#10"},{"location":"src/telemetry/instrumentations.ts#1"},{"location":"src/telemetry/telemetry-manager.ts#10"},{"location":"src/telemetry/telemetry-provider.ts#4"},{"location":"src/telemetry/types.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"resources","version":"2.8.0","description":"OpenTelemetry SDK resources","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/resources@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/resources@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/resources/package.json"},{"name":"ImportedModules","value":"@opentelemetry/resources,detectResources,@opentelemetry/resources/detectResources,envDetector,@opentelemetry/resources/envDetector,hostDetector,@opentelemetry/resources/hostDetector,processDetector,@opentelemetry/resources/processDetector,resourceFromAttributes,@opentelemetry/resources/resourceFromAttributes,Resource,@opentelemetry/resources/Resource"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/resources/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/resources/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#11"},{"location":"tmp/dist/telemetry/telemetry-manager.js#11"},{"location":"src/telemetry/telemetry-manager.ts#18"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-logs","version":"0.219.0","description":"OpenTelemetry logs SDK","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-logs@0.219.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/sdk-logs"},{"type":"vcs","url":"git+https://github.com/open-telemetry/opentelemetry-js.git"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-logs@0.219.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-logs/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-logs,BatchLogRecordProcessor,@opentelemetry/sdk-logs/BatchLogRecordProcessor,LoggerProvider,@opentelemetry/sdk-logs/LoggerProvider"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-logs/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-logs/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#12"},{"location":"tmp/dist/telemetry/telemetry-manager.js#12"},{"location":"src/telemetry/telemetry-manager.ts#22"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-metrics","version":"2.8.0","description":"OpenTelemetry metrics SDK","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-metrics@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/sdk-metrics"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-metrics@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-metrics,MeterProvider,@opentelemetry/sdk-metrics/MeterProvider,PeriodicExportingMetricReader,@opentelemetry/sdk-metrics/PeriodicExportingMetricReader"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-metrics/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#13"},{"location":"tmp/dist/telemetry/telemetry-manager.js#13"},{"location":"src/telemetry/telemetry-manager.ts#26"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-trace-base","version":"2.8.0","description":"OpenTelemetry Tracing","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-trace-base@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-trace-base@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-trace-base,BatchSpanProcessor,@opentelemetry/sdk-trace-base/BatchSpanProcessor,SamplingDecision,@opentelemetry/sdk-trace-base/SamplingDecision,SpanProcessor,@opentelemetry/sdk-trace-base/SpanProcessor,Sampler,@opentelemetry/sdk-trace-base/Sampler,SamplingResult,@opentelemetry/sdk-trace-base/SamplingResult"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-trace-base/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#14"},{"location":"dist/telemetry/trace-sampler.js#2"},{"location":"tmp/dist/telemetry/telemetry-manager.js#14"},{"location":"tmp/dist/telemetry/trace-sampler.js#2"},{"location":"src/plugins/agents/mlflow.ts#3"},{"location":"src/telemetry/telemetry-manager.ts#30"},{"location":"src/telemetry/trace-sampler.ts#2"},{"location":"src/telemetry/trace-sampler.ts#3"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"sdk-trace-node","version":"2.8.0","description":"OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/sdk-trace-node@2.8.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/sdk-trace-node@2.8.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json"},{"name":"ImportedModules","value":"@opentelemetry/sdk-trace-node,NodeTracerProvider,@opentelemetry/sdk-trace-node/NodeTracerProvider"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/sdk-trace-node/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#15"},{"location":"tmp/dist/telemetry/telemetry-manager.js#15"},{"location":"src/telemetry/telemetry-manager.ts#31"}]}},{"authors":[{"name":"OpenTelemetry Authors"}],"group":"@opentelemetry","name":"semantic-conventions","version":"1.38.0","description":"OpenTelemetry semantic conventions","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/%40opentelemetry/semantic-conventions@1.38.0","externalReferences":[{"type":"vcs","url":"https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions"}],"type":"library","bom-ref":"pkg:npm/@opentelemetry/semantic-conventions@1.38.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json"},{"name":"ImportedModules","value":"@opentelemetry/semantic-conventions,ATTR_SERVICE_NAME,@opentelemetry/semantic-conventions/ATTR_SERVICE_NAME,ATTR_SERVICE_VERSION,@opentelemetry/semantic-conventions/ATTR_SERVICE_VERSION"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json"}],"concludedValue":"packages/appkit/node_modules/@opentelemetry/semantic-conventions/package.json"}],"occurrences":[{"location":"dist/telemetry/telemetry-manager.js#16"},{"location":"tmp/dist/telemetry/telemetry-manager.js#16"},{"location":"src/telemetry/telemetry-manager.ts#35"}]}},{"authors":[{"name":"Apache Software Foundation"}],"group":"","name":"apache-arrow","version":"21.1.0","description":"Apache Arrow columnar in-memory format","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/apache-arrow@21.1.0","externalReferences":[{"type":"website","url":"https://arrow.apache.org/js/"},{"type":"vcs","url":"git+https://github.com/apache/arrow-js.git"}],"type":"library","bom-ref":"pkg:npm/apache-arrow@21.1.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/apache-arrow/package.json"},{"name":"ImportedModules","value":"apache-arrow,Binary,apache-arrow/Binary,Bool,apache-arrow/Bool,DateDay,apache-arrow/DateDay,Decimal,apache-arrow/Decimal,DurationMicrosecond,apache-arrow/DurationMicrosecond,Field,apache-arrow/Field,Float32,apache-arrow/Float32,Float64,apache-arrow/Float64,Int16,apache-arrow/Int16,Int32,apache-arrow/Int32,Int64,apache-arrow/Int64,Int8,apache-arrow/Int8,IntervalYearMonth,apache-arrow/IntervalYearMonth,List,apache-arrow/List,Map_,apache-arrow/Map_,Null,apache-arrow/Null,Schema,apache-arrow/Schema,Struct,apache-arrow/Struct,Table,apache-arrow/Table,TimestampMicrosecond,apache-arrow/TimestampMicrosecond,Utf8,apache-arrow/Utf8,tableToIPC,apache-arrow/tableToIPC,Type,apache-arrow/Type,tableFromIPC,apache-arrow/tableFromIPC,DataType,apache-arrow/DataType"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/apache-arrow/package.json"}],"concludedValue":"packages/appkit/node_modules/apache-arrow/package.json"}],"occurrences":[{"location":"dist/connectors/sql-warehouse/arrow-schema.js#1"},{"location":"dist/plugins/analytics/result-delivery.js#4"},{"location":"dist/type-generator/query-registry.js#13"},{"location":"tmp/dist/connectors/sql-warehouse/arrow-schema.js#1"},{"location":"tmp/dist/plugins/analytics/result-delivery.js#4"},{"location":"tmp/dist/type-generator/query-registry.js#13"},{"location":"src/connectors/sql-warehouse/arrow-schema.ts#25"},{"location":"src/plugins/analytics/result-delivery.ts#1"},{"location":"src/type-generator/query-registry.ts#4"}]}},{"group":"","name":"dotenv","version":"16.6.1","description":"Loads environment variables from .env file","scope":"required","licenses":[{"license":{"id":"BSD-2-Clause","url":"https://opensource.org/licenses/BSD-2-Clause"}}],"purl":"pkg:npm/dotenv@16.6.1","externalReferences":[{"type":"vcs","url":"https://github.com/motdotla/dotenv#readme"},{"type":"vcs","url":"git://github.com/motdotla/dotenv.git"}],"type":"library","bom-ref":"pkg:npm/dotenv@16.6.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/dotenv/package.json"},{"name":"ImportedModules","value":"dotenv,dotenv/config"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/dotenv/package.json"}],"concludedValue":"packages/appkit/node_modules/dotenv/package.json"}],"occurrences":[{"location":"dist/plugins/server/index.js#23"},{"location":"dist/type-generator/index.js#21"},{"location":"tmp/dist/cli/commands/doctor/index.js#6"},{"location":"tmp/dist/cli/commands/registry/env-reconcile.js#2"},{"location":"tmp/dist/cli/index.js#12"},{"location":"tmp/dist/plugins/server/index.js#23"},{"location":"tmp/dist/type-generator/index.js#21"},{"location":"src/plugins/server/index.ts#5"},{"location":"src/type-generator/index.ts#5"},{"location":"tmp/dist/cli/index.js#12"}]}},{"authors":[{"name":"Drizzle Team"}],"group":"","name":"drizzle-orm","version":"0.45.2","description":"Drizzle ORM package for SQL databases","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/drizzle-orm@0.45.2","externalReferences":[{"type":"website","url":"https://orm.drizzle.team"},{"type":"vcs","url":"git+https://github.com/drizzle-team/drizzle-orm.git"}],"type":"library","bom-ref":"pkg:npm/drizzle-orm@0.45.2","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/drizzle-orm/package.json"},{"name":"ImportedModules","value":"drizzle-orm,drizzle-orm/and,drizzle-orm/eq,isSQLWrapper,drizzle-orm/isSQLWrapper,drizzle-orm/sql,drizzle-orm/node-postgres,drizzle,drizzle-orm/node-postgres/drizzle,drizzle-orm/asc,desc,drizzle-orm/desc,drizzle-orm/gt,drizzle-orm/gte,ilike,drizzle-orm/ilike,inArray,drizzle-orm/inArray,isNull,drizzle-orm/isNull,like,drizzle-orm/like,drizzle-orm/lt,drizzle-orm/lte,drizzle-orm/ne,drizzle-orm/or,relations,drizzle-orm/relations,drizzle-orm/pg-core,bigint,drizzle-orm/pg-core/bigint,boolean,drizzle-orm/pg-core/boolean,integer,drizzle-orm/pg-core/integer,jsonb,drizzle-orm/pg-core/jsonb,pgEnum,drizzle-orm/pg-core/pgEnum,pgSchema,drizzle-orm/pg-core/pgSchema,pgTable,drizzle-orm/pg-core/pgTable,text,drizzle-orm/pg-core/text,timestamp,drizzle-orm/pg-core/timestamp,uuid,drizzle-orm/pg-core/uuid,varchar,drizzle-orm/pg-core/varchar,drizzle-orm/SQL,NodePgDatabase,drizzle-orm/node-postgres/NodePgDatabase,PgTable,drizzle-orm/pg-core/PgTable,AnyPgColumn,drizzle-orm/pg-core/AnyPgColumn,Relation,drizzle-orm/Relation,PgColumnBuilderBase,drizzle-orm/pg-core/PgColumnBuilderBase,PgEnum,drizzle-orm/pg-core/PgEnum"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/drizzle-orm/package.json"}],"concludedValue":"packages/appkit/node_modules/drizzle-orm/package.json"}],"occurrences":[{"location":"dist/database/runtime/engine/drizzle-data-path.js#7"},{"location":"dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"dist/database/runtime/engine/translate.js#7"},{"location":"dist/database/schema-builder/engine/relations.js#2"},{"location":"dist/database/schema-builder/engine/tables.js#2"},{"location":"tmp/dist/database/runtime/engine/drizzle-data-path.js#7"},{"location":"tmp/dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"tmp/dist/database/runtime/engine/translate.js#7"},{"location":"tmp/dist/database/schema-builder/engine/relations.js#2"},{"location":"tmp/dist/database/schema-builder/engine/tables.js#2"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#1"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#2"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#3"},{"location":"src/database/runtime/engine/translate.ts#18"},{"location":"src/database/runtime/engine/translate.ts#19"},{"location":"src/database/schema-builder/engine/relations.ts#1"},{"location":"src/database/schema-builder/engine/relations.ts#2"},{"location":"src/database/schema-builder/engine/tables.ts#16"},{"location":"dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"tmp/dist/database/runtime/engine/drizzle-data-path.js#8"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#2"},{"location":"dist/database/schema-builder/engine/tables.js#2"},{"location":"tmp/dist/database/schema-builder/engine/tables.js#2"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#3"},{"location":"src/database/runtime/engine/translate.ts#19"},{"location":"src/database/schema-builder/engine/relations.ts#2"},{"location":"src/database/schema-builder/engine/tables.ts#16"}]},"tags":["orm","sql"]},{"authors":[{"name":"TJ Holowaychuk <tj@vision-media.ca>"}],"group":"","name":"express","version":"4.22.2","description":"Fast, unopinionated, minimalist web framework","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/express@4.22.2","externalReferences":[{"type":"website","url":"http://expressjs.com/"}],"type":"framework","bom-ref":"pkg:npm/express@4.22.2","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/express/package.json"},{"name":"ImportedModules","value":"express,NextFunction,express/NextFunction,Request,express/Request,Response,express/Response"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/express/package.json"}],"concludedValue":"packages/appkit/node_modules/express/package.json"}],"occurrences":[{"location":"dist/plugins/server/index.js#24"},{"location":"dist/plugins/server/static-server.js#4"},{"location":"tmp/dist/plugins/server/index.js#24"},{"location":"tmp/dist/plugins/server/static-server.js#4"},{"location":"src/core/plugin-context.ts#1"},{"location":"src/logging/logger.ts#5"},{"location":"src/plugin/plugin.ts#2"},{"location":"src/plugins/agents/agents.ts#5"},{"location":"src/plugins/agents/tool-dispatch.ts#3"},{"location":"src/plugins/ai-search/ai-search.ts#3"},{"location":"src/plugins/analytics/analytics.ts#1"},{"location":"src/plugins/database/crud/response.ts#1"},{"location":"src/plugins/database/crud/routes.ts#1"},{"location":"src/plugins/database/database.ts#1"},{"location":"src/plugins/files/plugin.ts#4"},{"location":"src/plugins/genie/genie.ts#3"},{"location":"src/plugins/jobs/plugin.ts#3"},{"location":"src/plugins/server/base-server.ts#1"},{"location":"src/plugins/server/index.ts#6"},{"location":"src/plugins/server/remote-tunnel/gate.ts#1"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-controller.ts#3"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-manager.ts#7"},{"location":"src/plugins/server/static-server.ts#4"},{"location":"src/plugins/server/static-server.ts#5"},{"location":"src/plugins/server/vite-dev-server.ts#4"},{"location":"src/plugins/serving/serving.ts#5"},{"location":"src/testing/test-plugin-context.ts#1"},{"location":"src/utils/safe-handler.ts#1"}]},"tags":["framework","web"]},{"authors":[{"name":"Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)"}],"group":"","name":"get-port","version":"7.2.0","description":"Get an available port","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/get-port@7.2.0","type":"library","bom-ref":"pkg:npm/get-port@7.2.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/get-port/package.json"},{"name":"ImportedModules","value":"get-port,portNumbers,get-port/portNumbers"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/get-port/package.json"}],"concludedValue":"packages/appkit/node_modules/get-port/package.json"}],"occurrences":[{"location":"dist/plugins/server/index.js#25"},{"location":"tmp/dist/plugins/server/index.js#25"},{"location":"src/plugins/server/index.ts#7"}]}},{"authors":[{"name":"Vladimir Zapparov <dervus.grim@gmail.com>"}],"group":"","name":"js-yaml","version":"4.3.1","description":"YAML 1.2 parser and serializer","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/js-yaml@4.3.1","type":"library","bom-ref":"pkg:npm/js-yaml@4.3.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/js-yaml/package.json"},{"name":"ImportedModules","value":"js-yaml"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/js-yaml/package.json"}],"concludedValue":"packages/appkit/node_modules/js-yaml/package.json"}],"occurrences":[{"location":"dist/core/agent/load-agents.js#7"},{"location":"dist/core/agent/skills/parse-skill.js#3"},{"location":"tmp/dist/cli/commands/doctor/bundle.js#5"},{"location":"tmp/dist/core/agent/load-agents.js#7"},{"location":"tmp/dist/core/agent/skills/parse-skill.js#3"},{"location":"src/core/agent/load-agents.ts#5"},{"location":"src/core/agent/skills/parse-skill.ts#1"}]}},{"authors":[{"name":"Rich Harris"}],"group":"","name":"magic-string","version":"0.30.21","description":"Modify strings, generate sourcemaps","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/magic-string@0.30.21","externalReferences":[{"type":"vcs","url":"git+https://github.com/Rich-Harris/magic-string.git"}],"type":"library","bom-ref":"pkg:npm/magic-string@0.30.21","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/magic-string/package.json"},{"name":"ImportedModules","value":"magic-string"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/magic-string/package.json"}],"concludedValue":"packages/appkit/node_modules/magic-string/package.json"}],"occurrences":[{"location":"dist/plugins/server/react-source-loc-vite-plugin.js#3"},{"location":"tmp/dist/plugins/server/react-source-loc-vite-plugin.js#3"},{"location":"src/plugins/server/react-source-loc-vite-plugin.ts#4"}]}},{"authors":[{"name":"Kevin Deng <sxzz@sxzz.moe>"}],"group":"","name":"obug","version":"2.1.1","description":"A lightweight JavaScript debugging utility, forked from debug, featuring TypeScript and ESM support.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/obug@2.1.1","externalReferences":[{"type":"vcs","url":"https://github.com/sxzz/obug#readme"},{"type":"vcs","url":"git+https://github.com/sxzz/obug.git"}],"type":"library","bom-ref":"pkg:npm/obug@2.1.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/obug/package.json"},{"name":"ImportedModules","value":"obug,createDebug,obug/createDebug"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/obug/package.json"}],"concludedValue":"packages/appkit/node_modules/obug/package.json"}],"occurrences":[{"location":"dist/logging/logger.js#7"},{"location":"tmp/dist/logging/logger.js#7"},{"location":"src/logging/logger.ts#6"}]}},{"authors":[{"name":"Brian Carlson <brian.m.carlson@gmail.com>"}],"group":"","name":"pg","version":"8.18.0","description":"PostgreSQL client - pure javascript & libpq with the same API","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/pg@8.18.0","externalReferences":[{"type":"vcs","url":"https://github.com/brianc/node-postgres"},{"type":"vcs","url":"git://github.com/brianc/node-postgres.git"}],"type":"library","bom-ref":"pkg:npm/pg@8.18.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/pg/package.json"},{"name":"ImportedModules","value":"pg,Pool,pg/Pool,PoolClient,pg/PoolClient,QueryResult,pg/QueryResult,QueryResultRow,pg/QueryResultRow"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/pg/package.json"}],"concludedValue":"packages/appkit/node_modules/pg/package.json"}],"occurrences":[{"location":"src/cache/storage/persistent.ts#3"},{"location":"src/connectors/lakebase/index.ts#6"},{"location":"src/connectors/lakebase/pool-manager.ts#2"},{"location":"src/connectors/lakebase/routing-pool.ts#1"},{"location":"src/database/runtime/engine/drizzle-data-path.ts#4"},{"location":"src/plugins/lakebase/lakebase.ts#1"}]}},{"authors":[{"name":"Alexey Raspopov"}],"group":"","name":"picocolors","version":"1.1.1","description":"The tiniest and the fastest library for terminal output formatting with ANSI colors","scope":"required","licenses":[{"license":{"id":"ISC","url":"https://opensource.org/licenses/ISC"}}],"purl":"pkg:npm/picocolors@1.1.1","type":"library","bom-ref":"pkg:npm/picocolors@1.1.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/picocolors/package.json"},{"name":"ImportedModules","value":"picocolors"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/picocolors/package.json"}],"concludedValue":"packages/appkit/node_modules/picocolors/package.json"}],"occurrences":[{"location":"dist/errors/configuration.js#2"},{"location":"dist/plugins/agents/agents.js#40"},{"location":"dist/plugins/database/database.js#13"},{"location":"dist/plugins/server/client-config-sanitizer.js#2"},{"location":"dist/plugins/server/utils.js#2"},{"location":"dist/type-generator/index.js#17"},{"location":"dist/type-generator/migration.js#2"},{"location":"dist/type-generator/query-registry.js#10"},{"location":"dist/type-generator/serving/generator.js#8"},{"location":"tmp/dist/cli/commands/doctor/report.js#2"},{"location":"tmp/dist/cli/commands/registry/add.js#12"},{"location":"tmp/dist/cli/commands/registry/config-writer.js#6"},{"location":"tmp/dist/cli/commands/registry/env-writer.js#5"},{"location":"tmp/dist/cli/commands/registry/info.js#6"},{"location":"tmp/dist/cli/commands/registry/list.js#5"},{"location":"tmp/dist/cli/commands/registry/requirements.js#3"},{"location":"tmp/dist/errors/configuration.js#2"},{"location":"tmp/dist/plugins/agents/agents.js#40"},{"location":"tmp/dist/plugins/database/database.js#13"},{"location":"tmp/dist/plugins/server/client-config-sanitizer.js#2"},{"location":"tmp/dist/plugins/server/utils.js#2"},{"location":"tmp/dist/type-generator/index.js#17"},{"location":"tmp/dist/type-generator/migration.js#2"},{"location":"tmp/dist/type-generator/query-registry.js#10"},{"location":"tmp/dist/type-generator/serving/generator.js#8"},{"location":"src/errors/configuration.ts#1"},{"location":"src/plugins/agents/agents.ts#6"},{"location":"src/plugins/database/database.ts#2"},{"location":"src/plugins/server/client-config-sanitizer.ts#1"},{"location":"src/plugins/server/utils.ts#6"},{"location":"src/type-generator/index.ts#6"},{"location":"src/type-generator/migration.ts#5"},{"location":"src/type-generator/query-registry.ts#5"},{"location":"src/type-generator/serving/generator.ts#4"}]}},{"authors":[{"name":"GitHub Inc."}],"group":"","name":"semver","version":"7.7.3","description":"The semantic version parser used by npm.","scope":"required","licenses":[{"license":{"id":"ISC","url":"https://opensource.org/licenses/ISC"}}],"purl":"pkg:npm/semver@7.7.3","externalReferences":[{"type":"vcs","url":"git+https://github.com/npm/node-semver.git"}],"type":"library","bom-ref":"pkg:npm/semver@7.7.3","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/semver/package.json"},{"name":"ImportedModules","value":"semver,coerce,semver/coerce"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/semver/package.json"}],"concludedValue":"packages/appkit/node_modules/semver/package.json"}],"occurrences":[{"location":"dist/context/client-options.js#2"},{"location":"tmp/dist/context/client-options.js#2"},{"location":"src/context/client-options.ts#1"}]}},{"group":"","name":"shared","version":"0.0.1","scope":"required","purl":"pkg:npm/shared@0.0.1","type":"library","bom-ref":"pkg:npm/shared@0.0.1","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/shared/package.json"},{"name":"ExportedModules","value":"shared,shared/workspace-client,AgentAdapter,shared/AgentAdapter,AgentEvent,shared/AgentEvent,AgentInput,shared/AgentInput,AgentRunContext,shared/AgentRunContext,AgentToolDefinition,shared/AgentToolDefinition,Message,shared/Message,Thread,shared/Thread,ThreadStore,shared/ThreadStore,ToolAnnotations,shared/ToolAnnotations,ToolProvider,shared/ToolProvider,GenieAttachmentResponse,shared/GenieAttachmentResponse,GenieMessageResponse,shared/GenieMessageResponse,GenieStatementResponse,shared/GenieStatementResponse,GenieStreamEvent,shared/GenieStreamEvent,BasePluginConfig,shared/BasePluginConfig,CacheConfig,shared/CacheConfig,IAppRouter,shared/IAppRouter,PluginData,shared/PluginData,StreamExecutionSettings,shared/StreamExecutionSettings,isSQLTypeMarker,shared/isSQLTypeMarker,shared/sql,MetricFilter,shared/MetricFilter,MetricFilterOperatorName,shared/MetricFilterOperatorName,MetricOrderBy,shared/MetricOrderBy,MetricPredicate,shared/MetricPredicate,ApiError,shared/ApiError,ConfigError,shared/ConfigError,Context,shared/Context,createWorkspaceClient,shared/createWorkspaceClient,Time,shared/Time,TimeUnits,shared/TimeUnits,CancellationToken,shared/workspace-client/CancellationToken,ClientOptions,shared/workspace-client/ClientOptions,files,shared/workspace-client/files,GenieMessage,shared/workspace-client/GenieMessage,jobs,shared/workspace-client/jobs,serving,shared/workspace-client/serving,shared/workspace-client/sql,Waiter,shared/workspace-client/Waiter,WorkspaceClient,shared/workspace-client/WorkspaceClient,WorkspaceClientOptions,shared/workspace-client/WorkspaceClientOptions"},{"name":"ImportedModules","value":"shared,AgentAdapter,shared/AgentAdapter,AgentEvent,shared/AgentEvent,AgentInput,shared/AgentInput,AgentRunContext,shared/AgentRunContext,AgentToolDefinition,shared/AgentToolDefinition,Message,shared/Message,ResponseStreamEvent,shared/ResponseStreamEvent,CacheConfig,shared/CacheConfig,CacheEntry,shared/CacheEntry,CacheStorage,shared/CacheStorage,TelemetryOptions,shared/TelemetryOptions,GenieMessageResponse,shared/GenieMessageResponse,PluginConstructor,shared/PluginConstructor,PluginData,shared/PluginData,ToolProvider,shared/ToolProvider,ToolAnnotations,shared/ToolAnnotations,BasePluginConfig,shared/BasePluginConfig,ThreadStore,shared/ThreadStore,BasePlugin,shared/BasePlugin,InputPluginMap,shared/InputPluginMap,OptionalConfigPluginDef,shared/OptionalConfigPluginDef,PluginMap,shared/PluginMap,IAppRequest,shared/IAppRequest,TunnelConnection,shared/TunnelConnection,RetryConfig,shared/RetryConfig,TelemetryConfig,shared/TelemetryConfig,IAppResponse,shared/IAppResponse,PluginEndpointMap,shared/PluginEndpointMap,PluginExecuteConfig,shared/PluginExecuteConfig,PluginExecutionSettings,shared/PluginExecutionSettings,PluginPhase,shared/PluginPhase,RouteConfig,shared/RouteConfig,StreamExecuteHandler,shared/StreamExecuteHandler,StreamExecutionSettings,shared/StreamExecutionSettings,camelToKebab,shared/camelToKebab,ToPlugin,shared/ToPlugin,IAppRouter,shared/IAppRouter,ResponseOutputMessage,shared/ResponseOutputMessage,Thread,shared/Thread,ResponseFunctionCallOutput,shared/ResponseFunctionCallOutput,ResponseFunctionToolCall,shared/ResponseFunctionToolCall,AnalyticsSseMessage,shared/AnalyticsSseMessage,makeResultMessage,shared/makeResultMessage,SQLTypeMarker,shared/SQLTypeMarker,MetricFilterOperatorName,shared/MetricFilterOperatorName,MetricOrderDirection,shared/MetricOrderDirection,shared/sql,MetricViewColumnDisplay,shared/MetricViewColumnDisplay,MetricViewsMetadata,shared/MetricViewsMetadata,isSQLTypeMarker,shared/isSQLTypeMarker,MetricFilter,shared/MetricFilter,MetricOrderBy,shared/MetricOrderBy,PluginClientConfigs,shared/PluginClientConfigs,PluginEndpoints,shared/PluginEndpoints,pluginManifestSchema,shared/pluginManifestSchema,ResourceFieldEntry,shared/ResourceFieldEntry,PluginManifest,shared/PluginManifest,StreamConfig,shared/StreamConfig,shared/workspace-client"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/shared/package.json"}],"concludedValue":"packages/appkit/node_modules/shared/package.json"}],"occurrences":[{"location":"src/agents/databricks.ts#7"},{"location":"src/agents/supervisor-api.ts#8"},{"location":"src/beta.ts#20"},{"location":"src/cache/defaults.ts#1"},{"location":"src/cache/index.ts#3"},{"location":"src/cache/storage/memory.ts#1"},{"location":"src/cache/storage/persistent.ts#4"},{"location":"src/connectors/ai-search/types.ts#1"},{"location":"src/connectors/files/client.ts#3"},{"location":"src/connectors/genie/types.ts#3"},{"location":"src/connectors/genie/types.ts#10"},{"location":"src/connectors/jobs/types.ts#1"},{"location":"src/connectors/mcp/client.ts#25"},{"location":"src/connectors/sql-warehouse/client.ts#1"},{"location":"src/core/agent/build-toolkit.ts#1"},{"location":"src/core/agent/consume-adapter-stream.ts#1"},{"location":"src/core/agent/load-agents.ts#6"},{"location":"src/core/agent/run-agent.ts#11"},{"location":"src/core/agent/toolkit-resolver.ts#1"},{"location":"src/core/agent/tools/define-tool.ts#1"},{"location":"src/core/agent/tools/function-tool.ts#1"},{"location":"src/core/agent/tools/tool.ts#1"},{"location":"src/core/agent/types.ts#7"},{"location":"src/core/appkit.ts#9"},{"location":"src/core/lifecycle-manager.ts#1"},{"location":"src/core/plugin-context.ts#2"},{"location":"src/index.ts#15"},{"location":"src/index.ts#16"},{"location":"src/plugin/dev-reader.ts#3"},{"location":"src/plugin/index.ts#1"},{"location":"src/plugin/interceptors/cache.ts#1"},{"location":"src/plugin/interceptors/retry.ts#1"},{"location":"src/plugin/interceptors/telemetry.ts#1"},{"location":"src/plugin/plugin.ts#14"},{"location":"src/plugin/plugin.ts#15"},{"location":"src/plugin/to-plugin.ts#1"},{"location":"src/plugins/agents/adapter-extensions.ts#1"},{"location":"src/plugins/agents/agents.ts#17"},{"location":"src/plugins/agents/approval.ts#1"},{"location":"src/plugins/agents/builtin-tools.ts#1"},{"location":"src/plugins/agents/defaults.ts#1"},{"location":"src/plugins/agents/event-translator.ts#9"},{"location":"src/plugins/agents/thread-store.ts#3"},{"location":"src/plugins/agents/tool-dispatch.ts#4"},{"location":"src/plugins/ai-search/ai-search.ts#4"},{"location":"src/plugins/ai-search/defaults.ts#1"},{"location":"src/plugins/ai-search/types.ts#1"},{"location":"src/plugins/analytics/analytics.ts#11"},{"location":"src/plugins/analytics/defaults.ts#1"},{"location":"src/plugins/analytics/mv/constants.ts#1"},{"location":"src/plugins/analytics/mv/formatters.ts#1"},{"location":"src/plugins/analytics/mv/metadata.ts#1"},{"location":"src/plugins/analytics/query.ts#3"},{"location":"src/plugins/analytics/result-delivery.ts#2"},{"location":"src/plugins/analytics/types.ts#7"},{"location":"src/plugins/analytics/types.ts#14"},{"location":"src/plugins/database/database.ts#3"},{"location":"src/plugins/database/defaults.ts#1"},{"location":"src/plugins/database/entity-client.ts#1"},{"location":"src/plugins/files/defaults.ts#1"},{"location":"src/plugins/files/plugin.ts#10"},{"location":"src/plugins/files/types.ts#1"},{"location":"src/plugins/genie/defaults.ts#1"},{"location":"src/plugins/genie/genie.ts#9"},{"location":"src/plugins/genie/types.ts#1"},{"location":"src/plugins/genie/types.ts#4"},{"location":"src/plugins/jobs/defaults.ts#1"},{"location":"src/plugins/jobs/plugin.ts#8"},{"location":"src/plugins/jobs/types.ts#1"},{"location":"src/plugins/lakebase/lakebase.ts#2"},{"location":"src/plugins/lakebase/types.ts#1"},{"location":"src/plugins/server/index.ts#8"},{"location":"src/plugins/server/index.ts#9"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-manager.ts#8"},{"location":"src/plugins/server/types.ts#1"},{"location":"src/plugins/server/utils.ts#7"},{"location":"src/plugins/serving/serving.ts#6"},{"location":"src/plugins/serving/types.ts#1"},{"location":"src/plugins/ui-variants/index.ts#1"},{"location":"src/registry/manifest-loader.ts#1"},{"location":"src/registry/resource-registry.ts#13"},{"location":"src/registry/types.ts#33"},{"location":"src/registry/types.ts#39"},{"location":"src/stream/sse-writer.ts#1"},{"location":"src/stream/stream-manager.ts#4"},{"location":"src/stream/types.ts#2"},{"location":"src/telemetry/telemetry-manager.ts#36"},{"location":"src/telemetry/telemetry-provider.ts#5"},{"location":"src/testing/create-test-app.ts#13"},{"location":"src/testing/create-test-plugin.ts#1"},{"location":"src/testing/fixtures.ts#4"},{"location":"src/testing/test-app.ts#1"},{"location":"src/testing/test-plugin-context.ts#7"},{"location":"src/workspace-client/index.ts#15"},{"location":"src/workspace-client/index.ts#27"},{"location":"src/workspace-client/index.ts#27"}]},"tags":["sql"]},{"authors":[{"name":"Anthony Fu <anthonyfu117@hotmail.com>"}],"group":"","name":"vitest","version":"3.2.4","description":"Next generation testing framework powered by Vite","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/vitest@3.2.4","externalReferences":[{"type":"vcs","url":"https://github.com/vitest-dev/vitest#readme"},{"type":"vcs","url":"git+https://github.com/vitest-dev/vitest.git"}],"type":"framework","bom-ref":"pkg:npm/vitest@3.2.4","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/vitest/package.json"},{"name":"ImportedModules","value":"vitest,vitest/vi,afterEach,vitest/afterEach,beforeEach,vitest/beforeEach,onTestFinished,vitest/onTestFinished,Mock,vitest/Mock"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/vitest/package.json"}],"concludedValue":"packages/appkit/node_modules/vitest/package.json"}],"occurrences":[{"location":"dist/testing/create-test-app.js#7"},{"location":"dist/testing/fixtures.js#8"},{"location":"dist/testing/mock-workspace-client.js#1"},{"location":"dist/testing/test-app.js#2"},{"location":"dist/testing/test-cache.js#5"},{"location":"dist/testing/test-plugin-context.js#9"},{"location":"tmp/dist/testing/create-test-app.js#7"},{"location":"tmp/dist/testing/fixtures.js#8"},{"location":"tmp/dist/testing/mock-workspace-client.js#1"},{"location":"tmp/dist/testing/test-app.js#2"},{"location":"tmp/dist/testing/test-cache.js#5"},{"location":"tmp/dist/testing/test-plugin-context.js#9"},{"location":"src/testing/create-test-app.ts#14"},{"location":"src/testing/fixtures.ts#5"},{"location":"src/testing/mock-workspace-client.ts#6"},{"location":"src/testing/mock-workspace-client.ts#7"},{"location":"src/testing/test-app.ts#2"},{"location":"src/testing/test-cache.ts#1"},{"location":"src/testing/test-plugin-context.ts#8"}]},"tags":["framework"]},{"authors":[{"name":"Einar Otto Stangvik <einaros@gmail.com> (http://2x.io)"}],"group":"","name":"ws","version":"8.21.0","description":"Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/ws@8.21.0","externalReferences":[{"type":"vcs","url":"https://github.com/websockets/ws"},{"type":"vcs","url":"git+https://github.com/websockets/ws.git"}],"type":"library","bom-ref":"pkg:npm/ws@8.21.0","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/ws/package.json"},{"name":"ImportedModules","value":"ws,WebSocketServer,ws/WebSocketServer"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/ws/package.json"}],"concludedValue":"packages/appkit/node_modules/ws/package.json"}],"occurrences":[{"location":"dist/plugins/server/remote-tunnel/remote-tunnel-manager.js#8"},{"location":"tmp/dist/plugins/server/remote-tunnel/remote-tunnel-manager.js#8"},{"location":"src/plugins/server/remote-tunnel/remote-tunnel-manager.ts#9"}]}},{"authors":[{"name":"Colin McDonnell <zod@colinhacks.com>"}],"group":"","name":"zod","version":"4.3.6","description":"TypeScript-first schema declaration and validation library with static type inference","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/zod@4.3.6","externalReferences":[{"type":"website","url":"https://zod.dev"},{"type":"vcs","url":"git+https://github.com/colinhacks/zod.git"}],"type":"library","bom-ref":"pkg:npm/zod@4.3.6","properties":[{"name":"SrcFile","value":"packages/appkit/node_modules/zod/package.json"},{"name":"ImportedModules","value":"zod,toJSONSchema,zod/toJSONSchema,zod/z,ZodType,zod/ZodType"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit/node_modules/zod/package.json"}],"concludedValue":"packages/appkit/node_modules/zod/package.json"}],"occurrences":[{"location":"dist/core/agent/tools/json-schema.js#1"},{"location":"dist/database/schema-builder/validators.js#1"},{"location":"dist/plugins/agents/schemas.js#1"},{"location":"dist/plugins/analytics/analytics.js#30"},{"location":"dist/plugins/analytics/mv/schemas.js#6"},{"location":"dist/plugins/files/plugin.js#24"},{"location":"dist/plugins/genie/genie.js#16"},{"location":"dist/plugins/jobs/plugin.js#18"},{"location":"dist/plugins/lakebase/lakebase.js#17"},{"location":"dist/shared/src/schemas/manifest.js#2"},{"location":"dist/shared/src/schemas/metric-metadata-bundle.js#2"},{"location":"dist/shared/src/schemas/metric-source.js#2"},{"location":"dist/shared/src/sse/analytics.js#1"},{"location":"tmp/dist/core/agent/tools/json-schema.js#1"},{"location":"tmp/dist/database/schema-builder/validators.js#1"},{"location":"tmp/dist/plugins/agents/schemas.js#1"},{"location":"tmp/dist/plugins/analytics/analytics.js#30"},{"location":"tmp/dist/plugins/analytics/mv/schemas.js#6"},{"location":"tmp/dist/plugins/files/plugin.js#24"},{"location":"tmp/dist/plugins/genie/genie.js#16"},{"location":"tmp/dist/plugins/jobs/plugin.js#18"},{"location":"tmp/dist/plugins/lakebase/lakebase.js#17"},{"location":"tmp/dist/schemas/manifest.js#2"},{"location":"tmp/dist/shared/src/schemas/manifest.js#2"},{"location":"tmp/dist/shared/src/schemas/metric-metadata-bundle.js#2"},{"location":"tmp/dist/shared/src/schemas/metric-source.js#2"},{"location":"tmp/dist/shared/src/sse/analytics.js#1"},{"location":"src/core/agent/tools/define-tool.ts#2"},{"location":"src/core/agent/tools/json-schema.ts#1"},{"location":"src/core/agent/tools/tool.ts#2"},{"location":"src/database/schema-builder/validators.ts#1"},{"location":"src/database/schema-builder/validators.ts#2"},{"location":"src/plugins/agents/schemas.ts#1"},{"location":"src/plugins/analytics/analytics.ts#12"},{"location":"src/plugins/analytics/mv/schemas.ts#1"},{"location":"src/plugins/files/plugin.ts#11"},{"location":"src/plugins/genie/genie.ts#10"},{"location":"src/plugins/jobs/plugin.ts#9"},{"location":"src/plugins/jobs/types.ts#2"},{"location":"src/plugins/lakebase/lakebase.ts#3"}]},"tags":["validation"]}],"dependencies":[],"compositions":[{"bom-ref":"pkg:npm/@databricks/appkit@0.80.0","aggregate":"incomplete"}],"annotations":[{"bom-ref":"metadata-annotations","subjects":["pkg:npm/@databricks/appkit@0.80.0"],"annotator":{"component":{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}},"timestamp":"2026-09-28T17:23:10Z","text":"This Software Bill-of-Materials (SBOM) document was created on Monday, September 28, 2026 with cdxgen. The data was captured during the build lifecycle phase. The document describes an application named 'appkit' with version '0.80.0'. There are 34 components. The package type in this SBOM is npm with 4 purl namespaces described under components. The components were identified from 34 source files."}]}