@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,271 @@
|
|
|
1
|
+
const CREATE_SMRT_CONTEXTS_TABLE = `
|
|
2
|
+
CREATE TABLE IF NOT EXISTS _smrt_contexts (
|
|
3
|
+
id TEXT PRIMARY KEY,
|
|
4
|
+
owner_class TEXT NOT NULL,
|
|
5
|
+
owner_id TEXT NOT NULL,
|
|
6
|
+
scope TEXT NOT NULL,
|
|
7
|
+
key TEXT NOT NULL,
|
|
8
|
+
value TEXT,
|
|
9
|
+
metadata TEXT,
|
|
10
|
+
version INTEGER DEFAULT 1,
|
|
11
|
+
confidence REAL DEFAULT 1.0,
|
|
12
|
+
success_count INTEGER DEFAULT 0,
|
|
13
|
+
failure_count INTEGER DEFAULT 0,
|
|
14
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
15
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
+
last_used_at TIMESTAMP,
|
|
17
|
+
expires_at TIMESTAMP,
|
|
18
|
+
UNIQUE(owner_class, owner_id, scope, key, version)
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_contexts_owner
|
|
22
|
+
ON _smrt_contexts(owner_class, owner_id);
|
|
23
|
+
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_contexts_scope
|
|
25
|
+
ON _smrt_contexts(scope);
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_contexts_confidence
|
|
28
|
+
ON _smrt_contexts(confidence);
|
|
29
|
+
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_contexts_last_used
|
|
31
|
+
ON _smrt_contexts(last_used_at);
|
|
32
|
+
`;
|
|
33
|
+
const CREATE_SMRT_MIGRATIONS_TABLE = `
|
|
34
|
+
CREATE TABLE IF NOT EXISTS _smrt_migrations (
|
|
35
|
+
id TEXT PRIMARY KEY,
|
|
36
|
+
version TEXT NOT NULL UNIQUE,
|
|
37
|
+
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
38
|
+
description TEXT,
|
|
39
|
+
checksum TEXT
|
|
40
|
+
);
|
|
41
|
+
`;
|
|
42
|
+
const CREATE_SMRT_SCHEMA_MIGRATIONS_TABLE = `
|
|
43
|
+
CREATE TABLE IF NOT EXISTS _smrt_schema_migrations (
|
|
44
|
+
id TEXT PRIMARY KEY,
|
|
45
|
+
name TEXT NOT NULL UNIQUE,
|
|
46
|
+
version TEXT NOT NULL,
|
|
47
|
+
checksum TEXT NOT NULL,
|
|
48
|
+
applied_checksum TEXT,
|
|
49
|
+
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
50
|
+
execution_time_ms INTEGER,
|
|
51
|
+
package_name TEXT,
|
|
52
|
+
source_file TEXT,
|
|
53
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
54
|
+
error_message TEXT,
|
|
55
|
+
attempts INTEGER DEFAULT 0,
|
|
56
|
+
is_reversible INTEGER DEFAULT 1,
|
|
57
|
+
rolled_back_at TIMESTAMP,
|
|
58
|
+
applied_by TEXT,
|
|
59
|
+
batch INTEGER
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_schema_migrations_status
|
|
63
|
+
ON _smrt_schema_migrations(status);
|
|
64
|
+
|
|
65
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_schema_migrations_applied_at
|
|
66
|
+
ON _smrt_schema_migrations(applied_at);
|
|
67
|
+
|
|
68
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_schema_migrations_batch
|
|
69
|
+
ON _smrt_schema_migrations(batch);
|
|
70
|
+
`;
|
|
71
|
+
const CREATE_SMRT_REGISTRY_TABLE = `
|
|
72
|
+
CREATE TABLE IF NOT EXISTS _smrt_registry (
|
|
73
|
+
class_name TEXT PRIMARY KEY,
|
|
74
|
+
schema_version TEXT,
|
|
75
|
+
fields TEXT,
|
|
76
|
+
relationships TEXT,
|
|
77
|
+
config TEXT,
|
|
78
|
+
manifest TEXT,
|
|
79
|
+
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
80
|
+
);
|
|
81
|
+
`;
|
|
82
|
+
const CREATE_SMRT_SIGNALS_TABLE = `
|
|
83
|
+
CREATE TABLE IF NOT EXISTS _smrt_signals (
|
|
84
|
+
id TEXT PRIMARY KEY,
|
|
85
|
+
type TEXT NOT NULL,
|
|
86
|
+
source_class TEXT,
|
|
87
|
+
source_id TEXT,
|
|
88
|
+
target_class TEXT,
|
|
89
|
+
target_id TEXT,
|
|
90
|
+
payload TEXT,
|
|
91
|
+
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_signals_source
|
|
95
|
+
ON _smrt_signals(source_class, source_id);
|
|
96
|
+
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_signals_type
|
|
98
|
+
ON _smrt_signals(type);
|
|
99
|
+
|
|
100
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_signals_timestamp
|
|
101
|
+
ON _smrt_signals(timestamp);
|
|
102
|
+
`;
|
|
103
|
+
const CREATE_SMRT_EMBEDDINGS_TABLE = `
|
|
104
|
+
CREATE TABLE IF NOT EXISTS _smrt_embeddings (
|
|
105
|
+
id TEXT PRIMARY KEY,
|
|
106
|
+
object_class TEXT NOT NULL,
|
|
107
|
+
object_id TEXT NOT NULL,
|
|
108
|
+
field_name TEXT NOT NULL,
|
|
109
|
+
content_hash TEXT NOT NULL,
|
|
110
|
+
embedding TEXT NOT NULL,
|
|
111
|
+
model TEXT NOT NULL,
|
|
112
|
+
dimensions INTEGER NOT NULL,
|
|
113
|
+
provider TEXT,
|
|
114
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
115
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
116
|
+
UNIQUE(object_class, object_id, field_name, model)
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_embeddings_object
|
|
120
|
+
ON _smrt_embeddings(object_class, object_id);
|
|
121
|
+
|
|
122
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_embeddings_class
|
|
123
|
+
ON _smrt_embeddings(object_class);
|
|
124
|
+
|
|
125
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_embeddings_hash
|
|
126
|
+
ON _smrt_embeddings(content_hash);
|
|
127
|
+
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_embeddings_model
|
|
129
|
+
ON _smrt_embeddings(model);
|
|
130
|
+
`;
|
|
131
|
+
const CREATE_SMRT_DISPATCH_TABLE = `
|
|
132
|
+
CREATE TABLE IF NOT EXISTS _smrt_dispatch (
|
|
133
|
+
id TEXT PRIMARY KEY,
|
|
134
|
+
type TEXT NOT NULL,
|
|
135
|
+
source TEXT NOT NULL,
|
|
136
|
+
source_id TEXT,
|
|
137
|
+
payload TEXT,
|
|
138
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
139
|
+
attempts INTEGER DEFAULT 0,
|
|
140
|
+
last_error TEXT,
|
|
141
|
+
processed_at TIMESTAMP,
|
|
142
|
+
processed_by TEXT,
|
|
143
|
+
target_subscriber TEXT,
|
|
144
|
+
correlation_id TEXT,
|
|
145
|
+
tenant_id TEXT,
|
|
146
|
+
metadata TEXT,
|
|
147
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
148
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_status
|
|
152
|
+
ON _smrt_dispatch(status);
|
|
153
|
+
|
|
154
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_tenant_id
|
|
155
|
+
ON _smrt_dispatch(tenant_id);
|
|
156
|
+
|
|
157
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_type
|
|
158
|
+
ON _smrt_dispatch(type);
|
|
159
|
+
|
|
160
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_source
|
|
161
|
+
ON _smrt_dispatch(source);
|
|
162
|
+
|
|
163
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_created
|
|
164
|
+
ON _smrt_dispatch(created_at);
|
|
165
|
+
|
|
166
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_target
|
|
167
|
+
ON _smrt_dispatch(target_subscriber);
|
|
168
|
+
|
|
169
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_correlation
|
|
170
|
+
ON _smrt_dispatch(correlation_id);
|
|
171
|
+
`;
|
|
172
|
+
const CREATE_SMRT_DISPATCH_SUBSCRIPTIONS_TABLE = `
|
|
173
|
+
CREATE TABLE IF NOT EXISTS _smrt_dispatch_subscriptions (
|
|
174
|
+
id TEXT PRIMARY KEY,
|
|
175
|
+
signal_type TEXT NOT NULL,
|
|
176
|
+
subscriber TEXT NOT NULL,
|
|
177
|
+
handler TEXT NOT NULL DEFAULT 'handleDispatch',
|
|
178
|
+
delivery TEXT NOT NULL DEFAULT 'compete',
|
|
179
|
+
enabled INTEGER DEFAULT 1,
|
|
180
|
+
tenant_id TEXT,
|
|
181
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
182
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
-- Subscription identity is tenant-scoped (S5 #1398): the same
|
|
186
|
+
-- (signal_type, subscriber) pair may exist independently in different tenants,
|
|
187
|
+
-- so tenant B can no longer overwrite/delete/enable tenant A's subscription.
|
|
188
|
+
-- A named UNIQUE index (rather than an inline UNIQUE constraint) is used so the
|
|
189
|
+
-- compatibility migration can additively reshape existing tables. NULL tenant_id
|
|
190
|
+
-- (global subscriptions) is deduped at the application layer by the NULL-aware
|
|
191
|
+
-- upsert in @happyvertical/sql.
|
|
192
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_smrt_dispatch_subs_tenant_signal_subscriber
|
|
193
|
+
ON _smrt_dispatch_subscriptions(tenant_id, signal_type, subscriber);
|
|
194
|
+
|
|
195
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_subscriber
|
|
196
|
+
ON _smrt_dispatch_subscriptions(subscriber);
|
|
197
|
+
|
|
198
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_tenant_id
|
|
199
|
+
ON _smrt_dispatch_subscriptions(tenant_id);
|
|
200
|
+
|
|
201
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_signal_type
|
|
202
|
+
ON _smrt_dispatch_subscriptions(signal_type);
|
|
203
|
+
|
|
204
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_enabled
|
|
205
|
+
ON _smrt_dispatch_subscriptions(enabled);
|
|
206
|
+
`;
|
|
207
|
+
const CREATE_SMRT_AI_USAGE_TABLE = `
|
|
208
|
+
CREATE TABLE IF NOT EXISTS _smrt_ai_usage (
|
|
209
|
+
id TEXT PRIMARY KEY,
|
|
210
|
+
provider TEXT NOT NULL,
|
|
211
|
+
model TEXT NOT NULL,
|
|
212
|
+
operation TEXT NOT NULL,
|
|
213
|
+
prompt_tokens INTEGER,
|
|
214
|
+
completion_tokens INTEGER,
|
|
215
|
+
total_tokens INTEGER,
|
|
216
|
+
estimated_cost REAL,
|
|
217
|
+
duration INTEGER NOT NULL,
|
|
218
|
+
class_name TEXT,
|
|
219
|
+
tenant_id TEXT,
|
|
220
|
+
tags TEXT,
|
|
221
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_created
|
|
225
|
+
ON _smrt_ai_usage(created_at);
|
|
226
|
+
|
|
227
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_class
|
|
228
|
+
ON _smrt_ai_usage(class_name);
|
|
229
|
+
|
|
230
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_tenant
|
|
231
|
+
ON _smrt_ai_usage(tenant_id);
|
|
232
|
+
|
|
233
|
+
CREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_provider_model
|
|
234
|
+
ON _smrt_ai_usage(provider, model);
|
|
235
|
+
`;
|
|
236
|
+
const CREATE_SMRT_BACKFILLS_TABLE = `
|
|
237
|
+
CREATE TABLE IF NOT EXISTS _smrt_backfills (
|
|
238
|
+
name TEXT PRIMARY KEY,
|
|
239
|
+
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
240
|
+
description TEXT,
|
|
241
|
+
package_name TEXT
|
|
242
|
+
);
|
|
243
|
+
`;
|
|
244
|
+
const ALL_SYSTEM_TABLES = [
|
|
245
|
+
CREATE_SMRT_CONTEXTS_TABLE,
|
|
246
|
+
CREATE_SMRT_MIGRATIONS_TABLE,
|
|
247
|
+
CREATE_SMRT_SCHEMA_MIGRATIONS_TABLE,
|
|
248
|
+
CREATE_SMRT_BACKFILLS_TABLE,
|
|
249
|
+
CREATE_SMRT_REGISTRY_TABLE,
|
|
250
|
+
CREATE_SMRT_SIGNALS_TABLE,
|
|
251
|
+
CREATE_SMRT_EMBEDDINGS_TABLE,
|
|
252
|
+
CREATE_SMRT_DISPATCH_TABLE,
|
|
253
|
+
CREATE_SMRT_DISPATCH_SUBSCRIPTIONS_TABLE,
|
|
254
|
+
CREATE_SMRT_AI_USAGE_TABLE
|
|
255
|
+
];
|
|
256
|
+
const SMRT_SCHEMA_VERSION = "1.6.1";
|
|
257
|
+
export {
|
|
258
|
+
ALL_SYSTEM_TABLES,
|
|
259
|
+
CREATE_SMRT_AI_USAGE_TABLE,
|
|
260
|
+
CREATE_SMRT_BACKFILLS_TABLE,
|
|
261
|
+
CREATE_SMRT_CONTEXTS_TABLE,
|
|
262
|
+
CREATE_SMRT_DISPATCH_SUBSCRIPTIONS_TABLE,
|
|
263
|
+
CREATE_SMRT_DISPATCH_TABLE,
|
|
264
|
+
CREATE_SMRT_EMBEDDINGS_TABLE,
|
|
265
|
+
CREATE_SMRT_MIGRATIONS_TABLE,
|
|
266
|
+
CREATE_SMRT_REGISTRY_TABLE,
|
|
267
|
+
CREATE_SMRT_SCHEMA_MIGRATIONS_TABLE,
|
|
268
|
+
CREATE_SMRT_SIGNALS_TABLE,
|
|
269
|
+
SMRT_SCHEMA_VERSION
|
|
270
|
+
};
|
|
271
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sources":["../../src/system/schema.ts"],"sourcesContent":["/**\n * SMRT System Tables Schema\n *\n * System tables use _smrt_ prefix to avoid conflicts with user tables.\n * All system tables are created in the same database as user data.\n */\n\n/**\n * Context memory storage\n * Stores remembered context (learned strategies, patterns, selectors) for reuse\n */\nexport const CREATE_SMRT_CONTEXTS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_contexts (\n id TEXT PRIMARY KEY,\n owner_class TEXT NOT NULL,\n owner_id TEXT NOT NULL,\n scope TEXT NOT NULL,\n key TEXT NOT NULL,\n value TEXT,\n metadata TEXT,\n version INTEGER DEFAULT 1,\n confidence REAL DEFAULT 1.0,\n success_count INTEGER DEFAULT 0,\n failure_count INTEGER DEFAULT 0,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n last_used_at TIMESTAMP,\n expires_at TIMESTAMP,\n UNIQUE(owner_class, owner_id, scope, key, version)\n);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_contexts_owner\n ON _smrt_contexts(owner_class, owner_id);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_contexts_scope\n ON _smrt_contexts(scope);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_contexts_confidence\n ON _smrt_contexts(confidence);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_contexts_last_used\n ON _smrt_contexts(last_used_at);\n`;\n\n/**\n * Schema version tracking\n * Records which SMRT framework versions have been applied\n */\nexport const CREATE_SMRT_MIGRATIONS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_migrations (\n id TEXT PRIMARY KEY,\n version TEXT NOT NULL UNIQUE,\n applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n description TEXT,\n checksum TEXT\n);\n`;\n\n/**\n * Schema migration tracking\n * Tracks applied schema migrations for idempotency, audit, and rollback\n */\nexport const CREATE_SMRT_SCHEMA_MIGRATIONS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_schema_migrations (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL UNIQUE,\n version TEXT NOT NULL,\n checksum TEXT NOT NULL,\n applied_checksum TEXT,\n applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n execution_time_ms INTEGER,\n package_name TEXT,\n source_file TEXT,\n status TEXT NOT NULL DEFAULT 'pending',\n error_message TEXT,\n attempts INTEGER DEFAULT 0,\n is_reversible INTEGER DEFAULT 1,\n rolled_back_at TIMESTAMP,\n applied_by TEXT,\n batch INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_schema_migrations_status\n ON _smrt_schema_migrations(status);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_schema_migrations_applied_at\n ON _smrt_schema_migrations(applied_at);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_schema_migrations_batch\n ON _smrt_schema_migrations(batch);\n`;\n\n/**\n * Runtime object registry persistence\n * Stores metadata about registered SMRT objects for introspection\n */\nexport const CREATE_SMRT_REGISTRY_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_registry (\n class_name TEXT PRIMARY KEY,\n schema_version TEXT,\n fields TEXT,\n relationships TEXT,\n config TEXT,\n manifest TEXT,\n last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n`;\n\n/**\n * Signal history/audit log\n * Optional persistence of signals for debugging and auditing\n */\nexport const CREATE_SMRT_SIGNALS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_signals (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n source_class TEXT,\n source_id TEXT,\n target_class TEXT,\n target_id TEXT,\n payload TEXT,\n timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_signals_source\n ON _smrt_signals(source_class, source_id);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_signals_type\n ON _smrt_signals(type);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_signals_timestamp\n ON _smrt_signals(timestamp);\n`;\n\n/**\n * Embedding storage for semantic search\n * Stores embedding vectors for SMRT objects to enable vector similarity search\n */\nexport const CREATE_SMRT_EMBEDDINGS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_embeddings (\n id TEXT PRIMARY KEY,\n object_class TEXT NOT NULL,\n object_id TEXT NOT NULL,\n field_name TEXT NOT NULL,\n content_hash TEXT NOT NULL,\n embedding TEXT NOT NULL,\n model TEXT NOT NULL,\n dimensions INTEGER NOT NULL,\n provider TEXT,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n UNIQUE(object_class, object_id, field_name, model)\n);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_embeddings_object\n ON _smrt_embeddings(object_class, object_id);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_embeddings_class\n ON _smrt_embeddings(object_class);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_embeddings_hash\n ON _smrt_embeddings(content_hash);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_embeddings_model\n ON _smrt_embeddings(model);\n`;\n\n/**\n * Dispatch queue for inter-agent communication\n * Stores dispatch messages for asynchronous agent-to-agent signaling\n */\nexport const CREATE_SMRT_DISPATCH_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_dispatch (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n source TEXT NOT NULL,\n source_id TEXT,\n payload TEXT,\n status TEXT NOT NULL DEFAULT 'pending',\n attempts INTEGER DEFAULT 0,\n last_error TEXT,\n processed_at TIMESTAMP,\n processed_by TEXT,\n target_subscriber TEXT,\n correlation_id TEXT,\n tenant_id TEXT,\n metadata TEXT,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_status\n ON _smrt_dispatch(status);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_tenant_id\n ON _smrt_dispatch(tenant_id);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_type\n ON _smrt_dispatch(type);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_source\n ON _smrt_dispatch(source);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_created\n ON _smrt_dispatch(created_at);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_target\n ON _smrt_dispatch(target_subscriber);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_correlation\n ON _smrt_dispatch(correlation_id);\n`;\n\n/**\n * Dispatch subscriptions for persistent handlers\n * Stores subscriptions to dispatch types for agent processing\n */\nexport const CREATE_SMRT_DISPATCH_SUBSCRIPTIONS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_dispatch_subscriptions (\n id TEXT PRIMARY KEY,\n signal_type TEXT NOT NULL,\n subscriber TEXT NOT NULL,\n handler TEXT NOT NULL DEFAULT 'handleDispatch',\n delivery TEXT NOT NULL DEFAULT 'compete',\n enabled INTEGER DEFAULT 1,\n tenant_id TEXT,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- Subscription identity is tenant-scoped (S5 #1398): the same\n-- (signal_type, subscriber) pair may exist independently in different tenants,\n-- so tenant B can no longer overwrite/delete/enable tenant A's subscription.\n-- A named UNIQUE index (rather than an inline UNIQUE constraint) is used so the\n-- compatibility migration can additively reshape existing tables. NULL tenant_id\n-- (global subscriptions) is deduped at the application layer by the NULL-aware\n-- upsert in @happyvertical/sql.\nCREATE UNIQUE INDEX IF NOT EXISTS uq_smrt_dispatch_subs_tenant_signal_subscriber\n ON _smrt_dispatch_subscriptions(tenant_id, signal_type, subscriber);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_subscriber\n ON _smrt_dispatch_subscriptions(subscriber);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_tenant_id\n ON _smrt_dispatch_subscriptions(tenant_id);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_signal_type\n ON _smrt_dispatch_subscriptions(signal_type);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_dispatch_subs_enabled\n ON _smrt_dispatch_subscriptions(enabled);\n`;\n\n/**\n * AI usage telemetry storage\n * Stores normalized AI usage records for reporting and billing hooks\n */\nexport const CREATE_SMRT_AI_USAGE_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_ai_usage (\n id TEXT PRIMARY KEY,\n provider TEXT NOT NULL,\n model TEXT NOT NULL,\n operation TEXT NOT NULL,\n prompt_tokens INTEGER,\n completion_tokens INTEGER,\n total_tokens INTEGER,\n estimated_cost REAL,\n duration INTEGER NOT NULL,\n class_name TEXT,\n tenant_id TEXT,\n tags TEXT,\n created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_created\n ON _smrt_ai_usage(created_at);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_class\n ON _smrt_ai_usage(class_name);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_tenant\n ON _smrt_ai_usage(tenant_id);\n\nCREATE INDEX IF NOT EXISTS idx_smrt_ai_usage_provider_model\n ON _smrt_ai_usage(provider, model);\n`;\n\n/**\n * Data backfill tracking\n *\n * Distinct from `_smrt_schema_migrations` — backfills are app-specific\n * data corrections (slug rewrites, model splits, lookup-table seeds) that\n * don't have schema diffs or rollback semantics. Apps register backfills\n * by name and the tracker handles idempotency.\n */\nexport const CREATE_SMRT_BACKFILLS_TABLE = `\nCREATE TABLE IF NOT EXISTS _smrt_backfills (\n name TEXT PRIMARY KEY,\n applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n description TEXT,\n package_name TEXT\n);\n`;\n\n/**\n * All system table creation statements\n */\nexport const ALL_SYSTEM_TABLES = [\n CREATE_SMRT_CONTEXTS_TABLE,\n CREATE_SMRT_MIGRATIONS_TABLE,\n CREATE_SMRT_SCHEMA_MIGRATIONS_TABLE,\n CREATE_SMRT_BACKFILLS_TABLE,\n CREATE_SMRT_REGISTRY_TABLE,\n CREATE_SMRT_SIGNALS_TABLE,\n CREATE_SMRT_EMBEDDINGS_TABLE,\n CREATE_SMRT_DISPATCH_TABLE,\n CREATE_SMRT_DISPATCH_SUBSCRIPTIONS_TABLE,\n CREATE_SMRT_AI_USAGE_TABLE,\n];\n\n/**\n * Current SMRT system schema version\n */\nexport const SMRT_SCHEMA_VERSION = '1.6.1';\n"],"names":[],"mappings":"AAWO,MAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCnC,MAAM,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcrC,MAAM,sCAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkC5C,MAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBnC,MAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BlC,MAAM,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiCrC,MAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CnC,MAAM,2CAA2C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwCjD,MAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsCnC,MAAM,8BAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYpC,MAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,MAAM,sBAAsB;"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for SMRT system tables
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Options for storing a note
|
|
6
|
+
*/
|
|
7
|
+
export interface NoteOptions {
|
|
8
|
+
/** Hierarchical scope (e.g., 'discovery/parser/domain.com') */
|
|
9
|
+
scope: string;
|
|
10
|
+
/** Normalized identifier (e.g., URL, entity ID) */
|
|
11
|
+
key: string;
|
|
12
|
+
/** Strategy data (regex patterns, selectors, etc.) */
|
|
13
|
+
value: any;
|
|
14
|
+
/** Additional metadata */
|
|
15
|
+
metadata?: NoteMetadata;
|
|
16
|
+
/** Confidence score (0.0 to 1.0) */
|
|
17
|
+
confidence?: number;
|
|
18
|
+
/** Strategy version number */
|
|
19
|
+
version?: number;
|
|
20
|
+
/** Expiration date */
|
|
21
|
+
expiresAt?: Date;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Note metadata structure
|
|
25
|
+
* Optimized for storing AI-learned strategies
|
|
26
|
+
*/
|
|
27
|
+
export interface NoteMetadata {
|
|
28
|
+
/** AI provider used for learning */
|
|
29
|
+
aiProvider?: string;
|
|
30
|
+
/** AI model used */
|
|
31
|
+
aiModel?: string;
|
|
32
|
+
/** Original AI confidence */
|
|
33
|
+
aiConfidence?: number;
|
|
34
|
+
/** Regex patterns */
|
|
35
|
+
patterns?: string[];
|
|
36
|
+
/** CSS selectors */
|
|
37
|
+
selectors?: string[];
|
|
38
|
+
/** Expected result count */
|
|
39
|
+
expectedCount?: number;
|
|
40
|
+
/** Hash of page HTML for change detection */
|
|
41
|
+
pageHash?: string;
|
|
42
|
+
/** Tags for categorization */
|
|
43
|
+
tags?: string[];
|
|
44
|
+
/** Importance score */
|
|
45
|
+
importance?: number;
|
|
46
|
+
/** Source of the strategy */
|
|
47
|
+
source?: string;
|
|
48
|
+
/** Version this replaces */
|
|
49
|
+
replacesVersion?: number;
|
|
50
|
+
/** Whether human reviewed */
|
|
51
|
+
humanReviewed?: boolean;
|
|
52
|
+
/** Reviewer identifier */
|
|
53
|
+
reviewedBy?: string;
|
|
54
|
+
/** Review notes */
|
|
55
|
+
reviewNotes?: string;
|
|
56
|
+
/** Allow any other properties */
|
|
57
|
+
[key: string]: any;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Options for recalling notes
|
|
61
|
+
*/
|
|
62
|
+
export interface RecallOptions {
|
|
63
|
+
/** Scope to search in */
|
|
64
|
+
scope: string;
|
|
65
|
+
/** Key to search for */
|
|
66
|
+
key: string;
|
|
67
|
+
/** Search parent scopes if not found */
|
|
68
|
+
includeAncestors?: boolean;
|
|
69
|
+
/** Search child scopes */
|
|
70
|
+
includeDescendants?: boolean;
|
|
71
|
+
/** Minimum confidence threshold */
|
|
72
|
+
minConfidence?: number;
|
|
73
|
+
/** Only return highest version */
|
|
74
|
+
latestVersionOnly?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Options for recalling multiple notes
|
|
78
|
+
*/
|
|
79
|
+
export interface RecallAllOptions {
|
|
80
|
+
/** Scope to search in (optional) */
|
|
81
|
+
scope?: string;
|
|
82
|
+
/** Search child scopes */
|
|
83
|
+
includeDescendants?: boolean;
|
|
84
|
+
/** Minimum confidence threshold */
|
|
85
|
+
minConfidence?: number;
|
|
86
|
+
/** Only return highest versions */
|
|
87
|
+
latestVersionOnly?: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Options for forgetting notes
|
|
91
|
+
*/
|
|
92
|
+
export interface ForgetOptions {
|
|
93
|
+
/** Scope to delete from */
|
|
94
|
+
scope: string;
|
|
95
|
+
/** Key to delete */
|
|
96
|
+
key: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Options for forgetting a scope
|
|
100
|
+
*/
|
|
101
|
+
export interface ForgetScopeOptions {
|
|
102
|
+
/** Scope to delete */
|
|
103
|
+
scope: string;
|
|
104
|
+
/** Delete child scopes too */
|
|
105
|
+
includeDescendants?: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Discovery strategy structure (common use case)
|
|
109
|
+
*/
|
|
110
|
+
export interface DiscoveryStrategy {
|
|
111
|
+
/** Regex patterns */
|
|
112
|
+
patterns: string[];
|
|
113
|
+
/** CSS selectors */
|
|
114
|
+
selectors?: string[];
|
|
115
|
+
/** Expected result count */
|
|
116
|
+
expectedCount: number;
|
|
117
|
+
/** Strategy version */
|
|
118
|
+
version: number;
|
|
119
|
+
/** Confidence score */
|
|
120
|
+
confidence: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* System table configuration
|
|
124
|
+
*/
|
|
125
|
+
export interface SystemTableConfig {
|
|
126
|
+
/** Enable signal history persistence */
|
|
127
|
+
persistSignalHistory?: boolean;
|
|
128
|
+
/** Note retention in days */
|
|
129
|
+
noteRetentionDays?: number;
|
|
130
|
+
/** Cleanup interval */
|
|
131
|
+
cleanupInterval?: 'hourly' | 'daily' | 'weekly' | 'never';
|
|
132
|
+
/** Archive confidence threshold */
|
|
133
|
+
archiveThreshold?: number;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/system/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,KAAK,EAAE,GAAG,CAAC;IACX,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oBAAoB;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6BAA6B;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB;IACvB,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1D,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical SMRT system fields inherited from `SmrtObject`.
|
|
3
|
+
*
|
|
4
|
+
* These fields exist on every persistent object at runtime even when they are
|
|
5
|
+
* not declared in a child class manifest. Keep this definition lightweight:
|
|
6
|
+
* presence matters for metadata consumers, while schema generation still owns
|
|
7
|
+
* the exact SQL defaults and constraints for these columns.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SMRT_SYSTEM_FIELDS: Readonly<{
|
|
10
|
+
id: Readonly<{
|
|
11
|
+
type: "text";
|
|
12
|
+
_meta: Readonly<{
|
|
13
|
+
__smrtSystemField: true;
|
|
14
|
+
}>;
|
|
15
|
+
}>;
|
|
16
|
+
slug: Readonly<{
|
|
17
|
+
type: "text";
|
|
18
|
+
_meta: Readonly<{
|
|
19
|
+
__smrtSystemField: true;
|
|
20
|
+
}>;
|
|
21
|
+
}>;
|
|
22
|
+
context: Readonly<{
|
|
23
|
+
type: "text";
|
|
24
|
+
_meta: Readonly<{
|
|
25
|
+
__smrtSystemField: true;
|
|
26
|
+
}>;
|
|
27
|
+
}>;
|
|
28
|
+
created_at: Readonly<{
|
|
29
|
+
type: "datetime";
|
|
30
|
+
_meta: Readonly<{
|
|
31
|
+
__smrtSystemField: true;
|
|
32
|
+
}>;
|
|
33
|
+
}>;
|
|
34
|
+
updated_at: Readonly<{
|
|
35
|
+
type: "datetime";
|
|
36
|
+
_meta: Readonly<{
|
|
37
|
+
__smrtSystemField: true;
|
|
38
|
+
}>;
|
|
39
|
+
}>;
|
|
40
|
+
}>;
|
|
41
|
+
export declare function isInjectedSmrtSystemField(field: any): boolean;
|
|
42
|
+
export declare function cloneSmrtSystemFields(): Record<string, any>;
|
|
43
|
+
export declare function prependSmrtSystemFields(fields: Map<string, any>): Map<string, any>;
|
|
44
|
+
//# sourceMappingURL=system-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-fields.d.ts","sourceRoot":"","sources":["../src/system-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB7B,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAE7D;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAW3D;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GACvB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAelB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const SMRT_SYSTEM_FIELDS = Object.freeze({
|
|
2
|
+
id: Object.freeze({
|
|
3
|
+
type: "text",
|
|
4
|
+
_meta: Object.freeze({ __smrtSystemField: true })
|
|
5
|
+
}),
|
|
6
|
+
slug: Object.freeze({
|
|
7
|
+
type: "text",
|
|
8
|
+
_meta: Object.freeze({ __smrtSystemField: true })
|
|
9
|
+
}),
|
|
10
|
+
context: Object.freeze({
|
|
11
|
+
type: "text",
|
|
12
|
+
_meta: Object.freeze({ __smrtSystemField: true })
|
|
13
|
+
}),
|
|
14
|
+
created_at: Object.freeze({
|
|
15
|
+
type: "datetime",
|
|
16
|
+
_meta: Object.freeze({ __smrtSystemField: true })
|
|
17
|
+
}),
|
|
18
|
+
updated_at: Object.freeze({
|
|
19
|
+
type: "datetime",
|
|
20
|
+
_meta: Object.freeze({ __smrtSystemField: true })
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
function isInjectedSmrtSystemField(field) {
|
|
24
|
+
return Boolean(field?._meta?.__smrtSystemField);
|
|
25
|
+
}
|
|
26
|
+
function cloneSmrtSystemFields() {
|
|
27
|
+
const fields = {};
|
|
28
|
+
for (const [fieldName, fieldDef] of Object.entries(SMRT_SYSTEM_FIELDS)) {
|
|
29
|
+
fields[fieldName] = {
|
|
30
|
+
...fieldDef,
|
|
31
|
+
_meta: { ...fieldDef._meta || {} }
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return fields;
|
|
35
|
+
}
|
|
36
|
+
function prependSmrtSystemFields(fields) {
|
|
37
|
+
const merged = /* @__PURE__ */ new Map();
|
|
38
|
+
for (const [fieldName, fieldDef] of Object.entries(cloneSmrtSystemFields())) {
|
|
39
|
+
merged.set(fieldName, fieldDef);
|
|
40
|
+
}
|
|
41
|
+
for (const [fieldName, fieldDef] of fields.entries()) {
|
|
42
|
+
if (isInjectedSmrtSystemField(fieldDef) && merged.has(fieldName)) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
merged.set(fieldName, fieldDef);
|
|
46
|
+
}
|
|
47
|
+
return merged;
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
SMRT_SYSTEM_FIELDS,
|
|
51
|
+
cloneSmrtSystemFields,
|
|
52
|
+
isInjectedSmrtSystemField,
|
|
53
|
+
prependSmrtSystemFields
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=system-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-fields.js","sources":["../src/system-fields.ts"],"sourcesContent":["/**\n * Canonical SMRT system fields inherited from `SmrtObject`.\n *\n * These fields exist on every persistent object at runtime even when they are\n * not declared in a child class manifest. Keep this definition lightweight:\n * presence matters for metadata consumers, while schema generation still owns\n * the exact SQL defaults and constraints for these columns.\n */\n\nexport const SMRT_SYSTEM_FIELDS = Object.freeze({\n id: Object.freeze({\n type: 'text',\n _meta: Object.freeze({ __smrtSystemField: true }),\n }),\n slug: Object.freeze({\n type: 'text',\n _meta: Object.freeze({ __smrtSystemField: true }),\n }),\n context: Object.freeze({\n type: 'text',\n _meta: Object.freeze({ __smrtSystemField: true }),\n }),\n created_at: Object.freeze({\n type: 'datetime',\n _meta: Object.freeze({ __smrtSystemField: true }),\n }),\n updated_at: Object.freeze({\n type: 'datetime',\n _meta: Object.freeze({ __smrtSystemField: true }),\n }),\n});\n\nexport function isInjectedSmrtSystemField(field: any): boolean {\n return Boolean(field?._meta?.__smrtSystemField);\n}\n\nexport function cloneSmrtSystemFields(): Record<string, any> {\n const fields: Record<string, any> = {};\n\n for (const [fieldName, fieldDef] of Object.entries(SMRT_SYSTEM_FIELDS)) {\n fields[fieldName] = {\n ...fieldDef,\n _meta: { ...(fieldDef._meta || {}) },\n };\n }\n\n return fields;\n}\n\nexport function prependSmrtSystemFields(\n fields: Map<string, any>,\n): Map<string, any> {\n const merged = new Map<string, any>();\n\n for (const [fieldName, fieldDef] of Object.entries(cloneSmrtSystemFields())) {\n merged.set(fieldName, fieldDef);\n }\n\n for (const [fieldName, fieldDef] of fields.entries()) {\n if (isInjectedSmrtSystemField(fieldDef) && merged.has(fieldName)) {\n continue;\n }\n merged.set(fieldName, fieldDef);\n }\n\n return merged;\n}\n"],"names":[],"mappings":"AASO,MAAM,qBAAqB,OAAO,OAAO;AAAA,EAC9C,IAAI,OAAO,OAAO;AAAA,IAChB,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,EAAE,mBAAmB,MAAM;AAAA,EAAA,CACjD;AAAA,EACD,MAAM,OAAO,OAAO;AAAA,IAClB,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,EAAE,mBAAmB,MAAM;AAAA,EAAA,CACjD;AAAA,EACD,SAAS,OAAO,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,EAAE,mBAAmB,MAAM;AAAA,EAAA,CACjD;AAAA,EACD,YAAY,OAAO,OAAO;AAAA,IACxB,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,EAAE,mBAAmB,MAAM;AAAA,EAAA,CACjD;AAAA,EACD,YAAY,OAAO,OAAO;AAAA,IACxB,MAAM;AAAA,IACN,OAAO,OAAO,OAAO,EAAE,mBAAmB,MAAM;AAAA,EAAA,CACjD;AACH,CAAC;AAEM,SAAS,0BAA0B,OAAqB;AAC7D,SAAO,QAAQ,OAAO,OAAO,iBAAiB;AAChD;AAEO,SAAS,wBAA6C;AAC3D,QAAM,SAA8B,CAAA;AAEpC,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,kBAAkB,GAAG;AACtE,WAAO,SAAS,IAAI;AAAA,MAClB,GAAG;AAAA,MACH,OAAO,EAAE,GAAI,SAAS,SAAS,CAAA,EAAC;AAAA,IAAG;AAAA,EAEvC;AAEA,SAAO;AACT;AAEO,SAAS,wBACd,QACkB;AAClB,QAAM,6BAAa,IAAA;AAEnB,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,sBAAA,CAAuB,GAAG;AAC3E,WAAO,IAAI,WAAW,QAAQ;AAAA,EAChC;AAEA,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,WAAW;AACpD,QAAI,0BAA0B,QAAQ,KAAK,OAAO,IAAI,SAAS,GAAG;AAChE;AAAA,IACF;AACA,WAAO,IAAI,WAAW,QAAQ;AAAA,EAChC;AAEA,SAAO;AACT;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache for verified table existence checks.
|
|
3
|
+
*
|
|
4
|
+
* Prevents redundant `tableExists()` round-trips in `Collection.create()` and
|
|
5
|
+
* `SmrtObject.save()`. On high-latency connections (e.g. Postgres over Tailscale),
|
|
6
|
+
* each check adds ~100ms — this eliminates all but the first check per table per DB.
|
|
7
|
+
*
|
|
8
|
+
* Scoped per database URL to prevent cross-database contamination in multi-DB
|
|
9
|
+
* scenarios. For :memory: and JSON databases (which share URLs), the cache can
|
|
10
|
+
* be cleared via `resetVerifiedTables()` in test setup.
|
|
11
|
+
*
|
|
12
|
+
* @see https://github.com/happyvertical/smrt/issues/970
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Check if a table has been verified for a given database.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isTableVerified(dbUrl: string, tableName: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Mark a table as verified for a given database.
|
|
21
|
+
*/
|
|
22
|
+
export declare function markTableVerified(dbUrl: string, tableName: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Clear all verified table caches.
|
|
25
|
+
* Call this in test setup to ensure isolation between test files.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resetVerifiedTables(): void;
|
|
28
|
+
//# sourceMappingURL=table-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-cache.d.ts","sourceRoot":"","sources":["../src/table-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAOxE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const verifiedTablesByUrl = /* @__PURE__ */ new Map();
|
|
2
|
+
function isTableVerified(dbUrl, tableName) {
|
|
3
|
+
return verifiedTablesByUrl.get(dbUrl)?.has(tableName) ?? false;
|
|
4
|
+
}
|
|
5
|
+
function markTableVerified(dbUrl, tableName) {
|
|
6
|
+
let tables = verifiedTablesByUrl.get(dbUrl);
|
|
7
|
+
if (!tables) {
|
|
8
|
+
tables = /* @__PURE__ */ new Set();
|
|
9
|
+
verifiedTablesByUrl.set(dbUrl, tables);
|
|
10
|
+
}
|
|
11
|
+
tables.add(tableName);
|
|
12
|
+
}
|
|
13
|
+
function resetVerifiedTables() {
|
|
14
|
+
verifiedTablesByUrl.clear();
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
isTableVerified,
|
|
18
|
+
markTableVerified,
|
|
19
|
+
resetVerifiedTables
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=table-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-cache.js","sources":["../src/table-cache.ts"],"sourcesContent":["/**\n * Cache for verified table existence checks.\n *\n * Prevents redundant `tableExists()` round-trips in `Collection.create()` and\n * `SmrtObject.save()`. On high-latency connections (e.g. Postgres over Tailscale),\n * each check adds ~100ms — this eliminates all but the first check per table per DB.\n *\n * Scoped per database URL to prevent cross-database contamination in multi-DB\n * scenarios. For :memory: and JSON databases (which share URLs), the cache can\n * be cleared via `resetVerifiedTables()` in test setup.\n *\n * @see https://github.com/happyvertical/smrt/issues/970\n * @packageDocumentation\n */\n\n/**\n * Map of dbUrl → Set<tableName>.\n * Keyed by table name (not class name) so STI classes sharing a table only check once.\n */\nconst verifiedTablesByUrl = new Map<string, Set<string>>();\n\n/**\n * Check if a table has been verified for a given database.\n */\nexport function isTableVerified(dbUrl: string, tableName: string): boolean {\n return verifiedTablesByUrl.get(dbUrl)?.has(tableName) ?? false;\n}\n\n/**\n * Mark a table as verified for a given database.\n */\nexport function markTableVerified(dbUrl: string, tableName: string): void {\n let tables = verifiedTablesByUrl.get(dbUrl);\n if (!tables) {\n tables = new Set();\n verifiedTablesByUrl.set(dbUrl, tables);\n }\n tables.add(tableName);\n}\n\n/**\n * Clear all verified table caches.\n * Call this in test setup to ensure isolation between test files.\n */\nexport function resetVerifiedTables(): void {\n verifiedTablesByUrl.clear();\n}\n"],"names":[],"mappings":"AAmBA,MAAM,0CAA0B,IAAA;AAKzB,SAAS,gBAAgB,OAAe,WAA4B;AACzE,SAAO,oBAAoB,IAAI,KAAK,GAAG,IAAI,SAAS,KAAK;AAC3D;AAKO,SAAS,kBAAkB,OAAe,WAAyB;AACxE,MAAI,SAAS,oBAAoB,IAAI,KAAK;AAC1C,MAAI,CAAC,QAAQ;AACX,iCAAa,IAAA;AACb,wBAAoB,IAAI,OAAO,MAAM;AAAA,EACvC;AACA,SAAO,IAAI,SAAS;AACtB;AAMO,SAAS,sBAA4B;AAC1C,sBAAoB,MAAA;AACtB;"}
|