@happyvertical/smrt-core 0.30.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 (631) hide show
  1. package/AGENTS.md +124 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +265 -0
  5. package/bin/smrt-prebuild.js +26 -0
  6. package/dist/__tests__/fixtures/advisor-test-classes.d.ts +28 -0
  7. package/dist/__tests__/fixtures/advisor-test-classes.d.ts.map +1 -0
  8. package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts +12 -0
  9. package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts.map +1 -0
  10. package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts +28 -0
  11. package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts.map +1 -0
  12. package/dist/__tests__/fixtures/inheritance-test-classes.d.ts +43 -0
  13. package/dist/__tests__/fixtures/inheritance-test-classes.d.ts.map +1 -0
  14. package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts +18 -0
  15. package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts.map +1 -0
  16. package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts +15 -0
  17. package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts.map +1 -0
  18. package/dist/__tests__/fixtures/object-spec-test-classes.d.ts +13 -0
  19. package/dist/__tests__/fixtures/object-spec-test-classes.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/registry-test-classes.d.ts +23 -0
  21. package/dist/__tests__/fixtures/registry-test-classes.d.ts.map +1 -0
  22. package/dist/adapters/ai-usage.d.ts +23 -0
  23. package/dist/adapters/ai-usage.d.ts.map +1 -0
  24. package/dist/adapters/ai-usage.js +105 -0
  25. package/dist/adapters/ai-usage.js.map +1 -0
  26. package/dist/adapters/cost-rates.d.ts +20 -0
  27. package/dist/adapters/cost-rates.d.ts.map +1 -0
  28. package/dist/adapters/cost-rates.js +40 -0
  29. package/dist/adapters/cost-rates.js.map +1 -0
  30. package/dist/adapters/index.d.ts +19 -0
  31. package/dist/adapters/index.d.ts.map +1 -0
  32. package/dist/adapters/metrics.d.ts +111 -0
  33. package/dist/adapters/metrics.d.ts.map +1 -0
  34. package/dist/adapters/metrics.js +169 -0
  35. package/dist/adapters/metrics.js.map +1 -0
  36. package/dist/adapters/pubsub.d.ts +124 -0
  37. package/dist/adapters/pubsub.d.ts.map +1 -0
  38. package/dist/adapters/pubsub.js +121 -0
  39. package/dist/adapters/pubsub.js.map +1 -0
  40. package/dist/browser.d.ts +32 -0
  41. package/dist/browser.d.ts.map +1 -0
  42. package/dist/browser.js +68 -0
  43. package/dist/browser.js.map +1 -0
  44. package/dist/child-accessors.d.ts +27 -0
  45. package/dist/child-accessors.d.ts.map +1 -0
  46. package/dist/child-accessors.js +35 -0
  47. package/dist/child-accessors.js.map +1 -0
  48. package/dist/class.d.ts +313 -0
  49. package/dist/class.d.ts.map +1 -0
  50. package/dist/class.js +896 -0
  51. package/dist/class.js.map +1 -0
  52. package/dist/collection-cache.d.ts +110 -0
  53. package/dist/collection-cache.d.ts.map +1 -0
  54. package/dist/collection-cache.js +187 -0
  55. package/dist/collection-cache.js.map +1 -0
  56. package/dist/collection.d.ts +894 -0
  57. package/dist/collection.d.ts.map +1 -0
  58. package/dist/collection.js +1987 -0
  59. package/dist/collection.js.map +1 -0
  60. package/dist/config/global-config.d.ts +3 -0
  61. package/dist/config/global-config.d.ts.map +1 -0
  62. package/dist/config/global-config.js +19 -0
  63. package/dist/config/global-config.js.map +1 -0
  64. package/dist/config.d.ts +145 -0
  65. package/dist/config.d.ts.map +1 -0
  66. package/dist/config.js +57 -0
  67. package/dist/config.js.map +1 -0
  68. package/dist/consumer-plugin/index.d.ts +22 -0
  69. package/dist/consumer-plugin/index.d.ts.map +1 -0
  70. package/dist/consumer-plugin/index.js +452 -0
  71. package/dist/consumer-plugin/index.js.map +1 -0
  72. package/dist/consumer-plugin.d.ts +8 -0
  73. package/dist/consumer-plugin.d.ts.map +1 -0
  74. package/dist/consumer-plugin.js +5 -0
  75. package/dist/consumer-plugin.js.map +1 -0
  76. package/dist/database.d.ts +95 -0
  77. package/dist/database.d.ts.map +1 -0
  78. package/dist/database.js +32 -0
  79. package/dist/database.js.map +1 -0
  80. package/dist/decorators/compatibility.d.ts +14 -0
  81. package/dist/decorators/compatibility.d.ts.map +1 -0
  82. package/dist/decorators/compatibility.js +111 -0
  83. package/dist/decorators/compatibility.js.map +1 -0
  84. package/dist/decorators/index.d.ts +381 -0
  85. package/dist/decorators/index.d.ts.map +1 -0
  86. package/dist/decorators/index.js +104 -0
  87. package/dist/decorators/index.js.map +1 -0
  88. package/dist/dispatch/bus.d.ts +306 -0
  89. package/dist/dispatch/bus.d.ts.map +1 -0
  90. package/dist/dispatch/bus.js +583 -0
  91. package/dist/dispatch/bus.js.map +1 -0
  92. package/dist/dispatch/collections/DispatchSubscriptions.d.ts +79 -0
  93. package/dist/dispatch/collections/DispatchSubscriptions.d.ts.map +1 -0
  94. package/dist/dispatch/collections/DispatchSubscriptions.js +243 -0
  95. package/dist/dispatch/collections/DispatchSubscriptions.js.map +1 -0
  96. package/dist/dispatch/collections/Dispatches.d.ts +98 -0
  97. package/dist/dispatch/collections/Dispatches.d.ts.map +1 -0
  98. package/dist/dispatch/collections/Dispatches.js +358 -0
  99. package/dist/dispatch/collections/Dispatches.js.map +1 -0
  100. package/dist/dispatch/index.d.ts +47 -0
  101. package/dist/dispatch/index.d.ts.map +1 -0
  102. package/dist/dispatch/models/Dispatch.d.ts +101 -0
  103. package/dist/dispatch/models/Dispatch.d.ts.map +1 -0
  104. package/dist/dispatch/models/Dispatch.js +162 -0
  105. package/dist/dispatch/models/Dispatch.js.map +1 -0
  106. package/dist/dispatch/models/DispatchSubscription.d.ts +83 -0
  107. package/dist/dispatch/models/DispatchSubscription.d.ts.map +1 -0
  108. package/dist/dispatch/models/DispatchSubscription.js +112 -0
  109. package/dist/dispatch/models/DispatchSubscription.js.map +1 -0
  110. package/dist/dispatch/tenant-resolver.d.ts +98 -0
  111. package/dist/dispatch/tenant-resolver.d.ts.map +1 -0
  112. package/dist/dispatch/tenant-resolver.js +32 -0
  113. package/dist/dispatch/tenant-resolver.js.map +1 -0
  114. package/dist/dispatch/types.d.ts +149 -0
  115. package/dist/dispatch/types.d.ts.map +1 -0
  116. package/dist/embeddings/hash.d.ts +33 -0
  117. package/dist/embeddings/hash.d.ts.map +1 -0
  118. package/dist/embeddings/hash.js +37 -0
  119. package/dist/embeddings/hash.js.map +1 -0
  120. package/dist/embeddings/index.d.ts +36 -0
  121. package/dist/embeddings/index.d.ts.map +1 -0
  122. package/dist/embeddings/provider.d.ts +75 -0
  123. package/dist/embeddings/provider.d.ts.map +1 -0
  124. package/dist/embeddings/provider.js +170 -0
  125. package/dist/embeddings/provider.js.map +1 -0
  126. package/dist/embeddings/similarity.d.ts +47 -0
  127. package/dist/embeddings/similarity.d.ts.map +1 -0
  128. package/dist/embeddings/similarity.js +64 -0
  129. package/dist/embeddings/similarity.js.map +1 -0
  130. package/dist/embeddings/storage.d.ts +125 -0
  131. package/dist/embeddings/storage.d.ts.map +1 -0
  132. package/dist/embeddings/storage.js +283 -0
  133. package/dist/embeddings/storage.js.map +1 -0
  134. package/dist/embeddings/types.d.ts +250 -0
  135. package/dist/embeddings/types.d.ts.map +1 -0
  136. package/dist/errors.d.ts +363 -0
  137. package/dist/errors.d.ts.map +1 -0
  138. package/dist/errors.js +669 -0
  139. package/dist/errors.js.map +1 -0
  140. package/dist/generators/cli.d.ts +162 -0
  141. package/dist/generators/cli.d.ts.map +1 -0
  142. package/dist/generators/cli.js +462 -0
  143. package/dist/generators/cli.js.map +1 -0
  144. package/dist/generators/index.d.ts +13 -0
  145. package/dist/generators/index.d.ts.map +1 -0
  146. package/dist/generators/mcp-runtime-template.d.ts +60 -0
  147. package/dist/generators/mcp-runtime-template.d.ts.map +1 -0
  148. package/dist/generators/mcp-runtime-template.js +509 -0
  149. package/dist/generators/mcp-runtime-template.js.map +1 -0
  150. package/dist/generators/mcp.d.ts +231 -0
  151. package/dist/generators/mcp.d.ts.map +1 -0
  152. package/dist/generators/mcp.js +1220 -0
  153. package/dist/generators/mcp.js.map +1 -0
  154. package/dist/generators/rest.d.ts +171 -0
  155. package/dist/generators/rest.d.ts.map +1 -0
  156. package/dist/generators/rest.js +591 -0
  157. package/dist/generators/rest.js.map +1 -0
  158. package/dist/generators/swagger.d.ts +21 -0
  159. package/dist/generators/swagger.d.ts.map +1 -0
  160. package/dist/generators/swagger.js +307 -0
  161. package/dist/generators/swagger.js.map +1 -0
  162. package/dist/generators/tenant-gate.d.ts +74 -0
  163. package/dist/generators/tenant-gate.d.ts.map +1 -0
  164. package/dist/generators/tenant-gate.js +15 -0
  165. package/dist/generators/tenant-gate.js.map +1 -0
  166. package/dist/generators.d.ts +8 -0
  167. package/dist/generators.d.ts.map +1 -0
  168. package/dist/generators.js +19 -0
  169. package/dist/generators.js.map +1 -0
  170. package/dist/hierarchical.d.ts +103 -0
  171. package/dist/hierarchical.d.ts.map +1 -0
  172. package/dist/hierarchical.js +184 -0
  173. package/dist/hierarchical.js.map +1 -0
  174. package/dist/index.d.ts +57 -0
  175. package/dist/index.d.ts.map +1 -0
  176. package/dist/index.js +202 -0
  177. package/dist/index.js.map +1 -0
  178. package/dist/interceptors.d.ts +251 -0
  179. package/dist/interceptors.d.ts.map +1 -0
  180. package/dist/interceptors.js +259 -0
  181. package/dist/interceptors.js.map +1 -0
  182. package/dist/junction.d.ts +99 -0
  183. package/dist/junction.d.ts.map +1 -0
  184. package/dist/junction.js +136 -0
  185. package/dist/junction.js.map +1 -0
  186. package/dist/knowledge.d.ts +11 -0
  187. package/dist/knowledge.d.ts.map +1 -0
  188. package/dist/knowledge.js +310 -0
  189. package/dist/knowledge.js.map +1 -0
  190. package/dist/lazy-config.d.ts +160 -0
  191. package/dist/lazy-config.d.ts.map +1 -0
  192. package/dist/lazy-config.js +146 -0
  193. package/dist/lazy-config.js.map +1 -0
  194. package/dist/manifest/discover-base-classes.d.ts +78 -0
  195. package/dist/manifest/discover-base-classes.d.ts.map +1 -0
  196. package/dist/manifest/discover-base-classes.js +85 -0
  197. package/dist/manifest/discover-base-classes.js.map +1 -0
  198. package/dist/manifest/discover-smrt-packages.d.ts +48 -0
  199. package/dist/manifest/discover-smrt-packages.d.ts.map +1 -0
  200. package/dist/manifest/discover-smrt-packages.js +361 -0
  201. package/dist/manifest/discover-smrt-packages.js.map +1 -0
  202. package/dist/manifest/generator.d.ts +93 -0
  203. package/dist/manifest/generator.d.ts.map +1 -0
  204. package/dist/manifest/generator.js +380 -0
  205. package/dist/manifest/generator.js.map +1 -0
  206. package/dist/manifest/index.d.ts +16 -0
  207. package/dist/manifest/index.d.ts.map +1 -0
  208. package/dist/manifest/index.js +51 -0
  209. package/dist/manifest/index.js.map +1 -0
  210. package/dist/manifest/manager.d.ts +51 -0
  211. package/dist/manifest/manager.d.ts.map +1 -0
  212. package/dist/manifest/manager.js +89 -0
  213. package/dist/manifest/manager.js.map +1 -0
  214. package/dist/manifest/manifest-loader.d.ts +187 -0
  215. package/dist/manifest/manifest-loader.d.ts.map +1 -0
  216. package/dist/manifest/manifest-loader.js +847 -0
  217. package/dist/manifest/manifest-loader.js.map +1 -0
  218. package/dist/manifest/sources/composite.d.ts +22 -0
  219. package/dist/manifest/sources/composite.d.ts.map +1 -0
  220. package/dist/manifest/sources/composite.js +60 -0
  221. package/dist/manifest/sources/composite.js.map +1 -0
  222. package/dist/manifest/sources/embedded.d.ts +7 -0
  223. package/dist/manifest/sources/embedded.d.ts.map +1 -0
  224. package/dist/manifest/sources/embedded.js +30 -0
  225. package/dist/manifest/sources/embedded.js.map +1 -0
  226. package/dist/manifest/sources/explicit-paths.d.ts +17 -0
  227. package/dist/manifest/sources/explicit-paths.d.ts.map +1 -0
  228. package/dist/manifest/sources/explicit-paths.js +35 -0
  229. package/dist/manifest/sources/explicit-paths.js.map +1 -0
  230. package/dist/manifest/sources/fallback.d.ts +25 -0
  231. package/dist/manifest/sources/fallback.d.ts.map +1 -0
  232. package/dist/manifest/sources/fallback.js +63 -0
  233. package/dist/manifest/sources/fallback.js.map +1 -0
  234. package/dist/manifest/sources/index.d.ts +17 -0
  235. package/dist/manifest/sources/index.d.ts.map +1 -0
  236. package/dist/manifest/sources/local-test.d.ts +7 -0
  237. package/dist/manifest/sources/local-test.d.ts.map +1 -0
  238. package/dist/manifest/sources/local-test.js +21 -0
  239. package/dist/manifest/sources/local-test.js.map +1 -0
  240. package/dist/manifest/sources/static.d.ts +7 -0
  241. package/dist/manifest/sources/static.d.ts.map +1 -0
  242. package/dist/manifest/sources/static.js +19 -0
  243. package/dist/manifest/sources/static.js.map +1 -0
  244. package/dist/manifest/sources/test.d.ts +7 -0
  245. package/dist/manifest/sources/test.d.ts.map +1 -0
  246. package/dist/manifest/sources/test.js +21 -0
  247. package/dist/manifest/sources/test.js.map +1 -0
  248. package/dist/manifest/sources/types.d.ts +79 -0
  249. package/dist/manifest/sources/types.d.ts.map +1 -0
  250. package/dist/manifest/sources/types.js +61 -0
  251. package/dist/manifest/sources/types.js.map +1 -0
  252. package/dist/manifest/static-manifest.d.ts +4 -0
  253. package/dist/manifest/static-manifest.d.ts.map +1 -0
  254. package/dist/manifest/static-manifest.js +1535 -0
  255. package/dist/manifest/static-manifest.js.map +1 -0
  256. package/dist/manifest/store.d.ts +111 -0
  257. package/dist/manifest/store.d.ts.map +1 -0
  258. package/dist/manifest/store.js +431 -0
  259. package/dist/manifest/store.js.map +1 -0
  260. package/dist/manifest/test-manifest-loader.d.ts +3 -0
  261. package/dist/manifest/test-manifest-loader.d.ts.map +1 -0
  262. package/dist/manifest/test-manifest-stub.d.ts +4 -0
  263. package/dist/manifest/test-manifest-stub.d.ts.map +1 -0
  264. package/dist/manifest/test-manifest-stub.js +80013 -0
  265. package/dist/manifest/test-manifest-stub.js.map +1 -0
  266. package/dist/manifest.d.ts +8 -0
  267. package/dist/manifest.d.ts.map +1 -0
  268. package/dist/manifest.js +20 -0
  269. package/dist/manifest.js.map +1 -0
  270. package/dist/manifest.json +1489 -0
  271. package/dist/mcp-advisor/index.d.ts +499 -0
  272. package/dist/mcp-advisor/index.d.ts.map +1 -0
  273. package/dist/mcp-advisor/tools/add-ai-methods.d.ts +6 -0
  274. package/dist/mcp-advisor/tools/add-ai-methods.d.ts.map +1 -0
  275. package/dist/mcp-advisor/tools/configure-decorators.d.ts +6 -0
  276. package/dist/mcp-advisor/tools/configure-decorators.d.ts.map +1 -0
  277. package/dist/mcp-advisor/tools/generate-collection.d.ts +6 -0
  278. package/dist/mcp-advisor/tools/generate-collection.d.ts.map +1 -0
  279. package/dist/mcp-advisor/tools/generate-field-definitions.d.ts +6 -0
  280. package/dist/mcp-advisor/tools/generate-field-definitions.d.ts.map +1 -0
  281. package/dist/mcp-advisor/tools/generate-smrt-class.d.ts +6 -0
  282. package/dist/mcp-advisor/tools/generate-smrt-class.d.ts.map +1 -0
  283. package/dist/mcp-advisor/tools/get-object-config.d.ts +6 -0
  284. package/dist/mcp-advisor/tools/get-object-config.d.ts.map +1 -0
  285. package/dist/mcp-advisor/tools/get-object-schema.d.ts +10 -0
  286. package/dist/mcp-advisor/tools/get-object-schema.d.ts.map +1 -0
  287. package/dist/mcp-advisor/tools/list-registered-objects.d.ts +9 -0
  288. package/dist/mcp-advisor/tools/list-registered-objects.d.ts.map +1 -0
  289. package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts +9 -0
  290. package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts.map +1 -0
  291. package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts +9 -0
  292. package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts.map +1 -0
  293. package/dist/mcp-advisor/tools/validate-smrt-object.d.ts +6 -0
  294. package/dist/mcp-advisor/tools/validate-smrt-object.d.ts.map +1 -0
  295. package/dist/mcp-advisor/types.d.ts +209 -0
  296. package/dist/mcp-advisor/types.d.ts.map +1 -0
  297. package/dist/migrations/backfill-tracker.d.ts +84 -0
  298. package/dist/migrations/backfill-tracker.d.ts.map +1 -0
  299. package/dist/migrations/backfill-tracker.js +118 -0
  300. package/dist/migrations/backfill-tracker.js.map +1 -0
  301. package/dist/migrations/checksum.d.ts +43 -0
  302. package/dist/migrations/checksum.d.ts.map +1 -0
  303. package/dist/migrations/checksum.js +32 -0
  304. package/dist/migrations/checksum.js.map +1 -0
  305. package/dist/migrations/differ.d.ts +186 -0
  306. package/dist/migrations/differ.d.ts.map +1 -0
  307. package/dist/migrations/differ.js +601 -0
  308. package/dist/migrations/differ.js.map +1 -0
  309. package/dist/migrations/generator.d.ts +133 -0
  310. package/dist/migrations/generator.d.ts.map +1 -0
  311. package/dist/migrations/generator.js +328 -0
  312. package/dist/migrations/generator.js.map +1 -0
  313. package/dist/migrations/index.d.ts +20 -0
  314. package/dist/migrations/index.d.ts.map +1 -0
  315. package/dist/migrations/orchestrate.d.ts +148 -0
  316. package/dist/migrations/orchestrate.d.ts.map +1 -0
  317. package/dist/migrations/orchestrate.js +118 -0
  318. package/dist/migrations/orchestrate.js.map +1 -0
  319. package/dist/migrations/tracker.d.ts +134 -0
  320. package/dist/migrations/tracker.d.ts.map +1 -0
  321. package/dist/migrations/tracker.js +624 -0
  322. package/dist/migrations/tracker.js.map +1 -0
  323. package/dist/migrations/types.d.ts +221 -0
  324. package/dist/migrations/types.d.ts.map +1 -0
  325. package/dist/migrations.d.ts +7 -0
  326. package/dist/migrations.d.ts.map +1 -0
  327. package/dist/migrations.js +26 -0
  328. package/dist/migrations.js.map +1 -0
  329. package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +56 -0
  330. package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js.map +1 -0
  331. package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js +163 -0
  332. package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js.map +1 -0
  333. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js +13 -0
  334. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
  335. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js +654 -0
  336. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js.map +1 -0
  337. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js +111 -0
  338. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
  339. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js +10 -0
  340. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js.map +1 -0
  341. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js +824 -0
  342. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js.map +1 -0
  343. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js +10 -0
  344. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
  345. package/dist/object.d.ts +1202 -0
  346. package/dist/object.d.ts.map +1 -0
  347. package/dist/object.js +2731 -0
  348. package/dist/object.js.map +1 -0
  349. package/dist/polymorphic-association.d.ts +69 -0
  350. package/dist/polymorphic-association.d.ts.map +1 -0
  351. package/dist/polymorphic-association.js +96 -0
  352. package/dist/polymorphic-association.js.map +1 -0
  353. package/dist/prebuild/cli.d.ts +7 -0
  354. package/dist/prebuild/cli.d.ts.map +1 -0
  355. package/dist/prebuild/cli.js +29 -0
  356. package/dist/prebuild/cli.js.map +1 -0
  357. package/dist/prebuild/index.d.ts +22 -0
  358. package/dist/prebuild/index.d.ts.map +1 -0
  359. package/dist/prebuild/index.js +239 -0
  360. package/dist/prebuild/index.js.map +1 -0
  361. package/dist/prebuild.d.ts +8 -0
  362. package/dist/prebuild.d.ts.map +1 -0
  363. package/dist/prebuild.js +6 -0
  364. package/dist/prebuild.js.map +1 -0
  365. package/dist/registry/cache-config.d.ts +13 -0
  366. package/dist/registry/cache-config.d.ts.map +1 -0
  367. package/dist/registry/cache-config.js +17 -0
  368. package/dist/registry/cache-config.js.map +1 -0
  369. package/dist/registry/class-registration.d.ts +31 -0
  370. package/dist/registry/class-registration.d.ts.map +1 -0
  371. package/dist/registry/class-registration.js +1074 -0
  372. package/dist/registry/class-registration.js.map +1 -0
  373. package/dist/registry/collection-resolution.d.ts +45 -0
  374. package/dist/registry/collection-resolution.d.ts.map +1 -0
  375. package/dist/registry/collection-resolution.js +121 -0
  376. package/dist/registry/collection-resolution.js.map +1 -0
  377. package/dist/registry/collision-policy.d.ts +179 -0
  378. package/dist/registry/collision-policy.d.ts.map +1 -0
  379. package/dist/registry/collision-policy.js +153 -0
  380. package/dist/registry/collision-policy.js.map +1 -0
  381. package/dist/registry/diagnostics.d.ts +58 -0
  382. package/dist/registry/diagnostics.d.ts.map +1 -0
  383. package/dist/registry/diagnostics.js +54 -0
  384. package/dist/registry/diagnostics.js.map +1 -0
  385. package/dist/registry/embedding-manager.d.ts +23 -0
  386. package/dist/registry/embedding-manager.d.ts.map +1 -0
  387. package/dist/registry/embedding-manager.js +62 -0
  388. package/dist/registry/embedding-manager.js.map +1 -0
  389. package/dist/registry/index.d.ts +13 -0
  390. package/dist/registry/index.d.ts.map +1 -0
  391. package/dist/registry/inheritance-resolver.d.ts +13 -0
  392. package/dist/registry/inheritance-resolver.d.ts.map +1 -0
  393. package/dist/registry/inheritance-resolver.js +244 -0
  394. package/dist/registry/inheritance-resolver.js.map +1 -0
  395. package/dist/registry/manifest-field-merge.d.ts +4 -0
  396. package/dist/registry/manifest-field-merge.d.ts.map +1 -0
  397. package/dist/registry/manifest-field-merge.js +82 -0
  398. package/dist/registry/manifest-field-merge.js.map +1 -0
  399. package/dist/registry/name-resolver.d.ts +102 -0
  400. package/dist/registry/name-resolver.d.ts.map +1 -0
  401. package/dist/registry/name-resolver.js +241 -0
  402. package/dist/registry/name-resolver.js.map +1 -0
  403. package/dist/registry/relationship-graph.d.ts +16 -0
  404. package/dist/registry/relationship-graph.d.ts.map +1 -0
  405. package/dist/registry/relationship-graph.js +79 -0
  406. package/dist/registry/relationship-graph.js.map +1 -0
  407. package/dist/registry/schema-builder.d.ts +113 -0
  408. package/dist/registry/schema-builder.d.ts.map +1 -0
  409. package/dist/registry/schema-builder.js +474 -0
  410. package/dist/registry/schema-builder.js.map +1 -0
  411. package/dist/registry/shared-state.d.ts +62 -0
  412. package/dist/registry/shared-state.d.ts.map +1 -0
  413. package/dist/registry/shared-state.js +135 -0
  414. package/dist/registry/shared-state.js.map +1 -0
  415. package/dist/registry/types.d.ts +667 -0
  416. package/dist/registry/types.d.ts.map +1 -0
  417. package/dist/registry/validator.d.ts +13 -0
  418. package/dist/registry/validator.d.ts.map +1 -0
  419. package/dist/registry/validator.js +138 -0
  420. package/dist/registry/validator.js.map +1 -0
  421. package/dist/registry.d.ts +1358 -0
  422. package/dist/registry.d.ts.map +1 -0
  423. package/dist/registry.js +2301 -0
  424. package/dist/registry.js.map +1 -0
  425. package/dist/runtime/client.d.ts +34 -0
  426. package/dist/runtime/client.d.ts.map +1 -0
  427. package/dist/runtime/client.js +104 -0
  428. package/dist/runtime/client.js.map +1 -0
  429. package/dist/runtime/index.d.ts +10 -0
  430. package/dist/runtime/index.d.ts.map +1 -0
  431. package/dist/runtime/mcp.d.ts +47 -0
  432. package/dist/runtime/mcp.d.ts.map +1 -0
  433. package/dist/runtime/mcp.js +72 -0
  434. package/dist/runtime/mcp.js.map +1 -0
  435. package/dist/runtime/server.d.ts +92 -0
  436. package/dist/runtime/server.d.ts.map +1 -0
  437. package/dist/runtime/server.js +390 -0
  438. package/dist/runtime/server.js.map +1 -0
  439. package/dist/runtime/types.d.ts +58 -0
  440. package/dist/runtime/types.d.ts.map +1 -0
  441. package/dist/runtime.d.ts +8 -0
  442. package/dist/runtime.d.ts.map +1 -0
  443. package/dist/runtime.js +10 -0
  444. package/dist/runtime.js.map +1 -0
  445. package/dist/scanner/import-scanner.d.ts +7 -0
  446. package/dist/scanner/import-scanner.d.ts.map +1 -0
  447. package/dist/scanner/index.d.ts +12 -0
  448. package/dist/scanner/index.d.ts.map +1 -0
  449. package/dist/scanner/manifest-generator.d.ts +304 -0
  450. package/dist/scanner/manifest-generator.d.ts.map +1 -0
  451. package/dist/scanner/manifest-generator.js +1707 -0
  452. package/dist/scanner/manifest-generator.js.map +1 -0
  453. package/dist/scanner/test-file-patterns.d.ts +18 -0
  454. package/dist/scanner/test-file-patterns.d.ts.map +1 -0
  455. package/dist/scanner/test-file-patterns.js +16 -0
  456. package/dist/scanner/test-file-patterns.js.map +1 -0
  457. package/dist/scanner/types.d.ts +313 -0
  458. package/dist/scanner/types.d.ts.map +1 -0
  459. package/dist/scanner/types.js +2 -0
  460. package/dist/scanner/types.js.map +1 -0
  461. package/dist/scanner.d.ts +6 -0
  462. package/dist/scanner.d.ts.map +1 -0
  463. package/dist/scanner.js +6 -0
  464. package/dist/scanner.js.map +1 -0
  465. package/dist/schema/code-generator.d.ts +53 -0
  466. package/dist/schema/code-generator.d.ts.map +1 -0
  467. package/dist/schema/ddl/base-strategy.d.ts +80 -0
  468. package/dist/schema/ddl/base-strategy.d.ts.map +1 -0
  469. package/dist/schema/ddl/base-strategy.js +240 -0
  470. package/dist/schema/ddl/base-strategy.js.map +1 -0
  471. package/dist/schema/ddl/duckdb-strategy.d.ts +33 -0
  472. package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -0
  473. package/dist/schema/ddl/duckdb-strategy.js +74 -0
  474. package/dist/schema/ddl/duckdb-strategy.js.map +1 -0
  475. package/dist/schema/ddl/index.d.ts +53 -0
  476. package/dist/schema/ddl/index.d.ts.map +1 -0
  477. package/dist/schema/ddl/index.js +80 -0
  478. package/dist/schema/ddl/index.js.map +1 -0
  479. package/dist/schema/ddl/json-duckdb-strategy.d.ts +8 -0
  480. package/dist/schema/ddl/json-duckdb-strategy.d.ts.map +1 -0
  481. package/dist/schema/ddl/json-duckdb-strategy.js +14 -0
  482. package/dist/schema/ddl/json-duckdb-strategy.js.map +1 -0
  483. package/dist/schema/ddl/postgres-strategy.d.ts +29 -0
  484. package/dist/schema/ddl/postgres-strategy.d.ts.map +1 -0
  485. package/dist/schema/ddl/postgres-strategy.js +102 -0
  486. package/dist/schema/ddl/postgres-strategy.js.map +1 -0
  487. package/dist/schema/ddl/sqlite-strategy.d.ts +38 -0
  488. package/dist/schema/ddl/sqlite-strategy.d.ts.map +1 -0
  489. package/dist/schema/ddl/sqlite-strategy.js +74 -0
  490. package/dist/schema/ddl/sqlite-strategy.js.map +1 -0
  491. package/dist/schema/ddl/types.d.ts +114 -0
  492. package/dist/schema/ddl/types.d.ts.map +1 -0
  493. package/dist/schema/generator.d.ts +176 -0
  494. package/dist/schema/generator.d.ts.map +1 -0
  495. package/dist/schema/generator.js +1076 -0
  496. package/dist/schema/generator.js.map +1 -0
  497. package/dist/schema/index-utils.d.ts +19 -0
  498. package/dist/schema/index-utils.d.ts.map +1 -0
  499. package/dist/schema/index-utils.js +32 -0
  500. package/dist/schema/index-utils.js.map +1 -0
  501. package/dist/schema/index.d.ts +13 -0
  502. package/dist/schema/index.d.ts.map +1 -0
  503. package/dist/schema/override-system.d.ts +43 -0
  504. package/dist/schema/override-system.d.ts.map +1 -0
  505. package/dist/schema/schema-aggregator.d.ts +112 -0
  506. package/dist/schema/schema-aggregator.d.ts.map +1 -0
  507. package/dist/schema/schema-manager.d.ts +95 -0
  508. package/dist/schema/schema-manager.d.ts.map +1 -0
  509. package/dist/schema/schema-manager.js +283 -0
  510. package/dist/schema/schema-manager.js.map +1 -0
  511. package/dist/schema/sql-identifiers.d.ts +107 -0
  512. package/dist/schema/sql-identifiers.d.ts.map +1 -0
  513. package/dist/schema/sql-identifiers.js +190 -0
  514. package/dist/schema/sql-identifiers.js.map +1 -0
  515. package/dist/schema/table-verifier.d.ts +10 -0
  516. package/dist/schema/table-verifier.d.ts.map +1 -0
  517. package/dist/schema/table-verifier.js +37 -0
  518. package/dist/schema/table-verifier.js.map +1 -0
  519. package/dist/schema/types.d.ts +241 -0
  520. package/dist/schema/types.d.ts.map +1 -0
  521. package/dist/schema/utils.d.ts +32 -0
  522. package/dist/schema/utils.d.ts.map +1 -0
  523. package/dist/schema/utils.js +134 -0
  524. package/dist/schema/utils.js.map +1 -0
  525. package/dist/scripts/create-wrappers.js +89 -0
  526. package/dist/scripts/generate-manifest.js +155 -0
  527. package/dist/scripts/generate-test-manifest.js +77 -0
  528. package/dist/scripts/migrate-datetime-to-timestamp.ts +310 -0
  529. package/dist/scripts/prepack.js +49 -0
  530. package/dist/signals/bus.d.ts +64 -0
  531. package/dist/signals/bus.d.ts.map +1 -0
  532. package/dist/signals/bus.js +102 -0
  533. package/dist/signals/bus.js.map +1 -0
  534. package/dist/signals/index.d.ts +11 -0
  535. package/dist/signals/index.d.ts.map +1 -0
  536. package/dist/signals/sanitizer.d.ts +54 -0
  537. package/dist/signals/sanitizer.d.ts.map +1 -0
  538. package/dist/signals/sanitizer.js +111 -0
  539. package/dist/signals/sanitizer.js.map +1 -0
  540. package/dist/smrt-knowledge.json +335 -0
  541. package/dist/system/compatibility.d.ts +8 -0
  542. package/dist/system/compatibility.d.ts.map +1 -0
  543. package/dist/system/compatibility.js +409 -0
  544. package/dist/system/compatibility.js.map +1 -0
  545. package/dist/system/index.d.ts +9 -0
  546. package/dist/system/index.d.ts.map +1 -0
  547. package/dist/system/schema.d.ts +69 -0
  548. package/dist/system/schema.d.ts.map +1 -0
  549. package/dist/system/schema.js +271 -0
  550. package/dist/system/schema.js.map +1 -0
  551. package/dist/system/types.d.ts +135 -0
  552. package/dist/system/types.d.ts.map +1 -0
  553. package/dist/system-fields.d.ts +44 -0
  554. package/dist/system-fields.d.ts.map +1 -0
  555. package/dist/system-fields.js +55 -0
  556. package/dist/system-fields.js.map +1 -0
  557. package/dist/table-cache.d.ts +28 -0
  558. package/dist/table-cache.d.ts.map +1 -0
  559. package/dist/table-cache.js +21 -0
  560. package/dist/table-cache.js.map +1 -0
  561. package/dist/test-utils.d.ts +140 -0
  562. package/dist/test-utils.d.ts.map +1 -0
  563. package/dist/testing/database.d.ts +73 -0
  564. package/dist/testing/database.d.ts.map +1 -0
  565. package/dist/testing/database.js +204 -0
  566. package/dist/testing/database.js.map +1 -0
  567. package/dist/testing/index.d.ts +21 -0
  568. package/dist/testing/index.d.ts.map +1 -0
  569. package/dist/testing.d.ts +6 -0
  570. package/dist/testing.d.ts.map +1 -0
  571. package/dist/testing.js +5 -0
  572. package/dist/testing.js.map +1 -0
  573. package/dist/tools/index.d.ts +8 -0
  574. package/dist/tools/index.d.ts.map +1 -0
  575. package/dist/tools/tool-executor.d.ts +101 -0
  576. package/dist/tools/tool-executor.d.ts.map +1 -0
  577. package/dist/tools/tool-executor.js +142 -0
  578. package/dist/tools/tool-executor.js.map +1 -0
  579. package/dist/tools/tool-generator.d.ts +54 -0
  580. package/dist/tools/tool-generator.d.ts.map +1 -0
  581. package/dist/tools/tool-generator.js +121 -0
  582. package/dist/tools/tool-generator.js.map +1 -0
  583. package/dist/utils/chunk.d.ts +32 -0
  584. package/dist/utils/chunk.d.ts.map +1 -0
  585. package/dist/utils/chunk.js +14 -0
  586. package/dist/utils/chunk.js.map +1 -0
  587. package/dist/utils/import-workspace-module.d.ts +8 -0
  588. package/dist/utils/import-workspace-module.d.ts.map +1 -0
  589. package/dist/utils/import-workspace-module.js +81 -0
  590. package/dist/utils/import-workspace-module.js.map +1 -0
  591. package/dist/utils/json.d.ts +102 -0
  592. package/dist/utils/json.d.ts.map +1 -0
  593. package/dist/utils/json.js +43 -0
  594. package/dist/utils/json.js.map +1 -0
  595. package/dist/utils/lru-cache.d.ts +69 -0
  596. package/dist/utils/lru-cache.d.ts.map +1 -0
  597. package/dist/utils/lru-cache.js +100 -0
  598. package/dist/utils/lru-cache.js.map +1 -0
  599. package/dist/utils/naming.d.ts +16 -0
  600. package/dist/utils/naming.d.ts.map +1 -0
  601. package/dist/utils/naming.js +23 -0
  602. package/dist/utils/naming.js.map +1 -0
  603. package/dist/utils/qualified-names.d.ts +122 -0
  604. package/dist/utils/qualified-names.d.ts.map +1 -0
  605. package/dist/utils/qualified-names.js +82 -0
  606. package/dist/utils/qualified-names.js.map +1 -0
  607. package/dist/utils/scanner-module.d.ts +37 -0
  608. package/dist/utils/scanner-module.d.ts.map +1 -0
  609. package/dist/utils.d.ts +177 -0
  610. package/dist/utils.d.ts.map +1 -0
  611. package/dist/utils.js +185 -0
  612. package/dist/utils.js.map +1 -0
  613. package/dist/vite-plugin/import-build-aware.d.ts +68 -0
  614. package/dist/vite-plugin/import-build-aware.d.ts.map +1 -0
  615. package/dist/vite-plugin/import-build-aware.js +72 -0
  616. package/dist/vite-plugin/import-build-aware.js.map +1 -0
  617. package/dist/vite-plugin/index.d.ts +59 -0
  618. package/dist/vite-plugin/index.d.ts.map +1 -0
  619. package/dist/vite-plugin/index.js +1400 -0
  620. package/dist/vite-plugin/index.js.map +1 -0
  621. package/dist/vite-plugin/sveltekit-generator.d.ts +66 -0
  622. package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -0
  623. package/dist/vite-plugin/sveltekit-generator.js +1375 -0
  624. package/dist/vite-plugin/sveltekit-generator.js.map +1 -0
  625. package/dist/vite-plugin/templates/default-ui.ts +432 -0
  626. package/dist/vite-plugin/templates/default.html +206 -0
  627. package/dist/vite-plugin.d.ts +8 -0
  628. package/dist/vite-plugin.d.ts.map +1 -0
  629. package/dist/vite-plugin.js +11 -0
  630. package/dist/vite-plugin.js.map +1 -0
  631. package/package.json +208 -0
@@ -0,0 +1,124 @@
1
+ import { Signal, SignalAdapter } from '@happyvertical/smrt-types';
2
+ /**
3
+ * Signal filter function
4
+ *
5
+ * @param signal - Signal to evaluate
6
+ * @returns True if signal should be sent to subscriber
7
+ */
8
+ export type SignalFilter = (signal: Signal) => boolean;
9
+ /**
10
+ * Signal subscriber callback
11
+ */
12
+ export type SignalSubscriber = (signal: Signal) => void | Promise<void>;
13
+ /**
14
+ * Subscription configuration
15
+ */
16
+ export interface Subscription {
17
+ /** Unique subscription ID */
18
+ id: string;
19
+ /** Callback to invoke with signals */
20
+ callback: SignalSubscriber;
21
+ /** Optional filter to apply before sending */
22
+ filter?: SignalFilter;
23
+ }
24
+ /**
25
+ * Pub/Sub Adapter - Broadcasts signals to subscribers
26
+ *
27
+ * Enables real-time updates for UI clients via WebSocket/SSE or
28
+ * internal event-driven architectures via callbacks.
29
+ *
30
+ * Features:
31
+ * - Multiple subscribers with independent filters
32
+ * - Fire-and-forget delivery (errors don't block other subscribers)
33
+ * - Flexible filtering (by class, method, type, etc.)
34
+ * - Subscription management (add, remove, list)
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const pubsub = new PubSubAdapter();
39
+ * signalBus.register(pubsub);
40
+ *
41
+ * // Subscribe to all error signals
42
+ * const subId = pubsub.subscribe(
43
+ * (signal) => console.error('Error:', signal),
44
+ * (signal) => signal.type === 'error'
45
+ * );
46
+ *
47
+ * // Later, unsubscribe
48
+ * pubsub.unsubscribe(subId);
49
+ * ```
50
+ */
51
+ export declare class PubSubAdapter implements SignalAdapter {
52
+ private subscriptions;
53
+ private nextSubscriptionId;
54
+ /**
55
+ * Handle a signal and broadcast to subscribers
56
+ *
57
+ * @param signal - Signal to broadcast
58
+ */
59
+ handle(signal: Signal): Promise<void>;
60
+ /**
61
+ * Subscribe to signals
62
+ *
63
+ * @param callback - Function to call with matching signals
64
+ * @param filter - Optional filter to apply before sending
65
+ * @returns Subscription ID for later unsubscribe
66
+ */
67
+ subscribe(callback: SignalSubscriber, filter?: SignalFilter): string;
68
+ /**
69
+ * Unsubscribe from signals
70
+ *
71
+ * @param subscriptionId - ID returned from subscribe()
72
+ * @returns True if subscription was found and removed
73
+ */
74
+ unsubscribe(subscriptionId: string): boolean;
75
+ /**
76
+ * Get count of active subscriptions
77
+ *
78
+ * @returns Number of active subscribers
79
+ */
80
+ get subscriberCount(): number;
81
+ /**
82
+ * Clear all subscriptions
83
+ *
84
+ * Removes all subscribers. Useful for cleanup or testing.
85
+ */
86
+ clearSubscriptions(): void;
87
+ /**
88
+ * Create filter for specific class
89
+ *
90
+ * @param className - Class name to match
91
+ * @returns Filter function
92
+ */
93
+ static filterByClass(className: string): SignalFilter;
94
+ /**
95
+ * Create filter for specific method
96
+ *
97
+ * @param methodName - Method name to match
98
+ * @returns Filter function
99
+ */
100
+ static filterByMethod(methodName: string): SignalFilter;
101
+ /**
102
+ * Create filter for specific signal type
103
+ *
104
+ * @param type - Signal type to match
105
+ * @returns Filter function
106
+ */
107
+ static filterByType(type: 'start' | 'step' | 'end' | 'error'): SignalFilter;
108
+ /**
109
+ * Create filter for specific class and method
110
+ *
111
+ * @param className - Class name to match
112
+ * @param methodName - Method name to match
113
+ * @returns Filter function
114
+ */
115
+ static filterByClassAndMethod(className: string, methodName: string): SignalFilter;
116
+ /**
117
+ * Combine multiple filters with AND logic
118
+ *
119
+ * @param filters - Filters to combine
120
+ * @returns Combined filter function
121
+ */
122
+ static combineFilters(...filters: SignalFilter[]): SignalFilter;
123
+ }
124
+ //# sourceMappingURL=pubsub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/adapters/pubsub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAIvE;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,aAAc,YAAW,aAAa;IACjD,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,kBAAkB,CAAK;IAE/B;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3C;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM;IAYpE;;;;;OAKG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;OAIG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;;OAIG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAIrD;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAIvD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,YAAY;IAI3E;;;;;;OAMG;IACH,MAAM,CAAC,sBAAsB,CAC3B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,YAAY;IAKf;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY;CAGhE"}
@@ -0,0 +1,121 @@
1
+ import { createLogger } from "@happyvertical/logger";
2
+ const logger = createLogger({ level: "info" });
3
+ class PubSubAdapter {
4
+ subscriptions = /* @__PURE__ */ new Map();
5
+ nextSubscriptionId = 1;
6
+ /**
7
+ * Handle a signal and broadcast to subscribers
8
+ *
9
+ * @param signal - Signal to broadcast
10
+ */
11
+ async handle(signal) {
12
+ const promises = [];
13
+ for (const subscription of this.subscriptions.values()) {
14
+ if (subscription.filter && !subscription.filter(signal)) {
15
+ continue;
16
+ }
17
+ const promise = (async () => {
18
+ try {
19
+ await subscription.callback(signal);
20
+ } catch (error) {
21
+ logger.error(`PubSubAdapter: Subscriber ${subscription.id} error`, {
22
+ error
23
+ });
24
+ }
25
+ })();
26
+ promises.push(promise);
27
+ }
28
+ await Promise.allSettled(promises);
29
+ }
30
+ /**
31
+ * Subscribe to signals
32
+ *
33
+ * @param callback - Function to call with matching signals
34
+ * @param filter - Optional filter to apply before sending
35
+ * @returns Subscription ID for later unsubscribe
36
+ */
37
+ subscribe(callback, filter) {
38
+ const id = `sub-${this.nextSubscriptionId++}`;
39
+ this.subscriptions.set(id, {
40
+ id,
41
+ callback,
42
+ filter
43
+ });
44
+ return id;
45
+ }
46
+ /**
47
+ * Unsubscribe from signals
48
+ *
49
+ * @param subscriptionId - ID returned from subscribe()
50
+ * @returns True if subscription was found and removed
51
+ */
52
+ unsubscribe(subscriptionId) {
53
+ return this.subscriptions.delete(subscriptionId);
54
+ }
55
+ /**
56
+ * Get count of active subscriptions
57
+ *
58
+ * @returns Number of active subscribers
59
+ */
60
+ get subscriberCount() {
61
+ return this.subscriptions.size;
62
+ }
63
+ /**
64
+ * Clear all subscriptions
65
+ *
66
+ * Removes all subscribers. Useful for cleanup or testing.
67
+ */
68
+ clearSubscriptions() {
69
+ this.subscriptions.clear();
70
+ }
71
+ /**
72
+ * Create filter for specific class
73
+ *
74
+ * @param className - Class name to match
75
+ * @returns Filter function
76
+ */
77
+ static filterByClass(className) {
78
+ return (signal) => signal.className === className;
79
+ }
80
+ /**
81
+ * Create filter for specific method
82
+ *
83
+ * @param methodName - Method name to match
84
+ * @returns Filter function
85
+ */
86
+ static filterByMethod(methodName) {
87
+ return (signal) => signal.method === methodName;
88
+ }
89
+ /**
90
+ * Create filter for specific signal type
91
+ *
92
+ * @param type - Signal type to match
93
+ * @returns Filter function
94
+ */
95
+ static filterByType(type) {
96
+ return (signal) => signal.type === type;
97
+ }
98
+ /**
99
+ * Create filter for specific class and method
100
+ *
101
+ * @param className - Class name to match
102
+ * @param methodName - Method name to match
103
+ * @returns Filter function
104
+ */
105
+ static filterByClassAndMethod(className, methodName) {
106
+ return (signal) => signal.className === className && signal.method === methodName;
107
+ }
108
+ /**
109
+ * Combine multiple filters with AND logic
110
+ *
111
+ * @param filters - Filters to combine
112
+ * @returns Combined filter function
113
+ */
114
+ static combineFilters(...filters) {
115
+ return (signal) => filters.every((filter) => filter(signal));
116
+ }
117
+ }
118
+ export {
119
+ PubSubAdapter
120
+ };
121
+ //# sourceMappingURL=pubsub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.js","sources":["../../src/adapters/pubsub.ts"],"sourcesContent":["/**\n * Pub/Sub Adapter for Signal System\n *\n * Broadcasts signals to subscribers for real-time updates.\n * Supports multiple subscriber types (callbacks, WebSocket, SSE).\n */\n\nimport { createLogger } from '@happyvertical/logger';\nimport type { Signal, SignalAdapter } from '@happyvertical/smrt-types';\n\nconst logger = createLogger({ level: 'info' });\n\n/**\n * Signal filter function\n *\n * @param signal - Signal to evaluate\n * @returns True if signal should be sent to subscriber\n */\nexport type SignalFilter = (signal: Signal) => boolean;\n\n/**\n * Signal subscriber callback\n */\nexport type SignalSubscriber = (signal: Signal) => void | Promise<void>;\n\n/**\n * Subscription configuration\n */\nexport interface Subscription {\n /** Unique subscription ID */\n id: string;\n /** Callback to invoke with signals */\n callback: SignalSubscriber;\n /** Optional filter to apply before sending */\n filter?: SignalFilter;\n}\n\n/**\n * Pub/Sub Adapter - Broadcasts signals to subscribers\n *\n * Enables real-time updates for UI clients via WebSocket/SSE or\n * internal event-driven architectures via callbacks.\n *\n * Features:\n * - Multiple subscribers with independent filters\n * - Fire-and-forget delivery (errors don't block other subscribers)\n * - Flexible filtering (by class, method, type, etc.)\n * - Subscription management (add, remove, list)\n *\n * @example\n * ```typescript\n * const pubsub = new PubSubAdapter();\n * signalBus.register(pubsub);\n *\n * // Subscribe to all error signals\n * const subId = pubsub.subscribe(\n * (signal) => console.error('Error:', signal),\n * (signal) => signal.type === 'error'\n * );\n *\n * // Later, unsubscribe\n * pubsub.unsubscribe(subId);\n * ```\n */\nexport class PubSubAdapter implements SignalAdapter {\n private subscriptions: Map<string, Subscription> = new Map();\n private nextSubscriptionId = 1;\n\n /**\n * Handle a signal and broadcast to subscribers\n *\n * @param signal - Signal to broadcast\n */\n async handle(signal: Signal): Promise<void> {\n // Broadcast to all matching subscribers\n const promises: Promise<void>[] = [];\n\n for (const subscription of this.subscriptions.values()) {\n // Apply filter if present\n if (subscription.filter && !subscription.filter(signal)) {\n continue;\n }\n\n // Execute callback with error handling\n const promise = (async () => {\n try {\n await subscription.callback(signal);\n } catch (error) {\n logger.error(`PubSubAdapter: Subscriber ${subscription.id} error`, {\n error,\n });\n }\n })();\n\n promises.push(promise);\n }\n\n // Wait for all subscribers to process (fire-and-forget style)\n await Promise.allSettled(promises);\n }\n\n /**\n * Subscribe to signals\n *\n * @param callback - Function to call with matching signals\n * @param filter - Optional filter to apply before sending\n * @returns Subscription ID for later unsubscribe\n */\n subscribe(callback: SignalSubscriber, filter?: SignalFilter): string {\n const id = `sub-${this.nextSubscriptionId++}`;\n\n this.subscriptions.set(id, {\n id,\n callback,\n filter,\n });\n\n return id;\n }\n\n /**\n * Unsubscribe from signals\n *\n * @param subscriptionId - ID returned from subscribe()\n * @returns True if subscription was found and removed\n */\n unsubscribe(subscriptionId: string): boolean {\n return this.subscriptions.delete(subscriptionId);\n }\n\n /**\n * Get count of active subscriptions\n *\n * @returns Number of active subscribers\n */\n get subscriberCount(): number {\n return this.subscriptions.size;\n }\n\n /**\n * Clear all subscriptions\n *\n * Removes all subscribers. Useful for cleanup or testing.\n */\n clearSubscriptions(): void {\n this.subscriptions.clear();\n }\n\n /**\n * Create filter for specific class\n *\n * @param className - Class name to match\n * @returns Filter function\n */\n static filterByClass(className: string): SignalFilter {\n return (signal: Signal) => signal.className === className;\n }\n\n /**\n * Create filter for specific method\n *\n * @param methodName - Method name to match\n * @returns Filter function\n */\n static filterByMethod(methodName: string): SignalFilter {\n return (signal: Signal) => signal.method === methodName;\n }\n\n /**\n * Create filter for specific signal type\n *\n * @param type - Signal type to match\n * @returns Filter function\n */\n static filterByType(type: 'start' | 'step' | 'end' | 'error'): SignalFilter {\n return (signal: Signal) => signal.type === type;\n }\n\n /**\n * Create filter for specific class and method\n *\n * @param className - Class name to match\n * @param methodName - Method name to match\n * @returns Filter function\n */\n static filterByClassAndMethod(\n className: string,\n methodName: string,\n ): SignalFilter {\n return (signal: Signal) =>\n signal.className === className && signal.method === methodName;\n }\n\n /**\n * Combine multiple filters with AND logic\n *\n * @param filters - Filters to combine\n * @returns Combined filter function\n */\n static combineFilters(...filters: SignalFilter[]): SignalFilter {\n return (signal: Signal) => filters.every((filter) => filter(signal));\n }\n}\n"],"names":[],"mappings":";AAUA,MAAM,SAAS,aAAa,EAAE,OAAO,QAAQ;AAsDtC,MAAM,cAAuC;AAAA,EAC1C,oCAA+C,IAAA;AAAA,EAC/C,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO7B,MAAM,OAAO,QAA+B;AAE1C,UAAM,WAA4B,CAAA;AAElC,eAAW,gBAAgB,KAAK,cAAc,OAAA,GAAU;AAEtD,UAAI,aAAa,UAAU,CAAC,aAAa,OAAO,MAAM,GAAG;AACvD;AAAA,MACF;AAGA,YAAM,WAAW,YAAY;AAC3B,YAAI;AACF,gBAAM,aAAa,SAAS,MAAM;AAAA,QACpC,SAAS,OAAO;AACd,iBAAO,MAAM,6BAA6B,aAAa,EAAE,UAAU;AAAA,YACjE;AAAA,UAAA,CACD;AAAA,QACH;AAAA,MACF,GAAA;AAEA,eAAS,KAAK,OAAO;AAAA,IACvB;AAGA,UAAM,QAAQ,WAAW,QAAQ;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,UAAU,UAA4B,QAA+B;AACnE,UAAM,KAAK,OAAO,KAAK,oBAAoB;AAE3C,SAAK,cAAc,IAAI,IAAI;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,gBAAiC;AAC3C,WAAO,KAAK,cAAc,OAAO,cAAc;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,kBAA0B;AAC5B,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAA2B;AACzB,SAAK,cAAc,MAAA;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,cAAc,WAAiC;AACpD,WAAO,CAAC,WAAmB,OAAO,cAAc;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,eAAe,YAAkC;AACtD,WAAO,CAAC,WAAmB,OAAO,WAAW;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAa,MAAwD;AAC1E,WAAO,CAAC,WAAmB,OAAO,SAAS;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,uBACL,WACA,YACc;AACd,WAAO,CAAC,WACN,OAAO,cAAc,aAAa,OAAO,WAAW;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,kBAAkB,SAAuC;AAC9D,WAAO,CAAC,WAAmB,QAAQ,MAAM,CAAC,WAAW,OAAO,MAAM,CAAC;AAAA,EACrE;AACF;"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @smrt/core - Browser-safe entry point
3
+ *
4
+ * This entry point excludes Node.js-only code generators (CLI, REST, MCP)
5
+ * that contain shebangs and Node.js-specific APIs. Use this for browser
6
+ * builds, federation, and client-side applications.
7
+ *
8
+ * Excluded:
9
+ * - Code generators (CLIGenerator, APIGenerator, MCPGenerator)
10
+ * - Runtime manifest utilities (Node.js-only)
11
+ * - Prebuild utilities (Node.js-only)
12
+ *
13
+ * For Node.js applications, use the main entry point instead:
14
+ * import { ... } from '@happyvertical/smrt-core';
15
+ */
16
+ export * from './adapters/index';
17
+ export * from './class';
18
+ export * from './collection';
19
+ export type { AiUsageConfig, GlobalSignalConfig, MetricsConfig, PubSubConfig, } from './config';
20
+ export { config } from './config';
21
+ export * from './errors';
22
+ export { type HierarchyView, SmrtHierarchical } from './hierarchical';
23
+ export { type JunctionAttachOptions, type JunctionFilterOptions, SmrtJunction, } from './junction';
24
+ export * from './object';
25
+ export { SmrtPolymorphicAssociation, type SmrtPolymorphicAssociationOptions, } from './polymorphic-association';
26
+ export * from './registry';
27
+ export { smrt as smrtRegistry } from './registry';
28
+ export * from './signals/index';
29
+ export * from './system/index';
30
+ export type { DiscoveryStrategy, ForgetOptions, ForgetScopeOptions, NoteMetadata, NoteOptions, RecallAllOptions, RecallOptions, SystemTableConfig, } from './system/types';
31
+ export * from './tools/index';
32
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,cAAc,kBAAkB,CAAC;AAEjC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,KAAK,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,GACvC,MAAM,2BAA2B,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AAElD,cAAc,iBAAiB,CAAC;AAEhC,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { AiUsageCollector, AiUsagePersistenceHandler } from "./adapters/ai-usage.js";
2
+ import { DEFAULT_AI_COST_RATES, estimateAiUsageCost } from "./adapters/cost-rates.js";
3
+ import { MetricsAdapter } from "./adapters/metrics.js";
4
+ import { PubSubAdapter } from "./adapters/pubsub.js";
5
+ import { SmrtClass } from "./class.js";
6
+ import { SmrtCollection } from "./collection.js";
7
+ import { config } from "./config.js";
8
+ import { AIError, ConfigurationError, DatabaseError, ErrorUtils, FilesystemError, NetworkError, RuntimeError, SmrtError, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils } from "./errors.js";
9
+ import { SmrtHierarchical } from "./hierarchical.js";
10
+ import { SmrtJunction } from "./junction.js";
11
+ import { SmrtObject } from "./object.js";
12
+ import { SmrtPolymorphicAssociation } from "./polymorphic-association.js";
13
+ import { ObjectRegistry, smrt, smrt as smrt2 } from "./registry.js";
14
+ import { SignalBus } from "./signals/bus.js";
15
+ import { SignalSanitizer } from "./signals/sanitizer.js";
16
+ import { ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, tableExists } from "./system/compatibility.js";
17
+ import { executeToolCall, executeToolCalls, formatToolResults, validateToolCall } from "./tools/tool-executor.js";
18
+ import { convertTypeToJsonSchema, generateToolFromMethod, generateToolManifest, shouldIncludeMethod } from "./tools/tool-generator.js";
19
+ import { SMRT_COLLECTION_BASE_NAMES, isSmrtCollectionExtendsName } from "./registry/collection-resolution.js";
20
+ export {
21
+ AIError,
22
+ AiUsageCollector,
23
+ AiUsagePersistenceHandler,
24
+ ConfigurationError,
25
+ DEFAULT_AI_COST_RATES,
26
+ DatabaseError,
27
+ ErrorUtils,
28
+ FilesystemError,
29
+ MetricsAdapter,
30
+ NetworkError,
31
+ ObjectRegistry,
32
+ PubSubAdapter,
33
+ RuntimeError,
34
+ SMRT_COLLECTION_BASE_NAMES,
35
+ SignalBus,
36
+ SignalSanitizer,
37
+ SmrtClass,
38
+ SmrtCollection,
39
+ SmrtError,
40
+ SmrtHierarchical,
41
+ SmrtJunction,
42
+ SmrtObject,
43
+ SmrtPolymorphicAssociation,
44
+ TenantIsolationError,
45
+ ValidationError,
46
+ ValidationReport,
47
+ ValidationUtils,
48
+ config,
49
+ convertTypeToJsonSchema,
50
+ ensureDispatchSubscriptionsSystemTableCompatibility,
51
+ ensureDispatchSystemTableCompatibility,
52
+ ensureJobEventsSystemTableCompatibility,
53
+ ensureJobsSystemTableCompatibility,
54
+ ensureLegacySystemTableCompatibility,
55
+ estimateAiUsageCost,
56
+ executeToolCall,
57
+ executeToolCalls,
58
+ formatToolResults,
59
+ generateToolFromMethod,
60
+ generateToolManifest,
61
+ isSmrtCollectionExtendsName,
62
+ shouldIncludeMethod,
63
+ smrt,
64
+ smrt2 as smrtRegistry,
65
+ tableExists,
66
+ validateToolCall
67
+ };
68
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,27 @@
1
+ import { RelationshipMetadata } from './registry/types';
2
+ /**
3
+ * Compute the canonical child-accessor method name for a `@oneToMany` field.
4
+ *
5
+ * `terms` → `getTerms`, `relationshipsFrom` → `getRelationshipsFrom`. Exported
6
+ * so tests and tooling can derive the name without re-implementing the rule.
7
+ *
8
+ * @param fieldName - The `@oneToMany` property name on the parent class
9
+ * @returns The generated accessor method name
10
+ */
11
+ export declare function childAccessorName(fieldName: string): string;
12
+ /**
13
+ * Install generated child accessors for a class's `@oneToMany` relationships.
14
+ *
15
+ * Called from the `@smrt()` decorator immediately after the class is
16
+ * registered, so `relationships` reflects the class's own (decorator- or
17
+ * manifest-derived) relationship metadata. Non-`oneToMany` entries are ignored,
18
+ * so callers may pass the unfiltered relationship list.
19
+ *
20
+ * @param ctor - The registered class constructor (its prototype is augmented)
21
+ * @param relationships - Relationship metadata for the class (from
22
+ * `ObjectRegistry.getRelationships`)
23
+ */
24
+ export declare function applyOneToManyChildAccessors(ctor: {
25
+ prototype?: any;
26
+ } | undefined, relationships: RelationshipMetadata[] | undefined): void;
27
+ //# sourceMappingURL=child-accessors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-accessors.d.ts","sourceRoot":"","sources":["../src/child-accessors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,EACrC,aAAa,EAAE,oBAAoB,EAAE,GAAG,SAAS,GAChD,IAAI,CAoCN"}
@@ -0,0 +1,35 @@
1
+ function childAccessorName(fieldName) {
2
+ return `get${fieldName.charAt(0).toUpperCase()}${fieldName.slice(1)}`;
3
+ }
4
+ function applyOneToManyChildAccessors(ctor, relationships) {
5
+ const prototype = ctor?.prototype;
6
+ if (!prototype || !relationships) {
7
+ return;
8
+ }
9
+ for (const relationship of relationships) {
10
+ if (relationship.type !== "oneToMany") {
11
+ continue;
12
+ }
13
+ const fieldName = relationship.fieldName;
14
+ if (!fieldName) {
15
+ continue;
16
+ }
17
+ const accessorName = childAccessorName(fieldName);
18
+ if (accessorName in prototype) {
19
+ continue;
20
+ }
21
+ Object.defineProperty(prototype, accessorName, {
22
+ value: function generatedChildAccessor() {
23
+ return this.loadRelatedMany(fieldName);
24
+ },
25
+ writable: true,
26
+ enumerable: false,
27
+ configurable: true
28
+ });
29
+ }
30
+ }
31
+ export {
32
+ applyOneToManyChildAccessors,
33
+ childAccessorName
34
+ };
35
+ //# sourceMappingURL=child-accessors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-accessors.js","sources":["../src/child-accessors.ts"],"sourcesContent":["/**\n * R10 — consolidated child-accessor API for `@oneToMany` relationships.\n *\n * Before R10 every model hand-rolled its own child accessor (`getTerms`,\n * `getChildren`, `getForProfile`, …) with inconsistent names and shapes. This\n * module installs ONE canonical accessor per `@oneToMany` field at class\n * registration time: a `@oneToMany('Child') items` field gains a `getItems()`\n * instance method that delegates to the existing `loadRelatedMany('items')`\n * resolver — the same code path used for lazy loading and `include:` eager\n * loading, which itself queries through the child collection (the queryable\n * primitive).\n *\n * Two invariants make this safe to apply to every registered class:\n *\n * - **Additive.** If a method of the computed name already exists anywhere on\n * the prototype chain — a hand-rolled accessor like\n * `ProfileRelationship.getTerms()`, a differently-shaped `Profile.getMetadata()`,\n * or a `SmrtObject` base method — it is left untouched. The generated\n * accessor never renames or shadows an existing public signature.\n * - **Runtime-only.** Accessors are attached to the prototype at registration;\n * they are invisible to the build-time manifest, so they never leak into the\n * generated REST/CLI/MCP surface (those read `classInfo.tools`/scanned\n * methods, not the runtime prototype). They are a developer-ergonomics\n * convenience layered on top of `loadRelatedMany`.\n *\n * Multiplicity note: when the child class declares more than one foreign key\n * back to the parent (e.g. `ProfileRelationship.fromProfileId` /\n * `toProfileId`), annotate the `@oneToMany` with `{ foreignKey: 'fromProfileId' }`\n * so `loadRelatedMany` resolves the correct inverse side. Without it the\n * resolver falls back to the first matching foreign key (legacy behavior). An\n * explicit `foreignKey` that matches no inverse FK is treated as an error.\n *\n * STI note: a child class inherits the base's generated accessor through the\n * prototype chain. `loadRelatedMany` resolves the inverse FK against the\n * instance's class AND its registered ancestors (see\n * `ObjectRegistry.getInverseRelationshipsForSelf`), so calling the accessor on\n * an STI subclass instance resolves a `@oneToMany` declared on its base.\n */\n\nimport type { RelationshipMetadata } from './registry/types';\n\n/**\n * Compute the canonical child-accessor method name for a `@oneToMany` field.\n *\n * `terms` → `getTerms`, `relationshipsFrom` → `getRelationshipsFrom`. Exported\n * so tests and tooling can derive the name without re-implementing the rule.\n *\n * @param fieldName - The `@oneToMany` property name on the parent class\n * @returns The generated accessor method name\n */\nexport function childAccessorName(fieldName: string): string {\n return `get${fieldName.charAt(0).toUpperCase()}${fieldName.slice(1)}`;\n}\n\n/**\n * Install generated child accessors for a class's `@oneToMany` relationships.\n *\n * Called from the `@smrt()` decorator immediately after the class is\n * registered, so `relationships` reflects the class's own (decorator- or\n * manifest-derived) relationship metadata. Non-`oneToMany` entries are ignored,\n * so callers may pass the unfiltered relationship list.\n *\n * @param ctor - The registered class constructor (its prototype is augmented)\n * @param relationships - Relationship metadata for the class (from\n * `ObjectRegistry.getRelationships`)\n */\nexport function applyOneToManyChildAccessors(\n ctor: { prototype?: any } | undefined,\n relationships: RelationshipMetadata[] | undefined,\n): void {\n const prototype = ctor?.prototype;\n if (!prototype || !relationships) {\n return;\n }\n\n for (const relationship of relationships) {\n if (relationship.type !== 'oneToMany') {\n continue;\n }\n\n const fieldName = relationship.fieldName;\n if (!fieldName) {\n continue;\n }\n\n const accessorName = childAccessorName(fieldName);\n\n // Additive only: never shadow a hand-rolled accessor (or any inherited\n // method, including SmrtObject base methods) of the same name. `in`\n // walks the full prototype chain.\n if (accessorName in prototype) {\n continue;\n }\n\n Object.defineProperty(prototype, accessorName, {\n value: function generatedChildAccessor(this: {\n loadRelatedMany(field: string): Promise<any[]>;\n }): Promise<any[]> {\n return this.loadRelatedMany(fieldName);\n },\n writable: true,\n enumerable: false,\n configurable: true,\n });\n }\n}\n"],"names":[],"mappings":"AAkDO,SAAS,kBAAkB,WAA2B;AAC3D,SAAO,MAAM,UAAU,OAAO,CAAC,EAAE,YAAA,CAAa,GAAG,UAAU,MAAM,CAAC,CAAC;AACrE;AAcO,SAAS,6BACd,MACA,eACM;AACN,QAAM,YAAY,MAAM;AACxB,MAAI,CAAC,aAAa,CAAC,eAAe;AAChC;AAAA,EACF;AAEA,aAAW,gBAAgB,eAAe;AACxC,QAAI,aAAa,SAAS,aAAa;AACrC;AAAA,IACF;AAEA,UAAM,YAAY,aAAa;AAC/B,QAAI,CAAC,WAAW;AACd;AAAA,IACF;AAEA,UAAM,eAAe,kBAAkB,SAAS;AAKhD,QAAI,gBAAgB,WAAW;AAC7B;AAAA,IACF;AAEA,WAAO,eAAe,WAAW,cAAc;AAAA,MAC7C,OAAO,SAAS,yBAEG;AACjB,eAAO,KAAK,gBAAgB,SAAS;AAAA,MACvC;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,cAAc;AAAA,IAAA,CACf;AAAA,EACH;AACF;"}