@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,102 @@
1
+ import { createLogger } from "@happyvertical/logger";
2
+ import { makeId } from "@happyvertical/utils";
3
+ import { SignalSanitizer } from "./sanitizer.js";
4
+ const logger = createLogger({ level: "info" });
5
+ class SignalBus {
6
+ adapters = [];
7
+ sanitizer;
8
+ /**
9
+ * Create a new SignalBus
10
+ *
11
+ * @param options - Configuration options
12
+ */
13
+ constructor(options) {
14
+ if (options && options.sanitization !== false && options.sanitization) {
15
+ this.sanitizer = new SignalSanitizer(options.sanitization);
16
+ }
17
+ }
18
+ /**
19
+ * Register a signal adapter
20
+ *
21
+ * @param adapter - Adapter to register
22
+ */
23
+ register(adapter) {
24
+ this.adapters.push(adapter);
25
+ }
26
+ /**
27
+ * Unregister a signal adapter
28
+ *
29
+ * Removes the adapter from the bus to prevent memory leaks.
30
+ *
31
+ * @param adapter - Adapter to unregister
32
+ * @returns True if adapter was found and removed
33
+ */
34
+ unregister(adapter) {
35
+ const index = this.adapters.indexOf(adapter);
36
+ if (index !== -1) {
37
+ this.adapters.splice(index, 1);
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ /**
43
+ * Clear all registered adapters
44
+ *
45
+ * Removes all adapters from the bus. Useful for cleanup or testing.
46
+ */
47
+ clear() {
48
+ this.adapters = [];
49
+ }
50
+ /**
51
+ * Emit a signal to all registered adapters
52
+ *
53
+ * Signals are sanitized (if configured) before being passed to adapters.
54
+ * Adapters are called in fire-and-forget mode - errors are logged
55
+ * but don't interrupt the main execution flow.
56
+ *
57
+ * @param signal - Signal to emit
58
+ */
59
+ async emit(signal) {
60
+ const sanitizedSignal = this.sanitizer ? this.sanitizer.sanitize(signal) : signal;
61
+ const promises = this.adapters.map(async (adapter, index) => {
62
+ try {
63
+ await adapter.handle(sanitizedSignal);
64
+ } catch (error) {
65
+ const adapterName = adapter.constructor.name !== "Object" ? adapter.constructor.name : `Adapter[${index}]`;
66
+ logger.error(`SignalBus: ${adapterName} failed to handle signal`, {
67
+ signalId: signal.id,
68
+ signalType: signal.type,
69
+ className: signal.className,
70
+ method: signal.method,
71
+ adapterIndex: index,
72
+ error: error instanceof Error ? {
73
+ message: error.message,
74
+ name: error.name,
75
+ stack: error.stack
76
+ } : error
77
+ });
78
+ }
79
+ });
80
+ void Promise.allSettled(promises);
81
+ }
82
+ /**
83
+ * Generate unique execution ID for method invocations
84
+ *
85
+ * @returns Unique execution ID (CUID2)
86
+ */
87
+ generateExecutionId() {
88
+ return makeId();
89
+ }
90
+ /**
91
+ * Get count of registered adapters
92
+ *
93
+ * @returns Number of registered adapters
94
+ */
95
+ get adapterCount() {
96
+ return this.adapters.length;
97
+ }
98
+ }
99
+ export {
100
+ SignalBus
101
+ };
102
+ //# sourceMappingURL=bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.js","sources":["../../src/signals/bus.ts"],"sourcesContent":["/**\n * Signal Bus for Universal Event Distribution\n *\n * This module provides the central SignalBus for distributing signals\n * to registered adapters (logging, metrics, pub/sub, etc.).\n */\n\nimport { createLogger } from '@happyvertical/logger';\nimport type { Signal, SignalAdapter } from '@happyvertical/smrt-types';\nimport { makeId } from '@happyvertical/utils';\nimport type { SanitizationConfig } from './sanitizer.js';\nimport { SignalSanitizer } from './sanitizer.js';\n\nconst logger = createLogger({ level: 'info' });\n\n/**\n * Central signal distribution bus\n *\n * SignalBus manages adapter registration and signal distribution\n * with fire-and-forget error handling.\n */\nexport class SignalBus {\n private adapters: SignalAdapter[] = [];\n private sanitizer?: SignalSanitizer;\n\n /**\n * Create a new SignalBus\n *\n * @param options - Configuration options\n */\n constructor(options?: { sanitization?: SanitizationConfig | false }) {\n if (options && options.sanitization !== false && options.sanitization) {\n this.sanitizer = new SignalSanitizer(options.sanitization);\n }\n }\n\n /**\n * Register a signal adapter\n *\n * @param adapter - Adapter to register\n */\n register(adapter: SignalAdapter): void {\n this.adapters.push(adapter);\n }\n\n /**\n * Unregister a signal adapter\n *\n * Removes the adapter from the bus to prevent memory leaks.\n *\n * @param adapter - Adapter to unregister\n * @returns True if adapter was found and removed\n */\n unregister(adapter: SignalAdapter): boolean {\n const index = this.adapters.indexOf(adapter);\n if (index !== -1) {\n this.adapters.splice(index, 1);\n return true;\n }\n return false;\n }\n\n /**\n * Clear all registered adapters\n *\n * Removes all adapters from the bus. Useful for cleanup or testing.\n */\n clear(): void {\n this.adapters = [];\n }\n\n /**\n * Emit a signal to all registered adapters\n *\n * Signals are sanitized (if configured) before being passed to adapters.\n * Adapters are called in fire-and-forget mode - errors are logged\n * but don't interrupt the main execution flow.\n *\n * @param signal - Signal to emit\n */\n async emit(signal: Signal): Promise<void> {\n // Sanitize signal if configured\n const sanitizedSignal = this.sanitizer\n ? this.sanitizer.sanitize(signal)\n : signal;\n\n // Fire-and-forget - don't await adapter promises\n const promises = this.adapters.map(async (adapter, index) => {\n try {\n await adapter.handle(sanitizedSignal);\n } catch (error) {\n // Log adapter errors with detailed context\n const adapterName =\n adapter.constructor.name !== 'Object'\n ? adapter.constructor.name\n : `Adapter[${index}]`;\n\n logger.error(`SignalBus: ${adapterName} failed to handle signal`, {\n signalId: signal.id,\n signalType: signal.type,\n className: signal.className,\n method: signal.method,\n adapterIndex: index,\n error:\n error instanceof Error\n ? {\n message: error.message,\n name: error.name,\n stack: error.stack,\n }\n : error,\n });\n }\n });\n\n // Don't wait for adapters to complete\n // They execute asynchronously without blocking the main flow\n void Promise.allSettled(promises);\n }\n\n /**\n * Generate unique execution ID for method invocations\n *\n * @returns Unique execution ID (CUID2)\n */\n generateExecutionId(): string {\n return makeId();\n }\n\n /**\n * Get count of registered adapters\n *\n * @returns Number of registered adapters\n */\n get adapterCount(): number {\n return this.adapters.length;\n }\n}\n"],"names":[],"mappings":";;;AAaA,MAAM,SAAS,aAAa,EAAE,OAAO,QAAQ;AAQtC,MAAM,UAAU;AAAA,EACb,WAA4B,CAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOR,YAAY,SAAyD;AACnE,QAAI,WAAW,QAAQ,iBAAiB,SAAS,QAAQ,cAAc;AACrE,WAAK,YAAY,IAAI,gBAAgB,QAAQ,YAAY;AAAA,IAC3D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,SAA8B;AACrC,SAAK,SAAS,KAAK,OAAO;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,SAAiC;AAC1C,UAAM,QAAQ,KAAK,SAAS,QAAQ,OAAO;AAC3C,QAAI,UAAU,IAAI;AAChB,WAAK,SAAS,OAAO,OAAO,CAAC;AAC7B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAc;AACZ,SAAK,WAAW,CAAA;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,KAAK,QAA+B;AAExC,UAAM,kBAAkB,KAAK,YACzB,KAAK,UAAU,SAAS,MAAM,IAC9B;AAGJ,UAAM,WAAW,KAAK,SAAS,IAAI,OAAO,SAAS,UAAU;AAC3D,UAAI;AACF,cAAM,QAAQ,OAAO,eAAe;AAAA,MACtC,SAAS,OAAO;AAEd,cAAM,cACJ,QAAQ,YAAY,SAAS,WACzB,QAAQ,YAAY,OACpB,WAAW,KAAK;AAEtB,eAAO,MAAM,cAAc,WAAW,4BAA4B;AAAA,UAChE,UAAU,OAAO;AAAA,UACjB,YAAY,OAAO;AAAA,UACnB,WAAW,OAAO;AAAA,UAClB,QAAQ,OAAO;AAAA,UACf,cAAc;AAAA,UACd,OACE,iBAAiB,QACb;AAAA,YACE,SAAS,MAAM;AAAA,YACf,MAAM,MAAM;AAAA,YACZ,OAAO,MAAM;AAAA,UAAA,IAEf;AAAA,QAAA,CACP;AAAA,MACH;AAAA,IACF,CAAC;AAID,SAAK,QAAQ,WAAW,QAAQ;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,sBAA8B;AAC5B,WAAO,OAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,eAAuB;AACzB,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Signal System - Universal Event Distribution
3
+ *
4
+ * Provides automatic method tracking and event distribution
5
+ * for logging, metrics, pub/sub, and other observability needs.
6
+ */
7
+ export type { Signal, SignalAdapter, SignalType, } from '@happyvertical/smrt-types';
8
+ export { SignalBus } from './bus.js';
9
+ export type { SanitizationConfig } from './sanitizer.js';
10
+ export { SignalSanitizer } from './sanitizer.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,MAAM,EACN,aAAa,EACb,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { Signal } from '@happyvertical/smrt-types';
2
+ /**
3
+ * Sanitization configuration
4
+ */
5
+ export interface SanitizationConfig {
6
+ /**
7
+ * Keys to redact from signal payloads
8
+ * Default: common sensitive fields
9
+ */
10
+ redactKeys?: string[];
11
+ /**
12
+ * Custom replacer function for sanitization
13
+ * Return undefined to redact the value entirely
14
+ */
15
+ replacer?: (key: string, value: any) => any;
16
+ /**
17
+ * Replacement value for redacted fields
18
+ * Default: '[REDACTED]'
19
+ */
20
+ redactedValue?: string;
21
+ /**
22
+ * Maximum number of stack trace lines to include in sanitized errors
23
+ * Default: 10
24
+ */
25
+ maxStackLines?: number;
26
+ }
27
+ /**
28
+ * Signal sanitizer
29
+ *
30
+ * Removes or redacts sensitive data from signal payloads before
31
+ * they are processed by adapters.
32
+ */
33
+ export declare class SignalSanitizer {
34
+ private config;
35
+ constructor(config?: SanitizationConfig);
36
+ /**
37
+ * Default replacer function
38
+ *
39
+ * Redacts sensitive keys and truncates long strings
40
+ */
41
+ private defaultReplacer;
42
+ /**
43
+ * Sanitize a value using the configured replacer
44
+ */
45
+ private sanitizeValue;
46
+ /**
47
+ * Sanitize a signal payload
48
+ *
49
+ * @param signal - Signal to sanitize
50
+ * @returns Sanitized signal (new object, doesn't mutate original)
51
+ */
52
+ sanitize(signal: Signal): Signal;
53
+ }
54
+ //# sourceMappingURL=sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../src/signals/sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IAE5C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgCD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA+B;gBAEjC,MAAM,GAAE,kBAAuB;IAS3C;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgDrB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAgBjC"}
@@ -0,0 +1,111 @@
1
+ const DEFAULT_REDACT_KEYS = [
2
+ "password",
3
+ "passwd",
4
+ "pwd",
5
+ "secret",
6
+ "token",
7
+ "apiKey",
8
+ "api_key",
9
+ "accessToken",
10
+ "access_token",
11
+ "refreshToken",
12
+ "refresh_token",
13
+ "privateKey",
14
+ "private_key",
15
+ "authToken",
16
+ "auth_token",
17
+ "bearerToken",
18
+ "bearer_token",
19
+ "sessionId",
20
+ "session_id",
21
+ "ssn",
22
+ "creditCard",
23
+ "credit_card",
24
+ "cvv",
25
+ "pin"
26
+ ];
27
+ class SignalSanitizer {
28
+ config;
29
+ constructor(config = {}) {
30
+ this.config = {
31
+ redactKeys: config.redactKeys ?? DEFAULT_REDACT_KEYS,
32
+ replacer: config.replacer ?? this.defaultReplacer.bind(this),
33
+ redactedValue: config.redactedValue ?? "[REDACTED]",
34
+ maxStackLines: config.maxStackLines ?? 10
35
+ };
36
+ }
37
+ /**
38
+ * Default replacer function
39
+ *
40
+ * Redacts sensitive keys and truncates long strings
41
+ */
42
+ defaultReplacer(key, value) {
43
+ const lowerKey = key.toLowerCase();
44
+ if (this.config.redactKeys.some((k) => lowerKey.includes(k.toLowerCase()))) {
45
+ return this.config.redactedValue;
46
+ }
47
+ if (typeof value === "string" && value.length > 1e3) {
48
+ return `${value.substring(0, 1e3)}... [TRUNCATED]`;
49
+ }
50
+ return value;
51
+ }
52
+ /**
53
+ * Sanitize a value using the configured replacer
54
+ */
55
+ sanitizeValue(value, seen = /* @__PURE__ */ new WeakSet()) {
56
+ if (value == null) {
57
+ return value;
58
+ }
59
+ if (typeof value !== "object") {
60
+ return value;
61
+ }
62
+ if (seen.has(value)) {
63
+ return "[CIRCULAR]";
64
+ }
65
+ seen.add(value);
66
+ if (Array.isArray(value)) {
67
+ return value.map((item) => this.sanitizeValue(item, seen));
68
+ }
69
+ if (value instanceof Error) {
70
+ return {
71
+ message: value.message,
72
+ name: value.name,
73
+ stack: value.stack ? value.stack.split("\n").slice(0, this.config.maxStackLines).join("\n") : void 0
74
+ };
75
+ }
76
+ const sanitized = {};
77
+ for (const [key, val] of Object.entries(value)) {
78
+ const replacedValue = this.config.replacer(key, val);
79
+ if (replacedValue !== void 0) {
80
+ sanitized[key] = this.sanitizeValue(replacedValue, seen);
81
+ }
82
+ }
83
+ return sanitized;
84
+ }
85
+ /**
86
+ * Sanitize a signal payload
87
+ *
88
+ * @param signal - Signal to sanitize
89
+ * @returns Sanitized signal (new object, doesn't mutate original)
90
+ */
91
+ sanitize(signal) {
92
+ return {
93
+ id: signal.id,
94
+ objectId: signal.objectId,
95
+ className: signal.className,
96
+ method: signal.method,
97
+ type: signal.type,
98
+ timestamp: signal.timestamp,
99
+ ...signal.step && { step: signal.step },
100
+ ...signal.duration !== void 0 && { duration: signal.duration },
101
+ ...signal.args && { args: this.sanitizeValue(signal.args) },
102
+ ...signal.result && { result: this.sanitizeValue(signal.result) },
103
+ ...signal.error && { error: this.sanitizeValue(signal.error) },
104
+ ...signal.metadata && { metadata: this.sanitizeValue(signal.metadata) }
105
+ };
106
+ }
107
+ }
108
+ export {
109
+ SignalSanitizer
110
+ };
111
+ //# sourceMappingURL=sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.js","sources":["../../src/signals/sanitizer.ts"],"sourcesContent":["/**\n * Signal payload sanitization for security\n *\n * Prevents sensitive data (passwords, tokens, PII) from being leaked\n * into logs, metrics, or other signal outputs.\n */\n\nimport type { Signal } from '@happyvertical/smrt-types';\n\n/**\n * Sanitization configuration\n */\nexport interface SanitizationConfig {\n /**\n * Keys to redact from signal payloads\n * Default: common sensitive fields\n */\n redactKeys?: string[];\n\n /**\n * Custom replacer function for sanitization\n * Return undefined to redact the value entirely\n */\n replacer?: (key: string, value: any) => any;\n\n /**\n * Replacement value for redacted fields\n * Default: '[REDACTED]'\n */\n redactedValue?: string;\n\n /**\n * Maximum number of stack trace lines to include in sanitized errors\n * Default: 10\n */\n maxStackLines?: number;\n}\n\n/**\n * Default sensitive keys to redact\n */\nconst DEFAULT_REDACT_KEYS = [\n 'password',\n 'passwd',\n 'pwd',\n 'secret',\n 'token',\n 'apiKey',\n 'api_key',\n 'accessToken',\n 'access_token',\n 'refreshToken',\n 'refresh_token',\n 'privateKey',\n 'private_key',\n 'authToken',\n 'auth_token',\n 'bearerToken',\n 'bearer_token',\n 'sessionId',\n 'session_id',\n 'ssn',\n 'creditCard',\n 'credit_card',\n 'cvv',\n 'pin',\n];\n\n/**\n * Signal sanitizer\n *\n * Removes or redacts sensitive data from signal payloads before\n * they are processed by adapters.\n */\nexport class SignalSanitizer {\n private config: Required<SanitizationConfig>;\n\n constructor(config: SanitizationConfig = {}) {\n this.config = {\n redactKeys: config.redactKeys ?? DEFAULT_REDACT_KEYS,\n replacer: config.replacer ?? this.defaultReplacer.bind(this),\n redactedValue: config.redactedValue ?? '[REDACTED]',\n maxStackLines: config.maxStackLines ?? 10,\n };\n }\n\n /**\n * Default replacer function\n *\n * Redacts sensitive keys and truncates long strings\n */\n private defaultReplacer(key: string, value: any): any {\n // Check if key should be redacted\n const lowerKey = key.toLowerCase();\n if (\n this.config.redactKeys.some((k) => lowerKey.includes(k.toLowerCase()))\n ) {\n return this.config.redactedValue;\n }\n\n // Truncate very long strings (potential data dumps)\n if (typeof value === 'string' && value.length > 1000) {\n return `${value.substring(0, 1000)}... [TRUNCATED]`;\n }\n\n return value;\n }\n\n /**\n * Sanitize a value using the configured replacer\n */\n private sanitizeValue(value: any, seen = new WeakSet()): any {\n // Handle null/undefined\n if (value == null) {\n return value;\n }\n\n // Handle primitives\n if (typeof value !== 'object') {\n return value;\n }\n\n // Prevent circular reference infinite loops\n if (seen.has(value)) {\n return '[CIRCULAR]';\n }\n seen.add(value);\n\n // Handle arrays\n if (Array.isArray(value)) {\n return value.map((item) => this.sanitizeValue(item, seen));\n }\n\n // Handle Error objects specially\n if (value instanceof Error) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack\n ? value.stack\n .split('\\n')\n .slice(0, this.config.maxStackLines)\n .join('\\n')\n : undefined,\n };\n }\n\n // Handle regular objects\n const sanitized: Record<string, any> = {};\n for (const [key, val] of Object.entries(value)) {\n const replacedValue = this.config.replacer(key, val);\n if (replacedValue !== undefined) {\n sanitized[key] = this.sanitizeValue(replacedValue, seen);\n }\n }\n\n return sanitized;\n }\n\n /**\n * Sanitize a signal payload\n *\n * @param signal - Signal to sanitize\n * @returns Sanitized signal (new object, doesn't mutate original)\n */\n sanitize(signal: Signal): Signal {\n return {\n id: signal.id,\n objectId: signal.objectId,\n className: signal.className,\n method: signal.method,\n type: signal.type,\n timestamp: signal.timestamp,\n ...(signal.step && { step: signal.step }),\n ...(signal.duration !== undefined && { duration: signal.duration }),\n ...(signal.args && { args: this.sanitizeValue(signal.args) }),\n ...(signal.result && { result: this.sanitizeValue(signal.result) }),\n ...(signal.error && { error: this.sanitizeValue(signal.error) }),\n ...(signal.metadata && { metadata: this.sanitizeValue(signal.metadata) }),\n };\n }\n}\n"],"names":[],"mappings":"AAyCA,MAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAQO,MAAM,gBAAgB;AAAA,EACnB;AAAA,EAER,YAAY,SAA6B,IAAI;AAC3C,SAAK,SAAS;AAAA,MACZ,YAAY,OAAO,cAAc;AAAA,MACjC,UAAU,OAAO,YAAY,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAC3D,eAAe,OAAO,iBAAiB;AAAA,MACvC,eAAe,OAAO,iBAAiB;AAAA,IAAA;AAAA,EAE3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,gBAAgB,KAAa,OAAiB;AAEpD,UAAM,WAAW,IAAI,YAAA;AACrB,QACE,KAAK,OAAO,WAAW,KAAK,CAAC,MAAM,SAAS,SAAS,EAAE,YAAA,CAAa,CAAC,GACrE;AACA,aAAO,KAAK,OAAO;AAAA,IACrB;AAGA,QAAI,OAAO,UAAU,YAAY,MAAM,SAAS,KAAM;AACpD,aAAO,GAAG,MAAM,UAAU,GAAG,GAAI,CAAC;AAAA,IACpC;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc,OAAY,OAAO,oBAAI,WAAgB;AAE3D,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AAGA,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO;AAAA,IACT;AAGA,QAAI,KAAK,IAAI,KAAK,GAAG;AACnB,aAAO;AAAA,IACT;AACA,SAAK,IAAI,KAAK;AAGd,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,aAAO,MAAM,IAAI,CAAC,SAAS,KAAK,cAAc,MAAM,IAAI,CAAC;AAAA,IAC3D;AAGA,QAAI,iBAAiB,OAAO;AAC1B,aAAO;AAAA,QACL,SAAS,MAAM;AAAA,QACf,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM,QACT,MAAM,MACH,MAAM,IAAI,EACV,MAAM,GAAG,KAAK,OAAO,aAAa,EAClC,KAAK,IAAI,IACZ;AAAA,MAAA;AAAA,IAER;AAGA,UAAM,YAAiC,CAAA;AACvC,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC9C,YAAM,gBAAgB,KAAK,OAAO,SAAS,KAAK,GAAG;AACnD,UAAI,kBAAkB,QAAW;AAC/B,kBAAU,GAAG,IAAI,KAAK,cAAc,eAAe,IAAI;AAAA,MACzD;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,QAAwB;AAC/B,WAAO;AAAA,MACL,IAAI,OAAO;AAAA,MACX,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,MAClB,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,MACb,WAAW,OAAO;AAAA,MAClB,GAAI,OAAO,QAAQ,EAAE,MAAM,OAAO,KAAA;AAAA,MAClC,GAAI,OAAO,aAAa,UAAa,EAAE,UAAU,OAAO,SAAA;AAAA,MACxD,GAAI,OAAO,QAAQ,EAAE,MAAM,KAAK,cAAc,OAAO,IAAI,EAAA;AAAA,MACzD,GAAI,OAAO,UAAU,EAAE,QAAQ,KAAK,cAAc,OAAO,MAAM,EAAA;AAAA,MAC/D,GAAI,OAAO,SAAS,EAAE,OAAO,KAAK,cAAc,OAAO,KAAK,EAAA;AAAA,MAC5D,GAAI,OAAO,YAAY,EAAE,UAAU,KAAK,cAAc,OAAO,QAAQ,EAAA;AAAA,IAAE;AAAA,EAE3E;AACF;"}
@@ -0,0 +1,335 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:10:51.821Z",
4
+ "packageName": "@happyvertical/smrt-core",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "ba1a2dc48fc394b05975859d7848cc3df11eb453116ed04b2317ac887987f655",
10
+ "packageJson": "39b69770f93605b93f0560ff5b2ebf0ba14c947c9aa471d123b48d031339aa02",
11
+ "agents": "0fa157a078aa44a0bc104540bd27f0b1e52e66549b7994cba751438a8d44c827"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./consumer-plugin",
16
+ "./generators",
17
+ "./generators/cli",
18
+ "./generators/mcp",
19
+ "./generators/rest",
20
+ "./generators/swagger",
21
+ "./knowledge",
22
+ "./manifest",
23
+ "./manifest.json",
24
+ "./manifest/discover-base-classes",
25
+ "./manifest/discover-smrt-packages",
26
+ "./migrations",
27
+ "./prebuild",
28
+ "./prebuild/cli",
29
+ "./runtime",
30
+ "./scanner",
31
+ "./scanner/types",
32
+ "./schema/utils",
33
+ "./smrt-knowledge.json",
34
+ "./table-cache",
35
+ "./testing",
36
+ "./utils",
37
+ "./utils/import-workspace-module",
38
+ "./vite-plugin"
39
+ ],
40
+ "dependencies": {
41
+ "@happyvertical/ai": "catalog:",
42
+ "@happyvertical/files": "catalog:",
43
+ "@happyvertical/json": "catalog:",
44
+ "@happyvertical/logger": "catalog:",
45
+ "@happyvertical/smrt-config": "workspace:*",
46
+ "@happyvertical/smrt-scanner": "workspace:*",
47
+ "@happyvertical/smrt-types": "workspace:*",
48
+ "@happyvertical/sql": "catalog:",
49
+ "@happyvertical/utils": "catalog:",
50
+ "@modelcontextprotocol/sdk": "^1.25.2",
51
+ "cheerio": "^1.1.2",
52
+ "fast-glob": "3.3.3",
53
+ "minimatch": "10.1.1",
54
+ "pluralize": "^8.0.0",
55
+ "tsx": "^4.21.0",
56
+ "typescript": "^5.9.3",
57
+ "yaml": "^2.8.2",
58
+ "@faker-js/faker": "^10.2.0",
59
+ "@huggingface/transformers": ">=3.0.0 <4.0.0",
60
+ "@types/node": "25.0.9",
61
+ "@types/pluralize": "^0.0.33",
62
+ "@xenova/transformers": "^2.17.0",
63
+ "vite": "7.3.1",
64
+ "vite-plugin-dts": "4.5.4",
65
+ "vitest": "^4.0.17"
66
+ },
67
+ "smrtDependencies": [
68
+ "@happyvertical/smrt-config",
69
+ "@happyvertical/smrt-scanner",
70
+ "@happyvertical/smrt-types"
71
+ ],
72
+ "sdkDependencies": [
73
+ "@happyvertical/ai",
74
+ "@happyvertical/files",
75
+ "@happyvertical/json",
76
+ "@happyvertical/logger",
77
+ "@happyvertical/sql",
78
+ "@happyvertical/utils"
79
+ ],
80
+ "tags": [],
81
+ "risks": [],
82
+ "objects": [
83
+ {
84
+ "name": "SmrtClass",
85
+ "qualifiedName": "@happyvertical/smrt-core:SmrtClass",
86
+ "collection": "smrtclasses",
87
+ "tableName": "smrt_classes",
88
+ "packageName": "@happyvertical/smrt-core",
89
+ "fields": [],
90
+ "relationships": [],
91
+ "methods": [
92
+ "destroy",
93
+ "getAiUsageSnapshot",
94
+ "listAiUsage",
95
+ "resetAiUsage",
96
+ "summarizeAiUsage"
97
+ ],
98
+ "surfaces": [],
99
+ "relationshipFeatures": [
100
+ "uuidColumns"
101
+ ],
102
+ "tags": [],
103
+ "risks": []
104
+ },
105
+ {
106
+ "name": "SmrtCollection",
107
+ "qualifiedName": "@happyvertical/smrt-core:SmrtCollection",
108
+ "collection": "smrtcollections",
109
+ "tableName": "smrt_collections",
110
+ "packageName": "@happyvertical/smrt-core",
111
+ "extends": "SmrtClass",
112
+ "fields": [],
113
+ "relationships": [],
114
+ "methods": [
115
+ "count",
116
+ "create",
117
+ "delete",
118
+ "ensureStorageReady",
119
+ "findAll",
120
+ "findById",
121
+ "findOne",
122
+ "findSimilar",
123
+ "findSimilarToEmbedding",
124
+ "forget",
125
+ "forgetScope",
126
+ "generateMissingEmbeddings",
127
+ "generateSchema",
128
+ "generateTableName",
129
+ "get",
130
+ "getDiff",
131
+ "getFields",
132
+ "getFieldsSync",
133
+ "getOrUpsert",
134
+ "initialize",
135
+ "list",
136
+ "listByIds",
137
+ "query",
138
+ "recall",
139
+ "recallAll",
140
+ "remember",
141
+ "semanticSearch",
142
+ "validate"
143
+ ],
144
+ "surfaces": [],
145
+ "relationshipFeatures": [
146
+ "uuidColumns"
147
+ ],
148
+ "tags": [],
149
+ "risks": []
150
+ },
151
+ {
152
+ "name": "SmrtHierarchical",
153
+ "qualifiedName": "@happyvertical/smrt-core:SmrtHierarchical",
154
+ "collection": "smrthierarchicals",
155
+ "tableName": "smrt_hierarchicals",
156
+ "packageName": "@happyvertical/smrt-core",
157
+ "extends": "SmrtObject",
158
+ "fields": [
159
+ {
160
+ "name": "parentId",
161
+ "type": "text",
162
+ "required": false,
163
+ "columnType": "TEXT"
164
+ }
165
+ ],
166
+ "relationships": [],
167
+ "methods": [
168
+ "getAncestors",
169
+ "getChildren",
170
+ "getDescendants",
171
+ "getHierarchy",
172
+ "getParent",
173
+ "moveTo"
174
+ ],
175
+ "surfaces": [],
176
+ "relationshipFeatures": [
177
+ "uuidColumns"
178
+ ],
179
+ "tags": [],
180
+ "risks": []
181
+ },
182
+ {
183
+ "name": "SmrtJunction",
184
+ "qualifiedName": "@happyvertical/smrt-core:SmrtJunction",
185
+ "collection": "smrtjunctions",
186
+ "tableName": "smrt_junctions",
187
+ "packageName": "@happyvertical/smrt-core",
188
+ "extends": "SmrtCollection",
189
+ "fields": [],
190
+ "relationships": [],
191
+ "methods": [
192
+ "attach",
193
+ "byLeft",
194
+ "byRight",
195
+ "detach",
196
+ "setLinks"
197
+ ],
198
+ "surfaces": [],
199
+ "relationshipFeatures": [
200
+ "uuidColumns"
201
+ ],
202
+ "tags": [],
203
+ "risks": []
204
+ },
205
+ {
206
+ "name": "SmrtObject",
207
+ "qualifiedName": "@happyvertical/smrt-core:SmrtObject",
208
+ "collection": "smrtobjects",
209
+ "tableName": "smrt_objects",
210
+ "packageName": "@happyvertical/smrt-core",
211
+ "extends": "SmrtClass",
212
+ "fields": [
213
+ {
214
+ "name": "created_at",
215
+ "type": "datetime",
216
+ "required": false,
217
+ "columnType": "TIMESTAMP"
218
+ },
219
+ {
220
+ "name": "updated_at",
221
+ "type": "datetime",
222
+ "required": false,
223
+ "columnType": "TIMESTAMP"
224
+ }
225
+ ],
226
+ "relationships": [],
227
+ "methods": [
228
+ "classifyConstraintError",
229
+ "clearEmbeddings",
230
+ "delete",
231
+ "describe",
232
+ "do",
233
+ "executeToolCall",
234
+ "forget",
235
+ "forgetScope",
236
+ "generateEmbeddings",
237
+ "getAvailableTools",
238
+ "getEmbedding",
239
+ "getFields",
240
+ "getId",
241
+ "getRelated",
242
+ "getSavedId",
243
+ "getSlug",
244
+ "hasStaleEmbeddings",
245
+ "initialize",
246
+ "is",
247
+ "isRelatedLoaded",
248
+ "isSaved",
249
+ "loadDataFromDb",
250
+ "loadFromId",
251
+ "loadFromSlug",
252
+ "loadRelated",
253
+ "loadRelatedMany",
254
+ "markAsPersisted",
255
+ "recall",
256
+ "recallAll",
257
+ "remember",
258
+ "save",
259
+ "toJSON",
260
+ "toPlainObject",
261
+ "toPublicJSON"
262
+ ],
263
+ "surfaces": [],
264
+ "relationshipFeatures": [
265
+ "uuidColumns"
266
+ ],
267
+ "tags": [],
268
+ "risks": []
269
+ },
270
+ {
271
+ "name": "SmrtPolymorphicAssociation",
272
+ "qualifiedName": "@happyvertical/smrt-core:SmrtPolymorphicAssociation",
273
+ "collection": "smrtpolymorphicassociations",
274
+ "tableName": "smrt_polymorphic_associations",
275
+ "packageName": "@happyvertical/smrt-core",
276
+ "extends": "SmrtObject",
277
+ "fields": [
278
+ {
279
+ "name": "metaType",
280
+ "type": "text",
281
+ "required": true,
282
+ "columnType": "TEXT"
283
+ },
284
+ {
285
+ "name": "metaId",
286
+ "type": "text",
287
+ "required": true,
288
+ "columnType": "TEXT"
289
+ },
290
+ {
291
+ "name": "role",
292
+ "type": "text",
293
+ "required": true,
294
+ "columnType": "TEXT"
295
+ },
296
+ {
297
+ "name": "sortOrder",
298
+ "type": "integer",
299
+ "required": false,
300
+ "columnType": "INTEGER"
301
+ }
302
+ ],
303
+ "relationships": [],
304
+ "methods": [
305
+ "hydrate"
306
+ ],
307
+ "surfaces": [],
308
+ "relationshipFeatures": [
309
+ "SmrtPolymorphicAssociation",
310
+ "uuidColumns"
311
+ ],
312
+ "tags": [],
313
+ "risks": []
314
+ }
315
+ ],
316
+ "surfaces": [],
317
+ "prompts": [
318
+ {
319
+ "filePath": "src/knowledge.test.ts",
320
+ "key": "orders.review"
321
+ },
322
+ {
323
+ "filePath": "src/knowledge.ts"
324
+ }
325
+ ],
326
+ "relationshipsV2": {
327
+ "foreignKeyFields": 0,
328
+ "crossPackageRefFields": 0,
329
+ "junctionCollections": 0,
330
+ "hierarchicalObjects": 0,
331
+ "polymorphicAssociations": 1,
332
+ "uuidColumns": 6
333
+ },
334
+ "agentDoc": "# @happyvertical/smrt-core\n\nORM, code generation, AI integration, and the DispatchBus. Everything else builds on this.\n\n## Key Classes\n\n| Class | File | Purpose |\n|-------|------|---------|\n| SmrtObject | `src/object.ts` | Base persistent object — save, delete, is(), do(), loadFromId/Slug |\n| SmrtCollection | `src/collection.ts` | CRUD collection — list, get, create, delete, getOrUpsert |\n| ObjectRegistry | `src/registry.ts` | Global singleton (globalThis) — class metadata, fields, STI chains, manifests |\n| DispatchBus | `src/dispatch/bus.ts` | Inter-agent messaging — emit, subscribe (persistent), process |\n| GlobalInterceptors | `src/interceptors.ts` | Plugin system — beforeList/Get/Save/Delete hooks (used by tenancy) |\n\n## SmrtObject Lifecycle\n\n`constructor(options)` → `initialize()` → ready for `save()`/`delete()`/`loadFromId()`\n\n- `initialize()`: loads field initializers, applies option values (options override initializers), loads from DB if id/slug provided\n- `save()`: upsert with STI validation, interceptor execution, auto-embeddings. Persisted objects (`isPersisted` — set by DB hydration and successful saves) upsert on `['id']` so natural-key edits (e.g. slug renames) update in place; new objects upsert on the natural-key conflict columns for ingestion-style dedup (#1472)\n- `is(criteria)` / `do(instructions)` / `describe()`: AI operations via function calling. They inject the object's own `toPublicJSON()` (sensitive fields stripped) as a \"content body\" so the model reasons over the instance. Options: `includeData: false` skips injection (for callers that already curate the relevant fields into the instruction); `maxDataLength` overrides the truncation budget. Neither key is forwarded to `ai.message()`. (#1567)\n- `getSlug()`: auto-generates from name → title → label → id\n- `loadRelated(fieldName)`: lazy-loads relationships (cached in `_loadedRelationships` Map)\n\n## SmrtCollection Query\n\n```typescript\nawait collection.list({\n where: { status: 'active', price: { op: '>', value: 10 } },\n limit: 50, offset: 0, orderBy: 'created_at DESC'\n});\n```\n\n**WHERE operators**: `=`, `>`, `<`, `>=`, `<=`, `!=`, `in`, `not in`, `like`, `is null`, `is not null`. Arrays auto-detect `IN`. Dot notation for JSON paths: `metadata.userId`.\n\nSTI child collections auto-filter by `_meta_type`.\n\n## @smrt() Decorator Options\n\nKey options: `tableName`, `tableStrategy` ('cti'|'sti'), `conflictColumns`, `api`/`mcp`/`cli` (generation config), `ai` (callable methods), `hooks` (beforeSave/afterSave/beforeDelete/afterDelete), `embeddings` (auto-generate), `tenantScoped`, `agent`.\n\nRegistration sets `SMRT_TABLE_NAME` static property (survives minification).\n\n## Domain Knowledge Artifacts\n\n`smrtPlugin()` writes runtime manifests and agent/developer knowledge artifacts:\n\n- local dev/build: `.smrt/manifest.json` and `.smrt/smrt-knowledge.json`\n- package build: `dist/manifest.json` and `dist/smrt-knowledge.json`\n\nKeep `manifest.json` runtime-focused. `smrt-knowledge.json` is the deterministic\nagent contract for downstream review and architecture tools.\n\nConfig precedence for knowledge is defaults → top-level `knowledge` in\n`smrt.config.ts` → `packages[packageName].knowledge` → plugin option →\nobject-level `@smrt({ knowledge })`.\n\nObject-level `knowledge: false` excludes an object from authored context only;\nit must not change runtime manifest registration. Use\n`knowledge: { tags, summary, risks }` for review-sensitive domain objects.\n\nHTTP knowledge routes are disabled by default. If `knowledge.api.enabled` is\ntrue, generated SvelteKit routes must stay GET-only and guarded by dev mode or\nadmin auth.\n\n## DispatchBus\n\n- `emit(signalType, payload, metadata)` → creates persistent Dispatch record\n- `on(pattern, handler)` → in-memory handler (immediate)\n- `subscribe({ signalType, subscriber })` → persistent subscription (survives restarts)\n- `process(subscriberName, handler)` → process pending dispatches\n- Wildcards: `campaign.*` matches `campaign.completed` (single segment only)\n- Tables: `_smrt_dispatch`, `_smrt_dispatch_subscriptions`\n- Status: `pending → processing → completed` (or `failed`)\n\n## Single Table Inheritance (STI)\n\n- Base: `@smrt({ tableStrategy: 'sti' })` — children inherit, share one table\n- Discriminator: `_meta_type` column with qualified names (`@happyvertical/smrt-content:Article`)\n- Child fields: `@meta()` decorator → stored in `_meta_data` JSONB (not as columns)\n- Polymorphic queries: collection loads `_meta_type`, creates correct subclass dynamically\n- Validation: fail-fast on save if `_meta_type` missing or mismatched\n\n## Code Generators\n\n| Generator | Location | Output |\n|-----------|----------|--------|\n| REST API | `src/generators/rest.ts` | OpenAPI-compliant CRUD endpoints |\n| CLI | `src/generators/cli.ts` | `objectname:action` admin commands — writable allowlist, exhaustive-include, `--from-file`, fail-closed tenant context |\n| MCP Server | `src/generators/mcp.ts` | Model Context Protocol tools |\n\n## Child Accessors (R10)\n\n`src/child-accessors.ts` installs a consistent `get<FieldName>()` instance method for every `@oneToMany` field at `@smrt()` registration time (e.g. `@oneToMany('OrderItem') items` → `order.getItems()`), delegating to `loadRelatedMany`. Two invariants:\n\n- **Additive** — never overwrites a hand-rolled method of the same name (checks the whole prototype chain). `Profile.getMetadata()` (key-value) and `ProfileRelationship.getTerms()` are preserved.\n- **Runtime-only** — attached to the prototype, invisible to the build-time manifest, so it never leaks into the REST/CLI/MCP surface.\n\nWhen the target declares multiple FKs back to the parent, annotate `@oneToMany(Target, { foreignKey: '<inverseField>' })`; `loadRelatedMany` and the eager `include:` loader both honor it (else first-match).\n\n## Vite Plugin\n\n```typescript\n// vite.config.ts — required for @smrt() decorators\nexport default defineConfig({\n esbuild: {\n tsconfigRaw: {\n compilerOptions: { experimentalDecorators: true, emitDecoratorMetadata: true }\n }\n }\n});\n```\n\n## Gotchas\n\n- **Never override toJSON()** — handles STI discriminator + meta field extraction. Use `transformJSON()`\n- **Property init order**: TypeScript initializers run first, then `initialize()` applies option values (options win)\n- **No runtime schema creation**: application tables must be prepared explicitly via migrations/tooling; runtime only verifies and fails clearly\n- **Retry logic**: `db.get()` (3 retries, 250ms) and `db.upsert()` (3 retries, 500ms) have built-in retry\n- **Field caching**: `_cachedFields` populated during `Collection.create()` — eliminates async `getFields()` per query\n- **Smart cloning**: arrays/objects shallow-cloned in property init to prevent aliasing (Issue #22)\n- **Table verification cache**: `isTableVerified(dbUrl, tableName)` avoids redundant `tableExists()` calls\n- **Manifest required**: build-time AST scanning creates manifest. Without vitest plugin → \"No field metadata\"\n- **Vite plugin loads scanner from `dist/` first**: `src/vite-plugin/import-build-aware.ts` prefers `dist/` when it exists on disk; it only falls back to `src/` on fresh clones. So if you edit `src/scanner/*.ts` or `src/schema/generator.ts` and want those edits reflected in consumer manifest generation, you must rebuild (`pnpm build` or have `pnpm dev` / `pnpm build:watch` running in core). This is intentional — sniffing `.ts` vs `.js` via `import.meta.url` was non-deterministic under tsx and broke 12–13 publishes (#1139).\n"
335
+ }
@@ -0,0 +1,8 @@
1
+ import { DatabaseInterface } from '@happyvertical/sql';
2
+ export declare function tableExists(db: DatabaseInterface, tableName: string, typeHint?: string): Promise<boolean>;
3
+ export declare function ensureDispatchSystemTableCompatibility(db: DatabaseInterface, typeHint?: string): Promise<void>;
4
+ export declare function ensureDispatchSubscriptionsSystemTableCompatibility(db: DatabaseInterface, typeHint?: string): Promise<void>;
5
+ export declare function ensureJobsSystemTableCompatibility(db: DatabaseInterface, typeHint?: string): Promise<void>;
6
+ export declare function ensureJobEventsSystemTableCompatibility(db: DatabaseInterface, typeHint?: string): Promise<void>;
7
+ export declare function ensureLegacySystemTableCompatibility(db: DatabaseInterface, typeHint?: string): Promise<void>;
8
+ //# sourceMappingURL=compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/system/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA0B5D,wBAAsB,WAAW,CAC/B,EAAE,EAAE,iBAAiB,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAiXD,wBAAsB,sCAAsC,CAC1D,EAAE,EAAE,iBAAiB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED,wBAAsB,mDAAmD,CACvE,EAAE,EAAE,iBAAiB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,kCAAkC,CACtD,EAAE,EAAE,iBAAiB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,uCAAuC,CAC3D,EAAE,EAAE,iBAAiB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,oCAAoC,CACxD,EAAE,EAAE,iBAAiB,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAKf"}