@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.
- package/dist/appkit/package.js +1 -1
- package/dist/plugins/database/database.d.ts +2 -0
- package/dist/plugins/database/database.d.ts.map +1 -1
- package/dist/plugins/database/database.js +34 -0
- package/dist/plugins/database/database.js.map +1 -1
- package/dist/plugins/server/utils.js +85 -5
- package/dist/plugins/server/utils.js.map +1 -1
- package/dist/shared/src/schemas/manifest.d.ts +33 -33
- package/package.json +1 -1
- package/sbom.cdx.json +1 -1
package/dist/appkit/package.js
CHANGED
|
@@ -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":";;;;;;;;;;;;;
|
|
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
|
-
})))
|
|
62
|
-
const
|
|
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
|
|
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
|
|
118
|
+
for (const { method, path } of lines) {
|
|
69
119
|
const methodStr = (METHOD_COLORS[method] || pc.white)(pc.bold(method.padEnd(maxMethodLen)));
|
|
70
|
-
|
|
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
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."}]}
|