@databricks/appkit 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +2 -0
  2. package/dist/app/index.d.ts.map +1 -1
  3. package/dist/appkit/package.js +1 -1
  4. package/dist/cache/index.d.ts +1 -1
  5. package/dist/cache/index.d.ts.map +1 -1
  6. package/dist/cli/commands/plugin/add-resource/add-resource.js +10 -4
  7. package/dist/cli/commands/plugin/add-resource/add-resource.js.map +1 -1
  8. package/dist/cli/commands/plugin/create/scaffold.js +10 -16
  9. package/dist/cli/commands/plugin/create/scaffold.js.map +1 -1
  10. package/dist/cli/commands/plugin/list/list.js +44 -26
  11. package/dist/cli/commands/plugin/list/list.js.map +1 -1
  12. package/dist/cli/commands/plugin/manifest-resolve.js +57 -0
  13. package/dist/cli/commands/plugin/manifest-resolve.js.map +1 -0
  14. package/dist/cli/commands/plugin/sync/sync.js +121 -71
  15. package/dist/cli/commands/plugin/sync/sync.js.map +1 -1
  16. package/dist/cli/commands/plugin/trusted-js-manifest.js +28 -0
  17. package/dist/cli/commands/plugin/trusted-js-manifest.js.map +1 -0
  18. package/dist/cli/commands/plugin/validate/validate.js +32 -14
  19. package/dist/cli/commands/plugin/validate/validate.js.map +1 -1
  20. package/dist/connectors/genie/client.d.ts +4 -0
  21. package/dist/connectors/genie/client.js +33 -16
  22. package/dist/connectors/genie/client.js.map +1 -1
  23. package/dist/connectors/genie/defaults.js +2 -1
  24. package/dist/connectors/genie/defaults.js.map +1 -1
  25. package/dist/connectors/genie/index.d.ts +3 -0
  26. package/dist/connectors/genie/types.d.ts +1 -0
  27. package/dist/connectors/genie/types.d.ts.map +1 -1
  28. package/dist/connectors/lakebase/index.d.ts +2 -3
  29. package/dist/connectors/lakebase/index.d.ts.map +1 -1
  30. package/dist/connectors/lakebase/index.js.map +1 -1
  31. package/dist/connectors/lakebase-v1/client.js +1 -1
  32. package/dist/context/execution-context.d.ts +0 -1
  33. package/dist/context/execution-context.d.ts.map +1 -1
  34. package/dist/context/index.d.ts +3 -0
  35. package/dist/context/service-context.d.ts +1 -1
  36. package/dist/context/service-context.d.ts.map +1 -1
  37. package/dist/context/user-context.d.ts +1 -2
  38. package/dist/context/user-context.d.ts.map +1 -1
  39. package/dist/core/appkit.d.ts +2 -1
  40. package/dist/core/appkit.d.ts.map +1 -1
  41. package/dist/core/index.d.ts +1 -0
  42. package/dist/errors/authentication.d.ts +0 -1
  43. package/dist/errors/authentication.d.ts.map +1 -1
  44. package/dist/errors/base.d.ts.map +1 -1
  45. package/dist/errors/configuration.d.ts +0 -1
  46. package/dist/errors/configuration.d.ts.map +1 -1
  47. package/dist/errors/connection.d.ts +0 -1
  48. package/dist/errors/connection.d.ts.map +1 -1
  49. package/dist/errors/execution.d.ts +0 -1
  50. package/dist/errors/execution.d.ts.map +1 -1
  51. package/dist/errors/initialization.d.ts +0 -1
  52. package/dist/errors/initialization.d.ts.map +1 -1
  53. package/dist/errors/server.d.ts +0 -1
  54. package/dist/errors/server.d.ts.map +1 -1
  55. package/dist/errors/tunnel.d.ts +0 -1
  56. package/dist/errors/tunnel.d.ts.map +1 -1
  57. package/dist/errors/validation.d.ts +0 -1
  58. package/dist/errors/validation.d.ts.map +1 -1
  59. package/dist/index.d.ts +7 -1
  60. package/dist/plugin/dev-reader.d.ts +5 -4
  61. package/dist/plugin/dev-reader.d.ts.map +1 -1
  62. package/dist/plugin/index.d.ts +4 -0
  63. package/dist/plugin/plugin.d.ts +3 -1
  64. package/dist/plugin/plugin.d.ts.map +1 -1
  65. package/dist/plugin/to-plugin.d.ts +1 -1
  66. package/dist/plugin/to-plugin.d.ts.map +1 -1
  67. package/dist/plugins/analytics/analytics.d.ts +5 -2
  68. package/dist/plugins/analytics/analytics.d.ts.map +1 -1
  69. package/dist/plugins/analytics/analytics.js +2 -2
  70. package/dist/plugins/analytics/analytics.js.map +1 -1
  71. package/dist/plugins/analytics/index.d.ts +2 -0
  72. package/dist/plugins/analytics/index.js +0 -1
  73. package/dist/plugins/analytics/manifest.js +30 -18
  74. package/dist/plugins/analytics/manifest.js.map +1 -1
  75. package/dist/plugins/analytics/types.d.ts +1 -0
  76. package/dist/plugins/analytics/types.d.ts.map +1 -1
  77. package/dist/plugins/genie/genie.d.ts +4 -1
  78. package/dist/plugins/genie/genie.d.ts.map +1 -1
  79. package/dist/plugins/genie/genie.js +10 -6
  80. package/dist/plugins/genie/genie.js.map +1 -1
  81. package/dist/plugins/genie/index.d.ts +4 -0
  82. package/dist/plugins/genie/index.js +0 -1
  83. package/dist/plugins/genie/manifest.js +37 -8
  84. package/dist/plugins/genie/manifest.js.map +1 -1
  85. package/dist/plugins/genie/types.d.ts +2 -0
  86. package/dist/plugins/genie/types.d.ts.map +1 -1
  87. package/dist/plugins/index.d.ts +13 -0
  88. package/dist/plugins/index.js +0 -4
  89. package/dist/plugins/lakebase/index.d.ts +2 -0
  90. package/dist/plugins/lakebase/index.js +0 -1
  91. package/dist/plugins/lakebase/lakebase.d.ts +14 -12
  92. package/dist/plugins/lakebase/lakebase.d.ts.map +1 -1
  93. package/dist/plugins/lakebase/lakebase.js +2 -2
  94. package/dist/plugins/lakebase/lakebase.js.map +1 -1
  95. package/dist/plugins/lakebase/manifest.js +14 -8
  96. package/dist/plugins/lakebase/manifest.js.map +1 -1
  97. package/dist/plugins/lakebase/types.d.ts +1 -1
  98. package/dist/plugins/lakebase/types.d.ts.map +1 -1
  99. package/dist/plugins/server/index.d.ts +7 -9
  100. package/dist/plugins/server/index.d.ts.map +1 -1
  101. package/dist/plugins/server/index.js +2 -2
  102. package/dist/plugins/server/index.js.map +1 -1
  103. package/dist/plugins/server/manifest.js +36 -18
  104. package/dist/plugins/server/manifest.js.map +1 -1
  105. package/dist/plugins/server/types.d.ts +2 -0
  106. package/dist/plugins/server/types.d.ts.map +1 -1
  107. package/dist/registry/index.d.ts +4 -0
  108. package/dist/registry/manifest-loader.d.ts +1 -1
  109. package/dist/registry/manifest-loader.d.ts.map +1 -1
  110. package/dist/registry/resource-registry.d.ts +1 -1
  111. package/dist/registry/resource-registry.d.ts.map +1 -1
  112. package/dist/registry/types.d.ts +1 -4
  113. package/dist/registry/types.d.ts.map +1 -1
  114. package/dist/registry/types.generated.d.ts +1 -1
  115. package/dist/registry/types.generated.d.ts.map +1 -1
  116. package/dist/registry/types.generated.js.map +1 -1
  117. package/dist/shared/src/cache.d.ts +1 -1
  118. package/dist/shared/src/cache.d.ts.map +1 -1
  119. package/dist/shared/src/execute.d.ts +1 -1
  120. package/dist/shared/src/execute.d.ts.map +1 -1
  121. package/dist/shared/src/genie.d.ts +6 -0
  122. package/dist/shared/src/genie.d.ts.map +1 -1
  123. package/dist/shared/src/index.d.ts +7 -0
  124. package/dist/shared/src/plugin.d.ts +2 -3
  125. package/dist/shared/src/plugin.d.ts.map +1 -1
  126. package/dist/shared/src/sql/helpers.d.ts +0 -1
  127. package/dist/shared/src/sql/helpers.d.ts.map +1 -1
  128. package/dist/shared/src/sql/types.d.ts.map +1 -1
  129. package/dist/shared/src/tunnel.d.ts +1 -1
  130. package/dist/shared/src/tunnel.d.ts.map +1 -1
  131. package/dist/stream/arrow-stream-processor.d.ts +1 -0
  132. package/dist/stream/buffers.d.ts +1 -0
  133. package/dist/stream/index.d.ts +3 -0
  134. package/dist/stream/stream-manager.d.ts +1 -0
  135. package/dist/stream/stream-manager.d.ts.map +1 -1
  136. package/dist/stream/types.d.ts +3 -0
  137. package/dist/telemetry/config.d.ts +1 -0
  138. package/dist/telemetry/index.d.ts +4 -0
  139. package/dist/telemetry/instrumentations.d.ts +1 -0
  140. package/dist/telemetry/telemetry-manager.d.ts +4 -0
  141. package/dist/telemetry/telemetry-provider.d.ts +6 -0
  142. package/dist/telemetry/types.d.ts.map +1 -1
  143. package/dist/type-generator/cache.js +10 -12
  144. package/dist/type-generator/cache.js.map +1 -1
  145. package/dist/type-generator/index.js +2 -2
  146. package/dist/type-generator/index.js.map +1 -1
  147. package/dist/type-generator/query-registry.js +165 -52
  148. package/dist/type-generator/query-registry.js.map +1 -1
  149. package/dist/type-generator/spinner.js +5 -1
  150. package/dist/type-generator/spinner.js.map +1 -1
  151. package/dist/type-generator/vite-plugin.d.ts +0 -1
  152. package/dist/type-generator/vite-plugin.d.ts.map +1 -1
  153. package/dist/type-generator/vite-plugin.js +2 -2
  154. package/dist/type-generator/vite-plugin.js.map +1 -1
  155. package/docs/api/appkit-ui/genie/GenieChatMessageList.md +7 -5
  156. package/docs/development/project-setup.md +1 -1
  157. package/docs/plugins/plugin-management.md +16 -2
  158. package/package.json +3 -1
  159. package/dist/plugins/analytics/manifest.json +0 -36
  160. package/dist/plugins/genie/manifest.json +0 -43
  161. package/dist/plugins/lakebase/manifest.json +0 -12
  162. package/dist/plugins/server/manifest.json +0 -36
  163. /package/dist/plugins/server/remote-tunnel/{denied.html → denied.html/denied.html} +0 -0
  164. /package/dist/plugins/server/remote-tunnel/{index.html → index.html/index.html} +0 -0
  165. /package/dist/plugins/server/remote-tunnel/{wait.html → wait.html/wait.html} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","names":[],"sources":["../../../../../src/cli/commands/plugin/validate/validate.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { Command } from \"commander\";\nimport {\n detectSchemaType,\n formatValidationErrors,\n validateManifest,\n validateTemplateManifest,\n} from \"./validate-manifest\";\n\nfunction resolveManifestPaths(paths: string[], cwd: string): string[] {\n const out: string[] = [];\n for (const p of paths) {\n const resolved = path.resolve(cwd, p);\n if (!fs.existsSync(resolved)) {\n console.error(`Path not found: ${p}`);\n continue;\n }\n const stat = fs.statSync(resolved);\n if (stat.isDirectory()) {\n const pluginManifest = path.join(resolved, \"manifest.json\");\n const templateManifest = path.join(resolved, \"appkit.plugins.json\");\n let found = false;\n if (fs.existsSync(pluginManifest)) {\n out.push(pluginManifest);\n found = true;\n }\n if (fs.existsSync(templateManifest)) {\n out.push(templateManifest);\n found = true;\n }\n if (!found) {\n console.error(\n `No manifest.json or appkit.plugins.json in directory: ${p}`,\n );\n }\n } else {\n out.push(resolved);\n }\n }\n return out;\n}\n\nfunction runPluginValidate(paths: string[]): void {\n const cwd = process.cwd();\n const toValidate = paths.length > 0 ? paths : [\".\"];\n const manifestPaths = resolveManifestPaths(toValidate, cwd);\n\n if (manifestPaths.length === 0) {\n console.error(\"No manifest files to validate.\");\n process.exit(1);\n }\n\n let hasFailure = false;\n for (const manifestPath of manifestPaths) {\n let obj: unknown;\n try {\n const raw = fs.readFileSync(manifestPath, \"utf-8\");\n obj = JSON.parse(raw);\n } catch (err) {\n console.error(`✗ ${manifestPath}`);\n console.error(` ${err instanceof Error ? err.message : String(err)}`);\n hasFailure = true;\n continue;\n }\n\n const schemaType = detectSchemaType(obj);\n const result =\n schemaType === \"template-plugins\"\n ? validateTemplateManifest(obj)\n : validateManifest(obj);\n\n const relativePath = path.relative(cwd, manifestPath);\n if (result.valid) {\n console.log(`✓ ${relativePath}`);\n } else {\n console.error(`✗ ${relativePath}`);\n if (result.errors?.length) {\n console.error(formatValidationErrors(result.errors, obj));\n }\n hasFailure = true;\n }\n }\n\n process.exit(hasFailure ? 1 : 0);\n}\n\nexport const pluginValidateCommand = new Command(\"validate\")\n .description(\n \"Validate plugin manifest(s) or template manifests against their JSON schema\",\n )\n .argument(\n \"[paths...]\",\n \"Paths to manifest.json, appkit.plugins.json, or plugin directories (default: .)\",\n )\n .action(runPluginValidate);\n"],"mappings":";;;;;;;AAWA,SAAS,qBAAqB,OAAiB,KAAuB;CACpE,MAAM,MAAgB,EAAE;AACxB,MAAK,MAAM,KAAK,OAAO;EACrB,MAAM,WAAW,KAAK,QAAQ,KAAK,EAAE;AACrC,MAAI,CAAC,GAAG,WAAW,SAAS,EAAE;AAC5B,WAAQ,MAAM,mBAAmB,IAAI;AACrC;;AAGF,MADa,GAAG,SAAS,SAAS,CACzB,aAAa,EAAE;GACtB,MAAM,iBAAiB,KAAK,KAAK,UAAU,gBAAgB;GAC3D,MAAM,mBAAmB,KAAK,KAAK,UAAU,sBAAsB;GACnE,IAAI,QAAQ;AACZ,OAAI,GAAG,WAAW,eAAe,EAAE;AACjC,QAAI,KAAK,eAAe;AACxB,YAAQ;;AAEV,OAAI,GAAG,WAAW,iBAAiB,EAAE;AACnC,QAAI,KAAK,iBAAiB;AAC1B,YAAQ;;AAEV,OAAI,CAAC,MACH,SAAQ,MACN,yDAAyD,IAC1D;QAGH,KAAI,KAAK,SAAS;;AAGtB,QAAO;;AAGT,SAAS,kBAAkB,OAAuB;CAChD,MAAM,MAAM,QAAQ,KAAK;CAEzB,MAAM,gBAAgB,qBADH,MAAM,SAAS,IAAI,QAAQ,CAAC,IAAI,EACI,IAAI;AAE3D,KAAI,cAAc,WAAW,GAAG;AAC9B,UAAQ,MAAM,iCAAiC;AAC/C,UAAQ,KAAK,EAAE;;CAGjB,IAAI,aAAa;AACjB,MAAK,MAAM,gBAAgB,eAAe;EACxC,IAAI;AACJ,MAAI;GACF,MAAM,MAAM,GAAG,aAAa,cAAc,QAAQ;AAClD,SAAM,KAAK,MAAM,IAAI;WACd,KAAK;AACZ,WAAQ,MAAM,KAAK,eAAe;AAClC,WAAQ,MAAM,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAAG;AACtE,gBAAa;AACb;;EAIF,MAAM,SADa,iBAAiB,IAAI,KAEvB,qBACX,yBAAyB,IAAI,GAC7B,iBAAiB,IAAI;EAE3B,MAAM,eAAe,KAAK,SAAS,KAAK,aAAa;AACrD,MAAI,OAAO,MACT,SAAQ,IAAI,KAAK,eAAe;OAC3B;AACL,WAAQ,MAAM,KAAK,eAAe;AAClC,OAAI,OAAO,QAAQ,OACjB,SAAQ,MAAM,uBAAuB,OAAO,QAAQ,IAAI,CAAC;AAE3D,gBAAa;;;AAIjB,SAAQ,KAAK,aAAa,IAAI,EAAE;;AAGlC,MAAa,wBAAwB,IAAI,QAAQ,WAAW,CACzD,YACC,8EACD,CACA,SACC,cACA,kFACD,CACA,OAAO,kBAAkB"}
1
+ {"version":3,"file":"validate.js","names":[],"sources":["../../../../../src/cli/commands/plugin/validate/validate.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { Command } from \"commander\";\nimport {\n loadManifestFromFile,\n type ResolvedManifest,\n resolveManifestInDir,\n} from \"../manifest-resolve\";\nimport {\n detectSchemaType,\n formatValidationErrors,\n validateManifest,\n validateTemplateManifest,\n} from \"./validate-manifest\";\n\nfunction resolveManifestPaths(\n paths: string[],\n cwd: string,\n allowJsManifest: boolean,\n): ResolvedManifest[] {\n const out: ResolvedManifest[] = [];\n for (const p of paths) {\n const resolved = path.resolve(cwd, p);\n if (!fs.existsSync(resolved)) {\n console.error(`Path not found: ${p}`);\n continue;\n }\n const stat = fs.statSync(resolved);\n if (stat.isDirectory()) {\n let found = false;\n const pluginResolved = resolveManifestInDir(resolved, {\n allowJsManifest,\n });\n if (pluginResolved) {\n out.push(pluginResolved);\n found = true;\n }\n const templateManifest = path.join(resolved, \"appkit.plugins.json\");\n if (fs.existsSync(templateManifest)) {\n out.push({ path: templateManifest, type: \"json\" });\n found = true;\n }\n if (!found) {\n console.error(\n `No ${allowJsManifest ? \"manifest.json, manifest.js, or\" : \"manifest.json or\"} appkit.plugins.json in directory: ${p}`,\n );\n }\n } else {\n const ext = path.extname(resolved).toLowerCase();\n if (!allowJsManifest && (ext === \".js\" || ext === \".cjs\")) {\n console.error(\n `JS manifest provided but disabled by default: ${p}. Re-run with --allow-js-manifest to opt in.`,\n );\n continue;\n }\n out.push({\n path: resolved,\n type: ext === \".js\" || ext === \".cjs\" ? \"js\" : \"json\",\n });\n }\n }\n return out;\n}\n\nasync function runPluginValidate(\n paths: string[],\n options: { allowJsManifest?: boolean },\n): Promise<void> {\n const cwd = process.cwd();\n const allowJsManifest = Boolean(options.allowJsManifest);\n if (allowJsManifest) {\n console.warn(\n \"Warning: --allow-js-manifest executes manifest.js/manifest.cjs files. Only use with trusted code.\",\n );\n }\n const toValidate = paths.length > 0 ? paths : [\".\"];\n const manifestPaths = resolveManifestPaths(toValidate, cwd, allowJsManifest);\n\n if (manifestPaths.length === 0) {\n console.error(\"No manifest files to validate.\");\n process.exit(1);\n }\n\n let hasFailure = false;\n for (const { path: manifestPath, type } of manifestPaths) {\n let obj: unknown;\n try {\n obj = await loadManifestFromFile(manifestPath, type, { allowJsManifest });\n } catch (err) {\n console.error(`✗ ${manifestPath}`);\n console.error(` ${err instanceof Error ? err.message : String(err)}`);\n hasFailure = true;\n continue;\n }\n\n const schemaType = detectSchemaType(obj);\n const result =\n schemaType === \"template-plugins\"\n ? validateTemplateManifest(obj)\n : validateManifest(obj);\n\n const relativePath = path.relative(cwd, manifestPath);\n if (result.valid) {\n console.log(`✓ ${relativePath}`);\n } else {\n console.error(`✗ ${relativePath}`);\n if (result.errors?.length) {\n console.error(formatValidationErrors(result.errors, obj));\n }\n hasFailure = true;\n }\n }\n\n process.exit(hasFailure ? 1 : 0);\n}\n\nexport const pluginValidateCommand = new Command(\"validate\")\n .description(\n \"Validate plugin manifest(s) or template manifests against their JSON schema\",\n )\n .argument(\n \"[paths...]\",\n \"Paths to manifest.json or appkit.plugins.json (or plugin directories); use --allow-js-manifest to include manifest.js\",\n )\n .option(\n \"--allow-js-manifest\",\n \"Allow reading manifest.js/manifest.cjs (executes code; use only with trusted plugins)\",\n )\n .action((paths: string[], opts: { allowJsManifest?: boolean }) =>\n runPluginValidate(paths, opts).catch((err) => {\n console.error(err);\n process.exit(1);\n }),\n );\n"],"mappings":";;;;;;;;AAgBA,SAAS,qBACP,OACA,KACA,iBACoB;CACpB,MAAM,MAA0B,EAAE;AAClC,MAAK,MAAM,KAAK,OAAO;EACrB,MAAM,WAAW,KAAK,QAAQ,KAAK,EAAE;AACrC,MAAI,CAAC,GAAG,WAAW,SAAS,EAAE;AAC5B,WAAQ,MAAM,mBAAmB,IAAI;AACrC;;AAGF,MADa,GAAG,SAAS,SAAS,CACzB,aAAa,EAAE;GACtB,IAAI,QAAQ;GACZ,MAAM,iBAAiB,qBAAqB,UAAU,EACpD,iBACD,CAAC;AACF,OAAI,gBAAgB;AAClB,QAAI,KAAK,eAAe;AACxB,YAAQ;;GAEV,MAAM,mBAAmB,KAAK,KAAK,UAAU,sBAAsB;AACnE,OAAI,GAAG,WAAW,iBAAiB,EAAE;AACnC,QAAI,KAAK;KAAE,MAAM;KAAkB,MAAM;KAAQ,CAAC;AAClD,YAAQ;;AAEV,OAAI,CAAC,MACH,SAAQ,MACN,MAAM,kBAAkB,mCAAmC,mBAAmB,qCAAqC,IACpH;SAEE;GACL,MAAM,MAAM,KAAK,QAAQ,SAAS,CAAC,aAAa;AAChD,OAAI,CAAC,oBAAoB,QAAQ,SAAS,QAAQ,SAAS;AACzD,YAAQ,MACN,iDAAiD,EAAE,8CACpD;AACD;;AAEF,OAAI,KAAK;IACP,MAAM;IACN,MAAM,QAAQ,SAAS,QAAQ,SAAS,OAAO;IAChD,CAAC;;;AAGN,QAAO;;AAGT,eAAe,kBACb,OACA,SACe;CACf,MAAM,MAAM,QAAQ,KAAK;CACzB,MAAM,kBAAkB,QAAQ,QAAQ,gBAAgB;AACxD,KAAI,gBACF,SAAQ,KACN,oGACD;CAGH,MAAM,gBAAgB,qBADH,MAAM,SAAS,IAAI,QAAQ,CAAC,IAAI,EACI,KAAK,gBAAgB;AAE5E,KAAI,cAAc,WAAW,GAAG;AAC9B,UAAQ,MAAM,iCAAiC;AAC/C,UAAQ,KAAK,EAAE;;CAGjB,IAAI,aAAa;AACjB,MAAK,MAAM,EAAE,MAAM,cAAc,UAAU,eAAe;EACxD,IAAI;AACJ,MAAI;AACF,SAAM,MAAM,qBAAqB,cAAc,MAAM,EAAE,iBAAiB,CAAC;WAClE,KAAK;AACZ,WAAQ,MAAM,KAAK,eAAe;AAClC,WAAQ,MAAM,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GAAG;AACtE,gBAAa;AACb;;EAIF,MAAM,SADa,iBAAiB,IAAI,KAEvB,qBACX,yBAAyB,IAAI,GAC7B,iBAAiB,IAAI;EAE3B,MAAM,eAAe,KAAK,SAAS,KAAK,aAAa;AACrD,MAAI,OAAO,MACT,SAAQ,IAAI,KAAK,eAAe;OAC3B;AACL,WAAQ,MAAM,KAAK,eAAe;AAClC,OAAI,OAAO,QAAQ,OACjB,SAAQ,MAAM,uBAAuB,OAAO,QAAQ,IAAI,CAAC;AAE3D,gBAAa;;;AAIjB,SAAQ,KAAK,aAAa,IAAI,EAAE;;AAGlC,MAAa,wBAAwB,IAAI,QAAQ,WAAW,CACzD,YACC,8EACD,CACA,SACC,cACA,wHACD,CACA,OACC,uBACA,wFACD,CACA,QAAQ,OAAiB,SACxB,kBAAkB,OAAO,KAAK,CAAC,OAAO,QAAQ;AAC5C,SAAQ,MAAM,IAAI;AAClB,SAAQ,KAAK,EAAE;EACf,CACH"}
@@ -0,0 +1,4 @@
1
+ import "./types.js";
2
+ import { WorkspaceClient } from "@databricks/sdk-experimental";
3
+ import "@databricks/sdk-experimental/dist/apis/dashboards";
4
+ import "@databricks/sdk-experimental/dist/wait";
@@ -69,20 +69,17 @@ var GenieConnector = class {
69
69
  return messageWaiter.wait(waitOptions);
70
70
  }
71
71
  async listConversationMessages(workspaceClient, spaceId, conversationId, options) {
72
- const maxMessages = options?.maxMessages ?? this.config.maxMessages;
73
- const allMessages = [];
74
- let pageToken;
75
- do {
76
- const response = await workspaceClient.genie.listConversationMessages({
77
- space_id: spaceId,
78
- conversation_id: conversationId,
79
- page_size: genieConnectorDefaults.pageSize,
80
- ...pageToken ? { page_token: pageToken } : {}
81
- });
82
- if (response.messages) allMessages.push(...response.messages);
83
- pageToken = response.next_page_token;
84
- } while (pageToken && allMessages.length < maxMessages);
85
- return allMessages.slice(0, maxMessages).reverse().map(toMessageResponse);
72
+ const pageSize = options?.pageSize ?? genieConnectorDefaults.initialPageSize;
73
+ const response = await workspaceClient.genie.listConversationMessages({
74
+ space_id: spaceId,
75
+ conversation_id: conversationId,
76
+ page_size: pageSize,
77
+ ...options?.pageToken ? { page_token: options.pageToken } : {}
78
+ });
79
+ return {
80
+ messages: (response.messages ?? []).reverse().map(toMessageResponse),
81
+ nextPageToken: response.next_page_token ?? null
82
+ };
86
83
  }
87
84
  async getMessageAttachmentQueryResult(workspaceClient, spaceId, conversationId, messageId, attachmentId, _signal) {
88
85
  return (await workspaceClient.genie.getMessageAttachmentQueryResult({
@@ -147,11 +144,21 @@ var GenieConnector = class {
147
144
  async *streamConversation(workspaceClient, spaceId, conversationId, options) {
148
145
  const includeQueryResults = options?.includeQueryResults !== false;
149
146
  try {
150
- const messageResponses = await this.listConversationMessages(workspaceClient, spaceId, conversationId);
147
+ const { messages: messageResponses, nextPageToken } = await this.listConversationMessages(workspaceClient, spaceId, conversationId, {
148
+ pageSize: options?.pageSize,
149
+ pageToken: options?.pageToken
150
+ });
151
151
  for (const messageResponse of messageResponses) yield {
152
152
  type: "message_result",
153
153
  message: messageResponse
154
154
  };
155
+ yield {
156
+ type: "history_info",
157
+ conversationId,
158
+ spaceId,
159
+ nextPageToken,
160
+ loadedCount: messageResponses.length
161
+ };
155
162
  if (includeQueryResults) {
156
163
  const queryAttachments = [];
157
164
  for (const msg of messageResponses) for (const att of msg.attachments ?? []) if (att.query?.statementId && att.attachmentId) queryAttachments.push({
@@ -197,10 +204,20 @@ var GenieConnector = class {
197
204
  };
198
205
  }
199
206
  async getConversation(workspaceClient, spaceId, conversationId) {
207
+ const allMessages = [];
208
+ let pageToken;
209
+ do {
210
+ const { messages, nextPageToken } = await this.listConversationMessages(workspaceClient, spaceId, conversationId, {
211
+ pageSize: genieConnectorDefaults.pageSize,
212
+ pageToken
213
+ });
214
+ allMessages.push(...messages);
215
+ pageToken = nextPageToken ?? void 0;
216
+ } while (pageToken && allMessages.length < this.config.maxMessages);
200
217
  return {
201
218
  conversationId,
202
219
  spaceId,
203
- messages: await this.listConversationMessages(workspaceClient, spaceId, conversationId)
220
+ messages: allMessages.slice(0, this.config.maxMessages)
204
221
  };
205
222
  }
206
223
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../../../src/connectors/genie/client.ts"],"sourcesContent":["import type { WorkspaceClient } from \"@databricks/sdk-experimental\";\nimport * as SDK from \"@databricks/sdk-experimental\";\nimport type { GenieMessage } from \"@databricks/sdk-experimental/dist/apis/dashboards\";\nimport type { Waiter } from \"@databricks/sdk-experimental/dist/wait\";\nimport { createLogger } from \"../../logging\";\nimport { genieConnectorDefaults } from \"./defaults\";\nimport { pollWaiter } from \"./poll-waiter\";\nimport type {\n GenieAttachmentResponse,\n GenieConversationHistoryResponse,\n GenieMessageResponse,\n GenieStreamEvent,\n} from \"./types\";\n\nconst { TimeUnits } = SDK;\nconst Time = SDK.Time ?? (SDK as any).default.Time;\n\nconst logger = createLogger(\"connectors:genie\");\n\ntype CreateMessageWaiter = Waiter<GenieMessage, GenieMessage>;\n\nexport interface GenieConnectorConfig {\n timeout?: number;\n maxMessages?: number;\n}\n\nfunction mapAttachments(message: GenieMessage): GenieAttachmentResponse[] {\n return (\n message.attachments?.map((att) => ({\n attachmentId: att.attachment_id,\n query: att.query\n ? {\n title: att.query.title,\n description: att.query.description,\n query: att.query.query,\n statementId: att.query.statement_id,\n }\n : undefined,\n text: att.text ? { content: att.text.content } : undefined,\n suggestedQuestions: att.suggested_questions?.questions,\n })) ?? []\n );\n}\n\nfunction toMessageResponse(message: GenieMessage): GenieMessageResponse {\n return {\n messageId: message.message_id,\n conversationId: message.conversation_id,\n spaceId: message.space_id,\n status: message.status ?? \"COMPLETED\",\n content: message.content,\n attachments: mapAttachments(message),\n error: message.error?.error,\n };\n}\n\nexport class GenieConnector {\n private readonly config: Required<GenieConnectorConfig>;\n\n constructor(config: GenieConnectorConfig = {}) {\n this.config = {\n timeout: config.timeout ?? genieConnectorDefaults.timeout,\n maxMessages: config.maxMessages ?? genieConnectorDefaults.maxMessages,\n };\n }\n\n async startMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<{\n messageWaiter: CreateMessageWaiter;\n conversationId: string;\n messageId: string;\n }> {\n if (conversationId) {\n const waiter = await workspaceClient.genie.createMessage({\n space_id: spaceId,\n conversation_id: conversationId,\n content,\n });\n return {\n messageWaiter: waiter,\n conversationId,\n messageId: waiter.message_id ?? \"\",\n };\n }\n const start = await workspaceClient.genie.startConversation({\n space_id: spaceId,\n content,\n });\n return {\n messageWaiter: start as unknown as CreateMessageWaiter,\n conversationId: start.conversation_id,\n messageId: start.message_id,\n };\n }\n\n async waitForMessage(\n messageWaiter: CreateMessageWaiter,\n options?: { timeout?: number },\n ): Promise<GenieMessage> {\n const timeout = options?.timeout ?? this.config.timeout;\n const waitOptions =\n timeout > 0 ? { timeout: new Time(timeout, TimeUnits.milliseconds) } : {};\n return messageWaiter.wait(waitOptions);\n }\n\n async listConversationMessages(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: { maxMessages?: number },\n ): Promise<GenieMessageResponse[]> {\n const maxMessages = options?.maxMessages ?? this.config.maxMessages;\n const allMessages: GenieMessage[] = [];\n let pageToken: string | undefined;\n\n do {\n const response = await workspaceClient.genie.listConversationMessages({\n space_id: spaceId,\n conversation_id: conversationId,\n page_size: genieConnectorDefaults.pageSize,\n ...(pageToken ? { page_token: pageToken } : {}),\n });\n\n if (response.messages) {\n allMessages.push(...response.messages);\n }\n\n pageToken = response.next_page_token;\n } while (pageToken && allMessages.length < maxMessages);\n\n return allMessages.slice(0, maxMessages).reverse().map(toMessageResponse);\n }\n\n async getMessageAttachmentQueryResult(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n attachmentId: string,\n _signal?: AbortSignal,\n ): Promise<unknown> {\n const response =\n await workspaceClient.genie.getMessageAttachmentQueryResult({\n space_id: spaceId,\n conversation_id: conversationId,\n message_id: messageId,\n attachment_id: attachmentId,\n });\n return response.statement_response;\n }\n\n async *streamSendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n options?: { timeout?: number },\n ): AsyncGenerator<GenieStreamEvent> {\n try {\n const {\n messageWaiter,\n conversationId: resultConversationId,\n messageId: resultMessageId,\n } = await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n\n yield {\n type: \"message_start\",\n conversationId: resultConversationId,\n messageId: resultMessageId,\n spaceId,\n };\n\n const timeout =\n options?.timeout != null ? options.timeout : this.config.timeout;\n const waitOptions =\n timeout > 0\n ? { timeout: new Time(timeout, TimeUnits.milliseconds) }\n : {};\n\n let completedMessage!: GenieMessage;\n for await (const event of pollWaiter(messageWaiter, waitOptions)) {\n if (event.type === \"progress\" && event.value.status) {\n yield { type: \"status\", status: event.value.status };\n } else if (event.type === \"completed\") {\n completedMessage = event.value;\n }\n }\n\n const messageResponse = toMessageResponse(completedMessage);\n yield { type: \"message_result\", message: messageResponse };\n\n yield* this.emitQueryResults(\n workspaceClient,\n spaceId,\n resultConversationId,\n messageResponse.messageId,\n messageResponse,\n );\n } catch (error) {\n logger.error(\"Genie message error: %O\", error);\n yield {\n type: \"error\",\n error: error instanceof Error ? error.message : \"Genie request failed\",\n };\n }\n }\n\n private async *emitQueryResults(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n messageResponse: GenieMessageResponse,\n ): AsyncGenerator<\n Extract<GenieStreamEvent, { type: \"query_result\" } | { type: \"error\" }>\n > {\n const attachments = messageResponse.attachments ?? [];\n for (const att of attachments) {\n if (!att.query?.statementId || !att.attachmentId) continue;\n try {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n messageId,\n att.attachmentId,\n );\n yield {\n type: \"query_result\",\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n data,\n };\n } catch (error) {\n logger.error(\n \"Failed to fetch query result for attachment %s: %O\",\n att.attachmentId,\n error,\n );\n yield {\n type: \"error\",\n error: `Failed to fetch query result for attachment ${att.attachmentId}`,\n };\n }\n }\n }\n\n async *streamConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: { includeQueryResults?: boolean },\n ): AsyncGenerator<GenieStreamEvent> {\n const includeQueryResults = options?.includeQueryResults !== false;\n\n try {\n const messageResponses = await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n );\n\n for (const messageResponse of messageResponses) {\n yield { type: \"message_result\", message: messageResponse };\n }\n\n if (includeQueryResults) {\n const queryAttachments: Array<{\n messageId: string;\n attachmentId: string;\n statementId: string;\n }> = [];\n\n for (const msg of messageResponses) {\n for (const att of msg.attachments ?? []) {\n if (att.query?.statementId && att.attachmentId) {\n queryAttachments.push({\n messageId: msg.messageId,\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n });\n }\n }\n }\n\n const results = await Promise.allSettled(\n queryAttachments.map(async (att) => {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n att.messageId,\n att.attachmentId,\n );\n return {\n attachmentId: att.attachmentId,\n statementId: att.statementId,\n data,\n };\n }),\n );\n\n for (const result of results) {\n if (result.status === \"fulfilled\") {\n yield {\n type: \"query_result\",\n attachmentId: result.value.attachmentId,\n statementId: result.value.statementId,\n data: result.value.data,\n };\n } else {\n logger.error(\"Failed to fetch query result: %O\", result.reason);\n yield {\n type: \"error\",\n error:\n result.reason instanceof Error\n ? result.reason.message\n : \"Failed to fetch query result\",\n };\n }\n }\n }\n } catch (error) {\n logger.error(\"Genie getConversation error: %O\", error);\n yield {\n type: \"error\",\n error:\n error instanceof Error\n ? error.message\n : \"Failed to fetch conversation\",\n };\n }\n }\n\n async sendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<GenieMessageResponse> {\n const { messageWaiter, conversationId: resultConversationId } =\n await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n const completedMessage = await this.waitForMessage(messageWaiter);\n const messageResponse = toMessageResponse(completedMessage);\n return {\n ...messageResponse,\n conversationId: resultConversationId,\n };\n }\n\n async getConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n ): Promise<GenieConversationHistoryResponse> {\n const messages = await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n );\n return {\n conversationId,\n spaceId,\n messages,\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":[],"sources":["../../../src/connectors/genie/client.ts"],"sourcesContent":["import type { WorkspaceClient } from \"@databricks/sdk-experimental\";\nimport * as SDK from \"@databricks/sdk-experimental\";\nimport type { GenieMessage } from \"@databricks/sdk-experimental/dist/apis/dashboards\";\nimport type { Waiter } from \"@databricks/sdk-experimental/dist/wait\";\nimport { createLogger } from \"../../logging\";\nimport { genieConnectorDefaults } from \"./defaults\";\nimport { pollWaiter } from \"./poll-waiter\";\nimport type {\n GenieAttachmentResponse,\n GenieConversationHistoryResponse,\n GenieMessageResponse,\n GenieStreamEvent,\n} from \"./types\";\n\nconst { TimeUnits } = SDK;\nconst Time = SDK.Time ?? (SDK as any).default.Time;\n\nconst logger = createLogger(\"connectors:genie\");\n\ntype CreateMessageWaiter = Waiter<GenieMessage, GenieMessage>;\n\nexport interface GenieConnectorConfig {\n timeout?: number;\n maxMessages?: number;\n}\n\nfunction mapAttachments(message: GenieMessage): GenieAttachmentResponse[] {\n return (\n message.attachments?.map((att) => ({\n attachmentId: att.attachment_id,\n query: att.query\n ? {\n title: att.query.title,\n description: att.query.description,\n query: att.query.query,\n statementId: att.query.statement_id,\n }\n : undefined,\n text: att.text ? { content: att.text.content } : undefined,\n suggestedQuestions: att.suggested_questions?.questions,\n })) ?? []\n );\n}\n\nfunction toMessageResponse(message: GenieMessage): GenieMessageResponse {\n return {\n messageId: message.message_id,\n conversationId: message.conversation_id,\n spaceId: message.space_id,\n status: message.status ?? \"COMPLETED\",\n content: message.content,\n attachments: mapAttachments(message),\n error: message.error?.error,\n };\n}\n\nexport class GenieConnector {\n private readonly config: Required<GenieConnectorConfig>;\n\n constructor(config: GenieConnectorConfig = {}) {\n this.config = {\n timeout: config.timeout ?? genieConnectorDefaults.timeout,\n maxMessages: config.maxMessages ?? genieConnectorDefaults.maxMessages,\n };\n }\n\n async startMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<{\n messageWaiter: CreateMessageWaiter;\n conversationId: string;\n messageId: string;\n }> {\n if (conversationId) {\n const waiter = await workspaceClient.genie.createMessage({\n space_id: spaceId,\n conversation_id: conversationId,\n content,\n });\n return {\n messageWaiter: waiter,\n conversationId,\n messageId: waiter.message_id ?? \"\",\n };\n }\n const start = await workspaceClient.genie.startConversation({\n space_id: spaceId,\n content,\n });\n return {\n messageWaiter: start as unknown as CreateMessageWaiter,\n conversationId: start.conversation_id,\n messageId: start.message_id,\n };\n }\n\n async waitForMessage(\n messageWaiter: CreateMessageWaiter,\n options?: { timeout?: number },\n ): Promise<GenieMessage> {\n const timeout = options?.timeout ?? this.config.timeout;\n const waitOptions =\n timeout > 0 ? { timeout: new Time(timeout, TimeUnits.milliseconds) } : {};\n return messageWaiter.wait(waitOptions);\n }\n\n async listConversationMessages(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: { pageSize?: number; pageToken?: string },\n ): Promise<{\n messages: GenieMessageResponse[];\n nextPageToken: string | null;\n }> {\n const pageSize =\n options?.pageSize ?? genieConnectorDefaults.initialPageSize;\n\n const response = await workspaceClient.genie.listConversationMessages({\n space_id: spaceId,\n conversation_id: conversationId,\n page_size: pageSize,\n ...(options?.pageToken ? { page_token: options.pageToken } : {}),\n });\n\n const messages = (response.messages ?? []).reverse().map(toMessageResponse);\n\n return {\n messages,\n nextPageToken: response.next_page_token ?? null,\n };\n }\n\n async getMessageAttachmentQueryResult(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n attachmentId: string,\n _signal?: AbortSignal,\n ): Promise<unknown> {\n const response =\n await workspaceClient.genie.getMessageAttachmentQueryResult({\n space_id: spaceId,\n conversation_id: conversationId,\n message_id: messageId,\n attachment_id: attachmentId,\n });\n return response.statement_response;\n }\n\n async *streamSendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n options?: { timeout?: number },\n ): AsyncGenerator<GenieStreamEvent> {\n try {\n const {\n messageWaiter,\n conversationId: resultConversationId,\n messageId: resultMessageId,\n } = await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n\n yield {\n type: \"message_start\",\n conversationId: resultConversationId,\n messageId: resultMessageId,\n spaceId,\n };\n\n const timeout =\n options?.timeout != null ? options.timeout : this.config.timeout;\n const waitOptions =\n timeout > 0\n ? { timeout: new Time(timeout, TimeUnits.milliseconds) }\n : {};\n\n let completedMessage!: GenieMessage;\n for await (const event of pollWaiter(messageWaiter, waitOptions)) {\n if (event.type === \"progress\" && event.value.status) {\n yield { type: \"status\", status: event.value.status };\n } else if (event.type === \"completed\") {\n completedMessage = event.value;\n }\n }\n\n const messageResponse = toMessageResponse(completedMessage);\n yield { type: \"message_result\", message: messageResponse };\n\n yield* this.emitQueryResults(\n workspaceClient,\n spaceId,\n resultConversationId,\n messageResponse.messageId,\n messageResponse,\n );\n } catch (error) {\n logger.error(\"Genie message error: %O\", error);\n yield {\n type: \"error\",\n error: error instanceof Error ? error.message : \"Genie request failed\",\n };\n }\n }\n\n private async *emitQueryResults(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n messageId: string,\n messageResponse: GenieMessageResponse,\n ): AsyncGenerator<\n Extract<GenieStreamEvent, { type: \"query_result\" } | { type: \"error\" }>\n > {\n const attachments = messageResponse.attachments ?? [];\n for (const att of attachments) {\n if (!att.query?.statementId || !att.attachmentId) continue;\n try {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n messageId,\n att.attachmentId,\n );\n yield {\n type: \"query_result\",\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n data,\n };\n } catch (error) {\n logger.error(\n \"Failed to fetch query result for attachment %s: %O\",\n att.attachmentId,\n error,\n );\n yield {\n type: \"error\",\n error: `Failed to fetch query result for attachment ${att.attachmentId}`,\n };\n }\n }\n }\n\n async *streamConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n options?: {\n includeQueryResults?: boolean;\n pageSize?: number;\n pageToken?: string;\n },\n ): AsyncGenerator<GenieStreamEvent> {\n const includeQueryResults = options?.includeQueryResults !== false;\n\n try {\n const { messages: messageResponses, nextPageToken } =\n await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n { pageSize: options?.pageSize, pageToken: options?.pageToken },\n );\n\n for (const messageResponse of messageResponses) {\n yield { type: \"message_result\", message: messageResponse };\n }\n\n yield {\n type: \"history_info\",\n conversationId,\n spaceId,\n nextPageToken,\n loadedCount: messageResponses.length,\n };\n\n if (includeQueryResults) {\n const queryAttachments: Array<{\n messageId: string;\n attachmentId: string;\n statementId: string;\n }> = [];\n\n for (const msg of messageResponses) {\n for (const att of msg.attachments ?? []) {\n if (att.query?.statementId && att.attachmentId) {\n queryAttachments.push({\n messageId: msg.messageId,\n attachmentId: att.attachmentId,\n statementId: att.query.statementId,\n });\n }\n }\n }\n\n const results = await Promise.allSettled(\n queryAttachments.map(async (att) => {\n const data = await this.getMessageAttachmentQueryResult(\n workspaceClient,\n spaceId,\n conversationId,\n att.messageId,\n att.attachmentId,\n );\n return {\n attachmentId: att.attachmentId,\n statementId: att.statementId,\n data,\n };\n }),\n );\n\n for (const result of results) {\n if (result.status === \"fulfilled\") {\n yield {\n type: \"query_result\",\n attachmentId: result.value.attachmentId,\n statementId: result.value.statementId,\n data: result.value.data,\n };\n } else {\n logger.error(\"Failed to fetch query result: %O\", result.reason);\n yield {\n type: \"error\",\n error:\n result.reason instanceof Error\n ? result.reason.message\n : \"Failed to fetch query result\",\n };\n }\n }\n }\n } catch (error) {\n logger.error(\"Genie getConversation error: %O\", error);\n yield {\n type: \"error\",\n error:\n error instanceof Error\n ? error.message\n : \"Failed to fetch conversation\",\n };\n }\n }\n\n async sendMessage(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n content: string,\n conversationId: string | undefined,\n ): Promise<GenieMessageResponse> {\n const { messageWaiter, conversationId: resultConversationId } =\n await this.startMessage(\n workspaceClient,\n spaceId,\n content,\n conversationId,\n );\n const completedMessage = await this.waitForMessage(messageWaiter);\n const messageResponse = toMessageResponse(completedMessage);\n return {\n ...messageResponse,\n conversationId: resultConversationId,\n };\n }\n\n async getConversation(\n workspaceClient: WorkspaceClient,\n spaceId: string,\n conversationId: string,\n ): Promise<GenieConversationHistoryResponse> {\n const allMessages: GenieMessageResponse[] = [];\n let pageToken: string | undefined;\n\n do {\n const { messages, nextPageToken } = await this.listConversationMessages(\n workspaceClient,\n spaceId,\n conversationId,\n {\n pageSize: genieConnectorDefaults.pageSize,\n pageToken,\n },\n );\n allMessages.push(...messages);\n pageToken = nextPageToken ?? undefined;\n } while (pageToken && allMessages.length < this.config.maxMessages);\n\n return {\n conversationId,\n spaceId,\n messages: allMessages.slice(0, this.config.maxMessages),\n };\n }\n}\n"],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
  const genieConnectorDefaults = {
3
3
  timeout: 12e4,
4
4
  maxMessages: 200,
5
- pageSize: 100
5
+ pageSize: 100,
6
+ initialPageSize: 20
6
7
  };
7
8
 
8
9
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","names":[],"sources":["../../../src/connectors/genie/defaults.ts"],"sourcesContent":["export const genieConnectorDefaults = {\n /** Genie waiter timeout in ms. 0 = indefinite. */\n timeout: 120_000,\n /** Max messages to fetch when listing a conversation. */\n maxMessages: 200,\n /** Default page size for listConversationMessages. */\n pageSize: 100,\n} as const;\n"],"mappings":";AAAA,MAAa,yBAAyB;CAEpC,SAAS;CAET,aAAa;CAEb,UAAU;CACX"}
1
+ {"version":3,"file":"defaults.js","names":[],"sources":["../../../src/connectors/genie/defaults.ts"],"sourcesContent":["export const genieConnectorDefaults = {\n /** Genie waiter timeout in ms. 0 = indefinite. */\n timeout: 120_000,\n /** Max messages to fetch when listing a conversation. */\n maxMessages: 200,\n /** Default page size for listConversationMessages. */\n pageSize: 100,\n /** Default page size for initial conversation load (lazy loading). */\n initialPageSize: 20,\n} as const;\n"],"mappings":";AAAA,MAAa,yBAAyB;CAEpC,SAAS;CAET,aAAa;CAEb,UAAU;CAEV,iBAAiB;CAClB"}
@@ -0,0 +1,3 @@
1
+ import { GenieAttachmentResponse, GenieMessageResponse, GenieStreamEvent } from "../../shared/src/genie.js";
2
+ import { GenieConversationHistoryResponse } from "./types.js";
3
+ import "./client.js";
@@ -1,4 +1,5 @@
1
1
  import { GenieAttachmentResponse, GenieMessageResponse, GenieStreamEvent } from "../../shared/src/genie.js";
2
+ import "../../shared/src/index.js";
2
3
 
3
4
  //#region src/connectors/genie/types.d.ts
4
5
  interface GenieConversationHistoryResponse {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/connectors/genie/types.ts"],"sourcesContent":[],"mappings":";;;AAUiB,UAAA,gCAAA,CAAgC;;;YAGrC"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/connectors/genie/types.ts"],"mappings":";;;;UAUiB,gCAAA;EACf,cAAA;EACA,OAAA;EACA,QAAA,EAAU,oBAAA;AAAA"}
@@ -1,8 +1,7 @@
1
1
  import { DatabaseCredential, GenerateDatabaseCredentialRequest, LakebasePoolConfig, LakebasePoolConfig as LakebasePoolConfig$1, RequestedClaims, RequestedClaimsPermissionSet, RequestedResource, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient } from "@databricks/lakebase";
2
- import pg from "pg";
2
+ import { Pool } from "pg";
3
3
 
4
4
  //#region src/connectors/lakebase/index.d.ts
5
-
6
5
  /**
7
6
  * Create a Lakebase pool with appkit's logger integration.
8
7
  * Telemetry automatically uses appkit's OpenTelemetry configuration via global registry.
@@ -10,7 +9,7 @@ import pg from "pg";
10
9
  * @param config - Lakebase pool configuration
11
10
  * @returns PostgreSQL pool with appkit integration
12
11
  */
13
- declare function createLakebasePool$1(config?: Partial<LakebasePoolConfig>): pg.Pool;
12
+ declare function createLakebasePool$1(config?: Partial<LakebasePoolConfig>): Pool;
14
13
  //#endregion
15
14
  export { type DatabaseCredential, type GenerateDatabaseCredentialRequest, type LakebasePoolConfig$1 as LakebasePoolConfig, type RequestedClaims, RequestedClaimsPermissionSet, type RequestedResource, createLakebasePool$1 as createLakebasePool, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient };
16
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/connectors/lakebase/index.ts"],"sourcesContent":[],"mappings":";;;;;;;AAcA;;;;;AAEU,iBAFM,oBAAA,CAEN,MAAA,CAAA,EADC,OACD,CADS,kBACT,CAAA,CAAA,EAAP,EAAA,CAAG,IAAI"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/connectors/lakebase/index.ts"],"mappings":";;;;;;AAcA;;;;;iBAAgB,oBAAA,CAAmB,MAAA,GAAS,OAAA,CAAQ,kBAAA,IAAsB,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createLakebasePool","createLakebasePoolBase"],"sources":["../../../src/connectors/lakebase/index.ts"],"sourcesContent":["import {\n createLakebasePool as createLakebasePoolBase,\n type LakebasePoolConfig,\n} from \"@databricks/lakebase\";\nimport type pg from \"pg\";\nimport { createLogger } from \"@/logging/logger\";\n\n/**\n * Create a Lakebase pool with appkit's logger integration.\n * Telemetry automatically uses appkit's OpenTelemetry configuration via global registry.\n *\n * @param config - Lakebase pool configuration\n * @returns PostgreSQL pool with appkit integration\n */\nexport function createLakebasePool(\n config?: Partial<LakebasePoolConfig>,\n): pg.Pool {\n const logger = createLogger(\"connectors:lakebase\");\n\n return createLakebasePoolBase({\n ...config,\n logger,\n });\n}\n\n// Re-export everything else from lakebase\nexport {\n createTokenRefreshCallback,\n type DatabaseCredential,\n type DriverTelemetry,\n type GenerateDatabaseCredentialRequest,\n generateDatabaseCredential,\n getLakebaseOrmConfig,\n getLakebasePgConfig,\n getUsernameWithApiLookup,\n getWorkspaceClient,\n type LakebasePoolConfig,\n type Logger,\n type RequestedClaims,\n RequestedClaimsPermissionSet,\n type RequestedResource,\n type TokenRefreshDeps,\n} from \"@databricks/lakebase\";\n"],"mappings":";;;;;;;;;;;AAcA,SAAgBA,qBACd,QACS;CACT,MAAM,SAAS,aAAa,sBAAsB;AAElD,QAAOC,mBAAuB;EAC5B,GAAG;EACH;EACD,CAAC"}
1
+ {"version":3,"file":"index.js","names":["createLakebasePool","createLakebasePoolBase"],"sources":["../../../src/connectors/lakebase/index.ts"],"sourcesContent":["import {\n createLakebasePool as createLakebasePoolBase,\n type LakebasePoolConfig,\n} from \"@databricks/lakebase\";\nimport type { Pool } from \"pg\";\nimport { createLogger } from \"@/logging/logger\";\n\n/**\n * Create a Lakebase pool with appkit's logger integration.\n * Telemetry automatically uses appkit's OpenTelemetry configuration via global registry.\n *\n * @param config - Lakebase pool configuration\n * @returns PostgreSQL pool with appkit integration\n */\nexport function createLakebasePool(config?: Partial<LakebasePoolConfig>): Pool {\n const logger = createLogger(\"connectors:lakebase\");\n\n return createLakebasePoolBase({\n ...config,\n logger,\n });\n}\n\n// Re-export everything else from lakebase\nexport {\n createTokenRefreshCallback,\n type DatabaseCredential,\n type DriverTelemetry,\n type GenerateDatabaseCredentialRequest,\n generateDatabaseCredential,\n getLakebaseOrmConfig,\n getLakebasePgConfig,\n getUsernameWithApiLookup,\n getWorkspaceClient,\n type LakebasePoolConfig,\n type Logger,\n type RequestedClaims,\n RequestedClaimsPermissionSet,\n type RequestedResource,\n type TokenRefreshDeps,\n} from \"@databricks/lakebase\";\n"],"mappings":";;;;;;;;;;;AAcA,SAAgBA,qBAAmB,QAA4C;CAC7E,MAAM,SAAS,aAAa,sBAAsB;AAElD,QAAOC,mBAAuB;EAC5B,GAAG;EACH;EACD,CAAC"}
@@ -3,7 +3,7 @@ import "../../telemetry/index.js";
3
3
  import "../../context/index.js";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import "@databricks/sdk-experimental";
6
- import pg from "pg";
6
+ import "pg";
7
7
 
8
8
  //#region src/connectors/lakebase-v1/client.ts
9
9
  const logger = createLogger("connectors:lakebase-v1");
@@ -2,7 +2,6 @@ import { ExecutionContext } from "./user-context.js";
2
2
  import "@databricks/sdk-experimental";
3
3
 
4
4
  //#region src/context/execution-context.d.ts
5
-
6
5
  /**
7
6
  * Get the current execution context.
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context.d.ts","names":[],"sources":["../../src/context/execution-context.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;iBAmCgB,mBAAA,CAAA,GAAuB"}
1
+ {"version":3,"file":"execution-context.d.ts","names":[],"sources":["../../src/context/execution-context.ts"],"mappings":";;;;;;;;;;;;iBAmCgB,mBAAA,CAAA,GAAuB,gBAAA"}
@@ -0,0 +1,3 @@
1
+ import { ServiceContextState } from "./service-context.js";
2
+ import { ExecutionContext, UserContext } from "./user-context.js";
3
+ import { getExecutionContext } from "./execution-context.js";
@@ -1,7 +1,7 @@
1
+ import "./user-context.js";
1
2
  import { WorkspaceClient } from "@databricks/sdk-experimental";
2
3
 
3
4
  //#region src/context/service-context.d.ts
4
-
5
5
  /**
6
6
  * Service context holds the service principal client and shared resources.
7
7
  * This is initialized once at app startup and shared across all requests.
@@ -1 +1 @@
1
- {"version":3,"file":"service-context.d.ts","names":[],"sources":["../../src/context/service-context.ts"],"sourcesContent":[],"mappings":";;;;;AAqBA;;;AAMgB,UANC,mBAAA,CAMD;;EAEM,MAAA,EANZ,eAMY;;;;gBAFN;;eAED"}
1
+ {"version":3,"file":"service-context.d.ts","names":[],"sources":["../../src/context/service-context.ts"],"mappings":";;;;;;AAqBA;;UAAiB,mBAAA;EAEP;EAAR,MAAA,EAAQ,eAAA;EAMK;EAJb,aAAA;EAIoB;EAFpB,WAAA,GAAc,OAAA;EAJN;EAMR,WAAA,EAAa,OAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { ServiceContextState } from "./service-context.js";
2
2
 
3
3
  //#region src/context/user-context.d.ts
4
-
5
4
  /**
6
5
  * User execution context extends the service context with user-specific data.
7
6
  * Created on-demand when asUser(req) is called.
@@ -25,5 +24,5 @@ interface UserContext {
25
24
  */
26
25
  type ExecutionContext = ServiceContextState | UserContext;
27
26
  //#endregion
28
- export { ExecutionContext };
27
+ export { ExecutionContext, UserContext };
29
28
  //# sourceMappingURL=user-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-context.d.ts","names":[],"sources":["../../src/context/user-context.ts"],"sourcesContent":[],"mappings":";;;;;;AAMA;;AAEU,UAFO,WAAA,CAEP;;QAQK,EARL,mBAQK,CAAA,QAAA,CAAA;EAAO;EAQV,MAAA,EAAA,MAAA;EAAgB;UAAG,CAAA,EAAA,MAAA;;EAAiC,WAAA,CAAA,EAVhD,OAUgD,CAAA,MAAA,CAAA;;eARjD;;;;;;;KAQH,gBAAA,GAAmB,sBAAsB"}
1
+ {"version":3,"file":"user-context.d.ts","names":[],"sources":["../../src/context/user-context.ts"],"mappings":";;;;;AAMA;;UAAiB,WAAA;EAEP;EAAR,MAAA,EAAQ,mBAAA;EAQK;EANb,MAAA;EAMoB;EAJpB,QAAA;EAJQ;EAMR,WAAA,GAAc,OAAA;EAFd;EAIA,WAAA,EAAa,OAAA;EAFC;EAId,aAAA;AAAA;;;;KAMU,gBAAA,GAAmB,mBAAA,GAAsB,WAAA"}
@@ -1,10 +1,11 @@
1
1
  import { PluginConstructor, PluginData, PluginMap } from "../shared/src/plugin.js";
2
2
  import { CacheConfig } from "../shared/src/cache.js";
3
+ import "../shared/src/index.js";
3
4
  import { TelemetryConfig } from "../telemetry/types.js";
5
+ import "../telemetry/index.js";
4
6
  import { WorkspaceClient } from "@databricks/sdk-experimental";
5
7
 
6
8
  //#region src/core/appkit.d.ts
7
-
8
9
  /**
9
10
  * Bootstraps AppKit with the provided configuration.
10
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"appkit.d.ts","names":[],"sources":["../../src/core/appkit.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmOsB,oBACV,WAAW;YAGT;cACE;UACJ;WACC;IAEV,QAAQ,UAAU"}
1
+ {"version":3,"file":"appkit.d.ts","names":[],"sources":["../../src/core/appkit.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmOsB,SAAA,WACV,UAAA,CAAW,iBAAA,qBAAA,CAErB,MAAA;EACE,OAAA,GAAU,CAAA;EACV,SAAA,GAAY,eAAA;EACZ,KAAA,GAAQ,WAAA;EACR,MAAA,GAAS,eAAA;AAAA,IAEV,OAAA,CAAQ,SAAA,CAAU,CAAA"}
@@ -0,0 +1 @@
1
+ import { createApp } from "./appkit.js";
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/authentication.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when authentication fails.
7
6
  * Use for missing tokens, invalid credentials, or authorization failures.
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.d.ts","names":[],"sources":["../../src/errors/authentication.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;AAAyC,cAA5B,mBAAA,SAA4B,WAAA,CAAA;EAAW,SAAA,IAAA,GAAA,sBAAA;;;;;;2CAQD;;;;0BASzB;;;;qDAYd,QACP;;;;kCAU6B,QAAQ"}
1
+ {"version":3,"file":"authentication.d.ts","names":[],"sources":["../../src/errors/authentication.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,mBAAA,SAA4B,WAAA;EAAA,SAC9B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAH8B;;;EAAA,OAQhC,YAAA,CAAa,SAAA,YAA6B,mBAAA;EAA1C;;;EAAA,OASA,aAAA,CAAA,GAAiB,mBAAA;EAAA;;;EAAA,OAUjB,iBAAA,CACL,QAAA,UACA,KAAA,GAAQ,KAAA,GACP,mBAAA;EADD;;;EAAA,OAWK,gBAAA,CAAiB,KAAA,GAAQ,KAAA,GAAQ,mBAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/errors/base.ts"],"sourcesContent":[],"mappings":";;AAgCA;;;;;;;;;;;;;;;;;;;;uBAAsB,WAAA,SAAoB,KAAA;;;;;;;;mBAWvB;;qBAGE;;YAIG;cAAiB;;;;;;YAiB7B"}
1
+ {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/errors/base.ts"],"mappings":";;AAgCA;;;;;;;;;;;;;;;;;;;;uBAAsB,WAAA,SAAoB,KAAA;EAkB1B;EAAA,kBAhBI,IAAA;EAgBW;EAAA,kBAbX,UAAA;EAahB;EAAA,kBAVgB,WAAA;EA2BR;EAAA,SAxBD,KAAA,GAAQ,KAAA;EAmDT;EAAA,SAhDC,OAAA,GAAU,MAAA;cAGjB,OAAA,UACA,OAAA;IAAY,KAAA,GAAQ,KAAA;IAAO,OAAA,GAAU,MAAA;EAAA;;;;;EAiBvC,MAAA,CAAA,GAAU,MAAA;;;;EAgBV,QAAA,CAAA;;;;UAWQ,eAAA;;;;UAwBA,gBAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/configuration.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when configuration is missing or invalid.
7
6
  * Use for missing environment variables, invalid settings, or setup issues.
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.d.ts","names":[],"sources":["../../src/errors/configuration.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;cAAa,kBAAA,SAA2B,WAAA;;;;;;;yCAQC;;;;4DAUmB;;;;+DAavD;;;;gDAU2C"}
1
+ {"version":3,"file":"configuration.d.ts","names":[],"sources":["../../src/errors/configuration.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,kBAAA,SAA2B,WAAA;EAAA,SAC7B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EADA;;;EAAA,OAMF,aAAA,CAAc,OAAA,WAAkB,kBAAA;EAAA;;;EAAA,OAUhC,gBAAA,CAAiB,QAAA,UAAkB,IAAA,YAAgB,kBAAA;EAAA;;;EAAA,OAUnD,iBAAA,CACL,OAAA,UACA,OAAA,YACC,kBAAA;EAAA;;;EAAA,OAUI,sBAAA,CAAuB,KAAA,WAAgB,kBAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/connection.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when a connection or network operation fails.
7
6
  * Use for database pool errors, API failures, timeouts, etc.
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","names":[],"sources":["../../src/errors/connection.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;AA+B6C,cA/BhC,eAAA,SAAwB,WAAA,CA+BQ;WAAQ,IAAA,GAAA,kBAAA;WAUU,UAAA,GAAA,GAAA;WAzC1B,WAAA,GAAA,IAAA;EAAW;;;6BAQnB,QAAQ;;;;mCAOF,QAAQ;;;;8CAOG,QAAQ;;;;6CAST,QAAQ;;;;+DAUU"}
1
+ {"version":3,"file":"connection.d.ts","names":[],"sources":["../../src/errors/connection.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,eAAA,SAAwB,WAAA;EAAA,SAC1B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAH0B;;;EAAA,OAQ5B,WAAA,CAAY,KAAA,GAAQ,KAAA,GAAQ,eAAA;EAP1B;;;EAAA,OAcF,iBAAA,CAAkB,KAAA,GAAQ,KAAA,GAAQ,eAAA;EAPd;;;EAAA,OAcpB,SAAA,CAAU,SAAA,UAAmB,KAAA,GAAQ,KAAA,GAAQ,eAAA;EAPnB;;;EAAA,OAgB1B,UAAA,CAAW,OAAA,UAAiB,KAAA,GAAQ,KAAA,GAAQ,eAAA;EATlC;;;EAAA,OAmBV,iBAAA,CAAkB,UAAA,UAAoB,IAAA,YAAgB,eAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/execution.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when an operation execution fails.
7
6
  * Use for statement failures, canceled operations, or unexpected states.
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","names":[],"sources":["../../src/errors/execution.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;AAA+C,cAAlC,cAAA,SAAuB,WAAA,CAAW;;;;;;;iDAQE;;;;qBAU5B;;;;0BAOK;;;;sCASY;;;;wCASE"}
1
+ {"version":3,"file":"execution.d.ts","names":[],"sources":["../../src/errors/execution.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,cAAA,SAAuB,WAAA;EAAA,SACzB,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAFA;;;EAAA,OAOF,eAAA,CAAgB,YAAA,YAAwB,cAAA;EAAxB;;;EAAA,OAUhB,QAAA,CAAA,GAAY,cAAA;EAOZ;;;EAAA,OAAA,aAAA,CAAA,GAAiB,cAAA;EASY;;;EAAA,OAA7B,YAAA,CAAa,KAAA,WAAgB,cAAA;EASgB;;;EAAA,OAA7C,WAAA,CAAY,QAAA,WAAmB,cAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/initialization.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when a service or component is not properly initialized.
7
6
  * Use when accessing services before they are ready.
@@ -1 +1 @@
1
- {"version":3,"file":"initialization.d.ts","names":[],"sources":["../../src/errors/initialization.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;AAAoD,cAAvC,mBAAA,SAA4B,WAAA,CAAW;;;;;;;6DAW/C;;;;gDAY2C,QAAQ;;;;iCAUvB,QAAQ"}
1
+ {"version":3,"file":"initialization.d.ts","names":[],"sources":["../../src/errors/initialization.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,mBAAA,SAA4B,WAAA;EAAA,SAC9B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAFA;;;EAAA,OAOF,cAAA,CACL,WAAA,UACA,IAAA,YACC,mBAAA;EAFD;;;EAAA,OAcK,WAAA,CAAY,SAAA,UAAmB,KAAA,GAAQ,KAAA,GAAQ,mBAAA;EAAnC;;;EAAA,OAUZ,eAAA,CAAgB,KAAA,GAAQ,KAAA,GAAQ,mBAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/server.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when server lifecycle operations fail.
7
6
  * Use for server start/stop issues, configuration conflicts, etc.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","names":[],"sources":["../../src/errors/server.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;cAAa,WAAA,SAAoB,WAAA;;;;;;;+CAQc;;;;uBASxB;;;;+BASQ;;;;2DAO4B"}
1
+ {"version":3,"file":"server.d.ts","names":[],"sources":["../../src/errors/server.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,WAAA,SAAoB,WAAA;EAAA,SACtB,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EADA;;;EAAA,OAMF,iBAAA,CAAkB,SAAA,WAAoB,WAAA;EAAA;;;EAAA,OAStC,UAAA,CAAA,GAAc,WAAA;EASQ;;;EAAA,OAAtB,kBAAA,CAAA,GAAsB,WAAA;EAOuC;;;EAAA,OAA7D,uBAAA,CAAwB,aAAA,aAA0B,WAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/tunnel.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when remote tunnel operations fail.
7
6
  * Use for tunnel connection issues, message parsing failures, etc.
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel.d.ts","names":[],"sources":["../../src/errors/tunnel.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;AAAiC,cAApB,WAAA,SAAoB,WAAA,CAAA;EAAW,SAAA,IAAA,GAAA,cAAA;;;;;;gCAQZ;;;;yBASP;;;;2CAOkB,QAAQ;;;;iDAUF,QAAQ"}
1
+ {"version":3,"file":"tunnel.d.ts","names":[],"sources":["../../src/errors/tunnel.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,WAAA,SAAoB,WAAA;EAAA,SACtB,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAHsB;;;EAAA,OAQxB,mBAAA,CAAA,GAAuB,WAAA;EAAvB;;;EAAA,OASA,YAAA,CAAA,GAAgB,WAAA;EAOhB;;;EAAA,OAAA,WAAA,CAAY,IAAA,UAAc,KAAA,GAAQ,KAAA,GAAQ,WAAA;EAAA;;;EAAA,OAU1C,UAAA,CAAW,WAAA,UAAqB,KAAA,GAAQ,KAAA,GAAQ,WAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { AppKitError } from "./base.js";
2
2
 
3
3
  //#region src/errors/validation.d.ts
4
-
5
4
  /**
6
5
  * Error thrown when input validation fails.
7
6
  * Use for invalid parameters, missing required fields, or type mismatches.
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/errors/validation.ts"],"sourcesContent":[],"mappings":";;;;;;AAYA;;;;;;;;cAAa,eAAA,SAAwB,WAAA;;;;;;;0CAQK;;;;;;6EAerC;;;;yCAgBoC"}
1
+ {"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/errors/validation.ts"],"mappings":";;;;;AAYA;;;;;;;;cAAa,eAAA,SAAwB,WAAA;EAAA,SAC1B,IAAA;EAAA,SACA,UAAA;EAAA,SACA,WAAA;EAAA;;;EAAA,OAKF,YAAA,CAAa,SAAA,WAAoB,eAAA;EAWjC;;;;;EAAA,OAAA,YAAA,CACL,SAAA,UACA,KAAA,WACA,QAAA,YACC,eAAA;EAgBmB;;;EAAA,OAAf,cAAA,CAAe,IAAA,aAAiB,eAAA;AAAA"}
package/dist/index.d.ts CHANGED
@@ -2,12 +2,15 @@ import { BasePluginConfig, IAppRouter, ToPlugin } from "./shared/src/plugin.js";
2
2
  import { CacheConfig } from "./shared/src/cache.js";
3
3
  import { StreamExecutionSettings } from "./shared/src/execute.js";
4
4
  import { isSQLTypeMarker, sql } from "./shared/src/sql/helpers.js";
5
+ import "./shared/src/index.js";
5
6
  import { CacheManager } from "./cache/index.js";
6
7
  import { DatabaseCredential, GenerateDatabaseCredentialRequest, LakebasePoolConfig, RequestedClaims, RequestedClaimsPermissionSet, RequestedResource, createLakebasePool, generateDatabaseCredential, getLakebaseOrmConfig, getLakebasePgConfig, getUsernameWithApiLookup, getWorkspaceClient } from "./connectors/lakebase/index.js";
7
8
  import { getExecutionContext } from "./context/execution-context.js";
9
+ import "./context/index.js";
8
10
  import { ITelemetry, TelemetryConfig } from "./telemetry/types.js";
9
11
  import { Counter, Histogram, SeverityNumber, Span, SpanStatusCode } from "./telemetry/index.js";
10
12
  import { createApp } from "./core/appkit.js";
13
+ import "./core/index.js";
11
14
  import { AppKitError } from "./errors/base.js";
12
15
  import { AuthenticationError } from "./errors/authentication.js";
13
16
  import { ConfigurationError } from "./errors/configuration.js";
@@ -19,13 +22,16 @@ import { TunnelError } from "./errors/tunnel.js";
19
22
  import { ValidationError } from "./errors/validation.js";
20
23
  import { Plugin } from "./plugin/plugin.js";
21
24
  import { toPlugin } from "./plugin/to-plugin.js";
22
- import { analytics } from "./plugins/analytics/analytics.js";
25
+ import "./plugin/index.js";
23
26
  import { ResourcePermission, ResourceType } from "./registry/types.generated.js";
24
27
  import { ConfigSchema, PluginManifest, ResourceEntry, ResourceFieldEntry, ResourceRequirement, ValidationResult } from "./registry/types.js";
25
28
  import { getPluginManifest, getResourceRequirements } from "./registry/manifest-loader.js";
26
29
  import { ResourceRegistry } from "./registry/resource-registry.js";
30
+ import "./registry/index.js";
31
+ import { analytics } from "./plugins/analytics/analytics.js";
27
32
  import { genie } from "./plugins/genie/genie.js";
28
33
  import { lakebase } from "./plugins/lakebase/lakebase.js";
29
34
  import { server } from "./plugins/server/index.js";
35
+ import "./plugins/index.js";
30
36
  import { appKitTypesPlugin } from "./type-generator/vite-plugin.js";
31
37
  export { AppKitError, AuthenticationError, type BasePluginConfig, type CacheConfig, CacheManager, type ConfigSchema, ConfigurationError, ConnectionError, type Counter, type DatabaseCredential, ExecutionError, type GenerateDatabaseCredentialRequest, type Histogram, type IAppRouter, type ITelemetry, InitializationError, type LakebasePoolConfig, Plugin, type PluginManifest, type RequestedClaims, RequestedClaimsPermissionSet, type RequestedResource, type ResourceEntry, type ResourceFieldEntry, type ResourcePermission, ResourceRegistry, type ResourceRequirement, ResourceType, ServerError, SeverityNumber, type Span, SpanStatusCode, type StreamExecutionSettings, type TelemetryConfig, type ToPlugin, TunnelError, ValidationError, type ValidationResult, analytics, appKitTypesPlugin, createApp, createLakebasePool, generateDatabaseCredential, genie, getExecutionContext, getLakebaseOrmConfig, getLakebasePgConfig, getPluginManifest, getResourceRequirements, getUsernameWithApiLookup, getWorkspaceClient, isSQLTypeMarker, lakebase, server, sql, toPlugin };
@@ -1,8 +1,9 @@
1
1
  import { TunnelConnection } from "../shared/src/tunnel.js";
2
- import * as express0 from "express";
2
+ import "../shared/src/index.js";
3
+ import * as express$1 from "express";
3
4
 
4
5
  //#region src/plugin/dev-reader.d.ts
5
- type TunnelConnectionGetter = (req: express0.Request) => TunnelConnection | null;
6
+ type TunnelConnectionGetter = (req: express$1.Request) => TunnelConnection | null;
6
7
  /**
7
8
  * This class is used to read files from the local filesystem in dev mode
8
9
  * through the WebSocket tunnel.
@@ -13,8 +14,8 @@ declare class DevFileReader {
13
14
  private constructor();
14
15
  static getInstance(): DevFileReader;
15
16
  registerTunnelGetter(getter: TunnelConnectionGetter): void;
16
- readFile(filePath: string, req: express0.Request): Promise<string>;
17
- readdir(dirPath: string, req: express0.Request): Promise<string[]>;
17
+ readFile(filePath: string, req: express$1.Request): Promise<string>;
18
+ readdir(dirPath: string, req: express$1.Request): Promise<string[]>;
18
19
  }
19
20
  //#endregion
20
21
  export { DevFileReader };
@@ -1 +1 @@
1
- {"version":3,"file":"dev-reader.d.ts","names":[],"sources":["../../src/plugin/dev-reader.ts"],"sourcesContent":[],"mappings":";;;;KAQK,sBAAA,SAAsB,QAAA,CACF,YACpB;;;AAT0C;;AAOpB,cAQd,aAAA,CAPY;iBACpB,QAAA;EAAgB,QAAA,mBAAA;EAMR,QAAA,WAAa,CAAA;EAAA,OAAA,WAAA,CAAA,CAAA,EAMF,aANE;sBAMF,CAAA,MAAA,EA+BO,sBA/BP,CAAA,EAAA,IAAA;UA+BO,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,EAAsB,QAAA,CAM1B,OANI,CAAA,EAO1B,OAP0B,CAAA,MAAA,CAAA;SAAsB,CAAA,OAM1B,EAAA,MAAA,EAAA,GAAA,EACf,QAAA,CAiCe,OAlCA,CAAA,EAmCtB,OAnCsB,CAAA,MAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"dev-reader.d.ts","names":[],"sources":["../../src/plugin/dev-reader.ts"],"mappings":";;;;;KAQK,sBAAA,IACH,GAAA,EADyB,SAAA,CACF,OAAA,KACpB,gBAAA;;;;AAT0C;cAelC,aAAA;EAAA,eACI,QAAA;EAAA,QACP,mBAAA;EAAA,QAED,WAAA,CAAA;EAAA,OAEA,WAAA,CAAA,GAAe,aAAA;EA+BtB,oBAAA,CAAqB,MAAA,EAAQ,sBAAA;EAIvB,QAAA,CACJ,QAAA,UACA,GAAA,EANiD,SAAA,CAM1B,OAAA,GACtB,OAAA;EA+BG,OAAA,CACJ,OAAA,UACA,GAAA,EAjCQ,SAAA,CAiCe,OAAA,GACtB,OAAA;AAAA"}
@@ -0,0 +1,4 @@
1
+ import { ToPlugin } from "../shared/src/plugin.js";
2
+ import "../shared/src/index.js";
3
+ import { Plugin } from "./plugin.js";
4
+ import { toPlugin } from "./to-plugin.js";
@@ -1,14 +1,16 @@
1
1
  import { BasePlugin, BasePluginConfig, IAppResponse, PluginEndpointMap, PluginPhase, RouteConfig } from "../shared/src/plugin.js";
2
2
  import { PluginExecutionSettings, StreamExecuteHandler, StreamExecutionSettings } from "../shared/src/execute.js";
3
+ import "../shared/src/index.js";
3
4
  import { CacheManager } from "../cache/index.js";
4
5
  import { ITelemetry } from "../telemetry/types.js";
6
+ import "../telemetry/index.js";
5
7
  import { AppManager } from "../app/index.js";
6
8
  import { StreamManager } from "../stream/stream-manager.js";
9
+ import "../stream/index.js";
7
10
  import { DevFileReader } from "./dev-reader.js";
8
11
  import express from "express";
9
12
 
10
13
  //#region src/plugin/plugin.d.ts
11
-
12
14
  /**
13
15
  * Base abstract class for creating AppKit plugins.
14
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","names":[],"sources":["../../src/plugin/plugin.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AAiJA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAsB,uBACJ,mBAAmB,6BACxB;oBAyBmB;;mBAtBb;iBACF;2BACU;2BACA;uBACJ;;;;;;;;;gBAWP;;;;;sBAOgB;kBAWd,OAAA,CAAQ;WAIb;kBAEK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8CJ,OAAA,CAAQ;;;;;;;kCA6Db,kBACD,qBAAqB,aAChB,4CACO;qCA2DF,gBAAgB,QAAQ,aAC7B,4CAER,QAAQ;;sCA0BD,OAAA,CAAQ,gBACR"}
1
+ {"version":3,"file":"plugin.d.ts","names":[],"sources":["../../src/plugin/plugin.ts"],"mappings":";;;;;;;;;;;;;;;;;;;AAiJA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAAsB,MAAA,iBACJ,gBAAA,GAAmB,gBAAA,aACxB,UAAA;EAAA,UAyBW,MAAA,EAAQ,OAAA;EAAA,UAvBpB,OAAA;EAAA,UACA,KAAA,EAAO,YAAA;EAAA,UACP,GAAA,EAAK,UAAA;EAAA,UACL,aAAA,EAAe,aAAA;EAAA,UACf,aAAA,EAAe,aAAA;EAAA,UACf,SAAA,EAAW,UAAA;EA4MW;EAAA,QAzMxB,mBAAA;EAyMN;;;;;;EAAA,OAjMK,KAAA,EAAO,WAAA;EAyNa;;;EApN3B,IAAA;cAEsB,MAAA,EAAQ,OAAA;EAW9B,YAAA,CAAa,CAAA,EAAG,OAAA,CAAQ,MAAA;EAIlB,KAAA,CAAA,GAAK,OAAA;EAEX,YAAA,CAAA,GAAgB,iBAAA;EAIhB,qBAAA,CAAA;EA6MQ;;;;;;;;;;;;;;;;;;;;;;;;;EAhLR,OAAA,CAAA;;;;;;;;;;EAaA,MAAA,CAAO,GAAA,EAAK,OAAA,CAAQ,OAAA;;;;;;UAuCZ,uBAAA;EAAA,UAqBQ,aAAA,GAAA,CACd,GAAA,EAAK,YAAA,EACL,EAAA,EAAI,oBAAA,CAAqB,CAAA,GACzB,OAAA,EAAS,uBAAA,EACT,OAAA,YAAgB,OAAA;EAAA,UA0DF,OAAA,GAAA,CACd,EAAA,GAAK,MAAA,GAAS,WAAA,KAAgB,OAAA,CAAQ,CAAA,GACtC,OAAA,EAAS,uBAAA,EACT,OAAA,YACC,OAAA,CAAQ,CAAA;EAAA,UAqBD,gBAAA,CAAiB,IAAA,UAAc,IAAA;EAAA,UAI/B,KAAA,YAAA,CACR,MAAA,EAAQ,OAAA,CAAQ,MAAA,EAChB,MAAA,EAAQ,WAAA;EAAA,QAUF,qBAAA;EAAA,QAaA,kBAAA;EAAA,QAqCM,wBAAA;EAAA,QAqBN,iBAAA;AAAA"}
@@ -1,7 +1,7 @@
1
1
  import { ToPlugin } from "../shared/src/plugin.js";
2
+ import "../shared/src/index.js";
2
3
 
3
4
  //#region src/plugin/to-plugin.d.ts
4
-
5
5
  /**
6
6
  * @internal
7
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"to-plugin.d.ts","names":[],"sources":["../../src/plugin/to-plugin.ts"],"sourcesContent":[],"mappings":";;;;;;AAKA;AAAwB,iBAAR,QAAQ,CAAA,CAAA,EAAA,CAAA,EAAA,UAAA,MAAA,CAAA,CAAA,MAAA,EACd,CADc,EAAA,IAAA,EAEhB,CAFgB,CAAA,EAGrB,QAHqB,CAGZ,CAHY,EAGT,CAHS,EAGN,CAHM,CAAA"}
1
+ {"version":3,"file":"to-plugin.d.ts","names":[],"sources":["../../src/plugin/to-plugin.ts"],"mappings":";;;;;;;iBAKgB,QAAA,wBAAA,CACd,MAAA,EAAQ,CAAA,EACR,IAAA,EAAM,CAAA,GACL,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA"}