@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.
- package/AGENTS.md +124 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +265 -0
- package/bin/smrt-prebuild.js +26 -0
- package/dist/__tests__/fixtures/advisor-test-classes.d.ts +28 -0
- package/dist/__tests__/fixtures/advisor-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts +12 -0
- package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts +28 -0
- package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures/inheritance-test-classes.d.ts +43 -0
- package/dist/__tests__/fixtures/inheritance-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts +18 -0
- package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts +15 -0
- package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures/object-spec-test-classes.d.ts +13 -0
- package/dist/__tests__/fixtures/object-spec-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/registry-test-classes.d.ts +23 -0
- package/dist/__tests__/fixtures/registry-test-classes.d.ts.map +1 -0
- package/dist/adapters/ai-usage.d.ts +23 -0
- package/dist/adapters/ai-usage.d.ts.map +1 -0
- package/dist/adapters/ai-usage.js +105 -0
- package/dist/adapters/ai-usage.js.map +1 -0
- package/dist/adapters/cost-rates.d.ts +20 -0
- package/dist/adapters/cost-rates.d.ts.map +1 -0
- package/dist/adapters/cost-rates.js +40 -0
- package/dist/adapters/cost-rates.js.map +1 -0
- package/dist/adapters/index.d.ts +19 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/metrics.d.ts +111 -0
- package/dist/adapters/metrics.d.ts.map +1 -0
- package/dist/adapters/metrics.js +169 -0
- package/dist/adapters/metrics.js.map +1 -0
- package/dist/adapters/pubsub.d.ts +124 -0
- package/dist/adapters/pubsub.d.ts.map +1 -0
- package/dist/adapters/pubsub.js +121 -0
- package/dist/adapters/pubsub.js.map +1 -0
- package/dist/browser.d.ts +32 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +68 -0
- package/dist/browser.js.map +1 -0
- package/dist/child-accessors.d.ts +27 -0
- package/dist/child-accessors.d.ts.map +1 -0
- package/dist/child-accessors.js +35 -0
- package/dist/child-accessors.js.map +1 -0
- package/dist/class.d.ts +313 -0
- package/dist/class.d.ts.map +1 -0
- package/dist/class.js +896 -0
- package/dist/class.js.map +1 -0
- package/dist/collection-cache.d.ts +110 -0
- package/dist/collection-cache.d.ts.map +1 -0
- package/dist/collection-cache.js +187 -0
- package/dist/collection-cache.js.map +1 -0
- package/dist/collection.d.ts +894 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +1987 -0
- package/dist/collection.js.map +1 -0
- package/dist/config/global-config.d.ts +3 -0
- package/dist/config/global-config.d.ts.map +1 -0
- package/dist/config/global-config.js +19 -0
- package/dist/config/global-config.js.map +1 -0
- package/dist/config.d.ts +145 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +57 -0
- package/dist/config.js.map +1 -0
- package/dist/consumer-plugin/index.d.ts +22 -0
- package/dist/consumer-plugin/index.d.ts.map +1 -0
- package/dist/consumer-plugin/index.js +452 -0
- package/dist/consumer-plugin/index.js.map +1 -0
- package/dist/consumer-plugin.d.ts +8 -0
- package/dist/consumer-plugin.d.ts.map +1 -0
- package/dist/consumer-plugin.js +5 -0
- package/dist/consumer-plugin.js.map +1 -0
- package/dist/database.d.ts +95 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +32 -0
- package/dist/database.js.map +1 -0
- package/dist/decorators/compatibility.d.ts +14 -0
- package/dist/decorators/compatibility.d.ts.map +1 -0
- package/dist/decorators/compatibility.js +111 -0
- package/dist/decorators/compatibility.js.map +1 -0
- package/dist/decorators/index.d.ts +381 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +104 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/dispatch/bus.d.ts +306 -0
- package/dist/dispatch/bus.d.ts.map +1 -0
- package/dist/dispatch/bus.js +583 -0
- package/dist/dispatch/bus.js.map +1 -0
- package/dist/dispatch/collections/DispatchSubscriptions.d.ts +79 -0
- package/dist/dispatch/collections/DispatchSubscriptions.d.ts.map +1 -0
- package/dist/dispatch/collections/DispatchSubscriptions.js +243 -0
- package/dist/dispatch/collections/DispatchSubscriptions.js.map +1 -0
- package/dist/dispatch/collections/Dispatches.d.ts +98 -0
- package/dist/dispatch/collections/Dispatches.d.ts.map +1 -0
- package/dist/dispatch/collections/Dispatches.js +358 -0
- package/dist/dispatch/collections/Dispatches.js.map +1 -0
- package/dist/dispatch/index.d.ts +47 -0
- package/dist/dispatch/index.d.ts.map +1 -0
- package/dist/dispatch/models/Dispatch.d.ts +101 -0
- package/dist/dispatch/models/Dispatch.d.ts.map +1 -0
- package/dist/dispatch/models/Dispatch.js +162 -0
- package/dist/dispatch/models/Dispatch.js.map +1 -0
- package/dist/dispatch/models/DispatchSubscription.d.ts +83 -0
- package/dist/dispatch/models/DispatchSubscription.d.ts.map +1 -0
- package/dist/dispatch/models/DispatchSubscription.js +112 -0
- package/dist/dispatch/models/DispatchSubscription.js.map +1 -0
- package/dist/dispatch/tenant-resolver.d.ts +98 -0
- package/dist/dispatch/tenant-resolver.d.ts.map +1 -0
- package/dist/dispatch/tenant-resolver.js +32 -0
- package/dist/dispatch/tenant-resolver.js.map +1 -0
- package/dist/dispatch/types.d.ts +149 -0
- package/dist/dispatch/types.d.ts.map +1 -0
- package/dist/embeddings/hash.d.ts +33 -0
- package/dist/embeddings/hash.d.ts.map +1 -0
- package/dist/embeddings/hash.js +37 -0
- package/dist/embeddings/hash.js.map +1 -0
- package/dist/embeddings/index.d.ts +36 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/provider.d.ts +75 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +170 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/embeddings/similarity.d.ts +47 -0
- package/dist/embeddings/similarity.d.ts.map +1 -0
- package/dist/embeddings/similarity.js +64 -0
- package/dist/embeddings/similarity.js.map +1 -0
- package/dist/embeddings/storage.d.ts +125 -0
- package/dist/embeddings/storage.d.ts.map +1 -0
- package/dist/embeddings/storage.js +283 -0
- package/dist/embeddings/storage.js.map +1 -0
- package/dist/embeddings/types.d.ts +250 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/errors.d.ts +363 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +669 -0
- package/dist/errors.js.map +1 -0
- package/dist/generators/cli.d.ts +162 -0
- package/dist/generators/cli.d.ts.map +1 -0
- package/dist/generators/cli.js +462 -0
- package/dist/generators/cli.js.map +1 -0
- package/dist/generators/index.d.ts +13 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/mcp-runtime-template.d.ts +60 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -0
- package/dist/generators/mcp-runtime-template.js +509 -0
- package/dist/generators/mcp-runtime-template.js.map +1 -0
- package/dist/generators/mcp.d.ts +231 -0
- package/dist/generators/mcp.d.ts.map +1 -0
- package/dist/generators/mcp.js +1220 -0
- package/dist/generators/mcp.js.map +1 -0
- package/dist/generators/rest.d.ts +171 -0
- package/dist/generators/rest.d.ts.map +1 -0
- package/dist/generators/rest.js +591 -0
- package/dist/generators/rest.js.map +1 -0
- package/dist/generators/swagger.d.ts +21 -0
- package/dist/generators/swagger.d.ts.map +1 -0
- package/dist/generators/swagger.js +307 -0
- package/dist/generators/swagger.js.map +1 -0
- package/dist/generators/tenant-gate.d.ts +74 -0
- package/dist/generators/tenant-gate.d.ts.map +1 -0
- package/dist/generators/tenant-gate.js +15 -0
- package/dist/generators/tenant-gate.js.map +1 -0
- package/dist/generators.d.ts +8 -0
- package/dist/generators.d.ts.map +1 -0
- package/dist/generators.js +19 -0
- package/dist/generators.js.map +1 -0
- package/dist/hierarchical.d.ts +103 -0
- package/dist/hierarchical.d.ts.map +1 -0
- package/dist/hierarchical.js +184 -0
- package/dist/hierarchical.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +202 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors.d.ts +251 -0
- package/dist/interceptors.d.ts.map +1 -0
- package/dist/interceptors.js +259 -0
- package/dist/interceptors.js.map +1 -0
- package/dist/junction.d.ts +99 -0
- package/dist/junction.d.ts.map +1 -0
- package/dist/junction.js +136 -0
- package/dist/junction.js.map +1 -0
- package/dist/knowledge.d.ts +11 -0
- package/dist/knowledge.d.ts.map +1 -0
- package/dist/knowledge.js +310 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/lazy-config.d.ts +160 -0
- package/dist/lazy-config.d.ts.map +1 -0
- package/dist/lazy-config.js +146 -0
- package/dist/lazy-config.js.map +1 -0
- package/dist/manifest/discover-base-classes.d.ts +78 -0
- package/dist/manifest/discover-base-classes.d.ts.map +1 -0
- package/dist/manifest/discover-base-classes.js +85 -0
- package/dist/manifest/discover-base-classes.js.map +1 -0
- package/dist/manifest/discover-smrt-packages.d.ts +48 -0
- package/dist/manifest/discover-smrt-packages.d.ts.map +1 -0
- package/dist/manifest/discover-smrt-packages.js +361 -0
- package/dist/manifest/discover-smrt-packages.js.map +1 -0
- package/dist/manifest/generator.d.ts +93 -0
- package/dist/manifest/generator.d.ts.map +1 -0
- package/dist/manifest/generator.js +380 -0
- package/dist/manifest/generator.js.map +1 -0
- package/dist/manifest/index.d.ts +16 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +51 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/manager.d.ts +51 -0
- package/dist/manifest/manager.d.ts.map +1 -0
- package/dist/manifest/manager.js +89 -0
- package/dist/manifest/manager.js.map +1 -0
- package/dist/manifest/manifest-loader.d.ts +187 -0
- package/dist/manifest/manifest-loader.d.ts.map +1 -0
- package/dist/manifest/manifest-loader.js +847 -0
- package/dist/manifest/manifest-loader.js.map +1 -0
- package/dist/manifest/sources/composite.d.ts +22 -0
- package/dist/manifest/sources/composite.d.ts.map +1 -0
- package/dist/manifest/sources/composite.js +60 -0
- package/dist/manifest/sources/composite.js.map +1 -0
- package/dist/manifest/sources/embedded.d.ts +7 -0
- package/dist/manifest/sources/embedded.d.ts.map +1 -0
- package/dist/manifest/sources/embedded.js +30 -0
- package/dist/manifest/sources/embedded.js.map +1 -0
- package/dist/manifest/sources/explicit-paths.d.ts +17 -0
- package/dist/manifest/sources/explicit-paths.d.ts.map +1 -0
- package/dist/manifest/sources/explicit-paths.js +35 -0
- package/dist/manifest/sources/explicit-paths.js.map +1 -0
- package/dist/manifest/sources/fallback.d.ts +25 -0
- package/dist/manifest/sources/fallback.d.ts.map +1 -0
- package/dist/manifest/sources/fallback.js +63 -0
- package/dist/manifest/sources/fallback.js.map +1 -0
- package/dist/manifest/sources/index.d.ts +17 -0
- package/dist/manifest/sources/index.d.ts.map +1 -0
- package/dist/manifest/sources/local-test.d.ts +7 -0
- package/dist/manifest/sources/local-test.d.ts.map +1 -0
- package/dist/manifest/sources/local-test.js +21 -0
- package/dist/manifest/sources/local-test.js.map +1 -0
- package/dist/manifest/sources/static.d.ts +7 -0
- package/dist/manifest/sources/static.d.ts.map +1 -0
- package/dist/manifest/sources/static.js +19 -0
- package/dist/manifest/sources/static.js.map +1 -0
- package/dist/manifest/sources/test.d.ts +7 -0
- package/dist/manifest/sources/test.d.ts.map +1 -0
- package/dist/manifest/sources/test.js +21 -0
- package/dist/manifest/sources/test.js.map +1 -0
- package/dist/manifest/sources/types.d.ts +79 -0
- package/dist/manifest/sources/types.d.ts.map +1 -0
- package/dist/manifest/sources/types.js +61 -0
- package/dist/manifest/sources/types.js.map +1 -0
- package/dist/manifest/static-manifest.d.ts +4 -0
- package/dist/manifest/static-manifest.d.ts.map +1 -0
- package/dist/manifest/static-manifest.js +1535 -0
- package/dist/manifest/static-manifest.js.map +1 -0
- package/dist/manifest/store.d.ts +111 -0
- package/dist/manifest/store.d.ts.map +1 -0
- package/dist/manifest/store.js +431 -0
- package/dist/manifest/store.js.map +1 -0
- package/dist/manifest/test-manifest-loader.d.ts +3 -0
- package/dist/manifest/test-manifest-loader.d.ts.map +1 -0
- package/dist/manifest/test-manifest-stub.d.ts +4 -0
- package/dist/manifest/test-manifest-stub.d.ts.map +1 -0
- package/dist/manifest/test-manifest-stub.js +80013 -0
- package/dist/manifest/test-manifest-stub.js.map +1 -0
- package/dist/manifest.d.ts +8 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +20 -0
- package/dist/manifest.js.map +1 -0
- package/dist/manifest.json +1489 -0
- package/dist/mcp-advisor/index.d.ts +499 -0
- package/dist/mcp-advisor/index.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/add-ai-methods.d.ts +6 -0
- package/dist/mcp-advisor/tools/add-ai-methods.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/configure-decorators.d.ts +6 -0
- package/dist/mcp-advisor/tools/configure-decorators.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/generate-collection.d.ts +6 -0
- package/dist/mcp-advisor/tools/generate-collection.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/generate-field-definitions.d.ts +6 -0
- package/dist/mcp-advisor/tools/generate-field-definitions.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/generate-smrt-class.d.ts +6 -0
- package/dist/mcp-advisor/tools/generate-smrt-class.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/get-object-config.d.ts +6 -0
- package/dist/mcp-advisor/tools/get-object-config.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/get-object-schema.d.ts +10 -0
- package/dist/mcp-advisor/tools/get-object-schema.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/list-registered-objects.d.ts +9 -0
- package/dist/mcp-advisor/tools/list-registered-objects.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts +9 -0
- package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts +9 -0
- package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/validate-smrt-object.d.ts +6 -0
- package/dist/mcp-advisor/tools/validate-smrt-object.d.ts.map +1 -0
- package/dist/mcp-advisor/types.d.ts +209 -0
- package/dist/mcp-advisor/types.d.ts.map +1 -0
- package/dist/migrations/backfill-tracker.d.ts +84 -0
- package/dist/migrations/backfill-tracker.d.ts.map +1 -0
- package/dist/migrations/backfill-tracker.js +118 -0
- package/dist/migrations/backfill-tracker.js.map +1 -0
- package/dist/migrations/checksum.d.ts +43 -0
- package/dist/migrations/checksum.d.ts.map +1 -0
- package/dist/migrations/checksum.js +32 -0
- package/dist/migrations/checksum.js.map +1 -0
- package/dist/migrations/differ.d.ts +186 -0
- package/dist/migrations/differ.d.ts.map +1 -0
- package/dist/migrations/differ.js +601 -0
- package/dist/migrations/differ.js.map +1 -0
- package/dist/migrations/generator.d.ts +133 -0
- package/dist/migrations/generator.d.ts.map +1 -0
- package/dist/migrations/generator.js +328 -0
- package/dist/migrations/generator.js.map +1 -0
- package/dist/migrations/index.d.ts +20 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/orchestrate.d.ts +148 -0
- package/dist/migrations/orchestrate.d.ts.map +1 -0
- package/dist/migrations/orchestrate.js +118 -0
- package/dist/migrations/orchestrate.js.map +1 -0
- package/dist/migrations/tracker.d.ts +134 -0
- package/dist/migrations/tracker.d.ts.map +1 -0
- package/dist/migrations/tracker.js +624 -0
- package/dist/migrations/tracker.js.map +1 -0
- package/dist/migrations/types.d.ts +221 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations.d.ts +7 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +26 -0
- package/dist/migrations.js.map +1 -0
- package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +56 -0
- package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js +163 -0
- package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js +13 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js +654 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js +111 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js +10 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js +824 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js +10 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
- package/dist/object.d.ts +1202 -0
- package/dist/object.d.ts.map +1 -0
- package/dist/object.js +2731 -0
- package/dist/object.js.map +1 -0
- package/dist/polymorphic-association.d.ts +69 -0
- package/dist/polymorphic-association.d.ts.map +1 -0
- package/dist/polymorphic-association.js +96 -0
- package/dist/polymorphic-association.js.map +1 -0
- package/dist/prebuild/cli.d.ts +7 -0
- package/dist/prebuild/cli.d.ts.map +1 -0
- package/dist/prebuild/cli.js +29 -0
- package/dist/prebuild/cli.js.map +1 -0
- package/dist/prebuild/index.d.ts +22 -0
- package/dist/prebuild/index.d.ts.map +1 -0
- package/dist/prebuild/index.js +239 -0
- package/dist/prebuild/index.js.map +1 -0
- package/dist/prebuild.d.ts +8 -0
- package/dist/prebuild.d.ts.map +1 -0
- package/dist/prebuild.js +6 -0
- package/dist/prebuild.js.map +1 -0
- package/dist/registry/cache-config.d.ts +13 -0
- package/dist/registry/cache-config.d.ts.map +1 -0
- package/dist/registry/cache-config.js +17 -0
- package/dist/registry/cache-config.js.map +1 -0
- package/dist/registry/class-registration.d.ts +31 -0
- package/dist/registry/class-registration.d.ts.map +1 -0
- package/dist/registry/class-registration.js +1074 -0
- package/dist/registry/class-registration.js.map +1 -0
- package/dist/registry/collection-resolution.d.ts +45 -0
- package/dist/registry/collection-resolution.d.ts.map +1 -0
- package/dist/registry/collection-resolution.js +121 -0
- package/dist/registry/collection-resolution.js.map +1 -0
- package/dist/registry/collision-policy.d.ts +179 -0
- package/dist/registry/collision-policy.d.ts.map +1 -0
- package/dist/registry/collision-policy.js +153 -0
- package/dist/registry/collision-policy.js.map +1 -0
- package/dist/registry/diagnostics.d.ts +58 -0
- package/dist/registry/diagnostics.d.ts.map +1 -0
- package/dist/registry/diagnostics.js +54 -0
- package/dist/registry/diagnostics.js.map +1 -0
- package/dist/registry/embedding-manager.d.ts +23 -0
- package/dist/registry/embedding-manager.d.ts.map +1 -0
- package/dist/registry/embedding-manager.js +62 -0
- package/dist/registry/embedding-manager.js.map +1 -0
- package/dist/registry/index.d.ts +13 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/inheritance-resolver.d.ts +13 -0
- package/dist/registry/inheritance-resolver.d.ts.map +1 -0
- package/dist/registry/inheritance-resolver.js +244 -0
- package/dist/registry/inheritance-resolver.js.map +1 -0
- package/dist/registry/manifest-field-merge.d.ts +4 -0
- package/dist/registry/manifest-field-merge.d.ts.map +1 -0
- package/dist/registry/manifest-field-merge.js +82 -0
- package/dist/registry/manifest-field-merge.js.map +1 -0
- package/dist/registry/name-resolver.d.ts +102 -0
- package/dist/registry/name-resolver.d.ts.map +1 -0
- package/dist/registry/name-resolver.js +241 -0
- package/dist/registry/name-resolver.js.map +1 -0
- package/dist/registry/relationship-graph.d.ts +16 -0
- package/dist/registry/relationship-graph.d.ts.map +1 -0
- package/dist/registry/relationship-graph.js +79 -0
- package/dist/registry/relationship-graph.js.map +1 -0
- package/dist/registry/schema-builder.d.ts +113 -0
- package/dist/registry/schema-builder.d.ts.map +1 -0
- package/dist/registry/schema-builder.js +474 -0
- package/dist/registry/schema-builder.js.map +1 -0
- package/dist/registry/shared-state.d.ts +62 -0
- package/dist/registry/shared-state.d.ts.map +1 -0
- package/dist/registry/shared-state.js +135 -0
- package/dist/registry/shared-state.js.map +1 -0
- package/dist/registry/types.d.ts +667 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/validator.d.ts +13 -0
- package/dist/registry/validator.d.ts.map +1 -0
- package/dist/registry/validator.js +138 -0
- package/dist/registry/validator.js.map +1 -0
- package/dist/registry.d.ts +1358 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +2301 -0
- package/dist/registry.js.map +1 -0
- package/dist/runtime/client.d.ts +34 -0
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +104 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/runtime/index.d.ts +10 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/mcp.d.ts +47 -0
- package/dist/runtime/mcp.d.ts.map +1 -0
- package/dist/runtime/mcp.js +72 -0
- package/dist/runtime/mcp.js.map +1 -0
- package/dist/runtime/server.d.ts +92 -0
- package/dist/runtime/server.d.ts.map +1 -0
- package/dist/runtime/server.js +390 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/types.d.ts +58 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime.d.ts +8 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +10 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scanner/import-scanner.d.ts +7 -0
- package/dist/scanner/import-scanner.d.ts.map +1 -0
- package/dist/scanner/index.d.ts +12 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/manifest-generator.d.ts +304 -0
- package/dist/scanner/manifest-generator.d.ts.map +1 -0
- package/dist/scanner/manifest-generator.js +1707 -0
- package/dist/scanner/manifest-generator.js.map +1 -0
- package/dist/scanner/test-file-patterns.d.ts +18 -0
- package/dist/scanner/test-file-patterns.d.ts.map +1 -0
- package/dist/scanner/test-file-patterns.js +16 -0
- package/dist/scanner/test-file-patterns.js.map +1 -0
- package/dist/scanner/types.d.ts +313 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +2 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/scanner.d.ts +6 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +6 -0
- package/dist/scanner.js.map +1 -0
- package/dist/schema/code-generator.d.ts +53 -0
- package/dist/schema/code-generator.d.ts.map +1 -0
- package/dist/schema/ddl/base-strategy.d.ts +80 -0
- package/dist/schema/ddl/base-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/base-strategy.js +240 -0
- package/dist/schema/ddl/base-strategy.js.map +1 -0
- package/dist/schema/ddl/duckdb-strategy.d.ts +33 -0
- package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/duckdb-strategy.js +74 -0
- package/dist/schema/ddl/duckdb-strategy.js.map +1 -0
- package/dist/schema/ddl/index.d.ts +53 -0
- package/dist/schema/ddl/index.d.ts.map +1 -0
- package/dist/schema/ddl/index.js +80 -0
- package/dist/schema/ddl/index.js.map +1 -0
- package/dist/schema/ddl/json-duckdb-strategy.d.ts +8 -0
- package/dist/schema/ddl/json-duckdb-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/json-duckdb-strategy.js +14 -0
- package/dist/schema/ddl/json-duckdb-strategy.js.map +1 -0
- package/dist/schema/ddl/postgres-strategy.d.ts +29 -0
- package/dist/schema/ddl/postgres-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/postgres-strategy.js +102 -0
- package/dist/schema/ddl/postgres-strategy.js.map +1 -0
- package/dist/schema/ddl/sqlite-strategy.d.ts +38 -0
- package/dist/schema/ddl/sqlite-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/sqlite-strategy.js +74 -0
- package/dist/schema/ddl/sqlite-strategy.js.map +1 -0
- package/dist/schema/ddl/types.d.ts +114 -0
- package/dist/schema/ddl/types.d.ts.map +1 -0
- package/dist/schema/generator.d.ts +176 -0
- package/dist/schema/generator.d.ts.map +1 -0
- package/dist/schema/generator.js +1076 -0
- package/dist/schema/generator.js.map +1 -0
- package/dist/schema/index-utils.d.ts +19 -0
- package/dist/schema/index-utils.d.ts.map +1 -0
- package/dist/schema/index-utils.js +32 -0
- package/dist/schema/index-utils.js.map +1 -0
- package/dist/schema/index.d.ts +13 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/override-system.d.ts +43 -0
- package/dist/schema/override-system.d.ts.map +1 -0
- package/dist/schema/schema-aggregator.d.ts +112 -0
- package/dist/schema/schema-aggregator.d.ts.map +1 -0
- package/dist/schema/schema-manager.d.ts +95 -0
- package/dist/schema/schema-manager.d.ts.map +1 -0
- package/dist/schema/schema-manager.js +283 -0
- package/dist/schema/schema-manager.js.map +1 -0
- package/dist/schema/sql-identifiers.d.ts +107 -0
- package/dist/schema/sql-identifiers.d.ts.map +1 -0
- package/dist/schema/sql-identifiers.js +190 -0
- package/dist/schema/sql-identifiers.js.map +1 -0
- package/dist/schema/table-verifier.d.ts +10 -0
- package/dist/schema/table-verifier.d.ts.map +1 -0
- package/dist/schema/table-verifier.js +37 -0
- package/dist/schema/table-verifier.js.map +1 -0
- package/dist/schema/types.d.ts +241 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/utils.d.ts +32 -0
- package/dist/schema/utils.d.ts.map +1 -0
- package/dist/schema/utils.js +134 -0
- package/dist/schema/utils.js.map +1 -0
- package/dist/scripts/create-wrappers.js +89 -0
- package/dist/scripts/generate-manifest.js +155 -0
- package/dist/scripts/generate-test-manifest.js +77 -0
- package/dist/scripts/migrate-datetime-to-timestamp.ts +310 -0
- package/dist/scripts/prepack.js +49 -0
- package/dist/signals/bus.d.ts +64 -0
- package/dist/signals/bus.d.ts.map +1 -0
- package/dist/signals/bus.js +102 -0
- package/dist/signals/bus.js.map +1 -0
- package/dist/signals/index.d.ts +11 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/sanitizer.d.ts +54 -0
- package/dist/signals/sanitizer.d.ts.map +1 -0
- package/dist/signals/sanitizer.js +111 -0
- package/dist/signals/sanitizer.js.map +1 -0
- package/dist/smrt-knowledge.json +335 -0
- package/dist/system/compatibility.d.ts +8 -0
- package/dist/system/compatibility.d.ts.map +1 -0
- package/dist/system/compatibility.js +409 -0
- package/dist/system/compatibility.js.map +1 -0
- package/dist/system/index.d.ts +9 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/system/schema.d.ts +69 -0
- package/dist/system/schema.d.ts.map +1 -0
- package/dist/system/schema.js +271 -0
- package/dist/system/schema.js.map +1 -0
- package/dist/system/types.d.ts +135 -0
- package/dist/system/types.d.ts.map +1 -0
- package/dist/system-fields.d.ts +44 -0
- package/dist/system-fields.d.ts.map +1 -0
- package/dist/system-fields.js +55 -0
- package/dist/system-fields.js.map +1 -0
- package/dist/table-cache.d.ts +28 -0
- package/dist/table-cache.d.ts.map +1 -0
- package/dist/table-cache.js +21 -0
- package/dist/table-cache.js.map +1 -0
- package/dist/test-utils.d.ts +140 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/testing/database.d.ts +73 -0
- package/dist/testing/database.d.ts.map +1 -0
- package/dist/testing/database.js +204 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing.d.ts +6 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +5 -0
- package/dist/testing.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/tool-executor.d.ts +101 -0
- package/dist/tools/tool-executor.d.ts.map +1 -0
- package/dist/tools/tool-executor.js +142 -0
- package/dist/tools/tool-executor.js.map +1 -0
- package/dist/tools/tool-generator.d.ts +54 -0
- package/dist/tools/tool-generator.d.ts.map +1 -0
- package/dist/tools/tool-generator.js +121 -0
- package/dist/tools/tool-generator.js.map +1 -0
- package/dist/utils/chunk.d.ts +32 -0
- package/dist/utils/chunk.d.ts.map +1 -0
- package/dist/utils/chunk.js +14 -0
- package/dist/utils/chunk.js.map +1 -0
- package/dist/utils/import-workspace-module.d.ts +8 -0
- package/dist/utils/import-workspace-module.d.ts.map +1 -0
- package/dist/utils/import-workspace-module.js +81 -0
- package/dist/utils/import-workspace-module.js.map +1 -0
- package/dist/utils/json.d.ts +102 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +43 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/lru-cache.d.ts +69 -0
- package/dist/utils/lru-cache.d.ts.map +1 -0
- package/dist/utils/lru-cache.js +100 -0
- package/dist/utils/lru-cache.js.map +1 -0
- package/dist/utils/naming.d.ts +16 -0
- package/dist/utils/naming.d.ts.map +1 -0
- package/dist/utils/naming.js +23 -0
- package/dist/utils/naming.js.map +1 -0
- package/dist/utils/qualified-names.d.ts +122 -0
- package/dist/utils/qualified-names.d.ts.map +1 -0
- package/dist/utils/qualified-names.js +82 -0
- package/dist/utils/qualified-names.js.map +1 -0
- package/dist/utils/scanner-module.d.ts +37 -0
- package/dist/utils/scanner-module.d.ts.map +1 -0
- package/dist/utils.d.ts +177 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +185 -0
- package/dist/utils.js.map +1 -0
- package/dist/vite-plugin/import-build-aware.d.ts +68 -0
- package/dist/vite-plugin/import-build-aware.d.ts.map +1 -0
- package/dist/vite-plugin/import-build-aware.js +72 -0
- package/dist/vite-plugin/import-build-aware.js.map +1 -0
- package/dist/vite-plugin/index.d.ts +59 -0
- package/dist/vite-plugin/index.d.ts.map +1 -0
- package/dist/vite-plugin/index.js +1400 -0
- package/dist/vite-plugin/index.js.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts +66 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.js +1375 -0
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -0
- package/dist/vite-plugin/templates/default-ui.ts +432 -0
- package/dist/vite-plugin/templates/default.html +206 -0
- package/dist/vite-plugin.d.ts +8 -0
- package/dist/vite-plugin.d.ts.map +1 -0
- package/dist/vite-plugin.js +11 -0
- package/dist/vite-plugin.js.map +1 -0
- 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"}
|