@happyvertical/smrt-core 0.40.26 → 0.40.28

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/AGENTS.md CHANGED
@@ -158,4 +158,7 @@ emitDecoratorMetadata: true`.
158
158
  - **Smart cloning**: arrays/objects shallow-cloned in property init to prevent aliasing (Issue #22)
159
159
  - **Table verification cache**: `isTableVerified(dbUrl, tableName)` avoids redundant `tableExists()` calls
160
160
  - **Manifest required**: build-time AST scanning creates manifest. Without vitest plugin → "No field metadata"
161
+ - **ManifestBuilder fails on scanner errors**: every production manifest path
162
+ must abort before adapting partial scan results. A syntax error or unresolved
163
+ `@smrt()` config spread cannot be allowed to emit a default-open manifest.
161
164
  - **Vite plugin loads scanner from `dist/` first**: `src/vite-plugin/import-build-aware.ts` prefers `dist/` when it exists on disk; it only falls back to `src/` on fresh clones. So if you edit `src/scanner/*.ts` or `src/schema/generator.ts` and want those edits reflected in consumer manifest generation, you must rebuild (`pnpm build` or have `pnpm dev` / `pnpm build:watch` running in core). This is intentional — sniffing `.ts` vs `.js` via `import.meta.url` was non-deterministic under tsx and broke 12–13 publishes (#1139).
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/manifest/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAuB/D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAErC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAuCD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,QAAQ,CACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC;IAkC/B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;YACW,gBAAgB;IAoD9B;;;;;OAKG;YACW,oBAAoB;IAyDlC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;YACW,WAAW;IAyCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;YACW,yBAAyB;IA6EvC;;OAEG;YACW,uBAAuB;IAwCrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAuB5B"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/manifest/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAuB/D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAErC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAuCD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,QAAQ,CACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC;IAkC/B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;YACW,gBAAgB;IAoD9B;;;;;OAKG;YACW,oBAAoB;IAyElC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;YACW,WAAW;IAyCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;YACW,yBAAyB;IA6EvC;;OAEG;YACW,uBAAuB;IAwCrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAuB5B"}
@@ -123,6 +123,13 @@ var ManifestBuilder = class {
123
123
  includeStaticMethods: config.includeStaticMethods,
124
124
  followImports: config.followImports
125
125
  }).scanAndResolve();
126
+ const scanErrors = results.errors.filter((diagnostic) => diagnostic.severity === "error");
127
+ if (scanErrors.length > 0) {
128
+ const detail = scanErrors.map((diagnostic) => {
129
+ return `${diagnostic.line ? `${diagnostic.filePath}:${diagnostic.line}` : diagnostic.filePath} — ${diagnostic.message}`;
130
+ }).join("; ");
131
+ throw new Error(`[smrt] Build aborted due to ${scanErrors.length} scan error(s): ${detail}`);
132
+ }
126
133
  let packageName;
127
134
  let packageVersion;
128
135
  let packageJson;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","names":[],"sources":["../../src/manifest/generator.ts"],"sourcesContent":["/**\n * Manifest generation orchestrator\n * Consolidates manifest generation logic for both build and test manifests\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, isAbsolute, relative, resolve } from 'node:path';\nimport { createLogger } from '@happyvertical/logger';\nimport fg from 'fast-glob';\nimport { ManifestGenerator } from '../scanner/manifest-generator.js';\nimport type { SmartObjectManifest } from '../scanner/types.js';\nimport { importWorkspaceModule } from '../utils/import-workspace-module.js';\nimport type { ScannerModule } from '../utils/scanner-module.js';\nimport {\n discoverSmrtPackages,\n resolveManifestPath,\n} from './discover-smrt-packages.js';\nimport { ManifestManager } from './manager.js';\n\n// Build-time manifest-generation diagnostics route through the shared logger\n// (S14 / dim-9, #1579) so consumers can control verbosity instead of receiving\n// unconditional stdout writes.\nconst logger = createLogger({ level: 'info' });\n\nasync function importScanner() {\n return importWorkspaceModule<ScannerModule>({\n packageName: '@happyvertical/smrt-scanner',\n distEntry: 'packages/scanner/dist/index.js',\n sourceEntry: 'packages/scanner/src/index.ts',\n purpose: 'manifest generation',\n });\n}\n\n/**\n * Options for ManifestBuilder.generate()\n *\n * Controls file discovery, scanner configuration, output generation, and metadata injection\n */\nexport interface ManifestBuilderOptions {\n // File Discovery\n include?: string[];\n exclude?: string[];\n followImports?: boolean;\n\n // Scanner Configuration\n baseClasses?: string[];\n loadViteConfig?: boolean;\n discoverExternalPackages?: boolean;\n includeExternalBaseClasses?: boolean;\n includePrivateMethods?: boolean;\n includeStaticMethods?: boolean;\n\n // Output Configuration\n outputDir?: string;\n outputName?: string;\n generateTypeStub?: boolean;\n stubName?: string;\n\n // Metadata\n injectPackageInfo?: boolean;\n moduleType?: string;\n\n // Tree Shaking (External Object Filtering)\n /**\n * @deprecated Tree shaking is no longer needed. The AST scanner no longer includes external objects in the manifest by default.\n */\n treeShake?: boolean;\n\n /**\n * @deprecated Whitelists are no longer needed. The AST scanner no longer includes external objects in the manifest by default.\n */\n externalObjectsWhitelist?: string[];\n}\n\ninterface ScannerConfig {\n baseClasses: string[];\n includePrivateMethods: boolean;\n includeStaticMethods: boolean;\n followImports: boolean;\n smrtDependencies?: string[];\n}\n\ninterface PackageInfo {\n name?: string;\n version?: string;\n}\n\n/**\n * Subset of the smrt-auto-service Vite plugin options we probe when reading\n * baseClasses out of a project's vite.config.ts.\n */\ninterface VitePluginOptions {\n baseClasses?: string[];\n followImports?: boolean;\n}\n\n/**\n * Structural shape of a loaded Vite plugin entry as probed by\n * loadViteConfigBaseClasses(). The plugin may expose its options directly, on\n * `_options`, or via an `api` object/function — all optional and discovered at\n * runtime, so each is modeled as optional here.\n */\ninterface VitePluginProbe {\n name?: string;\n options?: VitePluginOptions;\n _options?: VitePluginOptions;\n api?:\n | { options?: VitePluginOptions }\n | (() => { options?: VitePluginOptions });\n}\n\n/**\n * Orchestrates manifest generation with configurable options\n *\n * Consolidates logic from generate-manifest.js and generate-test-manifest.js\n * into a single, testable, and maintainable service.\n */\nexport class ManifestBuilder {\n /**\n * Generate manifest with specified options\n */\n async generate(\n options: ManifestBuilderOptions = {},\n ): Promise<SmartObjectManifest> {\n // 1. Discover files to scan\n const files = this.discoverFiles(options);\n\n if (files.length === 0) {\n logger.info('[smrt] No source files found');\n return this.createEmptyManifest(options);\n }\n\n logger.info(`[smrt] Scanning ${files.length} source file(s)...`);\n\n // 2. Configure scanner (baseClasses, external packages, vite config)\n const scannerConfig = await this.configureScanner(options);\n\n // 3. Scan files with OXC scanner\n const scannedManifest = await this.scanAndBuildManifest(\n scannerConfig,\n options,\n );\n\n // 4. Enrich manifest with metadata (smrtDependencies, packageInfo)\n const manifest = this.enrichManifest(\n scannedManifest,\n options,\n scannerConfig,\n );\n\n // 5. Write output files\n this.normalizeFilePaths(manifest);\n await this.writeOutput(manifest, options);\n\n return manifest;\n }\n\n private normalizeFilePaths(manifest: SmartObjectManifest): void {\n const workspaceRoot = this.findWorkspaceRoot(process.cwd());\n\n for (const obj of Object.values(manifest.objects || {})) {\n if (obj.filePath && isAbsolute(obj.filePath)) {\n obj.filePath = relative(workspaceRoot, obj.filePath).replace(\n /\\\\/g,\n '/',\n );\n }\n }\n }\n\n private findWorkspaceRoot(startDir: string): string {\n let current = resolve(startDir);\n\n while (true) {\n if (\n existsSync(resolve(current, 'pnpm-workspace.yaml')) ||\n existsSync(resolve(current, '.git'))\n ) {\n return current;\n }\n\n const parent = dirname(current);\n if (parent === current) {\n return resolve(startDir);\n }\n current = parent;\n }\n }\n\n /**\n * Discover source files based on include/exclude patterns\n */\n private discoverFiles(options: ManifestBuilderOptions): string[] {\n const include = options.include || ['src/**/*.ts'];\n const exclude = options.exclude || ['src/**/*.d.ts', 'node_modules/**'];\n\n return fg.sync(include, {\n absolute: true,\n ignore: exclude,\n });\n }\n\n /**\n * Configure AST scanner with baseClasses, external packages, and vite config\n */\n private async configureScanner(\n options: ManifestBuilderOptions,\n ): Promise<ScannerConfig> {\n let baseClasses = options.baseClasses || [\n 'SmrtObject',\n 'SmrtClass',\n 'SmrtCollection',\n ];\n\n // Load from vite.config.ts if requested\n if (options.loadViteConfig) {\n const viteBaseClasses = await this.loadViteConfigBaseClasses();\n if (viteBaseClasses && viteBaseClasses.length > 0) {\n baseClasses = viteBaseClasses;\n logger.info(\n `[smrt] Using baseClasses from vite.config.ts: ${baseClasses.join(', ')}`,\n );\n }\n }\n\n // Discover external SMRT packages\n let smrtDependencies: string[] = [];\n if (options.discoverExternalPackages) {\n logger.info('[smrt] Discovering external SMRT packages...');\n smrtDependencies = discoverSmrtPackages();\n logger.info(\n `[smrt] Found ${smrtDependencies.length} SMRT package(s): ${smrtDependencies.join(', ')}`,\n );\n\n // Optionally add external base classes\n if (options.includeExternalBaseClasses) {\n const externalClasses =\n await this.loadExternalBaseClasses(smrtDependencies);\n if (externalClasses.length > 0) {\n baseClasses = [...baseClasses, ...externalClasses];\n logger.info(\n `[smrt] Added ${externalClasses.length} external base class(es) to scanner`,\n );\n logger.info(`[smrt] Total baseClasses: ${baseClasses.length}`);\n }\n }\n }\n\n return {\n baseClasses,\n includePrivateMethods: options.includePrivateMethods ?? false,\n includeStaticMethods: options.includeStaticMethods ?? true,\n followImports: options.followImports ?? false,\n smrtDependencies,\n };\n }\n\n /**\n * Scan files using OxcScanner and build manifest via ManifestAdapter.\n *\n * This replaces the old ASTScanner-based scanFiles() method.\n * Uses the same OXC pipeline as the Vite plugin's scanWithOxc().\n */\n private async scanAndBuildManifest(\n config: ScannerConfig,\n options: ManifestBuilderOptions,\n ): Promise<SmartObjectManifest> {\n const { OxcScanner, ManifestAdapter } = await importScanner();\n\n const scanner = new OxcScanner({\n cwd: process.cwd(),\n include: options.include || ['src/**/*.ts'],\n exclude: options.exclude || ['src/**/*.d.ts', 'node_modules/**'],\n baseClasses: config.baseClasses,\n includePrivateMethods: config.includePrivateMethods,\n includeStaticMethods: config.includeStaticMethods,\n followImports: config.followImports,\n });\n\n const { results, resolved } = await scanner.scanAndResolve();\n\n // Read package.json for metadata\n let packageName: string | undefined;\n let packageVersion: string | undefined;\n let packageJson: { name?: string; version?: string } | undefined;\n try {\n const pkgPath = resolve(process.cwd(), 'package.json');\n const pkgContent = readFileSync(pkgPath, 'utf-8');\n packageJson = JSON.parse(pkgContent);\n packageName = packageJson?.name || undefined;\n packageVersion = packageJson?.version || undefined;\n } catch {\n // package.json not found - continue without packageName\n }\n\n // Convert to manifest format\n const adapter = new ManifestAdapter();\n const manifest = adapter.toManifest(resolved, {\n packageName,\n packageVersion,\n typeAliases: results.typeAliases,\n });\n\n // Set smrtDependencies BEFORE mergeInheritedFields so external packages can be loaded\n if (config.smrtDependencies && config.smrtDependencies.length > 0) {\n manifest.smrtDependencies = config.smrtDependencies;\n }\n\n // Run manifest generation passes (same as Vite plugin path)\n const manifestGen = new ManifestGenerator();\n manifestGen.injectTenantScopedFields(manifest);\n manifestGen.mergeInheritedFields(manifest);\n manifestGen.generateValidationRules(manifest);\n manifestGen.generateSchemas(manifest);\n manifestGen.assertTenantScopedSchemaContract(manifest);\n manifestGen.generateAgentManifests(manifest, packageName, packageJson);\n\n return manifest;\n }\n\n /**\n * Enrich manifest with metadata (moduleType, smrtDependencies, packageInfo).\n *\n * Note: As of Issue #1013, this method no longer merges external package\n * objects into the manifest. Dependencies are referenced via\n * `smrtDependencies` and resolved at runtime by manifest-loader.ts.\n */\n private enrichManifest(\n manifest: SmartObjectManifest,\n options: ManifestBuilderOptions,\n scannerConfig: ScannerConfig,\n ): SmartObjectManifest {\n // Add module type\n manifest.moduleType = options.moduleType || 'smrt';\n\n // Record dependency references (not their objects) so runtime\n // manifest-loader.ts can discover and load them on demand.\n if (\n scannerConfig.smrtDependencies &&\n scannerConfig.smrtDependencies.length > 0\n ) {\n manifest.smrtDependencies = scannerConfig.smrtDependencies;\n }\n\n // Inject package info\n if (options.injectPackageInfo) {\n const packageInfo = this.readPackageJson();\n if (packageInfo.name) {\n manifest.packageName = packageInfo.name;\n logger.info(`[smrt] Injected package name: ${packageInfo.name}`);\n } else {\n logger.warn(\n '[smrt] Warning: Could not read package.json, packageName will be undefined',\n );\n }\n }\n\n return manifest;\n }\n\n /**\n * Write manifest JSON and optional TypeScript stub\n */\n private async writeOutput(\n manifest: SmartObjectManifest,\n options: ManifestBuilderOptions,\n ): Promise<void> {\n const manager = new ManifestManager(process.cwd());\n const isTest =\n options.outputName?.includes('test') ||\n options.stubName?.includes('test');\n const mode = isTest ? 'dev' : 'build';\n\n // 1. Always write to the unified location via ManifestManager\n manager.write(manifest, mode);\n\n // 2. Legacy/Explicit Output (if requested or for stubs)\n const outputDir = options.outputDir || 'src/manifest';\n const outputName = options.outputName || 'manifest.json';\n\n // Ensure output directory exists for legacy/stubs\n mkdirSync(outputDir, { recursive: true });\n\n // Write JSON manifest to legacy location if different from unified path\n const manifestPath = resolve(outputDir, outputName);\n const unifiedPath = manager.getOutputPath(mode);\n\n if (resolve(manifestPath) !== resolve(unifiedPath)) {\n writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));\n }\n\n // Write TypeScript stub if requested\n if (options.generateTypeStub) {\n const stubName = options.stubName || 'manifest.ts';\n const tsContent = this.generateTypeStub(manifest, stubName);\n const stubPath = resolve(outputDir, stubName);\n writeFileSync(stubPath, tsContent);\n }\n\n const objectCount = Object.keys(manifest.objects).length;\n logger.info(`[smrt] ✅ Generated manifest with ${objectCount} object(s)`);\n logger.info(`[smrt] Unified: ${unifiedPath}`);\n }\n\n /**\n * Generate TypeScript stub file with manifest constant\n */\n private generateTypeStub(\n manifest: SmartObjectManifest,\n filename: string,\n ): string {\n const isTestManifest = filename.includes('test');\n\n const comment = isTestManifest\n ? `/**\n * Test manifest stub\n * This file is replaced by generate-test-manifest.js during pretest\n * If tests run without pretest, this empty manifest is used\n *\n * DO NOT EDIT MANUALLY - This file is automatically generated\n */`\n : `/**\n * Auto-generated static manifest\n * Generated at build time from SMRT object scanning\n * DO NOT EDIT - This file is automatically generated\n */`;\n\n const exportName = isTestManifest ? 'testManifest' : 'staticManifest';\n\n // Use relative import for core package (to avoid self-reference during build),\n // package import for all other packages\n const isCorePackage = manifest.packageName === '@happyvertical/smrt-core';\n const importPath = isCorePackage\n ? '../scanner/types.js'\n : '@happyvertical/smrt-core/scanner/types';\n\n return `${comment}\n\nimport type { SmartObjectManifest } from '${importPath}';\n\nexport const ${exportName}: SmartObjectManifest = ${JSON.stringify(manifest, null, 2)} as const;\n\nexport default ${exportName};\n`;\n }\n\n /**\n * Load baseClasses from vite.config.ts\n */\n private async loadViteConfigBaseClasses(): Promise<string[] | null> {\n try {\n const viteConfigPath = resolve(process.cwd(), 'vite.config.ts');\n if (!existsSync(viteConfigPath)) {\n logger.info('[smrt] vite.config.ts not found');\n return null;\n }\n\n logger.info('[smrt] Found vite.config.ts, attempting to load...');\n\n // Use vite to load config which handles TypeScript\n const { loadConfigFromFile } = await import('vite');\n const loaded = await loadConfigFromFile(\n { command: 'build', mode: 'test' },\n viteConfigPath,\n );\n\n if (!loaded?.config?.plugins) {\n logger.info('[smrt] No plugins found in vite config');\n return null;\n }\n\n // Vite's loaded plugins are a recursive PluginOption[] (plugins, arrays,\n // falsy values, promises). We only probe a few optional fields, so model\n // them structurally and narrow defensively instead of using `any`.\n const plugins = loaded.config.plugins as readonly VitePluginProbe[];\n\n logger.info('[smrt] Vite config loaded', {\n plugins: plugins.map((p) => p?.name),\n });\n\n // Find smrtPlugin in plugins array\n const smrtPlugin = plugins.find((p) => p?.name === 'smrt-auto-service');\n\n if (!smrtPlugin) {\n logger.info(\n '[smrt] smrt-auto-service plugin not found in plugins array',\n );\n return null;\n }\n\n logger.info('[smrt] Found smrt-auto-service plugin');\n\n // Try different ways to access options\n const api = smrtPlugin.api;\n let opts: VitePluginOptions | undefined =\n (typeof api === 'object' && api !== null ? api.options : undefined) ||\n smrtPlugin.options ||\n smrtPlugin._options;\n\n if (!opts && typeof api === 'function') {\n try {\n opts = api().options;\n } catch (e) {\n logger.info('[smrt] Could not call plugin.api()');\n }\n }\n\n if (opts?.baseClasses) {\n logger.info('[smrt] Plugin options', {\n baseClasses: opts.baseClasses,\n followImports: opts.followImports,\n });\n return opts.baseClasses;\n }\n\n logger.info('[smrt] Could not access plugin options');\n return null;\n } catch (error) {\n logger.warn('[smrt] Error loading vite.config.ts', {\n error: error instanceof Error ? error.message : String(error),\n });\n logger.info('[smrt] Using default baseClasses');\n return null;\n }\n }\n\n /**\n * Load base classes from external SMRT package manifests\n */\n private async loadExternalBaseClasses(packages: string[]): Promise<string[]> {\n const externalBaseClasses: string[] = [];\n\n for (const pkgName of packages) {\n // Resolve the manifest the same way discovery does (honors `.smrt/` and\n // `src/manifest/`, not just `dist/`) so source-only workspace packages\n // still contribute base classes (#1378).\n const manifestPath = resolveManifestPath(pkgName, process.cwd());\n if (!manifestPath) {\n logger.info(`[smrt] ${pkgName}: no SMRT manifest resolved`);\n continue;\n }\n\n try {\n const manifestContent = readFileSync(manifestPath, 'utf-8');\n const manifest: SmartObjectManifest = JSON.parse(manifestContent);\n\n // Extract all class names from this package\n const foundClassNames: string[] = [];\n for (const objDef of Object.values(manifest.objects)) {\n if (objDef.className) {\n const className = objDef.className;\n foundClassNames.push(className);\n externalBaseClasses.push(className);\n }\n }\n\n logger.info(\n `[smrt] ${pkgName}: found ${foundClassNames.length} class(es) - ${foundClassNames.join(', ')}`,\n );\n } catch (error) {\n logger.info(\n `[smrt] ${pkgName}: manifest not found or invalid - ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n\n return externalBaseClasses;\n }\n\n /**\n * Read package.json from current working directory\n */\n private readPackageJson(): PackageInfo {\n try {\n const packageJsonPath = resolve(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n return {\n name: packageJson.name,\n version: packageJson.version,\n };\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Create empty manifest when no files found\n */\n private createEmptyManifest(\n options: ManifestBuilderOptions,\n ): SmartObjectManifest {\n const manifest: SmartObjectManifest = {\n version: '1.0.0',\n timestamp: Date.now(),\n objects: {},\n moduleType: options.moduleType || 'smrt',\n };\n\n if (options.discoverExternalPackages) {\n manifest.smrtDependencies = discoverSmrtPackages();\n }\n\n if (options.injectPackageInfo) {\n const packageInfo = this.readPackageJson();\n if (packageInfo.name) {\n manifest.packageName = packageInfo.name;\n }\n }\n\n return manifest;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","names":[],"sources":["../../src/manifest/generator.ts"],"sourcesContent":["/**\n * Manifest generation orchestrator\n * Consolidates manifest generation logic for both build and test manifests\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, isAbsolute, relative, resolve } from 'node:path';\nimport { createLogger } from '@happyvertical/logger';\nimport fg from 'fast-glob';\nimport { ManifestGenerator } from '../scanner/manifest-generator.js';\nimport type { SmartObjectManifest } from '../scanner/types.js';\nimport { importWorkspaceModule } from '../utils/import-workspace-module.js';\nimport type { ScannerModule } from '../utils/scanner-module.js';\nimport {\n discoverSmrtPackages,\n resolveManifestPath,\n} from './discover-smrt-packages.js';\nimport { ManifestManager } from './manager.js';\n\n// Build-time manifest-generation diagnostics route through the shared logger\n// (S14 / dim-9, #1579) so consumers can control verbosity instead of receiving\n// unconditional stdout writes.\nconst logger = createLogger({ level: 'info' });\n\nasync function importScanner() {\n return importWorkspaceModule<ScannerModule>({\n packageName: '@happyvertical/smrt-scanner',\n distEntry: 'packages/scanner/dist/index.js',\n sourceEntry: 'packages/scanner/src/index.ts',\n purpose: 'manifest generation',\n });\n}\n\n/**\n * Options for ManifestBuilder.generate()\n *\n * Controls file discovery, scanner configuration, output generation, and metadata injection\n */\nexport interface ManifestBuilderOptions {\n // File Discovery\n include?: string[];\n exclude?: string[];\n followImports?: boolean;\n\n // Scanner Configuration\n baseClasses?: string[];\n loadViteConfig?: boolean;\n discoverExternalPackages?: boolean;\n includeExternalBaseClasses?: boolean;\n includePrivateMethods?: boolean;\n includeStaticMethods?: boolean;\n\n // Output Configuration\n outputDir?: string;\n outputName?: string;\n generateTypeStub?: boolean;\n stubName?: string;\n\n // Metadata\n injectPackageInfo?: boolean;\n moduleType?: string;\n\n // Tree Shaking (External Object Filtering)\n /**\n * @deprecated Tree shaking is no longer needed. The AST scanner no longer includes external objects in the manifest by default.\n */\n treeShake?: boolean;\n\n /**\n * @deprecated Whitelists are no longer needed. The AST scanner no longer includes external objects in the manifest by default.\n */\n externalObjectsWhitelist?: string[];\n}\n\ninterface ScannerConfig {\n baseClasses: string[];\n includePrivateMethods: boolean;\n includeStaticMethods: boolean;\n followImports: boolean;\n smrtDependencies?: string[];\n}\n\ninterface PackageInfo {\n name?: string;\n version?: string;\n}\n\n/**\n * Subset of the smrt-auto-service Vite plugin options we probe when reading\n * baseClasses out of a project's vite.config.ts.\n */\ninterface VitePluginOptions {\n baseClasses?: string[];\n followImports?: boolean;\n}\n\n/**\n * Structural shape of a loaded Vite plugin entry as probed by\n * loadViteConfigBaseClasses(). The plugin may expose its options directly, on\n * `_options`, or via an `api` object/function — all optional and discovered at\n * runtime, so each is modeled as optional here.\n */\ninterface VitePluginProbe {\n name?: string;\n options?: VitePluginOptions;\n _options?: VitePluginOptions;\n api?:\n | { options?: VitePluginOptions }\n | (() => { options?: VitePluginOptions });\n}\n\n/**\n * Orchestrates manifest generation with configurable options\n *\n * Consolidates logic from generate-manifest.js and generate-test-manifest.js\n * into a single, testable, and maintainable service.\n */\nexport class ManifestBuilder {\n /**\n * Generate manifest with specified options\n */\n async generate(\n options: ManifestBuilderOptions = {},\n ): Promise<SmartObjectManifest> {\n // 1. Discover files to scan\n const files = this.discoverFiles(options);\n\n if (files.length === 0) {\n logger.info('[smrt] No source files found');\n return this.createEmptyManifest(options);\n }\n\n logger.info(`[smrt] Scanning ${files.length} source file(s)...`);\n\n // 2. Configure scanner (baseClasses, external packages, vite config)\n const scannerConfig = await this.configureScanner(options);\n\n // 3. Scan files with OXC scanner\n const scannedManifest = await this.scanAndBuildManifest(\n scannerConfig,\n options,\n );\n\n // 4. Enrich manifest with metadata (smrtDependencies, packageInfo)\n const manifest = this.enrichManifest(\n scannedManifest,\n options,\n scannerConfig,\n );\n\n // 5. Write output files\n this.normalizeFilePaths(manifest);\n await this.writeOutput(manifest, options);\n\n return manifest;\n }\n\n private normalizeFilePaths(manifest: SmartObjectManifest): void {\n const workspaceRoot = this.findWorkspaceRoot(process.cwd());\n\n for (const obj of Object.values(manifest.objects || {})) {\n if (obj.filePath && isAbsolute(obj.filePath)) {\n obj.filePath = relative(workspaceRoot, obj.filePath).replace(\n /\\\\/g,\n '/',\n );\n }\n }\n }\n\n private findWorkspaceRoot(startDir: string): string {\n let current = resolve(startDir);\n\n while (true) {\n if (\n existsSync(resolve(current, 'pnpm-workspace.yaml')) ||\n existsSync(resolve(current, '.git'))\n ) {\n return current;\n }\n\n const parent = dirname(current);\n if (parent === current) {\n return resolve(startDir);\n }\n current = parent;\n }\n }\n\n /**\n * Discover source files based on include/exclude patterns\n */\n private discoverFiles(options: ManifestBuilderOptions): string[] {\n const include = options.include || ['src/**/*.ts'];\n const exclude = options.exclude || ['src/**/*.d.ts', 'node_modules/**'];\n\n return fg.sync(include, {\n absolute: true,\n ignore: exclude,\n });\n }\n\n /**\n * Configure AST scanner with baseClasses, external packages, and vite config\n */\n private async configureScanner(\n options: ManifestBuilderOptions,\n ): Promise<ScannerConfig> {\n let baseClasses = options.baseClasses || [\n 'SmrtObject',\n 'SmrtClass',\n 'SmrtCollection',\n ];\n\n // Load from vite.config.ts if requested\n if (options.loadViteConfig) {\n const viteBaseClasses = await this.loadViteConfigBaseClasses();\n if (viteBaseClasses && viteBaseClasses.length > 0) {\n baseClasses = viteBaseClasses;\n logger.info(\n `[smrt] Using baseClasses from vite.config.ts: ${baseClasses.join(', ')}`,\n );\n }\n }\n\n // Discover external SMRT packages\n let smrtDependencies: string[] = [];\n if (options.discoverExternalPackages) {\n logger.info('[smrt] Discovering external SMRT packages...');\n smrtDependencies = discoverSmrtPackages();\n logger.info(\n `[smrt] Found ${smrtDependencies.length} SMRT package(s): ${smrtDependencies.join(', ')}`,\n );\n\n // Optionally add external base classes\n if (options.includeExternalBaseClasses) {\n const externalClasses =\n await this.loadExternalBaseClasses(smrtDependencies);\n if (externalClasses.length > 0) {\n baseClasses = [...baseClasses, ...externalClasses];\n logger.info(\n `[smrt] Added ${externalClasses.length} external base class(es) to scanner`,\n );\n logger.info(`[smrt] Total baseClasses: ${baseClasses.length}`);\n }\n }\n }\n\n return {\n baseClasses,\n includePrivateMethods: options.includePrivateMethods ?? false,\n includeStaticMethods: options.includeStaticMethods ?? true,\n followImports: options.followImports ?? false,\n smrtDependencies,\n };\n }\n\n /**\n * Scan files using OxcScanner and build manifest via ManifestAdapter.\n *\n * This replaces the old ASTScanner-based scanFiles() method.\n * Uses the same OXC pipeline as the Vite plugin's scanWithOxc().\n */\n private async scanAndBuildManifest(\n config: ScannerConfig,\n options: ManifestBuilderOptions,\n ): Promise<SmartObjectManifest> {\n const { OxcScanner, ManifestAdapter } = await importScanner();\n\n const scanner = new OxcScanner({\n cwd: process.cwd(),\n include: options.include || ['src/**/*.ts'],\n exclude: options.exclude || ['src/**/*.d.ts', 'node_modules/**'],\n baseClasses: config.baseClasses,\n includePrivateMethods: config.includePrivateMethods,\n includeStaticMethods: config.includeStaticMethods,\n followImports: config.followImports,\n });\n\n const { results, resolved } = await scanner.scanAndResolve();\n const scanErrors = results.errors.filter(\n (diagnostic) => diagnostic.severity === 'error',\n );\n if (scanErrors.length > 0) {\n const detail = scanErrors\n .map((diagnostic) => {\n const where = diagnostic.line\n ? `${diagnostic.filePath}:${diagnostic.line}`\n : diagnostic.filePath;\n return `${where} — ${diagnostic.message}`;\n })\n .join('; ');\n throw new Error(\n `[smrt] Build aborted due to ${scanErrors.length} scan error(s): ${detail}`,\n );\n }\n\n // Read package.json for metadata\n let packageName: string | undefined;\n let packageVersion: string | undefined;\n let packageJson: { name?: string; version?: string } | undefined;\n try {\n const pkgPath = resolve(process.cwd(), 'package.json');\n const pkgContent = readFileSync(pkgPath, 'utf-8');\n packageJson = JSON.parse(pkgContent);\n packageName = packageJson?.name || undefined;\n packageVersion = packageJson?.version || undefined;\n } catch {\n // package.json not found - continue without packageName\n }\n\n // Convert to manifest format\n const adapter = new ManifestAdapter();\n const manifest = adapter.toManifest(resolved, {\n packageName,\n packageVersion,\n typeAliases: results.typeAliases,\n });\n\n // Set smrtDependencies BEFORE mergeInheritedFields so external packages can be loaded\n if (config.smrtDependencies && config.smrtDependencies.length > 0) {\n manifest.smrtDependencies = config.smrtDependencies;\n }\n\n // Run manifest generation passes (same as Vite plugin path)\n const manifestGen = new ManifestGenerator();\n manifestGen.injectTenantScopedFields(manifest);\n manifestGen.mergeInheritedFields(manifest);\n manifestGen.generateValidationRules(manifest);\n manifestGen.generateSchemas(manifest);\n manifestGen.assertTenantScopedSchemaContract(manifest);\n manifestGen.generateAgentManifests(manifest, packageName, packageJson);\n\n return manifest;\n }\n\n /**\n * Enrich manifest with metadata (moduleType, smrtDependencies, packageInfo).\n *\n * Note: As of Issue #1013, this method no longer merges external package\n * objects into the manifest. Dependencies are referenced via\n * `smrtDependencies` and resolved at runtime by manifest-loader.ts.\n */\n private enrichManifest(\n manifest: SmartObjectManifest,\n options: ManifestBuilderOptions,\n scannerConfig: ScannerConfig,\n ): SmartObjectManifest {\n // Add module type\n manifest.moduleType = options.moduleType || 'smrt';\n\n // Record dependency references (not their objects) so runtime\n // manifest-loader.ts can discover and load them on demand.\n if (\n scannerConfig.smrtDependencies &&\n scannerConfig.smrtDependencies.length > 0\n ) {\n manifest.smrtDependencies = scannerConfig.smrtDependencies;\n }\n\n // Inject package info\n if (options.injectPackageInfo) {\n const packageInfo = this.readPackageJson();\n if (packageInfo.name) {\n manifest.packageName = packageInfo.name;\n logger.info(`[smrt] Injected package name: ${packageInfo.name}`);\n } else {\n logger.warn(\n '[smrt] Warning: Could not read package.json, packageName will be undefined',\n );\n }\n }\n\n return manifest;\n }\n\n /**\n * Write manifest JSON and optional TypeScript stub\n */\n private async writeOutput(\n manifest: SmartObjectManifest,\n options: ManifestBuilderOptions,\n ): Promise<void> {\n const manager = new ManifestManager(process.cwd());\n const isTest =\n options.outputName?.includes('test') ||\n options.stubName?.includes('test');\n const mode = isTest ? 'dev' : 'build';\n\n // 1. Always write to the unified location via ManifestManager\n manager.write(manifest, mode);\n\n // 2. Legacy/Explicit Output (if requested or for stubs)\n const outputDir = options.outputDir || 'src/manifest';\n const outputName = options.outputName || 'manifest.json';\n\n // Ensure output directory exists for legacy/stubs\n mkdirSync(outputDir, { recursive: true });\n\n // Write JSON manifest to legacy location if different from unified path\n const manifestPath = resolve(outputDir, outputName);\n const unifiedPath = manager.getOutputPath(mode);\n\n if (resolve(manifestPath) !== resolve(unifiedPath)) {\n writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));\n }\n\n // Write TypeScript stub if requested\n if (options.generateTypeStub) {\n const stubName = options.stubName || 'manifest.ts';\n const tsContent = this.generateTypeStub(manifest, stubName);\n const stubPath = resolve(outputDir, stubName);\n writeFileSync(stubPath, tsContent);\n }\n\n const objectCount = Object.keys(manifest.objects).length;\n logger.info(`[smrt] ✅ Generated manifest with ${objectCount} object(s)`);\n logger.info(`[smrt] Unified: ${unifiedPath}`);\n }\n\n /**\n * Generate TypeScript stub file with manifest constant\n */\n private generateTypeStub(\n manifest: SmartObjectManifest,\n filename: string,\n ): string {\n const isTestManifest = filename.includes('test');\n\n const comment = isTestManifest\n ? `/**\n * Test manifest stub\n * This file is replaced by generate-test-manifest.js during pretest\n * If tests run without pretest, this empty manifest is used\n *\n * DO NOT EDIT MANUALLY - This file is automatically generated\n */`\n : `/**\n * Auto-generated static manifest\n * Generated at build time from SMRT object scanning\n * DO NOT EDIT - This file is automatically generated\n */`;\n\n const exportName = isTestManifest ? 'testManifest' : 'staticManifest';\n\n // Use relative import for core package (to avoid self-reference during build),\n // package import for all other packages\n const isCorePackage = manifest.packageName === '@happyvertical/smrt-core';\n const importPath = isCorePackage\n ? '../scanner/types.js'\n : '@happyvertical/smrt-core/scanner/types';\n\n return `${comment}\n\nimport type { SmartObjectManifest } from '${importPath}';\n\nexport const ${exportName}: SmartObjectManifest = ${JSON.stringify(manifest, null, 2)} as const;\n\nexport default ${exportName};\n`;\n }\n\n /**\n * Load baseClasses from vite.config.ts\n */\n private async loadViteConfigBaseClasses(): Promise<string[] | null> {\n try {\n const viteConfigPath = resolve(process.cwd(), 'vite.config.ts');\n if (!existsSync(viteConfigPath)) {\n logger.info('[smrt] vite.config.ts not found');\n return null;\n }\n\n logger.info('[smrt] Found vite.config.ts, attempting to load...');\n\n // Use vite to load config which handles TypeScript\n const { loadConfigFromFile } = await import('vite');\n const loaded = await loadConfigFromFile(\n { command: 'build', mode: 'test' },\n viteConfigPath,\n );\n\n if (!loaded?.config?.plugins) {\n logger.info('[smrt] No plugins found in vite config');\n return null;\n }\n\n // Vite's loaded plugins are a recursive PluginOption[] (plugins, arrays,\n // falsy values, promises). We only probe a few optional fields, so model\n // them structurally and narrow defensively instead of using `any`.\n const plugins = loaded.config.plugins as readonly VitePluginProbe[];\n\n logger.info('[smrt] Vite config loaded', {\n plugins: plugins.map((p) => p?.name),\n });\n\n // Find smrtPlugin in plugins array\n const smrtPlugin = plugins.find((p) => p?.name === 'smrt-auto-service');\n\n if (!smrtPlugin) {\n logger.info(\n '[smrt] smrt-auto-service plugin not found in plugins array',\n );\n return null;\n }\n\n logger.info('[smrt] Found smrt-auto-service plugin');\n\n // Try different ways to access options\n const api = smrtPlugin.api;\n let opts: VitePluginOptions | undefined =\n (typeof api === 'object' && api !== null ? api.options : undefined) ||\n smrtPlugin.options ||\n smrtPlugin._options;\n\n if (!opts && typeof api === 'function') {\n try {\n opts = api().options;\n } catch (e) {\n logger.info('[smrt] Could not call plugin.api()');\n }\n }\n\n if (opts?.baseClasses) {\n logger.info('[smrt] Plugin options', {\n baseClasses: opts.baseClasses,\n followImports: opts.followImports,\n });\n return opts.baseClasses;\n }\n\n logger.info('[smrt] Could not access plugin options');\n return null;\n } catch (error) {\n logger.warn('[smrt] Error loading vite.config.ts', {\n error: error instanceof Error ? error.message : String(error),\n });\n logger.info('[smrt] Using default baseClasses');\n return null;\n }\n }\n\n /**\n * Load base classes from external SMRT package manifests\n */\n private async loadExternalBaseClasses(packages: string[]): Promise<string[]> {\n const externalBaseClasses: string[] = [];\n\n for (const pkgName of packages) {\n // Resolve the manifest the same way discovery does (honors `.smrt/` and\n // `src/manifest/`, not just `dist/`) so source-only workspace packages\n // still contribute base classes (#1378).\n const manifestPath = resolveManifestPath(pkgName, process.cwd());\n if (!manifestPath) {\n logger.info(`[smrt] ${pkgName}: no SMRT manifest resolved`);\n continue;\n }\n\n try {\n const manifestContent = readFileSync(manifestPath, 'utf-8');\n const manifest: SmartObjectManifest = JSON.parse(manifestContent);\n\n // Extract all class names from this package\n const foundClassNames: string[] = [];\n for (const objDef of Object.values(manifest.objects)) {\n if (objDef.className) {\n const className = objDef.className;\n foundClassNames.push(className);\n externalBaseClasses.push(className);\n }\n }\n\n logger.info(\n `[smrt] ${pkgName}: found ${foundClassNames.length} class(es) - ${foundClassNames.join(', ')}`,\n );\n } catch (error) {\n logger.info(\n `[smrt] ${pkgName}: manifest not found or invalid - ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n\n return externalBaseClasses;\n }\n\n /**\n * Read package.json from current working directory\n */\n private readPackageJson(): PackageInfo {\n try {\n const packageJsonPath = resolve(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n return {\n name: packageJson.name,\n version: packageJson.version,\n };\n } catch (error) {\n return {};\n }\n }\n\n /**\n * Create empty manifest when no files found\n */\n private createEmptyManifest(\n options: ManifestBuilderOptions,\n ): SmartObjectManifest {\n const manifest: SmartObjectManifest = {\n version: '1.0.0',\n timestamp: Date.now(),\n objects: {},\n moduleType: options.moduleType || 'smrt',\n };\n\n if (options.discoverExternalPackages) {\n manifest.smrtDependencies = discoverSmrtPackages();\n }\n\n if (options.injectPackageInfo) {\n const packageInfo = this.readPackageJson();\n if (packageInfo.name) {\n manifest.packageName = packageInfo.name;\n }\n }\n\n return manifest;\n }\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  //#region src/manifest/static-manifest.ts
2
2
  var staticManifest = {
3
3
  "version": "1.0.0",
4
- "timestamp": 1785075145632,
4
+ "timestamp": 1785095283072,
5
5
  "packageName": "@happyvertical/smrt-core",
6
- "packageVersion": "0.40.26",
6
+ "packageVersion": "0.40.28",
7
7
  "objects": {
8
8
  "@happyvertical/smrt-core:SmrtClass": {
9
9
  "name": "smrtclass",
@@ -1 +1 @@
1
- {"version":3,"file":"static-manifest.js","names":[],"sources":["../../src/manifest/static-manifest.ts"],"sourcesContent":["/**\n * Auto-generated static manifest\n * Generated at build time from SMRT object scanning\n * DO NOT EDIT - This file is automatically generated\n */\n\nimport type { SmartObjectManifest } from '../scanner/types.js';\n\nexport const staticManifest: SmartObjectManifest = {\n \"version\": \"1.0.0\",\n \"timestamp\": 1785075145632,\n \"packageName\": \"@happyvertical/smrt-core\",\n \"packageVersion\": \"0.40.26\",\n \"objects\": {\n \"@happyvertical/smrt-core:SmrtClass\": {\n \"name\": \"smrtclass\",\n \"className\": \"SmrtClass\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtClass\",\n \"collection\": \"smrtclasses\",\n \"filePath\": \"packages/core/src/class.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {},\n \"methods\": {\n \"getAiUsageSnapshot\": {\n \"name\": \"getAiUsageSnapshot\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"AiUsageSnapshot | undefined\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"resetAiUsage\": {\n \"name\": \"resetAiUsage\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"listAiUsage\": {\n \"name\": \"listAiUsage\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"AiUsageListOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<SmrtAiUsageRecord[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"summarizeAiUsage\": {\n \"name\": \"summarizeAiUsage\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"AiUsageSummaryOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Record<string, AiUsageStats>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"destroy\": {\n \"name\": \"destroy\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"exportName\": \"SmrtClass\",\n \"collectionExportName\": \"SmrtClassCollection\",\n \"schema\": {\n \"tableName\": \"smrt_classes\",\n \"ddl\": \"CREATE TABLE IF NOT EXISTS \\\"smrt_classes\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\n \"columns\": {\n \"id\": {\n \"type\": \"UUID\",\n \"primaryKey\": true,\n \"referenceKind\": \"id\",\n \"notNull\": true\n },\n \"slug\": {\n \"type\": \"TEXT\",\n \"notNull\": true\n },\n \"context\": {\n \"type\": \"TEXT\",\n \"notNull\": true,\n \"default\": \"\"\n },\n \"created_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n },\n \"updated_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n }\n },\n \"indexes\": [\n {\n \"name\": \"smrt_classes_id_idx\",\n \"columns\": [\n \"id\"\n ]\n },\n {\n \"name\": \"smrt_classes_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n }\n ],\n \"version\": \"234a72b0\"\n }\n },\n \"@happyvertical/smrt-core:SmrtCollection\": {\n \"name\": \"smrtcollection\",\n \"className\": \"SmrtCollection\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtCollection\",\n \"collection\": \"smrtcollections\",\n \"filePath\": \"packages/core/src/collection.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {},\n \"methods\": {\n \"getItemClass\": {\n \"name\": \"getItemClass\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"SmrtCollectionItemClass<ModelType>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"validate\": {\n \"name\": \"validate\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": true,\n \"isPublic\": true\n },\n \"create\": {\n \"name\": \"create\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtCreateInput<ModelType>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"initialize\": {\n \"name\": \"initialize\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"ensureStorageReady\": {\n \"name\": \"ensureStorageReady\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findOne\": {\n \"name\": \"findOne\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ModelType | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findById\": {\n \"name\": \"findById\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ModelType | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findAll\": {\n \"name\": \"findAll\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"listByIds\": {\n \"name\": \"listByIds\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"ids\",\n \"type\": \"string[]\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ModelType[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"get\": {\n \"name\": \"get\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"filter\",\n \"type\": \"string | SmrtWhereClause<ModelType>\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"list\": {\n \"name\": \"list\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtListOptions<ModelType>\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType[] | Record<string>[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getOrUpsert\": {\n \"name\": \"getOrUpsert\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"data\",\n \"type\": \"Record<string>\",\n \"optional\": false\n },\n {\n \"name\": \"defaults\",\n \"type\": \"Record<string>\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getDiff\": {\n \"name\": \"getDiff\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"existing\",\n \"type\": \"SmrtObject | Record<string>\",\n \"optional\": false\n },\n {\n \"name\": \"data\",\n \"type\": \"Record<string>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<Record<string> | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getFields\": {\n \"name\": \"getFields\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<Record<string, CollectionFieldDefinition>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getFieldsSync\": {\n \"name\": \"getFieldsSync\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"Record<string, CollectionFieldDefinition>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateSchema\": {\n \"name\": \"generateSchema\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateTableName\": {\n \"name\": \"generateTableName\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"delete\": {\n \"name\": \"delete\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<boolean>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"count\": {\n \"name\": \"count\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getStiChildMetaType\": {\n \"name\": \"getStiChildMetaType\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"string | null\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"query\": {\n \"name\": \"query\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"sql\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"params\",\n \"type\": \"any\",\n \"optional\": true\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"remember\": {\n \"name\": \"remember\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recall\": {\n \"name\": \"recall\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recallAll\": {\n \"name\": \"recallAll\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Map<string>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forget\": {\n \"name\": \"forget\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forgetScope\": {\n \"name\": \"forgetScope\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<number>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"semanticSearch\": {\n \"name\": \"semanticSearch\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"query\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Array>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findSimilar\": {\n \"name\": \"findSimilar\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"object\",\n \"type\": \"ModelType | string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Array>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findSimilarToEmbedding\": {\n \"name\": \"findSimilarToEmbedding\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"embedding\",\n \"type\": \"number[]\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Array>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateMissingEmbeddings\": {\n \"name\": \"generateMissingEmbeddings\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<object>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtClass\",\n \"exportName\": \"SmrtCollection\",\n \"collectionExportName\": \"SmrtCollectionCollection\",\n \"schema\": {\n \"tableName\": \"smrt_collections\",\n \"ddl\": \"CREATE TABLE IF NOT EXISTS \\\"smrt_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\n \"columns\": {\n \"id\": {\n \"type\": \"UUID\",\n \"primaryKey\": true,\n \"referenceKind\": \"id\",\n \"notNull\": true\n },\n \"slug\": {\n \"type\": \"TEXT\",\n \"notNull\": true\n },\n \"context\": {\n \"type\": \"TEXT\",\n \"notNull\": true,\n \"default\": \"\"\n },\n \"created_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n },\n \"updated_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n }\n },\n \"indexes\": [\n {\n \"name\": \"smrt_collections_id_idx\",\n \"columns\": [\n \"id\"\n ]\n },\n {\n \"name\": \"smrt_collections_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n }\n ],\n \"version\": \"295b0a80\"\n }\n },\n \"@happyvertical/smrt-core:SmrtHierarchical\": {\n \"name\": \"smrthierarchical\",\n \"className\": \"SmrtHierarchical\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtHierarchical\",\n \"collection\": \"smrthierarchicals\",\n \"filePath\": \"packages/core/src/hierarchical.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {\n \"parentId\": {\n \"type\": \"text\",\n \"required\": false\n }\n },\n \"methods\": {\n \"getParent\": {\n \"name\": \"getParent\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getChildren\": {\n \"name\": \"getChildren\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getAncestors\": {\n \"name\": \"getAncestors\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getDescendants\": {\n \"name\": \"getDescendants\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getHierarchy\": {\n \"name\": \"getHierarchy\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<HierarchyView>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"moveTo\": {\n \"name\": \"moveTo\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"newParent\",\n \"type\": \"string | null\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtObject\",\n \"exportName\": \"SmrtHierarchical\",\n \"collectionExportName\": \"SmrtHierarchicalCollection\"\n },\n \"@happyvertical/smrt-core:SmrtJunction\": {\n \"name\": \"smrtjunction\",\n \"className\": \"SmrtJunction\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtJunction\",\n \"collection\": \"smrtjunctions\",\n \"filePath\": \"packages/core/src/junction.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {},\n \"methods\": {\n \"byLeft\": {\n \"name\": \"byLeft\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionFilterOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<TItem[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"byRight\": {\n \"name\": \"byRight\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"rightId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionFilterOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<TItem[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"attach\": {\n \"name\": \"attach\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"rightId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionAttachOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<TItem>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"detach\": {\n \"name\": \"detach\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"rightId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionFilterOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"setLinks\": {\n \"name\": \"setLinks\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"rightIds\",\n \"type\": \"string[]\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionAttachOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtCollection\",\n \"extendsTypeArg\": \"TItem\",\n \"exportName\": \"SmrtJunction\",\n \"collectionExportName\": \"SmrtJunctionCollection\"\n },\n \"@happyvertical/smrt-core:SmrtObject\": {\n \"name\": \"smrtobject\",\n \"className\": \"SmrtObject\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtObject\",\n \"collection\": \"smrtobjects\",\n \"filePath\": \"packages/core/src/object.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {\n \"created_at\": {\n \"type\": \"datetime\",\n \"required\": false\n },\n \"updated_at\": {\n \"type\": \"datetime\",\n \"required\": false\n }\n },\n \"methods\": {\n \"markAsPersisted\": {\n \"name\": \"markAsPersisted\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"requireInsertOnSave\": {\n \"name\": \"requireInsertOnSave\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"initialize\": {\n \"name\": \"initialize\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadDataFromDb\": {\n \"name\": \"loadDataFromDb\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"data\",\n \"type\": \"Record<string>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getFields\": {\n \"name\": \"getFields\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<any>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"toJSON\": {\n \"name\": \"toJSON\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"toPlainObject\": {\n \"name\": \"toPlainObject\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"Record<string>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"toPublicJSON\": {\n \"name\": \"toPublicJSON\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"PublicJsonOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Record<string>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getId\": {\n \"name\": \"getId\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getSlug\": {\n \"name\": \"getSlug\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getSavedId\": {\n \"name\": \"getSavedId\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"isSaved\": {\n \"name\": \"isSaved\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"save\": {\n \"name\": \"save\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"classifyConstraintError\": {\n \"name\": \"classifyConstraintError\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"'unique' | 'not_null' | null\",\n \"isStatic\": true,\n \"isPublic\": true\n },\n \"loadFromId\": {\n \"name\": \"loadFromId\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadFromSlug\": {\n \"name\": \"loadFromSlug\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"is\": {\n \"name\": \"is\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"criteria\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"AiOperationOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"do\": {\n \"name\": \"do\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"instructions\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"AiOperationOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"describe\": {\n \"name\": \"describe\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"AiOperationOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"delete\": {\n \"name\": \"delete\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"isRelatedLoaded\": {\n \"name\": \"isRelatedLoaded\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"boolean\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"_setLoadedRelationship\": {\n \"name\": \"_setLoadedRelationship\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"value\",\n \"type\": \"any\",\n \"optional\": false\n }\n ],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadRelated\": {\n \"name\": \"loadRelated\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"LoadRelatedOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<any>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadRelatedMany\": {\n \"name\": \"loadRelatedMany\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"LoadRelatedOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<any[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getRelated\": {\n \"name\": \"getRelated\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"LoadRelatedOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<any>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getAvailableTools\": {\n \"name\": \"getAvailableTools\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"AITool[]\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"executeToolCall\": {\n \"name\": \"executeToolCall\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"toolCall\",\n \"type\": \"ToolCall\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ToolCallResult>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"remember\": {\n \"name\": \"remember\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recall\": {\n \"name\": \"recall\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recallAll\": {\n \"name\": \"recallAll\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Map<string>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forget\": {\n \"name\": \"forget\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forgetScope\": {\n \"name\": \"forgetScope\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<number>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateEmbeddings\": {\n \"name\": \"generateEmbeddings\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"GenerateEmbeddingsOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getEmbedding\": {\n \"name\": \"getEmbedding\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"model\",\n \"type\": \"string\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<number[] | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"hasStaleEmbeddings\": {\n \"name\": \"hasStaleEmbeddings\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<boolean>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"clearEmbeddings\": {\n \"name\": \"clearEmbeddings\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtClass\",\n \"exportName\": \"SmrtObject\",\n \"collectionExportName\": \"SmrtObjectCollection\",\n \"schema\": {\n \"tableName\": \"smrt_objects\",\n \"ddl\": \"CREATE TABLE IF NOT EXISTS \\\"smrt_objects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\n \"columns\": {\n \"id\": {\n \"type\": \"UUID\",\n \"primaryKey\": true,\n \"referenceKind\": \"id\",\n \"notNull\": true\n },\n \"slug\": {\n \"type\": \"TEXT\",\n \"notNull\": true\n },\n \"context\": {\n \"type\": \"TEXT\",\n \"notNull\": true,\n \"default\": \"\"\n },\n \"created_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n },\n \"updated_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n }\n },\n \"indexes\": [\n {\n \"name\": \"smrt_objects_id_idx\",\n \"columns\": [\n \"id\"\n ]\n },\n {\n \"name\": \"smrt_objects_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n }\n ],\n \"version\": \"204bf3c4\"\n }\n },\n \"@happyvertical/smrt-core:SmrtPolymorphicAssociation\": {\n \"name\": \"smrtpolymorphicassociation\",\n \"className\": \"SmrtPolymorphicAssociation\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtPolymorphicAssociation\",\n \"collection\": \"smrtpolymorphicassociations\",\n \"filePath\": \"packages/core/src/polymorphic-association.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {\n \"metaType\": {\n \"type\": \"text\",\n \"required\": true,\n \"_meta\": {\n \"required\": true\n }\n },\n \"metaId\": {\n \"type\": \"text\",\n \"required\": true,\n \"_meta\": {\n \"required\": true\n }\n },\n \"role\": {\n \"type\": \"text\",\n \"required\": true,\n \"_meta\": {\n \"required\": true\n }\n },\n \"sortOrder\": {\n \"type\": \"integer\",\n \"required\": false,\n \"default\": 0\n }\n },\n \"methods\": {\n \"hydrate\": {\n \"name\": \"hydrate\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<T | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtObject\",\n \"exportName\": \"SmrtPolymorphicAssociation\",\n \"collectionExportName\": \"SmrtPolymorphicAssociationCollection\",\n \"validationRules\": [\n {\n \"field\": \"metaType\",\n \"rule\": \"required\",\n \"fieldType\": \"text\"\n },\n {\n \"field\": \"metaId\",\n \"rule\": \"required\",\n \"fieldType\": \"text\"\n },\n {\n \"field\": \"role\",\n \"rule\": \"required\",\n \"fieldType\": \"text\"\n }\n ]\n }\n },\n \"moduleType\": \"smrt\"\n} as const;\n\nexport default staticManifest;\n"],"mappings":"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"}
1
+ {"version":3,"file":"static-manifest.js","names":[],"sources":["../../src/manifest/static-manifest.ts"],"sourcesContent":["/**\n * Auto-generated static manifest\n * Generated at build time from SMRT object scanning\n * DO NOT EDIT - This file is automatically generated\n */\n\nimport type { SmartObjectManifest } from '../scanner/types.js';\n\nexport const staticManifest: SmartObjectManifest = {\n \"version\": \"1.0.0\",\n \"timestamp\": 1785095283072,\n \"packageName\": \"@happyvertical/smrt-core\",\n \"packageVersion\": \"0.40.28\",\n \"objects\": {\n \"@happyvertical/smrt-core:SmrtClass\": {\n \"name\": \"smrtclass\",\n \"className\": \"SmrtClass\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtClass\",\n \"collection\": \"smrtclasses\",\n \"filePath\": \"packages/core/src/class.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {},\n \"methods\": {\n \"getAiUsageSnapshot\": {\n \"name\": \"getAiUsageSnapshot\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"AiUsageSnapshot | undefined\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"resetAiUsage\": {\n \"name\": \"resetAiUsage\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"listAiUsage\": {\n \"name\": \"listAiUsage\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"AiUsageListOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<SmrtAiUsageRecord[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"summarizeAiUsage\": {\n \"name\": \"summarizeAiUsage\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"AiUsageSummaryOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Record<string, AiUsageStats>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"destroy\": {\n \"name\": \"destroy\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"exportName\": \"SmrtClass\",\n \"collectionExportName\": \"SmrtClassCollection\",\n \"schema\": {\n \"tableName\": \"smrt_classes\",\n \"ddl\": \"CREATE TABLE IF NOT EXISTS \\\"smrt_classes\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\n \"columns\": {\n \"id\": {\n \"type\": \"UUID\",\n \"primaryKey\": true,\n \"referenceKind\": \"id\",\n \"notNull\": true\n },\n \"slug\": {\n \"type\": \"TEXT\",\n \"notNull\": true\n },\n \"context\": {\n \"type\": \"TEXT\",\n \"notNull\": true,\n \"default\": \"\"\n },\n \"created_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n },\n \"updated_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n }\n },\n \"indexes\": [\n {\n \"name\": \"smrt_classes_id_idx\",\n \"columns\": [\n \"id\"\n ]\n },\n {\n \"name\": \"smrt_classes_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n }\n ],\n \"version\": \"234a72b0\"\n }\n },\n \"@happyvertical/smrt-core:SmrtCollection\": {\n \"name\": \"smrtcollection\",\n \"className\": \"SmrtCollection\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtCollection\",\n \"collection\": \"smrtcollections\",\n \"filePath\": \"packages/core/src/collection.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {},\n \"methods\": {\n \"getItemClass\": {\n \"name\": \"getItemClass\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"SmrtCollectionItemClass<ModelType>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"validate\": {\n \"name\": \"validate\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": true,\n \"isPublic\": true\n },\n \"create\": {\n \"name\": \"create\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtCreateInput<ModelType>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"initialize\": {\n \"name\": \"initialize\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"ensureStorageReady\": {\n \"name\": \"ensureStorageReady\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findOne\": {\n \"name\": \"findOne\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ModelType | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findById\": {\n \"name\": \"findById\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ModelType | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findAll\": {\n \"name\": \"findAll\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"listByIds\": {\n \"name\": \"listByIds\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"ids\",\n \"type\": \"string[]\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ModelType[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"get\": {\n \"name\": \"get\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"filter\",\n \"type\": \"string | SmrtWhereClause<ModelType>\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"list\": {\n \"name\": \"list\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtListOptions<ModelType>\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType[] | Record<string>[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getOrUpsert\": {\n \"name\": \"getOrUpsert\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"data\",\n \"type\": \"Record<string>\",\n \"optional\": false\n },\n {\n \"name\": \"defaults\",\n \"type\": \"Record<string>\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getDiff\": {\n \"name\": \"getDiff\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"existing\",\n \"type\": \"SmrtObject | Record<string>\",\n \"optional\": false\n },\n {\n \"name\": \"data\",\n \"type\": \"Record<string>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<Record<string> | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getFields\": {\n \"name\": \"getFields\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<Record<string, CollectionFieldDefinition>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getFieldsSync\": {\n \"name\": \"getFieldsSync\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"Record<string, CollectionFieldDefinition>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateSchema\": {\n \"name\": \"generateSchema\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateTableName\": {\n \"name\": \"generateTableName\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"delete\": {\n \"name\": \"delete\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"id\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<boolean>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"count\": {\n \"name\": \"count\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getStiChildMetaType\": {\n \"name\": \"getStiChildMetaType\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"string | null\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"query\": {\n \"name\": \"query\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"sql\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"params\",\n \"type\": \"any\",\n \"optional\": true\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<ModelType[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"remember\": {\n \"name\": \"remember\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recall\": {\n \"name\": \"recall\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recallAll\": {\n \"name\": \"recallAll\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Map<string>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forget\": {\n \"name\": \"forget\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forgetScope\": {\n \"name\": \"forgetScope\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<number>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"semanticSearch\": {\n \"name\": \"semanticSearch\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"query\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Array>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findSimilar\": {\n \"name\": \"findSimilar\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"object\",\n \"type\": \"ModelType | string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Array>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"findSimilarToEmbedding\": {\n \"name\": \"findSimilarToEmbedding\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"embedding\",\n \"type\": \"number[]\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Array>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateMissingEmbeddings\": {\n \"name\": \"generateMissingEmbeddings\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<object>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtClass\",\n \"exportName\": \"SmrtCollection\",\n \"collectionExportName\": \"SmrtCollectionCollection\",\n \"schema\": {\n \"tableName\": \"smrt_collections\",\n \"ddl\": \"CREATE TABLE IF NOT EXISTS \\\"smrt_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\n \"columns\": {\n \"id\": {\n \"type\": \"UUID\",\n \"primaryKey\": true,\n \"referenceKind\": \"id\",\n \"notNull\": true\n },\n \"slug\": {\n \"type\": \"TEXT\",\n \"notNull\": true\n },\n \"context\": {\n \"type\": \"TEXT\",\n \"notNull\": true,\n \"default\": \"\"\n },\n \"created_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n },\n \"updated_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n }\n },\n \"indexes\": [\n {\n \"name\": \"smrt_collections_id_idx\",\n \"columns\": [\n \"id\"\n ]\n },\n {\n \"name\": \"smrt_collections_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n }\n ],\n \"version\": \"295b0a80\"\n }\n },\n \"@happyvertical/smrt-core:SmrtHierarchical\": {\n \"name\": \"smrthierarchical\",\n \"className\": \"SmrtHierarchical\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtHierarchical\",\n \"collection\": \"smrthierarchicals\",\n \"filePath\": \"packages/core/src/hierarchical.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {\n \"parentId\": {\n \"type\": \"text\",\n \"required\": false\n }\n },\n \"methods\": {\n \"getParent\": {\n \"name\": \"getParent\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getChildren\": {\n \"name\": \"getChildren\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getAncestors\": {\n \"name\": \"getAncestors\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getDescendants\": {\n \"name\": \"getDescendants\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getHierarchy\": {\n \"name\": \"getHierarchy\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<HierarchyView>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"moveTo\": {\n \"name\": \"moveTo\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"newParent\",\n \"type\": \"string | null\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtObject\",\n \"exportName\": \"SmrtHierarchical\",\n \"collectionExportName\": \"SmrtHierarchicalCollection\"\n },\n \"@happyvertical/smrt-core:SmrtJunction\": {\n \"name\": \"smrtjunction\",\n \"className\": \"SmrtJunction\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtJunction\",\n \"collection\": \"smrtjunctions\",\n \"filePath\": \"packages/core/src/junction.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {},\n \"methods\": {\n \"byLeft\": {\n \"name\": \"byLeft\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionFilterOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<TItem[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"byRight\": {\n \"name\": \"byRight\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"rightId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionFilterOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<TItem[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"attach\": {\n \"name\": \"attach\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"rightId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionAttachOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<TItem>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"detach\": {\n \"name\": \"detach\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"rightId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionFilterOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"setLinks\": {\n \"name\": \"setLinks\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"leftId\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"rightIds\",\n \"type\": \"string[]\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"JunctionAttachOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtCollection\",\n \"extendsTypeArg\": \"TItem\",\n \"exportName\": \"SmrtJunction\",\n \"collectionExportName\": \"SmrtJunctionCollection\"\n },\n \"@happyvertical/smrt-core:SmrtObject\": {\n \"name\": \"smrtobject\",\n \"className\": \"SmrtObject\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtObject\",\n \"collection\": \"smrtobjects\",\n \"filePath\": \"packages/core/src/object.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {\n \"created_at\": {\n \"type\": \"datetime\",\n \"required\": false\n },\n \"updated_at\": {\n \"type\": \"datetime\",\n \"required\": false\n }\n },\n \"methods\": {\n \"markAsPersisted\": {\n \"name\": \"markAsPersisted\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"requireInsertOnSave\": {\n \"name\": \"requireInsertOnSave\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"initialize\": {\n \"name\": \"initialize\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadDataFromDb\": {\n \"name\": \"loadDataFromDb\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"data\",\n \"type\": \"Record<string>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getFields\": {\n \"name\": \"getFields\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<any>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"toJSON\": {\n \"name\": \"toJSON\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"toPlainObject\": {\n \"name\": \"toPlainObject\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"Record<string>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"toPublicJSON\": {\n \"name\": \"toPublicJSON\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"PublicJsonOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Record<string>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getId\": {\n \"name\": \"getId\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getSlug\": {\n \"name\": \"getSlug\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getSavedId\": {\n \"name\": \"getSavedId\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"isSaved\": {\n \"name\": \"isSaved\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"save\": {\n \"name\": \"save\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"classifyConstraintError\": {\n \"name\": \"classifyConstraintError\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"message\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"'unique' | 'not_null' | null\",\n \"isStatic\": true,\n \"isPublic\": true\n },\n \"loadFromId\": {\n \"name\": \"loadFromId\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadFromSlug\": {\n \"name\": \"loadFromSlug\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"is\": {\n \"name\": \"is\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"criteria\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"AiOperationOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"do\": {\n \"name\": \"do\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"instructions\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"options\",\n \"type\": \"AiOperationOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"describe\": {\n \"name\": \"describe\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"AiOperationOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"delete\": {\n \"name\": \"delete\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"isRelatedLoaded\": {\n \"name\": \"isRelatedLoaded\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"boolean\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"_setLoadedRelationship\": {\n \"name\": \"_setLoadedRelationship\",\n \"async\": false,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"value\",\n \"type\": \"any\",\n \"optional\": false\n }\n ],\n \"returnType\": \"void\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadRelated\": {\n \"name\": \"loadRelated\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"LoadRelatedOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<any>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"loadRelatedMany\": {\n \"name\": \"loadRelatedMany\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"LoadRelatedOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<any[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getRelated\": {\n \"name\": \"getRelated\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"opts\",\n \"type\": \"LoadRelatedOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<any>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getAvailableTools\": {\n \"name\": \"getAvailableTools\",\n \"async\": false,\n \"parameters\": [],\n \"returnType\": \"AITool[]\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"executeToolCall\": {\n \"name\": \"executeToolCall\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"toolCall\",\n \"type\": \"ToolCall\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<ToolCallResult>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"remember\": {\n \"name\": \"remember\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recall\": {\n \"name\": \"recall\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"recallAll\": {\n \"name\": \"recallAll\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<Map<string>>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forget\": {\n \"name\": \"forget\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"forgetScope\": {\n \"name\": \"forgetScope\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<number>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"generateEmbeddings\": {\n \"name\": \"generateEmbeddings\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"GenerateEmbeddingsOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"getEmbedding\": {\n \"name\": \"getEmbedding\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"fieldName\",\n \"type\": \"string\",\n \"optional\": false\n },\n {\n \"name\": \"model\",\n \"type\": \"string\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<number[] | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"hasStaleEmbeddings\": {\n \"name\": \"hasStaleEmbeddings\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<boolean>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"clearEmbeddings\": {\n \"name\": \"clearEmbeddings\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<void>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtClass\",\n \"exportName\": \"SmrtObject\",\n \"collectionExportName\": \"SmrtObjectCollection\",\n \"schema\": {\n \"tableName\": \"smrt_objects\",\n \"ddl\": \"CREATE TABLE IF NOT EXISTS \\\"smrt_objects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\n \"columns\": {\n \"id\": {\n \"type\": \"UUID\",\n \"primaryKey\": true,\n \"referenceKind\": \"id\",\n \"notNull\": true\n },\n \"slug\": {\n \"type\": \"TEXT\",\n \"notNull\": true\n },\n \"context\": {\n \"type\": \"TEXT\",\n \"notNull\": true,\n \"default\": \"\"\n },\n \"created_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n },\n \"updated_at\": {\n \"type\": \"TIMESTAMP\",\n \"notNull\": true,\n \"default\": \"current_timestamp\"\n }\n },\n \"indexes\": [\n {\n \"name\": \"smrt_objects_id_idx\",\n \"columns\": [\n \"id\"\n ]\n },\n {\n \"name\": \"smrt_objects_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n }\n ],\n \"version\": \"204bf3c4\"\n }\n },\n \"@happyvertical/smrt-core:SmrtPolymorphicAssociation\": {\n \"name\": \"smrtpolymorphicassociation\",\n \"className\": \"SmrtPolymorphicAssociation\",\n \"qualifiedName\": \"@happyvertical/smrt-core:SmrtPolymorphicAssociation\",\n \"collection\": \"smrtpolymorphicassociations\",\n \"filePath\": \"packages/core/src/polymorphic-association.ts\",\n \"packageName\": \"@happyvertical/smrt-core\",\n \"fields\": {\n \"metaType\": {\n \"type\": \"text\",\n \"required\": true,\n \"_meta\": {\n \"required\": true\n }\n },\n \"metaId\": {\n \"type\": \"text\",\n \"required\": true,\n \"_meta\": {\n \"required\": true\n }\n },\n \"role\": {\n \"type\": \"text\",\n \"required\": true,\n \"_meta\": {\n \"required\": true\n }\n },\n \"sortOrder\": {\n \"type\": \"integer\",\n \"required\": false,\n \"default\": 0\n }\n },\n \"methods\": {\n \"hydrate\": {\n \"name\": \"hydrate\",\n \"async\": true,\n \"parameters\": [],\n \"returnType\": \"Promise<T | null>\",\n \"isStatic\": false,\n \"isPublic\": true\n }\n },\n \"decoratorConfig\": {},\n \"extends\": \"SmrtObject\",\n \"exportName\": \"SmrtPolymorphicAssociation\",\n \"collectionExportName\": \"SmrtPolymorphicAssociationCollection\",\n \"validationRules\": [\n {\n \"field\": \"metaType\",\n \"rule\": \"required\",\n \"fieldType\": \"text\"\n },\n {\n \"field\": \"metaId\",\n \"rule\": \"required\",\n \"fieldType\": \"text\"\n },\n {\n \"field\": \"role\",\n \"rule\": \"required\",\n \"fieldType\": \"text\"\n }\n ]\n }\n },\n \"moduleType\": \"smrt\"\n} as const;\n\nexport default staticManifest;\n"],"mappings":"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"}