@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,155 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Build-time manifest generator
5
+ * Scans TypeScript source files and generates static manifest JSON
6
+ *
7
+ * Now uses ManifestBuilder service for consolidated, testable logic
8
+ */
9
+
10
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
11
+ import { resolve } from 'node:path';
12
+ import { pathToFileURL } from 'node:url';
13
+ import { register } from 'tsx/esm/api';
14
+
15
+ async function generateManifest() {
16
+ try {
17
+ console.log('[smrt] Generating static manifest...');
18
+
19
+ const workspaceTsconfigPath = resolve(
20
+ process.cwd(),
21
+ '../../tsconfig.package-build.json',
22
+ );
23
+ const unregister = register(
24
+ existsSync(workspaceTsconfigPath)
25
+ ? { tsconfig: workspaceTsconfigPath }
26
+ : undefined,
27
+ );
28
+
29
+ try {
30
+ const { ManifestBuilder } = await import(
31
+ pathToFileURL(resolve(process.cwd(), 'src/manifest/generator.ts')).href
32
+ );
33
+
34
+ const builder = new ManifestBuilder();
35
+
36
+ await builder.generate({
37
+ // === FILE DISCOVERY ===
38
+ include: ['src/**/*.ts'],
39
+ exclude: [
40
+ 'src/**/*.test.ts',
41
+ 'src/**/*.spec.ts',
42
+ 'src/**/__tests__/**/*.ts',
43
+ 'src/**/*.d.ts',
44
+ 'src/scanner/**/*.ts',
45
+ 'src/vite-plugin/**/*.ts',
46
+ 'src/pleb.ts', // Test/prototype class - not a real framework object
47
+ ],
48
+
49
+ // === SCANNER CONFIGURATION ===
50
+ baseClasses: ['SmrtObject', 'SmrtClass', 'SmrtCollection'],
51
+ followImports: false,
52
+ loadViteConfig: false,
53
+ discoverExternalPackages: true,
54
+ includeExternalBaseClasses: false, // Build manifest doesn't need external base classes
55
+
56
+ // === OUTPUT CONFIGURATION ===
57
+ outputDir: 'src/manifest',
58
+ outputName: 'static-manifest.json',
59
+ generateTypeStub: true,
60
+ stubName: 'static-manifest.ts',
61
+
62
+ // === METADATA ===
63
+ injectPackageInfo: true,
64
+ moduleType: 'smrt',
65
+ });
66
+
67
+ const { buildDomainKnowledgeManifest } = await import(
68
+ pathToFileURL(resolve(process.cwd(), 'src/knowledge.ts')).href
69
+ );
70
+ const sourceManifestPath = resolve(
71
+ process.cwd(),
72
+ 'src/manifest/static-manifest.json',
73
+ );
74
+ const distManifestPath = resolve(process.cwd(), 'dist/manifest.json');
75
+ const manifestPath = existsSync(distManifestPath)
76
+ ? distManifestPath
77
+ : sourceManifestPath;
78
+ const manifest = JSON.parse(readFileSync(sourceManifestPath, 'utf8'));
79
+ const packageJson = JSON.parse(
80
+ readFileSync(resolve(process.cwd(), 'package.json'), 'utf8'),
81
+ );
82
+ const knowledgePath = resolve(
83
+ process.cwd(),
84
+ 'src/manifest/smrt-knowledge.json',
85
+ );
86
+ const knowledge = preserveGeneratedAtIfUnchanged(
87
+ knowledgePath,
88
+ buildDomainKnowledgeManifest({
89
+ manifest,
90
+ rootDir: process.cwd(),
91
+ packageJson,
92
+ manifestPath,
93
+ config: {
94
+ includeDocs: true,
95
+ includePrompts: true,
96
+ },
97
+ }),
98
+ );
99
+ writeFileSync(knowledgePath, JSON.stringify(knowledge, null, 2), 'utf8');
100
+ } finally {
101
+ await unregister();
102
+ }
103
+ } catch (error) {
104
+ console.error('[smrt] ❌ Failed to generate manifest:', error);
105
+ process.exit(1);
106
+ }
107
+ }
108
+
109
+ // Run if called directly
110
+ if (import.meta.url === `file://${process.argv[1]}`) {
111
+ generateManifest();
112
+ }
113
+
114
+ function preserveGeneratedAtIfUnchanged(path, nextKnowledge) {
115
+ if (!existsSync(path)) {
116
+ return nextKnowledge;
117
+ }
118
+
119
+ try {
120
+ const current = JSON.parse(readFileSync(path, 'utf8'));
121
+ if (semanticArtifactJson(current) === semanticArtifactJson(nextKnowledge)) {
122
+ return {
123
+ ...nextKnowledge,
124
+ generatedAt: current.generatedAt,
125
+ };
126
+ }
127
+ } catch {
128
+ // Replace malformed artifacts.
129
+ }
130
+
131
+ return nextKnowledge;
132
+ }
133
+
134
+ function semanticArtifactJson(artifact) {
135
+ const { generatedAt: _generatedAt, ...rest } = artifact ?? {};
136
+ return stableJson(rest);
137
+ }
138
+
139
+ function stableJson(value) {
140
+ return JSON.stringify(sortJson(value));
141
+ }
142
+
143
+ function sortJson(value) {
144
+ if (Array.isArray(value)) return value.map(sortJson);
145
+ if (value && typeof value === 'object') {
146
+ return Object.fromEntries(
147
+ Object.entries(value)
148
+ .sort(([a], [b]) => a.localeCompare(b))
149
+ .map(([key, entry]) => [key, sortJson(entry)]),
150
+ );
151
+ }
152
+ return value;
153
+ }
154
+
155
+ export { generateManifest };
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Test manifest generator
5
+ * Scans test files and generates manifest for runtime field detection
6
+ *
7
+ * This allows test files to use TypeScript type annotations (e.g., latitude: number | null)
8
+ * instead of requiring explicit Field helpers, maintaining consistency with production code.
9
+ *
10
+ * Now uses ManifestBuilder service for consolidated, testable logic
11
+ */
12
+
13
+ import { existsSync } from 'node:fs';
14
+ import { resolve } from 'node:path';
15
+ import { pathToFileURL } from 'node:url';
16
+ import { register } from 'tsx/esm/api';
17
+
18
+ async function generateTestManifest() {
19
+ try {
20
+ console.log('[smrt] Generating test manifest...');
21
+
22
+ const workspaceTsconfigPath = resolve(
23
+ process.cwd(),
24
+ '../../tsconfig.package-build.json',
25
+ );
26
+ const unregister = register(
27
+ existsSync(workspaceTsconfigPath)
28
+ ? { tsconfig: workspaceTsconfigPath }
29
+ : undefined,
30
+ );
31
+
32
+ try {
33
+ const { ManifestBuilder } = await import(
34
+ pathToFileURL(resolve(process.cwd(), 'src/manifest/generator.ts')).href
35
+ );
36
+
37
+ const builder = new ManifestBuilder();
38
+
39
+ await builder.generate({
40
+ // === FILE DISCOVERY ===
41
+ // Scan all source files including test files for test manifest
42
+ // Test classes defined inline need to be in the manifest for proper field detection
43
+ include: ['src/**/*.ts'],
44
+ exclude: ['src/**/*.d.ts', 'node_modules/**'],
45
+
46
+ // === SCANNER CONFIGURATION ===
47
+ baseClasses: ['SmrtObject', 'SmrtClass', 'SmrtCollection'],
48
+ followImports: true, // Needed for multi-package inheritance (e.g., Meeting extends Event from external package)
49
+ loadViteConfig: true, // Use custom baseClasses from vite.config.ts if present
50
+ discoverExternalPackages: true,
51
+ includeExternalBaseClasses: true, // Test manifest needs external base classes
52
+
53
+ // === OUTPUT CONFIGURATION ===
54
+ outputDir: 'src/manifest',
55
+ outputName: 'test-manifest.json',
56
+ generateTypeStub: true,
57
+ stubName: 'test-manifest-stub.ts',
58
+
59
+ // === METADATA ===
60
+ injectPackageInfo: true,
61
+ moduleType: 'smrt',
62
+ });
63
+ } finally {
64
+ await unregister();
65
+ }
66
+ } catch (error) {
67
+ console.error('[smrt] ❌ Failed to generate test manifest:', error);
68
+ process.exit(1);
69
+ }
70
+ }
71
+
72
+ // Run if called directly
73
+ if (import.meta.url === `file://${process.argv[1]}`) {
74
+ generateTestManifest();
75
+ }
76
+
77
+ export { generateTestManifest };
@@ -0,0 +1,310 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Migration script for Issue #198: DuckDB DATETIME Compatibility
5
+ *
6
+ * This script migrates existing databases from DATETIME to TIMESTAMP type
7
+ * and from datetime('now') to current_timestamp default values.
8
+ *
9
+ * Usage:
10
+ * npx tsx scripts/migrate-datetime-to-timestamp.ts <database-path>
11
+ *
12
+ * Example:
13
+ * npx tsx scripts/migrate-datetime-to-timestamp.ts ./data/my-database.db
14
+ *
15
+ * What it does:
16
+ * 1. Backs up the database file
17
+ * 2. For each table with DATETIME columns:
18
+ * - Creates a new table with TIMESTAMP columns
19
+ * - Copies all data from old table to new table
20
+ * - Drops old table and renames new table
21
+ * 3. Recreates indexes and triggers with correct syntax
22
+ *
23
+ * Note: This migration is safe and reversible via the backup file.
24
+ */
25
+
26
+ import { existsSync } from 'node:fs';
27
+ import { readFile, writeFile } from 'node:fs/promises';
28
+ import { resolve } from 'node:path';
29
+ import { Database } from '@happyvertical/sql';
30
+
31
+ interface MigrationOptions {
32
+ databasePath: string;
33
+ dryRun?: boolean;
34
+ backup?: boolean;
35
+ }
36
+
37
+ /**
38
+ * Main migration function
39
+ */
40
+ async function migrate(options: MigrationOptions) {
41
+ const { databasePath, dryRun = false, backup = true } = options;
42
+
43
+ // Validate database exists
44
+ if (!existsSync(databasePath)) {
45
+ throw new Error(`Database not found: ${databasePath}`);
46
+ }
47
+
48
+ console.log(`🔍 Analyzing database: ${databasePath}`);
49
+
50
+ // Create backup if requested
51
+ if (backup && !dryRun) {
52
+ const backupPath = `${databasePath}.backup-${Date.now()}`;
53
+ console.log(`📦 Creating backup: ${backupPath}`);
54
+ const dbContent = await readFile(databasePath);
55
+ await writeFile(backupPath, dbContent);
56
+ console.log(`✅ Backup created successfully`);
57
+ }
58
+
59
+ // Connect to database
60
+ const db = await Database.connect({
61
+ type: 'sqlite',
62
+ url: databasePath,
63
+ });
64
+
65
+ try {
66
+ // Get all tables
67
+ const tables = await db.all(`
68
+ SELECT name FROM sqlite_master
69
+ WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '_smrt_%'
70
+ `);
71
+
72
+ console.log(`📊 Found ${tables.length} user tables to check`);
73
+
74
+ // Process each table
75
+ for (const table of tables) {
76
+ const tableName = table.name;
77
+ console.log(`\n🔧 Processing table: ${tableName}`);
78
+
79
+ // Get table schema
80
+ const columns = await db.all(`PRAGMA table_info("${tableName}")`);
81
+
82
+ // Find DATETIME columns
83
+ const datetimeColumns = columns.filter((col: any) =>
84
+ col.type.toUpperCase().includes('DATETIME'),
85
+ );
86
+
87
+ if (datetimeColumns.length === 0) {
88
+ console.log(` ✓ No DATETIME columns found, skipping`);
89
+ continue;
90
+ }
91
+
92
+ console.log(
93
+ ` 📋 Found ${datetimeColumns.length} DATETIME column(s): ${datetimeColumns.map((c: any) => c.name).join(', ')}`,
94
+ );
95
+
96
+ if (dryRun) {
97
+ console.log(` 🔍 [DRY RUN] Would migrate these columns to TIMESTAMP`);
98
+ continue;
99
+ }
100
+
101
+ // Create new table with TIMESTAMP columns
102
+ const newTableName = `${tableName}_new`;
103
+
104
+ // Build CREATE TABLE statement for new table
105
+ const createTableSQL = buildCreateTableSQL(
106
+ tableName,
107
+ newTableName,
108
+ columns,
109
+ );
110
+ console.log(` 🏗️ Creating new table: ${newTableName}`);
111
+ await db.run(createTableSQL);
112
+
113
+ // Copy data from old table to new table
114
+ console.log(` 📤 Copying data to new table...`);
115
+ const columnNames = columns.map((c: any) => `"${c.name}"`).join(', ');
116
+ await db.run(`
117
+ INSERT INTO "${newTableName}" (${columnNames})
118
+ SELECT ${columnNames} FROM "${tableName}"
119
+ `);
120
+
121
+ // Get row counts to verify
122
+ const oldCount = await db.get(
123
+ `SELECT COUNT(*) as count FROM "${tableName}"`,
124
+ );
125
+ const newCount = await db.get(
126
+ `SELECT COUNT(*) as count FROM "${newTableName}"`,
127
+ );
128
+
129
+ if (oldCount.count !== newCount.count) {
130
+ throw new Error(
131
+ `Data copy verification failed: ${oldCount.count} rows in old table, ${newCount.count} rows in new table`,
132
+ );
133
+ }
134
+
135
+ console.log(` ✅ Copied ${oldCount.count} rows successfully`);
136
+
137
+ // Drop old table
138
+ console.log(` 🗑️ Dropping old table: ${tableName}`);
139
+ await db.run(`DROP TABLE "${tableName}"`);
140
+
141
+ // Rename new table to old table name
142
+ console.log(` 📝 Renaming ${newTableName} to ${tableName}`);
143
+ await db.run(`ALTER TABLE "${newTableName}" RENAME TO "${tableName}"`);
144
+
145
+ // Recreate indexes
146
+ const indexes = await db.all(`
147
+ SELECT sql FROM sqlite_master
148
+ WHERE type='index' AND tbl_name='${tableName}' AND sql IS NOT NULL
149
+ `);
150
+
151
+ if (indexes.length > 0) {
152
+ console.log(` 🔗 Recreating ${indexes.length} index(es)...`);
153
+ for (const index of indexes) {
154
+ // Update index SQL to use new table name and current_timestamp
155
+ let indexSQL = index.sql;
156
+ indexSQL = indexSQL.replace(
157
+ /datetime\('now'\)/gi,
158
+ 'current_timestamp',
159
+ );
160
+ indexSQL = indexSQL.replace(/DATETIME/gi, 'TIMESTAMP');
161
+ await db.run(indexSQL);
162
+ }
163
+ }
164
+
165
+ // Recreate triggers
166
+ const triggers = await db.all(`
167
+ SELECT sql FROM sqlite_master
168
+ WHERE type='trigger' AND tbl_name='${tableName}' AND sql IS NOT NULL
169
+ `);
170
+
171
+ if (triggers.length > 0) {
172
+ console.log(` ⚡ Recreating ${triggers.length} trigger(s)...`);
173
+ for (const trigger of triggers) {
174
+ // Update trigger SQL to use current_timestamp
175
+ let triggerSQL = trigger.sql;
176
+ triggerSQL = triggerSQL.replace(
177
+ /datetime\('now'\)/gi,
178
+ 'current_timestamp',
179
+ );
180
+ triggerSQL = triggerSQL.replace(/DATETIME/gi, 'TIMESTAMP');
181
+ await db.run(triggerSQL);
182
+ }
183
+ }
184
+
185
+ console.log(` ✅ Migration complete for table: ${tableName}`);
186
+ }
187
+
188
+ console.log(`\n✨ Migration completed successfully!`);
189
+ } finally {
190
+ await db.close();
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Build CREATE TABLE SQL for new table with TIMESTAMP columns
196
+ */
197
+ function buildCreateTableSQL(
198
+ _oldTableName: string,
199
+ newTableName: string,
200
+ columns: any[],
201
+ ): string {
202
+ let sql = `CREATE TABLE "${newTableName}" (\n`;
203
+
204
+ const columnDefs = columns.map((col: any) => {
205
+ const parts: string[] = [];
206
+
207
+ // Column name and type
208
+ let type = col.type.toUpperCase();
209
+ // Replace DATETIME with TIMESTAMP
210
+ if (type.includes('DATETIME')) {
211
+ type = type.replace('DATETIME', 'TIMESTAMP');
212
+ }
213
+ parts.push(` "${col.name}" ${type}`);
214
+
215
+ // Primary key
216
+ if (col.pk) {
217
+ parts.push('PRIMARY KEY');
218
+ }
219
+
220
+ // Not null
221
+ if (col.notnull) {
222
+ parts.push('NOT NULL');
223
+ }
224
+
225
+ // Default value
226
+ if (col.dflt_value !== null) {
227
+ let defaultValue = col.dflt_value;
228
+ // Replace datetime('now') with current_timestamp
229
+ if (typeof defaultValue === 'string') {
230
+ defaultValue = defaultValue.replace(
231
+ /datetime\('now'\)/gi,
232
+ 'current_timestamp',
233
+ );
234
+ defaultValue = defaultValue.replace(
235
+ /CURRENT_TIMESTAMP/gi,
236
+ 'current_timestamp',
237
+ );
238
+ }
239
+ parts.push(`DEFAULT ${defaultValue}`);
240
+ }
241
+
242
+ return parts.join(' ');
243
+ });
244
+
245
+ sql += columnDefs.join(',\n');
246
+ sql += '\n);';
247
+
248
+ return sql;
249
+ }
250
+
251
+ /**
252
+ * Parse command line arguments and run migration
253
+ */
254
+ async function main() {
255
+ const args = process.argv.slice(2);
256
+
257
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
258
+ console.log(`
259
+ Migration Script for Issue #198: DuckDB DATETIME Compatibility
260
+
261
+ Usage:
262
+ npx tsx scripts/migrate-datetime-to-timestamp.ts [options] <database-path>
263
+
264
+ Options:
265
+ --dry-run Show what would be migrated without making changes
266
+ --no-backup Skip creating a backup file (not recommended)
267
+ -h, --help Show this help message
268
+
269
+ Examples:
270
+ # Migrate database with backup
271
+ npx tsx scripts/migrate-datetime-to-timestamp.ts ./data/my-database.db
272
+
273
+ # Preview migration without making changes
274
+ npx tsx scripts/migrate-datetime-to-timestamp.ts --dry-run ./data/my-database.db
275
+
276
+ # Migrate without backup (dangerous!)
277
+ npx tsx scripts/migrate-datetime-to-timestamp.ts --no-backup ./data/my-database.db
278
+ `);
279
+ process.exit(0);
280
+ }
281
+
282
+ // Parse options
283
+ const dryRun = args.includes('--dry-run');
284
+ const noBackup = args.includes('--no-backup');
285
+ const databasePath = resolve(args.find((arg) => !arg.startsWith('--')) || '');
286
+
287
+ if (!databasePath) {
288
+ console.error('❌ Error: Database path is required');
289
+ process.exit(1);
290
+ }
291
+
292
+ try {
293
+ await migrate({
294
+ databasePath,
295
+ dryRun,
296
+ backup: !noBackup,
297
+ });
298
+ process.exit(0);
299
+ } catch (error) {
300
+ console.error(`\n❌ Migration failed:`, error);
301
+ process.exit(1);
302
+ }
303
+ }
304
+
305
+ // Run if called directly
306
+ if (import.meta.url === `file://${process.argv[1]}`) {
307
+ main();
308
+ }
309
+
310
+ export { migrate, type MigrationOptions };
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Core prepack entrypoint.
5
+ *
6
+ * In CI the release workflow already performs a clean repo-wide build before
7
+ * `changeset publish`. Rebuilding core inside `prepack` empties `dist/` again,
8
+ * which can make sibling package publishes observe a half-missing shared core
9
+ * build. Reuse the existing artifacts in CI when they are present, but still
10
+ * recover by rebuilding if a CI job reaches `prepack` before core has been
11
+ * built.
12
+ */
13
+
14
+ import { execFileSync } from 'node:child_process';
15
+ import { existsSync } from 'node:fs';
16
+ import { resolve } from 'node:path';
17
+
18
+ function run(script) {
19
+ execFileSync('npm', ['run', script], {
20
+ stdio: 'inherit',
21
+ env: process.env,
22
+ });
23
+ }
24
+
25
+ function hasReusableBuildArtifacts() {
26
+ return [
27
+ 'dist/index.js',
28
+ 'dist/vite-plugin.js',
29
+ 'dist/scanner.js',
30
+ 'dist/consumer-plugin.js',
31
+ ].every((relativePath) => existsSync(resolve(relativePath)));
32
+ }
33
+
34
+ const runningInCi = process.env.CI === 'true' || process.env.CI === '1';
35
+
36
+ if (runningInCi && hasReusableBuildArtifacts()) {
37
+ console.log(
38
+ '[smrt-core prepack] Reusing existing CI build artifacts to avoid deleting shared dist/ during publish.',
39
+ );
40
+ run('verify:exports');
41
+ run('verify:consumer-plugin');
42
+ } else {
43
+ if (runningInCi) {
44
+ console.log(
45
+ '[smrt-core prepack] CI build artifacts are incomplete; running build:fresh so packaging can recover.',
46
+ );
47
+ }
48
+ run('build:fresh');
49
+ }
@@ -0,0 +1,64 @@
1
+ import { Signal, SignalAdapter } from '@happyvertical/smrt-types';
2
+ import { SanitizationConfig } from './sanitizer.js';
3
+ /**
4
+ * Central signal distribution bus
5
+ *
6
+ * SignalBus manages adapter registration and signal distribution
7
+ * with fire-and-forget error handling.
8
+ */
9
+ export declare class SignalBus {
10
+ private adapters;
11
+ private sanitizer?;
12
+ /**
13
+ * Create a new SignalBus
14
+ *
15
+ * @param options - Configuration options
16
+ */
17
+ constructor(options?: {
18
+ sanitization?: SanitizationConfig | false;
19
+ });
20
+ /**
21
+ * Register a signal adapter
22
+ *
23
+ * @param adapter - Adapter to register
24
+ */
25
+ register(adapter: SignalAdapter): void;
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: SignalAdapter): boolean;
35
+ /**
36
+ * Clear all registered adapters
37
+ *
38
+ * Removes all adapters from the bus. Useful for cleanup or testing.
39
+ */
40
+ clear(): void;
41
+ /**
42
+ * Emit a signal to all registered adapters
43
+ *
44
+ * Signals are sanitized (if configured) before being passed to adapters.
45
+ * Adapters are called in fire-and-forget mode - errors are logged
46
+ * but don't interrupt the main execution flow.
47
+ *
48
+ * @param signal - Signal to emit
49
+ */
50
+ emit(signal: Signal): Promise<void>;
51
+ /**
52
+ * Generate unique execution ID for method invocations
53
+ *
54
+ * @returns Unique execution ID (CUID2)
55
+ */
56
+ generateExecutionId(): string;
57
+ /**
58
+ * Get count of registered adapters
59
+ *
60
+ * @returns Number of registered adapters
61
+ */
62
+ get adapterCount(): number;
63
+ }
64
+ //# sourceMappingURL=bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/signals/bus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKzD;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,SAAS,CAAC,CAAkB;IAEpC;;;;OAIG;gBACS,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAA;KAAE;IAMnE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAItC;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAS3C;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;;;OAQG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCzC;;;;OAIG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;;;OAIG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}