@massa-ai/core 1.2.1
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/dist/controllers/context-controller.d.ts +52 -0
- package/dist/controllers/context-controller.d.ts.map +1 -0
- package/dist/controllers/context-controller.js +377 -0
- package/dist/controllers/context-controller.js.map +1 -0
- package/dist/controllers/executor-controller.d.ts +42 -0
- package/dist/controllers/executor-controller.d.ts.map +1 -0
- package/dist/controllers/executor-controller.js +229 -0
- package/dist/controllers/executor-controller.js.map +1 -0
- package/dist/controllers/graph-controller.d.ts +106 -0
- package/dist/controllers/graph-controller.d.ts.map +1 -0
- package/dist/controllers/graph-controller.js +142 -0
- package/dist/controllers/graph-controller.js.map +1 -0
- package/dist/controllers/index.d.ts +17 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +12 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/memory-controller.d.ts +78 -0
- package/dist/controllers/memory-controller.d.ts.map +1 -0
- package/dist/controllers/memory-controller.js +232 -0
- package/dist/controllers/memory-controller.js.map +1 -0
- package/dist/controllers/search-controller.d.ts +113 -0
- package/dist/controllers/search-controller.d.ts.map +1 -0
- package/dist/controllers/search-controller.js +314 -0
- package/dist/controllers/search-controller.js.map +1 -0
- package/dist/data/audit/operation-log-contract.d.ts +68 -0
- package/dist/data/audit/operation-log-contract.d.ts.map +1 -0
- package/dist/data/audit/operation-log-contract.js +16 -0
- package/dist/data/audit/operation-log-contract.js.map +1 -0
- package/dist/data/audit/operation-log-factory.d.ts +4 -0
- package/dist/data/audit/operation-log-factory.d.ts.map +1 -0
- package/dist/data/audit/operation-log-factory.js +8 -0
- package/dist/data/audit/operation-log-factory.js.map +1 -0
- package/dist/data/audit/operation-log-pg.d.ts +34 -0
- package/dist/data/audit/operation-log-pg.d.ts.map +1 -0
- package/dist/data/audit/operation-log-pg.js +125 -0
- package/dist/data/audit/operation-log-pg.js.map +1 -0
- package/dist/data/db-connection.d.ts +10 -0
- package/dist/data/db-connection.d.ts.map +1 -0
- package/dist/data/db-connection.js +33 -0
- package/dist/data/db-connection.js.map +1 -0
- package/dist/data/graph-generation/graph-generation-contract.d.ts +94 -0
- package/dist/data/graph-generation/graph-generation-contract.d.ts.map +1 -0
- package/dist/data/graph-generation/graph-generation-contract.js +2 -0
- package/dist/data/graph-generation/graph-generation-contract.js.map +1 -0
- package/dist/data/graph-generation/graph-generation-repository-factory.d.ts +3 -0
- package/dist/data/graph-generation/graph-generation-repository-factory.d.ts.map +1 -0
- package/dist/data/graph-generation/graph-generation-repository-factory.js +7 -0
- package/dist/data/graph-generation/graph-generation-repository-factory.js.map +1 -0
- package/dist/data/graph-generation/graph-generation-repository-pg.d.ts +12 -0
- package/dist/data/graph-generation/graph-generation-repository-pg.d.ts.map +1 -0
- package/dist/data/graph-generation/graph-generation-repository-pg.js +335 -0
- package/dist/data/graph-generation/graph-generation-repository-pg.js.map +1 -0
- package/dist/data/graph-generation/index.d.ts +4 -0
- package/dist/data/graph-generation/index.d.ts.map +1 -0
- package/dist/data/graph-generation/index.js +3 -0
- package/dist/data/graph-generation/index.js.map +1 -0
- package/dist/data/handoff/handoff-contract.d.ts +32 -0
- package/dist/data/handoff/handoff-contract.d.ts.map +1 -0
- package/dist/data/handoff/handoff-contract.js +12 -0
- package/dist/data/handoff/handoff-contract.js.map +1 -0
- package/dist/data/handoff/handoff-repository-pg.d.ts +22 -0
- package/dist/data/handoff/handoff-repository-pg.d.ts.map +1 -0
- package/dist/data/handoff/handoff-repository-pg.js +177 -0
- package/dist/data/handoff/handoff-repository-pg.js.map +1 -0
- package/dist/data/handoff/handoff-repository.d.ts +7 -0
- package/dist/data/handoff/handoff-repository.d.ts.map +1 -0
- package/dist/data/handoff/handoff-repository.js +9 -0
- package/dist/data/handoff/handoff-repository.js.map +1 -0
- package/dist/data/keyword/keyword-search-factory.d.ts +9 -0
- package/dist/data/keyword/keyword-search-factory.d.ts.map +1 -0
- package/dist/data/keyword/keyword-search-factory.js +23 -0
- package/dist/data/keyword/keyword-search-factory.js.map +1 -0
- package/dist/data/keyword/keyword-search-pg.d.ts +52 -0
- package/dist/data/keyword/keyword-search-pg.d.ts.map +1 -0
- package/dist/data/keyword/keyword-search-pg.js +423 -0
- package/dist/data/keyword/keyword-search-pg.js.map +1 -0
- package/dist/data/managed-runs/managed-run-contract.d.ts +193 -0
- package/dist/data/managed-runs/managed-run-contract.d.ts.map +1 -0
- package/dist/data/managed-runs/managed-run-contract.js +41 -0
- package/dist/data/managed-runs/managed-run-contract.js.map +1 -0
- package/dist/data/managed-runs/managed-run-repository-pg.d.ts +48 -0
- package/dist/data/managed-runs/managed-run-repository-pg.d.ts.map +1 -0
- package/dist/data/managed-runs/managed-run-repository-pg.js +316 -0
- package/dist/data/managed-runs/managed-run-repository-pg.js.map +1 -0
- package/dist/data/memory/index.d.ts +6 -0
- package/dist/data/memory/index.d.ts.map +1 -0
- package/dist/data/memory/index.js +5 -0
- package/dist/data/memory/index.js.map +1 -0
- package/dist/data/memory/memory-repository-contract.d.ts +54 -0
- package/dist/data/memory/memory-repository-contract.d.ts.map +1 -0
- package/dist/data/memory/memory-repository-contract.js +2 -0
- package/dist/data/memory/memory-repository-contract.js.map +1 -0
- package/dist/data/memory/memory-repository-factory.d.ts +4 -0
- package/dist/data/memory/memory-repository-factory.d.ts.map +1 -0
- package/dist/data/memory/memory-repository-factory.js +8 -0
- package/dist/data/memory/memory-repository-factory.js.map +1 -0
- package/dist/data/memory/memory-repository-pg.d.ts +111 -0
- package/dist/data/memory/memory-repository-pg.d.ts.map +1 -0
- package/dist/data/memory/memory-repository-pg.js +448 -0
- package/dist/data/memory/memory-repository-pg.js.map +1 -0
- package/dist/data/memory/memory-repository.d.ts +3 -0
- package/dist/data/memory/memory-repository.d.ts.map +1 -0
- package/dist/data/memory/memory-repository.js +2 -0
- package/dist/data/memory/memory-repository.js.map +1 -0
- package/dist/data/memory/observation-contract.d.ts +47 -0
- package/dist/data/memory/observation-contract.d.ts.map +1 -0
- package/dist/data/memory/observation-contract.js +13 -0
- package/dist/data/memory/observation-contract.js.map +1 -0
- package/dist/data/memory/observation-repository-pg.d.ts +64 -0
- package/dist/data/memory/observation-repository-pg.d.ts.map +1 -0
- package/dist/data/memory/observation-repository-pg.js +244 -0
- package/dist/data/memory/observation-repository-pg.js.map +1 -0
- package/dist/data/memory/observation-repository.d.ts +6 -0
- package/dist/data/memory/observation-repository.d.ts.map +1 -0
- package/dist/data/memory/observation-repository.js +8 -0
- package/dist/data/memory/observation-repository.js.map +1 -0
- package/dist/data/proposal/proposal-contract.d.ts +47 -0
- package/dist/data/proposal/proposal-contract.d.ts.map +1 -0
- package/dist/data/proposal/proposal-contract.js +32 -0
- package/dist/data/proposal/proposal-contract.js.map +1 -0
- package/dist/data/proposal/proposal-repository-pg.d.ts +20 -0
- package/dist/data/proposal/proposal-repository-pg.d.ts.map +1 -0
- package/dist/data/proposal/proposal-repository-pg.js +199 -0
- package/dist/data/proposal/proposal-repository-pg.js.map +1 -0
- package/dist/data/proposal/proposal-repository.d.ts +7 -0
- package/dist/data/proposal/proposal-repository.d.ts.map +1 -0
- package/dist/data/proposal/proposal-repository.js +9 -0
- package/dist/data/proposal/proposal-repository.js.map +1 -0
- package/dist/data/symbol/symbol-repo-generation.d.ts +61 -0
- package/dist/data/symbol/symbol-repo-generation.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-generation.js +380 -0
- package/dist/data/symbol/symbol-repo-generation.js.map +1 -0
- package/dist/data/symbol/symbol-repo-graph.d.ts +65 -0
- package/dist/data/symbol/symbol-repo-graph.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-graph.js +457 -0
- package/dist/data/symbol/symbol-repo-graph.js.map +1 -0
- package/dist/data/symbol/symbol-repo-identity.d.ts +21 -0
- package/dist/data/symbol/symbol-repo-identity.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-identity.js +96 -0
- package/dist/data/symbol/symbol-repo-identity.js.map +1 -0
- package/dist/data/symbol/symbol-repo-mappers.d.ts +87 -0
- package/dist/data/symbol/symbol-repo-mappers.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-mappers.js +91 -0
- package/dist/data/symbol/symbol-repo-mappers.js.map +1 -0
- package/dist/data/symbol/symbol-repo-queries.d.ts +54 -0
- package/dist/data/symbol/symbol-repo-queries.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-queries.js +331 -0
- package/dist/data/symbol/symbol-repo-queries.js.map +1 -0
- package/dist/data/symbol/symbol-repo-types.d.ts +243 -0
- package/dist/data/symbol/symbol-repo-types.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-types.js +8 -0
- package/dist/data/symbol/symbol-repo-types.js.map +1 -0
- package/dist/data/symbol/symbol-repo-workspace.d.ts +20 -0
- package/dist/data/symbol/symbol-repo-workspace.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repo-workspace.js +148 -0
- package/dist/data/symbol/symbol-repo-workspace.js.map +1 -0
- package/dist/data/symbol/symbol-repository-factory.d.ts +10 -0
- package/dist/data/symbol/symbol-repository-factory.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repository-factory.js +16 -0
- package/dist/data/symbol/symbol-repository-factory.js.map +1 -0
- package/dist/data/symbol/symbol-repository-pg.d.ts +84 -0
- package/dist/data/symbol/symbol-repository-pg.d.ts.map +1 -0
- package/dist/data/symbol/symbol-repository-pg.js +81 -0
- package/dist/data/symbol/symbol-repository-pg.js.map +1 -0
- package/dist/data/vector/base-vector-store.d.ts +137 -0
- package/dist/data/vector/base-vector-store.d.ts.map +1 -0
- package/dist/data/vector/base-vector-store.js +166 -0
- package/dist/data/vector/base-vector-store.js.map +1 -0
- package/dist/data/vector/hybrid-search.d.ts +64 -0
- package/dist/data/vector/hybrid-search.d.ts.map +1 -0
- package/dist/data/vector/hybrid-search.js +238 -0
- package/dist/data/vector/hybrid-search.js.map +1 -0
- package/dist/data/vector/index.d.ts +9 -0
- package/dist/data/vector/index.d.ts.map +1 -0
- package/dist/data/vector/index.js +7 -0
- package/dist/data/vector/index.js.map +1 -0
- package/dist/data/vector/postgres-vector-store.d.ts +118 -0
- package/dist/data/vector/postgres-vector-store.d.ts.map +1 -0
- package/dist/data/vector/postgres-vector-store.js +703 -0
- package/dist/data/vector/postgres-vector-store.js.map +1 -0
- package/dist/data/vector/vector-store-factory.d.ts +9 -0
- package/dist/data/vector/vector-store-factory.d.ts.map +1 -0
- package/dist/data/vector/vector-store-factory.js +46 -0
- package/dist/data/vector/vector-store-factory.js.map +1 -0
- package/dist/generated/prisma/client.d.ts +1 -0
- package/dist/generated/prisma/client.js +5 -0
- package/dist/generated/prisma/default.d.ts +1 -0
- package/dist/generated/prisma/default.js +5 -0
- package/dist/generated/prisma/edge.d.ts +1 -0
- package/dist/generated/prisma/edge.js +601 -0
- package/dist/generated/prisma/index-browser.js +627 -0
- package/dist/generated/prisma/index.d.ts +52672 -0
- package/dist/generated/prisma/index.js +601 -0
- package/dist/generated/prisma/package.json +144 -0
- package/dist/generated/prisma/query_compiler_fast_bg.js +2 -0
- package/dist/generated/prisma/query_compiler_fast_bg.wasm +0 -0
- package/dist/generated/prisma/query_compiler_fast_bg.wasm-base64.js +2 -0
- package/dist/generated/prisma/runtime/client.d.ts +3386 -0
- package/dist/generated/prisma/runtime/client.js +86 -0
- package/dist/generated/prisma/runtime/index-browser.d.ts +90 -0
- package/dist/generated/prisma/runtime/index-browser.js +6 -0
- package/dist/generated/prisma/runtime/wasm-compiler-edge.js +76 -0
- package/dist/generated/prisma/schema.prisma +746 -0
- package/dist/generated/prisma/wasm-edge-light-loader.mjs +5 -0
- package/dist/generated/prisma/wasm-worker-loader.mjs +5 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/models/CacheEntry.d.ts +66 -0
- package/dist/models/CacheEntry.d.ts.map +1 -0
- package/dist/models/CacheEntry.js +148 -0
- package/dist/models/CacheEntry.js.map +1 -0
- package/dist/models/CompressedContent.d.ts +59 -0
- package/dist/models/CompressedContent.d.ts.map +1 -0
- package/dist/models/CompressedContent.js +169 -0
- package/dist/models/CompressedContent.js.map +1 -0
- package/dist/models/Memory.d.ts +9 -0
- package/dist/models/Memory.d.ts.map +1 -0
- package/dist/models/Memory.js +10 -0
- package/dist/models/Memory.js.map +1 -0
- package/dist/models/index.d.ts +6 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +6 -0
- package/dist/models/index.js.map +1 -0
- package/dist/scripts/beir-benchmark.d.ts +3 -0
- package/dist/scripts/beir-benchmark.d.ts.map +1 -0
- package/dist/scripts/beir-benchmark.js +275 -0
- package/dist/scripts/beir-benchmark.js.map +1 -0
- package/dist/scripts/create-sicad-beir-fixture.d.ts +3 -0
- package/dist/scripts/create-sicad-beir-fixture.d.ts.map +1 -0
- package/dist/scripts/create-sicad-beir-fixture.js +200 -0
- package/dist/scripts/create-sicad-beir-fixture.js.map +1 -0
- package/dist/scripts/symbol-benchmark.d.ts +24 -0
- package/dist/scripts/symbol-benchmark.d.ts.map +1 -0
- package/dist/scripts/symbol-benchmark.js +319 -0
- package/dist/scripts/symbol-benchmark.js.map +1 -0
- package/dist/services/bootstrap/bootstrap-service.d.ts +157 -0
- package/dist/services/bootstrap/bootstrap-service.d.ts.map +1 -0
- package/dist/services/bootstrap/bootstrap-service.js +588 -0
- package/dist/services/bootstrap/bootstrap-service.js.map +1 -0
- package/dist/services/cache/embedding-cache-contract.d.ts +18 -0
- package/dist/services/cache/embedding-cache-contract.d.ts.map +1 -0
- package/dist/services/cache/embedding-cache-contract.js +2 -0
- package/dist/services/cache/embedding-cache-contract.js.map +1 -0
- package/dist/services/cache/embedding-cache-factory.d.ts +4 -0
- package/dist/services/cache/embedding-cache-factory.d.ts.map +1 -0
- package/dist/services/cache/embedding-cache-factory.js +8 -0
- package/dist/services/cache/embedding-cache-factory.js.map +1 -0
- package/dist/services/cache/embedding-cache-pg.d.ts +78 -0
- package/dist/services/cache/embedding-cache-pg.d.ts.map +1 -0
- package/dist/services/cache/embedding-cache-pg.js +220 -0
- package/dist/services/cache/embedding-cache-pg.js.map +1 -0
- package/dist/services/cache/index.d.ts +5 -0
- package/dist/services/cache/index.d.ts.map +1 -0
- package/dist/services/cache/index.js +5 -0
- package/dist/services/cache/index.js.map +1 -0
- package/dist/services/cache/l1-memory-cache.d.ts +71 -0
- package/dist/services/cache/l1-memory-cache.d.ts.map +1 -0
- package/dist/services/cache/l1-memory-cache.js +191 -0
- package/dist/services/cache/l1-memory-cache.js.map +1 -0
- package/dist/services/checkpoint/auto-checkpointer.d.ts +69 -0
- package/dist/services/checkpoint/auto-checkpointer.d.ts.map +1 -0
- package/dist/services/checkpoint/auto-checkpointer.js +143 -0
- package/dist/services/checkpoint/auto-checkpointer.js.map +1 -0
- package/dist/services/checkpoint/checkpoint-manager.d.ts +9 -0
- package/dist/services/checkpoint/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/checkpoint/checkpoint-manager.js +25 -0
- package/dist/services/checkpoint/checkpoint-manager.js.map +1 -0
- package/dist/services/checkpoint/checkpoint-store-pg.d.ts +107 -0
- package/dist/services/checkpoint/checkpoint-store-pg.d.ts.map +1 -0
- package/dist/services/checkpoint/checkpoint-store-pg.js +476 -0
- package/dist/services/checkpoint/checkpoint-store-pg.js.map +1 -0
- package/dist/services/checkpoint/checkpoint-store.d.ts +100 -0
- package/dist/services/checkpoint/checkpoint-store.d.ts.map +1 -0
- package/dist/services/checkpoint/checkpoint-store.js +24 -0
- package/dist/services/checkpoint/checkpoint-store.js.map +1 -0
- package/dist/services/checkpoint/index.d.ts +9 -0
- package/dist/services/checkpoint/index.d.ts.map +1 -0
- package/dist/services/checkpoint/index.js +8 -0
- package/dist/services/checkpoint/index.js.map +1 -0
- package/dist/services/compression/code-compressor.d.ts +76 -0
- package/dist/services/compression/code-compressor.d.ts.map +1 -0
- package/dist/services/compression/code-compressor.js +395 -0
- package/dist/services/compression/code-compressor.js.map +1 -0
- package/dist/services/compression/index.d.ts +5 -0
- package/dist/services/compression/index.d.ts.map +1 -0
- package/dist/services/compression/index.js +5 -0
- package/dist/services/compression/index.js.map +1 -0
- package/dist/services/context/session-file-cache.d.ts +87 -0
- package/dist/services/context/session-file-cache.d.ts.map +1 -0
- package/dist/services/context/session-file-cache.js +213 -0
- package/dist/services/context/session-file-cache.js.map +1 -0
- package/dist/services/embeddings/cached-provider.d.ts +98 -0
- package/dist/services/embeddings/cached-provider.d.ts.map +1 -0
- package/dist/services/embeddings/cached-provider.js +162 -0
- package/dist/services/embeddings/cached-provider.js.map +1 -0
- package/dist/services/embeddings/config.d.ts +89 -0
- package/dist/services/embeddings/config.d.ts.map +1 -0
- package/dist/services/embeddings/config.js +341 -0
- package/dist/services/embeddings/config.js.map +1 -0
- package/dist/services/embeddings/embedding-service.d.ts +71 -0
- package/dist/services/embeddings/embedding-service.d.ts.map +1 -0
- package/dist/services/embeddings/embedding-service.js +147 -0
- package/dist/services/embeddings/embedding-service.js.map +1 -0
- package/dist/services/embeddings/index.d.ts +105 -0
- package/dist/services/embeddings/index.d.ts.map +1 -0
- package/dist/services/embeddings/index.js +174 -0
- package/dist/services/embeddings/index.js.map +1 -0
- package/dist/services/embeddings/provider.d.ts +164 -0
- package/dist/services/embeddings/provider.d.ts.map +1 -0
- package/dist/services/embeddings/provider.js +547 -0
- package/dist/services/embeddings/provider.js.map +1 -0
- package/dist/services/embeddings/providers/local-transformers.d.ts +80 -0
- package/dist/services/embeddings/providers/local-transformers.d.ts.map +1 -0
- package/dist/services/embeddings/providers/local-transformers.js +222 -0
- package/dist/services/embeddings/providers/local-transformers.js.map +1 -0
- package/dist/services/embeddings/rate-limiter.d.ts +55 -0
- package/dist/services/embeddings/rate-limiter.d.ts.map +1 -0
- package/dist/services/embeddings/rate-limiter.js +138 -0
- package/dist/services/embeddings/rate-limiter.js.map +1 -0
- package/dist/services/etl/graph-generation-coordinator.d.ts +26 -0
- package/dist/services/etl/graph-generation-coordinator.d.ts.map +1 -0
- package/dist/services/etl/graph-generation-coordinator.js +63 -0
- package/dist/services/etl/graph-generation-coordinator.js.map +1 -0
- package/dist/services/etl/index.d.ts +11 -0
- package/dist/services/etl/index.d.ts.map +1 -0
- package/dist/services/etl/index.js +9 -0
- package/dist/services/etl/index.js.map +1 -0
- package/dist/services/etl/pipeline.d.ts +70 -0
- package/dist/services/etl/pipeline.d.ts.map +1 -0
- package/dist/services/etl/pipeline.js +553 -0
- package/dist/services/etl/pipeline.js.map +1 -0
- package/dist/services/etl/stage-context.d.ts +153 -0
- package/dist/services/etl/stage-context.d.ts.map +1 -0
- package/dist/services/etl/stage-context.js +11 -0
- package/dist/services/etl/stage-context.js.map +1 -0
- package/dist/services/etl/stages/discover.d.ts +40 -0
- package/dist/services/etl/stages/discover.d.ts.map +1 -0
- package/dist/services/etl/stages/discover.js +213 -0
- package/dist/services/etl/stages/discover.js.map +1 -0
- package/dist/services/etl/stages/load.d.ts +39 -0
- package/dist/services/etl/stages/load.d.ts.map +1 -0
- package/dist/services/etl/stages/load.js +361 -0
- package/dist/services/etl/stages/load.js.map +1 -0
- package/dist/services/etl/stages/parse.d.ts +58 -0
- package/dist/services/etl/stages/parse.d.ts.map +1 -0
- package/dist/services/etl/stages/parse.js +536 -0
- package/dist/services/etl/stages/parse.js.map +1 -0
- package/dist/services/etl/stages/resolve.d.ts +66 -0
- package/dist/services/etl/stages/resolve.d.ts.map +1 -0
- package/dist/services/etl/stages/resolve.js +503 -0
- package/dist/services/etl/stages/resolve.js.map +1 -0
- package/dist/services/events/event-bus.d.ts +166 -0
- package/dist/services/events/event-bus.d.ts.map +1 -0
- package/dist/services/events/event-bus.js +32 -0
- package/dist/services/events/event-bus.js.map +1 -0
- package/dist/services/events/index.d.ts +6 -0
- package/dist/services/events/index.d.ts.map +1 -0
- package/dist/services/events/index.js +5 -0
- package/dist/services/events/index.js.map +1 -0
- package/dist/services/executor/executor.d.ts +103 -0
- package/dist/services/executor/executor.d.ts.map +1 -0
- package/dist/services/executor/executor.js +518 -0
- package/dist/services/executor/executor.js.map +1 -0
- package/dist/services/executor/index.d.ts +20 -0
- package/dist/services/executor/index.d.ts.map +1 -0
- package/dist/services/executor/index.js +16 -0
- package/dist/services/executor/index.js.map +1 -0
- package/dist/services/executor/intent-search.d.ts +52 -0
- package/dist/services/executor/intent-search.d.ts.map +1 -0
- package/dist/services/executor/intent-search.js +195 -0
- package/dist/services/executor/intent-search.js.map +1 -0
- package/dist/services/executor/run-pool.d.ts +53 -0
- package/dist/services/executor/run-pool.d.ts.map +1 -0
- package/dist/services/executor/run-pool.js +71 -0
- package/dist/services/executor/run-pool.js.map +1 -0
- package/dist/services/executor/runtime.d.ts +82 -0
- package/dist/services/executor/runtime.d.ts.map +1 -0
- package/dist/services/executor/runtime.js +254 -0
- package/dist/services/executor/runtime.js.map +1 -0
- package/dist/services/executor/sandbox.d.ts +67 -0
- package/dist/services/executor/sandbox.d.ts.map +1 -0
- package/dist/services/executor/sandbox.js +186 -0
- package/dist/services/executor/sandbox.js.map +1 -0
- package/dist/services/graph/graph-queries.d.ts +110 -0
- package/dist/services/graph/graph-queries.d.ts.map +1 -0
- package/dist/services/graph/graph-queries.js +336 -0
- package/dist/services/graph/graph-queries.js.map +1 -0
- package/dist/services/graph/graph-store-factory.d.ts +12 -0
- package/dist/services/graph/graph-store-factory.d.ts.map +1 -0
- package/dist/services/graph/graph-store-factory.js +30 -0
- package/dist/services/graph/graph-store-factory.js.map +1 -0
- package/dist/services/graph/graph-store-pg.d.ts +127 -0
- package/dist/services/graph/graph-store-pg.d.ts.map +1 -0
- package/dist/services/graph/graph-store-pg.js +422 -0
- package/dist/services/graph/graph-store-pg.js.map +1 -0
- package/dist/services/graph/index.d.ts +7 -0
- package/dist/services/graph/index.d.ts.map +1 -0
- package/dist/services/graph/index.js +6 -0
- package/dist/services/graph/index.js.map +1 -0
- package/dist/services/graph/memory-graph.service.d.ts +97 -0
- package/dist/services/graph/memory-graph.service.d.ts.map +1 -0
- package/dist/services/graph/memory-graph.service.js +171 -0
- package/dist/services/graph/memory-graph.service.js.map +1 -0
- package/dist/services/graph/relation-extractor.d.ts +61 -0
- package/dist/services/graph/relation-extractor.d.ts.map +1 -0
- package/dist/services/graph/relation-extractor.js +306 -0
- package/dist/services/graph/relation-extractor.js.map +1 -0
- package/dist/services/graph/types.d.ts +127 -0
- package/dist/services/graph/types.d.ts.map +1 -0
- package/dist/services/graph/types.js +8 -0
- package/dist/services/graph/types.js.map +1 -0
- package/dist/services/handoff/handoff-auto-injector.d.ts +32 -0
- package/dist/services/handoff/handoff-auto-injector.d.ts.map +1 -0
- package/dist/services/handoff/handoff-auto-injector.js +72 -0
- package/dist/services/handoff/handoff-auto-injector.js.map +1 -0
- package/dist/services/handoff/handoff-service.d.ts +83 -0
- package/dist/services/handoff/handoff-service.d.ts.map +1 -0
- package/dist/services/handoff/handoff-service.js +238 -0
- package/dist/services/handoff/handoff-service.js.map +1 -0
- package/dist/services/health/local-health-checker.d.ts +49 -0
- package/dist/services/health/local-health-checker.d.ts.map +1 -0
- package/dist/services/health/local-health-checker.js +82 -0
- package/dist/services/health/local-health-checker.js.map +1 -0
- package/dist/services/hooks/attribution-resolver.d.ts +113 -0
- package/dist/services/hooks/attribution-resolver.d.ts.map +1 -0
- package/dist/services/hooks/attribution-resolver.js +227 -0
- package/dist/services/hooks/attribution-resolver.js.map +1 -0
- package/dist/services/hooks/co-retrieval-hook.d.ts +63 -0
- package/dist/services/hooks/co-retrieval-hook.d.ts.map +1 -0
- package/dist/services/hooks/co-retrieval-hook.js +145 -0
- package/dist/services/hooks/co-retrieval-hook.js.map +1 -0
- package/dist/services/hooks/compaction-snapshot-service.d.ts +81 -0
- package/dist/services/hooks/compaction-snapshot-service.d.ts.map +1 -0
- package/dist/services/hooks/compaction-snapshot-service.js +308 -0
- package/dist/services/hooks/compaction-snapshot-service.js.map +1 -0
- package/dist/services/hooks/hook-service.d.ts +100 -0
- package/dist/services/hooks/hook-service.d.ts.map +1 -0
- package/dist/services/hooks/hook-service.js +272 -0
- package/dist/services/hooks/hook-service.js.map +1 -0
- package/dist/services/hooks/observation-extractor.d.ts +30 -0
- package/dist/services/hooks/observation-extractor.d.ts.map +1 -0
- package/dist/services/hooks/observation-extractor.js +364 -0
- package/dist/services/hooks/observation-extractor.js.map +1 -0
- package/dist/services/hooks/search-session-hook.d.ts +34 -0
- package/dist/services/hooks/search-session-hook.d.ts.map +1 -0
- package/dist/services/hooks/search-session-hook.js +121 -0
- package/dist/services/hooks/search-session-hook.js.map +1 -0
- package/dist/services/hooks/session-pin-store.d.ts +32 -0
- package/dist/services/hooks/session-pin-store.d.ts.map +1 -0
- package/dist/services/hooks/session-pin-store.js +57 -0
- package/dist/services/hooks/session-pin-store.js.map +1 -0
- package/dist/services/hooks/writer-queue.d.ts +35 -0
- package/dist/services/hooks/writer-queue.d.ts.map +1 -0
- package/dist/services/hooks/writer-queue.js +58 -0
- package/dist/services/hooks/writer-queue.js.map +1 -0
- package/dist/services/index.d.ts +108 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +100 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/jobs/auto-improve-apply.d.ts +32 -0
- package/dist/services/jobs/auto-improve-apply.d.ts.map +1 -0
- package/dist/services/jobs/auto-improve-apply.js +135 -0
- package/dist/services/jobs/auto-improve-apply.js.map +1 -0
- package/dist/services/jobs/auto-improve-config.d.ts +25 -0
- package/dist/services/jobs/auto-improve-config.d.ts.map +1 -0
- package/dist/services/jobs/auto-improve-config.js +40 -0
- package/dist/services/jobs/auto-improve-config.js.map +1 -0
- package/dist/services/jobs/auto-improve-job.d.ts +89 -0
- package/dist/services/jobs/auto-improve-job.d.ts.map +1 -0
- package/dist/services/jobs/auto-improve-job.js +93 -0
- package/dist/services/jobs/auto-improve-job.js.map +1 -0
- package/dist/services/jobs/auto-improve-llm.d.ts +25 -0
- package/dist/services/jobs/auto-improve-llm.d.ts.map +1 -0
- package/dist/services/jobs/auto-improve-llm.js +88 -0
- package/dist/services/jobs/auto-improve-llm.js.map +1 -0
- package/dist/services/jobs/auto-improve-ops.d.ts +11 -0
- package/dist/services/jobs/auto-improve-ops.d.ts.map +1 -0
- package/dist/services/jobs/auto-improve-ops.js +170 -0
- package/dist/services/jobs/auto-improve-ops.js.map +1 -0
- package/dist/services/jobs/auto-improve-patterns.d.ts +18 -0
- package/dist/services/jobs/auto-improve-patterns.d.ts.map +1 -0
- package/dist/services/jobs/auto-improve-patterns.js +160 -0
- package/dist/services/jobs/auto-improve-patterns.js.map +1 -0
- package/dist/services/jobs/index-job-store-contract.d.ts +22 -0
- package/dist/services/jobs/index-job-store-contract.d.ts.map +1 -0
- package/dist/services/jobs/index-job-store-contract.js +11 -0
- package/dist/services/jobs/index-job-store-contract.js.map +1 -0
- package/dist/services/jobs/index-job-store-pg.d.ts +77 -0
- package/dist/services/jobs/index-job-store-pg.d.ts.map +1 -0
- package/dist/services/jobs/index-job-store-pg.js +403 -0
- package/dist/services/jobs/index-job-store-pg.js.map +1 -0
- package/dist/services/jobs/index-job-store.d.ts +5 -0
- package/dist/services/jobs/index-job-store.d.ts.map +1 -0
- package/dist/services/jobs/index-job-store.js +7 -0
- package/dist/services/jobs/index-job-store.js.map +1 -0
- package/dist/services/jobs/index-job-tracker.d.ts +140 -0
- package/dist/services/jobs/index-job-tracker.d.ts.map +1 -0
- package/dist/services/jobs/index-job-tracker.js +344 -0
- package/dist/services/jobs/index-job-tracker.js.map +1 -0
- package/dist/services/jobs/index.d.ts +6 -0
- package/dist/services/jobs/index.d.ts.map +1 -0
- package/dist/services/jobs/index.js +6 -0
- package/dist/services/jobs/index.js.map +1 -0
- package/dist/services/jobs/memory-consolidation-job.d.ts +70 -0
- package/dist/services/jobs/memory-consolidation-job.d.ts.map +1 -0
- package/dist/services/jobs/memory-consolidation-job.js +312 -0
- package/dist/services/jobs/memory-consolidation-job.js.map +1 -0
- package/dist/services/jobs/observation-consolidation-job.d.ts +63 -0
- package/dist/services/jobs/observation-consolidation-job.d.ts.map +1 -0
- package/dist/services/jobs/observation-consolidation-job.js +253 -0
- package/dist/services/jobs/observation-consolidation-job.js.map +1 -0
- package/dist/services/memory/consolidator.d.ts +92 -0
- package/dist/services/memory/consolidator.d.ts.map +1 -0
- package/dist/services/memory/consolidator.js +182 -0
- package/dist/services/memory/consolidator.js.map +1 -0
- package/dist/services/memory/decay.d.ts +56 -0
- package/dist/services/memory/decay.d.ts.map +1 -0
- package/dist/services/memory/decay.js +73 -0
- package/dist/services/memory/decay.js.map +1 -0
- package/dist/services/memory/index.d.ts +12 -0
- package/dist/services/memory/index.d.ts.map +1 -0
- package/dist/services/memory/index.js +9 -0
- package/dist/services/memory/index.js.map +1 -0
- package/dist/services/memory/llm-client.d.ts +111 -0
- package/dist/services/memory/llm-client.d.ts.map +1 -0
- package/dist/services/memory/llm-client.js +450 -0
- package/dist/services/memory/llm-client.js.map +1 -0
- package/dist/services/memory/memory-clustering.d.ts +65 -0
- package/dist/services/memory/memory-clustering.d.ts.map +1 -0
- package/dist/services/memory/memory-clustering.js +298 -0
- package/dist/services/memory/memory-clustering.js.map +1 -0
- package/dist/services/memory/memory-service.d.ts +72 -0
- package/dist/services/memory/memory-service.d.ts.map +1 -0
- package/dist/services/memory/memory-service.js +178 -0
- package/dist/services/memory/memory-service.js.map +1 -0
- package/dist/services/memory/redundancy-filter.d.ts +26 -0
- package/dist/services/memory/redundancy-filter.d.ts.map +1 -0
- package/dist/services/memory/redundancy-filter.js +93 -0
- package/dist/services/memory/redundancy-filter.js.map +1 -0
- package/dist/services/memory/salience-judge.d.ts +51 -0
- package/dist/services/memory/salience-judge.d.ts.map +1 -0
- package/dist/services/memory/salience-judge.js +115 -0
- package/dist/services/memory/salience-judge.js.map +1 -0
- package/dist/services/metrics/token-metrics.d.ts +114 -0
- package/dist/services/metrics/token-metrics.d.ts.map +1 -0
- package/dist/services/metrics/token-metrics.js +272 -0
- package/dist/services/metrics/token-metrics.js.map +1 -0
- package/dist/services/monitoring/metrics.d.ts +154 -0
- package/dist/services/monitoring/metrics.d.ts.map +1 -0
- package/dist/services/monitoring/metrics.js +382 -0
- package/dist/services/monitoring/metrics.js.map +1 -0
- package/dist/services/pricing/models-dev-client.d.ts +141 -0
- package/dist/services/pricing/models-dev-client.d.ts.map +1 -0
- package/dist/services/pricing/models-dev-client.js +523 -0
- package/dist/services/pricing/models-dev-client.js.map +1 -0
- package/dist/services/project-identity/alias-resolver.d.ts +76 -0
- package/dist/services/project-identity/alias-resolver.d.ts.map +1 -0
- package/dist/services/project-identity/alias-resolver.js +129 -0
- package/dist/services/project-identity/alias-resolver.js.map +1 -0
- package/dist/services/project-identity/apply.d.ts +89 -0
- package/dist/services/project-identity/apply.d.ts.map +1 -0
- package/dist/services/project-identity/apply.js +619 -0
- package/dist/services/project-identity/apply.js.map +1 -0
- package/dist/services/project-identity/contracts.d.ts +103 -0
- package/dist/services/project-identity/contracts.d.ts.map +1 -0
- package/dist/services/project-identity/contracts.js +63 -0
- package/dist/services/project-identity/contracts.js.map +1 -0
- package/dist/services/project-identity/discovery.d.ts +39 -0
- package/dist/services/project-identity/discovery.d.ts.map +1 -0
- package/dist/services/project-identity/discovery.js +139 -0
- package/dist/services/project-identity/discovery.js.map +1 -0
- package/dist/services/project-identity/errors.d.ts +11 -0
- package/dist/services/project-identity/errors.d.ts.map +1 -0
- package/dist/services/project-identity/errors.js +40 -0
- package/dist/services/project-identity/errors.js.map +1 -0
- package/dist/services/project-identity/hash.d.ts +16 -0
- package/dist/services/project-identity/hash.d.ts.map +1 -0
- package/dist/services/project-identity/hash.js +91 -0
- package/dist/services/project-identity/hash.js.map +1 -0
- package/dist/services/project-identity/identity-guard-installer.d.ts +60 -0
- package/dist/services/project-identity/identity-guard-installer.d.ts.map +1 -0
- package/dist/services/project-identity/identity-guard-installer.js +116 -0
- package/dist/services/project-identity/identity-guard-installer.js.map +1 -0
- package/dist/services/project-identity/index.d.ts +25 -0
- package/dist/services/project-identity/index.d.ts.map +1 -0
- package/dist/services/project-identity/index.js +14 -0
- package/dist/services/project-identity/index.js.map +1 -0
- package/dist/services/project-identity/invalidator-registry.d.ts +52 -0
- package/dist/services/project-identity/invalidator-registry.d.ts.map +1 -0
- package/dist/services/project-identity/invalidator-registry.js +73 -0
- package/dist/services/project-identity/invalidator-registry.js.map +1 -0
- package/dist/services/project-identity/pg-array-codec.d.ts +24 -0
- package/dist/services/project-identity/pg-array-codec.d.ts.map +1 -0
- package/dist/services/project-identity/pg-array-codec.js +85 -0
- package/dist/services/project-identity/pg-array-codec.js.map +1 -0
- package/dist/services/project-identity/planner.d.ts +39 -0
- package/dist/services/project-identity/planner.d.ts.map +1 -0
- package/dist/services/project-identity/planner.js +206 -0
- package/dist/services/project-identity/planner.js.map +1 -0
- package/dist/services/project-identity/production-wiring.d.ts +60 -0
- package/dist/services/project-identity/production-wiring.d.ts.map +1 -0
- package/dist/services/project-identity/production-wiring.js +106 -0
- package/dist/services/project-identity/production-wiring.js.map +1 -0
- package/dist/services/project-identity/registry.d.ts +24 -0
- package/dist/services/project-identity/registry.d.ts.map +1 -0
- package/dist/services/project-identity/registry.js +72 -0
- package/dist/services/project-identity/registry.js.map +1 -0
- package/dist/services/project-identity/service.d.ts +28 -0
- package/dist/services/project-identity/service.d.ts.map +1 -0
- package/dist/services/project-identity/service.js +79 -0
- package/dist/services/project-identity/service.js.map +1 -0
- package/dist/services/query/prisma-client.d.ts +10 -0
- package/dist/services/query/prisma-client.d.ts.map +1 -0
- package/dist/services/query/prisma-client.js +37 -0
- package/dist/services/query/prisma-client.js.map +1 -0
- package/dist/services/scheduler/index.d.ts +13 -0
- package/dist/services/scheduler/index.d.ts.map +1 -0
- package/dist/services/scheduler/index.js +9 -0
- package/dist/services/scheduler/index.js.map +1 -0
- package/dist/services/scheduler/scheduler-cron.d.ts +39 -0
- package/dist/services/scheduler/scheduler-cron.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler-cron.js +159 -0
- package/dist/services/scheduler/scheduler-cron.js.map +1 -0
- package/dist/services/scheduler/scheduler-defaults.d.ts +55 -0
- package/dist/services/scheduler/scheduler-defaults.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler-defaults.js +188 -0
- package/dist/services/scheduler/scheduler-defaults.js.map +1 -0
- package/dist/services/scheduler/scheduler-store-factory.d.ts +13 -0
- package/dist/services/scheduler/scheduler-store-factory.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler-store-factory.js +23 -0
- package/dist/services/scheduler/scheduler-store-factory.js.map +1 -0
- package/dist/services/scheduler/scheduler-store-pg.d.ts +44 -0
- package/dist/services/scheduler/scheduler-store-pg.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler-store-pg.js +252 -0
- package/dist/services/scheduler/scheduler-store-pg.js.map +1 -0
- package/dist/services/scheduler/scheduler-store.d.ts +10 -0
- package/dist/services/scheduler/scheduler-store.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler-store.js +2 -0
- package/dist/services/scheduler/scheduler-store.js.map +1 -0
- package/dist/services/scheduler/scheduler-types.d.ts +75 -0
- package/dist/services/scheduler/scheduler-types.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler-types.js +10 -0
- package/dist/services/scheduler/scheduler-types.js.map +1 -0
- package/dist/services/scheduler/scheduler.d.ts +149 -0
- package/dist/services/scheduler/scheduler.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler.js +453 -0
- package/dist/services/scheduler/scheduler.js.map +1 -0
- package/dist/services/search/analytics-factory.d.ts +9 -0
- package/dist/services/search/analytics-factory.d.ts.map +1 -0
- package/dist/services/search/analytics-factory.js +24 -0
- package/dist/services/search/analytics-factory.js.map +1 -0
- package/dist/services/search/cache-factory.d.ts +9 -0
- package/dist/services/search/cache-factory.d.ts.map +1 -0
- package/dist/services/search/cache-factory.js +22 -0
- package/dist/services/search/cache-factory.js.map +1 -0
- package/dist/services/search/capture-policy-interfaces.d.ts +59 -0
- package/dist/services/search/capture-policy-interfaces.d.ts.map +1 -0
- package/dist/services/search/capture-policy-interfaces.js +15 -0
- package/dist/services/search/capture-policy-interfaces.js.map +1 -0
- package/dist/services/search/capture-policy.d.ts +54 -0
- package/dist/services/search/capture-policy.d.ts.map +1 -0
- package/dist/services/search/capture-policy.js +185 -0
- package/dist/services/search/capture-policy.js.map +1 -0
- package/dist/services/search/chunker/chunker-code.d.ts +24 -0
- package/dist/services/search/chunker/chunker-code.d.ts.map +1 -0
- package/dist/services/search/chunker/chunker-code.js +182 -0
- package/dist/services/search/chunker/chunker-code.js.map +1 -0
- package/dist/services/search/chunker/chunker-json-yaml.d.ts +9 -0
- package/dist/services/search/chunker/chunker-json-yaml.d.ts.map +1 -0
- package/dist/services/search/chunker/chunker-json-yaml.js +124 -0
- package/dist/services/search/chunker/chunker-json-yaml.js.map +1 -0
- package/dist/services/search/chunker/chunker-markdown.d.ts +9 -0
- package/dist/services/search/chunker/chunker-markdown.d.ts.map +1 -0
- package/dist/services/search/chunker/chunker-markdown.js +70 -0
- package/dist/services/search/chunker/chunker-markdown.js.map +1 -0
- package/dist/services/search/chunker/chunker-post.d.ts +12 -0
- package/dist/services/search/chunker/chunker-post.d.ts.map +1 -0
- package/dist/services/search/chunker/chunker-post.js +139 -0
- package/dist/services/search/chunker/chunker-post.js.map +1 -0
- package/dist/services/search/chunker/chunker-types.d.ts +43 -0
- package/dist/services/search/chunker/chunker-types.d.ts.map +1 -0
- package/dist/services/search/chunker/chunker-types.js +15 -0
- package/dist/services/search/chunker/chunker-types.js.map +1 -0
- package/dist/services/search/contextual-search-rlm.d.ts +243 -0
- package/dist/services/search/contextual-search-rlm.d.ts.map +1 -0
- package/dist/services/search/contextual-search-rlm.js +260 -0
- package/dist/services/search/contextual-search-rlm.js.map +1 -0
- package/dist/services/search/file-filter-cache.d.ts +55 -0
- package/dist/services/search/file-filter-cache.d.ts.map +1 -0
- package/dist/services/search/file-filter-cache.js +159 -0
- package/dist/services/search/file-filter-cache.js.map +1 -0
- package/dist/services/search/filter-validation.d.ts +61 -0
- package/dist/services/search/filter-validation.d.ts.map +1 -0
- package/dist/services/search/filter-validation.js +111 -0
- package/dist/services/search/filter-validation.js.map +1 -0
- package/dist/services/search/ignore-patterns.d.ts +39 -0
- package/dist/services/search/ignore-patterns.d.ts.map +1 -0
- package/dist/services/search/ignore-patterns.js +125 -0
- package/dist/services/search/ignore-patterns.js.map +1 -0
- package/dist/services/search/index-manager.d.ts +81 -0
- package/dist/services/search/index-manager.d.ts.map +1 -0
- package/dist/services/search/index-manager.js +315 -0
- package/dist/services/search/index-manager.js.map +1 -0
- package/dist/services/search/lexical-search.d.ts +83 -0
- package/dist/services/search/lexical-search.d.ts.map +1 -0
- package/dist/services/search/lexical-search.js +297 -0
- package/dist/services/search/lexical-search.js.map +1 -0
- package/dist/services/search/query-understanding.d.ts +115 -0
- package/dist/services/search/query-understanding.d.ts.map +1 -0
- package/dist/services/search/query-understanding.js +281 -0
- package/dist/services/search/query-understanding.js.map +1 -0
- package/dist/services/search/reranker.d.ts +59 -0
- package/dist/services/search/reranker.d.ts.map +1 -0
- package/dist/services/search/reranker.js +156 -0
- package/dist/services/search/reranker.js.map +1 -0
- package/dist/services/search/rlm-admin.d.ts +22 -0
- package/dist/services/search/rlm-admin.d.ts.map +1 -0
- package/dist/services/search/rlm-admin.js +92 -0
- package/dist/services/search/rlm-admin.js.map +1 -0
- package/dist/services/search/rlm-fusion.d.ts +23 -0
- package/dist/services/search/rlm-fusion.d.ts.map +1 -0
- package/dist/services/search/rlm-fusion.js +180 -0
- package/dist/services/search/rlm-fusion.js.map +1 -0
- package/dist/services/search/rlm-indexing.d.ts +71 -0
- package/dist/services/search/rlm-indexing.d.ts.map +1 -0
- package/dist/services/search/rlm-indexing.js +431 -0
- package/dist/services/search/rlm-indexing.js.map +1 -0
- package/dist/services/search/rlm-search.d.ts +28 -0
- package/dist/services/search/rlm-search.d.ts.map +1 -0
- package/dist/services/search/rlm-search.js +489 -0
- package/dist/services/search/rlm-search.js.map +1 -0
- package/dist/services/search/rlm-synapse.d.ts +44 -0
- package/dist/services/search/rlm-synapse.d.ts.map +1 -0
- package/dist/services/search/rlm-synapse.js +227 -0
- package/dist/services/search/rlm-synapse.js.map +1 -0
- package/dist/services/search/search-analytics-pg.d.ts +62 -0
- package/dist/services/search/search-analytics-pg.d.ts.map +1 -0
- package/dist/services/search/search-analytics-pg.js +242 -0
- package/dist/services/search/search-analytics-pg.js.map +1 -0
- package/dist/services/search/search-analytics.d.ts +3 -0
- package/dist/services/search/search-analytics.d.ts.map +1 -0
- package/dist/services/search/search-analytics.js +3 -0
- package/dist/services/search/search-analytics.js.map +1 -0
- package/dist/services/search/search-cache-pg.d.ts +49 -0
- package/dist/services/search/search-cache-pg.d.ts.map +1 -0
- package/dist/services/search/search-cache-pg.js +315 -0
- package/dist/services/search/search-cache-pg.js.map +1 -0
- package/dist/services/search/search-diagnostics.d.ts +39 -0
- package/dist/services/search/search-diagnostics.d.ts.map +1 -0
- package/dist/services/search/search-diagnostics.js +81 -0
- package/dist/services/search/search-diagnostics.js.map +1 -0
- package/dist/services/search/search-warmup.d.ts +29 -0
- package/dist/services/search/search-warmup.d.ts.map +1 -0
- package/dist/services/search/search-warmup.js +96 -0
- package/dist/services/search/search-warmup.js.map +1 -0
- package/dist/services/search/smart-chunker.d.ts +16 -0
- package/dist/services/search/smart-chunker.d.ts.map +1 -0
- package/dist/services/search/smart-chunker.js +67 -0
- package/dist/services/search/smart-chunker.js.map +1 -0
- package/dist/services/structural/diagnostics.d.ts +6 -0
- package/dist/services/structural/diagnostics.d.ts.map +1 -0
- package/dist/services/structural/diagnostics.js +22 -0
- package/dist/services/structural/diagnostics.js.map +1 -0
- package/dist/services/structural/fqn-codec.d.ts +105 -0
- package/dist/services/structural/fqn-codec.d.ts.map +1 -0
- package/dist/services/structural/fqn-codec.js +272 -0
- package/dist/services/structural/fqn-codec.js.map +1 -0
- package/dist/services/structural/grammar-integrity.d.ts +37 -0
- package/dist/services/structural/grammar-integrity.d.ts.map +1 -0
- package/dist/services/structural/grammar-integrity.js +196 -0
- package/dist/services/structural/grammar-integrity.js.map +1 -0
- package/dist/services/structural/grammar-loaders.d.ts +69 -0
- package/dist/services/structural/grammar-loaders.d.ts.map +1 -0
- package/dist/services/structural/grammar-loaders.js +229 -0
- package/dist/services/structural/grammar-loaders.js.map +1 -0
- package/dist/services/structural/language-manifest.d.ts +59 -0
- package/dist/services/structural/language-manifest.d.ts.map +1 -0
- package/dist/services/structural/language-manifest.js +413 -0
- package/dist/services/structural/language-manifest.js.map +1 -0
- package/dist/services/structural/native-lock-identities.d.ts +77 -0
- package/dist/services/structural/native-lock-identities.d.ts.map +1 -0
- package/dist/services/structural/native-lock-identities.js +192 -0
- package/dist/services/structural/native-lock-identities.js.map +1 -0
- package/dist/services/structural/native-node-helpers.d.ts +16 -0
- package/dist/services/structural/native-node-helpers.d.ts.map +1 -0
- package/dist/services/structural/native-node-helpers.js +145 -0
- package/dist/services/structural/native-node-helpers.js.map +1 -0
- package/dist/services/structural/parser-pool.d.ts +34 -0
- package/dist/services/structural/parser-pool.d.ts.map +1 -0
- package/dist/services/structural/parser-pool.js +148 -0
- package/dist/services/structural/parser-pool.js.map +1 -0
- package/dist/services/structural/parser-readiness.d.ts +30 -0
- package/dist/services/structural/parser-readiness.d.ts.map +1 -0
- package/dist/services/structural/parser-readiness.js +190 -0
- package/dist/services/structural/parser-readiness.js.map +1 -0
- package/dist/services/structural/query-pack-captures.d.ts +32 -0
- package/dist/services/structural/query-pack-captures.d.ts.map +1 -0
- package/dist/services/structural/query-pack-captures.js +173 -0
- package/dist/services/structural/query-pack-captures.js.map +1 -0
- package/dist/services/structural/query-pack-edges.d.ts +11 -0
- package/dist/services/structural/query-pack-edges.d.ts.map +1 -0
- package/dist/services/structural/query-pack-edges.js +521 -0
- package/dist/services/structural/query-pack-edges.js.map +1 -0
- package/dist/services/structural/query-pack-registry.d.ts +24 -0
- package/dist/services/structural/query-pack-registry.d.ts.map +1 -0
- package/dist/services/structural/query-pack-registry.js +42 -0
- package/dist/services/structural/query-pack-registry.js.map +1 -0
- package/dist/services/structural/query-pack.d.ts +10 -0
- package/dist/services/structural/query-pack.d.ts.map +1 -0
- package/dist/services/structural/query-pack.js +32 -0
- package/dist/services/structural/query-pack.js.map +1 -0
- package/dist/services/structural/query-packs/data-document.d.ts +7 -0
- package/dist/services/structural/query-packs/data-document.d.ts.map +1 -0
- package/dist/services/structural/query-packs/data-document.js +23 -0
- package/dist/services/structural/query-packs/data-document.js.map +1 -0
- package/dist/services/structural/query-packs/functional.d.ts +8 -0
- package/dist/services/structural/query-packs/functional.d.ts.map +1 -0
- package/dist/services/structural/query-packs/functional.js +58 -0
- package/dist/services/structural/query-packs/functional.js.map +1 -0
- package/dist/services/structural/query-packs/managed.d.ts +9 -0
- package/dist/services/structural/query-packs/managed.d.ts.map +1 -0
- package/dist/services/structural/query-packs/managed.js +114 -0
- package/dist/services/structural/query-packs/managed.js.map +1 -0
- package/dist/services/structural/query-packs/scripting.d.ts +7 -0
- package/dist/services/structural/query-packs/scripting.d.ts.map +1 -0
- package/dist/services/structural/query-packs/scripting.js +53 -0
- package/dist/services/structural/query-packs/scripting.js.map +1 -0
- package/dist/services/structural/query-packs/systems.d.ts +8 -0
- package/dist/services/structural/query-packs/systems.d.ts.map +1 -0
- package/dist/services/structural/query-packs/systems.js +74 -0
- package/dist/services/structural/query-packs/systems.js.map +1 -0
- package/dist/services/structural/query-packs/typescript.d.ts +4 -0
- package/dist/services/structural/query-packs/typescript.d.ts.map +1 -0
- package/dist/services/structural/query-packs/typescript.js +51 -0
- package/dist/services/structural/query-packs/typescript.js.map +1 -0
- package/dist/services/structural/resolver.d.ts +86 -0
- package/dist/services/structural/resolver.d.ts.map +1 -0
- package/dist/services/structural/resolver.js +189 -0
- package/dist/services/structural/resolver.js.map +1 -0
- package/dist/services/structural/resolvers/data-document.d.ts +4 -0
- package/dist/services/structural/resolvers/data-document.d.ts.map +1 -0
- package/dist/services/structural/resolvers/data-document.js +7 -0
- package/dist/services/structural/resolvers/data-document.js.map +1 -0
- package/dist/services/structural/resolvers/functional.d.ts +3 -0
- package/dist/services/structural/resolvers/functional.d.ts.map +1 -0
- package/dist/services/structural/resolvers/functional.js +30 -0
- package/dist/services/structural/resolvers/functional.js.map +1 -0
- package/dist/services/structural/resolvers/managed.d.ts +3 -0
- package/dist/services/structural/resolvers/managed.d.ts.map +1 -0
- package/dist/services/structural/resolvers/managed.js +44 -0
- package/dist/services/structural/resolvers/managed.js.map +1 -0
- package/dist/services/structural/resolvers/scripting.d.ts +4 -0
- package/dist/services/structural/resolvers/scripting.d.ts.map +1 -0
- package/dist/services/structural/resolvers/scripting.js +10 -0
- package/dist/services/structural/resolvers/scripting.js.map +1 -0
- package/dist/services/structural/resolvers/systems.d.ts +3 -0
- package/dist/services/structural/resolvers/systems.d.ts.map +1 -0
- package/dist/services/structural/resolvers/systems.js +33 -0
- package/dist/services/structural/resolvers/systems.js.map +1 -0
- package/dist/services/structural/resolvers/typescript.d.ts +6 -0
- package/dist/services/structural/resolvers/typescript.d.ts.map +1 -0
- package/dist/services/structural/resolvers/typescript.js +370 -0
- package/dist/services/structural/resolvers/typescript.js.map +1 -0
- package/dist/services/structural/schema-version.d.ts +42 -0
- package/dist/services/structural/schema-version.d.ts.map +1 -0
- package/dist/services/structural/schema-version.js +80 -0
- package/dist/services/structural/schema-version.js.map +1 -0
- package/dist/services/structural/source-span.d.ts +26 -0
- package/dist/services/structural/source-span.d.ts.map +1 -0
- package/dist/services/structural/source-span.js +117 -0
- package/dist/services/structural/source-span.js.map +1 -0
- package/dist/services/structural/structural-runtime.d.ts +55 -0
- package/dist/services/structural/structural-runtime.d.ts.map +1 -0
- package/dist/services/structural/structural-runtime.js +377 -0
- package/dist/services/structural/structural-runtime.js.map +1 -0
- package/dist/services/structural/symbol-signature.d.ts +25 -0
- package/dist/services/structural/symbol-signature.d.ts.map +1 -0
- package/dist/services/structural/symbol-signature.js +319 -0
- package/dist/services/structural/symbol-signature.js.map +1 -0
- package/dist/services/structural/types.d.ts +138 -0
- package/dist/services/structural/types.d.ts.map +1 -0
- package/dist/services/structural/types.js +27 -0
- package/dist/services/structural/types.js.map +1 -0
- package/dist/services/symbol/active-generation.d.ts +42 -0
- package/dist/services/symbol/active-generation.d.ts.map +1 -0
- package/dist/services/symbol/active-generation.js +56 -0
- package/dist/services/symbol/active-generation.js.map +1 -0
- package/dist/services/symbol/architecture.d.ts +238 -0
- package/dist/services/symbol/architecture.d.ts.map +1 -0
- package/dist/services/symbol/architecture.js +464 -0
- package/dist/services/symbol/architecture.js.map +1 -0
- package/dist/services/symbol/centrality.d.ts +24 -0
- package/dist/services/symbol/centrality.d.ts.map +1 -0
- package/dist/services/symbol/centrality.js +70 -0
- package/dist/services/symbol/centrality.js.map +1 -0
- package/dist/services/symbol/communities.d.ts +86 -0
- package/dist/services/symbol/communities.d.ts.map +1 -0
- package/dist/services/symbol/communities.js +551 -0
- package/dist/services/symbol/communities.js.map +1 -0
- package/dist/services/symbol/cycle-detection.d.ts +61 -0
- package/dist/services/symbol/cycle-detection.d.ts.map +1 -0
- package/dist/services/symbol/cycle-detection.js +182 -0
- package/dist/services/symbol/cycle-detection.js.map +1 -0
- package/dist/services/symbol/definition-lookup.d.ts +31 -0
- package/dist/services/symbol/definition-lookup.d.ts.map +1 -0
- package/dist/services/symbol/definition-lookup.js +53 -0
- package/dist/services/symbol/definition-lookup.js.map +1 -0
- package/dist/services/symbol/git-ref-validation.d.ts +26 -0
- package/dist/services/symbol/git-ref-validation.d.ts.map +1 -0
- package/dist/services/symbol/git-ref-validation.js +34 -0
- package/dist/services/symbol/git-ref-validation.js.map +1 -0
- package/dist/services/symbol/impact-analysis.d.ts +205 -0
- package/dist/services/symbol/impact-analysis.d.ts.map +1 -0
- package/dist/services/symbol/impact-analysis.js +617 -0
- package/dist/services/symbol/impact-analysis.js.map +1 -0
- package/dist/services/symbol/index.d.ts +20 -0
- package/dist/services/symbol/index.d.ts.map +1 -0
- package/dist/services/symbol/index.js +13 -0
- package/dist/services/symbol/index.js.map +1 -0
- package/dist/services/symbol/symbol-graph.service.d.ts +272 -0
- package/dist/services/symbol/symbol-graph.service.d.ts.map +1 -0
- package/dist/services/symbol/symbol-graph.service.js +580 -0
- package/dist/services/symbol/symbol-graph.service.js.map +1 -0
- package/dist/services/symbol/trace-path.d.ts +164 -0
- package/dist/services/symbol/trace-path.d.ts.map +1 -0
- package/dist/services/symbol/trace-path.js +448 -0
- package/dist/services/symbol/trace-path.js.map +1 -0
- package/dist/services/synapse/buffer/index.d.ts +2 -0
- package/dist/services/synapse/buffer/index.d.ts.map +1 -0
- package/dist/services/synapse/buffer/index.js +2 -0
- package/dist/services/synapse/buffer/index.js.map +1 -0
- package/dist/services/synapse/buffer/working-memory-buffer.d.ts +124 -0
- package/dist/services/synapse/buffer/working-memory-buffer.d.ts.map +1 -0
- package/dist/services/synapse/buffer/working-memory-buffer.js +251 -0
- package/dist/services/synapse/buffer/working-memory-buffer.js.map +1 -0
- package/dist/services/synapse/index.d.ts +27 -0
- package/dist/services/synapse/index.d.ts.map +1 -0
- package/dist/services/synapse/index.js +35 -0
- package/dist/services/synapse/index.js.map +1 -0
- package/dist/services/synapse/inhibition/chain-inhibition.d.ts +36 -0
- package/dist/services/synapse/inhibition/chain-inhibition.d.ts.map +1 -0
- package/dist/services/synapse/inhibition/chain-inhibition.js +133 -0
- package/dist/services/synapse/inhibition/chain-inhibition.js.map +1 -0
- package/dist/services/synapse/inhibition/confidence-gate.d.ts +49 -0
- package/dist/services/synapse/inhibition/confidence-gate.d.ts.map +1 -0
- package/dist/services/synapse/inhibition/confidence-gate.js +131 -0
- package/dist/services/synapse/inhibition/confidence-gate.js.map +1 -0
- package/dist/services/synapse/inhibition/diversity-penalty.d.ts +28 -0
- package/dist/services/synapse/inhibition/diversity-penalty.d.ts.map +1 -0
- package/dist/services/synapse/inhibition/diversity-penalty.js +75 -0
- package/dist/services/synapse/inhibition/diversity-penalty.js.map +1 -0
- package/dist/services/synapse/inhibition/index.d.ts +5 -0
- package/dist/services/synapse/inhibition/index.d.ts.map +1 -0
- package/dist/services/synapse/inhibition/index.js +5 -0
- package/dist/services/synapse/inhibition/index.js.map +1 -0
- package/dist/services/synapse/inhibition/temporal-inhibition.d.ts +21 -0
- package/dist/services/synapse/inhibition/temporal-inhibition.d.ts.map +1 -0
- package/dist/services/synapse/inhibition/temporal-inhibition.js +70 -0
- package/dist/services/synapse/inhibition/temporal-inhibition.js.map +1 -0
- package/dist/services/synapse/inhibition/type-inference.d.ts +14 -0
- package/dist/services/synapse/inhibition/type-inference.d.ts.map +1 -0
- package/dist/services/synapse/inhibition/type-inference.js +36 -0
- package/dist/services/synapse/inhibition/type-inference.js.map +1 -0
- package/dist/services/synapse/metacognition/index.d.ts +2 -0
- package/dist/services/synapse/metacognition/index.d.ts.map +1 -0
- package/dist/services/synapse/metacognition/index.js +2 -0
- package/dist/services/synapse/metacognition/index.js.map +1 -0
- package/dist/services/synapse/metacognition/score-spectrum.d.ts +29 -0
- package/dist/services/synapse/metacognition/score-spectrum.d.ts.map +1 -0
- package/dist/services/synapse/metacognition/score-spectrum.js +70 -0
- package/dist/services/synapse/metacognition/score-spectrum.js.map +1 -0
- package/dist/services/synapse/plasticity/compress.d.ts +64 -0
- package/dist/services/synapse/plasticity/compress.d.ts.map +1 -0
- package/dist/services/synapse/plasticity/compress.js +82 -0
- package/dist/services/synapse/plasticity/compress.js.map +1 -0
- package/dist/services/synapse/plasticity/embedding-evolution.d.ts +42 -0
- package/dist/services/synapse/plasticity/embedding-evolution.d.ts.map +1 -0
- package/dist/services/synapse/plasticity/embedding-evolution.js +81 -0
- package/dist/services/synapse/plasticity/embedding-evolution.js.map +1 -0
- package/dist/services/synapse/plasticity/index.d.ts +4 -0
- package/dist/services/synapse/plasticity/index.d.ts.map +1 -0
- package/dist/services/synapse/plasticity/index.js +4 -0
- package/dist/services/synapse/plasticity/index.js.map +1 -0
- package/dist/services/synapse/plasticity/strengthen.d.ts +45 -0
- package/dist/services/synapse/plasticity/strengthen.d.ts.map +1 -0
- package/dist/services/synapse/plasticity/strengthen.js +69 -0
- package/dist/services/synapse/plasticity/strengthen.js.map +1 -0
- package/dist/services/synapse/prefetch/index.d.ts +2 -0
- package/dist/services/synapse/prefetch/index.d.ts.map +1 -0
- package/dist/services/synapse/prefetch/index.js +2 -0
- package/dist/services/synapse/prefetch/index.js.map +1 -0
- package/dist/services/synapse/prefetch/prefetch.d.ts +75 -0
- package/dist/services/synapse/prefetch/prefetch.d.ts.map +1 -0
- package/dist/services/synapse/prefetch/prefetch.js +111 -0
- package/dist/services/synapse/prefetch/prefetch.js.map +1 -0
- package/dist/services/synapse/scoring/agent-affinity.d.ts +16 -0
- package/dist/services/synapse/scoring/agent-affinity.d.ts.map +1 -0
- package/dist/services/synapse/scoring/agent-affinity.js +40 -0
- package/dist/services/synapse/scoring/agent-affinity.js.map +1 -0
- package/dist/services/synapse/scoring/attention-score.d.ts +80 -0
- package/dist/services/synapse/scoring/attention-score.d.ts.map +1 -0
- package/dist/services/synapse/scoring/attention-score.js +177 -0
- package/dist/services/synapse/scoring/attention-score.js.map +1 -0
- package/dist/services/synapse/scoring/index.d.ts +4 -0
- package/dist/services/synapse/scoring/index.d.ts.map +1 -0
- package/dist/services/synapse/scoring/index.js +4 -0
- package/dist/services/synapse/scoring/index.js.map +1 -0
- package/dist/services/synapse/scoring/task-alignment.d.ts +20 -0
- package/dist/services/synapse/scoring/task-alignment.d.ts.map +1 -0
- package/dist/services/synapse/scoring/task-alignment.js +65 -0
- package/dist/services/synapse/scoring/task-alignment.js.map +1 -0
- package/dist/services/synapse/session/index.d.ts +2 -0
- package/dist/services/synapse/session/index.d.ts.map +1 -0
- package/dist/services/synapse/session/index.js +2 -0
- package/dist/services/synapse/session/index.js.map +1 -0
- package/dist/services/synapse/session/session-registry.d.ts +85 -0
- package/dist/services/synapse/session/session-registry.d.ts.map +1 -0
- package/dist/services/synapse/session/session-registry.js +241 -0
- package/dist/services/synapse/session/session-registry.js.map +1 -0
- package/dist/services/synapse/session/session-store-pg.d.ts +88 -0
- package/dist/services/synapse/session/session-store-pg.d.ts.map +1 -0
- package/dist/services/synapse/session/session-store-pg.js +334 -0
- package/dist/services/synapse/session/session-store-pg.js.map +1 -0
- package/dist/services/synapse/session/session-store.d.ts +23 -0
- package/dist/services/synapse/session/session-store.d.ts.map +1 -0
- package/dist/services/synapse/session/session-store.js +15 -0
- package/dist/services/synapse/session/session-store.js.map +1 -0
- package/dist/services/synapse/synapse-manager.d.ts +41 -0
- package/dist/services/synapse/synapse-manager.d.ts.map +1 -0
- package/dist/services/synapse/synapse-manager.js +167 -0
- package/dist/services/synapse/synapse-manager.js.map +1 -0
- package/dist/services/synapse/task-envelope.d.ts +99 -0
- package/dist/services/synapse/task-envelope.d.ts.map +1 -0
- package/dist/services/synapse/task-envelope.js +192 -0
- package/dist/services/synapse/task-envelope.js.map +1 -0
- package/dist/services/synapse/types.d.ts +79 -0
- package/dist/services/synapse/types.d.ts.map +1 -0
- package/dist/services/synapse/types.js +8 -0
- package/dist/services/synapse/types.js.map +1 -0
- package/dist/services/web/fetcher.d.ts +99 -0
- package/dist/services/web/fetcher.d.ts.map +1 -0
- package/dist/services/web/fetcher.js +267 -0
- package/dist/services/web/fetcher.js.map +1 -0
- package/dist/services/web/html-to-md.d.ts +38 -0
- package/dist/services/web/html-to-md.d.ts.map +1 -0
- package/dist/services/web/html-to-md.js +98 -0
- package/dist/services/web/html-to-md.js.map +1 -0
- package/dist/services/web/index.d.ts +15 -0
- package/dist/services/web/index.d.ts.map +1 -0
- package/dist/services/web/index.js +15 -0
- package/dist/services/web/index.js.map +1 -0
- package/dist/services/web/ssrf.d.ts +142 -0
- package/dist/services/web/ssrf.d.ts.map +1 -0
- package/dist/services/web/ssrf.js +334 -0
- package/dist/services/web/ssrf.js.map +1 -0
- package/dist/services/web/web-controller.d.ts +70 -0
- package/dist/services/web/web-controller.d.ts.map +1 -0
- package/dist/services/web/web-controller.js +140 -0
- package/dist/services/web/web-controller.js.map +1 -0
- package/dist/services/workspace/index.d.ts +6 -0
- package/dist/services/workspace/index.d.ts.map +1 -0
- package/dist/services/workspace/index.js +5 -0
- package/dist/services/workspace/index.js.map +1 -0
- package/dist/services/workspace/workspace-manager.d.ts +57 -0
- package/dist/services/workspace/workspace-manager.d.ts.map +1 -0
- package/dist/services/workspace/workspace-manager.js +144 -0
- package/dist/services/workspace/workspace-manager.js.map +1 -0
- package/dist/tools/batch_execute.d.ts +64 -0
- package/dist/tools/batch_execute.d.ts.map +1 -0
- package/dist/tools/batch_execute.js +55 -0
- package/dist/tools/batch_execute.js.map +1 -0
- package/dist/tools/compact_snapshot.d.ts +56 -0
- package/dist/tools/compact_snapshot.d.ts.map +1 -0
- package/dist/tools/compact_snapshot.js +139 -0
- package/dist/tools/compact_snapshot.js.map +1 -0
- package/dist/tools/compress_context.d.ts +41 -0
- package/dist/tools/compress_context.d.ts.map +1 -0
- package/dist/tools/compress_context.js +103 -0
- package/dist/tools/compress_context.js.map +1 -0
- package/dist/tools/create_checkpoint.d.ts +120 -0
- package/dist/tools/create_checkpoint.d.ts.map +1 -0
- package/dist/tools/create_checkpoint.js +184 -0
- package/dist/tools/create_checkpoint.js.map +1 -0
- package/dist/tools/delete_memory.d.ts +39 -0
- package/dist/tools/delete_memory.d.ts.map +1 -0
- package/dist/tools/delete_memory.js +51 -0
- package/dist/tools/delete_memory.js.map +1 -0
- package/dist/tools/enum-validation.d.ts +37 -0
- package/dist/tools/enum-validation.d.ts.map +1 -0
- package/dist/tools/enum-validation.js +46 -0
- package/dist/tools/enum-validation.js.map +1 -0
- package/dist/tools/execute.d.ts +57 -0
- package/dist/tools/execute.d.ts.map +1 -0
- package/dist/tools/execute.js +64 -0
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/execute_file.d.ts +52 -0
- package/dist/tools/execute_file.d.ts.map +1 -0
- package/dist/tools/execute_file.js +61 -0
- package/dist/tools/execute_file.js.map +1 -0
- package/dist/tools/fetch_and_index.d.ts +71 -0
- package/dist/tools/fetch_and_index.d.ts.map +1 -0
- package/dist/tools/fetch_and_index.js +74 -0
- package/dist/tools/fetch_and_index.js.map +1 -0
- package/dist/tools/get_analytics.d.ts +38 -0
- package/dist/tools/get_analytics.d.ts.map +1 -0
- package/dist/tools/get_analytics.js +114 -0
- package/dist/tools/get_analytics.js.map +1 -0
- package/dist/tools/get_architecture.d.ts +59 -0
- package/dist/tools/get_architecture.d.ts.map +1 -0
- package/dist/tools/get_architecture.js +104 -0
- package/dist/tools/get_architecture.js.map +1 -0
- package/dist/tools/get_index_status.d.ts +23 -0
- package/dist/tools/get_index_status.d.ts.map +1 -0
- package/dist/tools/get_index_status.js +61 -0
- package/dist/tools/get_index_status.js.map +1 -0
- package/dist/tools/get_optimized_context.d.ts +78 -0
- package/dist/tools/get_optimized_context.d.ts.map +1 -0
- package/dist/tools/get_optimized_context.js +110 -0
- package/dist/tools/get_optimized_context.js.map +1 -0
- package/dist/tools/get_references.d.ts +53 -0
- package/dist/tools/get_references.d.ts.map +1 -0
- package/dist/tools/get_references.js +114 -0
- package/dist/tools/get_references.js.map +1 -0
- package/dist/tools/go_to_definition.d.ts +31 -0
- package/dist/tools/go_to_definition.d.ts.map +1 -0
- package/dist/tools/go_to_definition.js +75 -0
- package/dist/tools/go_to_definition.js.map +1 -0
- package/dist/tools/impact_analysis.d.ts +89 -0
- package/dist/tools/impact_analysis.d.ts.map +1 -0
- package/dist/tools/impact_analysis.js +186 -0
- package/dist/tools/impact_analysis.js.map +1 -0
- package/dist/tools/index.d.ts +34 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +38 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/index_project.d.ts +77 -0
- package/dist/tools/index_project.d.ts.map +1 -0
- package/dist/tools/index_project.js +259 -0
- package/dist/tools/index_project.js.map +1 -0
- package/dist/tools/list_checkpoints.d.ts +59 -0
- package/dist/tools/list_checkpoints.d.ts.map +1 -0
- package/dist/tools/list_checkpoints.js +110 -0
- package/dist/tools/list_checkpoints.js.map +1 -0
- package/dist/tools/list_projects.d.ts +24 -0
- package/dist/tools/list_projects.d.ts.map +1 -0
- package/dist/tools/list_projects.js +58 -0
- package/dist/tools/list_projects.js.map +1 -0
- package/dist/tools/read_file.d.ts +150 -0
- package/dist/tools/read_file.d.ts.map +1 -0
- package/dist/tools/read_file.js +580 -0
- package/dist/tools/read_file.js.map +1 -0
- package/dist/tools/restore_checkpoint.d.ts +45 -0
- package/dist/tools/restore_checkpoint.d.ts.map +1 -0
- package/dist/tools/restore_checkpoint.js +113 -0
- package/dist/tools/restore_checkpoint.js.map +1 -0
- package/dist/tools/search_code.d.ts +35 -0
- package/dist/tools/search_code.d.ts.map +1 -0
- package/dist/tools/search_code.js +61 -0
- package/dist/tools/search_code.js.map +1 -0
- package/dist/tools/search_definitions.d.ts +54 -0
- package/dist/tools/search_definitions.d.ts.map +1 -0
- package/dist/tools/search_definitions.js +123 -0
- package/dist/tools/search_definitions.js.map +1 -0
- package/dist/tools/search_memories.d.ts +82 -0
- package/dist/tools/search_memories.d.ts.map +1 -0
- package/dist/tools/search_memories.js +115 -0
- package/dist/tools/search_memories.js.map +1 -0
- package/dist/tools/search_project.d.ts +90 -0
- package/dist/tools/search_project.d.ts.map +1 -0
- package/dist/tools/search_project.js +115 -0
- package/dist/tools/search_project.js.map +1 -0
- package/dist/tools/serialize-interfaces.d.ts +103 -0
- package/dist/tools/serialize-interfaces.d.ts.map +1 -0
- package/dist/tools/serialize-interfaces.js +15 -0
- package/dist/tools/serialize-interfaces.js.map +1 -0
- package/dist/tools/serialize.d.ts +101 -0
- package/dist/tools/serialize.d.ts.map +1 -0
- package/dist/tools/serialize.js +388 -0
- package/dist/tools/serialize.js.map +1 -0
- package/dist/tools/store_memory.d.ts +78 -0
- package/dist/tools/store_memory.d.ts.map +1 -0
- package/dist/tools/store_memory.js +87 -0
- package/dist/tools/store_memory.js.map +1 -0
- package/dist/tools/trace_path.d.ts +98 -0
- package/dist/tools/trace_path.d.ts.map +1 -0
- package/dist/tools/trace_path.js +181 -0
- package/dist/tools/trace_path.js.map +1 -0
- package/dist/tools/update_memory.d.ts +61 -0
- package/dist/tools/update_memory.d.ts.map +1 -0
- package/dist/tools/update_memory.js +74 -0
- package/dist/tools/update_memory.js.map +1 -0
- package/package.json +103 -0
- package/prisma/migrations/20260309210441_init/migration.sql +127 -0
- package/prisma/migrations/20260413122356_add_workspaces_symbol_graph/migration.sql +224 -0
- package/prisma/migrations/20260413200000_add_vector_4096_bq/migration.sql +33 -0
- package/prisma/migrations/20260419193214_hnsw_ef_construction_128/migration.sql +38 -0
- package/prisma/migrations/20260419214959_add_vector_1536/migration.sql +28 -0
- package/prisma/migrations/20260705060000_add_memories_pinned_softdelete/migration.sql +10 -0
- package/prisma/migrations/20260706105826_drop_symbol_refs_target_fqn_not_null/migration.sql +2 -0
- package/prisma/migrations/20260707100000_add_index_jobs_pg/migration.sql +28 -0
- package/prisma/migrations/20260709120000_add_scheduled_jobs_pg/migration.sql +22 -0
- package/prisma/migrations/20260710120000_add_synapse_sessions_pg/migration.sql +36 -0
- package/prisma/migrations/20260710123800_add_observations_pg/migration.sql +35 -0
- package/prisma/migrations/20260710140000_add_symbol_refs_meta_and_kind_index/migration.sql +8 -0
- package/prisma/migrations/20260710160000_add_task_checkpoints_pg/migration.sql +30 -0
- package/prisma/migrations/20260713090000_add_handoffs_proposals_pg/migration.sql +42 -0
- package/prisma/migrations/20260714170000_add_graph_generations/migration.sql +286 -0
- package/prisma/migrations/20260714220000_add_index_job_graph_generation/migration.sql +5 -0
- package/prisma/migrations/20260714233000_add_index_job_parser_diagnostics/migration.sql +6 -0
- package/prisma/migrations/20260718000000_add_operation_log/migration.sql +25 -0
- package/prisma/migrations/20260719120000_add_project_identity/migration.sql +268 -0
- package/prisma/migrations/20260720120000_add_observation_attribution/migration.sql +5 -0
- package/prisma/migrations/20260720210000_repair_hook_attribution/migration.sql +256 -0
- package/prisma/migrations/20260722120000_add_managed_runs/migration.sql +66 -0
- package/prisma/migrations/20260722130000_add_scheduler_last_success/migration.sql +24 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +745 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web ingestion service — SSRF-guarded fetch + HTML→md + index.
|
|
3
|
+
*
|
|
4
|
+
* Public surface:
|
|
5
|
+
* - classifyIp / assertUrlSafe / fetchWithSsrfGuard / SsrfBlockedError (ssrf)
|
|
6
|
+
* - htmlToMarkdown / jsonToKeyPathChunks (html-to-md)
|
|
7
|
+
* - fetchAndConvertOne / composeFetchCacheKey / MAX_FETCH_BYTES /
|
|
8
|
+
* DEFAULT_FETCH_TTL_MS + types (fetcher)
|
|
9
|
+
* - WebController (orchestration)
|
|
10
|
+
*/
|
|
11
|
+
export { classifyIp, assertUrlSafe, fetchWithSsrfGuard, SsrfBlockedError, setDnsResolver, MAX_REDIRECTS, } from "./ssrf.js";
|
|
12
|
+
export { htmlToMarkdown, jsonToKeyPathChunks, } from "./html-to-md.js";
|
|
13
|
+
export { fetchAndConvertOne, composeFetchCacheKey, MAX_FETCH_BYTES, DEFAULT_FETCH_TTL_MS, } from "./fetcher.js";
|
|
14
|
+
export { WebController, } from "./web-controller.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/web/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,aAAa,GAKd,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,mBAAmB,GAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GAMrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,GAId,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF guard — Server-Side Request Forgery defense for `fetch_and_index`.
|
|
3
|
+
*
|
|
4
|
+
* Policy (massa-ai is STRICT BY DEFAULT, unlike context-mode's lenient mode):
|
|
5
|
+
*
|
|
6
|
+
* HARD BLOCK — no legitimate fetch use case reaches these:
|
|
7
|
+
* - non-http(s) schemes (file://, gopher://, javascript:, data:, …)
|
|
8
|
+
* - 169.254.0.0/16 link-local — INCLUDES 169.254.169.254 (AWS/GCP/Azure
|
|
9
|
+
* IMDS cloud-credential endpoint, the highest-value SSRF target)
|
|
10
|
+
* - IPv6 link-local fe80::/10
|
|
11
|
+
* - multicast (224.0.0.0/4 IPv4, ff00::/8 IPv6)
|
|
12
|
+
* - unspecified / current-network (0.0.0.0/8, ::)
|
|
13
|
+
* - loopback (127.0.0.0/8, ::1) — local dev servers are out of scope here
|
|
14
|
+
* - RFC1918 private (10/8, 172.16/12, 192.168/16) and IPv6 ULA (fc00::/7)
|
|
15
|
+
* - malformed / non-IP strings
|
|
16
|
+
*
|
|
17
|
+
* The massa-ai trust model treats fetch targets as OPEN WORLD (arbitrary
|
|
18
|
+
* URLs the agent fetched at the user's request), so a private/loopback hit is
|
|
19
|
+
* treated as a rebinding attack probe, not a local-dev convenience. This is the
|
|
20
|
+
* conservative default; there is no lenient escape hatch (unlike context-mode's
|
|
21
|
+
* `CTX_FETCH_STRICT` toggle) — if a future task needs to fetch localhost it can
|
|
22
|
+
* add an explicit allowlist.
|
|
23
|
+
*
|
|
24
|
+
* DNS-rebinding defense (TOCTOU-safe):
|
|
25
|
+
* 1. Resolve the hostname ONCE and classify EACH resolved address.
|
|
26
|
+
* 2. PIN the connection to the already-classified resolved IP by rewriting
|
|
27
|
+
* the fetch URL to the literal IP and setting the `Host` header to the
|
|
28
|
+
* original hostname. This closes the TOCTOU: the fetch's own connect-time
|
|
29
|
+
* DNS re-resolution is bypassed entirely because the URL host is now a
|
|
30
|
+
* literal IP (no lookup occurs). An attacker cannot serve a public IP at
|
|
31
|
+
* check-time and a private IP at connect-time for the SAME request — the
|
|
32
|
+
* connect-time resolution never happens.
|
|
33
|
+
* (The alternative — a custom undici `connect.lookup` hook — does NOT work
|
|
34
|
+
* under bun: bun's native fetch ignores the undici Dispatcher entirely,
|
|
35
|
+
* and even the bundled undici shim does not invoke `connect.lookup`. The
|
|
36
|
+
* literal-IP + Host-header approach is the only one that works under bun
|
|
37
|
+
* and is also portable to node/undici.)
|
|
38
|
+
* 3. On fetch, walk redirects MANUALLY (do not let fetch auto-follow) and
|
|
39
|
+
* re-resolve + re-classify + re-PIN the hostname of every hop. An attacker
|
|
40
|
+
* can return a public IP for the first request, then 302 to an internal
|
|
41
|
+
* host whose DNS now resolves to 169.254.169.254. Manual redirect walking
|
|
42
|
+
* with per-hop resolution+pinning defeats this.
|
|
43
|
+
*
|
|
44
|
+
* Exported seams:
|
|
45
|
+
* - classifyIp(ip) — pure IP classifier (tested directly with literals).
|
|
46
|
+
* - assertUrlSafe(url) — resolve + classify, returns pinned IP(s); throws on
|
|
47
|
+
* any blocked IP.
|
|
48
|
+
* - fetchWithSsrfGuard(url, opts) — fetch with DNS-pinned connect + manual
|
|
49
|
+
* redirect walk that re-runs assertUrlSafe (and re-pins) at every hop.
|
|
50
|
+
*/
|
|
51
|
+
export type IpClass = "block" | "public";
|
|
52
|
+
/** Hard cap on redirect hops we will walk before giving up (loop defense). */
|
|
53
|
+
export declare const MAX_REDIRECTS = 8;
|
|
54
|
+
/**
|
|
55
|
+
* Injectable DNS resolver seam. Defaults to node:dns/promises `lookup`. Tests
|
|
56
|
+
* swap this (via `setDnsResolver`) to simulate DNS rebinding / IMDS aliases
|
|
57
|
+
* WITHOUT patching the read-only module namespace. Production code never calls
|
|
58
|
+
* the setter.
|
|
59
|
+
*/
|
|
60
|
+
export type DnsResolver = (hostname: string) => Promise<{
|
|
61
|
+
address: string;
|
|
62
|
+
}[]>;
|
|
63
|
+
/** Test seam: override the DNS resolver. Returns a restore function. */
|
|
64
|
+
export declare function setDnsResolver(resolver: DnsResolver): () => void;
|
|
65
|
+
/**
|
|
66
|
+
* Classify a single IP literal.
|
|
67
|
+
*
|
|
68
|
+
* Returns "block" for link-local / loopback / private / multicast / unspecified
|
|
69
|
+
* / malformed. Returns "public" only for genuinely routable addresses.
|
|
70
|
+
*
|
|
71
|
+
* IPv4-mapped IPv6 (`::ffff:127.0.0.1`) is routed through the IPv4 classifier so
|
|
72
|
+
* loopback mapped into the v6 space is still caught.
|
|
73
|
+
*
|
|
74
|
+
* RFC 6874 zone identifiers (`fe80::1%eth0`, URL-encoded `%25eth0`) are stripped
|
|
75
|
+
* BEFORE classification — without the strip, `::1%eth0` no longer matches
|
|
76
|
+
* `=== "::1"` and would fall through to "public", silently bypassing the guard.
|
|
77
|
+
*/
|
|
78
|
+
export declare function classifyIp(rawIp: string): IpClass;
|
|
79
|
+
/** Error thrown when a URL or one of its redirect hops is blocked by SSRF. */
|
|
80
|
+
export declare class SsrfBlockedError extends Error {
|
|
81
|
+
readonly url: string;
|
|
82
|
+
readonly resolvedIp?: string | undefined;
|
|
83
|
+
constructor(message: string, url: string, resolvedIp?: string | undefined);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Result of `assertUrlSafe`: the connection-pin parameters the caller must use
|
|
87
|
+
* when issuing the fetch so the TOCTOU gap between check-time and connect-time
|
|
88
|
+
* DNS resolution is closed.
|
|
89
|
+
*
|
|
90
|
+
* - `pinnedIp`: the already-classified IP literal to connect to (replaces the
|
|
91
|
+
* hostname in the fetch URL). For a URL that already names a literal IP,
|
|
92
|
+
* this is that same IP. For a hostname, this is the first public resolved
|
|
93
|
+
* address.
|
|
94
|
+
* - `originalHost`: the hostname to send in the `Host` header so virtual
|
|
95
|
+
* hosting + TLS SNI still work. Equals the URL's hostname (brackets stripped
|
|
96
|
+
* for IPv6). When the URL already names a literal IP, this equals pinnedIp
|
|
97
|
+
* and no Host header rewrite is needed.
|
|
98
|
+
* - `isLiteralIpUrl`: true when the original URL host was already an IP
|
|
99
|
+
* literal (no DNS resolution occurred). Lets the caller skip the rewrite.
|
|
100
|
+
*/
|
|
101
|
+
export interface UrlSafetyResult {
|
|
102
|
+
pinnedIp: string;
|
|
103
|
+
originalHost: string;
|
|
104
|
+
isLiteralIpUrl: boolean;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolve `hostname` and assert every resolved IP is public. Throws
|
|
108
|
+
* `SsrfBlockedError` on the first blocked address. A hostname that resolves to
|
|
109
|
+
* a MIX of public + private is still rejected (TOCTOU-safe: we re-resolve on
|
|
110
|
+
* fetch, so even if the resolver rotates answers, every hop is checked).
|
|
111
|
+
*
|
|
112
|
+
* Returns the `UrlSafetyResult` (pinned IP + original hostname) so the caller
|
|
113
|
+
* can pin the fetch connection to the already-classified IP and close the
|
|
114
|
+
* TOCTOU between check-time and connect-time DNS resolution.
|
|
115
|
+
*/
|
|
116
|
+
export declare function assertUrlSafe(rawUrl: string): Promise<UrlSafetyResult>;
|
|
117
|
+
export interface FetchGuardOptions {
|
|
118
|
+
/** Per-request timeout (ms). Default 30_000. */
|
|
119
|
+
timeoutMs?: number;
|
|
120
|
+
/** AbortSignal from the caller (e.g. for test cancellation). */
|
|
121
|
+
signal?: AbortSignal;
|
|
122
|
+
/** Composed AbortSignal: combines the timeout timer and the caller's signal. */
|
|
123
|
+
_compose?: (signals: AbortSignal[]) => AbortSignal;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Fetch a URL with the SSRF DNS-pin + redirect-walk defense.
|
|
127
|
+
*
|
|
128
|
+
* TWO-LAYER DEFENSE (TOCTOU-safe):
|
|
129
|
+
* 1. DNS PIN: `assertUrlSafe` resolves the hostname once and classifies the
|
|
130
|
+
* IP. We then rewrite the fetch URL to connect to that LITERAL IP and set
|
|
131
|
+
* the `Host` header to the original hostname. Because the fetch URL's host
|
|
132
|
+
* is now a literal IP, NO DNS lookup occurs at connect time — the attacker
|
|
133
|
+
* cannot serve a different (private) IP at connect. bun's fetch honors the
|
|
134
|
+
* `Host` header for both HTTP virtual hosting and HTTPS TLS SNI.
|
|
135
|
+
* 2. REDIRECT WALK: does NOT auto-follow. Each 3xx Location header is
|
|
136
|
+
* re-resolved + re-classified + re-pinned before the next hop. Any blocked
|
|
137
|
+
* hop throws `SsrfBlockedError`. Capped at MAX_REDIRECTS to defeat loops.
|
|
138
|
+
*
|
|
139
|
+
* Returns the final (non-redirect) Response. The caller reads the body.
|
|
140
|
+
*/
|
|
141
|
+
export declare function fetchWithSsrfGuard(rawUrl: string, opts?: FetchGuardOptions): Promise<Response>;
|
|
142
|
+
//# sourceMappingURL=ssrf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssrf.d.ts","sourceRoot":"","sources":["../../../src/services/web/ssrf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAKH,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzC,8EAA8E;AAC9E,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAAC;AAOpC,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,IAAI,CAMhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA0DjD;AAED,8EAA8E;AAC9E,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACN,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,YAAA;CAK/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyE5E;AAkBD,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,CAAC;CACpD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAgEnB"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF guard — Server-Side Request Forgery defense for `fetch_and_index`.
|
|
3
|
+
*
|
|
4
|
+
* Policy (massa-ai is STRICT BY DEFAULT, unlike context-mode's lenient mode):
|
|
5
|
+
*
|
|
6
|
+
* HARD BLOCK — no legitimate fetch use case reaches these:
|
|
7
|
+
* - non-http(s) schemes (file://, gopher://, javascript:, data:, …)
|
|
8
|
+
* - 169.254.0.0/16 link-local — INCLUDES 169.254.169.254 (AWS/GCP/Azure
|
|
9
|
+
* IMDS cloud-credential endpoint, the highest-value SSRF target)
|
|
10
|
+
* - IPv6 link-local fe80::/10
|
|
11
|
+
* - multicast (224.0.0.0/4 IPv4, ff00::/8 IPv6)
|
|
12
|
+
* - unspecified / current-network (0.0.0.0/8, ::)
|
|
13
|
+
* - loopback (127.0.0.0/8, ::1) — local dev servers are out of scope here
|
|
14
|
+
* - RFC1918 private (10/8, 172.16/12, 192.168/16) and IPv6 ULA (fc00::/7)
|
|
15
|
+
* - malformed / non-IP strings
|
|
16
|
+
*
|
|
17
|
+
* The massa-ai trust model treats fetch targets as OPEN WORLD (arbitrary
|
|
18
|
+
* URLs the agent fetched at the user's request), so a private/loopback hit is
|
|
19
|
+
* treated as a rebinding attack probe, not a local-dev convenience. This is the
|
|
20
|
+
* conservative default; there is no lenient escape hatch (unlike context-mode's
|
|
21
|
+
* `CTX_FETCH_STRICT` toggle) — if a future task needs to fetch localhost it can
|
|
22
|
+
* add an explicit allowlist.
|
|
23
|
+
*
|
|
24
|
+
* DNS-rebinding defense (TOCTOU-safe):
|
|
25
|
+
* 1. Resolve the hostname ONCE and classify EACH resolved address.
|
|
26
|
+
* 2. PIN the connection to the already-classified resolved IP by rewriting
|
|
27
|
+
* the fetch URL to the literal IP and setting the `Host` header to the
|
|
28
|
+
* original hostname. This closes the TOCTOU: the fetch's own connect-time
|
|
29
|
+
* DNS re-resolution is bypassed entirely because the URL host is now a
|
|
30
|
+
* literal IP (no lookup occurs). An attacker cannot serve a public IP at
|
|
31
|
+
* check-time and a private IP at connect-time for the SAME request — the
|
|
32
|
+
* connect-time resolution never happens.
|
|
33
|
+
* (The alternative — a custom undici `connect.lookup` hook — does NOT work
|
|
34
|
+
* under bun: bun's native fetch ignores the undici Dispatcher entirely,
|
|
35
|
+
* and even the bundled undici shim does not invoke `connect.lookup`. The
|
|
36
|
+
* literal-IP + Host-header approach is the only one that works under bun
|
|
37
|
+
* and is also portable to node/undici.)
|
|
38
|
+
* 3. On fetch, walk redirects MANUALLY (do not let fetch auto-follow) and
|
|
39
|
+
* re-resolve + re-classify + re-PIN the hostname of every hop. An attacker
|
|
40
|
+
* can return a public IP for the first request, then 302 to an internal
|
|
41
|
+
* host whose DNS now resolves to 169.254.169.254. Manual redirect walking
|
|
42
|
+
* with per-hop resolution+pinning defeats this.
|
|
43
|
+
*
|
|
44
|
+
* Exported seams:
|
|
45
|
+
* - classifyIp(ip) — pure IP classifier (tested directly with literals).
|
|
46
|
+
* - assertUrlSafe(url) — resolve + classify, returns pinned IP(s); throws on
|
|
47
|
+
* any blocked IP.
|
|
48
|
+
* - fetchWithSsrfGuard(url, opts) — fetch with DNS-pinned connect + manual
|
|
49
|
+
* redirect walk that re-runs assertUrlSafe (and re-pins) at every hop.
|
|
50
|
+
*/
|
|
51
|
+
import { lookup as dnsLookup } from "node:dns/promises";
|
|
52
|
+
import { logger } from "@massa-ai/shared";
|
|
53
|
+
/** Hard cap on redirect hops we will walk before giving up (loop defense). */
|
|
54
|
+
export const MAX_REDIRECTS = 8;
|
|
55
|
+
let dnsResolver = async (hostname) => {
|
|
56
|
+
// node:dns/promises `lookup` with `all: true` returns {address,family}[].
|
|
57
|
+
const records = await dnsLookup(hostname, { all: true, verbatim: true });
|
|
58
|
+
return records.map((r) => ({ address: r.address }));
|
|
59
|
+
};
|
|
60
|
+
/** Test seam: override the DNS resolver. Returns a restore function. */
|
|
61
|
+
export function setDnsResolver(resolver) {
|
|
62
|
+
const prev = dnsResolver;
|
|
63
|
+
dnsResolver = resolver;
|
|
64
|
+
return () => {
|
|
65
|
+
dnsResolver = prev;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Classify a single IP literal.
|
|
70
|
+
*
|
|
71
|
+
* Returns "block" for link-local / loopback / private / multicast / unspecified
|
|
72
|
+
* / malformed. Returns "public" only for genuinely routable addresses.
|
|
73
|
+
*
|
|
74
|
+
* IPv4-mapped IPv6 (`::ffff:127.0.0.1`) is routed through the IPv4 classifier so
|
|
75
|
+
* loopback mapped into the v6 space is still caught.
|
|
76
|
+
*
|
|
77
|
+
* RFC 6874 zone identifiers (`fe80::1%eth0`, URL-encoded `%25eth0`) are stripped
|
|
78
|
+
* BEFORE classification — without the strip, `::1%eth0` no longer matches
|
|
79
|
+
* `=== "::1"` and would fall through to "public", silently bypassing the guard.
|
|
80
|
+
*/
|
|
81
|
+
export function classifyIp(rawIp) {
|
|
82
|
+
// Strip RFC 6874 zone id first (e.g. `fe80::1%eth0` or `%25eth0`).
|
|
83
|
+
const pctIdx = rawIp.indexOf("%");
|
|
84
|
+
const ip = pctIdx === -1 ? rawIp : rawIp.slice(0, pctIdx);
|
|
85
|
+
const lower = ip.toLowerCase();
|
|
86
|
+
// IPv6 (detected by presence of `:` so IPv4-mapped addresses route correctly).
|
|
87
|
+
if (lower.includes(":")) {
|
|
88
|
+
// IPv4-mapped IPv6 (`::ffff:127.0.0.1`) — recurse through IPv4 classifier.
|
|
89
|
+
// Node's URL normalizes these to hex (`::ffff:7f00:1`), so handle BOTH the
|
|
90
|
+
// dotted-decimal and the hex-compressed forms. Without the hex form, an
|
|
91
|
+
// attacker could reach IMDS via `http://[::ffff:169.254.169.254]/` because
|
|
92
|
+
// URL.hostname yields `[::ffff:a9fe:a9fe]` which the decimal-only regex missed.
|
|
93
|
+
const v4MappedDecimal = lower.match(/^::ffff:([\d.]+)$/);
|
|
94
|
+
if (v4MappedDecimal)
|
|
95
|
+
return classifyIp(v4MappedDecimal[1]);
|
|
96
|
+
const v4MappedHex = lower.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
|
|
97
|
+
if (v4MappedHex) {
|
|
98
|
+
const hi = parseInt(v4MappedHex[1], 16);
|
|
99
|
+
const lo = parseInt(v4MappedHex[2], 16);
|
|
100
|
+
const a = (hi >> 8) & 0xff;
|
|
101
|
+
const b = hi & 0xff;
|
|
102
|
+
const c = (lo >> 8) & 0xff;
|
|
103
|
+
const d = lo & 0xff;
|
|
104
|
+
return classifyIp(`${a}.${b}.${c}.${d}`);
|
|
105
|
+
}
|
|
106
|
+
if (lower === "::")
|
|
107
|
+
return "block"; // unspecified
|
|
108
|
+
// fe80::/10 link-local — match the high-nibble range fe8..feb.
|
|
109
|
+
if (lower.startsWith("fe8") ||
|
|
110
|
+
lower.startsWith("fe9") ||
|
|
111
|
+
lower.startsWith("fea") ||
|
|
112
|
+
lower.startsWith("feb")) {
|
|
113
|
+
return "block";
|
|
114
|
+
}
|
|
115
|
+
if (lower.startsWith("ff"))
|
|
116
|
+
return "block"; // ff00::/8 multicast
|
|
117
|
+
if (lower === "::1")
|
|
118
|
+
return "block"; // loopback
|
|
119
|
+
// fc00::/7 unique-local (fc.. or fd..)
|
|
120
|
+
if (lower.startsWith("fc") || lower.startsWith("fd"))
|
|
121
|
+
return "block";
|
|
122
|
+
return "public";
|
|
123
|
+
}
|
|
124
|
+
// IPv4 — or a non-IP string (malformed = block).
|
|
125
|
+
if (!ip.includes("."))
|
|
126
|
+
return "block";
|
|
127
|
+
const parts = ip.split(".").map((p) => parseInt(p, 10));
|
|
128
|
+
if (parts.length !== 4 || parts.some((p) => Number.isNaN(p) || p < 0 || p > 255)) {
|
|
129
|
+
return "block";
|
|
130
|
+
}
|
|
131
|
+
const [a, b] = parts;
|
|
132
|
+
if (a === 169 && b === 254)
|
|
133
|
+
return "block"; // link-local incl. 169.254.169.254 (IMDS)
|
|
134
|
+
if (a === 0)
|
|
135
|
+
return "block"; // 0.0.0.0/8 current network
|
|
136
|
+
if (a >= 224)
|
|
137
|
+
return "block"; // 224.0.0.0/4 multicast + 240+ reserved
|
|
138
|
+
if (a === 127)
|
|
139
|
+
return "block"; // 127.0.0.0/8 loopback
|
|
140
|
+
if (a === 10)
|
|
141
|
+
return "block"; // 10.0.0.0/8 RFC1918
|
|
142
|
+
if (a === 172 && b >= 16 && b <= 31)
|
|
143
|
+
return "block"; // 172.16.0.0/12 RFC1918
|
|
144
|
+
if (a === 192 && b === 168)
|
|
145
|
+
return "block"; // 192.168.0.0/16 RFC1918
|
|
146
|
+
if (a === 100 && b >= 64 && b <= 127)
|
|
147
|
+
return "block"; // 100.64.0.0/10 CGNAT
|
|
148
|
+
return "public";
|
|
149
|
+
}
|
|
150
|
+
/** Error thrown when a URL or one of its redirect hops is blocked by SSRF. */
|
|
151
|
+
export class SsrfBlockedError extends Error {
|
|
152
|
+
url;
|
|
153
|
+
resolvedIp;
|
|
154
|
+
constructor(message, url, resolvedIp) {
|
|
155
|
+
super(message);
|
|
156
|
+
this.url = url;
|
|
157
|
+
this.resolvedIp = resolvedIp;
|
|
158
|
+
this.name = "SsrfBlockedError";
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Resolve `hostname` and assert every resolved IP is public. Throws
|
|
163
|
+
* `SsrfBlockedError` on the first blocked address. A hostname that resolves to
|
|
164
|
+
* a MIX of public + private is still rejected (TOCTOU-safe: we re-resolve on
|
|
165
|
+
* fetch, so even if the resolver rotates answers, every hop is checked).
|
|
166
|
+
*
|
|
167
|
+
* Returns the `UrlSafetyResult` (pinned IP + original hostname) so the caller
|
|
168
|
+
* can pin the fetch connection to the already-classified IP and close the
|
|
169
|
+
* TOCTOU between check-time and connect-time DNS resolution.
|
|
170
|
+
*/
|
|
171
|
+
export async function assertUrlSafe(rawUrl) {
|
|
172
|
+
let parsed;
|
|
173
|
+
try {
|
|
174
|
+
parsed = new URL(rawUrl);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
throw new SsrfBlockedError(`invalid URL: ${rawUrl}`, rawUrl);
|
|
178
|
+
}
|
|
179
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
180
|
+
throw new SsrfBlockedError(`URL scheme "${parsed.protocol}" not allowed (only http: and https:)`, rawUrl);
|
|
181
|
+
}
|
|
182
|
+
// Bracketed IPv6 host literal (`[::1]`) — Node's `URL.hostname` does NOT
|
|
183
|
+
// strip the brackets (it returns `"[::1]"`, `"[fe80::1]"`, etc.); the old
|
|
184
|
+
// comment claiming otherwise was wrong and caused a CRITICAL SSRF bypass
|
|
185
|
+
// where `http://[::1]/` and `http://[fe80::1]/` fell through to "public".
|
|
186
|
+
// Strip brackets so classifyIp sees the bare IPv6 literal.
|
|
187
|
+
const hostname = parsed.hostname.replace(/^\[|\]$/g, "");
|
|
188
|
+
// Literal IP in the URL (no DNS needed): URL parses `http://127.0.0.1/`
|
|
189
|
+
// with hostname === "127.0.0.1". classifyIp handles it directly. A hostname
|
|
190
|
+
// that is NOT an IP literal goes through DNS resolution below.
|
|
191
|
+
if (looksLikeIpLiteral(hostname)) {
|
|
192
|
+
if (classifyIp(hostname) === "block") {
|
|
193
|
+
throw new SsrfBlockedError(`URL host ${hostname} is a blocked IP range`, rawUrl, hostname);
|
|
194
|
+
}
|
|
195
|
+
return { pinnedIp: hostname, originalHost: hostname, isLiteralIpUrl: true };
|
|
196
|
+
}
|
|
197
|
+
let records;
|
|
198
|
+
try {
|
|
199
|
+
records = await dnsResolver(hostname);
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
const code = err?.code ?? "";
|
|
203
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
204
|
+
// Surface transient DNS codes so the caller can distinguish "blocked" from
|
|
205
|
+
// "resolver hiccup" and retry sensibly.
|
|
206
|
+
throw new SsrfBlockedError(`DNS lookup failed for "${hostname}" (${code}): ${msg}`, rawUrl);
|
|
207
|
+
}
|
|
208
|
+
if (records.length === 0) {
|
|
209
|
+
throw new SsrfBlockedError(`DNS returned no records for "${hostname}"`, rawUrl);
|
|
210
|
+
}
|
|
211
|
+
for (const rec of records) {
|
|
212
|
+
if (classifyIp(rec.address) === "block") {
|
|
213
|
+
throw new SsrfBlockedError(`"${hostname}" resolves to blocked IP ${rec.address} (loopback / private / link-local / multicast)`, rawUrl, rec.address);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Pin to the first classified-public IP. Every record was checked above, so
|
|
217
|
+
// the first is safe to connect to. (We do not round-robin across resolved
|
|
218
|
+
// IPs because only the one we pin is guaranteed classified; a later answer
|
|
219
|
+
// could be attacker-rotated between assert and connect.)
|
|
220
|
+
return {
|
|
221
|
+
pinnedIp: records[0].address,
|
|
222
|
+
originalHost: hostname,
|
|
223
|
+
isLiteralIpUrl: false,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Heuristic: does `hostname` parse as an IP literal (v4 or v6)? Used to skip
|
|
228
|
+
* DNS when the URL already names an IP directly. IPv6 zone ids are tolerated.
|
|
229
|
+
*/
|
|
230
|
+
function looksLikeIpLiteral(hostname) {
|
|
231
|
+
const h = hostname.split("%")[0]; // tolerate zone id
|
|
232
|
+
if (h.includes(":"))
|
|
233
|
+
return true; // IPv6
|
|
234
|
+
// IPv4 = four dot-separated 0-255 octets.
|
|
235
|
+
const parts = h.split(".");
|
|
236
|
+
if (parts.length !== 4)
|
|
237
|
+
return false;
|
|
238
|
+
return parts.every((p) => {
|
|
239
|
+
const n = Number(p);
|
|
240
|
+
return Number.isInteger(n) && n >= 0 && n <= 255 && String(n) === p;
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Fetch a URL with the SSRF DNS-pin + redirect-walk defense.
|
|
245
|
+
*
|
|
246
|
+
* TWO-LAYER DEFENSE (TOCTOU-safe):
|
|
247
|
+
* 1. DNS PIN: `assertUrlSafe` resolves the hostname once and classifies the
|
|
248
|
+
* IP. We then rewrite the fetch URL to connect to that LITERAL IP and set
|
|
249
|
+
* the `Host` header to the original hostname. Because the fetch URL's host
|
|
250
|
+
* is now a literal IP, NO DNS lookup occurs at connect time — the attacker
|
|
251
|
+
* cannot serve a different (private) IP at connect. bun's fetch honors the
|
|
252
|
+
* `Host` header for both HTTP virtual hosting and HTTPS TLS SNI.
|
|
253
|
+
* 2. REDIRECT WALK: does NOT auto-follow. Each 3xx Location header is
|
|
254
|
+
* re-resolved + re-classified + re-pinned before the next hop. Any blocked
|
|
255
|
+
* hop throws `SsrfBlockedError`. Capped at MAX_REDIRECTS to defeat loops.
|
|
256
|
+
*
|
|
257
|
+
* Returns the final (non-redirect) Response. The caller reads the body.
|
|
258
|
+
*/
|
|
259
|
+
export async function fetchWithSsrfGuard(rawUrl, opts = {}) {
|
|
260
|
+
const { timeoutMs = 30_000, signal, _compose } = opts;
|
|
261
|
+
const safety = await assertUrlSafe(rawUrl);
|
|
262
|
+
let url = rawUrl;
|
|
263
|
+
let pin = safety;
|
|
264
|
+
for (let hop = 0; hop <= MAX_REDIRECTS; hop++) {
|
|
265
|
+
const composed = _compose && signal
|
|
266
|
+
? _compose([signal, AbortSignal.timeout(timeoutMs)])
|
|
267
|
+
: (signal
|
|
268
|
+
? _compose
|
|
269
|
+
? _compose([signal])
|
|
270
|
+
: signal
|
|
271
|
+
: AbortSignal.timeout(timeoutMs));
|
|
272
|
+
// Build the DNS-pinned fetch URL + Host header. When the URL already names
|
|
273
|
+
// a literal IP (isLiteralIpUrl), no rewrite is needed — the connect-time
|
|
274
|
+
// DNS lookup is already absent. Otherwise, replace the hostname in the URL
|
|
275
|
+
// with the pinned classified IP and send the original hostname as Host.
|
|
276
|
+
const { fetchUrl, hostHeader } = pinConnection(url, pin);
|
|
277
|
+
// `redirect: "manual"` keeps the Response opaque-redirect; we read the
|
|
278
|
+
// Location header ourselves and re-validate the target.
|
|
279
|
+
const resp = await fetch(fetchUrl, {
|
|
280
|
+
redirect: "manual",
|
|
281
|
+
signal: composed,
|
|
282
|
+
// Conservative default headers — identify as a fetcher, not a browser.
|
|
283
|
+
// Host header pins virtual hosting + TLS SNI to the original hostname.
|
|
284
|
+
headers: {
|
|
285
|
+
"user-agent": "massa-ai-fetch/1.0",
|
|
286
|
+
...(hostHeader ? { host: hostHeader } : {}),
|
|
287
|
+
},
|
|
288
|
+
});
|
|
289
|
+
// 3xx with a Location → walk it.
|
|
290
|
+
if (resp.status >= 300 && resp.status < 400) {
|
|
291
|
+
const location = resp.headers.get("location");
|
|
292
|
+
// Drain so the underlying socket can be reused.
|
|
293
|
+
await resp.body?.cancel().catch(() => { });
|
|
294
|
+
if (!location) {
|
|
295
|
+
throw new SsrfBlockedError(`redirect ${resp.status} without Location header`, url);
|
|
296
|
+
}
|
|
297
|
+
const next = new URL(location, url).toString(); // resolve relative redirects
|
|
298
|
+
if (hop === MAX_REDIRECTS) {
|
|
299
|
+
throw new SsrfBlockedError(`exceeded ${MAX_REDIRECTS} redirects (loop?)`, next);
|
|
300
|
+
}
|
|
301
|
+
logger.debug?.("ssrf redirect hop", { from: url, to: next, status: resp.status });
|
|
302
|
+
// Re-resolve + re-classify + re-pin the NEXT hop (DNS may now differ).
|
|
303
|
+
pin = await assertUrlSafe(next);
|
|
304
|
+
url = next;
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
return resp;
|
|
308
|
+
}
|
|
309
|
+
// Unreachable: the loop either returns or throws on the last iteration.
|
|
310
|
+
throw new SsrfBlockedError("redirect walk exhausted", url);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Build a DNS-pinned fetch URL + Host header from the original URL and the
|
|
314
|
+
* `UrlSafetyResult` (pinned IP + original hostname).
|
|
315
|
+
*
|
|
316
|
+
* When the URL already names a literal IP (`isLiteralIpUrl`), returns the URL
|
|
317
|
+
* unchanged with no Host header (no pinning needed — connect-time DNS is
|
|
318
|
+
* already absent). Otherwise, rewrites the URL's host to the pinned IP literal
|
|
319
|
+
* and returns the original hostname as the Host header value.
|
|
320
|
+
*
|
|
321
|
+
* IPv6 pinned IPs are bracketed in the URL (`http://[2606:4700::1]/`) per
|
|
322
|
+
* RFC 3986. The Host header uses the bare original hostname (no brackets — it
|
|
323
|
+
* was a hostname, not an IP, in the non-literal branch).
|
|
324
|
+
*/
|
|
325
|
+
function pinConnection(url, pin) {
|
|
326
|
+
if (pin.isLiteralIpUrl) {
|
|
327
|
+
return { fetchUrl: url, hostHeader: null };
|
|
328
|
+
}
|
|
329
|
+
const parsed = new URL(url);
|
|
330
|
+
const ipIsV6 = pin.pinnedIp.includes(":");
|
|
331
|
+
parsed.hostname = ipIsV6 ? `[${pin.pinnedIp}]` : pin.pinnedIp;
|
|
332
|
+
return { fetchUrl: parsed.toString(), hostHeader: pin.originalHost };
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=ssrf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssrf.js","sourceRoot":"","sources":["../../../src/services/web/ssrf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAW/B,IAAI,WAAW,GAAgB,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChD,0EAA0E;IAC1E,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,QAAqB;IAClD,MAAM,IAAI,GAAG,WAAW,CAAC;IACzB,WAAW,GAAG,QAAQ,CAAC;IACvB,OAAO,GAAG,EAAE;QACV,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,mEAAmE;IACnE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAE/B,+EAA+E;IAC/E,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,2EAA2E;QAC3E,2EAA2E;QAC3E,wEAAwE;QACxE,2EAA2E;QAC3E,gFAAgF;QAChF,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzD,IAAI,eAAe;YAAE,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC5E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAC3B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACpB,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC,CAAC,cAAc;QAClD,+DAA+D;QAC/D,IACE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YACvB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YACvB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;YACvB,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EACvB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,qBAAqB;QACjE,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,OAAO,CAAC,CAAC,WAAW;QAChD,uCAAuC;QACvC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QACrE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,iDAAiD;IACjD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QACjF,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC,CAAC,0CAA0C;IACtF,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,4BAA4B;IACzD,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC,CAAC,wCAAwC;IACtE,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC,CAAC,uBAAuB;IACtD,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC,CAAC,qBAAqB;IACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC,CAAC,wBAAwB;IAC7E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC,CAAC,yBAAyB;IACrE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC,CAAC,sBAAsB;IAC5E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAG9B;IACA;IAHX,YACE,OAAe,EACN,GAAW,EACX,UAAmB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,QAAG,GAAH,GAAG,CAAQ;QACX,eAAU,GAAV,UAAU,CAAS;QAG5B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAwBD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,gBAAgB,CACxB,eAAe,MAAM,CAAC,QAAQ,uCAAuC,EACrE,MAAM,CACP,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEzD,wEAAwE;IACxE,4EAA4E;IAC5E,+DAA+D;IAC/D,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,CAAC;YACrC,MAAM,IAAI,gBAAgB,CACxB,YAAY,QAAQ,wBAAwB,EAC5C,MAAM,EACN,QAAQ,CACT,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC9E,CAAC;IAED,IAAI,OAA8B,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAAyC,EAAE,IAAI,IAAI,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,2EAA2E;QAC3E,wCAAwC;QACxC,MAAM,IAAI,gBAAgB,CACxB,0BAA0B,QAAQ,MAAM,IAAI,MAAM,GAAG,EAAE,EACvD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CAAC,gCAAgC,QAAQ,GAAG,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,gBAAgB,CACxB,IAAI,QAAQ,4BAA4B,GAAG,CAAC,OAAO,gDAAgD,EACnG,MAAM,EACN,GAAG,CAAC,OAAO,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,yDAAyD;IACzD,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;QAC5B,YAAY,EAAE,QAAQ;QACtB,cAAc,EAAE,KAAK;KACtB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;IACrD,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,OAAO;IACzC,0CAA0C;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAWD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,OAA0B,EAAE;IAE5B,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC;QAC9C,MAAM,QAAQ,GACZ,QAAQ,IAAI,MAAM;YAChB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC,MAAM;gBACL,CAAC,CAAC,QAAQ;oBACR,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC,CAAC,MAAM;gBACV,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAE1C,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEzD,uEAAuE;QACvE,wDAAwD;QACxD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACjC,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,QAAQ;YAChB,uEAAuE;YACvE,uEAAuE;YACvE,OAAO,EAAE;gBACP,YAAY,EAAE,oBAAoB;gBAClC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C;SACF,CAAC,CAAC;QAEH,iCAAiC;QACjC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,gDAAgD;YAChD,MAAM,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,gBAAgB,CACxB,YAAY,IAAI,CAAC,MAAM,0BAA0B,EACjD,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,6BAA6B;YAC7E,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAC1B,MAAM,IAAI,gBAAgB,CACxB,YAAY,aAAa,oBAAoB,EAC7C,IAAI,CACL,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,uEAAuE;YACvE,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAChC,GAAG,GAAG,IAAI,CAAC;YACX,SAAS;QACX,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IACD,wEAAwE;IACxE,MAAM,IAAI,gBAAgB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,aAAa,CACpB,GAAW,EACX,GAAoB;IAEpB,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebController — orchestration for `fetch_and_index`.
|
|
3
|
+
*
|
|
4
|
+
* Owns a single set of injected index deps (vector store + keyword search) and
|
|
5
|
+
* drives the parallel-fetch / serial-index pipeline:
|
|
6
|
+
*
|
|
7
|
+
* 1. Build a `PoolJob` per request URL.
|
|
8
|
+
* 2. runPool fetches them in parallel (concurrency from the caller, cpu-capped
|
|
9
|
+
* for batch). Each job runs fetchAndConvertOne, whose internal index drain
|
|
10
|
+
* is already SERIAL — so even when N fetches race, the per-URL indexing
|
|
11
|
+
* never overlaps with itself. Cross-URL overlap is acceptable for
|
|
12
|
+
* pgvector (row locks) but would contend on PostgreSQL WAL; the per-URL
|
|
13
|
+
* serial drain keeps the worst case to N concurrent single-writers, which
|
|
14
|
+
* PostgreSQL tolerates and pgvector handles trivially.
|
|
15
|
+
* 3. Drain the allSettled-shaped results in input order and return per-URL
|
|
16
|
+
* status + chunk counts.
|
|
17
|
+
*
|
|
18
|
+
* The controller is the composition root that wires the real vector/keyword
|
|
19
|
+
* stores into the fetcher's `WebIndexDeps`. Tests construct it with a captured
|
|
20
|
+
* in-memory deps map instead.
|
|
21
|
+
*/
|
|
22
|
+
import type { IVectorStore, IKeywordSearch } from "@massa-ai/shared";
|
|
23
|
+
import { type FetchOneResult } from "./fetcher.js";
|
|
24
|
+
export interface FetchRequest {
|
|
25
|
+
url: string;
|
|
26
|
+
source?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface FetchAndIndexParams {
|
|
29
|
+
/** Single URL (legacy single shape). */
|
|
30
|
+
url?: string;
|
|
31
|
+
/** Label for the single-`url` case. */
|
|
32
|
+
source?: string;
|
|
33
|
+
/** Batch shape. Wins over `url` when both are provided. */
|
|
34
|
+
requests?: FetchRequest[];
|
|
35
|
+
/** Max URLs fetched in parallel (1-8, default 1). */
|
|
36
|
+
concurrency?: number;
|
|
37
|
+
/** Bypass the TTL cache. */
|
|
38
|
+
force?: boolean;
|
|
39
|
+
/** Per-call cache window override (ms). `0` bypasses like force. */
|
|
40
|
+
ttl?: number;
|
|
41
|
+
/** projectId scoping the indexed chunks. Defaults to "web". */
|
|
42
|
+
projectId?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface WebControllerDeps {
|
|
45
|
+
vectorStore: IVectorStore;
|
|
46
|
+
keywordSearch: IKeywordSearch;
|
|
47
|
+
}
|
|
48
|
+
export declare class WebController {
|
|
49
|
+
private static instance;
|
|
50
|
+
private readonly deps;
|
|
51
|
+
private readonly cache;
|
|
52
|
+
constructor(deps: WebControllerDeps);
|
|
53
|
+
static getInstance(): WebController;
|
|
54
|
+
/**
|
|
55
|
+
* Boot the singleton with real store deps. The Tools API route calls this lazily
|
|
56
|
+
* on first request (after resolving the async vector store). Idempotent.
|
|
57
|
+
*/
|
|
58
|
+
static instantiate(deps: WebControllerDeps): WebController;
|
|
59
|
+
/** For tests: reset the singleton + clear the cache. */
|
|
60
|
+
static resetInstance(): void;
|
|
61
|
+
/** Build the WebIndexDeps seam from the real stores + the in-memory cache. */
|
|
62
|
+
private indexDeps;
|
|
63
|
+
fetchAndIndex(params: FetchAndIndexParams): Promise<{
|
|
64
|
+
success: boolean;
|
|
65
|
+
results: FetchOneResult[];
|
|
66
|
+
concurrency: number;
|
|
67
|
+
capped: boolean;
|
|
68
|
+
}>;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=web-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-controller.d.ts","sourceRoot":"","sources":["../../../src/services/web/web-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAkB,MAAM,kBAAkB,CAAC;AAGrF,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,YAAY,CAAC;IAC1B,aAAa,EAAE,cAAc,CAAC;CAC/B;AAcD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;gBAEjC,IAAI,EAAE,iBAAiB;IAInC,MAAM,CAAC,WAAW,IAAI,aAAa;IAUnC;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa;IAO1D,wDAAwD;IACxD,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B,8EAA8E;IAC9E,OAAO,CAAC,SAAS;IAuCX,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC;QACxD,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CAkDH"}
|