@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,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service using OpenAI embeddings
|
|
3
|
+
*
|
|
4
|
+
* Implements pure OpenAI embedding support.
|
|
5
|
+
* Uses environment variables:
|
|
6
|
+
* - OPENAI_API_KEY
|
|
7
|
+
* - OPENAI_EMBEDDING_MODEL
|
|
8
|
+
* - EMBEDDING_DIMENSION
|
|
9
|
+
*
|
|
10
|
+
* Supports OpenAI and TEI (Text Embeddings Inference) providers. Selection:
|
|
11
|
+
* - If OPENAI_API_KEY is set, OpenAI is used.
|
|
12
|
+
* - Otherwise, TEI_BASE_URL + TEI_MODEL will be used if configured.
|
|
13
|
+
*/
|
|
14
|
+
import { logger } from '../../utils/logger.js';
|
|
15
|
+
import { EMBEDDING_PROVIDER, OPENAI_API_KEY, TEI_BASE_URL, TEI_MODEL, TEI_API_KEY } from '../../config.js';
|
|
16
|
+
import { DEFAULT_MODEL, DEFAULT_DIMENSION, TEI_EMBEDDING_ENDPOINT } from './config.js';
|
|
17
|
+
import { postEmbeddings, postEmbeddingsOpenAI, postEmbeddingsTEI } from './providers.js';
|
|
18
|
+
import { embeddingRequests, embeddingDuration, embeddingErrors, embeddingVectorSize, embeddingBatchSize } from '../metrics/embedding-metrics.js';
|
|
19
|
+
import { getTenantId } from '../../utils/tenant-context.js';
|
|
20
|
+
export class EmbeddingService {
|
|
21
|
+
embeddingDimension;
|
|
22
|
+
constructor() {
|
|
23
|
+
this.embeddingDimension = DEFAULT_DIMENSION;
|
|
24
|
+
}
|
|
25
|
+
async generateEmbedding(text) {
|
|
26
|
+
const tenantId = getTenantId();
|
|
27
|
+
const provider = this.getProvider();
|
|
28
|
+
const timer = embeddingDuration.startTimer({ provider, tenant_id: tenantId });
|
|
29
|
+
try {
|
|
30
|
+
if (!text || text.trim().length === 0)
|
|
31
|
+
throw new Error('Text cannot be empty for embedding generation');
|
|
32
|
+
const vectors = await postEmbeddings(text.trim());
|
|
33
|
+
const embedding = vectors?.[0];
|
|
34
|
+
if (!Array.isArray(embedding))
|
|
35
|
+
throw new Error('OpenAI returned no embedding');
|
|
36
|
+
if (embedding.length !== this.embeddingDimension)
|
|
37
|
+
throw new Error(`Embedding dimension mismatch: got ${embedding.length}, expected ${this.embeddingDimension}`);
|
|
38
|
+
embeddingRequests.inc({
|
|
39
|
+
provider,
|
|
40
|
+
status: 'success',
|
|
41
|
+
tenant_id: tenantId
|
|
42
|
+
});
|
|
43
|
+
// Track vector size (assuming float32, 4 bytes per float)
|
|
44
|
+
const vectorSize = embedding.length * 4;
|
|
45
|
+
embeddingVectorSize.observe({ provider, tenant_id: tenantId }, vectorSize);
|
|
46
|
+
timer({ provider, tenant_id: tenantId });
|
|
47
|
+
return {
|
|
48
|
+
embedding,
|
|
49
|
+
model: DEFAULT_MODEL,
|
|
50
|
+
usage: { prompt_tokens: 0, total_tokens: 0 },
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
embeddingRequests.inc({
|
|
55
|
+
provider,
|
|
56
|
+
status: 'error',
|
|
57
|
+
tenant_id: tenantId
|
|
58
|
+
});
|
|
59
|
+
embeddingErrors.inc({
|
|
60
|
+
provider,
|
|
61
|
+
status: 'error',
|
|
62
|
+
tenant_id: tenantId
|
|
63
|
+
});
|
|
64
|
+
timer({ provider, tenant_id: tenantId });
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async generateBatchEmbeddings(texts) {
|
|
69
|
+
const tenantId = getTenantId();
|
|
70
|
+
const provider = this.getProvider();
|
|
71
|
+
const timer = embeddingDuration.startTimer({ provider, tenant_id: tenantId });
|
|
72
|
+
try {
|
|
73
|
+
const valid = texts.filter(t => t && t.trim().length > 0);
|
|
74
|
+
if (valid.length === 0)
|
|
75
|
+
throw new Error('No valid texts provided for batch embedding');
|
|
76
|
+
// Track batch size
|
|
77
|
+
embeddingBatchSize.observe({ tenant_id: tenantId }, valid.length);
|
|
78
|
+
const vectors = await postEmbeddings(valid);
|
|
79
|
+
// Validate each vector length
|
|
80
|
+
const wrongDim = vectors.some(v => !Array.isArray(v) || v.length !== this.embeddingDimension);
|
|
81
|
+
if (wrongDim) {
|
|
82
|
+
logger.error('[EmbeddingService] One or more embeddings returned with unexpected dimension');
|
|
83
|
+
throw new Error('One or more embeddings have unexpected dimension from OpenAI');
|
|
84
|
+
}
|
|
85
|
+
embeddingRequests.inc({
|
|
86
|
+
provider,
|
|
87
|
+
status: 'success',
|
|
88
|
+
tenant_id: tenantId
|
|
89
|
+
});
|
|
90
|
+
// Track vector size for each embedding
|
|
91
|
+
for (const embedding of vectors) {
|
|
92
|
+
if (Array.isArray(embedding)) {
|
|
93
|
+
const vectorSize = embedding.length * 4; // float32 = 4 bytes
|
|
94
|
+
embeddingVectorSize.observe({ provider, tenant_id: tenantId }, vectorSize);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
timer({ provider, tenant_id: tenantId });
|
|
98
|
+
return {
|
|
99
|
+
embeddings: vectors,
|
|
100
|
+
model: DEFAULT_MODEL,
|
|
101
|
+
usage: { prompt_tokens: 0, total_tokens: 0 },
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
embeddingRequests.inc({
|
|
106
|
+
provider,
|
|
107
|
+
status: 'error',
|
|
108
|
+
tenant_id: tenantId
|
|
109
|
+
});
|
|
110
|
+
embeddingErrors.inc({
|
|
111
|
+
provider,
|
|
112
|
+
status: 'error',
|
|
113
|
+
tenant_id: tenantId
|
|
114
|
+
});
|
|
115
|
+
timer({ provider, tenant_id: tenantId });
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
calculateCosineSimilarity(embedding1, embedding2) {
|
|
120
|
+
if (!embedding1 || !embedding2)
|
|
121
|
+
return 0;
|
|
122
|
+
if (embedding1.length !== embedding2.length)
|
|
123
|
+
throw new Error('Embeddings must have the same dimensions');
|
|
124
|
+
let dot = 0, n1 = 0, n2 = 0;
|
|
125
|
+
for (let i = 0; i < embedding1.length; i++) {
|
|
126
|
+
const a = embedding1[i] || 0;
|
|
127
|
+
const b = embedding2[i] || 0;
|
|
128
|
+
dot += a * b;
|
|
129
|
+
n1 += a * a;
|
|
130
|
+
n2 += b * b;
|
|
131
|
+
}
|
|
132
|
+
const mag = Math.sqrt(n1) * Math.sqrt(n2);
|
|
133
|
+
return mag === 0 ? 0 : dot / mag;
|
|
134
|
+
}
|
|
135
|
+
async generateMemoryEmbedding(memory) {
|
|
136
|
+
const textToEmbed = [
|
|
137
|
+
memory?.content || '',
|
|
138
|
+
`Resource: ${memory?.resource || ''}`,
|
|
139
|
+
`Task: ${memory?.task || ''}`,
|
|
140
|
+
`Tags: ${(memory?.tags || []).join(', ')}`,
|
|
141
|
+
`Type: ${memory?.type || ''}`
|
|
142
|
+
].filter(text => text.trim().length > 0).join('\n');
|
|
143
|
+
const result = await this.generateEmbedding(textToEmbed);
|
|
144
|
+
return result.embedding;
|
|
145
|
+
}
|
|
146
|
+
estimateCost() {
|
|
147
|
+
// Cost estimation could be added later; return 0 for now.
|
|
148
|
+
return 0;
|
|
149
|
+
}
|
|
150
|
+
async healthCheck() {
|
|
151
|
+
try {
|
|
152
|
+
const providerPref = EMBEDDING_PROVIDER;
|
|
153
|
+
if (providerPref === 'openai') {
|
|
154
|
+
// Explicit OpenAI only - enforce duo
|
|
155
|
+
if (!OPENAI_API_KEY || !DEFAULT_MODEL) {
|
|
156
|
+
return { healthy: false, message: 'OpenAI requires OPENAI_API_KEY and OPENAI_EMBEDDING_MODEL' };
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
const res = await postEmbeddingsOpenAI('health check');
|
|
160
|
+
return { healthy: Array.isArray(res) && res.length > 0, message: 'openai embeddings operational' };
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
164
|
+
if (msg.includes('429'))
|
|
165
|
+
return { healthy: true, message: 'openai is rate-limited (429) - reachable but throttled' };
|
|
166
|
+
if (msg.includes('401') || msg.toLowerCase().includes('authentication'))
|
|
167
|
+
return { healthy: false, message: 'openai authentication failed - check OPENAI_API_KEY' };
|
|
168
|
+
return { healthy: false, message: `openai health check failed: ${msg}` };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (providerPref === 'tei') {
|
|
172
|
+
// Explicit TEI only - enforce duo
|
|
173
|
+
if (!TEI_BASE_URL || !TEI_MODEL) {
|
|
174
|
+
return { healthy: false, message: 'TEI requires TEI_BASE_URL and TEI_MODEL' };
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
const res = await postEmbeddingsTEI('health check');
|
|
178
|
+
return { healthy: Array.isArray(res) && res.length > 0, message: 'TEI embeddings operational' };
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
182
|
+
if (msg.includes('401'))
|
|
183
|
+
return { healthy: false, message: 'TEI authentication failed (401)' };
|
|
184
|
+
if (msg.includes('429'))
|
|
185
|
+
return { healthy: true, message: 'TEI is rate-limited (429) - reachable but throttled' };
|
|
186
|
+
return { healthy: false, message: `TEI health check failed: ${msg}` };
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Auto mode: prefer OpenAI if both OPENAI vars are present, otherwise TEI
|
|
190
|
+
if (OPENAI_API_KEY && DEFAULT_MODEL) {
|
|
191
|
+
try {
|
|
192
|
+
const res = await postEmbeddingsOpenAI('health check');
|
|
193
|
+
return { healthy: Array.isArray(res) && res.length > 0, message: 'openai embeddings operational' };
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
197
|
+
logger.warn(`[EmbeddingService] OpenAI health check failed, trying TEI fallback: ${msg}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (TEI_BASE_URL && TEI_MODEL) {
|
|
201
|
+
try {
|
|
202
|
+
const url = TEI_EMBEDDING_ENDPOINT || TEI_BASE_URL;
|
|
203
|
+
const payload = { model: TEI_MODEL, input: ['health check'] };
|
|
204
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
205
|
+
if (TEI_API_KEY)
|
|
206
|
+
headers['x-api-key'] = TEI_API_KEY;
|
|
207
|
+
const resp = await fetch(url, {
|
|
208
|
+
method: 'POST',
|
|
209
|
+
headers,
|
|
210
|
+
body: JSON.stringify(payload)
|
|
211
|
+
});
|
|
212
|
+
let data = null;
|
|
213
|
+
try {
|
|
214
|
+
data = await resp.json();
|
|
215
|
+
}
|
|
216
|
+
catch (parseErr) {
|
|
217
|
+
logger.warn(`[EmbeddingService] TEI returned non-JSON response: ${String(parseErr)}`);
|
|
218
|
+
}
|
|
219
|
+
if (!resp.ok) {
|
|
220
|
+
if (resp.status === 401) {
|
|
221
|
+
return { healthy: false, message: 'TEI authentication failed (401)' };
|
|
222
|
+
}
|
|
223
|
+
if (resp.status === 429) {
|
|
224
|
+
return { healthy: true, message: 'TEI is rate-limited (429) - reachable but throttled' };
|
|
225
|
+
}
|
|
226
|
+
return { healthy: false, message: `TEI returned HTTP ${resp.status}` };
|
|
227
|
+
}
|
|
228
|
+
// Accept several TEI response shapes:
|
|
229
|
+
// - { embeddings: [ [..], ... ] }
|
|
230
|
+
// - { data: [ { embedding: [...] }, ... ] }
|
|
231
|
+
// - { result: [ ... ] } (some servers)
|
|
232
|
+
let embeddings = null;
|
|
233
|
+
if (Array.isArray(data?.embeddings)) {
|
|
234
|
+
embeddings = data.embeddings;
|
|
235
|
+
}
|
|
236
|
+
else if (Array.isArray(data?.data)) {
|
|
237
|
+
embeddings = data.data.map((d) => d?.embedding ?? d);
|
|
238
|
+
}
|
|
239
|
+
else if (Array.isArray(data?.result)) {
|
|
240
|
+
embeddings = data.result;
|
|
241
|
+
}
|
|
242
|
+
else if (Array.isArray(data)) {
|
|
243
|
+
embeddings = data;
|
|
244
|
+
}
|
|
245
|
+
if (Array.isArray(embeddings) && embeddings.length > 0 && Array.isArray(embeddings[0])) {
|
|
246
|
+
const dim = embeddings[0].length;
|
|
247
|
+
if (dim !== DEFAULT_DIMENSION) {
|
|
248
|
+
// If env explicitly sets EMBEDDING_DIMENSION, validate against it
|
|
249
|
+
logger.warn(`[EmbeddingService] TEI embedding dimension mismatch: got ${dim}, expected ${DEFAULT_DIMENSION}`);
|
|
250
|
+
return { healthy: false, message: `TEI embedding dimension mismatch: got ${dim}, expected ${DEFAULT_DIMENSION}` };
|
|
251
|
+
}
|
|
252
|
+
return { healthy: true, message: 'TEI embeddings operational' };
|
|
253
|
+
}
|
|
254
|
+
return { healthy: false, message: 'TEI returned unexpected embedding shape or no embeddings' };
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
258
|
+
return { healthy: false, message: `TEI health check error: ${msg}` };
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return { healthy: false, message: 'No embedding provider configured (set OPENAI_API_KEY+OPENAI_EMBEDDING_MODEL or TEI_BASE_URL+TEI_MODEL)' };
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
265
|
+
return { healthy: false, message: `Embedding health check error: ${msg}` };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
getProvider() {
|
|
269
|
+
const pref = EMBEDDING_PROVIDER;
|
|
270
|
+
if (pref === 'openai')
|
|
271
|
+
return 'openai';
|
|
272
|
+
if (pref === 'tei')
|
|
273
|
+
return 'tei';
|
|
274
|
+
if (OPENAI_API_KEY && DEFAULT_MODEL)
|
|
275
|
+
return 'openai';
|
|
276
|
+
if (TEI_BASE_URL && TEI_MODEL)
|
|
277
|
+
return 'tei';
|
|
278
|
+
return 'local'; // fallback
|
|
279
|
+
}
|
|
280
|
+
getConfig() {
|
|
281
|
+
let provider = 'none';
|
|
282
|
+
const pref = EMBEDDING_PROVIDER;
|
|
283
|
+
if (pref === 'openai')
|
|
284
|
+
provider = 'openai';
|
|
285
|
+
else if (pref === 'tei')
|
|
286
|
+
provider = 'tei';
|
|
287
|
+
else if (OPENAI_API_KEY && DEFAULT_MODEL)
|
|
288
|
+
provider = 'openai';
|
|
289
|
+
else if (TEI_BASE_URL && TEI_MODEL)
|
|
290
|
+
provider = 'tei';
|
|
291
|
+
return {
|
|
292
|
+
model: provider === 'openai' ? DEFAULT_MODEL : (TEI_MODEL || DEFAULT_MODEL),
|
|
293
|
+
dimension: this.embeddingDimension,
|
|
294
|
+
provider,
|
|
295
|
+
apiKeyConfigured: !!OPENAI_API_KEY && !!DEFAULT_MODEL,
|
|
296
|
+
teiConfigured: !!TEI_BASE_URL && !!TEI_MODEL,
|
|
297
|
+
providerPref: EMBEDDING_PROVIDER
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
export const embeddingService = new EmbeddingService();
|
|
302
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/services/embedding/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface EmbeddingResult {
|
|
2
|
+
embedding: number[];
|
|
3
|
+
model: string;
|
|
4
|
+
usage: {
|
|
5
|
+
prompt_tokens: number;
|
|
6
|
+
total_tokens: number;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export interface BatchEmbeddingResult {
|
|
10
|
+
embeddings: number[][];
|
|
11
|
+
model: string;
|
|
12
|
+
usage: {
|
|
13
|
+
prompt_tokens: number;
|
|
14
|
+
total_tokens: number;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/embedding/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACH,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;CACL;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACH,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/embedding/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Generator Service for KAIROS
|
|
3
|
+
*
|
|
4
|
+
* Generates UUID-based identifiers for knowledge items.
|
|
5
|
+
* Uses URI-based UUIDv5 for deterministic Qdrant IDs where appropriate.
|
|
6
|
+
*/
|
|
7
|
+
export declare const KAIROS_NAMESPACE = "6f1d7e2b-8f7b-4b1e-9c8f-2f2f0b1a2e11";
|
|
8
|
+
export declare class IDGenerator {
|
|
9
|
+
/**
|
|
10
|
+
* Generate a protocol ID for protocols
|
|
11
|
+
* This ID is shared across all steps in a protocol sequence
|
|
12
|
+
* Uses full UUID for native Qdrant support
|
|
13
|
+
*
|
|
14
|
+
* @returns RFC 4122 UUID v4 string
|
|
15
|
+
*/
|
|
16
|
+
static generateProtocolId(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Generate a deterministic protocol_id from domain/type/task combination
|
|
19
|
+
* This ensures the same domain/type/task always gets the same protocol_id
|
|
20
|
+
*
|
|
21
|
+
* @param domain - Knowledge domain
|
|
22
|
+
* @param type - Knowledge type
|
|
23
|
+
* @param task - Task identifier
|
|
24
|
+
* @returns Deterministic UUIDv5 string
|
|
25
|
+
*/
|
|
26
|
+
static generateDeterministicProtocolId(domain: string, type: string, task: string): string;
|
|
27
|
+
/**
|
|
28
|
+
/**
|
|
29
|
+
* Generate a deterministic memory chain UUID (v5) from a label
|
|
30
|
+
* Label is normalized (trim, collapse spaces, lower-case)
|
|
31
|
+
*/
|
|
32
|
+
static generateChainUUIDv5(label: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Generate a UUID for unified protocol
|
|
35
|
+
* Used for kairos://UUID URIs in the unified store protocol
|
|
36
|
+
*
|
|
37
|
+
* @returns RFC 4122 UUID v4 string
|
|
38
|
+
*/
|
|
39
|
+
static generateUUID(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Build Qdrant ID from human-readable URI using deterministic UUIDv5
|
|
42
|
+
*
|
|
43
|
+
* This enables URI-based retrieval: given a URI, we can always regenerate
|
|
44
|
+
* the exact same Qdrant ID for direct lookup.
|
|
45
|
+
*
|
|
46
|
+
* @param humanUri - Full human-readable URI (e.g., "kairos://uuid" or legacy "kairos://ai/rule/coding-rules@lF5kZa9D/step/1")
|
|
47
|
+
* @returns Deterministic UUIDv5 string
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* buildQdrantId("kairos://700468C5-2C80-4502-B60B-9A8C74044A35")
|
|
51
|
+
* // Returns: "700468C5-2C80-4502-B60B-9A8C74044A35" (direct UUID)
|
|
52
|
+
*/
|
|
53
|
+
static buildQdrantId(humanUri: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Convert URI to Qdrant ID
|
|
56
|
+
* Supports both new kairos://UUID and legacy URI formats
|
|
57
|
+
*
|
|
58
|
+
* @param uri - Full URI string
|
|
59
|
+
* @returns UUID string for Qdrant operations
|
|
60
|
+
*/
|
|
61
|
+
static qdrantIdFromUri(uri: string): string;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=id-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../src/services/id-generator.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAOF,eAAO,MAAM,gBAAgB,yCAAyC,CAAC;AAEvE,qBAAa,WAAW;IACpB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM;IAInC;;;;;;;;OAQG;IACH,MAAM,CAAC,+BAA+B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAK1F;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKjD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,IAAI,MAAM;IAI7B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CA6B9C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ID Generator Service for KAIROS
|
|
3
|
+
*
|
|
4
|
+
* Generates UUID-based identifiers for knowledge items.
|
|
5
|
+
* Uses URI-based UUIDv5 for deterministic Qdrant IDs where appropriate.
|
|
6
|
+
*/
|
|
7
|
+
import { v5 as uuidv5, v4 as uuidv4 } from 'uuid';
|
|
8
|
+
import { structuredLogger } from '../utils/structured-logger.js';
|
|
9
|
+
// KAIROS namespace UUID for deterministic ID generation
|
|
10
|
+
// Generate once and hardcode for deployment consistency
|
|
11
|
+
export const KAIROS_NAMESPACE = '6f1d7e2b-8f7b-4b1e-9c8f-2f2f0b1a2e11';
|
|
12
|
+
export class IDGenerator {
|
|
13
|
+
/**
|
|
14
|
+
* Generate a protocol ID for protocols
|
|
15
|
+
* This ID is shared across all steps in a protocol sequence
|
|
16
|
+
* Uses full UUID for native Qdrant support
|
|
17
|
+
*
|
|
18
|
+
* @returns RFC 4122 UUID v4 string
|
|
19
|
+
*/
|
|
20
|
+
static generateProtocolId() {
|
|
21
|
+
return uuidv4();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generate a deterministic protocol_id from domain/type/task combination
|
|
25
|
+
* This ensures the same domain/type/task always gets the same protocol_id
|
|
26
|
+
*
|
|
27
|
+
* @param domain - Knowledge domain
|
|
28
|
+
* @param type - Knowledge type
|
|
29
|
+
* @param task - Task identifier
|
|
30
|
+
* @returns Deterministic UUIDv5 string
|
|
31
|
+
*/
|
|
32
|
+
static generateDeterministicProtocolId(domain, type, task) {
|
|
33
|
+
const input = `${domain}:${type}:${task}`;
|
|
34
|
+
return uuidv5(input, KAIROS_NAMESPACE);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
/**
|
|
38
|
+
* Generate a deterministic memory chain UUID (v5) from a label
|
|
39
|
+
* Label is normalized (trim, collapse spaces, lower-case)
|
|
40
|
+
*/
|
|
41
|
+
static generateChainUUIDv5(label) {
|
|
42
|
+
const normalized = (label || '').trim().replace(/\s+/g, ' ').toLowerCase();
|
|
43
|
+
return uuidv5(normalized, KAIROS_NAMESPACE);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Generate a UUID for unified protocol
|
|
47
|
+
* Used for kairos://UUID URIs in the unified store protocol
|
|
48
|
+
*
|
|
49
|
+
* @returns RFC 4122 UUID v4 string
|
|
50
|
+
*/
|
|
51
|
+
static generateUUID() {
|
|
52
|
+
return crypto.randomUUID();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build Qdrant ID from human-readable URI using deterministic UUIDv5
|
|
56
|
+
*
|
|
57
|
+
* This enables URI-based retrieval: given a URI, we can always regenerate
|
|
58
|
+
* the exact same Qdrant ID for direct lookup.
|
|
59
|
+
*
|
|
60
|
+
* @param humanUri - Full human-readable URI (e.g., "kairos://uuid" or legacy "kairos://ai/rule/coding-rules@lF5kZa9D/step/1")
|
|
61
|
+
* @returns Deterministic UUIDv5 string
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* buildQdrantId("kairos://700468C5-2C80-4502-B60B-9A8C74044A35")
|
|
65
|
+
* // Returns: "700468C5-2C80-4502-B60B-9A8C74044A35" (direct UUID)
|
|
66
|
+
*/
|
|
67
|
+
static buildQdrantId(humanUri) {
|
|
68
|
+
return uuidv5(humanUri, KAIROS_NAMESPACE);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Convert URI to Qdrant ID
|
|
72
|
+
* Supports both new kairos://UUID and legacy URI formats
|
|
73
|
+
*
|
|
74
|
+
* @param uri - Full URI string
|
|
75
|
+
* @returns UUID string for Qdrant operations
|
|
76
|
+
*/
|
|
77
|
+
static qdrantIdFromUri(uri) {
|
|
78
|
+
structuredLogger.debug(`qdrantIdFromUri called with URI: ${uri}`);
|
|
79
|
+
// kairos://mem/{uuid}
|
|
80
|
+
const memPrefix = 'kairos://mem/';
|
|
81
|
+
if (uri.startsWith(memPrefix)) {
|
|
82
|
+
return uri.substring(memPrefix.length);
|
|
83
|
+
}
|
|
84
|
+
// kairos://{domain}/{type}/{task}/step/{step} (deterministic hashed id)
|
|
85
|
+
if (uri.startsWith('kairos://') && uri.includes('/step/')) {
|
|
86
|
+
return IDGenerator.buildQdrantId(uri);
|
|
87
|
+
}
|
|
88
|
+
// kairos://{uuid}
|
|
89
|
+
const simplePrefix = 'kairos://';
|
|
90
|
+
if (uri.startsWith(simplePrefix)) {
|
|
91
|
+
const candidate = uri.substring(simplePrefix.length);
|
|
92
|
+
// If it's a bare UUID, return it; otherwise, fall back to v5 hash of full URI
|
|
93
|
+
if (/^[0-9a-fA-F-]{32,36}$/.test(candidate)) {
|
|
94
|
+
return candidate;
|
|
95
|
+
}
|
|
96
|
+
return IDGenerator.buildQdrantId(uri);
|
|
97
|
+
}
|
|
98
|
+
throw new Error(`Unsupported URI format: ${uri}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/services/id-generator.ts"],"names":[],"mappings":"AAAA;;;;;EAKE;AAEF,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,wDAAwD;AACxD,wDAAwD;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAEvE,MAAM,OAAO,WAAW;IACpB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB;QACrB,OAAO,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,+BAA+B,CAAC,MAAc,EAAE,IAAY,EAAE,IAAY;QAC7E,MAAM,KAAK,GAAG,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAa;QACpC,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3E,OAAO,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,YAAY;QACf,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,aAAa,CAAC,QAAgB;QACjC,OAAO,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,GAAW;QAC9B,gBAAgB,CAAC,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;QAElE,sBAAsB;QACtB,MAAM,SAAS,GAAG,eAAe,CAAC;QAClC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,wEAAwE;QACxE,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,OAAO,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,kBAAkB;QAClB,MAAM,YAAY,GAAG,WAAW,CAAC;QACjC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACrD,8EAA8E;YAC9E,IAAI,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,OAAO,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;CAGJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single export for cache/proof-of-work key-value store.
|
|
3
|
+
* Uses Redis when REDIS_URL is set (non-empty), in-memory when REDIS_URL is unset or empty.
|
|
4
|
+
*/
|
|
5
|
+
import type { IKeyValueStore } from './key-value-store.js';
|
|
6
|
+
export declare const keyValueStore: IKeyValueStore;
|
|
7
|
+
//# sourceMappingURL=key-value-store-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-value-store-factory.d.ts","sourceRoot":"","sources":["../../src/services/key-value-store-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAW3D,eAAO,MAAM,aAAa,EAAE,cAAsC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single export for cache/proof-of-work key-value store.
|
|
3
|
+
* Uses Redis when REDIS_URL is set (non-empty), in-memory when REDIS_URL is unset or empty.
|
|
4
|
+
*/
|
|
5
|
+
import { USE_REDIS } from '../config.js';
|
|
6
|
+
import { MemoryStore } from './memory-store.js';
|
|
7
|
+
import { RedisService } from './redis.js';
|
|
8
|
+
function createKeyValueStore() {
|
|
9
|
+
if (!USE_REDIS) {
|
|
10
|
+
return new MemoryStore();
|
|
11
|
+
}
|
|
12
|
+
return new RedisService();
|
|
13
|
+
}
|
|
14
|
+
export const keyValueStore = createKeyValueStore();
|
|
15
|
+
//# sourceMappingURL=key-value-store-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-value-store-factory.js","sourceRoot":"","sources":["../../src/services/key-value-store-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,SAAS,mBAAmB;IAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,WAAW,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,YAAY,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmB,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key-value store abstraction for cache and proof-of-work state.
|
|
3
|
+
* Implementations: Redis (production) or in-memory (dev/simple setups without Redis).
|
|
4
|
+
*/
|
|
5
|
+
/** Matches RedisService API: prefix + space namespacing applied by implementation. */
|
|
6
|
+
export interface IKeyValueStore {
|
|
7
|
+
get(key: string): Promise<string | null>;
|
|
8
|
+
set(key: string, value: string, ttl?: number): Promise<void>;
|
|
9
|
+
del(key: string): Promise<void>;
|
|
10
|
+
getJson<T>(key: string): Promise<T | null>;
|
|
11
|
+
setJson<T>(key: string, value: T, ttl?: number): Promise<void>;
|
|
12
|
+
hget(hash: string, field: string): Promise<string | null>;
|
|
13
|
+
hset(hash: string, field: string, value: string): Promise<void>;
|
|
14
|
+
hgetall(hash: string): Promise<Record<string, string> | null>;
|
|
15
|
+
hsetall(hash: string, data: Record<string, string>): Promise<void>;
|
|
16
|
+
incr(key: string): Promise<number>;
|
|
17
|
+
exists(key: string): Promise<boolean>;
|
|
18
|
+
keys(pattern: string): Promise<string[]>;
|
|
19
|
+
publish(channel: string, message: string): Promise<number>;
|
|
20
|
+
connect(): Promise<void>;
|
|
21
|
+
disconnect(): Promise<void>;
|
|
22
|
+
isConnected(): boolean;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=key-value-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-value-store.d.ts","sourceRoot":"","sources":["../../src/services/key-value-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,WAAW,IAAI,OAAO,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-value-store.js","sourceRoot":"","sources":["../../src/services/key-value-store.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ProofOfWorkDefinition } from '../../types/memory.js';
|
|
2
|
+
export interface ChallengeBlockMatch {
|
|
3
|
+
/** Start index of the opening ``` in content. */
|
|
4
|
+
start: number;
|
|
5
|
+
/** End index (after closing ```) in content. */
|
|
6
|
+
end: number;
|
|
7
|
+
proof: ProofOfWorkDefinition;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Find all PoW boundaries in content: each ```json block with {"challenge": ...}.
|
|
11
|
+
* Steps are defined by these boundaries, not by H2 headings.
|
|
12
|
+
*/
|
|
13
|
+
export declare function findAllChallengeBlocks(content: string): ChallengeBlockMatch[];
|
|
14
|
+
export declare function extractProofOfWork(content: string): {
|
|
15
|
+
cleaned: string;
|
|
16
|
+
proof?: ProofOfWorkDefinition;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=chain-builder-proof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-builder-proof.d.ts","sourceRoot":"","sources":["../../../src/services/memory/chain-builder-proof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AASnE,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAgC7E;AA4BD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAMtG"}
|