@happyvertical/smrt-core 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/AGENTS.md +8 -8
  2. package/agents/change-feed.md +3 -2
  3. package/agents/generators.md +34 -0
  4. package/agents/revision-guard.md +66 -0
  5. package/dist/browser.js +2 -1
  6. package/dist/cascade.d.ts +5 -9
  7. package/dist/cascade.d.ts.map +1 -1
  8. package/dist/cascade.js +65 -30
  9. package/dist/cascade.js.map +1 -1
  10. package/dist/change-feed.d.ts +60 -1
  11. package/dist/change-feed.d.ts.map +1 -1
  12. package/dist/change-feed.js +464 -27
  13. package/dist/change-feed.js.map +1 -1
  14. package/dist/change-signals.d.ts.map +1 -1
  15. package/dist/change-signals.js +13 -11
  16. package/dist/change-signals.js.map +1 -1
  17. package/dist/embedded-write-queue.d.ts +8 -0
  18. package/dist/embedded-write-queue.d.ts.map +1 -1
  19. package/dist/embedded-write-queue.js +12 -2
  20. package/dist/embedded-write-queue.js.map +1 -1
  21. package/dist/generators/cli.d.ts.map +1 -1
  22. package/dist/generators/cli.js +10 -18
  23. package/dist/generators/cli.js.map +1 -1
  24. package/dist/generators/custom-action.d.ts +216 -0
  25. package/dist/generators/custom-action.d.ts.map +1 -1
  26. package/dist/generators/custom-action.js +256 -1
  27. package/dist/generators/custom-action.js.map +1 -1
  28. package/dist/generators/index.d.ts +2 -1
  29. package/dist/generators/index.d.ts.map +1 -1
  30. package/dist/generators/index.js +3 -2
  31. package/dist/generators/mcp.d.ts.map +1 -1
  32. package/dist/generators/mcp.js +14 -39
  33. package/dist/generators/mcp.js.map +1 -1
  34. package/dist/generators/preflight-route.d.ts +151 -0
  35. package/dist/generators/preflight-route.d.ts.map +1 -0
  36. package/dist/generators/preflight-route.js +194 -0
  37. package/dist/generators/preflight-route.js.map +1 -0
  38. package/dist/generators/rest.d.ts +12 -0
  39. package/dist/generators/rest.d.ts.map +1 -1
  40. package/dist/generators/rest.js +14 -15
  41. package/dist/generators/rest.js.map +1 -1
  42. package/dist/generators/tool-schema.d.ts.map +1 -1
  43. package/dist/generators/tool-schema.js +2 -8
  44. package/dist/generators/tool-schema.js.map +1 -1
  45. package/dist/generators.js +3 -2
  46. package/dist/index.d.ts +3 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +7 -4
  49. package/dist/knowledge.d.ts.map +1 -1
  50. package/dist/knowledge.js +283 -35
  51. package/dist/knowledge.js.map +1 -1
  52. package/dist/manifest/static-manifest.d.ts.map +1 -1
  53. package/dist/manifest/static-manifest.js +6 -2
  54. package/dist/manifest/static-manifest.js.map +1 -1
  55. package/dist/manifest/store.js +1 -1
  56. package/dist/manifest/store.js.map +1 -1
  57. package/dist/manifest.json +8 -2
  58. package/dist/object.d.ts +31 -1
  59. package/dist/object.d.ts.map +1 -1
  60. package/dist/object.js +57 -9
  61. package/dist/object.js.map +1 -1
  62. package/dist/registry/framework-base-classes.d.ts +10 -0
  63. package/dist/registry/framework-base-classes.d.ts.map +1 -0
  64. package/dist/registry/framework-base-classes.js +92 -0
  65. package/dist/registry/framework-base-classes.js.map +1 -0
  66. package/dist/registry/schema-builder.d.ts.map +1 -1
  67. package/dist/registry/schema-builder.js +2 -0
  68. package/dist/registry/schema-builder.js.map +1 -1
  69. package/dist/registry/types.d.ts +27 -6
  70. package/dist/registry/types.d.ts.map +1 -1
  71. package/dist/registry.d.ts +1 -0
  72. package/dist/registry.d.ts.map +1 -1
  73. package/dist/registry.js +2 -1
  74. package/dist/registry.js.map +1 -1
  75. package/dist/revision-guard.d.ts +84 -0
  76. package/dist/revision-guard.d.ts.map +1 -0
  77. package/dist/revision-guard.js +120 -0
  78. package/dist/revision-guard.js.map +1 -0
  79. package/dist/scanner/manifest-generator.d.ts +46 -16
  80. package/dist/scanner/manifest-generator.d.ts.map +1 -1
  81. package/dist/scanner/manifest-generator.js +198 -45
  82. package/dist/scanner/manifest-generator.js.map +1 -1
  83. package/dist/smrt-knowledge.json +18 -9
  84. package/dist/system/bootstrap.d.ts.map +1 -1
  85. package/dist/system/bootstrap.js +2 -1
  86. package/dist/system/bootstrap.js.map +1 -1
  87. package/dist/system/schema.d.ts +75 -2
  88. package/dist/system/schema.d.ts.map +1 -1
  89. package/dist/system/schema.js +326 -4
  90. package/dist/system/schema.js.map +1 -1
  91. package/dist/vite-plugin/index.d.ts.map +1 -1
  92. package/dist/vite-plugin/index.js +48 -23
  93. package/dist/vite-plugin/index.js.map +1 -1
  94. package/dist/vite-plugin/sveltekit-generator.d.ts +33 -7
  95. package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
  96. package/dist/vite-plugin/sveltekit-generator.js +88 -17
  97. package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
  98. package/dist/vite-plugin/sync-apply-route.d.ts.map +1 -1
  99. package/dist/vite-plugin/sync-apply-route.js +2 -0
  100. package/dist/vite-plugin/sync-apply-route.js.map +1 -1
  101. package/dist/vite-plugin/web-collections.d.ts.map +1 -1
  102. package/dist/vite-plugin/web-collections.js +28 -5
  103. package/dist/vite-plugin/web-collections.js.map +1 -1
  104. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge.js","names":[],"sources":["../src/knowledge.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';\nimport { basename, join, relative, resolve, sep } from 'node:path';\nimport type {\n DomainKnowledgeAgentSurface,\n DomainKnowledgeConfig,\n DomainKnowledgeField,\n DomainKnowledgeFieldConstraints,\n DomainKnowledgeManifest,\n DomainKnowledgeMethodSignature,\n DomainKnowledgeModuleDoc,\n DomainKnowledgeObject,\n DomainKnowledgeSurface,\n DomainKnowledgeTenant,\n} from '@happyvertical/smrt-types';\nimport type {\n SmartObjectDefinition,\n SmartObjectManifest,\n} from './scanner/types.js';\nimport { toSnakeCase } from './utils/naming.js';\n\n/**\n * Minimal package.json shape consumed by the knowledge builder.\n * `name`/`version` are typed concretely because they flow into the manifest's\n * string-typed metadata fields; everything else is read via `unknown`-accepting\n * helpers (`record()`, `exportKeys()`), so an index signature is sufficient.\n */\nexport interface PackageJsonLike {\n name?: string;\n version?: string;\n [key: string]: unknown;\n}\n\nexport interface BuildDomainKnowledgeOptions {\n manifest: SmartObjectManifest;\n rootDir: string;\n packageJson?: PackageJsonLike;\n manifestPath?: string;\n config?: DomainKnowledgeConfig;\n /**\n * The package's declared view intents and playbooks (#2591), produced by the\n * scanner's agent-surface matcher.\n *\n * Passed in rather than scanned here for one reason: the scanner carries a\n * native parser binary, and `smrt-core`'s main entry is browser-reachable.\n * The Vite plugin already imports the scanner lazily on the Node side and is\n * the one caller that writes this artifact, so it does the scan and hands the\n * result over.\n */\n agentSurface?: DomainKnowledgeAgentSurface;\n}\n\nconst SDK_PACKAGE_NAMES = new Set([\n '@happyvertical/ai',\n '@happyvertical/cache',\n '@happyvertical/documents',\n '@happyvertical/email',\n '@happyvertical/encryption',\n '@happyvertical/files',\n '@happyvertical/geo',\n '@happyvertical/images',\n '@happyvertical/jobs',\n '@happyvertical/json',\n '@happyvertical/logger',\n '@happyvertical/messages',\n '@happyvertical/ocr',\n '@happyvertical/pdf',\n '@happyvertical/projects',\n '@happyvertical/repos',\n '@happyvertical/secrets',\n '@happyvertical/spider',\n '@happyvertical/sql',\n '@happyvertical/utils',\n]);\n\nconst RELATIONSHIP_FIELD_TYPES = new Set([\n 'foreignKey',\n 'crossPackageRef',\n 'oneToMany',\n 'manyToMany',\n]);\n\nconst STANDARD_OPERATIONS = ['list', 'get', 'create', 'update', 'delete'];\n\n/**\n * Markdown inline links whose target is a `.md` file — `[label](agents/x.md)`,\n * tolerating an `#anchor` and a `\"title\"`. This is how a package registers a\n * sibling module doc (#2108): the link in `AGENTS.md` IS the registration, so\n * there is no separate index to drift out of sync.\n */\nconst MARKDOWN_MD_LINK =\n /\\[[^\\]]*\\]\\(\\s*([^)\\s#]+\\.md)(?:#[^)\\s]*)?(?:\\s+\"[^\"]*\")?\\s*\\)/g;\n\n/** `sourceHashes` key prefix for a linked module doc, e.g. `moduleDoc:agents/crm.md`. */\nexport const MODULE_DOC_HASH_PREFIX = 'moduleDoc:';\n\n/**\n * `sourceHashes` key prefix for a module declaring a view intent or playbook,\n * e.g. `agentSurface:src/lib/orders.intents.ts` (#2591).\n */\nexport const AGENT_SURFACE_HASH_PREFIX = 'agentSurface:';\n\n/**\n * Module doc paths linked from a package's `AGENTS.md`, relative to the package\n * root and in document order.\n *\n * Instruction chains are additive (see `scripts/check-agents-chain.mjs`), so an\n * oversized package doc is split into `packages/<pkg>/agents/<module>.md` siblings\n * instead of nested `AGENTS.md` files. Only links resolving to an existing file\n * INSIDE the package are accepted — a cross-package reference such as\n * `packages/affiliates/MIGRATION.md` belongs to that package's own chain and is\n * ignored here.\n */\nexport function resolveAgentModuleDocPaths(\n rootDir: string,\n agentDoc: string | undefined,\n): string[] {\n if (!agentDoc) return [];\n const root = resolve(rootDir);\n const paths: string[] = [];\n for (const match of agentDoc.matchAll(MARKDOWN_MD_LINK)) {\n const target = match[1];\n if (target.includes('://')) continue;\n const absolute = resolve(root, target);\n if (absolute !== root && !absolute.startsWith(root + sep)) continue;\n const relativePath = relative(root, absolute).split(sep).join('/');\n if (relativePath === 'AGENTS.md' || relativePath === 'CLAUDE.md') continue;\n if (paths.includes(relativePath)) continue;\n if (!existsSync(absolute) || !statSync(absolute).isFile()) continue;\n paths.push(relativePath);\n }\n return paths;\n}\n\n/** {@link resolveAgentModuleDocPaths}, with each doc's contents read. */\nexport function readAgentModuleDocs(\n rootDir: string,\n agentDoc: string | undefined,\n): DomainKnowledgeModuleDoc[] {\n return resolveAgentModuleDocPaths(rootDir, agentDoc).map((path) => ({\n path,\n module: basename(path, '.md'),\n content: readFileSync(join(rootDir, path), 'utf8'),\n }));\n}\n\nexport function buildDomainKnowledgeManifest(\n options: BuildDomainKnowledgeOptions,\n): DomainKnowledgeManifest {\n const rootDir = options.rootDir;\n const packageJson = options.packageJson ?? readPackageJson(rootDir) ?? {};\n const packageName = options.manifest.packageName ?? packageJson.name;\n const packageVersion = options.manifest.packageVersion ?? packageJson.version;\n const agentDocPath = existingPath(rootDir, 'AGENTS.md');\n const agentDocContent = agentDocPath\n ? readFileSync(agentDocPath, 'utf8')\n : undefined;\n const includeDocs = options.config?.includeDocs !== false;\n const agentDoc = includeDocs ? agentDocContent : undefined;\n // Module doc PATHS are always resolved so their hashes gate freshness even\n // when doc bodies are excluded from the artifact — same stance as `agents`.\n const moduleDocPaths = resolveAgentModuleDocPaths(rootDir, agentDocContent);\n const allDependencies = {\n ...record(packageJson.dependencies),\n ...record(packageJson.devDependencies),\n ...record(packageJson.peerDependencies),\n };\n const manifestObjects = Object.values(options.manifest.objects).filter(\n (object) => object.decoratorConfig?.knowledge !== false,\n );\n const objects = manifestObjects.map((object) => buildKnowledgeObject(object));\n const surfaces = objects.flatMap((object) => object.surfaces);\n const manifestJson = stableJson(normalizeManifestForHash(options.manifest));\n const agentSurface = normalizeAgentSurface(options.agentSurface);\n\n return {\n schemaVersion: 1,\n sensitiveFieldsExcluded: true,\n generatedAt: new Date().toISOString(),\n packageName,\n packageVersion,\n sourceManifestPath: options.manifestPath\n ? relative(rootDir, options.manifestPath)\n : undefined,\n agentDocPath: agentDocPath ? relative(rootDir, agentDocPath) : undefined,\n sourceHashes: sourceHashes({\n manifest: { content: manifestJson },\n packageJson: fileHashSource(existingPath(rootDir, 'package.json')),\n agents: fileHashSource(agentDocPath),\n ...Object.fromEntries(\n moduleDocPaths.map((path) => [\n `${MODULE_DOC_HASH_PREFIX}${path}`,\n fileHashSource(join(rootDir, path)),\n ]),\n ),\n // A module declaring an intent or a playbook is an authored source of\n // this artifact exactly like `AGENTS.md` is, so editing one must mark the\n // artifact stale (#2591).\n ...Object.fromEntries(\n agentSurfaceSourcePaths(agentSurface).map((path) => [\n `${AGENT_SURFACE_HASH_PREFIX}${path}`,\n fileHashSource(join(rootDir, path)),\n ]),\n ),\n }),\n exports: exportKeys(packageJson.exports),\n dependencies: allDependencies,\n smrtDependencies: Object.keys(allDependencies)\n .filter((dep) => dep.startsWith('@happyvertical/smrt-'))\n .sort(),\n sdkDependencies: Object.keys(allDependencies)\n .filter((dep) => SDK_PACKAGE_NAMES.has(dep))\n .sort(),\n tags: options.config?.tags ?? [],\n summary: options.config?.summary,\n risks: options.config?.risks ?? [],\n objects,\n surfaces,\n prompts:\n options.config?.includePrompts === false ? [] : readPrompts(rootDir),\n relationshipsV2: summarizeRelationships(objects, manifestObjects),\n agentDoc,\n moduleDocs:\n includeDocs && moduleDocPaths.length > 0\n ? readAgentModuleDocs(rootDir, agentDocContent)\n : undefined,\n agentSurface,\n };\n}\n\n/**\n * Drop an agent surface that carries nothing.\n *\n * Keeping the key absent for a package that declares no intent, no playbook,\n * and no diagnostic is what makes this field additive in practice: every\n * checked-in artifact for such a package stays byte-identical to what it\n * emitted before the field existed, so adding emission does not churn the\n * repository's knowledge artifacts.\n */\nfunction normalizeAgentSurface(\n surface: DomainKnowledgeAgentSurface | undefined,\n): DomainKnowledgeAgentSurface | undefined {\n if (!surface) return undefined;\n const empty =\n surface.intents.length === 0 &&\n surface.playbooks.length === 0 &&\n surface.diagnostics.length === 0;\n return empty ? undefined : surface;\n}\n\n/** Every package-relative module that contributed to the emitted surface. */\nfunction agentSurfaceSourcePaths(\n surface: DomainKnowledgeAgentSurface | undefined,\n): string[] {\n if (!surface) return [];\n const paths = new Set<string>();\n for (const intent of surface.intents) paths.add(intent.sourceFile);\n for (const playbook of surface.playbooks) paths.add(playbook.sourceFile);\n for (const diagnostic of surface.diagnostics)\n paths.add(diagnostic.sourceFile);\n return [...paths].sort();\n}\n\nfunction buildKnowledgeObject(\n object: SmartObjectDefinition,\n): DomainKnowledgeObject {\n const knowledge =\n typeof object.decoratorConfig?.knowledge === 'object'\n ? object.decoratorConfig.knowledge\n : {};\n const fields = Object.entries(object.fields)\n .filter(([, field]) => !isSensitiveField(field))\n .map(([name, field]): DomainKnowledgeField => {\n const defaultValue = fieldValue(field, 'default');\n return {\n name,\n type: field.type,\n required: field.required,\n related: field.related,\n columnType: columnType(object, name),\n ...(defaultValue.present ? { default: defaultValue.value } : {}),\n constraints: fieldConstraints(field),\n readonly:\n field.readonly === true || field._meta?.readonly === true\n ? true\n : undefined,\n transient:\n field.transient === true || field._meta?.transient === true\n ? true\n : undefined,\n };\n });\n const sensitiveIdentifiers = sensitiveFieldIdentifiers(object.fields);\n const tenant = sanitizeTenantFacts(\n tenantFacts(object.decoratorConfig?.tenantScoped),\n sensitiveIdentifiers,\n );\n const conflictColumns = object.decoratorConfig?.conflictColumns?.filter(\n (column) => !sensitiveIdentifiers.has(column),\n );\n const relationships = fields\n .filter((field) => RELATIONSHIP_FIELD_TYPES.has(field.type))\n .map((field) => ({\n name: field.name,\n type: field.type,\n required: field.required,\n related: field.related,\n columnType: field.columnType,\n }));\n\n return {\n name: object.className,\n qualifiedName: object.qualifiedName,\n collection: object.collection,\n tableName: object.schema?.tableName,\n packageName: object.packageName,\n extends: object.extends,\n visibility: object.visibility,\n fields,\n relationships,\n methods: Object.keys(object.methods).sort(),\n methodSignatures: methodSignatures(object),\n tenant,\n tableStrategy: object.decoratorConfig?.tableStrategy,\n conflictColumns:\n conflictColumns && conflictColumns.length > 0\n ? conflictColumns\n : undefined,\n surfaces: objectSurfaces(object),\n relationshipFeatures: relationshipFeatures(object, fields),\n tags: knowledge.tags ?? [],\n summary: knowledge.summary,\n risks: knowledge.risks ?? [],\n };\n}\n\nfunction isSensitiveField(field: SmartObjectDefinition['fields'][string]) {\n return field.sensitive === true || field._meta?.sensitive === true;\n}\n\nfunction sensitiveFieldIdentifiers(\n fields: SmartObjectDefinition['fields'],\n): Set<string> {\n return new Set(\n Object.entries(fields)\n .filter(([, field]) => isSensitiveField(field))\n .flatMap(([name]) => [name, toSnakeCase(name), camelToSnake(name)]),\n );\n}\n\nfunction fieldValue(\n field: SmartObjectDefinition['fields'][string],\n key: 'default' | 'min' | 'max' | 'minLength' | 'maxLength',\n): { present: boolean; value: unknown } {\n if (Object.hasOwn(field, key)) {\n return { present: field[key] !== undefined, value: field[key] };\n }\n const value = field._meta?.[key];\n return { present: value !== undefined, value };\n}\n\nfunction fieldConstraints(\n field: SmartObjectDefinition['fields'][string],\n): DomainKnowledgeFieldConstraints | undefined {\n const constraints: DomainKnowledgeFieldConstraints = {};\n for (const key of ['min', 'max', 'minLength', 'maxLength'] as const) {\n const value = fieldValue(field, key);\n if (value.present && typeof value.value === 'number') {\n constraints[key] = value.value;\n }\n }\n const pattern = normalizePattern(\n (field as { pattern?: unknown }).pattern ?? field._meta?.pattern,\n );\n if (pattern !== undefined) constraints.pattern = pattern;\n return Object.keys(constraints).length > 0 ? constraints : undefined;\n}\n\nfunction normalizePattern(pattern: unknown): string | undefined {\n if (typeof pattern === 'string') return pattern;\n if (pattern instanceof RegExp) return pattern.source;\n if (\n pattern &&\n typeof pattern === 'object' &&\n typeof (pattern as { source?: unknown }).source === 'string'\n ) {\n return (pattern as { source: string }).source;\n }\n return undefined;\n}\n\nfunction tenantFacts(\n tenantScoped: SmartObjectDefinition['decoratorConfig']['tenantScoped'],\n): DomainKnowledgeTenant | undefined {\n if (!tenantScoped) return undefined;\n if (tenantScoped === true) {\n return { scoped: true, mode: 'required', field: 'tenantId' };\n }\n return {\n scoped: true,\n mode: tenantScoped.mode ?? 'required',\n field: tenantScoped.field ?? 'tenantId',\n };\n}\n\nfunction sanitizeTenantFacts(\n tenant: DomainKnowledgeTenant | undefined,\n sensitiveIdentifiers: Set<string>,\n): DomainKnowledgeTenant | undefined {\n if (!tenant?.field || !sensitiveIdentifiers.has(tenant.field)) return tenant;\n return { scoped: tenant.scoped, mode: tenant.mode };\n}\n\nfunction methodSignatures(\n object: SmartObjectDefinition,\n): DomainKnowledgeMethodSignature[] | undefined {\n const signatures = Object.values(object.methods)\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((method) => ({\n name: method.name,\n async: method.async || undefined,\n static: method.isStatic || undefined,\n params:\n method.parameters.length > 0\n ? method.parameters.map(\n (parameter) =>\n `${parameter.name}${parameter.optional ? '?' : ''}: ${parameter.type}`,\n )\n : undefined,\n returns: method.returnType || undefined,\n }));\n return signatures.length > 0 ? signatures : undefined;\n}\n\nfunction objectSurfaces(\n object: SmartObjectDefinition,\n): DomainKnowledgeSurface[] {\n return [\n ...configuredSurfaces('api', object),\n ...configuredSurfaces('cli', object),\n ...configuredSurfaces('mcp', object),\n ...aiSurfaces(object),\n ];\n}\n\nfunction configuredSurfaces(\n kind: 'api' | 'cli' | 'mcp',\n object: SmartObjectDefinition,\n): DomainKnowledgeSurface[] {\n const config = object.decoratorConfig?.[kind];\n if (!config) return [];\n const operations = configuredOperations(config);\n return operations.map((operation) => ({\n kind,\n name:\n kind === 'api'\n ? `${object.collection}.${operation}`\n : `${object.className.toLowerCase()}_${operation}`,\n operation,\n objectName: object.qualifiedName ?? object.className,\n path: kind === 'api' ? apiPath(object, operation) : undefined,\n method: kind === 'api' ? apiMethod(operation) : undefined,\n }));\n}\n\nfunction configuredOperations(config: unknown): string[] {\n if (config === true) return [...STANDARD_OPERATIONS];\n if (!config || typeof config !== 'object' || Array.isArray(config)) {\n return [];\n }\n const recordConfig = config as { include?: string[]; exclude?: string[] };\n const base = Array.isArray(recordConfig.include)\n ? recordConfig.include\n : STANDARD_OPERATIONS;\n const excluded = new Set(recordConfig.exclude ?? []);\n return [...new Set(base.filter((operation) => !excluded.has(operation)))];\n}\n\nfunction aiSurfaces(object: SmartObjectDefinition): DomainKnowledgeSurface[] {\n return (object.tools ?? []).map((tool) => ({\n kind: 'ai',\n name: tool.function.name,\n operation: tool.function.name,\n description: tool.function.description,\n objectName: object.qualifiedName ?? object.className,\n }));\n}\n\nfunction apiPath(object: SmartObjectDefinition, operation: string): string {\n const collection = object.decoratorConfig?.api;\n const configuredPath =\n typeof collection === 'object' && typeof collection.path === 'string'\n ? collection.path\n : object.collection.replaceAll('_', '-');\n if (operation === 'list' || operation === 'create') {\n return `/${configuredPath}`;\n }\n if (STANDARD_OPERATIONS.includes(operation)) {\n return `/${configuredPath}/[id]`;\n }\n return `/${configuredPath}/${operation}`;\n}\n\nfunction apiMethod(operation: string): string {\n switch (operation) {\n case 'list':\n case 'get':\n return 'GET';\n case 'create':\n return 'POST';\n case 'update':\n return 'PATCH';\n case 'delete':\n return 'DELETE';\n default:\n return 'POST';\n }\n}\n\nfunction relationshipFeatures(\n object: SmartObjectDefinition,\n fields: DomainKnowledgeField[],\n): string[] {\n const features = new Set<string>();\n for (const field of fields) {\n if (field.type === 'foreignKey') features.add('foreignKey');\n if (field.type === 'crossPackageRef') features.add('crossPackageRef');\n if (field.type === 'oneToMany') features.add('oneToMany');\n if (field.type === 'manyToMany') features.add('manyToMany');\n }\n if (object.extends === 'SmrtJunction') features.add('SmrtJunction');\n if (object.extends === 'SmrtHierarchical') features.add('SmrtHierarchical');\n if (\n object.extends === 'SmrtPolymorphicAssociation' ||\n fields.some((field) => field.name === 'metaType') ||\n fields.some((field) => field.name === 'metaId')\n ) {\n features.add('SmrtPolymorphicAssociation');\n }\n if (\n Object.keys(object.schema?.columns ?? {}).some(\n (name) => object.schema?.columns[name]?.type === 'UUID',\n )\n ) {\n features.add('uuidColumns');\n }\n return [...features].sort();\n}\n\nfunction summarizeRelationships(\n objects: DomainKnowledgeObject[],\n manifestObjects: SmartObjectDefinition[],\n) {\n const fields = objects.flatMap((object) => object.fields);\n return {\n foreignKeyFields: fields.filter((field) => field.type === 'foreignKey')\n .length,\n crossPackageRefFields: fields.filter(\n (field) => field.type === 'crossPackageRef',\n ).length,\n junctionCollections: objects.filter((object) =>\n object.relationshipFeatures.includes('SmrtJunction'),\n ).length,\n hierarchicalObjects: objects.filter((object) =>\n object.relationshipFeatures.includes('SmrtHierarchical'),\n ).length,\n polymorphicAssociations: objects.filter((object) =>\n object.relationshipFeatures.includes('SmrtPolymorphicAssociation'),\n ).length,\n uuidColumns: manifestObjects.reduce(\n (count, object) =>\n count +\n Object.values(object.schema?.columns ?? {}).filter(\n (column) => column.type === 'UUID',\n ).length,\n 0,\n ),\n };\n}\n\nfunction columnType(\n object: SmartObjectDefinition,\n fieldName: string,\n): string | undefined {\n const columnName = camelToSnake(fieldName);\n return object.schema?.columns[columnName]?.type;\n}\n\nfunction readPrompts(\n rootDir: string,\n): Array<{ filePath: string; key?: string }> {\n const srcDir = join(rootDir, 'src');\n if (!existsSync(srcDir)) return [];\n const prompts: Array<{ filePath: string; key?: string }> = [];\n for (const filePath of walkFiles(srcDir)) {\n if (!filePath.endsWith('.ts')) continue;\n const content = readFileSync(filePath, 'utf8');\n if (!content.includes('definePrompt')) continue;\n const keyMatch = content.match(/definePrompt\\s*\\(\\s*['\"`]([^'\"`]+)['\"`]/);\n prompts.push({\n filePath: relative(rootDir, filePath),\n key: keyMatch?.[1],\n });\n }\n return prompts;\n}\n\nfunction walkFiles(dir: string): string[] {\n const files: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (\n entry.name === 'node_modules' ||\n entry.name === 'dist' ||\n entry.name === '.svelte-kit'\n ) {\n continue;\n }\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n files.push(...walkFiles(fullPath));\n } else if (entry.isFile()) {\n files.push(fullPath);\n }\n }\n return files;\n}\n\nfunction sourceHashes(sources: Record<string, HashSource | undefined>) {\n const hashes: Record<string, string> = {};\n for (const [name, source] of Object.entries(sources)) {\n if (!source) continue;\n const content =\n 'content' in source ? source.content : readFileSync(source.path, 'utf8');\n hashes[name] = createHash('sha256').update(content).digest('hex');\n }\n return hashes;\n}\n\ntype HashSource = { content: string } | { path: string };\n\nfunction fileHashSource(path: string | undefined): HashSource | undefined {\n return path ? { path } : undefined;\n}\n\nfunction existingPath(rootDir: string, path: string): string | undefined {\n const fullPath = join(rootDir, path);\n return existsSync(fullPath) ? fullPath : undefined;\n}\n\nfunction readPackageJson(rootDir: string): PackageJsonLike | null {\n const path = join(rootDir, 'package.json');\n if (!existsSync(path)) return null;\n return JSON.parse(readFileSync(path, 'utf8'));\n}\n\nfunction record(value: unknown): Record<string, string> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, string>)\n : {};\n}\n\nfunction exportKeys(exportsField: unknown): string[] {\n if (typeof exportsField === 'string') return ['.'];\n if (\n typeof exportsField !== 'object' ||\n exportsField === null ||\n Array.isArray(exportsField)\n ) {\n return [];\n }\n return Object.keys(exportsField).sort();\n}\n\nfunction camelToSnake(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/[-\\s]+/g, '_')\n .toLowerCase();\n}\n\nfunction normalizeManifestForHash(manifest: SmartObjectManifest): unknown {\n const normalized = JSON.parse(JSON.stringify(manifest)) as Record<\n string,\n unknown\n >;\n delete normalized.timestamp;\n return normalized;\n}\n\nfunction stableJson(value: unknown): string {\n return JSON.stringify(sortJson(value), null, 2);\n}\n\nfunction sortJson(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortJson);\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, entry]) => [key, sortJson(entry)]),\n );\n }\n return value;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"knowledge.js","names":[],"sources":["../src/knowledge.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';\nimport { basename, join, relative, resolve, sep } from 'node:path';\nimport type {\n DomainKnowledgeAgentSurface,\n DomainKnowledgeConfig,\n DomainKnowledgeField,\n DomainKnowledgeFieldConstraints,\n DomainKnowledgeManifest,\n DomainKnowledgeMethodSignature,\n DomainKnowledgeModuleDoc,\n DomainKnowledgeObject,\n DomainKnowledgeSurface,\n DomainKnowledgeTenant,\n} from '@happyvertical/smrt-types';\nimport {\n CRUD_OPERATIONS,\n isCrudOperation,\n isCrudToolAction,\n isFrameworkLifecycleMethod,\n resolveCustomActionMetadata,\n} from './generators/custom-action.js';\nimport { isFrameworkBaseClass } from './registry/framework-base-classes.js';\nimport type {\n SmartObjectDefinition,\n SmartObjectManifest,\n} from './scanner/types.js';\nimport { toSnakeCase } from './utils/naming.js';\n\n/**\n * Minimal package.json shape consumed by the knowledge builder.\n * `name`/`version` are typed concretely because they flow into the manifest's\n * string-typed metadata fields; everything else is read via `unknown`-accepting\n * helpers (`record()`, `exportKeys()`), so an index signature is sufficient.\n */\nexport interface PackageJsonLike {\n name?: string;\n version?: string;\n [key: string]: unknown;\n}\n\nexport interface BuildDomainKnowledgeOptions {\n manifest: SmartObjectManifest;\n rootDir: string;\n packageJson?: PackageJsonLike;\n manifestPath?: string;\n config?: DomainKnowledgeConfig;\n /**\n * The package's declared view intents and playbooks (#2591), produced by the\n * scanner's agent-surface matcher.\n *\n * Passed in rather than scanned here for one reason: the scanner carries a\n * native parser binary, and `smrt-core`'s main entry is browser-reachable.\n * The Vite plugin already imports the scanner lazily on the Node side and is\n * the one caller that writes this artifact, so it does the scan and hands the\n * result over.\n */\n agentSurface?: DomainKnowledgeAgentSurface;\n}\n\nconst SDK_PACKAGE_NAMES = new Set([\n '@happyvertical/ai',\n '@happyvertical/cache',\n '@happyvertical/documents',\n '@happyvertical/email',\n '@happyvertical/encryption',\n '@happyvertical/files',\n '@happyvertical/geo',\n '@happyvertical/images',\n '@happyvertical/jobs',\n '@happyvertical/json',\n '@happyvertical/logger',\n '@happyvertical/messages',\n '@happyvertical/ocr',\n '@happyvertical/pdf',\n '@happyvertical/projects',\n '@happyvertical/repos',\n '@happyvertical/secrets',\n '@happyvertical/spider',\n '@happyvertical/sql',\n '@happyvertical/utils',\n]);\n\nconst RELATIONSHIP_FIELD_TYPES = new Set([\n 'foreignKey',\n 'crossPackageRef',\n 'oneToMany',\n 'manyToMany',\n]);\n\n/**\n * The generated CRUD verbs, derived from the generators' own list so both\n * halves of this projection — which operations are ENUMERATED\n * (`resolveCrudOperations`) and which method names are RESERVED\n * (`reservesCrudName`) — move together. Reading one from `CRUD_OPERATIONS` and\n * the other from a local copy would let a new verb be suppressed as a custom\n * method while never being added as CRUD, dropping the surface entirely.\n */\nconst STANDARD_OPERATIONS: readonly string[] = CRUD_OPERATIONS;\n\n/**\n * Markdown inline links whose target is a `.md` file — `[label](agents/x.md)`,\n * tolerating an `#anchor` and a `\"title\"`. This is how a package registers a\n * sibling module doc (#2108): the link in `AGENTS.md` IS the registration, so\n * there is no separate index to drift out of sync.\n */\nconst MARKDOWN_MD_LINK =\n /\\[[^\\]]*\\]\\(\\s*([^)\\s#]+\\.md)(?:#[^)\\s]*)?(?:\\s+\"[^\"]*\")?\\s*\\)/g;\n\n/** `sourceHashes` key prefix for a linked module doc, e.g. `moduleDoc:agents/crm.md`. */\nexport const MODULE_DOC_HASH_PREFIX = 'moduleDoc:';\n\n/**\n * `sourceHashes` key prefix for a module declaring a view intent or playbook,\n * e.g. `agentSurface:src/lib/orders.intents.ts` (#2591).\n */\nexport const AGENT_SURFACE_HASH_PREFIX = 'agentSurface:';\n\n/**\n * Module doc paths linked from a package's `AGENTS.md`, relative to the package\n * root and in document order.\n *\n * Instruction chains are additive (see `scripts/check-agents-chain.mjs`), so an\n * oversized package doc is split into `packages/<pkg>/agents/<module>.md` siblings\n * instead of nested `AGENTS.md` files. Only links resolving to an existing file\n * INSIDE the package are accepted — a cross-package reference such as\n * `packages/affiliates/MIGRATION.md` belongs to that package's own chain and is\n * ignored here.\n */\nexport function resolveAgentModuleDocPaths(\n rootDir: string,\n agentDoc: string | undefined,\n): string[] {\n if (!agentDoc) return [];\n const root = resolve(rootDir);\n const paths: string[] = [];\n for (const match of agentDoc.matchAll(MARKDOWN_MD_LINK)) {\n const target = match[1];\n if (target.includes('://')) continue;\n const absolute = resolve(root, target);\n if (absolute !== root && !absolute.startsWith(root + sep)) continue;\n const relativePath = relative(root, absolute).split(sep).join('/');\n if (relativePath === 'AGENTS.md' || relativePath === 'CLAUDE.md') continue;\n if (paths.includes(relativePath)) continue;\n if (!existsSync(absolute) || !statSync(absolute).isFile()) continue;\n paths.push(relativePath);\n }\n return paths;\n}\n\n/** {@link resolveAgentModuleDocPaths}, with each doc's contents read. */\nexport function readAgentModuleDocs(\n rootDir: string,\n agentDoc: string | undefined,\n): DomainKnowledgeModuleDoc[] {\n return resolveAgentModuleDocPaths(rootDir, agentDoc).map((path) => ({\n path,\n module: basename(path, '.md'),\n content: readFileSync(join(rootDir, path), 'utf8'),\n }));\n}\n\nexport function buildDomainKnowledgeManifest(\n options: BuildDomainKnowledgeOptions,\n): DomainKnowledgeManifest {\n const rootDir = options.rootDir;\n const packageJson = options.packageJson ?? readPackageJson(rootDir) ?? {};\n const packageName = options.manifest.packageName ?? packageJson.name;\n const packageVersion = options.manifest.packageVersion ?? packageJson.version;\n const agentDocPath = existingPath(rootDir, 'AGENTS.md');\n const agentDocContent = agentDocPath\n ? readFileSync(agentDocPath, 'utf8')\n : undefined;\n const includeDocs = options.config?.includeDocs !== false;\n const agentDoc = includeDocs ? agentDocContent : undefined;\n // Module doc PATHS are always resolved so their hashes gate freshness even\n // when doc bodies are excluded from the artifact — same stance as `agents`.\n const moduleDocPaths = resolveAgentModuleDocPaths(rootDir, agentDocContent);\n const allDependencies = {\n ...record(packageJson.dependencies),\n ...record(packageJson.devDependencies),\n ...record(packageJson.peerDependencies),\n };\n const manifestObjects = Object.values(options.manifest.objects).filter(\n (object) => object.decoratorConfig?.knowledge !== false,\n );\n const objects = manifestObjects.map((object) =>\n buildKnowledgeObject(object, options.manifest),\n );\n const surfaces = objects.flatMap((object) => object.surfaces);\n const manifestJson = stableJson(normalizeManifestForHash(options.manifest));\n const agentSurface = normalizeAgentSurface(options.agentSurface);\n\n return {\n schemaVersion: 1,\n sensitiveFieldsExcluded: true,\n generatedAt: new Date().toISOString(),\n packageName,\n packageVersion,\n sourceManifestPath: options.manifestPath\n ? relative(rootDir, options.manifestPath)\n : undefined,\n agentDocPath: agentDocPath ? relative(rootDir, agentDocPath) : undefined,\n sourceHashes: sourceHashes({\n manifest: { content: manifestJson },\n packageJson: fileHashSource(existingPath(rootDir, 'package.json')),\n agents: fileHashSource(agentDocPath),\n ...Object.fromEntries(\n moduleDocPaths.map((path) => [\n `${MODULE_DOC_HASH_PREFIX}${path}`,\n fileHashSource(join(rootDir, path)),\n ]),\n ),\n // A module declaring an intent or a playbook is an authored source of\n // this artifact exactly like `AGENTS.md` is, so editing one must mark the\n // artifact stale (#2591).\n ...Object.fromEntries(\n agentSurfaceSourcePaths(agentSurface).map((path) => [\n `${AGENT_SURFACE_HASH_PREFIX}${path}`,\n fileHashSource(join(rootDir, path)),\n ]),\n ),\n }),\n exports: exportKeys(packageJson.exports),\n dependencies: allDependencies,\n smrtDependencies: Object.keys(allDependencies)\n .filter((dep) => dep.startsWith('@happyvertical/smrt-'))\n .sort(),\n sdkDependencies: Object.keys(allDependencies)\n .filter((dep) => SDK_PACKAGE_NAMES.has(dep))\n .sort(),\n tags: options.config?.tags ?? [],\n summary: options.config?.summary,\n risks: options.config?.risks ?? [],\n objects,\n surfaces,\n prompts:\n options.config?.includePrompts === false ? [] : readPrompts(rootDir),\n relationshipsV2: summarizeRelationships(objects, manifestObjects),\n agentDoc,\n moduleDocs:\n includeDocs && moduleDocPaths.length > 0\n ? readAgentModuleDocs(rootDir, agentDocContent)\n : undefined,\n agentSurface,\n };\n}\n\n/**\n * Drop an agent surface that carries nothing.\n *\n * Keeping the key absent for a package that declares no intent, no playbook,\n * and no diagnostic is what makes this field additive in practice: every\n * checked-in artifact for such a package stays byte-identical to what it\n * emitted before the field existed, so adding emission does not churn the\n * repository's knowledge artifacts.\n */\nfunction normalizeAgentSurface(\n surface: DomainKnowledgeAgentSurface | undefined,\n): DomainKnowledgeAgentSurface | undefined {\n if (!surface) return undefined;\n const empty =\n surface.intents.length === 0 &&\n surface.playbooks.length === 0 &&\n surface.diagnostics.length === 0;\n return empty ? undefined : surface;\n}\n\n/** Every package-relative module that contributed to the emitted surface. */\nfunction agentSurfaceSourcePaths(\n surface: DomainKnowledgeAgentSurface | undefined,\n): string[] {\n if (!surface) return [];\n const paths = new Set<string>();\n for (const intent of surface.intents) paths.add(intent.sourceFile);\n for (const playbook of surface.playbooks) paths.add(playbook.sourceFile);\n for (const diagnostic of surface.diagnostics)\n paths.add(diagnostic.sourceFile);\n return [...paths].sort();\n}\n\nfunction buildKnowledgeObject(\n object: SmartObjectDefinition,\n manifest: SmartObjectManifest,\n): DomainKnowledgeObject {\n const knowledge =\n typeof object.decoratorConfig?.knowledge === 'object'\n ? object.decoratorConfig.knowledge\n : {};\n const fields = Object.entries(object.fields)\n .filter(([, field]) => !isSensitiveField(field))\n .map(([name, field]): DomainKnowledgeField => {\n const defaultValue = fieldValue(field, 'default');\n return {\n name,\n type: field.type,\n required: field.required,\n related: field.related,\n columnType: columnType(object, name),\n ...(defaultValue.present ? { default: defaultValue.value } : {}),\n constraints: fieldConstraints(field),\n readonly:\n field.readonly === true || field._meta?.readonly === true\n ? true\n : undefined,\n transient:\n field.transient === true || field._meta?.transient === true\n ? true\n : undefined,\n };\n });\n const sensitiveIdentifiers = sensitiveFieldIdentifiers(object.fields);\n const tenant = sanitizeTenantFacts(\n tenantFacts(object.decoratorConfig?.tenantScoped),\n sensitiveIdentifiers,\n );\n const conflictColumns = object.decoratorConfig?.conflictColumns?.filter(\n (column) => !sensitiveIdentifiers.has(column),\n );\n const relationships = fields\n .filter((field) => RELATIONSHIP_FIELD_TYPES.has(field.type))\n .map((field) => ({\n name: field.name,\n type: field.type,\n required: field.required,\n related: field.related,\n columnType: field.columnType,\n }));\n\n return {\n name: object.className,\n qualifiedName: object.qualifiedName,\n collection: object.collection,\n tableName: object.schema?.tableName,\n packageName: object.packageName,\n extends: object.extends,\n visibility: object.visibility,\n fields,\n relationships,\n methods: Object.keys(object.methods).sort(),\n methodSignatures: methodSignatures(object),\n tenant,\n tableStrategy: object.decoratorConfig?.tableStrategy,\n conflictColumns:\n conflictColumns && conflictColumns.length > 0\n ? conflictColumns\n : undefined,\n surfaces: objectSurfaces(object, manifest),\n relationshipFeatures: relationshipFeatures(object, fields),\n tags: knowledge.tags ?? [],\n summary: knowledge.summary,\n risks: knowledge.risks ?? [],\n };\n}\n\nfunction isSensitiveField(field: SmartObjectDefinition['fields'][string]) {\n return field.sensitive === true || field._meta?.sensitive === true;\n}\n\nfunction sensitiveFieldIdentifiers(\n fields: SmartObjectDefinition['fields'],\n): Set<string> {\n return new Set(\n Object.entries(fields)\n .filter(([, field]) => isSensitiveField(field))\n .flatMap(([name]) => [name, toSnakeCase(name), camelToSnake(name)]),\n );\n}\n\nfunction fieldValue(\n field: SmartObjectDefinition['fields'][string],\n key: 'default' | 'min' | 'max' | 'minLength' | 'maxLength',\n): { present: boolean; value: unknown } {\n if (Object.hasOwn(field, key)) {\n return { present: field[key] !== undefined, value: field[key] };\n }\n const value = field._meta?.[key];\n return { present: value !== undefined, value };\n}\n\nfunction fieldConstraints(\n field: SmartObjectDefinition['fields'][string],\n): DomainKnowledgeFieldConstraints | undefined {\n const constraints: DomainKnowledgeFieldConstraints = {};\n for (const key of ['min', 'max', 'minLength', 'maxLength'] as const) {\n const value = fieldValue(field, key);\n if (value.present && typeof value.value === 'number') {\n constraints[key] = value.value;\n }\n }\n const pattern = normalizePattern(\n (field as { pattern?: unknown }).pattern ?? field._meta?.pattern,\n );\n if (pattern !== undefined) constraints.pattern = pattern;\n return Object.keys(constraints).length > 0 ? constraints : undefined;\n}\n\nfunction normalizePattern(pattern: unknown): string | undefined {\n if (typeof pattern === 'string') return pattern;\n if (pattern instanceof RegExp) return pattern.source;\n if (\n pattern &&\n typeof pattern === 'object' &&\n typeof (pattern as { source?: unknown }).source === 'string'\n ) {\n return (pattern as { source: string }).source;\n }\n return undefined;\n}\n\nfunction tenantFacts(\n tenantScoped: SmartObjectDefinition['decoratorConfig']['tenantScoped'],\n): DomainKnowledgeTenant | undefined {\n if (!tenantScoped) return undefined;\n if (tenantScoped === true) {\n return { scoped: true, mode: 'required', field: 'tenantId' };\n }\n return {\n scoped: true,\n mode: tenantScoped.mode ?? 'required',\n field: tenantScoped.field ?? 'tenantId',\n };\n}\n\nfunction sanitizeTenantFacts(\n tenant: DomainKnowledgeTenant | undefined,\n sensitiveIdentifiers: Set<string>,\n): DomainKnowledgeTenant | undefined {\n if (!tenant?.field || !sensitiveIdentifiers.has(tenant.field)) return tenant;\n return { scoped: tenant.scoped, mode: tenant.mode };\n}\n\nfunction methodSignatures(\n object: SmartObjectDefinition,\n): DomainKnowledgeMethodSignature[] | undefined {\n const signatures = Object.values(object.methods)\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((method) => ({\n name: method.name,\n async: method.async || undefined,\n static: method.isStatic || undefined,\n params:\n method.parameters.length > 0\n ? method.parameters.map(\n (parameter) =>\n `${parameter.name}${parameter.optional ? '?' : ''}: ${parameter.type}`,\n )\n : undefined,\n returns: method.returnType || undefined,\n }));\n return signatures.length > 0 ? signatures : undefined;\n}\n\nfunction objectSurfaces(\n object: SmartObjectDefinition,\n manifest: SmartObjectManifest,\n): DomainKnowledgeSurface[] {\n return [\n ...configuredSurfaces('api', object, manifest),\n ...configuredSurfaces('cli', object, manifest),\n ...configuredSurfaces('mcp', object, manifest),\n ...aiSurfaces(object),\n ];\n}\n\nfunction configuredSurfaces(\n kind: 'api' | 'cli' | 'mcp',\n object: SmartObjectDefinition,\n manifest: SmartObjectManifest,\n): DomainKnowledgeSurface[] {\n const config = object.decoratorConfig?.[kind];\n // NOTE: the `cli` projection models core's `CLIGenerator`, which reserves a\n // CRUD verb unconditionally. That is NOT the shipped local CLI:\n // `@happyvertical/smrt-cli`'s generator reserves one only where the CRUD\n // command is emitted (each of its commands carries its own handler), so with\n // `cli: { include: ['list', 'get'] }` a public `create()` is a reachable\n // `${object}:create` there that this projection does not report.\n //\n // Retargeting this projection at the shipped binary is tracked on #2664.\n // That is a CONTRACT CHANGE rather than a cleanup: the generators genuinely\n // disagree, so `smrt-knowledge.json` snapshots would move. Predates #2646.\n const collectionClass = isSurfaceCollectionClass(manifest, object);\n const operations = configuredOperations(kind, object, config, manifest);\n return operations.map((operation) => {\n const route =\n kind === 'api' && !STANDARD_OPERATIONS.includes(operation)\n ? apiCustomRoute(object, operation, collectionClass)\n : undefined;\n return {\n kind,\n name: surfaceName(kind, object, operation),\n operation,\n objectName: object.qualifiedName ?? object.className,\n path: kind === 'api' ? apiPath(object, operation, route) : undefined,\n method: kind === 'api' ? apiMethod(operation, route) : undefined,\n };\n });\n}\n\n/**\n * `MCPGenerator.buildCustomActionTool()` registers a custom-action tool as\n * `` `${lowerName}_${methodName}`.toLowerCase() `` — lowercasing the WHOLE\n * joined string, not just the object-name prefix. A CRUD verb is already\n * lowercase so this is a no-op there, but a camelCase custom method name\n * (`findByDimensions`) would otherwise report a surface `name` the real tool\n * is never registered under. `CLIGenerator.listCommands()` does not\n * lowercase the method half of its command string, so `cli` keeps the\n * operation as-authored.\n *\n * Note the shapes differ from the transports' own: a `cli` surface `name`\n * here is `object_operation`, while the command a user types is\n * `object:operation`. `operation` is the field to correlate on.\n */\nfunction surfaceName(\n kind: 'api' | 'cli' | 'mcp',\n object: SmartObjectDefinition,\n operation: string,\n): string {\n if (kind === 'api') return `${object.collection}.${operation}`;\n const name = `${object.className.toLowerCase()}_${operation}`;\n return kind === 'mcp' ? name.toLowerCase() : name;\n}\n\n/**\n * A hand-written `SmrtCollection` subclass (`class WidgetCollection extends\n * SmrtCollection<Widget>`) is discovered structurally by the scanner and\n * lands in the manifest even without its own `@smrt()` decorator, so it never\n * registers with `ObjectRegistry`. `MCPGenerator`/`CLIGenerator` iterate\n * `ObjectRegistry`, not the manifest, so such a class never gets its own\n * MCP tools or CLI commands — only its collection-scoped custom actions get\n * REST routes. Reporting full CRUD for it here would over-report a surface\n * that does not exist, trading the #2619 under-report for a new false\n * positive.\n *\n * A deeper subclass (`SpecialCollection extends WidgetCollection`) carries no\n * `extendsTypeArg` of its own, so this walks the extends chain through the\n * manifest — mirroring `isCollectionManifestClass` in\n * `vite-plugin/web-collections.ts` (kept as a separate, lean implementation\n * here rather than imported: that module pulls in the full SvelteKit route\n * generator transitively, which would balloon the standalone `./knowledge`\n * build entry for a ~15-line check).\n */\nfunction isSurfaceCollectionClass(\n manifest: SmartObjectManifest,\n object: SmartObjectDefinition,\n seen: Set<string> = new Set(),\n): boolean {\n // Truthy check (not `!== undefined`) mirrors the scanner: a non-generic\n // base emitting `extendsTypeArg: null` must not be misread as a collection.\n if (object.extends === 'SmrtCollection' || object.extendsTypeArg) {\n return true;\n }\n const parentName = object.extendsQualified || object.extends;\n if (!parentName || seen.has(parentName)) return false;\n seen.add(parentName);\n const parent = findManifestObjectByName(manifest, parentName, object);\n return parent ? isSurfaceCollectionClass(manifest, parent, seen) : false;\n}\n\nfunction findManifestObjectByName(\n manifest: SmartObjectManifest,\n name: string,\n owner: SmartObjectDefinition,\n): SmartObjectDefinition | undefined {\n const entries = Object.entries(manifest.objects);\n if (name.includes(':')) {\n const exact = entries.find(\n ([key, candidate]) => (candidate.qualifiedName ?? key) === name,\n );\n if (exact) return exact[1];\n }\n // Prefer a same-package parent before falling back to a bare simple name:\n // an aggregated manifest can carry several classes sharing one simple name,\n // and resolving the wrong one misclassifies the collection-class carve-out.\n const ownerKey = entries.find(([, candidate]) => candidate === owner)?.[0];\n const ownerPackage = manifestObjectPackage(owner, ownerKey);\n if (ownerPackage) {\n const packageLocal = entries.find(\n ([key, candidate]) =>\n manifestObjectPackage(candidate, key) === ownerPackage &&\n candidate.className === name,\n );\n if (packageLocal) return packageLocal[1];\n }\n return entries.find(([, candidate]) => candidate.className === name)?.[1];\n}\n\n/**\n * An object's owning package. `packageName` is optional on\n * `SmartObjectDefinition` (older manifests and hand-built fixtures omit it),\n * so fall back to the package half of the qualified name — and, when that is\n * absent too, of the manifest key, which is qualified for every entry the\n * scanner writes. Mirrors `manifestObjectPackage` in\n * `vite-plugin/web-collections.ts`, key fallback included: without it an\n * entry carrying only a qualified key resolves no package at all, the\n * same-package preference is skipped, and a duplicate simple name can pick\n * the wrong parent.\n */\nfunction manifestObjectPackage(\n object: SmartObjectDefinition,\n manifestKey?: string,\n): string | undefined {\n if (object.packageName) return object.packageName;\n const qualifiedName = object.qualifiedName ?? manifestKey;\n const separator = qualifiedName?.lastIndexOf(':') ?? -1;\n return separator > 0 ? qualifiedName?.slice(0, separator) : undefined;\n}\n\n/**\n * Operations exposed for one object's `api`/`cli`/`mcp` surface, derived from\n * the same defaults `APIGenerator`/`CLIGenerator`/`MCPGenerator` apply rather\n * than from the presence of a config key (#2619): an omitted config is full\n * CRUD, not a closed surface — an `include` list, when present, is the\n * COMPLETE allowlist for custom methods too; without one, every public\n * method not explicitly excluded is exposed by default. Only `config ===\n * false` closes the surface entirely.\n *\n * Custom (non-CRUD, public) method gating is NOT identical across the three\n * kinds. `CLIGenerator.listCommands()`/`assertCommandExposed()` additionally\n * refuse a framework lifecycle method (`save`, `initialize`, ...) even when a\n * class declares its own override — it is the mechanism behind generated\n * CRUD, not a distinct action (#2638) — and `resolveCustomMethodNames()`\n * below mirrors that same `isFrameworkLifecycleMethod()` check for\n * `kind === 'cli'` only (#2657). `api`/`mcp` remain ungated on this: neither\n * generator changed in #2650, the mcp.ts wiring is separate #2638 scope still\n * pending, and the api-surface fix is a PR #2651 recommendation, not yet\n * implemented.\n *\n * This `cli` projection models `CLIGenerator` (`generators/cli.ts`), not the\n * shipped local CLI transport (`@happyvertical/smrt-cli`'s\n * `cli-generator.ts`, the `smrt <object>:<action>` binary): that generator\n * does not gate on `isFrameworkLifecycleMethod()` today, so a locally\n * overridden lifecycle method the artifact now reports as absent can still\n * be invoked there. Retargeting this projection at the shipped binary is a\n * contract change tracked on #2664, not part of this fix.\n */\nfunction configuredOperations(\n kind: 'api' | 'cli' | 'mcp',\n object: SmartObjectDefinition,\n config: unknown,\n manifest: SmartObjectManifest,\n): string[] {\n if (config === false) return [];\n // The framework's own abstract base classes (SmrtObject, SmrtCollection,\n // ...) are scaffolding, not resources: MCPGenerator/CLIGenerator/route\n // generation all skip them by class identity now (#2642), independent of\n // their `decoratorConfig: {}` shape, so this mirrors the same shared\n // check rather than reporting a synthetic surface for them.\n if (isFrameworkBaseClass(object.className, object.packageName)) return [];\n const collectionClass = isSurfaceCollectionClass(manifest, object);\n const crud = collectionClass ? [] : resolveCrudOperations(config);\n const custom = resolveCustomMethodNames(\n Object.entries(object.methods),\n config,\n kind,\n );\n // REST additionally refuses a custom action whose receiver cannot exist —\n // a collection class emits only collection-scoped routes, and a model class\n // warns and skips a collection-scoped non-static method. Reporting one\n // would advertise a route `generateRoutesForObject` never writes.\n const eligible =\n kind === 'api'\n ? custom.filter(\n (operation) =>\n apiCustomRoute(object, operation, collectionClass) !== undefined,\n )\n : custom;\n return [...crud, ...eligible];\n}\n\nfunction resolveCrudOperations(config: unknown): string[] {\n const { include, exclude } = includeExcludeConfig(config);\n const base = include\n ? STANDARD_OPERATIONS.filter((operation) => include.includes(operation))\n : [...STANDARD_OPERATIONS];\n if (!exclude || exclude.length === 0) return base;\n const excluded = new Set(exclude);\n return base.filter((operation) => !excluded.has(operation));\n}\n\nfunction resolveCustomMethodNames(\n methods: Iterable<[string, { isPublic?: boolean }]>,\n config: unknown,\n kind: 'api' | 'cli' | 'mcp',\n): string[] {\n const { include, exclude } = includeExcludeConfig(config);\n const excluded = new Set(exclude ?? []);\n const names: string[] = [];\n for (const [name, method] of methods) {\n if (reservesCrudName(kind, name)) continue;\n // A framework lifecycle method (save/initialize/...) is never a custom\n // CLI action, even when a class declares its own override — it is the\n // mechanism behind generated CRUD, not a distinct operation, matching\n // CLIGenerator's own isFrameworkLifecycleMethod() gate (#2657). `api`\n // and `mcp` are deliberately left alone — see configuredOperations'\n // doc comment above.\n if (kind === 'cli' && isFrameworkLifecycleMethod(name)) continue;\n if (!method.isPublic) continue;\n if (excluded.has(name)) continue;\n if (include !== undefined && !include.includes(name)) continue;\n names.push(name);\n }\n return names;\n}\n\n/**\n * Whether `kind` reserves `name` for its generated CRUD operation, so the\n * method behind it is not reported as a distinct surface.\n *\n * MCP folds case: its tool ids are lowercased whole\n * (`` `${object}_${method}`.toLowerCase() ``), so a method named `List` lands on\n * the `${object}_list` identifier the CRUD tool already owns and\n * `MCPGenerator` emits no separate tool for it (#2646). REST and the CLI keep\n * the declared casing in their route/command names, so only an exact match is\n * reserved there.\n *\n * Reads the emitters' own predicates rather than re-testing the verb list, and\n * `STANDARD_OPERATIONS` derives from `CRUD_OPERATIONS`, so a change to the\n * shared list reaches both halves of this projection together.\n */\nfunction reservesCrudName(kind: 'api' | 'cli' | 'mcp', name: string): boolean {\n return kind === 'mcp' ? isCrudToolAction(name) : isCrudOperation(name);\n}\n\nfunction includeExcludeConfig(config: unknown): {\n include?: string[];\n exclude?: string[];\n} {\n if (typeof config !== 'object' || config === null || Array.isArray(config)) {\n return {};\n }\n // A non-array `include`/`exclude` is treated as unset rather than\n // throwing later on `.includes()` — mirrors the same defensive stance\n // `shouldIncludeInApi` in `vite-plugin/sveltekit-generator.ts` takes for\n // a scanned decorator config that failed to resolve to an array.\n const record = config as { include?: unknown; exclude?: unknown };\n return {\n include: Array.isArray(record.include) ? record.include : undefined,\n exclude: Array.isArray(record.exclude) ? record.exclude : undefined,\n };\n}\n\nfunction aiSurfaces(object: SmartObjectDefinition): DomainKnowledgeSurface[] {\n return (object.tools ?? []).map((tool) => ({\n kind: 'ai',\n name: tool.function.name,\n operation: tool.function.name,\n description: tool.function.description,\n objectName: object.qualifiedName ?? object.className,\n }));\n}\n\n/** Route facts for one custom action, as `generateRoutesForObject` emits it. */\ninterface ApiCustomRoute {\n scope: 'item' | 'collection';\n segments: string[];\n method: string;\n}\n\n/**\n * Resolve a custom (non-CRUD) action's REST route the way the generator does,\n * or `undefined` when no route is emitted for it at all.\n *\n * A custom action's path is NOT `/collection/action`: `generateRoutesForObject`\n * nests an item-scoped action under `[id]`, and an instance method defaults to\n * item scope. Reporting the collection-shaped path for every public instance\n * method would advertise endpoints that do not exist — the exact failure this\n * projection exists to avoid. Scope comes from the shared\n * `resolveCustomActionMetadata`, the same resolver the REST, CLI, MCP, and\n * WebMCP paths use, so a `routes` override cannot drift between them.\n *\n * `kebabRoutes` is a Vite-plugin option rather than manifest data, so an\n * explicit `routes[action].path` is honored but the generator's optional\n * kebab-casing of a derived segment is not visible here.\n */\nfunction apiCustomRoute(\n object: SmartObjectDefinition,\n operation: string,\n collectionClass: boolean,\n): ApiCustomRoute | undefined {\n const method = object.methods[operation];\n const apiConfig = object.decoratorConfig?.api;\n const defaultScope: 'item' | 'collection' =\n collectionClass || method?.isStatic ? 'collection' : 'item';\n const scope = resolveActionScope(operation, method, apiConfig, defaultScope);\n\n // Mirrors the generator's own skips: a collection class emits only\n // collection-scoped routes, and a model class warns and skips a\n // collection-scoped non-static method (no receiver to bind).\n if (collectionClass) {\n if (scope !== 'collection') return undefined;\n } else if (scope === 'collection' && !method?.isStatic) {\n return undefined;\n }\n\n const route = customRouteConfig(apiConfig, operation);\n const overridden =\n typeof route?.path === 'string'\n ? route.path\n .split('/')\n .map((segment) => segment.trim())\n .filter(Boolean)\n : [];\n return {\n scope,\n segments: overridden.length > 0 ? overridden : [operation],\n method: normalizeApiMethod(route?.method),\n };\n}\n\n/**\n * The shared resolver validates as it resolves — a `routes` entry declaring\n * `effect: 'read'` on a PUT/PATCH/DELETE route throws by design. This\n * projection reads untrusted scanned config and must not fail the whole\n * knowledge build for one malformed action (same defensive stance as\n * {@link includeExcludeConfig}), so fall back to the receiver the method\n * itself dictates — which a route-only override cannot change anyway.\n */\nfunction resolveActionScope(\n operation: string,\n method: SmartObjectDefinition['methods'][string] | undefined,\n apiConfig: unknown,\n defaultScope: 'item' | 'collection',\n): 'item' | 'collection' {\n try {\n return resolveCustomActionMetadata({\n actionName: operation,\n method,\n apiConfig,\n defaultScope,\n }).scope;\n } catch {\n return defaultScope;\n }\n}\n\nfunction customRouteConfig(\n apiConfig: unknown,\n operation: string,\n): { path?: unknown; method?: unknown } | undefined {\n if (typeof apiConfig !== 'object' || apiConfig === null) return undefined;\n const routes = (apiConfig as { routes?: unknown }).routes;\n if (typeof routes !== 'object' || routes === null) return undefined;\n const route = (routes as Record<string, unknown>)[operation];\n return typeof route === 'object' && route !== null\n ? (route as { path?: unknown; method?: unknown })\n : undefined;\n}\n\n/** Mirrors `normalizeApiHttpMethod` in `vite-plugin/sveltekit-generator.ts`. */\nfunction normalizeApiMethod(method: unknown): string {\n const normalized =\n typeof method === 'string' ? method.toUpperCase() : undefined;\n switch (normalized) {\n case 'GET':\n case 'POST':\n case 'PUT':\n case 'PATCH':\n case 'DELETE':\n return normalized;\n default:\n return 'POST';\n }\n}\n\n/**\n * The collection segment of a generated REST route.\n *\n * `generateRoutesForObject` builds its route directory from\n * `objectDef.collection` verbatim, and the runtime dispatcher in\n * `generators/rest.ts` matches the URL segment against `info.collection`\n * verbatim, so this reports that and nothing else (#2630).\n *\n * In particular it does NOT read `api.path`, which configures a different\n * surface: `@happyvertical/smrt-agents`' own agent-facing route map derives\n * `api.path ?? tableName.replace(/_/g, '-')`. Honoring it here produced a\n * hybrid — `api.path` over `collection` — that matched neither transport and\n * named endpoints that 404 on both.\n */\nfunction apiCollectionSegment(object: SmartObjectDefinition): string {\n return object.collection;\n}\n\nfunction apiPath(\n object: SmartObjectDefinition,\n operation: string,\n route?: ApiCustomRoute,\n): string {\n const configuredPath = apiCollectionSegment(object);\n if (route) {\n const base =\n route.scope === 'collection'\n ? `/${configuredPath}`\n : `/${configuredPath}/[id]`;\n return `${base}/${route.segments.join('/')}`;\n }\n if (operation === 'list' || operation === 'create') {\n return `/${configuredPath}`;\n }\n if (STANDARD_OPERATIONS.includes(operation)) {\n return `/${configuredPath}/[id]`;\n }\n return `/${configuredPath}/${operation}`;\n}\n\nfunction apiMethod(operation: string, route?: ApiCustomRoute): string {\n if (route) return route.method;\n switch (operation) {\n case 'list':\n case 'get':\n return 'GET';\n case 'create':\n return 'POST';\n case 'update':\n return 'PATCH';\n case 'delete':\n return 'DELETE';\n default:\n return 'POST';\n }\n}\n\nfunction relationshipFeatures(\n object: SmartObjectDefinition,\n fields: DomainKnowledgeField[],\n): string[] {\n const features = new Set<string>();\n for (const field of fields) {\n if (field.type === 'foreignKey') features.add('foreignKey');\n if (field.type === 'crossPackageRef') features.add('crossPackageRef');\n if (field.type === 'oneToMany') features.add('oneToMany');\n if (field.type === 'manyToMany') features.add('manyToMany');\n }\n if (object.extends === 'SmrtJunction') features.add('SmrtJunction');\n if (object.extends === 'SmrtHierarchical') features.add('SmrtHierarchical');\n if (\n object.extends === 'SmrtPolymorphicAssociation' ||\n fields.some((field) => field.name === 'metaType') ||\n fields.some((field) => field.name === 'metaId')\n ) {\n features.add('SmrtPolymorphicAssociation');\n }\n if (\n Object.keys(object.schema?.columns ?? {}).some(\n (name) => object.schema?.columns[name]?.type === 'UUID',\n )\n ) {\n features.add('uuidColumns');\n }\n return [...features].sort();\n}\n\nfunction summarizeRelationships(\n objects: DomainKnowledgeObject[],\n manifestObjects: SmartObjectDefinition[],\n) {\n const fields = objects.flatMap((object) => object.fields);\n return {\n foreignKeyFields: fields.filter((field) => field.type === 'foreignKey')\n .length,\n crossPackageRefFields: fields.filter(\n (field) => field.type === 'crossPackageRef',\n ).length,\n junctionCollections: objects.filter((object) =>\n object.relationshipFeatures.includes('SmrtJunction'),\n ).length,\n hierarchicalObjects: objects.filter((object) =>\n object.relationshipFeatures.includes('SmrtHierarchical'),\n ).length,\n polymorphicAssociations: objects.filter((object) =>\n object.relationshipFeatures.includes('SmrtPolymorphicAssociation'),\n ).length,\n uuidColumns: manifestObjects.reduce(\n (count, object) =>\n count +\n Object.values(object.schema?.columns ?? {}).filter(\n (column) => column.type === 'UUID',\n ).length,\n 0,\n ),\n };\n}\n\nfunction columnType(\n object: SmartObjectDefinition,\n fieldName: string,\n): string | undefined {\n const columnName = camelToSnake(fieldName);\n return object.schema?.columns[columnName]?.type;\n}\n\nfunction readPrompts(\n rootDir: string,\n): Array<{ filePath: string; key?: string }> {\n const srcDir = join(rootDir, 'src');\n if (!existsSync(srcDir)) return [];\n const prompts: Array<{ filePath: string; key?: string }> = [];\n for (const filePath of walkFiles(srcDir)) {\n if (!filePath.endsWith('.ts')) continue;\n const content = readFileSync(filePath, 'utf8');\n if (!content.includes('definePrompt')) continue;\n const keyMatch = content.match(/definePrompt\\s*\\(\\s*['\"`]([^'\"`]+)['\"`]/);\n prompts.push({\n filePath: relative(rootDir, filePath),\n key: keyMatch?.[1],\n });\n }\n return prompts;\n}\n\nfunction walkFiles(dir: string): string[] {\n const files: string[] = [];\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (\n entry.name === 'node_modules' ||\n entry.name === 'dist' ||\n entry.name === '.svelte-kit'\n ) {\n continue;\n }\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n files.push(...walkFiles(fullPath));\n } else if (entry.isFile()) {\n files.push(fullPath);\n }\n }\n return files;\n}\n\nfunction sourceHashes(sources: Record<string, HashSource | undefined>) {\n const hashes: Record<string, string> = {};\n for (const [name, source] of Object.entries(sources)) {\n if (!source) continue;\n const content =\n 'content' in source ? source.content : readFileSync(source.path, 'utf8');\n hashes[name] = createHash('sha256').update(content).digest('hex');\n }\n return hashes;\n}\n\ntype HashSource = { content: string } | { path: string };\n\nfunction fileHashSource(path: string | undefined): HashSource | undefined {\n return path ? { path } : undefined;\n}\n\nfunction existingPath(rootDir: string, path: string): string | undefined {\n const fullPath = join(rootDir, path);\n return existsSync(fullPath) ? fullPath : undefined;\n}\n\nfunction readPackageJson(rootDir: string): PackageJsonLike | null {\n const path = join(rootDir, 'package.json');\n if (!existsSync(path)) return null;\n return JSON.parse(readFileSync(path, 'utf8'));\n}\n\nfunction record(value: unknown): Record<string, string> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, string>)\n : {};\n}\n\nfunction exportKeys(exportsField: unknown): string[] {\n if (typeof exportsField === 'string') return ['.'];\n if (\n typeof exportsField !== 'object' ||\n exportsField === null ||\n Array.isArray(exportsField)\n ) {\n return [];\n }\n return Object.keys(exportsField).sort();\n}\n\nfunction camelToSnake(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, '$1_$2')\n .replace(/[-\\s]+/g, '_')\n .toLowerCase();\n}\n\nfunction normalizeManifestForHash(manifest: SmartObjectManifest): unknown {\n const normalized = JSON.parse(JSON.stringify(manifest)) as Record<\n string,\n unknown\n >;\n delete normalized.timestamp;\n return normalized;\n}\n\nfunction stableJson(value: unknown): string {\n return JSON.stringify(sortJson(value), null, 2);\n}\n\nfunction sortJson(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sortJson);\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, entry]) => [key, sortJson(entry)]),\n );\n }\n return value;\n}\n"],"mappings":";;;;;;;AA4DA,IAAM,oCAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,IAAM,2CAA2B,IAAI,IAAI;CACvC;CACA;CACA;CACA;AACF,CAAC;;;;;;;;;AAUD,IAAM,sBAAyC;;;;;;;AAQ/C,IAAM,mBACJ;;AAGF,IAAa,yBAAyB;;;;;AAMtC,IAAa,4BAA4B;;;;;;;;;;;;AAazC,SAAgB,2BACd,SACA,UACU;CACV,IAAI,CAAC,UAAU,OAAO,CAAC;CACvB,MAAM,OAAO,QAAQ,OAAO;CAC5B,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,SAAS,SAAS,SAAS,gBAAgB,GAAG;EACvD,MAAM,SAAS,MAAM;EACrB,IAAI,OAAO,SAAS,KAAK,GAAG;EAC5B,MAAM,WAAW,QAAQ,MAAM,MAAM;EACrC,IAAI,aAAa,QAAQ,CAAC,SAAS,WAAW,OAAO,GAAG,GAAG;EAC3D,MAAM,eAAe,SAAS,MAAM,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;EACjE,IAAI,iBAAiB,eAAe,iBAAiB,aAAa;EAClE,IAAI,MAAM,SAAS,YAAY,GAAG;EAClC,IAAI,CAAC,WAAW,QAAQ,KAAK,CAAC,SAAS,QAAQ,CAAC,CAAC,OAAO,GAAG;EAC3D,MAAM,KAAK,YAAY;CACzB;CACA,OAAO;AACT;;AAGA,SAAgB,oBACd,SACA,UAC4B;CAC5B,OAAO,2BAA2B,SAAS,QAAQ,CAAC,CAAC,KAAK,UAAU;EAClE;EACA,QAAQ,SAAS,MAAM,KAAK;EAC5B,SAAS,aAAa,KAAK,SAAS,IAAI,GAAG,MAAM;CACnD,EAAE;AACJ;AAEA,SAAgB,6BACd,SACyB;CACzB,MAAM,UAAU,QAAQ;CACxB,MAAM,cAAc,QAAQ,eAAe,gBAAgB,OAAO,KAAK,CAAC;CACxE,MAAM,cAAc,QAAQ,SAAS,eAAe,YAAY;CAChE,MAAM,iBAAiB,QAAQ,SAAS,kBAAkB,YAAY;CACtE,MAAM,eAAe,aAAa,SAAS,WAAW;CACtD,MAAM,kBAAkB,eACpB,aAAa,cAAc,MAAM,IACjC,KAAA;CACJ,MAAM,cAAc,QAAQ,QAAQ,gBAAgB;CACpD,MAAM,WAAW,cAAc,kBAAkB,KAAA;CAGjD,MAAM,iBAAiB,2BAA2B,SAAS,eAAe;CAC1E,MAAM,kBAAkB;EACtB,GAAG,OAAO,YAAY,YAAY;EAClC,GAAG,OAAO,YAAY,eAAe;EACrC,GAAG,OAAO,YAAY,gBAAgB;CACxC;CACA,MAAM,kBAAkB,OAAO,OAAO,QAAQ,SAAS,OAAO,CAAC,CAAC,QAC7D,WAAW,OAAO,iBAAiB,cAAc,KACpD;CACA,MAAM,UAAU,gBAAgB,KAAK,WACnC,qBAAqB,QAAQ,QAAQ,QAAQ,CAC/C;CACA,MAAM,WAAW,QAAQ,SAAS,WAAW,OAAO,QAAQ;CAC5D,MAAM,eAAe,WAAW,yBAAyB,QAAQ,QAAQ,CAAC;CAC1E,MAAM,eAAe,sBAAsB,QAAQ,YAAY;CAE/D,OAAO;EACL,eAAe;EACf,yBAAyB;EACzB,8BAAa,IAAI,KAAK,EAAA,CAAE,YAAY;EACpC;EACA;EACA,oBAAoB,QAAQ,eACxB,SAAS,SAAS,QAAQ,YAAY,IACtC,KAAA;EACJ,cAAc,eAAe,SAAS,SAAS,YAAY,IAAI,KAAA;EAC/D,cAAc,aAAa;GACzB,UAAU,EAAE,SAAS,aAAa;GAClC,aAAa,eAAe,aAAa,SAAS,cAAc,CAAC;GACjE,QAAQ,eAAe,YAAY;GACnC,GAAG,OAAO,YACR,eAAe,KAAK,SAAS,CAC3B,GAAG,yBAAyB,QAC5B,eAAe,KAAK,SAAS,IAAI,CAAC,CACpC,CAAC,CACH;GAIA,GAAG,OAAO,YACR,wBAAwB,YAAY,CAAC,CAAC,KAAK,SAAS,CAClD,GAAG,4BAA4B,QAC/B,eAAe,KAAK,SAAS,IAAI,CAAC,CACpC,CAAC,CACH;EACF,CAAC;EACD,SAAS,WAAW,YAAY,OAAO;EACvC,cAAc;EACd,kBAAkB,OAAO,KAAK,eAAe,CAAC,CAC3C,QAAQ,QAAQ,IAAI,WAAW,sBAAsB,CAAC,CAAC,CACvD,KAAK;EACR,iBAAiB,OAAO,KAAK,eAAe,CAAC,CAC1C,QAAQ,QAAQ,kBAAkB,IAAI,GAAG,CAAC,CAAC,CAC3C,KAAK;EACR,MAAM,QAAQ,QAAQ,QAAQ,CAAC;EAC/B,SAAS,QAAQ,QAAQ;EACzB,OAAO,QAAQ,QAAQ,SAAS,CAAC;EACjC;EACA;EACA,SACE,QAAQ,QAAQ,mBAAmB,QAAQ,CAAC,IAAI,YAAY,OAAO;EACrE,iBAAiB,uBAAuB,SAAS,eAAe;EAChE;EACA,YACE,eAAe,eAAe,SAAS,IACnC,oBAAoB,SAAS,eAAe,IAC5C,KAAA;EACN;CACF;AACF;;;;;;;;;;AAWA,SAAS,sBACP,SACyC;CACzC,IAAI,CAAC,SAAS,OAAO,KAAA;CAKrB,OAHE,QAAQ,QAAQ,WAAW,KAC3B,QAAQ,UAAU,WAAW,KAC7B,QAAQ,YAAY,WAAW,IAClB,KAAA,IAAY;AAC7B;;AAGA,SAAS,wBACP,SACU;CACV,IAAI,CAAC,SAAS,OAAO,CAAC;CACtB,MAAM,wBAAQ,IAAI,IAAY;CAC9B,KAAK,MAAM,UAAU,QAAQ,SAAS,MAAM,IAAI,OAAO,UAAU;CACjE,KAAK,MAAM,YAAY,QAAQ,WAAW,MAAM,IAAI,SAAS,UAAU;CACvE,KAAK,MAAM,cAAc,QAAQ,aAC/B,MAAM,IAAI,WAAW,UAAU;CACjC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK;AACzB;AAEA,SAAS,qBACP,QACA,UACuB;CACvB,MAAM,YACJ,OAAO,OAAO,iBAAiB,cAAc,WACzC,OAAO,gBAAgB,YACvB,CAAC;CACP,MAAM,SAAS,OAAO,QAAQ,OAAO,MAAM,CAAC,CACzC,QAAQ,GAAG,WAAW,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAC/C,KAAK,CAAC,MAAM,WAAiC;EAC5C,MAAM,eAAe,WAAW,OAAO,SAAS;EAChD,OAAO;GACL;GACA,MAAM,MAAM;GACZ,UAAU,MAAM;GAChB,SAAS,MAAM;GACf,YAAY,WAAW,QAAQ,IAAI;GACnC,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,MAAM,IAAI,CAAC;GAC9D,aAAa,iBAAiB,KAAK;GACnC,UACE,MAAM,aAAa,QAAQ,MAAM,OAAO,aAAa,OACjD,OACA,KAAA;GACN,WACE,MAAM,cAAc,QAAQ,MAAM,OAAO,cAAc,OACnD,OACA,KAAA;EACR;CACF,CAAC;CACH,MAAM,uBAAuB,0BAA0B,OAAO,MAAM;CACpE,MAAM,SAAS,oBACb,YAAY,OAAO,iBAAiB,YAAY,GAChD,oBACF;CACA,MAAM,kBAAkB,OAAO,iBAAiB,iBAAiB,QAC9D,WAAW,CAAC,qBAAqB,IAAI,MAAM,CAC9C;CACA,MAAM,gBAAgB,OACnB,QAAQ,UAAU,yBAAyB,IAAI,MAAM,IAAI,CAAC,CAAC,CAC3D,KAAK,WAAW;EACf,MAAM,MAAM;EACZ,MAAM,MAAM;EACZ,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,YAAY,MAAM;CACpB,EAAE;CAEJ,OAAO;EACL,MAAM,OAAO;EACb,eAAe,OAAO;EACtB,YAAY,OAAO;EACnB,WAAW,OAAO,QAAQ;EAC1B,aAAa,OAAO;EACpB,SAAS,OAAO;EAChB,YAAY,OAAO;EACnB;EACA;EACA,SAAS,OAAO,KAAK,OAAO,OAAO,CAAC,CAAC,KAAK;EAC1C,kBAAkB,iBAAiB,MAAM;EACzC;EACA,eAAe,OAAO,iBAAiB;EACvC,iBACE,mBAAmB,gBAAgB,SAAS,IACxC,kBACA,KAAA;EACN,UAAU,eAAe,QAAQ,QAAQ;EACzC,sBAAsB,qBAAqB,QAAQ,MAAM;EACzD,MAAM,UAAU,QAAQ,CAAC;EACzB,SAAS,UAAU;EACnB,OAAO,UAAU,SAAS,CAAC;CAC7B;AACF;AAEA,SAAS,iBAAiB,OAAgD;CACxE,OAAO,MAAM,cAAc,QAAQ,MAAM,OAAO,cAAc;AAChE;AAEA,SAAS,0BACP,QACa;CACb,OAAO,IAAI,IACT,OAAO,QAAQ,MAAM,CAAC,CACnB,QAAQ,GAAG,WAAW,iBAAiB,KAAK,CAAC,CAAC,CAC9C,SAAS,CAAC,UAAU;EAAC;EAAM,YAAY,IAAI;EAAG,aAAa,IAAI;CAAC,CAAC,CACtE;AACF;AAEA,SAAS,WACP,OACA,KACsC;CACtC,IAAI,OAAO,OAAO,OAAO,GAAG,GAC1B,OAAO;EAAE,SAAS,MAAM,SAAS,KAAA;EAAW,OAAO,MAAM;CAAK;CAEhE,MAAM,QAAQ,MAAM,QAAQ;CAC5B,OAAO;EAAE,SAAS,UAAU,KAAA;EAAW;CAAM;AAC/C;AAEA,SAAS,iBACP,OAC6C;CAC7C,MAAM,cAA+C,CAAC;CACtD,KAAK,MAAM,OAAO;EAAC;EAAO;EAAO;EAAa;CAAW,GAAY;EACnE,MAAM,QAAQ,WAAW,OAAO,GAAG;EACnC,IAAI,MAAM,WAAW,OAAO,MAAM,UAAU,UAC1C,YAAY,OAAO,MAAM;CAE7B;CACA,MAAM,UAAU,iBACb,MAAgC,WAAW,MAAM,OAAO,OAC3D;CACA,IAAI,YAAY,KAAA,GAAW,YAAY,UAAU;CACjD,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,SAAS,IAAI,cAAc,KAAA;AAC7D;AAEA,SAAS,iBAAiB,SAAsC;CAC9D,IAAI,OAAO,YAAY,UAAU,OAAO;CACxC,IAAI,mBAAmB,QAAQ,OAAO,QAAQ;CAC9C,IACE,WACA,OAAO,YAAY,YACnB,OAAQ,QAAiC,WAAW,UAEpD,OAAQ,QAA+B;AAG3C;AAEA,SAAS,YACP,cACmC;CACnC,IAAI,CAAC,cAAc,OAAO,KAAA;CAC1B,IAAI,iBAAiB,MACnB,OAAO;EAAE,QAAQ;EAAM,MAAM;EAAY,OAAO;CAAW;CAE7D,OAAO;EACL,QAAQ;EACR,MAAM,aAAa,QAAQ;EAC3B,OAAO,aAAa,SAAS;CAC/B;AACF;AAEA,SAAS,oBACP,QACA,sBACmC;CACnC,IAAI,CAAC,QAAQ,SAAS,CAAC,qBAAqB,IAAI,OAAO,KAAK,GAAG,OAAO;CACtE,OAAO;EAAE,QAAQ,OAAO;EAAQ,MAAM,OAAO;CAAK;AACpD;AAEA,SAAS,iBACP,QAC8C;CAC9C,MAAM,aAAa,OAAO,OAAO,OAAO,OAAO,CAAC,CAC7C,MAAM,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,CAAC,CAC5C,KAAK,YAAY;EAChB,MAAM,OAAO;EACb,OAAO,OAAO,SAAS,KAAA;EACvB,QAAQ,OAAO,YAAY,KAAA;EAC3B,QACE,OAAO,WAAW,SAAS,IACvB,OAAO,WAAW,KACf,cACC,GAAG,UAAU,OAAO,UAAU,WAAW,MAAM,GAAG,IAAI,UAAU,MACpE,IACA,KAAA;EACN,SAAS,OAAO,cAAc,KAAA;CAChC,EAAE;CACJ,OAAO,WAAW,SAAS,IAAI,aAAa,KAAA;AAC9C;AAEA,SAAS,eACP,QACA,UAC0B;CAC1B,OAAO;EACL,GAAG,mBAAmB,OAAO,QAAQ,QAAQ;EAC7C,GAAG,mBAAmB,OAAO,QAAQ,QAAQ;EAC7C,GAAG,mBAAmB,OAAO,QAAQ,QAAQ;EAC7C,GAAG,WAAW,MAAM;CACtB;AACF;AAEA,SAAS,mBACP,MACA,QACA,UAC0B;CAC1B,MAAM,SAAS,OAAO,kBAAkB;CAWxC,MAAM,kBAAkB,yBAAyB,UAAU,MAAM;CAEjE,OADmB,qBAAqB,MAAM,QAAQ,QAAQ,QACvD,CAAA,CAAW,KAAK,cAAc;EACnC,MAAM,QACJ,SAAS,SAAS,CAAC,oBAAoB,SAAS,SAAS,IACrD,eAAe,QAAQ,WAAW,eAAe,IACjD,KAAA;EACN,OAAO;GACL;GACA,MAAM,YAAY,MAAM,QAAQ,SAAS;GACzC;GACA,YAAY,OAAO,iBAAiB,OAAO;GAC3C,MAAM,SAAS,QAAQ,QAAQ,QAAQ,WAAW,KAAK,IAAI,KAAA;GAC3D,QAAQ,SAAS,QAAQ,UAAU,WAAW,KAAK,IAAI,KAAA;EACzD;CACF,CAAC;AACH;;;;;;;;;;;;;;;AAgBA,SAAS,YACP,MACA,QACA,WACQ;CACR,IAAI,SAAS,OAAO,OAAO,GAAG,OAAO,WAAW,GAAG;CACnD,MAAM,OAAO,GAAG,OAAO,UAAU,YAAY,EAAE,GAAG;CAClD,OAAO,SAAS,QAAQ,KAAK,YAAY,IAAI;AAC/C;;;;;;;;;;;;;;;;;;;;AAqBA,SAAS,yBACP,UACA,QACA,uBAAoB,IAAI,IAAI,GACnB;CAGT,IAAI,OAAO,YAAY,oBAAoB,OAAO,gBAChD,OAAO;CAET,MAAM,aAAa,OAAO,oBAAoB,OAAO;CACrD,IAAI,CAAC,cAAc,KAAK,IAAI,UAAU,GAAG,OAAO;CAChD,KAAK,IAAI,UAAU;CACnB,MAAM,SAAS,yBAAyB,UAAU,YAAY,MAAM;CACpE,OAAO,SAAS,yBAAyB,UAAU,QAAQ,IAAI,IAAI;AACrE;AAEA,SAAS,yBACP,UACA,MACA,OACmC;CACnC,MAAM,UAAU,OAAO,QAAQ,SAAS,OAAO;CAC/C,IAAI,KAAK,SAAS,GAAG,GAAG;EACtB,MAAM,QAAQ,QAAQ,MACnB,CAAC,KAAK,gBAAgB,UAAU,iBAAiB,SAAS,IAC7D;EACA,IAAI,OAAO,OAAO,MAAM;CAC1B;CAIA,MAAM,WAAW,QAAQ,MAAM,GAAG,eAAe,cAAc,KAAK,CAAC,GAAG;CACxE,MAAM,eAAe,sBAAsB,OAAO,QAAQ;CAC1D,IAAI,cAAc;EAChB,MAAM,eAAe,QAAQ,MAC1B,CAAC,KAAK,eACL,sBAAsB,WAAW,GAAG,MAAM,gBAC1C,UAAU,cAAc,IAC5B;EACA,IAAI,cAAc,OAAO,aAAa;CACxC;CACA,OAAO,QAAQ,MAAM,GAAG,eAAe,UAAU,cAAc,IAAI,CAAC,GAAG;AACzE;;;;;;;;;;;;AAaA,SAAS,sBACP,QACA,aACoB;CACpB,IAAI,OAAO,aAAa,OAAO,OAAO;CACtC,MAAM,gBAAgB,OAAO,iBAAiB;CAC9C,MAAM,YAAY,eAAe,YAAY,GAAG,KAAK;CACrD,OAAO,YAAY,IAAI,eAAe,MAAM,GAAG,SAAS,IAAI,KAAA;AAC9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,SAAS,qBACP,MACA,QACA,QACA,UACU;CACV,IAAI,WAAW,OAAO,OAAO,CAAC;CAM9B,IAAI,qBAAqB,OAAO,WAAW,OAAO,WAAW,GAAG,OAAO,CAAC;CACxE,MAAM,kBAAkB,yBAAyB,UAAU,MAAM;CACjE,MAAM,OAAO,kBAAkB,CAAC,IAAI,sBAAsB,MAAM;CAChE,MAAM,SAAS,yBACb,OAAO,QAAQ,OAAO,OAAO,GAC7B,QACA,IACF;CAKA,MAAM,WACJ,SAAS,QACL,OAAO,QACJ,cACC,eAAe,QAAQ,WAAW,eAAe,MAAM,KAAA,CAC3D,IACA;CACN,OAAO,CAAC,GAAG,MAAM,GAAG,QAAQ;AAC9B;AAEA,SAAS,sBAAsB,QAA2B;CACxD,MAAM,EAAE,SAAS,YAAY,qBAAqB,MAAM;CACxD,MAAM,OAAO,UACT,oBAAoB,QAAQ,cAAc,QAAQ,SAAS,SAAS,CAAC,IACrE,CAAC,GAAG,mBAAmB;CAC3B,IAAI,CAAC,WAAW,QAAQ,WAAW,GAAG,OAAO;CAC7C,MAAM,WAAW,IAAI,IAAI,OAAO;CAChC,OAAO,KAAK,QAAQ,cAAc,CAAC,SAAS,IAAI,SAAS,CAAC;AAC5D;AAEA,SAAS,yBACP,SACA,QACA,MACU;CACV,MAAM,EAAE,SAAS,YAAY,qBAAqB,MAAM;CACxD,MAAM,WAAW,IAAI,IAAI,WAAW,CAAC,CAAC;CACtC,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,CAAC,MAAM,WAAW,SAAS;EACpC,IAAI,iBAAiB,MAAM,IAAI,GAAG;EAOlC,IAAI,SAAS,SAAS,2BAA2B,IAAI,GAAG;EACxD,IAAI,CAAC,OAAO,UAAU;EACtB,IAAI,SAAS,IAAI,IAAI,GAAG;EACxB,IAAI,YAAY,KAAA,KAAa,CAAC,QAAQ,SAAS,IAAI,GAAG;EACtD,MAAM,KAAK,IAAI;CACjB;CACA,OAAO;AACT;;;;;;;;;;;;;;;;AAiBA,SAAS,iBAAiB,MAA6B,MAAuB;CAC5E,OAAO,SAAS,QAAQ,iBAAiB,IAAI,IAAI,gBAAgB,IAAI;AACvE;AAEA,SAAS,qBAAqB,QAG5B;CACA,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GACvE,OAAO,CAAC;CAMV,MAAM,SAAS;CACf,OAAO;EACL,SAAS,MAAM,QAAQ,OAAO,OAAO,IAAI,OAAO,UAAU,KAAA;EAC1D,SAAS,MAAM,QAAQ,OAAO,OAAO,IAAI,OAAO,UAAU,KAAA;CAC5D;AACF;AAEA,SAAS,WAAW,QAAyD;CAC3E,QAAQ,OAAO,SAAS,CAAC,EAAA,CAAG,KAAK,UAAU;EACzC,MAAM;EACN,MAAM,KAAK,SAAS;EACpB,WAAW,KAAK,SAAS;EACzB,aAAa,KAAK,SAAS;EAC3B,YAAY,OAAO,iBAAiB,OAAO;CAC7C,EAAE;AACJ;;;;;;;;;;;;;;;;;AAyBA,SAAS,eACP,QACA,WACA,iBAC4B;CAC5B,MAAM,SAAS,OAAO,QAAQ;CAC9B,MAAM,YAAY,OAAO,iBAAiB;CAG1C,MAAM,QAAQ,mBAAmB,WAAW,QAAQ,WADlD,mBAAmB,QAAQ,WAAW,eAAe,MACoB;CAK3E,IAAI;MACE,UAAU,cAAc,OAAO,KAAA;CAAA,OAC9B,IAAI,UAAU,gBAAgB,CAAC,QAAQ,UAC5C;CAGF,MAAM,QAAQ,kBAAkB,WAAW,SAAS;CACpD,MAAM,aACJ,OAAO,OAAO,SAAS,WACnB,MAAM,KACH,MAAM,GAAG,CAAC,CACV,KAAK,YAAY,QAAQ,KAAK,CAAC,CAAC,CAChC,OAAO,OAAO,IACjB,CAAC;CACP,OAAO;EACL;EACA,UAAU,WAAW,SAAS,IAAI,aAAa,CAAC,SAAS;EACzD,QAAQ,mBAAmB,OAAO,MAAM;CAC1C;AACF;;;;;;;;;AAUA,SAAS,mBACP,WACA,QACA,WACA,cACuB;CACvB,IAAI;EACF,OAAO,4BAA4B;GACjC,YAAY;GACZ;GACA;GACA;EACF,CAAC,CAAC,CAAC;CACL,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,kBACP,WACA,WACkD;CAClD,IAAI,OAAO,cAAc,YAAY,cAAc,MAAM,OAAO,KAAA;CAChE,MAAM,SAAU,UAAmC;CACnD,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM,OAAO,KAAA;CAC1D,MAAM,QAAS,OAAmC;CAClD,OAAO,OAAO,UAAU,YAAY,UAAU,OACzC,QACD,KAAA;AACN;;AAGA,SAAS,mBAAmB,QAAyB;CACnD,MAAM,aACJ,OAAO,WAAW,WAAW,OAAO,YAAY,IAAI,KAAA;CACtD,QAAQ,YAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,UACH,OAAO;EACT,SACE,OAAO;CACX;AACF;;;;;;;;;;;;;;;AAgBA,SAAS,qBAAqB,QAAuC;CACnE,OAAO,OAAO;AAChB;AAEA,SAAS,QACP,QACA,WACA,OACQ;CACR,MAAM,iBAAiB,qBAAqB,MAAM;CAClD,IAAI,OAKF,OAAO,GAHL,MAAM,UAAU,eACZ,IAAI,mBACJ,IAAI,eAAe,OACV,GAAG,MAAM,SAAS,KAAK,GAAG;CAE3C,IAAI,cAAc,UAAU,cAAc,UACxC,OAAO,IAAI;CAEb,IAAI,oBAAoB,SAAS,SAAS,GACxC,OAAO,IAAI,eAAe;CAE5B,OAAO,IAAI,eAAe,GAAG;AAC/B;AAEA,SAAS,UAAU,WAAmB,OAAgC;CACpE,IAAI,OAAO,OAAO,MAAM;CACxB,QAAQ,WAAR;EACE,KAAK;EACL,KAAK,OACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,KAAK,UACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,SAAS,qBACP,QACA,QACU;CACV,MAAM,2BAAW,IAAI,IAAY;CACjC,KAAK,MAAM,SAAS,QAAQ;EAC1B,IAAI,MAAM,SAAS,cAAc,SAAS,IAAI,YAAY;EAC1D,IAAI,MAAM,SAAS,mBAAmB,SAAS,IAAI,iBAAiB;EACpE,IAAI,MAAM,SAAS,aAAa,SAAS,IAAI,WAAW;EACxD,IAAI,MAAM,SAAS,cAAc,SAAS,IAAI,YAAY;CAC5D;CACA,IAAI,OAAO,YAAY,gBAAgB,SAAS,IAAI,cAAc;CAClE,IAAI,OAAO,YAAY,oBAAoB,SAAS,IAAI,kBAAkB;CAC1E,IACE,OAAO,YAAY,gCACnB,OAAO,MAAM,UAAU,MAAM,SAAS,UAAU,KAChD,OAAO,MAAM,UAAU,MAAM,SAAS,QAAQ,GAE9C,SAAS,IAAI,4BAA4B;CAE3C,IACE,OAAO,KAAK,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,MACvC,SAAS,OAAO,QAAQ,QAAQ,KAAK,EAAE,SAAS,MACnD,GAEA,SAAS,IAAI,aAAa;CAE5B,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK;AAC5B;AAEA,SAAS,uBACP,SACA,iBACA;CACA,MAAM,SAAS,QAAQ,SAAS,WAAW,OAAO,MAAM;CACxD,OAAO;EACL,kBAAkB,OAAO,QAAQ,UAAU,MAAM,SAAS,YAAY,CAAC,CACpE;EACH,uBAAuB,OAAO,QAC3B,UAAU,MAAM,SAAS,iBAC5B,CAAC,CAAC;EACF,qBAAqB,QAAQ,QAAQ,WACnC,OAAO,qBAAqB,SAAS,cAAc,CACrD,CAAC,CAAC;EACF,qBAAqB,QAAQ,QAAQ,WACnC,OAAO,qBAAqB,SAAS,kBAAkB,CACzD,CAAC,CAAC;EACF,yBAAyB,QAAQ,QAAQ,WACvC,OAAO,qBAAqB,SAAS,4BAA4B,CACnE,CAAC,CAAC;EACF,aAAa,gBAAgB,QAC1B,OAAO,WACN,QACA,OAAO,OAAO,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,QACzC,WAAW,OAAO,SAAS,MAC9B,CAAC,CAAC,QACJ,CACF;CACF;AACF;AAEA,SAAS,WACP,QACA,WACoB;CACpB,MAAM,aAAa,aAAa,SAAS;CACzC,OAAO,OAAO,QAAQ,QAAQ,WAAW,EAAE;AAC7C;AAEA,SAAS,YACP,SAC2C;CAC3C,MAAM,SAAS,KAAK,SAAS,KAAK;CAClC,IAAI,CAAC,WAAW,MAAM,GAAG,OAAO,CAAC;CACjC,MAAM,UAAqD,CAAC;CAC5D,KAAK,MAAM,YAAY,UAAU,MAAM,GAAG;EACxC,IAAI,CAAC,SAAS,SAAS,KAAK,GAAG;EAC/B,MAAM,UAAU,aAAa,UAAU,MAAM;EAC7C,IAAI,CAAC,QAAQ,SAAS,cAAc,GAAG;EACvC,MAAM,WAAW,QAAQ,MAAM,yCAAyC;EACxE,QAAQ,KAAK;GACX,UAAU,SAAS,SAAS,QAAQ;GACpC,KAAK,WAAW;EAClB,CAAC;CACH;CACA,OAAO;AACT;AAEA,SAAS,UAAU,KAAuB;CACxC,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,SAAS,YAAY,KAAK,EAAE,eAAe,KAAK,CAAC,GAAG;EAC7D,IACE,MAAM,SAAS,kBACf,MAAM,SAAS,UACf,MAAM,SAAS,eAEf;EAEF,MAAM,WAAW,KAAK,KAAK,MAAM,IAAI;EACrC,IAAI,MAAM,YAAY,GACpB,MAAM,KAAK,GAAG,UAAU,QAAQ,CAAC;OAC5B,IAAI,MAAM,OAAO,GACtB,MAAM,KAAK,QAAQ;CAEvB;CACA,OAAO;AACT;AAEA,SAAS,aAAa,SAAiD;CACrE,MAAM,SAAiC,CAAC;CACxC,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,OAAO,GAAG;EACpD,IAAI,CAAC,QAAQ;EACb,MAAM,UACJ,aAAa,SAAS,OAAO,UAAU,aAAa,OAAO,MAAM,MAAM;EACzE,OAAO,QAAQ,WAAW,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,OAAO,KAAK;CAClE;CACA,OAAO;AACT;AAIA,SAAS,eAAe,MAAkD;CACxE,OAAO,OAAO,EAAE,KAAK,IAAI,KAAA;AAC3B;AAEA,SAAS,aAAa,SAAiB,MAAkC;CACvE,MAAM,WAAW,KAAK,SAAS,IAAI;CACnC,OAAO,WAAW,QAAQ,IAAI,WAAW,KAAA;AAC3C;AAEA,SAAS,gBAAgB,SAAyC;CAChE,MAAM,OAAO,KAAK,SAAS,cAAc;CACzC,IAAI,CAAC,WAAW,IAAI,GAAG,OAAO;CAC9B,OAAO,KAAK,MAAM,aAAa,MAAM,MAAM,CAAC;AAC9C;AAEA,SAAS,OAAO,OAAwC;CACtD,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACrE,QACD,CAAC;AACP;AAEA,SAAS,WAAW,cAAiC;CACnD,IAAI,OAAO,iBAAiB,UAAU,OAAO,CAAC,GAAG;CACjD,IACE,OAAO,iBAAiB,YACxB,iBAAiB,QACjB,MAAM,QAAQ,YAAY,GAE1B,OAAO,CAAC;CAEV,OAAO,OAAO,KAAK,YAAY,CAAC,CAAC,KAAK;AACxC;AAEA,SAAS,aAAa,OAAuB;CAC3C,OAAO,MACJ,QAAQ,sBAAsB,OAAO,CAAC,CACtC,QAAQ,WAAW,GAAG,CAAC,CACvB,YAAY;AACjB;AAEA,SAAS,yBAAyB,UAAwC;CACxE,MAAM,aAAa,KAAK,MAAM,KAAK,UAAU,QAAQ,CAAC;CAItD,OAAO,WAAW;CAClB,OAAO;AACT;AAEA,SAAS,WAAW,OAAwB;CAC1C,OAAO,KAAK,UAAU,SAAS,KAAK,GAAG,MAAM,CAAC;AAChD;AAEA,SAAS,SAAS,OAAyB;CACzC,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,QAAQ;CACnD,IAAI,SAAS,OAAO,UAAU,UAC5B,OAAO,OAAO,YACZ,OAAO,QAAQ,KAAgC,CAAC,CAC7C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CACtC,KAAK,CAAC,KAAK,WAAW,CAAC,KAAK,SAAS,KAAK,CAAC,CAAC,CACjD;CAEF,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"static-manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/static-manifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,eAAO,MAAM,cAAc,EAAE,mBAs7CnB,CAAC;AAEX,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"static-manifest.d.ts","sourceRoot":"","sources":["../../src/manifest/static-manifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,eAAO,MAAM,cAAc,EAAE,mBA47CnB,CAAC;AAEX,eAAe,cAAc,CAAC"}
@@ -3,7 +3,7 @@ var staticManifest = {
3
3
  "version": "1.0.0",
4
4
  "timestamp": 0,
5
5
  "packageName": "@happyvertical/smrt-core",
6
- "packageVersion": "0.44.0",
6
+ "packageVersion": "0.45.0",
7
7
  "objects": {
8
8
  "@happyvertical/smrt-core:SmrtClass": {
9
9
  "name": "smrtclass",
@@ -997,7 +997,11 @@ var staticManifest = {
997
997
  "delete": {
998
998
  "name": "delete",
999
999
  "async": true,
1000
- "parameters": [],
1000
+ "parameters": [{
1001
+ "name": "options",
1002
+ "type": "SmrtDeleteOptions",
1003
+ "optional": true
1004
+ }],
1001
1005
  "returnType": "Promise<void>",
1002
1006
  "isStatic": false,
1003
1007
  "isPublic": true
@@ -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\": 0,\n \"packageName\": \"@happyvertical/smrt-core\",\n \"packageVersion\": \"0.44.0\",\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 \"withDatabase\": {\n \"name\": \"withDatabase\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"db\",\n \"type\": \"DatabaseInterface\",\n \"optional\": false\n },\n {\n \"name\": \"operation\",\n \"type\": \"Function\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<T>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\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_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n },\n {\n \"name\": \"smrt_classes_created_at_idx\",\n \"columns\": [\n \"created_at\"\n ]\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 \"listWithLatestRelated\": {\n \"name\": \"listWithLatestRelated\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtLatestRelatedListOptions<ModelType>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<SmrtLatestRelatedRow<SmrtObject>[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\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<SmrtObject[] | 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 \"facets\": {\n \"name\": \"facets\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtFacetOptions<ModelType>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<SmrtFacetResult[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"counts\": {\n \"name\": \"counts\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<SmrtCollectionCounts>\",\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_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n },\n {\n \"name\": \"smrt_collections_created_at_idx\",\n \"columns\": [\n \"created_at\"\n ]\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 \"withTransaction\": {\n \"name\": \"withTransaction\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"operation\",\n \"type\": \"Function\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<T>\",\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 {\n \"name\": \"options\",\n \"type\": \"SmrtSaveOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"claimRevision\": {\n \"name\": \"claimRevision\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"expectedUpdatedAt\",\n \"type\": \"Date | string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise\",\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_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n },\n {\n \"name\": \"smrt_objects_created_at_idx\",\n \"columns\": [\n \"created_at\"\n ]\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\": 0,\n \"packageName\": \"@happyvertical/smrt-core\",\n \"packageVersion\": \"0.45.0\",\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 \"withDatabase\": {\n \"name\": \"withDatabase\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"db\",\n \"type\": \"DatabaseInterface\",\n \"optional\": false\n },\n {\n \"name\": \"operation\",\n \"type\": \"Function\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<T>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\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_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n },\n {\n \"name\": \"smrt_classes_created_at_idx\",\n \"columns\": [\n \"created_at\"\n ]\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 \"listWithLatestRelated\": {\n \"name\": \"listWithLatestRelated\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtLatestRelatedListOptions<ModelType>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<SmrtLatestRelatedRow<SmrtObject>[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\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<SmrtObject[] | 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 \"facets\": {\n \"name\": \"facets\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"SmrtFacetOptions<ModelType>\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<SmrtFacetResult[]>\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"counts\": {\n \"name\": \"counts\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"options\",\n \"type\": \"object\",\n \"optional\": true\n }\n ],\n \"returnType\": \"Promise<SmrtCollectionCounts>\",\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_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n },\n {\n \"name\": \"smrt_collections_created_at_idx\",\n \"columns\": [\n \"created_at\"\n ]\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 \"withTransaction\": {\n \"name\": \"withTransaction\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"operation\",\n \"type\": \"Function\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise<T>\",\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 {\n \"name\": \"options\",\n \"type\": \"SmrtSaveOptions\",\n \"optional\": true\n }\n ],\n \"returnType\": \"any\",\n \"isStatic\": false,\n \"isPublic\": true\n },\n \"claimRevision\": {\n \"name\": \"claimRevision\",\n \"async\": true,\n \"parameters\": [\n {\n \"name\": \"expectedUpdatedAt\",\n \"type\": \"Date | string\",\n \"optional\": false\n }\n ],\n \"returnType\": \"Promise\",\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 {\n \"name\": \"options\",\n \"type\": \"SmrtDeleteOptions\",\n \"optional\": true\n }\n ],\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_slug_context_idx\",\n \"columns\": [\n \"slug\",\n \"context\"\n ],\n \"unique\": true\n },\n {\n \"name\": \"smrt_objects_created_at_idx\",\n \"columns\": [\n \"created_at\"\n ]\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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"}