@debian777/kairos-mcp 3.0.1-beta.14
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/LICENSE +22 -0
- package/README.md +108 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli/api-client.d.ts +31 -0
- package/dist/cli/api-client.d.ts.map +1 -0
- package/dist/cli/api-client.js +110 -0
- package/dist/cli/api-client.js.map +1 -0
- package/dist/cli/commands/attest.d.ts +6 -0
- package/dist/cli/commands/attest.d.ts.map +1 -0
- package/dist/cli/commands/attest.js +52 -0
- package/dist/cli/commands/attest.js.map +1 -0
- package/dist/cli/commands/begin.d.ts +6 -0
- package/dist/cli/commands/begin.d.ts.map +1 -0
- package/dist/cli/commands/begin.js +32 -0
- package/dist/cli/commands/begin.js.map +1 -0
- package/dist/cli/commands/delete.d.ts +6 -0
- package/dist/cli/commands/delete.d.ts.map +1 -0
- package/dist/cli/commands/delete.js +32 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/mint.d.ts +6 -0
- package/dist/cli/commands/mint.d.ts.map +1 -0
- package/dist/cli/commands/mint.js +48 -0
- package/dist/cli/commands/mint.js.map +1 -0
- package/dist/cli/commands/next.d.ts +6 -0
- package/dist/cli/commands/next.d.ts.map +1 -0
- package/dist/cli/commands/next.js +89 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/search.d.ts +6 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +32 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/update.d.ts +6 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +72 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/config.d.ts +9 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +14 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +10 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +20 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/config.d.ts +58 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +165 -0
- package/dist/config.js.map +1 -0
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002001.md +324 -0
- package/dist/embed-docs/mem/00000000-0000-0000-0000-000000002002.md +48 -0
- package/dist/http/bearer-validate.d.ts +14 -0
- package/dist/http/bearer-validate.d.ts.map +1 -0
- package/dist/http/bearer-validate.js +111 -0
- package/dist/http/bearer-validate.js.map +1 -0
- package/dist/http/http-api-attest.d.ts +7 -0
- package/dist/http/http-api-attest.d.ts.map +1 -0
- package/dist/http/http-api-attest.js +103 -0
- package/dist/http/http-api-attest.js.map +1 -0
- package/dist/http/http-api-begin-step.d.ts +8 -0
- package/dist/http/http-api-begin-step.d.ts.map +1 -0
- package/dist/http/http-api-begin-step.js +108 -0
- package/dist/http/http-api-begin-step.js.map +1 -0
- package/dist/http/http-api-begin.d.ts +8 -0
- package/dist/http/http-api-begin.d.ts.map +1 -0
- package/dist/http/http-api-begin.js +167 -0
- package/dist/http/http-api-begin.js.map +1 -0
- package/dist/http/http-api-delete.d.ts +9 -0
- package/dist/http/http-api-delete.d.ts.map +1 -0
- package/dist/http/http-api-delete.js +67 -0
- package/dist/http/http-api-delete.js.map +1 -0
- package/dist/http/http-api-dump.d.ts +8 -0
- package/dist/http/http-api-dump.d.ts.map +1 -0
- package/dist/http/http-api-dump.js +34 -0
- package/dist/http/http-api-dump.js.map +1 -0
- package/dist/http/http-api-mint.d.ts +9 -0
- package/dist/http/http-api-mint.d.ts.map +1 -0
- package/dist/http/http-api-mint.js +100 -0
- package/dist/http/http-api-mint.js.map +1 -0
- package/dist/http/http-api-next.d.ts +9 -0
- package/dist/http/http-api-next.d.ts.map +1 -0
- package/dist/http/http-api-next.js +237 -0
- package/dist/http/http-api-next.js.map +1 -0
- package/dist/http/http-api-routes.d.ts +13 -0
- package/dist/http/http-api-routes.d.ts.map +1 -0
- package/dist/http/http-api-routes.js +28 -0
- package/dist/http/http-api-routes.js.map +1 -0
- package/dist/http/http-api-snapshot.d.ts +4 -0
- package/dist/http/http-api-snapshot.d.ts.map +1 -0
- package/dist/http/http-api-snapshot.js +36 -0
- package/dist/http/http-api-snapshot.js.map +1 -0
- package/dist/http/http-api-update.d.ts +9 -0
- package/dist/http/http-api-update.d.ts.map +1 -0
- package/dist/http/http-api-update.js +105 -0
- package/dist/http/http-api-update.js.map +1 -0
- package/dist/http/http-auth-callback.d.ts +6 -0
- package/dist/http/http-auth-callback.d.ts.map +1 -0
- package/dist/http/http-auth-callback.js +183 -0
- package/dist/http/http-auth-callback.js.map +1 -0
- package/dist/http/http-auth-middleware.d.ts +30 -0
- package/dist/http/http-auth-middleware.d.ts.map +1 -0
- package/dist/http/http-auth-middleware.js +224 -0
- package/dist/http/http-auth-middleware.js.map +1 -0
- package/dist/http/http-error-handlers.d.ts +7 -0
- package/dist/http/http-error-handlers.d.ts.map +1 -0
- package/dist/http/http-error-handlers.js +35 -0
- package/dist/http/http-error-handlers.js.map +1 -0
- package/dist/http/http-health-routes.d.ts +9 -0
- package/dist/http/http-health-routes.d.ts.map +1 -0
- package/dist/http/http-health-routes.js +117 -0
- package/dist/http/http-health-routes.js.map +1 -0
- package/dist/http/http-mcp-handler.d.ts +8 -0
- package/dist/http/http-mcp-handler.d.ts.map +1 -0
- package/dist/http/http-mcp-handler.js +136 -0
- package/dist/http/http-mcp-handler.js.map +1 -0
- package/dist/http/http-metrics-middleware.d.ts +7 -0
- package/dist/http/http-metrics-middleware.d.ts.map +1 -0
- package/dist/http/http-metrics-middleware.js +56 -0
- package/dist/http/http-metrics-middleware.js.map +1 -0
- package/dist/http/http-server-config.d.ts +11 -0
- package/dist/http/http-server-config.d.ts.map +1 -0
- package/dist/http/http-server-config.js +15 -0
- package/dist/http/http-server-config.js.map +1 -0
- package/dist/http/http-server-startup.d.ts +9 -0
- package/dist/http/http-server-startup.d.ts.map +1 -0
- package/dist/http/http-server-startup.js +26 -0
- package/dist/http/http-server-startup.js.map +1 -0
- package/dist/http/http-server.d.ts +4 -0
- package/dist/http/http-server.d.ts.map +1 -0
- package/dist/http/http-server.js +39 -0
- package/dist/http/http-server.js.map +1 -0
- package/dist/http/http-well-known.d.ts +13 -0
- package/dist/http/http-well-known.d.ts.map +1 -0
- package/dist/http/http-well-known.js +32 -0
- package/dist/http/http-well-known.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/metrics-server.d.ts +14 -0
- package/dist/metrics-server.d.ts.map +1 -0
- package/dist/metrics-server.js +41 -0
- package/dist/metrics-server.js.map +1 -0
- package/dist/resources/docs-resources.d.ts +2 -0
- package/dist/resources/docs-resources.d.ts.map +1 -0
- package/dist/resources/docs-resources.js +47 -0
- package/dist/resources/docs-resources.js.map +1 -0
- package/dist/resources/embedded-mcp-resources.d.ts +73 -0
- package/dist/resources/embedded-mcp-resources.d.ts.map +1 -0
- package/dist/resources/embedded-mcp-resources.js +132 -0
- package/dist/resources/embedded-mcp-resources.js.map +1 -0
- package/dist/resources/mem-resources-boot.d.ts +10 -0
- package/dist/resources/mem-resources-boot.d.ts.map +1 -0
- package/dist/resources/mem-resources-boot.js +164 -0
- package/dist/resources/mem-resources-boot.js.map +1 -0
- package/dist/resources/prompt-resources.d.ts +5 -0
- package/dist/resources/prompt-resources.d.ts.map +1 -0
- package/dist/resources/prompt-resources.js +42 -0
- package/dist/resources/prompt-resources.js.map +1 -0
- package/dist/resources/resource-bootstrap.d.ts +7 -0
- package/dist/resources/resource-bootstrap.d.ts.map +1 -0
- package/dist/resources/resource-bootstrap.js +33 -0
- package/dist/resources/resource-bootstrap.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +79 -0
- package/dist/server.js.map +1 -0
- package/dist/services/chain-utils.d.ts +22 -0
- package/dist/services/chain-utils.d.ts.map +1 -0
- package/dist/services/chain-utils.js +95 -0
- package/dist/services/chain-utils.js.map +1 -0
- package/dist/services/code-block-processor.d.ts +40 -0
- package/dist/services/code-block-processor.d.ts.map +1 -0
- package/dist/services/code-block-processor.js +169 -0
- package/dist/services/code-block-processor.js.map +1 -0
- package/dist/services/embedding/config.d.ts +5 -0
- package/dist/services/embedding/config.d.ts.map +1 -0
- package/dist/services/embedding/config.js +13 -0
- package/dist/services/embedding/config.js.map +1 -0
- package/dist/services/embedding/providers.d.ts +5 -0
- package/dist/services/embedding/providers.d.ts.map +1 -0
- package/dist/services/embedding/providers.js +141 -0
- package/dist/services/embedding/providers.js.map +1 -0
- package/dist/services/embedding/service.d.ts +39 -0
- package/dist/services/embedding/service.d.ts.map +1 -0
- package/dist/services/embedding/service.js +302 -0
- package/dist/services/embedding/service.js.map +1 -0
- package/dist/services/embedding/types.d.ts +17 -0
- package/dist/services/embedding/types.d.ts.map +1 -0
- package/dist/services/embedding/types.js +2 -0
- package/dist/services/embedding/types.js.map +1 -0
- package/dist/services/id-generator.d.ts +63 -0
- package/dist/services/id-generator.d.ts.map +1 -0
- package/dist/services/id-generator.js +101 -0
- package/dist/services/id-generator.js.map +1 -0
- package/dist/services/key-value-store-factory.d.ts +7 -0
- package/dist/services/key-value-store-factory.d.ts.map +1 -0
- package/dist/services/key-value-store-factory.js +15 -0
- package/dist/services/key-value-store-factory.js.map +1 -0
- package/dist/services/key-value-store.d.ts +24 -0
- package/dist/services/key-value-store.d.ts.map +1 -0
- package/dist/services/key-value-store.js +6 -0
- package/dist/services/key-value-store.js.map +1 -0
- package/dist/services/memory/chain-builder-proof.d.ts +18 -0
- package/dist/services/memory/chain-builder-proof.d.ts.map +1 -0
- package/dist/services/memory/chain-builder-proof.js +78 -0
- package/dist/services/memory/chain-builder-proof.js.map +1 -0
- package/dist/services/memory/chain-builder.d.ts +4 -0
- package/dist/services/memory/chain-builder.d.ts.map +1 -0
- package/dist/services/memory/chain-builder.js +185 -0
- package/dist/services/memory/chain-builder.js.map +1 -0
- package/dist/services/memory/store-chain-default-handler.d.ts +9 -0
- package/dist/services/memory/store-chain-default-handler.d.ts.map +1 -0
- package/dist/services/memory/store-chain-default-handler.js +118 -0
- package/dist/services/memory/store-chain-default-handler.js.map +1 -0
- package/dist/services/memory/store-chain-header-handler.d.ts +8 -0
- package/dist/services/memory/store-chain-header-handler.d.ts.map +1 -0
- package/dist/services/memory/store-chain-header-handler.js +98 -0
- package/dist/services/memory/store-chain-header-handler.js.map +1 -0
- package/dist/services/memory/store-chain-helpers.d.ts +27 -0
- package/dist/services/memory/store-chain-helpers.d.ts.map +1 -0
- package/dist/services/memory/store-chain-helpers.js +102 -0
- package/dist/services/memory/store-chain-helpers.js.map +1 -0
- package/dist/services/memory/store-chain.d.ts +15 -0
- package/dist/services/memory/store-chain.d.ts.map +1 -0
- package/dist/services/memory/store-chain.js +56 -0
- package/dist/services/memory/store-chain.js.map +1 -0
- package/dist/services/memory/store-init.d.ts +3 -0
- package/dist/services/memory/store-init.d.ts.map +1 -0
- package/dist/services/memory/store-init.js +127 -0
- package/dist/services/memory/store-init.js.map +1 -0
- package/dist/services/memory/store-methods.d.ts +35 -0
- package/dist/services/memory/store-methods.d.ts.map +1 -0
- package/dist/services/memory/store-methods.js +308 -0
- package/dist/services/memory/store-methods.js.map +1 -0
- package/dist/services/memory/store.d.ts +36 -0
- package/dist/services/memory/store.d.ts.map +1 -0
- package/dist/services/memory/store.js +119 -0
- package/dist/services/memory/store.js.map +1 -0
- package/dist/services/memory-store.d.ts +33 -0
- package/dist/services/memory-store.d.ts.map +1 -0
- package/dist/services/memory-store.js +158 -0
- package/dist/services/memory-store.js.map +1 -0
- package/dist/services/metrics/agent-metrics.d.ts +12 -0
- package/dist/services/metrics/agent-metrics.d.ts.map +1 -0
- package/dist/services/metrics/agent-metrics.js +34 -0
- package/dist/services/metrics/agent-metrics.js.map +1 -0
- package/dist/services/metrics/embedding-metrics.d.ts +12 -0
- package/dist/services/metrics/embedding-metrics.d.ts.map +1 -0
- package/dist/services/metrics/embedding-metrics.js +41 -0
- package/dist/services/metrics/embedding-metrics.js.map +1 -0
- package/dist/services/metrics/http-metrics.d.ts +12 -0
- package/dist/services/metrics/http-metrics.d.ts.map +1 -0
- package/dist/services/metrics/http-metrics.js +41 -0
- package/dist/services/metrics/http-metrics.js.map +1 -0
- package/dist/services/metrics/mcp-metrics.d.ts +16 -0
- package/dist/services/metrics/mcp-metrics.d.ts.map +1 -0
- package/dist/services/metrics/mcp-metrics.js +55 -0
- package/dist/services/metrics/mcp-metrics.js.map +1 -0
- package/dist/services/metrics/memory-metrics.d.ts +10 -0
- package/dist/services/metrics/memory-metrics.d.ts.map +1 -0
- package/dist/services/metrics/memory-metrics.js +28 -0
- package/dist/services/metrics/memory-metrics.js.map +1 -0
- package/dist/services/metrics/qdrant-metrics.d.ts +11 -0
- package/dist/services/metrics/qdrant-metrics.d.ts.map +1 -0
- package/dist/services/metrics/qdrant-metrics.js +35 -0
- package/dist/services/metrics/qdrant-metrics.js.map +1 -0
- package/dist/services/metrics/registry.d.ts +9 -0
- package/dist/services/metrics/registry.d.ts.map +1 -0
- package/dist/services/metrics/registry.js +19 -0
- package/dist/services/metrics/registry.js.map +1 -0
- package/dist/services/metrics/system-metrics.d.ts +10 -0
- package/dist/services/metrics/system-metrics.d.ts.map +1 -0
- package/dist/services/metrics/system-metrics.js +35 -0
- package/dist/services/metrics/system-metrics.js.map +1 -0
- package/dist/services/proof-of-work-store.d.ts +66 -0
- package/dist/services/proof-of-work-store.d.ts.map +1 -0
- package/dist/services/proof-of-work-store.js +141 -0
- package/dist/services/proof-of-work-store.js.map +1 -0
- package/dist/services/qdrant/connection.d.ts +24 -0
- package/dist/services/qdrant/connection.d.ts.map +1 -0
- package/dist/services/qdrant/connection.js +126 -0
- package/dist/services/qdrant/connection.js.map +1 -0
- package/dist/services/qdrant/index.d.ts +3 -0
- package/dist/services/qdrant/index.d.ts.map +1 -0
- package/dist/services/qdrant/index.js +4 -0
- package/dist/services/qdrant/index.js.map +1 -0
- package/dist/services/qdrant/initialization.d.ts +25 -0
- package/dist/services/qdrant/initialization.d.ts.map +1 -0
- package/dist/services/qdrant/initialization.js +170 -0
- package/dist/services/qdrant/initialization.js.map +1 -0
- package/dist/services/qdrant/listing.d.ts +26 -0
- package/dist/services/qdrant/listing.d.ts.map +1 -0
- package/dist/services/qdrant/listing.js +88 -0
- package/dist/services/qdrant/listing.js.map +1 -0
- package/dist/services/qdrant/memory-retrieval.d.ts +14 -0
- package/dist/services/qdrant/memory-retrieval.d.ts.map +1 -0
- package/dist/services/qdrant/memory-retrieval.js +110 -0
- package/dist/services/qdrant/memory-retrieval.js.map +1 -0
- package/dist/services/qdrant/memory-store.d.ts +16 -0
- package/dist/services/qdrant/memory-store.d.ts.map +1 -0
- package/dist/services/qdrant/memory-store.js +108 -0
- package/dist/services/qdrant/memory-store.js.map +1 -0
- package/dist/services/qdrant/memory-updates.d.ts +8 -0
- package/dist/services/qdrant/memory-updates.d.ts.map +1 -0
- package/dist/services/qdrant/memory-updates.js +206 -0
- package/dist/services/qdrant/memory-updates.js.map +1 -0
- package/dist/services/qdrant/protocol.d.ts +16 -0
- package/dist/services/qdrant/protocol.d.ts.map +1 -0
- package/dist/services/qdrant/protocol.js +48 -0
- package/dist/services/qdrant/protocol.js.map +1 -0
- package/dist/services/qdrant/quality.d.ts +14 -0
- package/dist/services/qdrant/quality.d.ts.map +1 -0
- package/dist/services/qdrant/quality.js +101 -0
- package/dist/services/qdrant/quality.js.map +1 -0
- package/dist/services/qdrant/resources.d.ts +7 -0
- package/dist/services/qdrant/resources.d.ts.map +1 -0
- package/dist/services/qdrant/resources.js +108 -0
- package/dist/services/qdrant/resources.js.map +1 -0
- package/dist/services/qdrant/search.d.ts +22 -0
- package/dist/services/qdrant/search.d.ts.map +1 -0
- package/dist/services/qdrant/search.js +75 -0
- package/dist/services/qdrant/search.js.map +1 -0
- package/dist/services/qdrant/service.d.ts +90 -0
- package/dist/services/qdrant/service.d.ts.map +1 -0
- package/dist/services/qdrant/service.js +95 -0
- package/dist/services/qdrant/service.js.map +1 -0
- package/dist/services/qdrant/snapshots.d.ts +19 -0
- package/dist/services/qdrant/snapshots.d.ts.map +1 -0
- package/dist/services/qdrant/snapshots.js +130 -0
- package/dist/services/qdrant/snapshots.js.map +1 -0
- package/dist/services/qdrant/types.d.ts +39 -0
- package/dist/services/qdrant/types.d.ts.map +1 -0
- package/dist/services/qdrant/types.js +2 -0
- package/dist/services/qdrant/types.js.map +1 -0
- package/dist/services/qdrant/utils.d.ts +20 -0
- package/dist/services/qdrant/utils.d.ts.map +1 -0
- package/dist/services/qdrant/utils.js +121 -0
- package/dist/services/qdrant/utils.js.map +1 -0
- package/dist/services/redis-cache.d.ts +43 -0
- package/dist/services/redis-cache.d.ts.map +1 -0
- package/dist/services/redis-cache.js +214 -0
- package/dist/services/redis-cache.js.map +1 -0
- package/dist/services/redis.d.ts +43 -0
- package/dist/services/redis.d.ts.map +1 -0
- package/dist/services/redis.js +234 -0
- package/dist/services/redis.js.map +1 -0
- package/dist/services/stats/bonuses.d.ts +28 -0
- package/dist/services/stats/bonuses.d.ts.map +1 -0
- package/dist/services/stats/bonuses.js +96 -0
- package/dist/services/stats/bonuses.js.map +1 -0
- package/dist/services/stats/healer.d.ts +6 -0
- package/dist/services/stats/healer.d.ts.map +1 -0
- package/dist/services/stats/healer.js +24 -0
- package/dist/services/stats/healer.js.map +1 -0
- package/dist/services/stats/model-stats.d.ts +53 -0
- package/dist/services/stats/model-stats.d.ts.map +1 -0
- package/dist/services/stats/model-stats.js +238 -0
- package/dist/services/stats/model-stats.js.map +1 -0
- package/dist/services/stats/protocol.d.ts +11 -0
- package/dist/services/stats/protocol.d.ts.map +1 -0
- package/dist/services/stats/protocol.js +55 -0
- package/dist/services/stats/protocol.js.map +1 -0
- package/dist/services/stats/scoring.d.ts +19 -0
- package/dist/services/stats/scoring.d.ts.map +1 -0
- package/dist/services/stats/scoring.js +102 -0
- package/dist/services/stats/scoring.js.map +1 -0
- package/dist/services/stats/types.d.ts +39 -0
- package/dist/services/stats/types.d.ts.map +1 -0
- package/dist/services/stats/types.js +8 -0
- package/dist/services/stats/types.js.map +1 -0
- package/dist/tools/kairos_attest.d.ts +7 -0
- package/dist/tools/kairos_attest.d.ts.map +1 -0
- package/dist/tools/kairos_attest.js +179 -0
- package/dist/tools/kairos_attest.js.map +1 -0
- package/dist/tools/kairos_begin.d.ts +9 -0
- package/dist/tools/kairos_begin.d.ts.map +1 -0
- package/dist/tools/kairos_begin.js +149 -0
- package/dist/tools/kairos_begin.js.map +1 -0
- package/dist/tools/kairos_begin_schema.d.ts +48 -0
- package/dist/tools/kairos_begin_schema.d.ts.map +1 -0
- package/dist/tools/kairos_begin_schema.js +48 -0
- package/dist/tools/kairos_begin_schema.js.map +1 -0
- package/dist/tools/kairos_delete.d.ts +2 -0
- package/dist/tools/kairos_delete.d.ts.map +1 -0
- package/dist/tools/kairos_delete.js +113 -0
- package/dist/tools/kairos_delete.js.map +1 -0
- package/dist/tools/kairos_dump.d.ts +14 -0
- package/dist/tools/kairos_dump.d.ts.map +1 -0
- package/dist/tools/kairos_dump.js +148 -0
- package/dist/tools/kairos_dump.js.map +1 -0
- package/dist/tools/kairos_mint.d.ts +7 -0
- package/dist/tools/kairos_mint.d.ts.map +1 -0
- package/dist/tools/kairos_mint.js +233 -0
- package/dist/tools/kairos_mint.js.map +1 -0
- package/dist/tools/kairos_next-missing-proof-payload.d.ts +24 -0
- package/dist/tools/kairos_next-missing-proof-payload.d.ts.map +1 -0
- package/dist/tools/kairos_next-missing-proof-payload.js +32 -0
- package/dist/tools/kairos_next-missing-proof-payload.js.map +1 -0
- package/dist/tools/kairos_next-pow-helpers.d.ts +57 -0
- package/dist/tools/kairos_next-pow-helpers.d.ts.map +1 -0
- package/dist/tools/kairos_next-pow-helpers.js +271 -0
- package/dist/tools/kairos_next-pow-helpers.js.map +1 -0
- package/dist/tools/kairos_next-previous-step.d.ts +36 -0
- package/dist/tools/kairos_next-previous-step.d.ts.map +1 -0
- package/dist/tools/kairos_next-previous-step.js +121 -0
- package/dist/tools/kairos_next-previous-step.js.map +1 -0
- package/dist/tools/kairos_next.d.ts +12 -0
- package/dist/tools/kairos_next.d.ts.map +1 -0
- package/dist/tools/kairos_next.js +285 -0
- package/dist/tools/kairos_next.js.map +1 -0
- package/dist/tools/kairos_next_schema.d.ts +80 -0
- package/dist/tools/kairos_next_schema.d.ts.map +1 -0
- package/dist/tools/kairos_next_schema.js +82 -0
- package/dist/tools/kairos_next_schema.js.map +1 -0
- package/dist/tools/kairos_search.d.ts +15 -0
- package/dist/tools/kairos_search.d.ts.map +1 -0
- package/dist/tools/kairos_search.js +262 -0
- package/dist/tools/kairos_search.js.map +1 -0
- package/dist/tools/kairos_spaces.d.ts +10 -0
- package/dist/tools/kairos_spaces.d.ts.map +1 -0
- package/dist/tools/kairos_spaces.js +129 -0
- package/dist/tools/kairos_spaces.js.map +1 -0
- package/dist/tools/kairos_update.d.ts +2 -0
- package/dist/tools/kairos_update.d.ts.map +1 -0
- package/dist/tools/kairos_update.js +158 -0
- package/dist/tools/kairos_update.js.map +1 -0
- package/dist/types/index.d.ts +60 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +38 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +2 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/utils/build-version.d.ts +15 -0
- package/dist/utils/build-version.d.ts.map +1 -0
- package/dist/utils/build-version.js +46 -0
- package/dist/utils/build-version.js.map +1 -0
- package/dist/utils/global-error-handlers.d.ts +7 -0
- package/dist/utils/global-error-handlers.d.ts.map +1 -0
- package/dist/utils/global-error-handlers.js +61 -0
- package/dist/utils/global-error-handlers.js.map +1 -0
- package/dist/utils/log-core.d.ts +11 -0
- package/dist/utils/log-core.d.ts.map +1 -0
- package/dist/utils/log-core.js +78 -0
- package/dist/utils/log-core.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +63 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/memory-body.d.ts +6 -0
- package/dist/utils/memory-body.d.ts.map +1 -0
- package/dist/utils/memory-body.js +21 -0
- package/dist/utils/memory-body.js.map +1 -0
- package/dist/utils/memory-store-utils.d.ts +14 -0
- package/dist/utils/memory-store-utils.d.ts.map +1 -0
- package/dist/utils/memory-store-utils.js +83 -0
- package/dist/utils/memory-store-utils.js.map +1 -0
- package/dist/utils/qdrant-collection-utils.d.ts +11 -0
- package/dist/utils/qdrant-collection-utils.d.ts.map +1 -0
- package/dist/utils/qdrant-collection-utils.js +62 -0
- package/dist/utils/qdrant-collection-utils.js.map +1 -0
- package/dist/utils/qdrant-query-utils.d.ts +6 -0
- package/dist/utils/qdrant-query-utils.d.ts.map +1 -0
- package/dist/utils/qdrant-query-utils.js +23 -0
- package/dist/utils/qdrant-query-utils.js.map +1 -0
- package/dist/utils/qdrant-utils.d.ts +5 -0
- package/dist/utils/qdrant-utils.d.ts.map +1 -0
- package/dist/utils/qdrant-utils.js +5 -0
- package/dist/utils/qdrant-utils.js.map +1 -0
- package/dist/utils/qdrant-vector-management.d.ts +25 -0
- package/dist/utils/qdrant-vector-management.d.ts.map +1 -0
- package/dist/utils/qdrant-vector-management.js +284 -0
- package/dist/utils/qdrant-vector-management.js.map +1 -0
- package/dist/utils/qdrant-vector-types.d.ts +35 -0
- package/dist/utils/qdrant-vector-types.d.ts.map +1 -0
- package/dist/utils/qdrant-vector-types.js +42 -0
- package/dist/utils/qdrant-vector-types.js.map +1 -0
- package/dist/utils/space-display.d.ts +11 -0
- package/dist/utils/space-display.d.ts.map +1 -0
- package/dist/utils/space-display.js +25 -0
- package/dist/utils/space-display.js.map +1 -0
- package/dist/utils/space-filter.d.ts +15 -0
- package/dist/utils/space-filter.d.ts.map +1 -0
- package/dist/utils/space-filter.js +18 -0
- package/dist/utils/space-filter.js.map +1 -0
- package/dist/utils/structured-logger.d.ts +41 -0
- package/dist/utils/structured-logger.d.ts.map +1 -0
- package/dist/utils/structured-logger.js +133 -0
- package/dist/utils/structured-logger.js.map +1 -0
- package/dist/utils/tenant-context.d.ts +67 -0
- package/dist/utils/tenant-context.d.ts.map +1 -0
- package/dist/utils/tenant-context.js +154 -0
- package/dist/utils/tenant-context.js.map +1 -0
- package/dist/utils/uri-builder.d.ts +37 -0
- package/dist/utils/uri-builder.d.ts.map +1 -0
- package/dist/utils/uri-builder.js +60 -0
- package/dist/utils/uri-builder.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** Match the last fenced code block (```json or ```) at end of step body. Captures prefix (group 1) and block content (group 2). */
|
|
2
|
+
// Note: Requires \n before the fence, so only matches line-start blocks (aligns with line-start-only rule).
|
|
3
|
+
const TRAILING_JSON_BLOCK_REGEX = /([\s\S]*)\n```(?:json)?\s*\n([\s\S]*?)```\s*$/;
|
|
4
|
+
/** Match a single fenced ```json or ``` block (for finding all blocks in content). Only matches when opening fence is at line start (after ^ or \n). */
|
|
5
|
+
const ANY_JSON_BLOCK_REGEX = /(^|\n)(```(?:json)?\s*\n([\s\S]*?)```)/gm;
|
|
6
|
+
/**
|
|
7
|
+
* Find all PoW boundaries in content: each ```json block with {"challenge": ...}.
|
|
8
|
+
* Steps are defined by these boundaries, not by H2 headings.
|
|
9
|
+
*/
|
|
10
|
+
export function findAllChallengeBlocks(content) {
|
|
11
|
+
const results = [];
|
|
12
|
+
let match;
|
|
13
|
+
ANY_JSON_BLOCK_REGEX.lastIndex = 0;
|
|
14
|
+
while ((match = ANY_JSON_BLOCK_REGEX.exec(content)) !== null) {
|
|
15
|
+
// match[1] = (^|\n) - the line start prefix
|
|
16
|
+
// match[2] = the full block (```...```)
|
|
17
|
+
// match[3] = the block content (JSON)
|
|
18
|
+
const blockContent = match[3].trim();
|
|
19
|
+
let parsed;
|
|
20
|
+
try {
|
|
21
|
+
parsed = JSON.parse(blockContent);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (!parsed || typeof parsed !== 'object' || !parsed.challenge || typeof parsed.challenge !== 'object') {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const challenge = parsed.challenge;
|
|
30
|
+
const required = typeof challenge['required'] === 'boolean' ? challenge['required'] : true;
|
|
31
|
+
const proof = { ...challenge, required };
|
|
32
|
+
// Calculate start/end: start is the opening ``` position (after the line-start prefix)
|
|
33
|
+
const lineStartPrefixLength = match[1].length;
|
|
34
|
+
const blockStart = match.index + lineStartPrefixLength;
|
|
35
|
+
const blockLength = match[2].length;
|
|
36
|
+
results.push({
|
|
37
|
+
start: blockStart,
|
|
38
|
+
end: blockStart + blockLength,
|
|
39
|
+
proof
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return results;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Try to parse a trailing ```json block containing {"challenge": ...}. Canonical format per workflow docs.
|
|
46
|
+
* Uses the last code block in the content so steps with multiple example blocks (e.g. challenge type docs) still get a proof.
|
|
47
|
+
* Returns the challenge object and cleaned content (without the block) if valid.
|
|
48
|
+
*/
|
|
49
|
+
function extractTrailingChallengeBlock(content) {
|
|
50
|
+
const match = content.match(TRAILING_JSON_BLOCK_REGEX);
|
|
51
|
+
if (!match || !match[2])
|
|
52
|
+
return null;
|
|
53
|
+
const blockContent = match[2].trim();
|
|
54
|
+
let parsed;
|
|
55
|
+
try {
|
|
56
|
+
parsed = JSON.parse(blockContent);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (!parsed || typeof parsed !== 'object' || !parsed.challenge || typeof parsed.challenge !== 'object') {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const challenge = parsed.challenge;
|
|
65
|
+
const required = typeof challenge['required'] === 'boolean' ? challenge['required'] : true;
|
|
66
|
+
const proof = { ...challenge, required };
|
|
67
|
+
const prefixLen = (match[1]?.length ?? 0);
|
|
68
|
+
const cleaned = content.slice(0, match.index + prefixLen).trim();
|
|
69
|
+
return { cleaned, challenge: proof };
|
|
70
|
+
}
|
|
71
|
+
export function extractProofOfWork(content) {
|
|
72
|
+
const fromBlock = extractTrailingChallengeBlock(content);
|
|
73
|
+
if (fromBlock) {
|
|
74
|
+
return { cleaned: fromBlock.cleaned, proof: fromBlock.challenge };
|
|
75
|
+
}
|
|
76
|
+
return { cleaned: content.trim() };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=chain-builder-proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-builder-proof.js","sourceRoot":"","sources":["../../../src/services/memory/chain-builder-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Memory } from '../../types/memory.js';
|
|
2
|
+
import { CodeBlockProcessor } from '../code-block-processor.js';
|
|
3
|
+
export declare function buildHeaderMemoryChain(markdownDoc: string, llmModelId: string, now: Date, codeBlockProcessor: CodeBlockProcessor): Memory[];
|
|
4
|
+
//# sourceMappingURL=chain-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-builder.d.ts","sourceRoot":"","sources":["../../../src/services/memory/chain-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAoJhE,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAyD3I"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import { parseMarkdownStructure, generateTags, } from '../../utils/memory-store-utils.js';
|
|
3
|
+
import { extractProofOfWork, findAllChallengeBlocks } from './chain-builder-proof.js';
|
|
4
|
+
/**
|
|
5
|
+
* Sanitize H2 headings to remove STEP patterns and numbering that break chain order.
|
|
6
|
+
* Transforms patterns like "## STEP 1 — Foo" or "## 3. Bar" into "## Foo" or "## Bar".
|
|
7
|
+
*/
|
|
8
|
+
function sanitizeHeading(line) {
|
|
9
|
+
if (!line.startsWith('## '))
|
|
10
|
+
return line;
|
|
11
|
+
return line
|
|
12
|
+
// Remove ALL forbidden STEP patterns
|
|
13
|
+
.replace(/^##\s*STEP\s*\d+[:\s—–\-·•]*\s*/i, '## ') // STEP 1, Step 2, step 9:
|
|
14
|
+
.replace(/^##\s*\d+[\s\.\)\-:—–\-·•]*\s*/i, '## ') // 1., 01 —, 2)
|
|
15
|
+
.replace(/^##\s*[0-9]+[a-zA-Z]*[\s\.\)\-:—–\-·•]*\s*/i, '## ') // 1a), T1 —, Phase 3:
|
|
16
|
+
.trim();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Derive step label from segment text: first H2 (## Title) in the segment, or fallback.
|
|
20
|
+
*/
|
|
21
|
+
function stepLabelFromSegment(segmentText, chainLabel, stepIndex) {
|
|
22
|
+
const h2Match = segmentText.match(/^##\s+(.+)$/m);
|
|
23
|
+
const title = h2Match?.[1];
|
|
24
|
+
if (title)
|
|
25
|
+
return title.trim();
|
|
26
|
+
return chainLabel || `Step ${stepIndex + 1}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Process a single H1 section into a chain of memories. Step boundaries are defined by
|
|
30
|
+
* PoW (proof-of-work) only: each ```json block with {"challenge": ...} ends one step.
|
|
31
|
+
* H2 headings are used only for step labels when present in a segment.
|
|
32
|
+
*/
|
|
33
|
+
function processH1Section(h1Title, h1Content, llmModelId, now, codeBlockProcessor) {
|
|
34
|
+
const blocks = findAllChallengeBlocks(h1Content);
|
|
35
|
+
// No PoW blocks: single memory (entire content, optional trailing challenge parsed by extractProofOfWork)
|
|
36
|
+
if (blocks.length === 0) {
|
|
37
|
+
const { cleaned, proof } = extractProofOfWork(h1Content);
|
|
38
|
+
const codeResult = codeBlockProcessor.processMarkdown(cleaned);
|
|
39
|
+
const baseTags = generateTags(cleaned);
|
|
40
|
+
const codeTags = codeResult.allIdentifiers.slice(0, 5);
|
|
41
|
+
const allTags = [...baseTags, ...codeTags];
|
|
42
|
+
const proofMetadata = proof
|
|
43
|
+
? { ...proof, required: proof.required ?? true }
|
|
44
|
+
: undefined;
|
|
45
|
+
const singleMemory = {
|
|
46
|
+
memory_uuid: crypto.randomUUID(),
|
|
47
|
+
label: stepLabelFromSegment(cleaned, h1Title, 0),
|
|
48
|
+
tags: allTags,
|
|
49
|
+
text: cleaned,
|
|
50
|
+
llm_model_id: llmModelId,
|
|
51
|
+
created_at: now.toISOString(),
|
|
52
|
+
chain: {
|
|
53
|
+
id: '',
|
|
54
|
+
label: h1Title,
|
|
55
|
+
step_index: 1,
|
|
56
|
+
step_count: 1
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
if (proofMetadata)
|
|
60
|
+
singleMemory.proof_of_work = proofMetadata;
|
|
61
|
+
return [singleMemory];
|
|
62
|
+
}
|
|
63
|
+
// One or more PoW blocks: steps are defined by each block; optional trailing segment after last block = final step (no proof)
|
|
64
|
+
const nowIso = now.toISOString();
|
|
65
|
+
const memories = [];
|
|
66
|
+
let prevEnd = 0;
|
|
67
|
+
for (let i = 0; i < blocks.length; i++) {
|
|
68
|
+
const block = blocks[i];
|
|
69
|
+
// Segment text = content from prevEnd up to (but not including) this block; block defines this step's proof
|
|
70
|
+
const segmentText = h1Content.slice(prevEnd, block.start).trim();
|
|
71
|
+
const cleaned = segmentText;
|
|
72
|
+
const codeResult = codeBlockProcessor.processMarkdown(cleaned);
|
|
73
|
+
const baseTags = generateTags(cleaned);
|
|
74
|
+
const codeTags = codeResult.allIdentifiers.slice(0, 5);
|
|
75
|
+
const allTags = [...baseTags, ...codeTags];
|
|
76
|
+
const proofMetadata = {
|
|
77
|
+
...block.proof,
|
|
78
|
+
required: block.proof.required ?? true
|
|
79
|
+
};
|
|
80
|
+
memories.push({
|
|
81
|
+
memory_uuid: crypto.randomUUID(),
|
|
82
|
+
label: stepLabelFromSegment(cleaned, h1Title, i),
|
|
83
|
+
tags: allTags,
|
|
84
|
+
text: cleaned,
|
|
85
|
+
llm_model_id: llmModelId,
|
|
86
|
+
created_at: nowIso,
|
|
87
|
+
chain: h1Title
|
|
88
|
+
? {
|
|
89
|
+
id: '',
|
|
90
|
+
label: h1Title,
|
|
91
|
+
step_index: i + 1,
|
|
92
|
+
step_count: blocks.length // may add +1 if there's trailing content
|
|
93
|
+
}
|
|
94
|
+
: undefined,
|
|
95
|
+
proof_of_work: proofMetadata
|
|
96
|
+
});
|
|
97
|
+
prevEnd = block.end;
|
|
98
|
+
}
|
|
99
|
+
// Trailing content after last block = final step (no proof required)
|
|
100
|
+
const trailing = h1Content.slice(prevEnd).trim();
|
|
101
|
+
if (trailing.length > 0) {
|
|
102
|
+
const codeResult = codeBlockProcessor.processMarkdown(trailing);
|
|
103
|
+
const baseTags = generateTags(trailing);
|
|
104
|
+
const codeTags = codeResult.allIdentifiers.slice(0, 5);
|
|
105
|
+
const allTags = [...baseTags, ...codeTags];
|
|
106
|
+
const stepCount = memories.length + 1;
|
|
107
|
+
memories.forEach(m => {
|
|
108
|
+
if (m.chain)
|
|
109
|
+
m.chain.step_count = stepCount;
|
|
110
|
+
});
|
|
111
|
+
memories.push({
|
|
112
|
+
memory_uuid: crypto.randomUUID(),
|
|
113
|
+
label: stepLabelFromSegment(trailing, h1Title, memories.length),
|
|
114
|
+
tags: allTags,
|
|
115
|
+
text: trailing,
|
|
116
|
+
llm_model_id: llmModelId,
|
|
117
|
+
created_at: nowIso,
|
|
118
|
+
chain: h1Title
|
|
119
|
+
? {
|
|
120
|
+
id: '',
|
|
121
|
+
label: h1Title,
|
|
122
|
+
step_index: stepCount,
|
|
123
|
+
step_count: stepCount
|
|
124
|
+
}
|
|
125
|
+
: undefined
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
memories.forEach(m => {
|
|
130
|
+
if (m.chain)
|
|
131
|
+
m.chain.step_count = memories.length;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return memories;
|
|
135
|
+
}
|
|
136
|
+
export function buildHeaderMemoryChain(markdownDoc, llmModelId, now, codeBlockProcessor) {
|
|
137
|
+
// Sanitize all headings before processing to ensure chain order is unbreakable
|
|
138
|
+
const cleanMarkdown = markdownDoc
|
|
139
|
+
.split(/\r?\n/)
|
|
140
|
+
.map(line => sanitizeHeading(line))
|
|
141
|
+
.join('\n');
|
|
142
|
+
const lines = cleanMarkdown.split(/\r?\n/);
|
|
143
|
+
// Find all H1 positions to split document into separate chains
|
|
144
|
+
// Track code block state to avoid interpreting comments inside code blocks as headers
|
|
145
|
+
const h1Positions = [];
|
|
146
|
+
let inCodeBlock = false;
|
|
147
|
+
for (let i = 0; i < lines.length; i++) {
|
|
148
|
+
const trimmed = lines[i].trim();
|
|
149
|
+
// Toggle code block state when encountering code block delimiters
|
|
150
|
+
if (trimmed.startsWith('```')) {
|
|
151
|
+
inCodeBlock = !inCodeBlock;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
// Only check for H1 headers when not inside a code block
|
|
155
|
+
if (!inCodeBlock && trimmed.startsWith('# ') && !trimmed.startsWith('## ')) {
|
|
156
|
+
h1Positions.push({ index: i, title: trimmed.substring(2).trim() });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// If no H1 found, check for H2-only structure (legacy behavior)
|
|
160
|
+
if (h1Positions.length === 0) {
|
|
161
|
+
const structure = parseMarkdownStructure(cleanMarkdown);
|
|
162
|
+
if (structure.h2Items.length === 0) {
|
|
163
|
+
// No H1, no H2 - return empty (no structure to process)
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
// Process as single chain without H1 - use first H2 as chain label or empty
|
|
167
|
+
const firstH2 = structure.h2Items[0] || '';
|
|
168
|
+
return processH1Section(firstH2, cleanMarkdown, llmModelId, now, codeBlockProcessor);
|
|
169
|
+
}
|
|
170
|
+
// Split document by H1 headings - each H1 becomes a separate chain
|
|
171
|
+
const allMemories = [];
|
|
172
|
+
for (let i = 0; i < h1Positions.length; i++) {
|
|
173
|
+
const h1Start = h1Positions[i].index;
|
|
174
|
+
const h1End = i < h1Positions.length - 1 ? h1Positions[i + 1].index : lines.length;
|
|
175
|
+
const h1Title = h1Positions[i].title;
|
|
176
|
+
// Extract content for this H1 section (excluding the H1 line itself)
|
|
177
|
+
const h1SectionLines = lines.slice(h1Start + 1, h1End);
|
|
178
|
+
const h1Content = h1SectionLines.join('\n');
|
|
179
|
+
// Process this H1 section as a separate chain (Option 2: proof-based slicing)
|
|
180
|
+
const chainMemories = processH1Section(h1Title, h1Content, llmModelId, now, codeBlockProcessor);
|
|
181
|
+
allMemories.push(...chainMemories);
|
|
182
|
+
}
|
|
183
|
+
return allMemories;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=chain-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-builder.js","sourceRoot":"","sources":["../../../src/services/memory/chain-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Memory } from '../../types/memory.js';
|
|
2
|
+
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
3
|
+
import type { CodeBlockProcessor } from '../code-block-processor.js';
|
|
4
|
+
import type { MemoryQdrantStoreMethods } from './store-methods.js';
|
|
5
|
+
/**
|
|
6
|
+
* Handles default chain storage (one memory per document)
|
|
7
|
+
*/
|
|
8
|
+
export declare function storeDefaultChain(client: QdrantClient, collection: string, methods: MemoryQdrantStoreMethods, codeBlockProcessor: CodeBlockProcessor, normalizedDocs: string[], llmModelId: string, now: Date, forceUpdate: boolean): Promise<Memory[]>;
|
|
9
|
+
//# sourceMappingURL=store-chain-default-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-chain-default-handler.d.ts","sourceRoot":"","sources":["../../../src/services/memory/store-chain-default-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAWtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,wBAAwB,EACjC,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA4HnB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import { logger } from '../../utils/logger.js';
|
|
3
|
+
import { embeddingService } from '../embedding/service.js';
|
|
4
|
+
import { getEmbeddingDimension } from '../../config.js';
|
|
5
|
+
import { IDGenerator } from '../id-generator.js';
|
|
6
|
+
import { generateLabel, generateTags } from '../../utils/memory-store-utils.js';
|
|
7
|
+
import { modelStats } from '../stats/model-stats.js';
|
|
8
|
+
import { redisCacheService } from '../redis-cache.js';
|
|
9
|
+
import { memoryStore, memoryChainSize } from '../metrics/memory-metrics.js';
|
|
10
|
+
import { getTenantId, getSpaceContext } from '../../utils/tenant-context.js';
|
|
11
|
+
import { deriveDomainTaskType, handleDuplicateChain } from './store-chain-helpers.js';
|
|
12
|
+
/**
|
|
13
|
+
* Handles default chain storage (one memory per document)
|
|
14
|
+
*/
|
|
15
|
+
export async function storeDefaultChain(client, collection, methods, codeBlockProcessor, normalizedDocs, llmModelId, now, forceUpdate) {
|
|
16
|
+
const tenantId = getTenantId();
|
|
17
|
+
const uuids = normalizedDocs.map(() => crypto.randomUUID());
|
|
18
|
+
const processedDocs = normalizedDocs.map(text => {
|
|
19
|
+
const codeResult = codeBlockProcessor.processMarkdown(text);
|
|
20
|
+
const enhancedText = codeBlockProcessor.enhanceContentForSearch(text, codeResult);
|
|
21
|
+
return { original: text, enhanced: enhancedText, codeResult };
|
|
22
|
+
});
|
|
23
|
+
if (processedDocs.length === 0) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
// Derive chain label from first doc and compute chain UUID
|
|
27
|
+
const firstGeneratedLabel = generateLabel(processedDocs[0].original);
|
|
28
|
+
const chainUuid = IDGenerator.generateChainUUIDv5(firstGeneratedLabel);
|
|
29
|
+
// Handle duplicate chain
|
|
30
|
+
await handleDuplicateChain(client, collection, chainUuid, forceUpdate);
|
|
31
|
+
let embeddings;
|
|
32
|
+
try {
|
|
33
|
+
embeddings = await embeddingService.generateBatchEmbeddings(processedDocs.map(p => p.enhanced));
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
logger.warn('[MemoryQdrantStore] Failed to generate embeddings for default path; falling back to zero vectors: ' + (err instanceof Error ? err.message : String(err)));
|
|
37
|
+
const vectorSize = getEmbeddingDimension();
|
|
38
|
+
embeddings = { embeddings: processedDocs.map(() => Array(vectorSize).fill(0)) };
|
|
39
|
+
}
|
|
40
|
+
const currentVectorName = `vs${getEmbeddingDimension()}`;
|
|
41
|
+
const memories = processedDocs.map((processed, index) => {
|
|
42
|
+
const memory_uuid = uuids[index];
|
|
43
|
+
const baseTags = generateTags(processed.original);
|
|
44
|
+
const codeTags = processed.codeResult.allIdentifiers.slice(0, 5);
|
|
45
|
+
const allTags = [...baseTags, ...codeTags];
|
|
46
|
+
const stepLabel = generateLabel(processed.original);
|
|
47
|
+
return {
|
|
48
|
+
memory_uuid,
|
|
49
|
+
label: stepLabel,
|
|
50
|
+
tags: allTags,
|
|
51
|
+
text: processed.enhanced,
|
|
52
|
+
llm_model_id: llmModelId,
|
|
53
|
+
created_at: now.toISOString(),
|
|
54
|
+
chain: {
|
|
55
|
+
id: chainUuid,
|
|
56
|
+
label: firstGeneratedLabel,
|
|
57
|
+
step_index: index + 1,
|
|
58
|
+
step_count: normalizedDocs.length
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
const spaceId = getSpaceContext().defaultWriteSpaceId;
|
|
63
|
+
const points = memories.map((memory, index) => {
|
|
64
|
+
const { task, type } = deriveDomainTaskType(memory.label, memory.text, memory.tags);
|
|
65
|
+
const qualityMetadata = modelStats.calculateStepQualityMetadata(memory.label, 'general', task, type, memory.tags);
|
|
66
|
+
return ({
|
|
67
|
+
id: memory.memory_uuid,
|
|
68
|
+
vector: { [currentVectorName]: embeddings.embeddings[index] },
|
|
69
|
+
payload: {
|
|
70
|
+
space_id: spaceId,
|
|
71
|
+
label: memory.label,
|
|
72
|
+
tags: memory.tags,
|
|
73
|
+
text: memory.text,
|
|
74
|
+
llm_model_id: memory.llm_model_id,
|
|
75
|
+
created_at: memory.created_at,
|
|
76
|
+
proof_of_work: memory.proof_of_work,
|
|
77
|
+
task,
|
|
78
|
+
type,
|
|
79
|
+
quality_metadata: {
|
|
80
|
+
step_quality_score: qualityMetadata.step_quality_score,
|
|
81
|
+
step_quality: qualityMetadata.step_quality
|
|
82
|
+
},
|
|
83
|
+
chain: {
|
|
84
|
+
id: memory.chain.id,
|
|
85
|
+
label: memory.chain.label,
|
|
86
|
+
step_index: memory.chain.step_index,
|
|
87
|
+
step_count: memory.chain.step_count
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
logger.tool('memory-qdrant-store', 'upsert', `mode=default docs=${normalizedDocs.length} collection=${collection} payload=${JSON.stringify({
|
|
93
|
+
points
|
|
94
|
+
})}`);
|
|
95
|
+
logger.debug(`[Qdrant][upsert] collection=${collection} points=${points.length}`);
|
|
96
|
+
await client.upsert(collection, { points });
|
|
97
|
+
await redisCacheService.invalidateAfterUpdate();
|
|
98
|
+
methods.invalidateLocalCache();
|
|
99
|
+
// Update model statistics for each stored memory
|
|
100
|
+
for (const memory of memories) {
|
|
101
|
+
try {
|
|
102
|
+
const ltags = (memory.tags || []).map(t => t.toLowerCase());
|
|
103
|
+
const knownTasks = new Set(['networking', 'security', 'optimization', 'troubleshooting', 'error-handling', 'installation', 'configuration', 'testing', 'deployment', 'database']);
|
|
104
|
+
const task = ltags.find(t => knownTasks.has(t)) || 'general';
|
|
105
|
+
const type = /```/.test(memory.text) || ltags.includes('pattern') ? 'pattern' : (ltags.includes('rule') ? 'rule' : 'context');
|
|
106
|
+
const score = modelStats.calculateQualityScore(memory.label, task, type, memory.tags);
|
|
107
|
+
await modelStats.processContribution(memory.llm_model_id, score, memory.label);
|
|
108
|
+
const quality = score.quality;
|
|
109
|
+
memoryStore.inc({ quality, tenant_id: tenantId });
|
|
110
|
+
if (memory.chain) {
|
|
111
|
+
memoryChainSize.observe({ tenant_id: tenantId }, memory.chain.step_count);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch { }
|
|
115
|
+
}
|
|
116
|
+
return memories;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=store-chain-default-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-chain-default-handler.js","sourceRoot":"","sources":["../../../src/services/memory/store-chain-default-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Memory } from '../../types/memory.js';
|
|
2
|
+
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
3
|
+
import type { MemoryQdrantStoreMethods } from './store-methods.js';
|
|
4
|
+
/**
|
|
5
|
+
* Handles header-based chain storage (H1/H2 sections)
|
|
6
|
+
*/
|
|
7
|
+
export declare function storeHeaderBasedChain(client: QdrantClient, collection: string, methods: MemoryQdrantStoreMethods, headerChainMemories: Memory[], llmModelId: string, forceUpdate: boolean): Promise<Memory[]>;
|
|
8
|
+
//# sourceMappingURL=store-chain-header-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-chain-header-handler.d.ts","sourceRoot":"","sources":["../../../src/services/memory/store-chain-header-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAUtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,wBAAwB,EACjC,mBAAmB,EAAE,MAAM,EAAE,EAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA0GnB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { embeddingService } from '../embedding/service.js';
|
|
3
|
+
import { getEmbeddingDimension } from '../../config.js';
|
|
4
|
+
import { IDGenerator } from '../id-generator.js';
|
|
5
|
+
import { modelStats } from '../stats/model-stats.js';
|
|
6
|
+
import { redisCacheService } from '../redis-cache.js';
|
|
7
|
+
import { memoryStore, memoryChainSize } from '../metrics/memory-metrics.js';
|
|
8
|
+
import { getTenantId, getSpaceContext } from '../../utils/tenant-context.js';
|
|
9
|
+
import { deriveDomainTaskType, handleDuplicateChain } from './store-chain-helpers.js';
|
|
10
|
+
/**
|
|
11
|
+
* Handles header-based chain storage (H1/H2 sections)
|
|
12
|
+
*/
|
|
13
|
+
export async function storeHeaderBasedChain(client, collection, methods, headerChainMemories, llmModelId, forceUpdate) {
|
|
14
|
+
const tenantId = getTenantId();
|
|
15
|
+
// Determine chain label and deterministic v5 chain UUID
|
|
16
|
+
const firstLabel = headerChainMemories[0]?.label || 'Knowledge Chain';
|
|
17
|
+
const explicitChainLabel = headerChainMemories[0]?.chain?.label;
|
|
18
|
+
const chainLabel = (explicitChainLabel && explicitChainLabel.trim().length > 0)
|
|
19
|
+
? explicitChainLabel.trim()
|
|
20
|
+
: (firstLabel.includes(':') ? firstLabel.split(':')[0].trim() : firstLabel.trim());
|
|
21
|
+
const chainUuid = IDGenerator.generateChainUUIDv5(chainLabel);
|
|
22
|
+
// Handle duplicate chain
|
|
23
|
+
await handleDuplicateChain(client, collection, chainUuid, forceUpdate);
|
|
24
|
+
// Generate embeddings for each H2 section
|
|
25
|
+
const sectionTexts = headerChainMemories.map(m => m.text);
|
|
26
|
+
const vectorSize = getEmbeddingDimension();
|
|
27
|
+
const currentVectorName = `vs${vectorSize}`;
|
|
28
|
+
let vectors;
|
|
29
|
+
try {
|
|
30
|
+
const batch = await embeddingService.generateBatchEmbeddings(sectionTexts);
|
|
31
|
+
vectors = batch.embeddings;
|
|
32
|
+
const wrongCount = vectors.length !== headerChainMemories.length;
|
|
33
|
+
const wrongDim = vectors.some(v => !Array.isArray(v) || v.length !== vectorSize);
|
|
34
|
+
if (wrongCount || wrongDim) {
|
|
35
|
+
logger.warn(`[MemoryQdrantStore] Embedding shape mismatch for header-based chain (count=${vectors.length}/${headerChainMemories.length}, dimOK=${!wrongDim}). Falling back to zero vectors.`);
|
|
36
|
+
vectors = headerChainMemories.map(() => Array(vectorSize).fill(0));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
logger.error('[MemoryQdrantStore] Failed to generate embeddings for header-based chain; falling back to zero vectors', err);
|
|
41
|
+
vectors = headerChainMemories.map(() => Array(vectorSize).fill(0));
|
|
42
|
+
}
|
|
43
|
+
const chainStepCount = headerChainMemories.length;
|
|
44
|
+
const spaceId = getSpaceContext().defaultWriteSpaceId;
|
|
45
|
+
const points = headerChainMemories.map((memory, i) => {
|
|
46
|
+
const dtt = deriveDomainTaskType(memory.label, memory.text, memory.tags);
|
|
47
|
+
const qualityMetadata = modelStats.calculateStepQualityMetadata(memory.label, 'general', dtt.task, dtt.type, memory.tags);
|
|
48
|
+
return ({
|
|
49
|
+
id: memory.memory_uuid,
|
|
50
|
+
vector: { [currentVectorName]: vectors[i] },
|
|
51
|
+
payload: {
|
|
52
|
+
space_id: spaceId,
|
|
53
|
+
label: memory.label,
|
|
54
|
+
tags: memory.tags,
|
|
55
|
+
text: memory.text,
|
|
56
|
+
llm_model_id: memory.llm_model_id,
|
|
57
|
+
created_at: memory.created_at,
|
|
58
|
+
proof_of_work: memory.proof_of_work,
|
|
59
|
+
task: dtt.task,
|
|
60
|
+
type: dtt.type,
|
|
61
|
+
quality_metadata: {
|
|
62
|
+
step_quality_score: qualityMetadata.step_quality_score,
|
|
63
|
+
step_quality: qualityMetadata.step_quality
|
|
64
|
+
},
|
|
65
|
+
chain: {
|
|
66
|
+
id: chainUuid,
|
|
67
|
+
label: chainLabel,
|
|
68
|
+
step_index: i + 1,
|
|
69
|
+
step_count: chainStepCount
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
logger.tool('memory-qdrant-store', 'upsert', `mode=h1-h2 sections=${headerChainMemories.length} collection=${collection} payload=${JSON.stringify({
|
|
75
|
+
points
|
|
76
|
+
})}`);
|
|
77
|
+
logger.debug(`[Qdrant][upsert] collection=${collection} points=${points.length}`);
|
|
78
|
+
await client.upsert(collection, { points });
|
|
79
|
+
// Publish cache invalidation
|
|
80
|
+
await redisCacheService.invalidateAfterUpdate();
|
|
81
|
+
methods.invalidateLocalCache();
|
|
82
|
+
// Update model statistics for each stored step
|
|
83
|
+
for (const memory of headerChainMemories) {
|
|
84
|
+
try {
|
|
85
|
+
const { task, type } = deriveDomainTaskType(memory.label, memory.text, memory.tags);
|
|
86
|
+
const score = modelStats.calculateQualityScore(memory.label, task, type, memory.tags);
|
|
87
|
+
await modelStats.processContribution(memory.llm_model_id, score, memory.label);
|
|
88
|
+
const quality = score.quality;
|
|
89
|
+
memoryStore.inc({ quality, tenant_id: tenantId });
|
|
90
|
+
if (memory.chain) {
|
|
91
|
+
memoryChainSize.observe({ tenant_id: tenantId }, memory.chain.step_count);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch { }
|
|
95
|
+
}
|
|
96
|
+
return headerChainMemories;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=store-chain-header-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-chain-header-handler.js","sourceRoot":"","sources":["../../../src/services/memory/store-chain-header-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { QdrantClient } from '@qdrant/js-client-rest';
|
|
2
|
+
import type { MemoryQdrantStoreMethods } from './store-methods.js';
|
|
3
|
+
/**
|
|
4
|
+
* Derives domain task type from label, text, and tags
|
|
5
|
+
*/
|
|
6
|
+
export declare function deriveDomainTaskType(label: string, text: string, tags: string[]): {
|
|
7
|
+
task: string;
|
|
8
|
+
type: "context" | "pattern" | "rule";
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Checks for duplicate chain by chain UUID
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkDuplicateChain(client: QdrantClient, collection: string, chainUuid: string): Promise<{
|
|
14
|
+
points: any[];
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Handles duplicate chain: either throws error or deletes existing chain
|
|
18
|
+
*/
|
|
19
|
+
export declare function handleDuplicateChain(client: QdrantClient, collection: string, chainUuid: string, forceUpdate: boolean): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Checks for similar memories by title/label before creating a new memory.
|
|
22
|
+
* If a very high match is found (score >= SIMILAR_MEMORY_THRESHOLD), throws an error with existing memory info.
|
|
23
|
+
* This helps prevent duplicate memories that pollute search results.
|
|
24
|
+
* Set SIMILAR_MEMORY_THRESHOLD=1 in env to effectively disable.
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkSimilarMemoryByTitle(methods: MemoryQdrantStoreMethods, label: string, forceUpdate: boolean): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=store-chain-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-chain-helpers.d.ts","sourceRoot":"","sources":["../../../src/services/memory/store-chain-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAKtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;;;EAc/E;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAO5B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAwDf"}
|