@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,361 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, readFileSync, mkdirSync, writeFileSync, readdirSync, statSync, realpathSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { join, dirname } from "node:path";
5
+ import { parse } from "../utils/json.js";
6
+ const CACHE_DIR = ".smrt";
7
+ const CACHE_FILE = "discovery-cache.json";
8
+ const CACHE_VERSION = 4;
9
+ let lastTimingData = {};
10
+ function getDiscoveryTiming() {
11
+ return { ...lastTimingData };
12
+ }
13
+ function getLockfileHash(baseDir) {
14
+ const lockfile = existsSync(join(baseDir, "pnpm-lock.yaml")) ? join(baseDir, "pnpm-lock.yaml") : join(baseDir, "package-lock.json");
15
+ if (!existsSync(lockfile)) {
16
+ return null;
17
+ }
18
+ const content = readFileSync(lockfile, "utf-8");
19
+ return createHash("sha256").update(content).digest("hex");
20
+ }
21
+ function getPackageJsonHash(baseDir) {
22
+ const packageJsonPath = join(baseDir, "package.json");
23
+ if (!existsSync(packageJsonPath)) {
24
+ return null;
25
+ }
26
+ const content = readFileSync(packageJsonPath, "utf-8");
27
+ return createHash("sha256").update(content).digest("hex");
28
+ }
29
+ function getManifestTimestampsHash(baseDir, packages) {
30
+ const timestamps = [];
31
+ for (const pkgName of packages) {
32
+ try {
33
+ const manifestPath = resolveManifestPath(pkgName, baseDir);
34
+ if (manifestPath && existsSync(manifestPath)) {
35
+ const stats = statSync(manifestPath);
36
+ timestamps.push(`${pkgName}:${stats.mtimeMs}`);
37
+ }
38
+ } catch {
39
+ }
40
+ }
41
+ return createHash("sha256").update(timestamps.join("|")).digest("hex");
42
+ }
43
+ function findManifestPath(pkgPath) {
44
+ const candidates = [
45
+ join(pkgPath, "dist", "manifest.json"),
46
+ join(pkgPath, ".smrt", "manifest.json"),
47
+ join(pkgPath, "src", "manifest", "manifest.json")
48
+ ];
49
+ for (const candidate of candidates) {
50
+ if (existsSync(candidate)) {
51
+ return candidate;
52
+ }
53
+ }
54
+ return null;
55
+ }
56
+ function normalizePackagePath(pkgPath) {
57
+ try {
58
+ return realpathSync(pkgPath);
59
+ } catch {
60
+ return pkgPath;
61
+ }
62
+ }
63
+ function resolvePackageDir(packageName, baseDir = process.cwd()) {
64
+ try {
65
+ const requireFromBase = createRequire(join(baseDir, "package.json"));
66
+ const packageEntry = requireFromBase.resolve(packageName);
67
+ let currentDir = dirname(packageEntry);
68
+ let resolvedPackageDir = null;
69
+ for (let i = 0; i < 10; i++) {
70
+ const packageJsonPath = join(currentDir, "package.json");
71
+ if (existsSync(packageJsonPath)) {
72
+ const packageJson = parse(
73
+ readFileSync(packageJsonPath, "utf-8")
74
+ );
75
+ if (packageJson.name === packageName) {
76
+ resolvedPackageDir = currentDir;
77
+ }
78
+ }
79
+ const parentDir = dirname(currentDir);
80
+ if (parentDir === currentDir) {
81
+ break;
82
+ }
83
+ currentDir = parentDir;
84
+ }
85
+ if (resolvedPackageDir) {
86
+ return normalizePackagePath(resolvedPackageDir);
87
+ }
88
+ } catch {
89
+ }
90
+ const directPath = join(baseDir, "node_modules", packageName);
91
+ if (existsSync(directPath)) {
92
+ return normalizePackagePath(directPath);
93
+ }
94
+ return null;
95
+ }
96
+ function resolveManifestPath(packageName, baseDir = process.cwd()) {
97
+ const pkgPath = resolvePackageDir(packageName, baseDir);
98
+ if (!pkgPath) {
99
+ return null;
100
+ }
101
+ const manifestPath = findManifestPath(pkgPath);
102
+ if (!manifestPath) {
103
+ return null;
104
+ }
105
+ try {
106
+ const manifest = parse(
107
+ readFileSync(manifestPath, "utf-8")
108
+ );
109
+ return manifest.moduleType === "smrt" ? manifestPath : null;
110
+ } catch {
111
+ return null;
112
+ }
113
+ }
114
+ function getCachedDiscovery(baseDir, verbose) {
115
+ const cachePath = join(baseDir, CACHE_DIR, CACHE_FILE);
116
+ if (!existsSync(cachePath)) {
117
+ return null;
118
+ }
119
+ try {
120
+ const cache = parse(readFileSync(cachePath, "utf-8"));
121
+ if (cache.version !== CACHE_VERSION) {
122
+ if (verbose) {
123
+ console.log("[discovery] Cache invalid: discovery version changed");
124
+ }
125
+ return null;
126
+ }
127
+ const currentLockfileHash = getLockfileHash(baseDir);
128
+ const currentPackageJsonHash = getPackageJsonHash(baseDir);
129
+ if (cache.lockfileHash !== currentLockfileHash) {
130
+ if (verbose) {
131
+ console.log("[discovery] Cache invalid: lockfile changed");
132
+ }
133
+ return null;
134
+ }
135
+ if (cache.packageJsonHash !== currentPackageJsonHash) {
136
+ if (verbose) {
137
+ console.log("[discovery] Cache invalid: package.json changed");
138
+ }
139
+ return null;
140
+ }
141
+ if (cache.packages.length > 0) {
142
+ const currentManifestsHash = getManifestTimestampsHash(
143
+ baseDir,
144
+ cache.packages
145
+ );
146
+ if (cache.manifestsHash !== currentManifestsHash) {
147
+ if (verbose) {
148
+ console.log("[discovery] Cache invalid: manifest(s) changed");
149
+ }
150
+ return null;
151
+ }
152
+ }
153
+ return { packages: cache.packages };
154
+ } catch (error) {
155
+ if (verbose) {
156
+ console.warn(
157
+ "[discovery] Failed to read cache:",
158
+ error.message
159
+ );
160
+ }
161
+ return null;
162
+ }
163
+ }
164
+ function saveCachedDiscovery(baseDir, packages, verbose) {
165
+ const cache = {
166
+ version: CACHE_VERSION,
167
+ lockfileHash: getLockfileHash(baseDir),
168
+ packageJsonHash: getPackageJsonHash(baseDir),
169
+ manifestsHash: getManifestTimestampsHash(baseDir, packages),
170
+ timestamp: Date.now(),
171
+ packages
172
+ };
173
+ try {
174
+ mkdirSync(join(baseDir, CACHE_DIR), { recursive: true });
175
+ writeFileSync(
176
+ join(baseDir, CACHE_DIR, CACHE_FILE),
177
+ JSON.stringify(cache, null, 2)
178
+ );
179
+ if (verbose) {
180
+ console.log(`[discovery] Saved cache with ${packages.length} package(s)`);
181
+ }
182
+ } catch (error) {
183
+ if (verbose) {
184
+ console.warn(
185
+ "[discovery] Failed to save cache:",
186
+ error.message
187
+ );
188
+ }
189
+ }
190
+ }
191
+ function hasManifestExport(packageName, baseDir) {
192
+ return resolveManifestPath(packageName, baseDir) !== null;
193
+ }
194
+ function getDeclaredSmrtPackages(baseDir, verbose) {
195
+ const packageJsonPath = join(baseDir, "package.json");
196
+ if (!existsSync(packageJsonPath)) {
197
+ return [];
198
+ }
199
+ try {
200
+ const packageJson = parse(readFileSync(packageJsonPath, "utf-8"));
201
+ const allDeps = {
202
+ ...packageJson.dependencies,
203
+ ...packageJson.devDependencies,
204
+ ...packageJson.peerDependencies
205
+ };
206
+ return Object.keys(allDeps).filter((pkgName) => {
207
+ if (!pkgName.startsWith("@happyvertical/smrt-")) {
208
+ return false;
209
+ }
210
+ const hasManifest = hasManifestExport(pkgName, baseDir);
211
+ if (verbose && hasManifest) {
212
+ console.log(`[discovery] ✅ Found declared SMRT package: ${pkgName}`);
213
+ }
214
+ return hasManifest;
215
+ });
216
+ } catch (error) {
217
+ if (verbose) {
218
+ console.warn(
219
+ "[discovery] Failed to read declared dependencies:",
220
+ error.message
221
+ );
222
+ }
223
+ return [];
224
+ }
225
+ }
226
+ function* scanNodeModules(baseDir) {
227
+ const nodeModulesPath = join(baseDir, "node_modules");
228
+ if (!existsSync(nodeModulesPath)) {
229
+ return;
230
+ }
231
+ try {
232
+ const entries = readdirSync(nodeModulesPath);
233
+ for (const entry of entries) {
234
+ if (entry === ".bin" || entry === ".pnpm" || entry === ".cache") {
235
+ continue;
236
+ }
237
+ const entryPath = join(nodeModulesPath, entry);
238
+ try {
239
+ const stats = statSync(entryPath);
240
+ if (stats.isDirectory() || stats.isSymbolicLink()) {
241
+ if (entry.startsWith("@")) {
242
+ const scopeEntries = readdirSync(entryPath);
243
+ for (const scopedPkg of scopeEntries) {
244
+ yield `${entry}/${scopedPkg}`;
245
+ }
246
+ } else {
247
+ yield entry;
248
+ }
249
+ }
250
+ } catch {
251
+ }
252
+ }
253
+ } catch (error) {
254
+ return;
255
+ }
256
+ }
257
+ function performDiscovery(baseDir, verbose) {
258
+ if (verbose) {
259
+ console.log("[discovery] Scanning node_modules for SMRT packages...");
260
+ }
261
+ try {
262
+ const smrtPackages = /* @__PURE__ */ new Set();
263
+ for (const pkgName of scanNodeModules(baseDir)) {
264
+ if (hasManifestExport(pkgName, baseDir)) {
265
+ smrtPackages.add(pkgName);
266
+ if (verbose) {
267
+ console.log(`[discovery] ✅ Found SMRT package: ${pkgName}`);
268
+ }
269
+ }
270
+ }
271
+ for (const pkgName of getDeclaredSmrtPackages(baseDir, verbose)) {
272
+ smrtPackages.add(pkgName);
273
+ }
274
+ if (verbose) {
275
+ console.log(
276
+ `[discovery] Discovered ${smrtPackages.size} SMRT package(s)`
277
+ );
278
+ }
279
+ return Array.from(smrtPackages);
280
+ } catch (error) {
281
+ console.error(
282
+ "[discovery] Failed to discover packages:",
283
+ error.message
284
+ );
285
+ return [];
286
+ }
287
+ }
288
+ function discoverSmrtPackages(options = {}) {
289
+ const startTime = options.timing ? performance.now() : 0;
290
+ lastTimingData = {};
291
+ const baseDir = options.baseDir || process.cwd();
292
+ const cacheDisabled = options.noCache || process.env.SMRT_DISABLE_DISCOVERY_CACHE === "true";
293
+ const verbose = options.verbose === true || process.env.SMRT_VERBOSE === "true" || !!process.env.DEBUG?.includes("smrt");
294
+ if (cacheDisabled) {
295
+ if (verbose) {
296
+ console.log("[discovery] Cache disabled, performing fresh discovery...");
297
+ }
298
+ const packages2 = performDiscovery(baseDir, verbose);
299
+ if (options.timing) {
300
+ lastTimingData.discovery = performance.now() - startTime;
301
+ lastTimingData.total = lastTimingData.discovery;
302
+ }
303
+ return packages2;
304
+ }
305
+ const cacheCheckStart = options.timing ? performance.now() : 0;
306
+ const cached = getCachedDiscovery(baseDir, verbose);
307
+ if (options.timing) {
308
+ lastTimingData.cacheCheck = performance.now() - cacheCheckStart;
309
+ }
310
+ if (cached) {
311
+ if (verbose) {
312
+ console.log(
313
+ `[discovery] ✅ Using cached SMRT packages (${cached.packages.length} package(s))`
314
+ );
315
+ }
316
+ if (options.timing) {
317
+ lastTimingData.total = performance.now() - startTime;
318
+ }
319
+ return cached.packages;
320
+ }
321
+ if (verbose) {
322
+ console.log("[discovery] Cache miss, performing discovery...");
323
+ }
324
+ const discoveryStart = options.timing ? performance.now() : 0;
325
+ const packages = performDiscovery(baseDir, verbose);
326
+ if (options.timing) {
327
+ lastTimingData.discovery = performance.now() - discoveryStart;
328
+ }
329
+ saveCachedDiscovery(baseDir, packages, verbose);
330
+ if (options.timing) {
331
+ lastTimingData.total = performance.now() - startTime;
332
+ }
333
+ return packages;
334
+ }
335
+ if (import.meta.url === `file://${process.argv[1]}`) {
336
+ const noCache = process.argv.includes("--no-cache");
337
+ const verbose = process.argv.includes("--verbose") || process.argv.includes("-v");
338
+ const timing = process.argv.includes("--timing");
339
+ const packages = discoverSmrtPackages({ noCache, verbose, timing });
340
+ console.log("\nDiscovered SMRT packages:");
341
+ console.log(JSON.stringify(packages, null, 2));
342
+ if (timing) {
343
+ const timingData = getDiscoveryTiming();
344
+ console.log("\nTiming:");
345
+ if (timingData.cacheCheck !== void 0) {
346
+ console.log(` Cache check: ${timingData.cacheCheck.toFixed(2)}ms`);
347
+ }
348
+ if (timingData.discovery !== void 0) {
349
+ console.log(` Discovery: ${timingData.discovery.toFixed(2)}ms`);
350
+ }
351
+ if (timingData.total !== void 0) {
352
+ console.log(` Total: ${timingData.total.toFixed(2)}ms`);
353
+ }
354
+ }
355
+ }
356
+ export {
357
+ discoverSmrtPackages,
358
+ getDiscoveryTiming,
359
+ resolveManifestPath
360
+ };
361
+ //# sourceMappingURL=discover-smrt-packages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-smrt-packages.js","sources":["../../src/manifest/discover-smrt-packages.ts"],"sourcesContent":["/**\n * SMRT Package Discovery\n *\n * Discovers all SMRT packages in node_modules by:\n * 1. Scanning node_modules directory for installed packages\n * 2. Following symlinks for workspace: dependencies\n * 3. Checking for a package manifest (`dist/manifest.json`,\n * `.smrt/manifest.json`, or `src/manifest/manifest.json`) with moduleType: \"smrt\"\n * 4. Caching results based on lockfile hash and manifest timestamps\n *\n * Cache Strategy:\n * - ENABLED by default (5-50x faster startup)\n * - Automatically invalidates when lockfile or any manifest.json changes\n * - Disable with SMRT_DISABLE_DISCOVERY_CACHE=true for debugging\n */\n\nimport { createHash } from 'node:crypto';\nimport {\n existsSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n realpathSync,\n statSync,\n writeFileSync,\n} from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { dirname, join } from 'node:path';\nimport { parse } from '../utils/json.js';\n\nconst CACHE_DIR = '.smrt';\nconst CACHE_FILE = 'discovery-cache.json';\nconst CACHE_VERSION = 4;\n\n/** Timing data for --timing flag */\ninterface TimingData {\n discovery?: number;\n cacheCheck?: number;\n total?: number;\n}\n\n/** Module-level timing storage */\nlet lastTimingData: TimingData = {};\n\n/**\n * Get timing data from last discovery operation\n */\nexport function getDiscoveryTiming(): TimingData {\n return { ...lastTimingData };\n}\n\n/**\n * Get hash of lockfile for cache invalidation\n */\nfunction getLockfileHash(baseDir: string): string | null {\n // Check for pnpm or npm lockfile\n const lockfile = existsSync(join(baseDir, 'pnpm-lock.yaml'))\n ? join(baseDir, 'pnpm-lock.yaml')\n : join(baseDir, 'package-lock.json');\n\n if (!existsSync(lockfile)) {\n return null;\n }\n\n const content = readFileSync(lockfile, 'utf-8');\n return createHash('sha256').update(content).digest('hex');\n}\n\n/**\n * Get hash of package.json for cache invalidation when a package workspace\n * changes its declared dependencies without a colocated lockfile.\n */\nfunction getPackageJsonHash(baseDir: string): string | null {\n const packageJsonPath = join(baseDir, 'package.json');\n\n if (!existsSync(packageJsonPath)) {\n return null;\n }\n\n const content = readFileSync(packageJsonPath, 'utf-8');\n return createHash('sha256').update(content).digest('hex');\n}\n\n/**\n * Get a hash of all manifest timestamps for cache invalidation\n * This catches changes to SMRT packages even when lockfile hasn't changed\n */\nfunction getManifestTimestampsHash(\n baseDir: string,\n packages: string[],\n): string {\n const timestamps: string[] = [];\n\n for (const pkgName of packages) {\n try {\n const manifestPath = resolveManifestPath(pkgName, baseDir);\n\n if (manifestPath && existsSync(manifestPath)) {\n const stats = statSync(manifestPath);\n timestamps.push(`${pkgName}:${stats.mtimeMs}`);\n }\n } catch {\n // Ignore errors, package may have been removed\n }\n }\n\n return createHash('sha256').update(timestamps.join('|')).digest('hex');\n}\n\ninterface DiscoveryCache {\n version: number;\n lockfileHash: string | null;\n packageJsonHash: string | null;\n manifestsHash: string;\n timestamp: number;\n packages: string[];\n}\n\nfunction findManifestPath(pkgPath: string): string | null {\n const candidates = [\n join(pkgPath, 'dist', 'manifest.json'),\n join(pkgPath, '.smrt', 'manifest.json'),\n join(pkgPath, 'src', 'manifest', 'manifest.json'),\n ];\n\n for (const candidate of candidates) {\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n}\n\nfunction normalizePackagePath(pkgPath: string): string {\n try {\n return realpathSync(pkgPath);\n } catch {\n return pkgPath;\n }\n}\n\nfunction resolvePackageDir(\n packageName: string,\n baseDir: string = process.cwd(),\n): string | null {\n try {\n const requireFromBase = createRequire(join(baseDir, 'package.json'));\n const packageEntry = requireFromBase.resolve(packageName);\n let currentDir = dirname(packageEntry);\n let resolvedPackageDir: string | null = null;\n\n for (let i = 0; i < 10; i++) {\n const packageJsonPath = join(currentDir, 'package.json');\n\n if (existsSync(packageJsonPath)) {\n const packageJson = parse<{ name?: string }>(\n readFileSync(packageJsonPath, 'utf-8'),\n );\n\n if (packageJson.name === packageName) {\n resolvedPackageDir = currentDir;\n }\n }\n\n const parentDir = dirname(currentDir);\n if (parentDir === currentDir) {\n break;\n }\n\n currentDir = parentDir;\n }\n\n if (resolvedPackageDir) {\n return normalizePackagePath(resolvedPackageDir);\n }\n } catch {\n // Fall through to direct node_modules lookup below.\n }\n\n const directPath = join(baseDir, 'node_modules', packageName);\n if (existsSync(directPath)) {\n return normalizePackagePath(directPath);\n }\n\n return null;\n}\n\nexport function resolveManifestPath(\n packageName: string,\n baseDir: string = process.cwd(),\n): string | null {\n const pkgPath = resolvePackageDir(packageName, baseDir);\n if (!pkgPath) {\n return null;\n }\n\n const manifestPath = findManifestPath(pkgPath);\n if (!manifestPath) {\n return null;\n }\n\n try {\n const manifest = parse<{ moduleType?: string }>(\n readFileSync(manifestPath, 'utf-8'),\n );\n\n return manifest.moduleType === 'smrt' ? manifestPath : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Load cached discovery results if valid\n * Cache is invalidated if:\n * - Lockfile hash changed (dependencies changed)\n * - Manifest timestamps hash changed (SMRT packages rebuilt)\n */\nfunction getCachedDiscovery(\n baseDir: string,\n verbose: boolean,\n): { packages: string[]; reason?: string } | null {\n const cachePath = join(baseDir, CACHE_DIR, CACHE_FILE);\n\n if (!existsSync(cachePath)) {\n return null;\n }\n\n try {\n const cache: DiscoveryCache = parse(readFileSync(cachePath, 'utf-8'));\n if (cache.version !== CACHE_VERSION) {\n if (verbose) {\n console.log('[discovery] Cache invalid: discovery version changed');\n }\n return null;\n }\n\n const currentLockfileHash = getLockfileHash(baseDir);\n const currentPackageJsonHash = getPackageJsonHash(baseDir);\n\n // Check lockfile hash\n if (cache.lockfileHash !== currentLockfileHash) {\n if (verbose) {\n console.log('[discovery] Cache invalid: lockfile changed');\n }\n return null;\n }\n\n if (cache.packageJsonHash !== currentPackageJsonHash) {\n if (verbose) {\n console.log('[discovery] Cache invalid: package.json changed');\n }\n return null;\n }\n\n // Check manifest timestamps (only if we have cached packages)\n if (cache.packages.length > 0) {\n const currentManifestsHash = getManifestTimestampsHash(\n baseDir,\n cache.packages,\n );\n if (cache.manifestsHash !== currentManifestsHash) {\n if (verbose) {\n console.log('[discovery] Cache invalid: manifest(s) changed');\n }\n return null;\n }\n }\n\n return { packages: cache.packages };\n } catch (error) {\n if (verbose) {\n console.warn(\n '[discovery] Failed to read cache:',\n (error as Error).message,\n );\n }\n return null;\n }\n}\n\n/**\n * Save discovery results to cache\n */\nfunction saveCachedDiscovery(\n baseDir: string,\n packages: string[],\n verbose: boolean,\n): void {\n const cache: DiscoveryCache = {\n version: CACHE_VERSION,\n lockfileHash: getLockfileHash(baseDir),\n packageJsonHash: getPackageJsonHash(baseDir),\n manifestsHash: getManifestTimestampsHash(baseDir, packages),\n timestamp: Date.now(),\n packages: packages,\n };\n\n try {\n mkdirSync(join(baseDir, CACHE_DIR), { recursive: true });\n writeFileSync(\n join(baseDir, CACHE_DIR, CACHE_FILE),\n JSON.stringify(cache, null, 2),\n );\n if (verbose) {\n console.log(`[discovery] Saved cache with ${packages.length} package(s)`);\n }\n } catch (error) {\n if (verbose) {\n console.warn(\n '[discovery] Failed to save cache:',\n (error as Error).message,\n );\n }\n }\n}\n\n/**\n * Check if a package provides a SMRT manifest\n *\n * Supports both regular npm dependencies and workspace: symlinks\n */\nfunction hasManifestExport(packageName: string, baseDir: string): boolean {\n return resolveManifestPath(packageName, baseDir) !== null;\n}\n\nfunction getDeclaredSmrtPackages(baseDir: string, verbose: boolean): string[] {\n const packageJsonPath = join(baseDir, 'package.json');\n if (!existsSync(packageJsonPath)) {\n return [];\n }\n\n try {\n const packageJson = parse<{\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n }>(readFileSync(packageJsonPath, 'utf-8'));\n\n const allDeps = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n ...packageJson.peerDependencies,\n };\n\n return Object.keys(allDeps).filter((pkgName) => {\n if (!pkgName.startsWith('@happyvertical/smrt-')) {\n return false;\n }\n\n const hasManifest = hasManifestExport(pkgName, baseDir);\n if (verbose && hasManifest) {\n console.log(`[discovery] ✅ Found declared SMRT package: ${pkgName}`);\n }\n\n return hasManifest;\n });\n } catch (error) {\n if (verbose) {\n console.warn(\n '[discovery] Failed to read declared dependencies:',\n (error as Error).message,\n );\n }\n return [];\n }\n}\n\n/**\n * Scan node_modules recursively for packages\n */\nfunction* scanNodeModules(baseDir: string): Generator<string> {\n const nodeModulesPath = join(baseDir, 'node_modules');\n\n if (!existsSync(nodeModulesPath)) {\n return;\n }\n\n try {\n const entries = readdirSync(nodeModulesPath);\n\n for (const entry of entries) {\n if (entry === '.bin' || entry === '.pnpm' || entry === '.cache') {\n continue;\n }\n\n const entryPath = join(nodeModulesPath, entry);\n\n try {\n const stats = statSync(entryPath);\n\n if (stats.isDirectory() || stats.isSymbolicLink()) {\n // Scoped packages (e.g., @happyvertical/smrt-core)\n if (entry.startsWith('@')) {\n const scopeEntries = readdirSync(entryPath);\n for (const scopedPkg of scopeEntries) {\n yield `${entry}/${scopedPkg}`;\n }\n } else {\n // Regular packages\n yield entry;\n }\n }\n } catch {}\n }\n } catch (error) {\n // node_modules doesn't exist or can't be read\n return;\n }\n}\n\n/**\n * Perform fresh discovery of SMRT packages\n */\nfunction performDiscovery(baseDir: string, verbose: boolean): string[] {\n if (verbose) {\n console.log('[discovery] Scanning node_modules for SMRT packages...');\n }\n\n try {\n const smrtPackages = new Set<string>();\n\n // Scan node_modules for all packages\n for (const pkgName of scanNodeModules(baseDir)) {\n if (hasManifestExport(pkgName, baseDir)) {\n smrtPackages.add(pkgName);\n if (verbose) {\n console.log(`[discovery] ✅ Found SMRT package: ${pkgName}`);\n }\n }\n }\n\n for (const pkgName of getDeclaredSmrtPackages(baseDir, verbose)) {\n smrtPackages.add(pkgName);\n }\n\n if (verbose) {\n console.log(\n `[discovery] Discovered ${smrtPackages.size} SMRT package(s)`,\n );\n }\n\n return Array.from(smrtPackages);\n } catch (error) {\n console.error(\n '[discovery] Failed to discover packages:',\n (error as Error).message,\n );\n return [];\n }\n}\n\nexport interface DiscoveryOptions {\n /** Override project root for discovery/cache */\n baseDir?: string;\n /** Force fresh discovery, ignoring cache */\n noCache?: boolean;\n /** Show verbose output */\n verbose?: boolean;\n /** Record timing data */\n timing?: boolean;\n}\n\n/**\n * Main discovery function\n *\n * Cache ENABLED by default (5-50x faster startup)\n * - Automatically invalidates when lockfile changes (dependencies updated)\n * - Automatically invalidates when any manifest.json changes (packages rebuilt)\n *\n * Disable with SMRT_DISABLE_DISCOVERY_CACHE=true for debugging\n */\nexport function discoverSmrtPackages(options: DiscoveryOptions = {}): string[] {\n const startTime = options.timing ? performance.now() : 0;\n lastTimingData = {};\n const baseDir = options.baseDir || process.cwd();\n\n const cacheDisabled =\n options.noCache || process.env.SMRT_DISABLE_DISCOVERY_CACHE === 'true';\n\n const verbose: boolean =\n options.verbose === true ||\n process.env.SMRT_VERBOSE === 'true' ||\n !!process.env.DEBUG?.includes('smrt');\n\n if (cacheDisabled) {\n if (verbose) {\n console.log('[discovery] Cache disabled, performing fresh discovery...');\n }\n\n const packages = performDiscovery(baseDir, verbose);\n\n if (options.timing) {\n lastTimingData.discovery = performance.now() - startTime;\n lastTimingData.total = lastTimingData.discovery;\n }\n\n return packages;\n }\n\n // Try cache first\n const cacheCheckStart = options.timing ? performance.now() : 0;\n const cached = getCachedDiscovery(baseDir, verbose);\n\n if (options.timing) {\n lastTimingData.cacheCheck = performance.now() - cacheCheckStart;\n }\n\n if (cached) {\n if (verbose) {\n console.log(\n `[discovery] ✅ Using cached SMRT packages (${cached.packages.length} package(s))`,\n );\n }\n\n if (options.timing) {\n lastTimingData.total = performance.now() - startTime;\n }\n\n return cached.packages;\n }\n\n // No valid cache - perform fresh discovery\n if (verbose) {\n console.log('[discovery] Cache miss, performing discovery...');\n }\n\n const discoveryStart = options.timing ? performance.now() : 0;\n const packages = performDiscovery(baseDir, verbose);\n\n if (options.timing) {\n lastTimingData.discovery = performance.now() - discoveryStart;\n }\n\n // Save to cache\n saveCachedDiscovery(baseDir, packages, verbose);\n\n if (options.timing) {\n lastTimingData.total = performance.now() - startTime;\n }\n\n return packages;\n}\n\n// Run if called directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n const noCache = process.argv.includes('--no-cache');\n const verbose =\n process.argv.includes('--verbose') || process.argv.includes('-v');\n const timing = process.argv.includes('--timing');\n\n const packages = discoverSmrtPackages({ noCache, verbose, timing });\n\n console.log('\\nDiscovered SMRT packages:');\n console.log(JSON.stringify(packages, null, 2));\n\n if (timing) {\n const timingData = getDiscoveryTiming();\n console.log('\\nTiming:');\n if (timingData.cacheCheck !== undefined) {\n console.log(` Cache check: ${timingData.cacheCheck.toFixed(2)}ms`);\n }\n if (timingData.discovery !== undefined) {\n console.log(` Discovery: ${timingData.discovery.toFixed(2)}ms`);\n }\n if (timingData.total !== undefined) {\n console.log(` Total: ${timingData.total.toFixed(2)}ms`);\n }\n }\n}\n"],"names":["packages"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { SmartObjectManifest } from '../scanner/types.js';
2
+ /**
3
+ * Options for ManifestBuilder.generate()
4
+ *
5
+ * Controls file discovery, scanner configuration, output generation, and metadata injection
6
+ */
7
+ export interface ManifestBuilderOptions {
8
+ include?: string[];
9
+ exclude?: string[];
10
+ followImports?: boolean;
11
+ baseClasses?: string[];
12
+ loadViteConfig?: boolean;
13
+ discoverExternalPackages?: boolean;
14
+ includeExternalBaseClasses?: boolean;
15
+ includePrivateMethods?: boolean;
16
+ includeStaticMethods?: boolean;
17
+ outputDir?: string;
18
+ outputName?: string;
19
+ generateTypeStub?: boolean;
20
+ stubName?: string;
21
+ injectPackageInfo?: boolean;
22
+ moduleType?: string;
23
+ /**
24
+ * @deprecated Tree shaking is no longer needed. The AST scanner no longer includes external objects in the manifest by default.
25
+ */
26
+ treeShake?: boolean;
27
+ /**
28
+ * @deprecated Whitelists are no longer needed. The AST scanner no longer includes external objects in the manifest by default.
29
+ */
30
+ externalObjectsWhitelist?: string[];
31
+ }
32
+ /**
33
+ * Orchestrates manifest generation with configurable options
34
+ *
35
+ * Consolidates logic from generate-manifest.js and generate-test-manifest.js
36
+ * into a single, testable, and maintainable service.
37
+ */
38
+ export declare class ManifestBuilder {
39
+ /**
40
+ * Generate manifest with specified options
41
+ */
42
+ generate(options?: ManifestBuilderOptions): Promise<SmartObjectManifest>;
43
+ private normalizeFilePaths;
44
+ private findWorkspaceRoot;
45
+ /**
46
+ * Discover source files based on include/exclude patterns
47
+ */
48
+ private discoverFiles;
49
+ /**
50
+ * Configure AST scanner with baseClasses, external packages, and vite config
51
+ */
52
+ private configureScanner;
53
+ /**
54
+ * Scan files using OxcScanner and build manifest via ManifestAdapter.
55
+ *
56
+ * This replaces the old ASTScanner-based scanFiles() method.
57
+ * Uses the same OXC pipeline as the Vite plugin's scanWithOxc().
58
+ */
59
+ private scanAndBuildManifest;
60
+ /**
61
+ * Enrich manifest with metadata (moduleType, smrtDependencies, packageInfo).
62
+ *
63
+ * Note: As of Issue #1013, this method no longer merges external package
64
+ * objects into the manifest. Dependencies are referenced via
65
+ * `smrtDependencies` and resolved at runtime by manifest-loader.ts.
66
+ */
67
+ private enrichManifest;
68
+ /**
69
+ * Write manifest JSON and optional TypeScript stub
70
+ */
71
+ private writeOutput;
72
+ /**
73
+ * Generate TypeScript stub file with manifest constant
74
+ */
75
+ private generateTypeStub;
76
+ /**
77
+ * Load baseClasses from vite.config.ts
78
+ */
79
+ private loadViteConfigBaseClasses;
80
+ /**
81
+ * Load base classes from external SMRT package manifests
82
+ */
83
+ private loadExternalBaseClasses;
84
+ /**
85
+ * Read package.json from current working directory
86
+ */
87
+ private readPackageJson;
88
+ /**
89
+ * Create empty manifest when no files found
90
+ */
91
+ private createEmptyManifest;
92
+ }
93
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/manifest/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAkB/D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IAErC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;CACrC;AAeD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,QAAQ,CACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,mBAAmB,CAAC;IAkC/B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;YACW,gBAAgB;IAoD9B;;;;;OAKG;YACW,oBAAoB;IAyDlC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;YACW,WAAW;IAyCzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;YACW,yBAAyB;IA4EvC;;OAEG;YACW,uBAAuB;IAwCrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAuB5B"}