@squadrules/mcp 4.8.6 → 5.0.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/README.md +37 -32
- package/dist/.tsbuildinfo +1 -1
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.js +3 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/cli/api-client.d.ts +1 -1
- package/dist/cli/api-client.js +3 -3
- package/dist/cli/api-client.js.map +1 -1
- package/dist/cli/auth-error.js +1 -1
- package/dist/cli/auth-error.js.map +1 -1
- package/dist/cli/client-factory.js +2 -2
- package/dist/cli/client-factory.js.map +1 -1
- package/dist/cli/commands/attest.js +2 -2
- package/dist/cli/commands/attest.js.map +1 -1
- package/dist/cli/commands/begin.js +2 -2
- package/dist/cli/commands/begin.js.map +1 -1
- package/dist/cli/commands/cli-train.js +4 -4
- package/dist/cli/commands/cli-train.js.map +1 -1
- package/dist/cli/commands/delete-metadata.d.ts +2 -2
- package/dist/cli/commands/delete-metadata.d.ts.map +1 -1
- package/dist/cli/commands/delete-metadata.js +2 -2
- package/dist/cli/commands/delete-metadata.js.map +1 -1
- package/dist/cli/commands/export.js +2 -2
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/login.d.ts +1 -1
- package/dist/cli/commands/login.js +13 -13
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/logout.d.ts +1 -1
- package/dist/cli/commands/logout.js +1 -1
- package/dist/cli/commands/search.js +1 -1
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/serve.d.ts +3 -3
- package/dist/cli/commands/serve.js +9 -9
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/token.d.ts +1 -1
- package/dist/cli/commands/token.js +3 -3
- package/dist/cli/commands/token.js.map +1 -1
- package/dist/cli/commands/update.js +3 -3
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/config-file-internals.d.ts +1 -1
- package/dist/cli/config-file-internals.d.ts.map +1 -1
- package/dist/cli/config-file-internals.js +3 -3
- package/dist/cli/config-file-internals.js.map +1 -1
- package/dist/cli/config-file-write.js +1 -1
- package/dist/cli/config-file-write.js.map +1 -1
- package/dist/cli/config-file.d.ts +2 -2
- package/dist/cli/config-file.js +6 -6
- package/dist/cli/config-file.js.map +1 -1
- package/dist/cli/config.d.ts +2 -2
- package/dist/cli/config.js +3 -3
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/fetch-error.js +1 -1
- package/dist/cli/fetch-error.js.map +1 -1
- package/dist/cli/format-next-call.js +3 -3
- package/dist/cli/format-next-call.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/keyring.d.ts +5 -12
- package/dist/cli/keyring.d.ts.map +1 -1
- package/dist/cli/keyring.js +18 -64
- package/dist/cli/keyring.js.map +1 -1
- package/dist/cli/oauth-refresh.d.ts +2 -2
- package/dist/cli/oauth-refresh.d.ts.map +1 -1
- package/dist/cli/oauth-refresh.js +3 -3
- package/dist/cli/oauth-refresh.js.map +1 -1
- package/dist/cli/program.js +4 -4
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/resolve-api-base.d.ts +1 -1
- package/dist/cli/resolve-api-base.js +2 -2
- package/dist/cli/resolve-api-base.js.map +1 -1
- package/dist/cli/skill-zip-local-write.js +2 -2
- package/dist/cli/skill-zip-local-write.js.map +1 -1
- package/dist/cli/upload-guards.js +3 -3
- package/dist/cli/upload-guards.js.map +1 -1
- package/dist/config/adapter-markdown-size-limits.d.ts +2 -5
- package/dist/config/adapter-markdown-size-limits.d.ts.map +1 -1
- package/dist/config/adapter-markdown-size-limits.js +19 -10
- package/dist/config/adapter-markdown-size-limits.js.map +1 -1
- package/dist/config/embedding-fastembed.d.ts +9 -0
- package/dist/config/embedding-fastembed.d.ts.map +1 -0
- package/dist/config/embedding-fastembed.js +20 -0
- package/dist/config/embedding-fastembed.js.map +1 -0
- package/dist/config/export-download-settings.d.ts +2 -2
- package/dist/config/export-download-settings.d.ts.map +1 -1
- package/dist/config/export-download-settings.js +3 -23
- package/dist/config/export-download-settings.js.map +1 -1
- package/dist/config/export-zip-settings.d.ts +2 -3
- package/dist/config/export-zip-settings.d.ts.map +1 -1
- package/dist/config/export-zip-settings.js +3 -6
- package/dist/config/export-zip-settings.js.map +1 -1
- package/dist/config.d.ts +35 -31
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +50 -47
- package/dist/config.js.map +1 -1
- package/dist/constants/builtin-search-meta.d.ts +5 -5
- package/dist/constants/builtin-search-meta.d.ts.map +1 -1
- package/dist/constants/builtin-search-meta.js +6 -6
- package/dist/constants/builtin-search-meta.js.map +1 -1
- package/dist/embed-docs/mem/README.md +9 -9
- package/dist/embed-docs/mem/adapter-migration.md +2 -2
- package/dist/embed-docs/mem/bulk-insert-adapters-via-cli.md +20 -20
- package/dist/embed-docs/mem/challenge-type-guide.md +10 -10
- package/dist/embed-docs/mem/create-new-protocol.md +16 -16
- package/dist/embed-docs/mem/phase-critic-guide.md +2 -2
- package/dist/embed-docs/mem/phase-critic.md +2 -2
- package/dist/embed-docs/mem/protocol-linking-guide.md +6 -6
- package/dist/embed-docs/mem/refine-search.md +3 -3
- package/dist/embed-docs/mem/skill-format-guide.md +24 -24
- package/dist/http/bearer-validate.d.ts +1 -1
- package/dist/http/bearer-validate.d.ts.map +1 -1
- package/dist/http/export-skill-zip-http.js +3 -3
- package/dist/http/export-skill-zip-http.js.map +1 -1
- package/dist/http/http-api-snapshot.d.ts.map +1 -1
- package/dist/http/http-api-snapshot.js +13 -1
- package/dist/http/http-api-snapshot.js.map +1 -1
- package/dist/http/http-api-train-json.js +8 -8
- package/dist/http/http-api-train-json.js.map +1 -1
- package/dist/http/http-api-train-raw.js +8 -8
- package/dist/http/http-api-train-raw.js.map +1 -1
- package/dist/http/http-auth-callback.js +1 -1
- package/dist/http/http-auth-middleware.d.ts +1 -1
- package/dist/http/http-auth-middleware.d.ts.map +1 -1
- package/dist/http/http-auth-middleware.js +7 -15
- package/dist/http/http-auth-middleware.js.map +1 -1
- package/dist/http/http-export-artifact-download-routes.js +1 -1
- package/dist/http/http-export-artifact-download-routes.js.map +1 -1
- package/dist/http/http-health-routes.d.ts.map +1 -1
- package/dist/http/http-health-routes.js +6 -3
- package/dist/http/http-health-routes.js.map +1 -1
- package/dist/http/http-mcp-handler.js +2 -2
- package/dist/http/http-mcp-handler.js.map +1 -1
- package/dist/http/http-route-errors.js +4 -4
- package/dist/http/http-route-errors.js.map +1 -1
- package/dist/http/http-ui-static.js +8 -8
- package/dist/http/http-ui-static.js.map +1 -1
- package/dist/http/http-well-known.js +1 -1
- package/dist/http/http-well-known.js.map +1 -1
- package/dist/http/oidc-profile-claims.d.ts +5 -5
- package/dist/http/oidc-profile-claims.d.ts.map +1 -1
- package/dist/http/oidc-profile-claims.js +5 -5
- package/dist/http/oidc-profile-claims.js.map +1 -1
- package/dist/http/oidc-scopes.js +2 -2
- package/dist/http/oidc-scopes.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -11
- package/dist/index.js.map +1 -1
- package/dist/mcp-apps/activate-widget-html.js +4 -4
- package/dist/mcp-apps/activate-widget-html.js.map +1 -1
- package/dist/mcp-apps/activate-widget-inline-css.js +1 -1
- package/dist/mcp-apps/activate-widget-inline-script.js +9 -9
- package/dist/mcp-apps/forward-widget-html.js +4 -4
- package/dist/mcp-apps/forward-widget-html.js.map +1 -1
- package/dist/mcp-apps/forward-widget-inline-script.d.ts.map +1 -1
- package/dist/mcp-apps/forward-widget-inline-script.js +8 -8
- package/dist/mcp-apps/forward-widget-inline-script.js.map +1 -1
- package/dist/mcp-apps/list-offerings-for-ui.d.ts.map +1 -1
- package/dist/mcp-apps/list-offerings-for-ui.js +16 -16
- package/dist/mcp-apps/list-offerings-for-ui.js.map +1 -1
- package/dist/mcp-apps/mcp-widget-presentation-inject.d.ts +2 -2
- package/dist/mcp-apps/mcp-widget-presentation-inject.d.ts.map +1 -1
- package/dist/mcp-apps/mcp-widget-presentation-inject.js +4 -4
- package/dist/mcp-apps/mcp-widget-presentation-inject.js.map +1 -1
- package/dist/mcp-apps/register-activate-ui-resources.d.ts +1 -1
- package/dist/mcp-apps/register-activate-ui-resources.d.ts.map +1 -1
- package/dist/mcp-apps/register-activate-ui-resources.js +2 -13
- package/dist/mcp-apps/register-activate-ui-resources.js.map +1 -1
- package/dist/mcp-apps/register-forward-ui-resources.d.ts +1 -1
- package/dist/mcp-apps/register-forward-ui-resources.d.ts.map +1 -1
- package/dist/mcp-apps/register-forward-ui-resources.js +3 -14
- package/dist/mcp-apps/register-forward-ui-resources.js.map +1 -1
- package/dist/mcp-apps/register-spaces-ui-resources.d.ts +1 -1
- package/dist/mcp-apps/register-spaces-ui-resources.d.ts.map +1 -1
- package/dist/mcp-apps/register-spaces-ui-resources.js +2 -13
- package/dist/mcp-apps/register-spaces-ui-resources.js.map +1 -1
- package/dist/mcp-apps/spaces-mcp-app-widget-html.js +8 -8
- package/dist/mcp-apps/spaces-mcp-app-widget-html.js.map +1 -1
- package/dist/mcp-apps/spaces-widget-html.js +1 -1
- package/dist/mcp-apps/squadrules-logo-embedded.d.ts +3 -0
- package/dist/mcp-apps/squadrules-logo-embedded.d.ts.map +1 -0
- package/dist/mcp-apps/squadrules-logo-embedded.js +3 -0
- package/dist/mcp-apps/squadrules-logo-embedded.js.map +1 -0
- package/dist/mcp-apps/{kairos-server-ui-capability.d.ts → squadrules-server-ui-capability.d.ts} +2 -2
- package/dist/mcp-apps/squadrules-server-ui-capability.d.ts.map +1 -0
- package/dist/mcp-apps/{kairos-server-ui-capability.js → squadrules-server-ui-capability.js} +3 -3
- package/dist/mcp-apps/squadrules-server-ui-capability.js.map +1 -0
- package/dist/mcp-apps/{kairos-ui-constants.d.ts → squadrules-ui-constants.d.ts} +14 -52
- package/dist/mcp-apps/squadrules-ui-constants.d.ts.map +1 -0
- package/dist/mcp-apps/squadrules-ui-constants.js +59 -0
- package/dist/mcp-apps/squadrules-ui-constants.js.map +1 -0
- package/dist/resources/docs-resources.js +2 -2
- package/dist/resources/docs-resources.js.map +1 -1
- package/dist/resources/embedded-mcp-resources.js +17 -17
- package/dist/resources/embedded-mcp-resources.js.map +1 -1
- package/dist/resources/mem-resources-boot.d.ts.map +1 -1
- package/dist/resources/mem-resources-boot.js +5 -31
- package/dist/resources/mem-resources-boot.js.map +1 -1
- package/dist/resources/mem-uuid-mapper.d.ts.map +1 -1
- package/dist/resources/mem-uuid-mapper.js +8 -23
- package/dist/resources/mem-uuid-mapper.js.map +1 -1
- package/dist/resources/resource-bootstrap.js +4 -4
- package/dist/resources/resource-bootstrap.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -14
- package/dist/server.js.map +1 -1
- package/dist/services/adapter-navigation.js +1 -1
- package/dist/services/adapter-navigation.js.map +1 -1
- package/dist/services/embedding/fastembed-provider.d.ts +2 -0
- package/dist/services/embedding/fastembed-provider.d.ts.map +1 -0
- package/dist/services/embedding/fastembed-provider.js +78 -0
- package/dist/services/embedding/fastembed-provider.js.map +1 -0
- package/dist/services/embedding/health.d.ts.map +1 -1
- package/dist/services/embedding/health.js +99 -96
- package/dist/services/embedding/health.js.map +1 -1
- package/dist/services/embedding/provider-audit.d.ts +15 -0
- package/dist/services/embedding/provider-audit.d.ts.map +1 -0
- package/dist/services/embedding/provider-audit.js +28 -0
- package/dist/services/embedding/provider-audit.js.map +1 -0
- package/dist/services/embedding/providers.d.ts +2 -1
- package/dist/services/embedding/providers.d.ts.map +1 -1
- package/dist/services/embedding/providers.js +21 -23
- package/dist/services/embedding/providers.js.map +1 -1
- package/dist/services/embedding/service.d.ts +2 -2
- package/dist/services/embedding/service.d.ts.map +1 -1
- package/dist/services/embedding/service.js +13 -16
- package/dist/services/embedding/service.js.map +1 -1
- package/dist/services/execution-trace-store.d.ts +5 -29
- package/dist/services/execution-trace-store.d.ts.map +1 -1
- package/dist/services/execution-trace-store.js +10 -2
- package/dist/services/execution-trace-store.js.map +1 -1
- package/dist/services/export-artifact-download-capability.js +4 -4
- package/dist/services/export-artifact-download-capability.js.map +1 -1
- package/dist/services/export-download-capability.js +4 -4
- package/dist/services/export-download-capability.js.map +1 -1
- package/dist/services/id-generator.d.ts +11 -11
- package/dist/services/id-generator.d.ts.map +1 -1
- package/dist/services/id-generator.js +20 -30
- package/dist/services/id-generator.js.map +1 -1
- package/dist/services/memory/artifact-metadata.js +1 -1
- package/dist/services/memory/artifact-metadata.js.map +1 -1
- package/dist/services/memory/qdrant-point-to-memory.js +2 -2
- package/dist/services/memory/qdrant-point-to-memory.js.map +1 -1
- package/dist/services/memory/store-adapter-default-handler.js +2 -2
- package/dist/services/memory/store-adapter-default-handler.js.map +1 -1
- package/dist/services/memory/store-adapter-helpers.js +7 -7
- package/dist/services/memory/store-adapter-helpers.js.map +1 -1
- package/dist/services/memory/store-adapter.js +2 -2
- package/dist/services/memory/store-adapter.js.map +1 -1
- package/dist/services/memory/store-artifact.js +4 -4
- package/dist/services/memory/store-artifact.js.map +1 -1
- package/dist/services/memory/store-methods.js +7 -7
- package/dist/services/memory/store-methods.js.map +1 -1
- package/dist/services/memory/store-title-similarity-search.js +2 -2
- package/dist/services/memory/store-title-similarity-search.js.map +1 -1
- package/dist/services/memory/store.d.ts +23 -0
- package/dist/services/memory/store.d.ts.map +1 -1
- package/dist/services/memory/store.js +111 -4
- package/dist/services/memory/store.js.map +1 -1
- package/dist/services/memory/validate-protocol-structure.d.ts +1 -1
- package/dist/services/memory/validate-protocol-structure.d.ts.map +1 -1
- package/dist/services/memory/validate-protocol-structure.js +1 -1
- package/dist/services/memory/validate-protocol-structure.js.map +1 -1
- package/dist/services/memory-store.d.ts +5 -0
- package/dist/services/memory-store.d.ts.map +1 -1
- package/dist/services/memory-store.js +8 -3
- package/dist/services/memory-store.js.map +1 -1
- package/dist/services/metrics/agent-metrics.js +4 -4
- package/dist/services/metrics/agent-metrics.js.map +1 -1
- package/dist/services/metrics/anomaly-metrics.js +1 -1
- package/dist/services/metrics/anomaly-metrics.js.map +1 -1
- package/dist/services/metrics/embedding-metrics.js +5 -5
- package/dist/services/metrics/embedding-metrics.js.map +1 -1
- package/dist/services/metrics/export-metrics.js +4 -4
- package/dist/services/metrics/export-metrics.js.map +1 -1
- package/dist/services/metrics/http-metrics.js +5 -5
- package/dist/services/metrics/http-metrics.js.map +1 -1
- package/dist/services/metrics/mcp-metrics.d.ts +3 -3
- package/dist/services/metrics/mcp-metrics.d.ts.map +1 -1
- package/dist/services/metrics/mcp-metrics.js +10 -10
- package/dist/services/metrics/mcp-metrics.js.map +1 -1
- package/dist/services/metrics/memory-metrics.js +3 -3
- package/dist/services/metrics/memory-metrics.js.map +1 -1
- package/dist/services/metrics/qdrant-metrics.js +4 -4
- package/dist/services/metrics/qdrant-metrics.js.map +1 -1
- package/dist/services/metrics/registry.d.ts +1 -1
- package/dist/services/metrics/registry.js +3 -3
- package/dist/services/metrics/registry.js.map +1 -1
- package/dist/services/metrics/system-metrics.js +3 -3
- package/dist/services/metrics/system-metrics.js.map +1 -1
- package/dist/services/qdrant/connection.d.ts.map +1 -1
- package/dist/services/qdrant/connection.js +6 -6
- package/dist/services/qdrant/connection.js.map +1 -1
- package/dist/services/qdrant/initialization.d.ts +1 -1
- package/dist/services/qdrant/initialization.js +4 -4
- package/dist/services/qdrant/initialization.js.map +1 -1
- package/dist/services/qdrant/memory-retrieval.js +6 -6
- package/dist/services/qdrant/memory-retrieval.js.map +1 -1
- package/dist/services/qdrant/memory-updates.js +4 -4
- package/dist/services/qdrant/memory-updates.js.map +1 -1
- package/dist/services/qdrant/quality.js +4 -4
- package/dist/services/qdrant/quality.js.map +1 -1
- package/dist/services/qdrant/resources.js +2 -2
- package/dist/services/qdrant/resources.js.map +1 -1
- package/dist/services/qdrant/service.d.ts.map +1 -1
- package/dist/services/qdrant/service.js +11 -2
- package/dist/services/qdrant/service.js.map +1 -1
- package/dist/services/qdrant/snapshots.js +1 -1
- package/dist/services/qdrant/snapshots.js.map +1 -1
- package/dist/services/qdrant/utils.js +13 -13
- package/dist/services/qdrant/utils.js.map +1 -1
- package/dist/services/redis-cache.js +4 -4
- package/dist/services/redis-cache.js.map +1 -1
- package/dist/services/redis.d.ts +2 -2
- package/dist/services/redis.js +5 -5
- package/dist/services/redis.js.map +1 -1
- package/dist/services/reward-metrics.js +2 -2
- package/dist/services/reward-metrics.js.map +1 -1
- package/dist/services/vector-store/IExecutionTraceStore.d.ts +25 -0
- package/dist/services/vector-store/IExecutionTraceStore.d.ts.map +1 -0
- package/dist/services/vector-store/IExecutionTraceStore.js +2 -0
- package/dist/services/vector-store/IExecutionTraceStore.js.map +1 -0
- package/dist/services/vector-store/IVectorRecordStore.d.ts +58 -0
- package/dist/services/vector-store/IVectorRecordStore.d.ts.map +1 -0
- package/dist/services/vector-store/IVectorRecordStore.js +2 -0
- package/dist/services/vector-store/IVectorRecordStore.js.map +1 -0
- package/dist/services/vector-store/commit-retry.d.ts +21 -0
- package/dist/services/vector-store/commit-retry.d.ts.map +1 -0
- package/dist/services/vector-store/commit-retry.js +58 -0
- package/dist/services/vector-store/commit-retry.js.map +1 -0
- package/dist/services/vector-store/embedded-store-singleton.d.ts +12 -0
- package/dist/services/vector-store/embedded-store-singleton.d.ts.map +1 -0
- package/dist/services/vector-store/embedded-store-singleton.js +17 -0
- package/dist/services/vector-store/embedded-store-singleton.js.map +1 -0
- package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.d.ts +28 -0
- package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.js +222 -0
- package/dist/services/vector-store/lancedb/LanceExecutionTraceStore.js.map +1 -0
- package/dist/services/vector-store/lancedb/LanceVectorRecordStore.d.ts +77 -0
- package/dist/services/vector-store/lancedb/LanceVectorRecordStore.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/LanceVectorRecordStore.js +136 -0
- package/dist/services/vector-store/lancedb/LanceVectorRecordStore.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-engine.d.ts +41 -0
- package/dist/services/vector-store/lancedb/lance-records-engine.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-engine.js +102 -0
- package/dist/services/vector-store/lancedb/lance-records-engine.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-mutations.d.ts +22 -0
- package/dist/services/vector-store/lancedb/lance-records-mutations.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-mutations.js +211 -0
- package/dist/services/vector-store/lancedb/lance-records-mutations.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-reads.d.ts +64 -0
- package/dist/services/vector-store/lancedb/lance-records-reads.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-reads.js +237 -0
- package/dist/services/vector-store/lancedb/lance-records-reads.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-schema.d.ts +48 -0
- package/dist/services/vector-store/lancedb/lance-records-schema.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-schema.js +159 -0
- package/dist/services/vector-store/lancedb/lance-records-schema.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-search.d.ts +30 -0
- package/dist/services/vector-store/lancedb/lance-records-search.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-search.js +112 -0
- package/dist/services/vector-store/lancedb/lance-records-search.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-write-artifact.d.ts +11 -0
- package/dist/services/vector-store/lancedb/lance-records-write-artifact.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-write-artifact.js +121 -0
- package/dist/services/vector-store/lancedb/lance-records-write-artifact.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-write-helpers.d.ts +52 -0
- package/dist/services/vector-store/lancedb/lance-records-write-helpers.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-write-helpers.js +216 -0
- package/dist/services/vector-store/lancedb/lance-records-write-helpers.js.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-writes.d.ts +21 -0
- package/dist/services/vector-store/lancedb/lance-records-writes.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb/lance-records-writes.js +294 -0
- package/dist/services/vector-store/lancedb/lance-records-writes.js.map +1 -0
- package/dist/services/vector-store/lancedb-connection.d.ts +12 -0
- package/dist/services/vector-store/lancedb-connection.d.ts.map +1 -0
- package/dist/services/vector-store/lancedb-connection.js +28 -0
- package/dist/services/vector-store/lancedb-connection.js.map +1 -0
- package/dist/services/vector-store/types.d.ts +85 -0
- package/dist/services/vector-store/types.d.ts.map +1 -0
- package/dist/services/vector-store/types.js +2 -0
- package/dist/services/vector-store/types.js.map +1 -0
- package/dist/stdio/stdio-server.js +1 -1
- package/dist/stdio/stdio-server.js.map +1 -1
- package/dist/tools/activate.js +11 -11
- package/dist/tools/activate.js.map +1 -1
- package/dist/tools/activate_schema.d.ts +0 -1
- package/dist/tools/activate_schema.d.ts.map +1 -1
- package/dist/tools/activate_schema.js +8 -10
- package/dist/tools/activate_schema.js.map +1 -1
- package/dist/tools/artifact-catalog.d.ts.map +1 -1
- package/dist/tools/artifact-catalog.js +6 -33
- package/dist/tools/artifact-catalog.js.map +1 -1
- package/dist/tools/delete.js +4 -4
- package/dist/tools/delete.js.map +1 -1
- package/dist/tools/delete_schema.js +3 -3
- package/dist/tools/delete_schema.js.map +1 -1
- package/dist/tools/dump.d.ts.map +1 -1
- package/dist/tools/dump.js +4 -13
- package/dist/tools/dump.js.map +1 -1
- package/dist/tools/export-resolve-adapter.js +2 -2
- package/dist/tools/export-resolve-adapter.js.map +1 -1
- package/dist/tools/export-reward-jsonl.js +3 -3
- package/dist/tools/export-reward-jsonl.js.map +1 -1
- package/dist/tools/export-selection.js +4 -4
- package/dist/tools/export-selection.js.map +1 -1
- package/dist/tools/export-source.js +5 -5
- package/dist/tools/export-source.js.map +1 -1
- package/dist/tools/export.js +5 -5
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/export_schema.js +4 -4
- package/dist/tools/export_schema.js.map +1 -1
- package/dist/tools/forward-register.js +4 -4
- package/dist/tools/forward-register.js.map +1 -1
- package/dist/tools/forward-tool-error.d.ts +2 -2
- package/dist/tools/forward-tool-error.d.ts.map +1 -1
- package/dist/tools/forward-tool-error.js.map +1 -1
- package/dist/tools/forward-trace.js +1 -1
- package/dist/tools/forward-trace.js.map +1 -1
- package/dist/tools/forward-view.d.ts +2 -2
- package/dist/tools/forward-view.d.ts.map +1 -1
- package/dist/tools/forward-view.js +3 -3
- package/dist/tools/forward-view.js.map +1 -1
- package/dist/tools/forward.js +5 -5
- package/dist/tools/forward.js.map +1 -1
- package/dist/tools/forward_schema.d.ts +1 -2
- package/dist/tools/forward_schema.d.ts.map +1 -1
- package/dist/tools/forward_schema.js +5 -7
- package/dist/tools/forward_schema.js.map +1 -1
- package/dist/tools/local-artifact-dir-contract.d.ts +2 -8
- package/dist/tools/local-artifact-dir-contract.d.ts.map +1 -1
- package/dist/tools/local-artifact-dir-contract.js +2 -9
- package/dist/tools/local-artifact-dir-contract.js.map +1 -1
- package/dist/tools/mcp-tool-input-teaching.d.ts +3 -3
- package/dist/tools/mcp-tool-input-teaching.d.ts.map +1 -1
- package/dist/tools/mcp-tool-input-teaching.js +22 -22
- package/dist/tools/mcp-tool-input-teaching.js.map +1 -1
- package/dist/tools/next-missing-proof-payload.js +1 -1
- package/dist/tools/next-missing-proof-payload.js.map +1 -1
- package/dist/tools/next-pow-challenge-shape.js +1 -1
- package/dist/tools/next-pow-challenge-shape.js.map +1 -1
- package/dist/tools/next-pow-helpers.d.ts +1 -1
- package/dist/tools/next-pow-helpers.d.ts.map +1 -1
- package/dist/tools/next-pow-helpers.js +4 -4
- package/dist/tools/next-pow-helpers.js.map +1 -1
- package/dist/tools/next-previous-step.js +1 -1
- package/dist/tools/next-previous-step.js.map +1 -1
- package/dist/tools/next.js +8 -8
- package/dist/tools/next.js.map +1 -1
- package/dist/tools/next_schema.d.ts +0 -1
- package/dist/tools/next_schema.d.ts.map +1 -1
- package/dist/tools/next_schema.js +3 -5
- package/dist/tools/next_schema.js.map +1 -1
- package/dist/tools/review-evidence-check.js +1 -1
- package/dist/tools/review-evidence-check.js.map +1 -1
- package/dist/tools/reward.js +6 -6
- package/dist/tools/reward.js.map +1 -1
- package/dist/tools/reward_schema.js +1 -1
- package/dist/tools/reward_schema.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +20 -34
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/search_output.js +11 -11
- package/dist/tools/search_output.js.map +1 -1
- package/dist/tools/search_schema.d.ts +1 -1
- package/dist/tools/search_schema.js +7 -7
- package/dist/tools/search_schema.js.map +1 -1
- package/dist/tools/skill-export/assemble-skill-item.d.ts.map +1 -1
- package/dist/tools/skill-export/assemble-skill-item.js +11 -15
- package/dist/tools/skill-export/assemble-skill-item.js.map +1 -1
- package/dist/tools/skill-export/derive-metadata.d.ts +1 -1
- package/dist/tools/skill-export/derive-metadata.d.ts.map +1 -1
- package/dist/tools/skill-export/enumerate-space-adapters.d.ts +2 -2
- package/dist/tools/skill-export/enumerate-space-adapters.d.ts.map +1 -1
- package/dist/tools/skill-export/enumerate-space-adapters.js +12 -28
- package/dist/tools/skill-export/enumerate-space-adapters.js.map +1 -1
- package/dist/tools/skill-export/types.d.ts +1 -1
- package/dist/tools/skill-export/types.d.ts.map +1 -1
- package/dist/tools/spaces.d.ts.map +1 -1
- package/dist/tools/spaces.js +9 -22
- package/dist/tools/spaces.js.map +1 -1
- package/dist/tools/spaces_schema.js +1 -1
- package/dist/tools/spaces_schema.js.map +1 -1
- package/dist/tools/{kairos-challenge-display.d.ts → squadrules-challenge-display.d.ts} +1 -1
- package/dist/tools/squadrules-challenge-display.d.ts.map +1 -0
- package/dist/tools/{kairos-challenge-display.js → squadrules-challenge-display.js} +3 -3
- package/dist/tools/squadrules-challenge-display.js.map +1 -0
- package/dist/tools/{kairos-genesis-proof-hash.d.ts → squadrules-genesis-proof-hash.d.ts} +1 -1
- package/dist/tools/squadrules-genesis-proof-hash.d.ts.map +1 -0
- package/dist/tools/{kairos-genesis-proof-hash.js → squadrules-genesis-proof-hash.js} +1 -1
- package/dist/tools/squadrules-genesis-proof-hash.js.map +1 -0
- package/dist/tools/{kairos-uri.d.ts → squadrules-uri.d.ts} +4 -4
- package/dist/tools/squadrules-uri.d.ts.map +1 -0
- package/dist/tools/{kairos-uri.js → squadrules-uri.js} +18 -29
- package/dist/tools/squadrules-uri.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +11 -13
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +8 -8
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/tools/train-artifact-adapter-uri.js +3 -3
- package/dist/tools/train-artifact-adapter-uri.js.map +1 -1
- package/dist/tools/train-output-adapter-uri.js +2 -2
- package/dist/tools/train-output-adapter-uri.js.map +1 -1
- package/dist/tools/train-store.js +4 -4
- package/dist/tools/train-store.js.map +1 -1
- package/dist/tools/train.js +11 -11
- package/dist/tools/train.js.map +1 -1
- package/dist/tools/train_schema.js +4 -4
- package/dist/tools/train_schema.js.map +1 -1
- package/dist/tools/tune-execute.d.ts.map +1 -1
- package/dist/tools/tune-execute.js +5 -5
- package/dist/tools/tune-execute.js.map +1 -1
- package/dist/tools/tune-messages.js +2 -2
- package/dist/tools/tune-messages.js.map +1 -1
- package/dist/tools/tune_schema.js +3 -3
- package/dist/tools/tune_schema.js.map +1 -1
- package/dist/tools/update.js +2 -2
- package/dist/tools/update.js.map +1 -1
- package/dist/tools/update_schema.d.ts.map +1 -1
- package/dist/tools/update_schema.js +3 -5
- package/dist/tools/update_schema.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/index.js.map +1 -1
- package/dist/ui/assets/{AccountPage-DBrqe8KI.js → AccountPage-BJm56sur.js} +1 -1
- package/dist/ui/assets/HomePage-B06u5RCw.js +1 -0
- package/dist/ui/assets/{ProtocolDetailPage-C20Yd3q6.js → ProtocolDetailPage-DCw5D34S.js} +1 -1
- package/dist/ui/assets/ProtocolEditPage-mChBe3JY.js +5 -0
- package/dist/ui/assets/{RichTextEditor-uun0UIVc.js → RichTextEditor-Bj6JxHM5.js} +1 -1
- package/dist/ui/assets/{RunGuidedPage-BbyHZjPU.js → RunGuidedPage-Bd1bUTBH.js} +1 -1
- package/dist/ui/assets/{RunsPage-BijmxS6f.js → RunsPage-4kDF_Ylg.js} +1 -1
- package/dist/ui/assets/{SkillBundlePage-BsndXJaC.js → SkillBundlePage-D1OPKJzA.js} +1 -1
- package/dist/ui/assets/SquadrulesPage-D84vIaBc.js +1 -0
- package/dist/ui/assets/{export-skill-zip-CIyOWxuI.js → export-skill-zip-C1bRyhE2.js} +1 -1
- package/dist/ui/assets/index-PouLvU1c.js +8 -0
- package/dist/ui/assets/{kairos-mcp-DNiKVgiO.svg → squadrules-mcp-Qc5pokoj.svg} +1 -1
- package/dist/ui/assets/useRunSession-BX2U9D53.js +1 -0
- package/dist/ui/favicon.svg +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/logo.svg +1 -1
- package/dist/utils/build-version.d.ts +1 -1
- package/dist/utils/build-version.js +1 -1
- package/dist/utils/global-error-handlers.d.ts +1 -1
- package/dist/utils/global-error-handlers.js +1 -1
- package/dist/utils/log-core.d.ts +1 -1
- package/dist/utils/log-core.js +1 -1
- package/dist/utils/mcp-tool-doc-runtime.d.ts +1 -1
- package/dist/utils/mcp-tool-doc-runtime.js +2 -2
- package/dist/utils/mcp-tool-doc-runtime.js.map +1 -1
- package/dist/utils/memory-body.d.ts +1 -1
- package/dist/utils/memory-body.js +2 -2
- package/dist/utils/memory-body.js.map +1 -1
- package/dist/utils/protected-space-write-guard.js +3 -3
- package/dist/utils/protected-space-write-guard.js.map +1 -1
- package/dist/utils/qdrant-vector-management.js +3 -3
- package/dist/utils/qdrant-vector-management.js.map +1 -1
- package/dist/utils/resolve-space-param.d.ts +1 -1
- package/dist/utils/resolve-space-param.js +8 -8
- package/dist/utils/resolve-space-param.js.map +1 -1
- package/dist/utils/space-display.d.ts +2 -2
- package/dist/utils/space-display.d.ts.map +1 -1
- package/dist/utils/space-display.js +6 -6
- package/dist/utils/space-display.js.map +1 -1
- package/dist/utils/squadrules-local-artifact-dirs.d.ts +12 -0
- package/dist/utils/squadrules-local-artifact-dirs.d.ts.map +1 -0
- package/dist/utils/squadrules-local-artifact-dirs.js +34 -0
- package/dist/utils/squadrules-local-artifact-dirs.js.map +1 -0
- package/dist/utils/squadrules-user-dirs.d.ts +26 -0
- package/dist/utils/squadrules-user-dirs.d.ts.map +1 -0
- package/dist/utils/squadrules-user-dirs.js +67 -0
- package/dist/utils/squadrules-user-dirs.js.map +1 -0
- package/dist/utils/structured-logger.d.ts +1 -1
- package/dist/utils/structured-logger.js +1 -1
- package/dist/utils/tenant-context.d.ts +3 -3
- package/dist/utils/tenant-context.d.ts.map +1 -1
- package/dist/utils/tenant-context.js +12 -12
- package/dist/utils/tenant-context.js.map +1 -1
- package/dist/utils/uri-builder.d.ts +12 -12
- package/dist/utils/uri-builder.js +14 -14
- package/dist/utils/uri-builder.js.map +1 -1
- package/package.json +21 -16
- package/dist/config/env-alias.d.ts +0 -56
- package/dist/config/env-alias.d.ts.map +0 -1
- package/dist/config/env-alias.js +0 -112
- package/dist/config/env-alias.js.map +0 -1
- package/dist/mcp-apps/kairos-logo-embedded.d.ts +0 -3
- package/dist/mcp-apps/kairos-logo-embedded.d.ts.map +0 -1
- package/dist/mcp-apps/kairos-logo-embedded.js +0 -3
- package/dist/mcp-apps/kairos-logo-embedded.js.map +0 -1
- package/dist/mcp-apps/kairos-server-ui-capability.d.ts.map +0 -1
- package/dist/mcp-apps/kairos-server-ui-capability.js.map +0 -1
- package/dist/mcp-apps/kairos-ui-constants.d.ts.map +0 -1
- package/dist/mcp-apps/kairos-ui-constants.js +0 -100
- package/dist/mcp-apps/kairos-ui-constants.js.map +0 -1
- package/dist/squadrules-mcp-4.8.6.tgz +0 -0
- package/dist/tools/kairos-challenge-display.d.ts.map +0 -1
- package/dist/tools/kairos-challenge-display.js.map +0 -1
- package/dist/tools/kairos-genesis-proof-hash.d.ts.map +0 -1
- package/dist/tools/kairos-genesis-proof-hash.js.map +0 -1
- package/dist/tools/kairos-uri.d.ts.map +0 -1
- package/dist/tools/kairos-uri.js.map +0 -1
- package/dist/ui/assets/HomePage-DIKsxKaH.js +0 -1
- package/dist/ui/assets/KairosPage-n5qbiyxb.js +0 -1
- package/dist/ui/assets/ProtocolEditPage-hc87ZsgM.js +0 -5
- package/dist/ui/assets/index-D7zMHqYN.js +0 -8
- package/dist/ui/assets/useRunSession-062hqhcN.js +0 -1
- package/dist/utils/kairos-local-artifact-dirs.d.ts +0 -13
- package/dist/utils/kairos-local-artifact-dirs.d.ts.map +0 -1
- package/dist/utils/kairos-local-artifact-dirs.js +0 -35
- package/dist/utils/kairos-local-artifact-dirs.js.map +0 -1
- package/dist/utils/kairos-user-dirs.d.ts +0 -62
- package/dist/utils/kairos-user-dirs.d.ts.map +0 -1
- package/dist/utils/kairos-user-dirs.js +0 -165
- package/dist/utils/kairos-user-dirs.js.map +0 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lance write-path primitives.
|
|
3
|
+
*
|
|
4
|
+
* The Qdrant store/adapter handlers reach the index through three client calls —
|
|
5
|
+
* `scroll` (duplicate + slug collision), `delete` (force-update replace) and the
|
|
6
|
+
* title-similarity search — plus a handful of artifact anchor lookups. This module
|
|
7
|
+
* reimplements exactly those over the Lance engine and the JS-cosine searcher, so
|
|
8
|
+
* the higher-level writer can reuse the backend-neutral parsing/build helpers
|
|
9
|
+
* (`resolveProtocolSlugCandidate`, `deriveDomainTaskType`, `buildHeaderMemoryAdapter`,
|
|
10
|
+
* embeddings) unchanged and produce a store that reads/searches with the same
|
|
11
|
+
* contract as Qdrant. Payload semantics (protected-space guard, duplicate/slug error
|
|
12
|
+
* codes, similarity threshold, artifact anchor resolution) are mirrored verbatim.
|
|
13
|
+
*/
|
|
14
|
+
import { SIMILAR_MEMORY_THRESHOLD } from '../../../config.js';
|
|
15
|
+
import { getSpaceContext, getSearchSpaceIds } from '../../../utils/tenant-context.js';
|
|
16
|
+
import { buildSpaceFilter } from '../../../utils/space-filter.js';
|
|
17
|
+
import { isProtectedWriteSpace, protectedWriteErrorMessage } from '../../../utils/protected-space-write-guard.js';
|
|
18
|
+
import { SquadrulesError } from '../../../types/index.js';
|
|
19
|
+
import { buildAdapterUri, buildLayerUri } from '../../../tools/squadrules-uri.js';
|
|
20
|
+
import { MAX_AUTO_SUFFIX_ATTEMPTS, nextAutoSlugCandidate } from '../../../utils/protocol-slug.js';
|
|
21
|
+
import { ALLOWED_ARTIFACT_MIMES } from '../../../tools/artifact-mime.js';
|
|
22
|
+
import { deriveDomainTaskType, buildAdapterSimilaritySearchQuery } from '../../memory/store-adapter-helpers.js';
|
|
23
|
+
function payloadOf(row) {
|
|
24
|
+
return JSON.parse(row.payload);
|
|
25
|
+
}
|
|
26
|
+
function adapterIdOf(payload) {
|
|
27
|
+
const id = payload?.adapter?.id;
|
|
28
|
+
return typeof id === 'string' && id.length > 0 ? id : undefined;
|
|
29
|
+
}
|
|
30
|
+
export class LanceWriteRepo {
|
|
31
|
+
engine;
|
|
32
|
+
search;
|
|
33
|
+
constructor(engine, search) {
|
|
34
|
+
this.engine = engine;
|
|
35
|
+
this.search = search;
|
|
36
|
+
}
|
|
37
|
+
/** Points already stored under this adapter id (duplicate check). */
|
|
38
|
+
async checkDuplicateAdapter(adapterUuid) {
|
|
39
|
+
const filter = buildSpaceFilter(getSpaceContext().allowedSpaceIds, {
|
|
40
|
+
must: [{ key: 'adapter.id', match: { value: adapterUuid } }]
|
|
41
|
+
});
|
|
42
|
+
const rows = await this.engine.scroll(filter, 256);
|
|
43
|
+
return { points: rows.map((r) => ({ id: r.id, payload: payloadOf(r) })) };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Replace-or-reject an existing adapter. Mirrors `handleDuplicateAdapter`: throw
|
|
47
|
+
* DUPLICATE_ADAPTER unless force_update, block writes into protected spaces, then
|
|
48
|
+
* delete the old adapter rows so the mint re-creates a clean chain.
|
|
49
|
+
*/
|
|
50
|
+
async handleDuplicateAdapter(adapterUuid, forceUpdate) {
|
|
51
|
+
const dup = await this.checkDuplicateAdapter(adapterUuid);
|
|
52
|
+
if (dup.points.length === 0)
|
|
53
|
+
return;
|
|
54
|
+
if (!forceUpdate) {
|
|
55
|
+
const items = dup.points.map((p) => ({ label: p.payload?.label || 'Memory', uri: buildLayerUri(p.id) }));
|
|
56
|
+
throw new SquadrulesError('Duplicate adapter', 'DUPLICATE_ADAPTER', 409, { adapter_id: adapterUuid, items });
|
|
57
|
+
}
|
|
58
|
+
const protectedEntries = dup.points.filter((p) => isProtectedWriteSpace(typeof p.payload?.space_id === 'string' ? p.payload.space_id : ''));
|
|
59
|
+
if (protectedEntries.length > 0) {
|
|
60
|
+
const items = protectedEntries.map((p) => ({
|
|
61
|
+
label: p.payload?.label || 'Memory',
|
|
62
|
+
uri: buildLayerUri(p.id),
|
|
63
|
+
space_id: typeof p.payload?.space_id === 'string' ? p.payload.space_id : undefined
|
|
64
|
+
}));
|
|
65
|
+
const firstSpaceId = typeof protectedEntries[0]?.payload?.space_id === 'string' ? protectedEntries[0].payload.space_id : undefined;
|
|
66
|
+
throw new SquadrulesError(protectedWriteErrorMessage(firstSpaceId), 'PROTECTED_SPACE_WRITE_FORBIDDEN', 403, { adapter_id: adapterUuid, items });
|
|
67
|
+
}
|
|
68
|
+
const filter = buildSpaceFilter(getSpaceContext().allowedSpaceIds, {
|
|
69
|
+
must: [{ key: 'adapter.id', match: { value: adapterUuid } }]
|
|
70
|
+
});
|
|
71
|
+
await this.engine.deleteByFilter(filter);
|
|
72
|
+
}
|
|
73
|
+
/** Slug collision scan within allowed spaces. */
|
|
74
|
+
async scrollPointsWithSlug(slug) {
|
|
75
|
+
const filter = buildSpaceFilter(getSpaceContext().allowedSpaceIds, { must: [{ key: 'slug', match: { value: slug } }] });
|
|
76
|
+
const rows = await this.engine.scroll(filter, 24);
|
|
77
|
+
return rows.map((r) => ({ id: r.id, payload: payloadOf(r) }));
|
|
78
|
+
}
|
|
79
|
+
/** Allocate a non-colliding slug (author exact-collision rejects; auto appends -2, -3…). */
|
|
80
|
+
async allocateAdapterSlugForMint(input, newAdapterUuid) {
|
|
81
|
+
const { slug: baseSlug, authorSupplied } = input;
|
|
82
|
+
const usedByOtherAdapter = async (candidate) => {
|
|
83
|
+
const hits = await this.scrollPointsWithSlug(candidate);
|
|
84
|
+
for (const h of hits) {
|
|
85
|
+
const adapterId = adapterIdOf(h.payload);
|
|
86
|
+
if (adapterId && adapterId !== newAdapterUuid) {
|
|
87
|
+
return { otherAdapterId: adapterId, sample_uri: buildLayerUri(h.id) };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
};
|
|
92
|
+
if (authorSupplied) {
|
|
93
|
+
const clash = await usedByOtherAdapter(baseSlug);
|
|
94
|
+
if (clash) {
|
|
95
|
+
throw new SquadrulesError(`Slug "${baseSlug}" is already used by another protocol in this space.`, 'DUPLICATE_SLUG', 409, { slug: baseSlug, adapter_id: clash.otherAdapterId, sample_uri: clash.sample_uri });
|
|
96
|
+
}
|
|
97
|
+
return baseSlug;
|
|
98
|
+
}
|
|
99
|
+
for (let attempt = 1; attempt <= MAX_AUTO_SUFFIX_ATTEMPTS; attempt++) {
|
|
100
|
+
const candidate = nextAutoSlugCandidate(baseSlug, attempt);
|
|
101
|
+
const clash = await usedByOtherAdapter(candidate);
|
|
102
|
+
if (!clash)
|
|
103
|
+
return candidate;
|
|
104
|
+
}
|
|
105
|
+
throw new SquadrulesError(`Could not allocate a unique slug from "${baseSlug}" after ${MAX_AUTO_SUFFIX_ATTEMPTS} attempts.`, 'SLUG_ALLOCATION_EXHAUSTED', 409, { base_slug: baseSlug });
|
|
106
|
+
}
|
|
107
|
+
/** Title-similarity guard before mint (throws SIMILAR_MEMORY_FOUND above threshold). */
|
|
108
|
+
async checkSimilarAdapterByTitle(adapterTitle, forceUpdate) {
|
|
109
|
+
if (forceUpdate)
|
|
110
|
+
return;
|
|
111
|
+
const label = buildAdapterSimilaritySearchQuery(adapterTitle);
|
|
112
|
+
const { memories, scores } = await this.search.searchAdapterTitlesBySimilarity(label, 10);
|
|
113
|
+
if (memories.length === 0 || scores.length === 0)
|
|
114
|
+
return;
|
|
115
|
+
let bestMatch = memories[0];
|
|
116
|
+
let bestScore = scores[0] ?? 0;
|
|
117
|
+
for (let i = 1; i < memories.length; i++) {
|
|
118
|
+
const score = scores[i] ?? 0;
|
|
119
|
+
if (score > bestScore) {
|
|
120
|
+
bestScore = score;
|
|
121
|
+
bestMatch = memories[i];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (bestScore < SIMILAR_MEMORY_THRESHOLD)
|
|
125
|
+
return;
|
|
126
|
+
const adapterUri = bestMatch.adapter?.id ? buildAdapterUri(bestMatch.adapter.id) : buildLayerUri(bestMatch.memory_uuid ?? '');
|
|
127
|
+
const existingMemory = {
|
|
128
|
+
uri: buildLayerUri(bestMatch.memory_uuid ?? ''),
|
|
129
|
+
memory_uuid: bestMatch.memory_uuid,
|
|
130
|
+
label: bestMatch.label,
|
|
131
|
+
adapter_name: bestMatch.adapter?.name ?? null,
|
|
132
|
+
score: bestScore,
|
|
133
|
+
layer_count: bestMatch.adapter?.layer_count ?? 1
|
|
134
|
+
};
|
|
135
|
+
const next_action = `call export with ${adapterUri} and format "markdown" for flat Markdown to inspect the similar adapter. If your markdown uses the same adapter id, call train with force_update: true to replace that adapter; otherwise pick a distinct adapter title (H1)`;
|
|
136
|
+
const content_preview = [bestMatch.label, bestMatch.text].filter(Boolean).join('\n').slice(0, 300);
|
|
137
|
+
const matchedAdapterName = bestMatch.adapter?.name ?? bestMatch.label;
|
|
138
|
+
throw new SquadrulesError('Similar memory found by title', 'SIMILAR_MEMORY_FOUND', 409, {
|
|
139
|
+
existing_memory: existingMemory,
|
|
140
|
+
similarity_score: bestScore,
|
|
141
|
+
message: `Adapter title similar to existing "${matchedAdapterName}" (${Math.round(bestScore * 100)}% match). Verify or use force_update: true with the same adapter id to replace.`,
|
|
142
|
+
must_obey: true,
|
|
143
|
+
next_action,
|
|
144
|
+
content_preview
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/** Resolve an adapter head point id by slug (lowest id wins). */
|
|
148
|
+
async resolveAdapterAnchorPointId(slug) {
|
|
149
|
+
const normalized = (slug || '').trim().toLowerCase();
|
|
150
|
+
if (!normalized)
|
|
151
|
+
return null;
|
|
152
|
+
const filter = buildSpaceFilter(getSearchSpaceIds(), {
|
|
153
|
+
must: [{ key: 'slug', match: { value: normalized } }, { key: 'adapter.layer_index', match: { value: 1 } }]
|
|
154
|
+
});
|
|
155
|
+
const rows = await this.engine.scroll(filter);
|
|
156
|
+
if (rows.length === 0)
|
|
157
|
+
return null;
|
|
158
|
+
const ids = rows.map((r) => r.id).sort((a, b) => a.localeCompare(b));
|
|
159
|
+
return ids[0] ?? null;
|
|
160
|
+
}
|
|
161
|
+
async resolveAdapterNameByAdapterId(adapterId) {
|
|
162
|
+
const filter = buildSpaceFilter(getSearchSpaceIds(), {
|
|
163
|
+
must: [{ key: 'adapter.id', match: { value: adapterId } }, { key: 'adapter.layer_index', match: { value: 1 } }]
|
|
164
|
+
});
|
|
165
|
+
const rows = await this.engine.scroll(filter, 1);
|
|
166
|
+
const payload = rows[0] ? payloadOf(rows[0]) : {};
|
|
167
|
+
const name = payload?.adapter?.name;
|
|
168
|
+
if (typeof name === 'string' && name.trim().length > 0)
|
|
169
|
+
return name.trim();
|
|
170
|
+
if (typeof payload?.label === 'string' && payload.label.trim().length > 0)
|
|
171
|
+
return payload.label.trim();
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
/** Normalize a slug / layer-id / chain-id adapter reference to its chain id + name. */
|
|
175
|
+
async resolveChainAdapterIdForArtifacts(parsed) {
|
|
176
|
+
if (parsed.idKind === 'slug') {
|
|
177
|
+
const headPointId = await this.resolveAdapterAnchorPointId(parsed.id);
|
|
178
|
+
if (!headPointId)
|
|
179
|
+
throw new Error(`Adapter slug "${parsed.id}" was not found for artifact attachment`);
|
|
180
|
+
const row = await this.engine.retrieveRaw(headPointId);
|
|
181
|
+
const payload = row ? payloadOf(row) : {};
|
|
182
|
+
const adapterId = typeof payload?.adapter?.id === 'string' && payload.adapter.id.length > 0 ? payload.adapter.id : headPointId;
|
|
183
|
+
const adapterName = typeof payload?.adapter?.name === 'string' && payload.adapter.name.trim().length > 0
|
|
184
|
+
? payload.adapter.name.trim()
|
|
185
|
+
: await this.resolveAdapterNameByAdapterId(adapterId);
|
|
186
|
+
return { adapterId, adapterName };
|
|
187
|
+
}
|
|
188
|
+
const row = await this.engine.retrieveRaw(parsed.id);
|
|
189
|
+
const payload = row ? payloadOf(row) : {};
|
|
190
|
+
const nameFromRow = typeof payload?.adapter?.name === 'string' && payload.adapter.name.trim().length > 0 ? payload.adapter.name.trim() : null;
|
|
191
|
+
const idFromRow = typeof payload?.adapter?.id === 'string' && payload.adapter.id.length > 0 ? payload.adapter.id : null;
|
|
192
|
+
if (idFromRow) {
|
|
193
|
+
const adapterName = nameFromRow ?? (await this.resolveAdapterNameByAdapterId(idFromRow));
|
|
194
|
+
return { adapterId: idFromRow, adapterName };
|
|
195
|
+
}
|
|
196
|
+
const adapterName = nameFromRow ?? (await this.resolveAdapterNameByAdapterId(parsed.id));
|
|
197
|
+
return { adapterId: parsed.id, adapterName };
|
|
198
|
+
}
|
|
199
|
+
/** Existing artifact points for an adapter+space (for duplicate detection). */
|
|
200
|
+
async listExistingArtifactPoints(spaceId, adapterId) {
|
|
201
|
+
const filter = buildSpaceFilter(getSearchSpaceIds(), {
|
|
202
|
+
must: [
|
|
203
|
+
{ key: 'space_id', match: { value: spaceId } },
|
|
204
|
+
{ key: 'adapter.id', match: { value: adapterId } },
|
|
205
|
+
{ key: 'content_type', match: { any: [...ALLOWED_ARTIFACT_MIMES] } }
|
|
206
|
+
]
|
|
207
|
+
});
|
|
208
|
+
const rows = await this.engine.scroll(filter);
|
|
209
|
+
return rows.map((r) => ({ id: r.id, payload: payloadOf(r) }));
|
|
210
|
+
}
|
|
211
|
+
/** Re-export domain/task/type for the writer's per-memory metric loop. */
|
|
212
|
+
deriveDomainTaskType(label, text, tags) {
|
|
213
|
+
return deriveDomainTaskType(label, text, tags);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=lance-records-write-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lance-records-write-helpers.js","sourceRoot":"","sources":["../../../../src/services/vector-store/lancedb/lance-records-write-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Memory } from '../../../types/memory.js';
|
|
2
|
+
import type { StoreAdapterOptions, StoreArtifactOptions } from '../../memory/store-adapter.js';
|
|
3
|
+
import type { LanceRecordEngine } from './lance-records-engine.js';
|
|
4
|
+
import type { LanceRecordSearch } from './lance-records-search.js';
|
|
5
|
+
export declare class LanceRecordWriter {
|
|
6
|
+
private readonly engine;
|
|
7
|
+
private readonly repo;
|
|
8
|
+
private readonly codeBlockProcessor;
|
|
9
|
+
private readonly artifactWriter;
|
|
10
|
+
constructor(engine: LanceRecordEngine, search: LanceRecordSearch);
|
|
11
|
+
storeArtifact(content: string, options: StoreArtifactOptions): Promise<Memory[]>;
|
|
12
|
+
storeAdapter(docs: string[], llmModelId: string, options?: StoreAdapterOptions): Promise<Memory[]>;
|
|
13
|
+
private resolveAdapterTitle;
|
|
14
|
+
private embedActivation;
|
|
15
|
+
private vectorNames;
|
|
16
|
+
private storeHeaderBasedAdapter;
|
|
17
|
+
private storeDefaultAdapter;
|
|
18
|
+
private enginePut;
|
|
19
|
+
private recordContributions;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=lance-records-writes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lance-records-writes.d.ts","sourceRoot":"","sources":["../../../../src/services/vector-store/lancedb/lance-records-writes.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAkBvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAOnE,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;gBAGlC,MAAM,EAAE,iBAAiB,EAC1C,MAAM,EAAE,iBAAiB;IAM3B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA0D5G,OAAO,CAAC,mBAAmB;YAOb,eAAe;IA0B7B,OAAO,CAAC,WAAW;YAKL,uBAAuB;YAwEvB,mBAAmB;YAqGnB,SAAS;YAMT,mBAAmB;CAclC"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lance adapter write path (train/store).
|
|
3
|
+
*
|
|
4
|
+
* Reuses the backend-neutral parsing and build helpers the Qdrant handlers use —
|
|
5
|
+
* `normalizeMarkdownBlob`, `parseFrontmatter`, `buildHeaderMemoryAdapter`,
|
|
6
|
+
* `generateLabel`/`generateTags`/`parseMarkdownStructure`, `deriveDomainTaskType`,
|
|
7
|
+
* `modelStats`, `buildActivationSearchFieldsForMemory` and the batch embedding
|
|
8
|
+
* call with zero-vector fallback — and only swaps the index primitives (dedup,
|
|
9
|
+
* slug mint, similarity guard, upsert) for the Lance `LanceWriteRepo`. The point
|
|
10
|
+
* payload shape is reproduced verbatim from the header/default handlers so a
|
|
11
|
+
* Lance-trained adapter reads, searches and reward-propagates exactly like a
|
|
12
|
+
* Qdrant one. The header (H1/H2) vs default branch mirrors `storeAdapter`.
|
|
13
|
+
*/
|
|
14
|
+
import crypto from 'node:crypto';
|
|
15
|
+
import { logger } from '../../../utils/structured-logger.js';
|
|
16
|
+
import { CodeBlockProcessor } from '../../code-block-processor.js';
|
|
17
|
+
import { embeddingService } from '../../embedding/service.js';
|
|
18
|
+
import { getEmbeddingDimension } from '../../embedding/config.js';
|
|
19
|
+
import { bm25Tokenizer } from '../../embedding/bm25-tokenizer.js';
|
|
20
|
+
import { IDGenerator } from '../../id-generator.js';
|
|
21
|
+
import { modelStats } from '../../stats/model-stats.js';
|
|
22
|
+
import { redisCacheService } from '../../redis-cache.js';
|
|
23
|
+
import { memoryStore, memoryAdapterSize } from '../../metrics/memory-metrics.js';
|
|
24
|
+
import { getTenantId, getSpaceContext } from '../../../utils/tenant-context.js';
|
|
25
|
+
import { normalizeMarkdownBlob, generateLabel, generateTags, parseMarkdownStructure } from '../../../utils/memory-store-utils.js';
|
|
26
|
+
import { parseFrontmatter } from '../../../utils/frontmatter.js';
|
|
27
|
+
import { resolveProtocolSlugCandidate } from '../../../utils/protocol-slug.js';
|
|
28
|
+
import { SquadrulesError } from '../../../types/index.js';
|
|
29
|
+
import { getActivationPatternVectorName, getAdapterTitleVectorName, getPrimaryVectorName } from '../../../utils/qdrant-vector-types.js';
|
|
30
|
+
import { buildHeaderMemoryAdapter } from '../../memory/adapter-builder.js';
|
|
31
|
+
import { buildActivationSearchFieldsForMemory } from '../../memory/activation-search-fields.js';
|
|
32
|
+
import { LanceWriteRepo } from './lance-records-write-helpers.js';
|
|
33
|
+
import { LanceArtifactWriter } from './lance-records-write-artifact.js';
|
|
34
|
+
export class LanceRecordWriter {
|
|
35
|
+
engine;
|
|
36
|
+
repo;
|
|
37
|
+
codeBlockProcessor = new CodeBlockProcessor();
|
|
38
|
+
artifactWriter;
|
|
39
|
+
constructor(engine, search) {
|
|
40
|
+
this.engine = engine;
|
|
41
|
+
this.repo = new LanceWriteRepo(engine, search);
|
|
42
|
+
this.artifactWriter = new LanceArtifactWriter(engine, this.repo);
|
|
43
|
+
}
|
|
44
|
+
storeArtifact(content, options) {
|
|
45
|
+
return this.artifactWriter.storeArtifact(content, options);
|
|
46
|
+
}
|
|
47
|
+
async storeAdapter(docs, llmModelId, options = {}) {
|
|
48
|
+
if (!Array.isArray(docs) || docs.length === 0)
|
|
49
|
+
return [];
|
|
50
|
+
const normalizedDocs = docs.map(normalizeMarkdownBlob);
|
|
51
|
+
const now = new Date();
|
|
52
|
+
let docsForDefault = normalizedDocs;
|
|
53
|
+
let effectiveProtocolVersion = options.protocolVersion;
|
|
54
|
+
let parsedSingleDoc;
|
|
55
|
+
if (normalizedDocs.length === 1) {
|
|
56
|
+
const markdownDoc = normalizedDocs[0];
|
|
57
|
+
const parsed = parseFrontmatter(markdownDoc);
|
|
58
|
+
parsedSingleDoc = parsed;
|
|
59
|
+
const docForAdapter = parsed.body.length > 0 ? parsed.body : markdownDoc;
|
|
60
|
+
effectiveProtocolVersion = options.protocolVersion ?? parsed.version;
|
|
61
|
+
const headerMemories = buildHeaderMemoryAdapter(docForAdapter, llmModelId, now, this.codeBlockProcessor);
|
|
62
|
+
if (headerMemories.length > 0) {
|
|
63
|
+
if (effectiveProtocolVersion) {
|
|
64
|
+
for (const m of headerMemories)
|
|
65
|
+
if (m.adapter)
|
|
66
|
+
m.adapter.protocol_version = effectiveProtocolVersion;
|
|
67
|
+
}
|
|
68
|
+
if (parsedSingleDoc?.chainRoot) {
|
|
69
|
+
for (const m of headerMemories)
|
|
70
|
+
if (m.adapter)
|
|
71
|
+
m.adapter.chain_root = parsedSingleDoc.chainRoot;
|
|
72
|
+
}
|
|
73
|
+
const adapterTitle = this.resolveAdapterTitle(headerMemories[0]);
|
|
74
|
+
const slugCand = resolveProtocolSlugCandidate(parsedSingleDoc?.slugRaw !== undefined ? { slugRaw: parsedSingleDoc.slugRaw } : {}, adapterTitle);
|
|
75
|
+
if ('error' in slugCand)
|
|
76
|
+
throw new SquadrulesError(slugCand.message, 'INVALID_SLUG', 400, { message: slugCand.message });
|
|
77
|
+
const titleForSimilarity = (parsedSingleDoc?.title?.trim() || adapterTitle).slice(0, 120);
|
|
78
|
+
await this.repo.checkSimilarAdapterByTitle(titleForSimilarity, options.forceUpdate || false);
|
|
79
|
+
return this.storeHeaderBasedAdapter(headerMemories, llmModelId, options.forceUpdate || false, { slug: slugCand.slug, authorSupplied: slugCand.authorSupplied }, !!options.forkNewAdapter);
|
|
80
|
+
}
|
|
81
|
+
docsForDefault = [docForAdapter];
|
|
82
|
+
}
|
|
83
|
+
const doc0 = docsForDefault[0];
|
|
84
|
+
const struct0 = parseMarkdownStructure(doc0);
|
|
85
|
+
const titleForSimilarity = (parsedSingleDoc?.title?.trim() || struct0.h1 || generateLabel(doc0)).slice(0, 120);
|
|
86
|
+
await this.repo.checkSimilarAdapterByTitle(titleForSimilarity, options.forceUpdate || false);
|
|
87
|
+
return this.storeDefaultAdapter(docsForDefault, llmModelId, now, options.forceUpdate || false, effectiveProtocolVersion, parsedSingleDoc, !!options.forkNewAdapter);
|
|
88
|
+
}
|
|
89
|
+
resolveAdapterTitle(first) {
|
|
90
|
+
const firstLabel = first?.label || 'Knowledge Adapter';
|
|
91
|
+
const explicit = first?.adapter?.name;
|
|
92
|
+
if (explicit && explicit.trim().length > 0)
|
|
93
|
+
return explicit.trim();
|
|
94
|
+
return firstLabel.includes(':') ? firstLabel.split(':')[0].trim() : firstLabel.trim();
|
|
95
|
+
}
|
|
96
|
+
async embedActivation(memories) {
|
|
97
|
+
const vectorSize = getEmbeddingDimension();
|
|
98
|
+
const activationFields = memories.map((m) => buildActivationSearchFieldsForMemory(m));
|
|
99
|
+
const zeros = () => memories.map(() => Array(vectorSize).fill(0));
|
|
100
|
+
try {
|
|
101
|
+
const batch = await embeddingService.generateBatchEmbeddings(activationFields.flatMap((f) => [f.primaryDenseText, f.titleDenseText, f.activationPatternDenseText]));
|
|
102
|
+
const embeddings = batch.embeddings;
|
|
103
|
+
const wrongCount = embeddings.length !== memories.length * 3;
|
|
104
|
+
const wrongDim = embeddings.some((v) => !Array.isArray(v) || v.length !== vectorSize);
|
|
105
|
+
if (wrongCount || wrongDim) {
|
|
106
|
+
logger.warn(`[LanceStore] Embedding shape mismatch (count=${embeddings.length}/${memories.length * 3}); zero vectors`);
|
|
107
|
+
return { primary: zeros(), title: zeros(), activation: zeros() };
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
primary: memories.map((_, i) => embeddings[i * 3]),
|
|
111
|
+
title: memories.map((_, i) => embeddings[i * 3 + 1]),
|
|
112
|
+
activation: memories.map((_, i) => embeddings[i * 3 + 2])
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
logger.error('[LanceStore] Embedding generation failed; falling back to zero vectors', err);
|
|
117
|
+
return { primary: zeros(), title: zeros(), activation: zeros() };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
vectorNames() {
|
|
121
|
+
const size = getEmbeddingDimension();
|
|
122
|
+
return { primary: getPrimaryVectorName(size), title: getAdapterTitleVectorName(size), activation: getActivationPatternVectorName(size) };
|
|
123
|
+
}
|
|
124
|
+
async storeHeaderBasedAdapter(memories, llmModelId, forceUpdate, slugInput, forkNewAdapter) {
|
|
125
|
+
const adapterTitle = this.resolveAdapterTitle(memories[0]);
|
|
126
|
+
const adapterUuid = forkNewAdapter ? crypto.randomUUID() : IDGenerator.generateAdapterUUIDv5(adapterTitle);
|
|
127
|
+
await this.repo.handleDuplicateAdapter(adapterUuid, forceUpdate);
|
|
128
|
+
const protocolSlug = await this.repo.allocateAdapterSlugForMint(slugInput, adapterUuid);
|
|
129
|
+
const names = this.vectorNames();
|
|
130
|
+
const vectors = await this.embedActivation(memories);
|
|
131
|
+
const activationFields = memories.map((m) => buildActivationSearchFieldsForMemory(m));
|
|
132
|
+
const context = getSpaceContext();
|
|
133
|
+
const spaceId = context.defaultWriteSpaceId;
|
|
134
|
+
const actorId = context.userId || 'system';
|
|
135
|
+
const layerCount = memories.length;
|
|
136
|
+
const points = memories.map((memory, i) => {
|
|
137
|
+
const dtt = this.repo.deriveDomainTaskType(memory.label, memory.text, memory.tags || []);
|
|
138
|
+
const qualityMetadata = modelStats.calculateStepQualityMetadata(memory.label, 'general', dtt.task, dtt.type, memory.tags);
|
|
139
|
+
const fields = activationFields[i];
|
|
140
|
+
const sparse = bm25Tokenizer.tokenize(fields.sparseText);
|
|
141
|
+
const adapter = memory.adapter ?? { id: adapterUuid, name: adapterTitle, layer_index: i + 1, layer_count: layerCount };
|
|
142
|
+
return {
|
|
143
|
+
id: memory.memory_uuid,
|
|
144
|
+
vector: {
|
|
145
|
+
[names.primary]: vectors.primary[i],
|
|
146
|
+
[names.title]: vectors.title[i],
|
|
147
|
+
[names.activation]: vectors.activation[i],
|
|
148
|
+
bm25: { indices: sparse.indices, values: sparse.values }
|
|
149
|
+
},
|
|
150
|
+
payload: {
|
|
151
|
+
space_id: spaceId,
|
|
152
|
+
label: memory.label,
|
|
153
|
+
tags: memory.tags,
|
|
154
|
+
text: memory.text,
|
|
155
|
+
llm_model_id: memory.llm_model_id,
|
|
156
|
+
created_at: memory.created_at,
|
|
157
|
+
created_by: actorId,
|
|
158
|
+
modified_at: memory.created_at,
|
|
159
|
+
modified_by: actorId,
|
|
160
|
+
adapter_name_text: fields.adapterNameText,
|
|
161
|
+
label_text: fields.labelText,
|
|
162
|
+
activation_patterns_text: fields.activationPatternsText,
|
|
163
|
+
tags_text: fields.tagsText,
|
|
164
|
+
inference_contract: memory.inference_contract,
|
|
165
|
+
task: dtt.task,
|
|
166
|
+
type: dtt.type,
|
|
167
|
+
quality_metadata: { step_quality_score: qualityMetadata.step_quality_score, step_quality: qualityMetadata.step_quality },
|
|
168
|
+
adapter: {
|
|
169
|
+
id: adapterUuid,
|
|
170
|
+
name: adapterTitle,
|
|
171
|
+
layer_index: i + 1,
|
|
172
|
+
layer_count: layerCount,
|
|
173
|
+
...(adapter.protocol_version && { protocol_version: adapter.protocol_version }),
|
|
174
|
+
...(adapter.activation_patterns && { activation_patterns: adapter.activation_patterns }),
|
|
175
|
+
...(typeof adapter.reward_signal === 'string' && { reward_signal: adapter.reward_signal }),
|
|
176
|
+
...(typeof adapter.chain_root === 'string' && adapter.chain_root.length > 0 && { chain_root: adapter.chain_root })
|
|
177
|
+
},
|
|
178
|
+
slug: protocolSlug
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
});
|
|
182
|
+
await this.enginePut(points);
|
|
183
|
+
await this.recordContributions(memories);
|
|
184
|
+
return memories;
|
|
185
|
+
}
|
|
186
|
+
async storeDefaultAdapter(normalizedDocs, llmModelId, now, forceUpdate, protocolVersion, parsedFrontmatter, forkNewAdapter) {
|
|
187
|
+
const uuids = normalizedDocs.map(() => crypto.randomUUID());
|
|
188
|
+
const processedDocs = normalizedDocs.map((text) => {
|
|
189
|
+
const codeResult = this.codeBlockProcessor.processMarkdown(text);
|
|
190
|
+
const enhanced = this.codeBlockProcessor.enhanceContentForSearch(text, codeResult);
|
|
191
|
+
return { original: text, enhanced, codeResult };
|
|
192
|
+
});
|
|
193
|
+
if (processedDocs.length === 0)
|
|
194
|
+
return [];
|
|
195
|
+
const firstGeneratedLabel = generateLabel(processedDocs[0].original);
|
|
196
|
+
const adapterUuid = forkNewAdapter ? crypto.randomUUID() : IDGenerator.generateAdapterUUIDv5(firstGeneratedLabel);
|
|
197
|
+
await this.repo.handleDuplicateAdapter(adapterUuid, forceUpdate);
|
|
198
|
+
const slugCand = resolveProtocolSlugCandidate(parsedFrontmatter?.slugRaw !== undefined ? { slugRaw: parsedFrontmatter.slugRaw } : {}, firstGeneratedLabel);
|
|
199
|
+
if ('error' in slugCand)
|
|
200
|
+
throw new SquadrulesError(slugCand.message, 'INVALID_SLUG', 400, { message: slugCand.message });
|
|
201
|
+
const protocolSlug = await this.repo.allocateAdapterSlugForMint({ slug: slugCand.slug, authorSupplied: slugCand.authorSupplied }, adapterUuid);
|
|
202
|
+
const memories = processedDocs.map((processed, index) => {
|
|
203
|
+
const allTags = [...generateTags(processed.original), ...processed.codeResult.allIdentifiers.slice(0, 5)];
|
|
204
|
+
const adapter = { id: adapterUuid, name: firstGeneratedLabel, layer_index: index + 1, layer_count: normalizedDocs.length };
|
|
205
|
+
if (protocolVersion)
|
|
206
|
+
adapter.protocol_version = protocolVersion;
|
|
207
|
+
return {
|
|
208
|
+
memory_uuid: uuids[index],
|
|
209
|
+
label: generateLabel(processed.original),
|
|
210
|
+
tags: allTags,
|
|
211
|
+
text: processed.enhanced,
|
|
212
|
+
llm_model_id: llmModelId,
|
|
213
|
+
created_at: now.toISOString(),
|
|
214
|
+
adapter
|
|
215
|
+
};
|
|
216
|
+
});
|
|
217
|
+
const names = this.vectorNames();
|
|
218
|
+
const vectors = await this.embedActivation(memories);
|
|
219
|
+
const activationFields = memories.map((m) => buildActivationSearchFieldsForMemory(m));
|
|
220
|
+
const context = getSpaceContext();
|
|
221
|
+
const spaceId = context.defaultWriteSpaceId;
|
|
222
|
+
const actorId = context.userId || 'system';
|
|
223
|
+
const points = memories.map((memory, index) => {
|
|
224
|
+
const { task, type } = this.repo.deriveDomainTaskType(memory.label, memory.text, memory.tags || []);
|
|
225
|
+
const qualityMetadata = modelStats.calculateStepQualityMetadata(memory.label, 'general', task, type, memory.tags);
|
|
226
|
+
const fields = activationFields[index];
|
|
227
|
+
const sparse = bm25Tokenizer.tokenize(fields.sparseText);
|
|
228
|
+
const adapter = memory.adapter ?? { id: adapterUuid, name: firstGeneratedLabel, layer_index: index + 1, layer_count: normalizedDocs.length };
|
|
229
|
+
return {
|
|
230
|
+
id: memory.memory_uuid,
|
|
231
|
+
vector: {
|
|
232
|
+
[names.primary]: vectors.primary[index],
|
|
233
|
+
[names.title]: vectors.title[index],
|
|
234
|
+
[names.activation]: vectors.activation[index],
|
|
235
|
+
bm25: { indices: sparse.indices, values: sparse.values }
|
|
236
|
+
},
|
|
237
|
+
payload: {
|
|
238
|
+
space_id: spaceId,
|
|
239
|
+
label: memory.label,
|
|
240
|
+
tags: memory.tags,
|
|
241
|
+
text: memory.text,
|
|
242
|
+
llm_model_id: memory.llm_model_id,
|
|
243
|
+
created_at: memory.created_at,
|
|
244
|
+
created_by: actorId,
|
|
245
|
+
modified_at: memory.created_at,
|
|
246
|
+
modified_by: actorId,
|
|
247
|
+
slug: protocolSlug,
|
|
248
|
+
adapter_name_text: fields.adapterNameText,
|
|
249
|
+
label_text: fields.labelText,
|
|
250
|
+
activation_patterns_text: fields.activationPatternsText,
|
|
251
|
+
tags_text: fields.tagsText,
|
|
252
|
+
inference_contract: memory.inference_contract,
|
|
253
|
+
task,
|
|
254
|
+
type,
|
|
255
|
+
quality_metadata: { step_quality_score: qualityMetadata.step_quality_score, step_quality: qualityMetadata.step_quality },
|
|
256
|
+
adapter: {
|
|
257
|
+
id: adapter.id,
|
|
258
|
+
name: adapter.name,
|
|
259
|
+
layer_index: adapter.layer_index,
|
|
260
|
+
layer_count: adapter.layer_count,
|
|
261
|
+
...(adapter.protocol_version && { protocol_version: adapter.protocol_version }),
|
|
262
|
+
...(adapter.activation_patterns && { activation_patterns: adapter.activation_patterns }),
|
|
263
|
+
...(typeof adapter.reward_signal === 'string' && { reward_signal: adapter.reward_signal })
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
});
|
|
268
|
+
await this.enginePut(points);
|
|
269
|
+
await this.recordContributions(memories);
|
|
270
|
+
return memories;
|
|
271
|
+
}
|
|
272
|
+
async enginePut(points) {
|
|
273
|
+
const count = await this.engine.putPoints(points);
|
|
274
|
+
logger.tool('lance-store', 'upsert', `points=${count}`);
|
|
275
|
+
await redisCacheService.invalidateAfterUpdate();
|
|
276
|
+
}
|
|
277
|
+
async recordContributions(memories) {
|
|
278
|
+
const tenantId = getTenantId();
|
|
279
|
+
for (const memory of memories) {
|
|
280
|
+
try {
|
|
281
|
+
const { task, type } = this.repo.deriveDomainTaskType(memory.label, memory.text, memory.tags || []);
|
|
282
|
+
const score = modelStats.calculateQualityScore(memory.label, task, type, memory.tags);
|
|
283
|
+
await modelStats.processContribution(memory.llm_model_id, score, memory.label);
|
|
284
|
+
memoryStore.inc({ quality: score.quality, tenant_id: tenantId });
|
|
285
|
+
if (memory.adapter)
|
|
286
|
+
memoryAdapterSize.observe({ tenant_id: tenantId }, memory.adapter.layer_count);
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
/* metrics are best-effort */
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=lance-records-writes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lance-records-writes.js","sourceRoot":"","sources":["../../../../src/services/vector-store/lancedb/lance-records-writes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type LanceDbModule = typeof import('@lancedb/lancedb');
|
|
2
|
+
export type LanceConnection = Awaited<ReturnType<LanceDbModule['connect']>>;
|
|
3
|
+
export type LanceTable = Awaited<ReturnType<LanceConnection['openTable']>>;
|
|
4
|
+
/** Resolve the per-user LanceDB directory (derived from the shared config dir). */
|
|
5
|
+
export declare function resolveLanceDbDir(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Open a strong-consistency connection to the embedded store. Reads see other
|
|
8
|
+
* processes' commits; the directory is created on demand by the SDK.
|
|
9
|
+
*/
|
|
10
|
+
export declare function openLanceConnection(databaseDir?: string): Promise<LanceConnection>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=lancedb-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lancedb-connection.d.ts","sourceRoot":"","sources":["../../../src/services/vector-store/lancedb-connection.ts"],"names":[],"mappings":"AAgBA,KAAK,aAAa,GAAG,cAAc,kBAAkB,CAAC,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAE3E,mFAAmF;AACnF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,GAAE,MAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAG7G"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strong-consistency connection for the embedded LanceDB store.
|
|
3
|
+
*
|
|
4
|
+
* Each server process opens the shared per-user directory directly (no daemon,
|
|
5
|
+
* no lock). The one property a Qdrant server used to give implicitly - a reader
|
|
6
|
+
* seeing another process's latest commits - must be requested explicitly here:
|
|
7
|
+
* `readConsistencyInterval: 0` makes every read check the latest committed
|
|
8
|
+
* version. Writes are always consistent under MVCC.
|
|
9
|
+
*
|
|
10
|
+
* The SDK is imported lazily inside these functions so that merely loading this
|
|
11
|
+
* module (for example on the Qdrant path, where it is never called) does not
|
|
12
|
+
* pull in native bindings at startup.
|
|
13
|
+
*/
|
|
14
|
+
import { join } from 'path';
|
|
15
|
+
import { getSquadrulesConfigDir } from '../../utils/squadrules-user-dirs.js';
|
|
16
|
+
/** Resolve the per-user LanceDB directory (derived from the shared config dir). */
|
|
17
|
+
export function resolveLanceDbDir() {
|
|
18
|
+
return join(getSquadrulesConfigDir(), 'lancedb');
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Open a strong-consistency connection to the embedded store. Reads see other
|
|
22
|
+
* processes' commits; the directory is created on demand by the SDK.
|
|
23
|
+
*/
|
|
24
|
+
export async function openLanceConnection(databaseDir = resolveLanceDbDir()) {
|
|
25
|
+
const lancedb = await import('@lancedb/lancedb');
|
|
26
|
+
return lancedb.connect(databaseDir, { readConsistencyInterval: 0 });
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=lancedb-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lancedb-connection.js","sourceRoot":"","sources":["../../../src/services/vector-store/lancedb-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAM7E,mFAAmF;AACnF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,cAAsB,iBAAiB,EAAE;IACjF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC"}
|