@remnic/core 9.62.0 → 9.62.2
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/access-admin-ops-surface.d.ts +11 -11
- package/dist/access-admin-ops-surface.js +28 -28
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +11 -11
- package/dist/access-authorization-probe.js +29 -29
- package/dist/access-boundary.d.ts +11 -11
- package/dist/access-boundary.js +28 -28
- package/dist/access-cli.js +93 -91
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +1 -1
- package/dist/access-extraction-force-flush.d.ts +11 -11
- package/dist/access-extraction-force-flush.js +28 -28
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-lcm-compaction.d.ts +11 -11
- package/dist/access-http-lifecycle-flush.d.ts +11 -11
- package/dist/access-http-offline-stream.d.ts +11 -11
- package/dist/access-http-query.js +28 -28
- package/dist/access-http.d.ts +12 -12
- package/dist/access-http.js +38 -38
- package/dist/access-identity-continuity-surface.d.ts +9 -9
- package/dist/access-identity-continuity-surface.js +28 -28
- package/dist/access-lcm-surface.d.ts +11 -11
- package/dist/access-lcm-surface.js +28 -28
- package/dist/access-mcp.d.ts +11 -11
- package/dist/access-mcp.js +33 -33
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-EMvicnrb.d.ts → access-namespace-preflight-yO4LMGFH.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +28 -28
- package/dist/access-observe-write-surface.d.ts +11 -11
- package/dist/access-observe-write-surface.js +28 -28
- package/dist/access-offline-manifest.d.ts +9 -9
- package/dist/access-offline-manifest.js +2 -2
- package/dist/access-operations-batch.js +29 -29
- package/dist/access-operations.d.ts +11 -11
- package/dist/access-operations.js +32 -32
- package/dist/access-recall-concurrency.d.ts +11 -11
- package/dist/access-recall-concurrency.js +28 -28
- package/dist/access-recall-response.d.ts +11 -11
- package/dist/access-recall-response.js +28 -28
- package/dist/access-recall-surface.d.ts +11 -11
- package/dist/access-recall-surface.js +28 -28
- package/dist/{access-service-BeDYQQ62.d.ts → access-service-M4LgO141.d.ts} +7 -7
- package/dist/access-service-helpers.d.ts +11 -11
- package/dist/access-service.d.ts +11 -11
- package/dist/access-service.js +28 -28
- package/dist/access-surface-catalog.d.ts +11 -11
- package/dist/access-surface-catalog.js +30 -30
- package/dist/access-wearables-meetings-surface.d.ts +3 -3
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +3 -3
- package/dist/ambient-provenance.d.ts +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/{auto-sync-FMWQQB3J.js → auto-sync-Z52VWMNC.js} +3 -3
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-learner.js +2 -2
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +9 -9
- package/dist/briefing-window.d.ts +2 -2
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +13 -12
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-turn-helpers.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{catalog-B2SxZ6LU.d.ts → catalog-CyYTf_ok.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +3 -3
- package/dist/causal-chain.js +3 -3
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +16 -16
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/causal-trajectory.js +2 -2
- package/dist/{chunk-B2QHVLJO.js → chunk-256FBCVX.js} +22 -10
- package/dist/chunk-256FBCVX.js.map +1 -0
- package/dist/{chunk-QP2IZTUR.js → chunk-2TYIAKU5.js} +2 -2
- package/dist/{chunk-HQBVQICL.js → chunk-347ZR6D4.js} +2 -2
- package/dist/{chunk-76YNCJ5H.js → chunk-3F3CVVDS.js} +2 -2
- package/dist/{chunk-TE4MKFT2.js → chunk-3MA7JVXN.js} +4 -4
- package/dist/{chunk-KHQ57QLJ.js → chunk-46WM6JX2.js} +7 -3
- package/dist/chunk-46WM6JX2.js.map +1 -0
- package/dist/chunk-47DU4SGJ.js +92 -0
- package/dist/chunk-47DU4SGJ.js.map +1 -0
- package/dist/{chunk-AWRJBAIH.js → chunk-4FFROSFG.js} +37 -14
- package/dist/{chunk-AWRJBAIH.js.map → chunk-4FFROSFG.js.map} +1 -1
- package/dist/{chunk-N4OYPGZS.js → chunk-4HO3542O.js} +2 -2
- package/dist/{chunk-HEEEMJ26.js → chunk-4IZ2IT7D.js} +3 -3
- package/dist/{chunk-4XAVQLBR.js → chunk-4Y2RHVCV.js} +2 -2
- package/dist/{chunk-33JBK2XP.js → chunk-5F6HMNMZ.js} +2 -2
- package/dist/{chunk-5WQMORU5.js → chunk-5PFGMO33.js} +2 -2
- package/dist/{chunk-6HEM6HTQ.js → chunk-6GGTATZF.js} +2 -2
- package/dist/{chunk-W3Y6FYRK.js → chunk-7BJYTX6Q.js} +2 -2
- package/dist/{chunk-2GRLJMKJ.js → chunk-7DRSWPUV.js} +3 -3
- package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
- package/dist/{chunk-HXXGZ4KV.js → chunk-ALNZEWGN.js} +2 -2
- package/dist/{chunk-5WVUO6QT.js → chunk-AR253JBM.js} +1 -1
- package/dist/chunk-AR253JBM.js.map +1 -0
- package/dist/{chunk-S3B3UIQ3.js → chunk-AYIHDC5S.js} +2 -2
- package/dist/{chunk-2RIDW23Y.js → chunk-BBHFAVMP.js} +8 -8
- package/dist/{chunk-MJ4UGUR6.js → chunk-BHO6RHE5.js} +3 -3
- package/dist/{chunk-URN7XWGC.js → chunk-BP6WMYLP.js} +3 -3
- package/dist/{chunk-YUIBXMZY.js → chunk-CALURYWR.js} +284 -249
- package/dist/chunk-CALURYWR.js.map +1 -0
- package/dist/{chunk-D5HDJWNN.js → chunk-CH627RRV.js} +4 -4
- package/dist/{chunk-C3R732UY.js → chunk-CLJ5QS6J.js} +257 -60
- package/dist/chunk-CLJ5QS6J.js.map +1 -0
- package/dist/{chunk-YLHM5BQQ.js → chunk-DCUMFQYM.js} +171 -8
- package/dist/chunk-DCUMFQYM.js.map +1 -0
- package/dist/{chunk-ZBJMUXZH.js → chunk-DJ7HMNSL.js} +15 -8
- package/dist/chunk-DJ7HMNSL.js.map +1 -0
- package/dist/{chunk-XDK6ZFLL.js → chunk-DROAPP6N.js} +3 -3
- package/dist/{chunk-MU3TPZOV.js → chunk-DTLF2SLZ.js} +2 -2
- package/dist/{chunk-I67HKRBF.js → chunk-EFWHCTYJ.js} +2 -2
- package/dist/{chunk-XD4VGLDL.js → chunk-FF6E6HOT.js} +56 -52
- package/dist/chunk-FF6E6HOT.js.map +1 -0
- package/dist/{chunk-NP7FLVZW.js → chunk-G2FCSILA.js} +2 -2
- package/dist/{chunk-3GPBFDXH.js → chunk-H23GIXJC.js} +2 -2
- package/dist/{chunk-WT6UL3UA.js → chunk-H7PRHUBD.js} +2 -2
- package/dist/{chunk-4JGSG7QN.js → chunk-HSBQJRV2.js} +2 -2
- package/dist/{chunk-L33N3BCA.js → chunk-HVKMJAEF.js} +2 -2
- package/dist/{chunk-CSOYVTRX.js → chunk-IIPJKCZB.js} +3 -3
- package/dist/{chunk-E57E5SCS.js → chunk-IRLH4NM2.js} +3 -3
- package/dist/{chunk-H32ANIFP.js → chunk-IZRNVNPV.js} +2 -2
- package/dist/{chunk-XBR5BAKW.js → chunk-JCJGYNIS.js} +3 -3
- package/dist/{chunk-EIQFIJDM.js → chunk-JDI7G6EA.js} +2 -2
- package/dist/{chunk-QWPAQLYV.js → chunk-JFLKSD5V.js} +2 -2
- package/dist/{chunk-KQS72GCR.js → chunk-LJOIZPJH.js} +2 -2
- package/dist/{chunk-N4EPIKSY.js → chunk-LLGDVG52.js} +3 -3
- package/dist/{chunk-7N7DB4L5.js → chunk-LTJTP5YQ.js} +10 -9
- package/dist/chunk-LTJTP5YQ.js.map +1 -0
- package/dist/{chunk-VOELBUS4.js → chunk-NXH34IPL.js} +2 -2
- package/dist/{chunk-XL3TATMJ.js → chunk-OQIRBGUU.js} +21 -12
- package/dist/chunk-OQIRBGUU.js.map +1 -0
- package/dist/chunk-PJKTFXE2.js +119 -0
- package/dist/chunk-PJKTFXE2.js.map +1 -0
- package/dist/{chunk-JGW2EUCQ.js → chunk-PMRUMGK6.js} +2 -2
- package/dist/{chunk-KAB7TZN3.js → chunk-PSNN25DW.js} +2 -2
- package/dist/{chunk-LRGSLV7M.js → chunk-PYHOAXTI.js} +4 -4
- package/dist/{chunk-PA5OPZX2.js → chunk-QCI73Z7C.js} +2 -2
- package/dist/{chunk-EHMMRZOZ.js → chunk-QICOU4RY.js} +2 -2
- package/dist/{chunk-FW73HN33.js → chunk-RFH7U5LT.js} +2 -2
- package/dist/{chunk-4SGDYYWV.js → chunk-RPKJHYVE.js} +2 -2
- package/dist/{chunk-DSA47WBN.js → chunk-RYST72N5.js} +13 -2
- package/dist/chunk-RYST72N5.js.map +1 -0
- package/dist/{chunk-L4DLLKPN.js → chunk-SZ4HFZKB.js} +2 -2
- package/dist/chunk-T3GIETKV.js +152 -0
- package/dist/chunk-T3GIETKV.js.map +1 -0
- package/dist/{chunk-MYZ4NA43.js → chunk-TGSMU3F2.js} +3 -3
- package/dist/{chunk-CM4SZZBN.js → chunk-TIRJV2LW.js} +2 -2
- package/dist/{chunk-EGW4O32Z.js → chunk-UDTME32W.js} +7 -4
- package/dist/chunk-UDTME32W.js.map +1 -0
- package/dist/{chunk-CIA6ZUBA.js → chunk-WMOJIOIG.js} +2 -2
- package/dist/{chunk-W4Q54HM3.js → chunk-WR2YKUIW.js} +2 -2
- package/dist/{chunk-VWDTV6SH.js → chunk-X6E7TT3A.js} +2 -2
- package/dist/{chunk-D4OCJSLV.js → chunk-YDPAE2RD.js} +2 -2
- package/dist/{chunk-G3YBWFUC.js → chunk-YIIC5IDU.js} +35 -18
- package/dist/chunk-YIIC5IDU.js.map +1 -0
- package/dist/{chunk-QRKYABS6.js → chunk-YSR3DXGC.js} +2 -2
- package/dist/{chunk-LBJBNWS2.js → chunk-YTHQHH5U.js} +2 -2
- package/dist/{chunk-GN7HO2LA.js → chunk-ZPGHA7EO.js} +12 -12
- package/dist/{chunk-VUDALPI5.js → chunk-ZQKXRKMR.js} +19 -5
- package/dist/chunk-ZQKXRKMR.js.map +1 -0
- package/dist/{chunk-FQSDU634.js → chunk-ZS4JADYY.js} +3 -3
- package/dist/{cli-DB_uakTc.d.ts → cli-Bw9z-KqX.d.ts} +5 -5
- package/dist/cli.d.ts +13 -13
- package/dist/cli.js +62 -62
- package/dist/coding/pre-action-gate.d.ts +1 -1
- package/dist/coding/pre-action-gate.js +3 -3
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +13 -12
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +3 -3
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +13 -12
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +13 -12
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +15 -14
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/corpus-watermark.d.ts +1 -1
- package/dist/corpus-watermark.js +15 -14
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +1 -1
- package/dist/{dependency-propagation-delivery-DcOVpK3y.d.ts → dependency-propagation-delivery-BxhvAppj.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer-wiring.js +3 -3
- package/dist/direct-answer.d.ts +1 -1
- package/dist/direct-answer.js +2 -2
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-origin-fields.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +13 -12
- package/dist/entity-schema.d.ts +1 -1
- package/dist/episodic-context.d.ts +92 -0
- package/dist/episodic-context.js +16 -0
- package/dist/episodic-context.js.map +1 -0
- package/dist/explicit-capture.d.ts +9 -9
- package/dist/external-wiki-access.d.ts +11 -11
- package/dist/external-wiki-access.js +29 -29
- package/dist/external-wiki-collection-registration.d.ts +1 -1
- package/dist/external-wiki-collection.d.ts +1 -1
- package/dist/external-wiki-mcp-tools.d.ts +11 -11
- package/dist/extraction-error-classification.d.ts +1 -1
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction-liveness.d.ts +1 -1
- package/dist/extraction-normalization.d.ts +1 -1
- package/dist/extraction-normalization.js +2 -2
- package/dist/extraction-prompt.d.ts +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts +1 -1
- package/dist/extraction-source-grounding.js +3 -3
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +18 -18
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/{forget-5TWK7CZT.js → forget-SZ2BXDGF.js} +2 -2
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-path-reconstruction.d.ts +1 -1
- package/dist/graph-path-scoring.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/harmonic-construction.js +2 -2
- package/dist/harmonic-retrieval.js +2 -2
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/index.d.ts +22 -21
- package/dist/index.js +118 -103
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +8 -2
- package/dist/lcm/engine.js +4 -4
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +9 -9
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +1 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +13 -12
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -12
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +14 -13
- package/dist/{maintenance-5c1olVtB.d.ts → maintenance-uJb74j64.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +11 -11
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-snapshot.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +14 -13
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +6 -5
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +13 -12
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +16 -15
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +21 -20
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +18 -17
- package/dist/{orchestrator-HPuY6I4i.d.ts → orchestrator-CFi-5JSR.d.ts} +23 -8
- package/dist/orchestrator.d.ts +9 -9
- package/dist/orchestrator.js +93 -91
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-CvVe1Q2_.d.ts → pipeline-BdF3ferY.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/policy-runtime.js +3 -3
- package/dist/proactive-contention.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/provenance.js +2 -2
- package/dist/{public-http-D0JKFkyf.d.ts → public-http-DK-QwaBu.d.ts} +1 -1
- package/dist/{qmd-Bd0Tp76_.d.ts → qmd-D_62bYNl.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +2 -2
- package/dist/recall-concurrency-config.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-query-policy.js +2 -2
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-tokenization.d.ts +3 -1
- package/dist/recall-tokenization.js +5 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +1 -1
- package/dist/reconcile/manifest.d.ts +10 -1
- package/dist/reconcile/manifest.js +1 -1
- package/dist/reconcile/plan.d.ts +1 -1
- package/dist/replay/normalizers/chatgpt.d.ts +1 -1
- package/dist/replay/normalizers/claude.d.ts +1 -1
- package/dist/replay/normalizers/openclaw.d.ts +1 -1
- package/dist/replay/normalizers/shared.d.ts +1 -1
- package/dist/replay/runner.d.ts +1 -1
- package/dist/replay/types.d.ts +1 -1
- package/dist/replica-divergence.d.ts +1 -1
- package/dist/replica-peers-config.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +6 -6
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/salvage-envelope.d.ts +1 -1
- package/dist/{scope-profiles-ClLtm9gK.d.ts → scope-profiles-CeMv7pP0.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +5 -4
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +9 -8
- package/dist/search/lancedb-backend.d.ts +14 -1
- package/dist/search/lancedb-backend.js +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +22 -1
- package/dist/search/orama-backend.js +2 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-B1EkeEDj.d.ts → semantic-consolidation-B-85brYj.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +14 -14
- package/dist/semantic-rule-promotion.js +13 -12
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +13 -13
- package/dist/{service-Cf3ANQj9.d.ts → service-CoO0HA2E.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +15 -14
- package/dist/{storage-DS2O_6Qt.d.ts → storage-BVAVitkO.d.ts} +1 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +12 -11
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +14 -14
- package/dist/support-passport/index.js +31 -31
- package/dist/temporal-supersession.d.ts +2 -2
- package/dist/temporal-timeline-recall.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +2 -2
- package/dist/tier-routing.d.ts +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/import-sqlite.js +2 -2
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/trust-zones.js +2 -2
- package/dist/{types-BOANGhCJ.d.ts → types-DWHOxlZP.d.ts} +3 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/user-message-cleaning.d.ts +23 -0
- package/dist/user-message-cleaning.js +10 -0
- package/dist/user-message-cleaning.js.map +1 -0
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +13 -13
- package/dist/whitespace.d.ts +26 -1
- package/dist/whitespace.js +11 -3
- package/dist/work-product-ledger.js +2 -2
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +12 -2
- package/src/access-service-offline-file-content.test.ts +1 -0
- package/src/cli.ts +14 -13
- package/src/config.ts +11 -0
- package/src/entity-retrieval.ts +4 -7
- package/src/episodic-context-recall.integration.test.ts +169 -0
- package/src/episodic-context.test.ts +266 -0
- package/src/episodic-context.ts +274 -0
- package/src/harmonic-construction.test.ts +187 -2
- package/src/harmonic-retrieval.ts +54 -32
- package/src/index.ts +3 -4
- package/src/lcm/engine.ts +18 -1
- package/src/lifecycle/tombstones.test.ts +134 -0
- package/src/lifecycle/tombstones.ts +29 -2
- package/src/orchestration/episodic-context-section.ts +255 -0
- package/src/orchestration/recall-internal-deps.ts +2 -0
- package/src/orchestration/recall-internal.ts +40 -25
- package/src/orchestration/recall-result-formatter.ts +37 -0
- package/src/orchestration/recall-section-coordinator.ts +20 -14
- package/src/recall-tokenization.ts +14 -8
- package/src/reconcile/manifest.test.ts +133 -4
- package/src/reconcile/manifest.ts +43 -7
- package/src/search/factory.ts +1 -0
- package/src/search/lancedb-backend.ts +24 -16
- package/src/search/orama-backend.test.ts +208 -1
- package/src/search/orama-backend.ts +133 -18
- package/src/search/orama-cjk-tokenizer.test.ts +108 -0
- package/src/search/orama-cjk-tokenizer.ts +143 -0
- package/src/storage/tombstone-migration-sources.test.ts +116 -0
- package/src/storage/tombstone-migration-sources.ts +90 -0
- package/src/storage.ts +13 -34
- package/src/types.ts +3 -3
- package/src/user-message-cleaning.ts +139 -0
- package/src/whitespace.test.ts +178 -0
- package/src/whitespace.ts +119 -0
- package/dist/chunk-5WVUO6QT.js.map +0 -1
- package/dist/chunk-6MKAMLQL.js +0 -16
- package/dist/chunk-6MKAMLQL.js.map +0 -1
- package/dist/chunk-7N7DB4L5.js.map +0 -1
- package/dist/chunk-B2QHVLJO.js.map +0 -1
- package/dist/chunk-C3R732UY.js.map +0 -1
- package/dist/chunk-DSA47WBN.js.map +0 -1
- package/dist/chunk-EGW4O32Z.js.map +0 -1
- package/dist/chunk-G3YBWFUC.js.map +0 -1
- package/dist/chunk-KHQ57QLJ.js.map +0 -1
- package/dist/chunk-VUDALPI5.js.map +0 -1
- package/dist/chunk-XD4VGLDL.js.map +0 -1
- package/dist/chunk-XL3TATMJ.js.map +0 -1
- package/dist/chunk-YLHM5BQQ.js.map +0 -1
- package/dist/chunk-YUIBXMZY.js.map +0 -1
- package/dist/chunk-ZBJMUXZH.js.map +0 -1
- /package/dist/{auto-sync-FMWQQB3J.js.map → auto-sync-Z52VWMNC.js.map} +0 -0
- /package/dist/{chunk-QP2IZTUR.js.map → chunk-2TYIAKU5.js.map} +0 -0
- /package/dist/{chunk-HQBVQICL.js.map → chunk-347ZR6D4.js.map} +0 -0
- /package/dist/{chunk-76YNCJ5H.js.map → chunk-3F3CVVDS.js.map} +0 -0
- /package/dist/{chunk-TE4MKFT2.js.map → chunk-3MA7JVXN.js.map} +0 -0
- /package/dist/{chunk-N4OYPGZS.js.map → chunk-4HO3542O.js.map} +0 -0
- /package/dist/{chunk-HEEEMJ26.js.map → chunk-4IZ2IT7D.js.map} +0 -0
- /package/dist/{chunk-4XAVQLBR.js.map → chunk-4Y2RHVCV.js.map} +0 -0
- /package/dist/{chunk-33JBK2XP.js.map → chunk-5F6HMNMZ.js.map} +0 -0
- /package/dist/{chunk-5WQMORU5.js.map → chunk-5PFGMO33.js.map} +0 -0
- /package/dist/{chunk-6HEM6HTQ.js.map → chunk-6GGTATZF.js.map} +0 -0
- /package/dist/{chunk-W3Y6FYRK.js.map → chunk-7BJYTX6Q.js.map} +0 -0
- /package/dist/{chunk-2GRLJMKJ.js.map → chunk-7DRSWPUV.js.map} +0 -0
- /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
- /package/dist/{chunk-HXXGZ4KV.js.map → chunk-ALNZEWGN.js.map} +0 -0
- /package/dist/{chunk-S3B3UIQ3.js.map → chunk-AYIHDC5S.js.map} +0 -0
- /package/dist/{chunk-2RIDW23Y.js.map → chunk-BBHFAVMP.js.map} +0 -0
- /package/dist/{chunk-MJ4UGUR6.js.map → chunk-BHO6RHE5.js.map} +0 -0
- /package/dist/{chunk-URN7XWGC.js.map → chunk-BP6WMYLP.js.map} +0 -0
- /package/dist/{chunk-D5HDJWNN.js.map → chunk-CH627RRV.js.map} +0 -0
- /package/dist/{chunk-XDK6ZFLL.js.map → chunk-DROAPP6N.js.map} +0 -0
- /package/dist/{chunk-MU3TPZOV.js.map → chunk-DTLF2SLZ.js.map} +0 -0
- /package/dist/{chunk-I67HKRBF.js.map → chunk-EFWHCTYJ.js.map} +0 -0
- /package/dist/{chunk-NP7FLVZW.js.map → chunk-G2FCSILA.js.map} +0 -0
- /package/dist/{chunk-3GPBFDXH.js.map → chunk-H23GIXJC.js.map} +0 -0
- /package/dist/{chunk-WT6UL3UA.js.map → chunk-H7PRHUBD.js.map} +0 -0
- /package/dist/{chunk-4JGSG7QN.js.map → chunk-HSBQJRV2.js.map} +0 -0
- /package/dist/{chunk-L33N3BCA.js.map → chunk-HVKMJAEF.js.map} +0 -0
- /package/dist/{chunk-CSOYVTRX.js.map → chunk-IIPJKCZB.js.map} +0 -0
- /package/dist/{chunk-E57E5SCS.js.map → chunk-IRLH4NM2.js.map} +0 -0
- /package/dist/{chunk-H32ANIFP.js.map → chunk-IZRNVNPV.js.map} +0 -0
- /package/dist/{chunk-XBR5BAKW.js.map → chunk-JCJGYNIS.js.map} +0 -0
- /package/dist/{chunk-EIQFIJDM.js.map → chunk-JDI7G6EA.js.map} +0 -0
- /package/dist/{chunk-QWPAQLYV.js.map → chunk-JFLKSD5V.js.map} +0 -0
- /package/dist/{chunk-KQS72GCR.js.map → chunk-LJOIZPJH.js.map} +0 -0
- /package/dist/{chunk-N4EPIKSY.js.map → chunk-LLGDVG52.js.map} +0 -0
- /package/dist/{chunk-VOELBUS4.js.map → chunk-NXH34IPL.js.map} +0 -0
- /package/dist/{chunk-JGW2EUCQ.js.map → chunk-PMRUMGK6.js.map} +0 -0
- /package/dist/{chunk-KAB7TZN3.js.map → chunk-PSNN25DW.js.map} +0 -0
- /package/dist/{chunk-LRGSLV7M.js.map → chunk-PYHOAXTI.js.map} +0 -0
- /package/dist/{chunk-PA5OPZX2.js.map → chunk-QCI73Z7C.js.map} +0 -0
- /package/dist/{chunk-EHMMRZOZ.js.map → chunk-QICOU4RY.js.map} +0 -0
- /package/dist/{chunk-FW73HN33.js.map → chunk-RFH7U5LT.js.map} +0 -0
- /package/dist/{chunk-4SGDYYWV.js.map → chunk-RPKJHYVE.js.map} +0 -0
- /package/dist/{chunk-L4DLLKPN.js.map → chunk-SZ4HFZKB.js.map} +0 -0
- /package/dist/{chunk-MYZ4NA43.js.map → chunk-TGSMU3F2.js.map} +0 -0
- /package/dist/{chunk-CM4SZZBN.js.map → chunk-TIRJV2LW.js.map} +0 -0
- /package/dist/{chunk-CIA6ZUBA.js.map → chunk-WMOJIOIG.js.map} +0 -0
- /package/dist/{chunk-W4Q54HM3.js.map → chunk-WR2YKUIW.js.map} +0 -0
- /package/dist/{chunk-VWDTV6SH.js.map → chunk-X6E7TT3A.js.map} +0 -0
- /package/dist/{chunk-D4OCJSLV.js.map → chunk-YDPAE2RD.js.map} +0 -0
- /package/dist/{chunk-QRKYABS6.js.map → chunk-YSR3DXGC.js.map} +0 -0
- /package/dist/{chunk-LBJBNWS2.js.map → chunk-YTHQHH5U.js.map} +0 -0
- /package/dist/{chunk-GN7HO2LA.js.map → chunk-ZPGHA7EO.js.map} +0 -0
- /package/dist/{chunk-FQSDU634.js.map → chunk-ZS4JADYY.js.map} +0 -0
- /package/dist/{forget-5TWK7CZT.js.map → forget-SZ2BXDGF.js.map} +0 -0
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
readCausalTrajectoryRecordsStrict,
|
|
3
3
|
readCausalTrajectoryRevisionToken,
|
|
4
4
|
resolveCausalTrajectoryStoreDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ALNZEWGN.js";
|
|
6
6
|
|
|
7
7
|
// src/coding/pre-action-gate.ts
|
|
8
8
|
import { createHash } from "crypto";
|
|
@@ -221,4 +221,4 @@ export {
|
|
|
221
221
|
normalizeActionIntent,
|
|
222
222
|
PreActionFailureGate
|
|
223
223
|
};
|
|
224
|
-
//# sourceMappingURL=chunk-
|
|
224
|
+
//# sourceMappingURL=chunk-G2FCSILA.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-7T4TOGMS.js";
|
|
4
4
|
import {
|
|
5
5
|
defineOperation
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-4FFROSFG.js";
|
|
7
7
|
|
|
8
8
|
// src/external-wiki-access.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
|
|
|
26
26
|
export {
|
|
27
27
|
externalWikiSearchOperation
|
|
28
28
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-H23GIXJC.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
countRecallTokenOverlap,
|
|
3
3
|
normalizeRecallTokens
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DJ7HMNSL.js";
|
|
5
5
|
import {
|
|
6
6
|
assertIsoRecordedAt,
|
|
7
7
|
assertSafePathSegment,
|
|
@@ -182,4 +182,4 @@ export {
|
|
|
182
182
|
searchWorkProductLedgerEntries,
|
|
183
183
|
getWorkProductLedgerStatus
|
|
184
184
|
};
|
|
185
|
-
//# sourceMappingURL=chunk-
|
|
185
|
+
//# sourceMappingURL=chunk-H7PRHUBD.js.map
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
} from "./chunk-YYQAKIDJ.js";
|
|
26
26
|
import {
|
|
27
27
|
getOperation
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-4FFROSFG.js";
|
|
29
29
|
import {
|
|
30
30
|
SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
|
|
31
31
|
} from "./chunk-XDL5CYZN.js";
|
|
@@ -3946,4 +3946,4 @@ export {
|
|
|
3946
3946
|
MCP_SUPPORTED_PROTOCOL_VERSIONS,
|
|
3947
3947
|
EngramMcpServer
|
|
3948
3948
|
};
|
|
3949
|
-
//# sourceMappingURL=chunk-
|
|
3949
|
+
//# sourceMappingURL=chunk-HSBQJRV2.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
computeCorpusWatermarks,
|
|
6
6
|
resolveCorpusNamespaceRoots
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EFWHCTYJ.js";
|
|
8
8
|
|
|
9
9
|
// src/operator-doctor-corpus.ts
|
|
10
10
|
var DIGEST_PREFIX_LENGTH = 12;
|
|
@@ -78,4 +78,4 @@ export {
|
|
|
78
78
|
corpusWatermarksFromCheck,
|
|
79
79
|
summarizeCorpusAndReplica
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-HVKMJAEF.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isDirectAnswerEligible
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6GGTATZF.js";
|
|
4
4
|
import {
|
|
5
5
|
normalizeRecallTokens
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DJ7HMNSL.js";
|
|
7
7
|
import {
|
|
8
8
|
throwIfAborted
|
|
9
9
|
} from "./chunk-BTTPKDIL.js";
|
|
@@ -177,4 +177,4 @@ export {
|
|
|
177
177
|
resolveCategory,
|
|
178
178
|
tryDirectAnswer
|
|
179
179
|
};
|
|
180
|
-
//# sourceMappingURL=chunk-
|
|
180
|
+
//# sourceMappingURL=chunk-IIPJKCZB.js.map
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-B7RWBZXW.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveCausalTrajectoryStoreDir
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ALNZEWGN.js";
|
|
7
7
|
import {
|
|
8
8
|
normalizeRecallTokens
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DJ7HMNSL.js";
|
|
10
10
|
import {
|
|
11
11
|
assertIsoRecordedAt,
|
|
12
12
|
assertString,
|
|
@@ -339,4 +339,4 @@ export {
|
|
|
339
339
|
scoreStitchCandidate,
|
|
340
340
|
stitchCausalChain
|
|
341
341
|
};
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
342
|
+
//# sourceMappingURL=chunk-IRLH4NM2.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StorageManager
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CALURYWR.js";
|
|
4
4
|
import {
|
|
5
5
|
composeMemoryEnvelope
|
|
6
6
|
} from "./chunk-LCU5R6TQ.js";
|
|
@@ -546,4 +546,4 @@ export {
|
|
|
546
546
|
setSemanticRulePromotionTestHooks,
|
|
547
547
|
promoteSemanticRuleFromMemory
|
|
548
548
|
};
|
|
549
|
-
//# sourceMappingURL=chunk-
|
|
549
|
+
//# sourceMappingURL=chunk-IZRNVNPV.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
externalWikiSearchOperation
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-H23GIXJC.js";
|
|
4
4
|
import {
|
|
5
5
|
memoryStoreRequestSchema
|
|
6
6
|
} from "./chunk-JKW663ZN.js";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
DELTA_SUBCOMMANDS,
|
|
11
11
|
defineOperation,
|
|
12
12
|
isCodegraphToolName
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-4FFROSFG.js";
|
|
14
14
|
import {
|
|
15
15
|
serializeMutations,
|
|
16
16
|
withHeldFileLock
|
|
@@ -1818,4 +1818,4 @@ export {
|
|
|
1818
1818
|
codegraphIngestTracesOperation,
|
|
1819
1819
|
REGISTERED_OPERATIONS
|
|
1820
1820
|
};
|
|
1821
|
-
//# sourceMappingURL=chunk-
|
|
1821
|
+
//# sourceMappingURL=chunk-JCJGYNIS.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
SupportPassportError,
|
|
3
3
|
SupportPassportOwnerCreateGrantRequestSchema,
|
|
4
4
|
getOperation
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-4FFROSFG.js";
|
|
6
6
|
|
|
7
7
|
// src/support-passport/access-http.ts
|
|
8
8
|
var OWNER_ROOT = "/engram/v1/support-passport";
|
|
@@ -137,4 +137,4 @@ export {
|
|
|
137
137
|
SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
|
|
138
138
|
handleSupportPassportOwnerHttp
|
|
139
139
|
};
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
140
|
+
//# sourceMappingURL=chunk-JDI7G6EA.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createSearchBackend
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LTJTP5YQ.js";
|
|
4
4
|
import {
|
|
5
5
|
namespaceIdentityToken,
|
|
6
6
|
normalizeNamespaceIdentity
|
|
@@ -470,4 +470,4 @@ export {
|
|
|
470
470
|
NamespaceSearchRouter,
|
|
471
471
|
normalizeQmdResultPath
|
|
472
472
|
};
|
|
473
|
-
//# sourceMappingURL=chunk-
|
|
473
|
+
//# sourceMappingURL=chunk-JFLKSD5V.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
countRecallTokenOverlap,
|
|
3
3
|
normalizeRecallTokens
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DJ7HMNSL.js";
|
|
5
5
|
import {
|
|
6
6
|
assertIsoRecordedAt,
|
|
7
7
|
assertSafePathSegment,
|
|
@@ -905,4 +905,4 @@ export {
|
|
|
905
905
|
seedTrustZoneDemoDataset,
|
|
906
906
|
getTrustZoneStoreStatus
|
|
907
907
|
};
|
|
908
|
-
//# sourceMappingURL=chunk-
|
|
908
|
+
//# sourceMappingURL=chunk-LJOIZPJH.js.map
|
|
@@ -28,10 +28,10 @@ import {
|
|
|
28
28
|
defineOperation,
|
|
29
29
|
parseNamespacePreflightWriteOp,
|
|
30
30
|
resolveAuthorizedNamespaceWritablePreflight
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-4FFROSFG.js";
|
|
32
32
|
import {
|
|
33
33
|
validateBriefingFormat
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-7BJYTX6Q.js";
|
|
35
35
|
import {
|
|
36
36
|
enforceNamespaceAllowList,
|
|
37
37
|
tokenCapabilityStore
|
|
@@ -494,4 +494,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
|
|
|
494
494
|
defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
|
|
495
495
|
defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
|
|
496
496
|
defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
|
|
497
|
-
//# sourceMappingURL=chunk-
|
|
497
|
+
//# sourceMappingURL=chunk-LLGDVG52.js.map
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NoopSearchBackend
|
|
3
|
+
} from "./chunk-CYEPCZN5.js";
|
|
4
|
+
import {
|
|
5
|
+
OramaBackend
|
|
6
|
+
} from "./chunk-DCUMFQYM.js";
|
|
1
7
|
import {
|
|
2
8
|
RemoteSearchBackend
|
|
3
9
|
} from "./chunk-VYISFWVX.js";
|
|
@@ -6,16 +12,10 @@ import {
|
|
|
6
12
|
} from "./chunk-6KTXE6A3.js";
|
|
7
13
|
import {
|
|
8
14
|
LanceDbBackend
|
|
9
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-OQIRBGUU.js";
|
|
10
16
|
import {
|
|
11
17
|
MeilisearchBackend
|
|
12
18
|
} from "./chunk-VANZKHTN.js";
|
|
13
|
-
import {
|
|
14
|
-
NoopSearchBackend
|
|
15
|
-
} from "./chunk-CYEPCZN5.js";
|
|
16
|
-
import {
|
|
17
|
-
OramaBackend
|
|
18
|
-
} from "./chunk-YLHM5BQQ.js";
|
|
19
19
|
import {
|
|
20
20
|
createConversationIndexBackend
|
|
21
21
|
} from "./chunk-227UFSEQ.js";
|
|
@@ -84,7 +84,8 @@ function resolveNonQmdBackend(config) {
|
|
|
84
84
|
collection,
|
|
85
85
|
embedHelper,
|
|
86
86
|
memoryDir: config.memoryDir,
|
|
87
|
-
embeddingDimension: config.oramaEmbeddingDimension
|
|
87
|
+
embeddingDimension: config.oramaEmbeddingDimension,
|
|
88
|
+
cjkSegmentationEnabled: config.oramaCjkSegmentation !== false
|
|
88
89
|
});
|
|
89
90
|
}
|
|
90
91
|
return void 0;
|
|
@@ -178,4 +179,4 @@ export {
|
|
|
178
179
|
createConversationSearchBackend,
|
|
179
180
|
createConversationIndexRuntime
|
|
180
181
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
182
|
+
//# sourceMappingURL=chunk-LTJTP5YQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/search/factory.ts"],"sourcesContent":["import type { PluginConfig } from \"../types.js\";\nimport type { SearchBackend } from \"./port.js\";\nimport path from \"node:path\";\nimport { NoopSearchBackend } from \"./noop-backend.js\";\nimport { RemoteSearchBackend } from \"./remote-backend.js\";\nimport { LanceDbBackend } from \"./lancedb-backend.js\";\nimport { MeilisearchBackend } from \"./meilisearch-backend.js\";\nimport { OramaBackend } from \"./orama-backend.js\";\nimport { EmbedHelper } from \"./embed-helper.js\";\nimport { QmdClient, type QmdClientOptions } from \"../qmd.js\";\nimport { log } from \"../logger.js\";\nimport { FaissConversationIndexAdapter } from \"../conversation-index/faiss-adapter.js\";\nimport { resolvePipelineProcessingCapabilities } from \"../capabilities.js\";\nimport {\n resolveIndexingCapabilities,\n resolveQmdCapabilities,\n} from \"../capabilities.js\";\nimport {\n createConversationIndexBackend,\n type ConversationIndexBackend,\n type ConversationQmdRuntime,\n} from \"../conversation-index/backend.js\";\n\n/**\n * Resolve non-QMD backends from config.\n * Returns a SearchBackend for \"noop\" or \"remote\", or undefined to signal \"use QMD\".\n */\nfunction resolveNonQmdBackend(config: PluginConfig): SearchBackend | undefined {\n const backend = config.searchBackend ?? \"qmd\";\n const collection = config.qmdCollection;\n\n if (backend === \"noop\") {\n return new NoopSearchBackend();\n }\n\n if (backend === \"remote\") {\n const baseUrl = config.remoteSearchBaseUrl || \"http://localhost:8181\";\n if (!config.remoteSearchBaseUrl) {\n log.warn(\"searchBackend is 'remote' but remoteSearchBaseUrl is not configured; using default http://localhost:8181\");\n }\n return new RemoteSearchBackend({\n baseUrl,\n apiKey: config.remoteSearchApiKey,\n timeoutMs: config.remoteSearchTimeoutMs,\n });\n }\n\n if (backend === \"lancedb\") {\n const embedHelper = new EmbedHelper(config, {\n hostEmbeddingExpectedDimension: config.lanceEmbeddingDimension,\n });\n return new LanceDbBackend({\n dbPath: config.lanceDbPath!,\n collection,\n embedHelper,\n memoryDir: config.memoryDir,\n embeddingDimension: config.lanceEmbeddingDimension!,\n });\n }\n\n if (backend === \"meilisearch\") {\n return new MeilisearchBackend({\n host: config.meilisearchHost!,\n apiKey: config.meilisearchApiKey,\n collection,\n timeoutMs: config.meilisearchTimeoutMs,\n autoIndex: config.meilisearchAutoIndex,\n memoryDir: config.memoryDir,\n });\n }\n\n if (backend === \"orama\") {\n const embedHelper = new EmbedHelper(config, {\n hostEmbeddingExpectedDimension: config.oramaEmbeddingDimension,\n });\n return new OramaBackend({\n dbPath: config.oramaDbPath!,\n collection,\n embedHelper,\n memoryDir: config.memoryDir,\n embeddingDimension: config.oramaEmbeddingDimension!,\n cjkSegmentationEnabled: config.oramaCjkSegmentation !== false,\n });\n }\n\n return undefined;\n}\n\n/** Shared QMD options derived from plugin config. */\nfunction qmdOptions(config: PluginConfig): QmdClientOptions {\n return {\n slowLog: {\n enabled: resolvePipelineProcessingCapabilities(config).slowLog,\n thresholdMs: config.slowLogThresholdMs,\n },\n updateTimeoutMs: config.qmdUpdateTimeoutMs,\n updateMinIntervalMs: config.qmdUpdateMinIntervalMs,\n qmdPath: config.qmdPath,\n daemonUrl: resolveQmdCapabilities(config).qmdDaemon ? config.qmdDaemonUrl : undefined,\n daemonRecheckIntervalMs: config.qmdDaemonRecheckIntervalMs,\n qmdSupportedVersion: config.qmdSupportedVersion,\n qmdAutoUpgradeEnabled: resolveQmdCapabilities(config).qmdAutoUpgrade,\n qmdAutoUpgradeCheckIntervalMs: config.qmdAutoUpgradeCheckIntervalMs,\n qmdChunkStrategy: config.qmdChunkStrategy,\n qmdCandidateLimit: config.qmdCandidateLimit,\n qmdQueryRerankEnabled: resolveQmdCapabilities(config).qmdQueryRerank,\n qmdIndexName: config.qmdIndexName,\n qmdForceCpu: config.qmdForceCpu,\n qmdGpuBackend: config.qmdGpuBackend,\n qmdEmbedParallelism: config.qmdEmbedParallelism,\n qmdEmbedModel: config.qmdEmbedModel,\n qmdRerankModel: config.qmdRerankModel,\n qmdGenerateModel: config.qmdGenerateModel,\n qmdSearchStrategy: config.qmdSearchStrategy,\n qmdSubprocessStrategy: config.qmdSubprocessStrategy,\n qmdDaemonTimeoutMs: config.qmdDaemonTimeoutMs,\n };\n}\n\nexport function isSearchBackendEnabled(config: PluginConfig): boolean {\n const backend = config.searchBackend ?? \"qmd\";\n return backend !== \"noop\" && (backend !== \"qmd\" || resolveQmdCapabilities(config).qmd);\n}\n\n/**\n * Create a SearchBackend from plugin config.\n *\n * - \"noop\" → NoopSearchBackend\n * - \"remote\" → RemoteSearchBackend (HTTP REST)\n * - \"qmd\" (default) → QmdClient if qmdEnabled, else NoopSearchBackend\n */\nexport function createSearchBackend(config: PluginConfig): SearchBackend {\n if (!isSearchBackendEnabled(config)) return new NoopSearchBackend();\n const nonQmd = resolveNonQmdBackend(config);\n if (nonQmd) return nonQmd;\n return new QmdClient(config.qmdCollection, config.qmdMaxResults, qmdOptions(config));\n}\n\n/**\n * Create a SearchBackend for conversation index use.\n * Returns undefined if conversation index is not enabled or not using qmd backend.\n */\nexport function createConversationSearchBackend(config: PluginConfig): SearchBackend | undefined {\n if (!resolveIndexingCapabilities(config).conversationIndex || config.conversationIndexBackend !== \"qmd\") {\n return undefined;\n }\n\n // Conversation index is QMD-only — do not use lancedb/meilisearch/orama even if\n // searchBackend is set to one of those. Only respect \"noop\" to allow disabling.\n const backend = config.searchBackend ?? \"qmd\";\n if (backend === \"noop\") return undefined;\n\n // QMD — respect qmdEnabled to avoid spawning the binary\n if (!resolveQmdCapabilities(config).qmd) return undefined;\n\n return new QmdClient(\n config.conversationIndexQmdCollection,\n Math.max(6, config.conversationRecallTopK),\n qmdOptions(config),\n );\n}\n\nexport interface ConversationIndexRuntime {\n qmd?: ConversationQmdRuntime;\n faiss?: FaissConversationIndexAdapter;\n backend?: ConversationIndexBackend;\n}\n\nexport function createConversationIndexRuntime(\n config: PluginConfig,\n overrides?: {\n getQmd?: () => ConversationQmdRuntime | undefined;\n getFaiss?: () => FaissConversationIndexAdapter | undefined;\n },\n): ConversationIndexRuntime {\n const qmd = createConversationSearchBackend(config) as ConversationQmdRuntime | undefined;\n let faiss: FaissConversationIndexAdapter | undefined;\n if (resolveIndexingCapabilities(config).conversationIndex && config.conversationIndexBackend === \"faiss\") {\n try {\n faiss = new FaissConversationIndexAdapter({\n memoryDir: config.memoryDir,\n scriptPath: config.conversationIndexFaissScriptPath,\n pythonBin: config.conversationIndexFaissPythonBin,\n modelId: config.conversationIndexFaissModelId,\n indexDir: config.conversationIndexFaissIndexDir,\n upsertTimeoutMs: config.conversationIndexFaissUpsertTimeoutMs,\n searchTimeoutMs: config.conversationIndexFaissSearchTimeoutMs,\n healthTimeoutMs: config.conversationIndexFaissHealthTimeoutMs,\n maxBatchSize: config.conversationIndexFaissMaxBatchSize,\n maxSearchK: config.conversationIndexFaissMaxSearchK,\n });\n } catch (err) {\n log.warn(`Conversation index FAISS adapter disabled: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n const backend = createConversationIndexBackend({\n enabled: resolveIndexingCapabilities(config).conversationIndex,\n backend: config.conversationIndexBackend,\n getQmd: () => overrides?.getQmd?.() ?? qmd,\n getFaiss: () => overrides?.getFaiss?.() ?? faiss,\n collectionDir: path.join(config.memoryDir, \"conversation-index\"),\n });\n\n return { qmd, faiss, backend };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-PQVCH2AE.js";
|
|
5
5
|
import {
|
|
6
6
|
collapseWhitespace
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PJKTFXE2.js";
|
|
8
8
|
import {
|
|
9
9
|
isSafeMemoryContent
|
|
10
10
|
} from "./chunk-5GKPFL3S.js";
|
|
@@ -384,4 +384,4 @@ export {
|
|
|
384
384
|
parseProvenanceConfig,
|
|
385
385
|
buildFactProvenance
|
|
386
386
|
};
|
|
387
|
-
//# sourceMappingURL=chunk-
|
|
387
|
+
//# sourceMappingURL=chunk-NXH34IPL.js.map
|
|
@@ -169,10 +169,7 @@ var LanceDbBackend = class {
|
|
|
169
169
|
rows.length > 0 && rows.every((row) => row.vectorProvider === embeddingProviderIdentity)
|
|
170
170
|
);
|
|
171
171
|
if (isSearchAborted(execution)) return;
|
|
172
|
-
|
|
173
|
-
await table.createIndex("content", { config: this.lanceIndex.fts() });
|
|
174
|
-
} catch {
|
|
175
|
-
}
|
|
172
|
+
await this.createFtsIndex(table);
|
|
176
173
|
if (collection === this.collection) this.table = table;
|
|
177
174
|
} catch (err) {
|
|
178
175
|
log.debug(`LanceDbBackend update failed: ${err}`);
|
|
@@ -282,10 +279,7 @@ var LanceDbBackend = class {
|
|
|
282
279
|
vectorProvider: ""
|
|
283
280
|
};
|
|
284
281
|
const newTable = await db.createTable(collection, [emptyRow]);
|
|
285
|
-
|
|
286
|
-
await newTable.createIndex("content", { config: this.lanceIndex.fts() });
|
|
287
|
-
} catch {
|
|
288
|
-
}
|
|
282
|
+
await this.createFtsIndex(newTable);
|
|
289
283
|
try {
|
|
290
284
|
await newTable.delete("docid = '__placeholder__'");
|
|
291
285
|
} catch {
|
|
@@ -331,15 +325,30 @@ var LanceDbBackend = class {
|
|
|
331
325
|
vectorProvider: ""
|
|
332
326
|
};
|
|
333
327
|
this.table = await db.createTable(this.collection, [emptyRow]);
|
|
328
|
+
await this.createFtsIndex(this.table);
|
|
334
329
|
try {
|
|
335
|
-
await this.table.
|
|
330
|
+
await this.table.delete("docid = '__placeholder__'");
|
|
336
331
|
} catch {
|
|
337
332
|
}
|
|
333
|
+
return this.table;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Create the FTS index on the content column with the default tokenizer.
|
|
337
|
+
*
|
|
338
|
+
* Known limitation (issue #2187): tantivy's default tokenizer does not
|
|
339
|
+
* segment space-free scripts (CJK/Thai), so lexical recall over those
|
|
340
|
+
* scripts is near zero here. LanceDB's `baseTokenizer: "ngram"` option is
|
|
341
|
+
* not script-aware — it would n-gram English content too, degrading
|
|
342
|
+
* precision and bloating the index — so no CJK-capable configuration is
|
|
343
|
+
* available in the current @lancedb/lancedb API. Non-English lexical recall
|
|
344
|
+
* on this backend rides on the vector tier instead. See
|
|
345
|
+
* docs/search-backends.md ("Non-English content").
|
|
346
|
+
*/
|
|
347
|
+
async createFtsIndex(table) {
|
|
338
348
|
try {
|
|
339
|
-
await
|
|
349
|
+
await table.createIndex("content", { config: this.lanceIndex.fts() });
|
|
340
350
|
} catch {
|
|
341
351
|
}
|
|
342
|
-
return this.table;
|
|
343
352
|
}
|
|
344
353
|
async searchTable(table, query, mode, limit, execution) {
|
|
345
354
|
try {
|
|
@@ -499,4 +508,4 @@ function isMissingVectorProviderColumnError(err) {
|
|
|
499
508
|
export {
|
|
500
509
|
LanceDbBackend
|
|
501
510
|
};
|
|
502
|
-
//# sourceMappingURL=chunk-
|
|
511
|
+
//# sourceMappingURL=chunk-OQIRBGUU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/search/lancedb-backend.ts"],"sourcesContent":["import { log } from \"../logger.js\";\nimport {\n reportSearchDegradation,\n resolveEnsureCollectionArgs,\n type SearchBackend,\n type SearchExecutionOptions,\n type SearchQueryOptions,\n type SearchResult,\n} from \"./port.js\";\nimport type { EmbedHelper, EmbedProviderIdentity, EmbedWithProviderResult } from \"./embed-helper.js\";\nimport { scanMemoryDir } from \"./document-scanner.js\";\nimport { isSearchAborted, throwIfSearchAborted } from \"./abort.js\";\n\nexport interface LanceDbBackendOptions {\n dbPath: string;\n collection: string;\n embedHelper: EmbedHelper;\n memoryDir: string;\n embeddingDimension: number;\n}\n\n/**\n * LanceDB search backend — embedded hybrid FTS+vector with RRF reranking.\n *\n * Uses @lancedb/lancedb for native Arrow-backed storage.\n * One table per collection. Supports full-text, vector, and hybrid search.\n */\nexport class LanceDbBackend implements SearchBackend {\n private readonly dbPath: string;\n private readonly collection: string;\n private readonly embedHelper: EmbedHelper;\n private readonly memoryDir: string;\n private readonly embeddingDimension: number;\n private available = false;\n private db: any = null;\n private lanceModule: any = null;\n private readonly vectorProviderCompatibility = new WeakMap<\n object,\n { providerIdentity: EmbedProviderIdentity; compatible: boolean }\n >();\n\n constructor(opts: LanceDbBackendOptions) {\n this.dbPath = opts.dbPath;\n this.collection = opts.collection;\n this.embedHelper = opts.embedHelper;\n this.memoryDir = opts.memoryDir;\n this.embeddingDimension = opts.embeddingDimension;\n }\n\n async probe(): Promise<boolean> {\n try {\n await this.ensureDb();\n this.available = true;\n return true;\n } catch (err) {\n log.debug(`LanceDbBackend probe failed: ${err}`);\n this.available = false;\n return false;\n }\n }\n\n isAvailable(): boolean {\n return this.available;\n }\n\n debugStatus(): string {\n return `backend=lancedb available=${this.available} dbPath=${this.dbPath}`;\n }\n\n async search(\n query: string,\n _collection?: string,\n maxResults?: number,\n _options?: SearchQueryOptions,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]> {\n return this.hybridSearch(query, _collection, maxResults, execution);\n }\n\n async searchGlobal(query: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n const limit = maxResults ?? 10;\n if (!this.available) return [];\n\n try {\n throwIfSearchAborted(execution, \"LanceDbBackend global search aborted\");\n const db = await this.ensureDb();\n const tableNames = await db.tableNames();\n const allResults: SearchResult[] = [];\n\n for (const name of tableNames) {\n throwIfSearchAborted(execution, \"LanceDbBackend global search aborted\");\n try {\n const table = await db.openTable(name);\n const results = await this.searchTable(table, query, \"hybrid\", limit, execution);\n allResults.push(...results);\n } catch {\n // Skip tables that fail\n }\n }\n\n allResults.sort((a, b) => b.score - a.score);\n return allResults.slice(0, limit);\n } catch (err) {\n log.debug(`LanceDbBackend searchGlobal failed: ${err}`);\n return [];\n }\n }\n\n async bm25Search(query: string, collection?: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n if (isSearchAborted(execution)) return [];\n const table = await this.ensureTableForCollection(collection ?? this.collection);\n if (isSearchAborted(execution)) return [];\n if (!table) return [];\n return this.searchTable(table, query, \"fts\", maxResults ?? 10, execution);\n }\n\n async vectorSearch(query: string, collection?: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n if (isSearchAborted(execution)) return [];\n const table = await this.ensureTableForCollection(collection ?? this.collection);\n if (isSearchAborted(execution)) return [];\n if (!table) return [];\n return this.searchTable(table, query, \"vector\", maxResults ?? 10, execution);\n }\n\n async hybridSearch(query: string, collection?: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]> {\n if (isSearchAborted(execution)) return [];\n const table = await this.ensureTableForCollection(collection ?? this.collection);\n if (isSearchAborted(execution)) return [];\n if (!table) return [];\n return this.searchTable(table, query, \"hybrid\", maxResults ?? 10, execution);\n }\n\n async update(execution?: SearchExecutionOptions): Promise<void> {\n await this.updateCollection(this.collection, execution);\n }\n\n async updateCollection(collection: string, execution?: SearchExecutionOptions): Promise<void> {\n await this.updateCollectionFromDir(collection, this.memoryDir, execution);\n }\n\n async updateCollectionFromDir(collection: string, memoryDir: string, execution?: SearchExecutionOptions): Promise<void> {\n if (isSearchAborted(execution)) return;\n let table = await this.ensureTableForCollection(collection);\n if (isSearchAborted(execution)) return;\n if (!table) return;\n\n const docs = await scanMemoryDir(memoryDir);\n if (isSearchAborted(execution)) return;\n if (docs.length === 0) {\n // Clear stale data when no docs remain\n try {\n const db = await this.ensureDb();\n await db.dropTable(collection).catch(() => {});\n if (collection === this.collection) this.table = null;\n } catch {\n // Best-effort cleanup\n }\n return;\n }\n\n const embeddingProviderIdentity = this.embedHelper.getProviderIdentity();\n const existingVectors = new Map<string, {\n vector: number[];\n providerIdentity?: string;\n }>();\n const vectorProviderColumnState = await this.tableVectorProviderColumnState(table);\n if (vectorProviderColumnState === \"missing\") {\n table = await this.recreateTableForCollection(collection);\n if (isSearchAborted(execution)) return;\n if (!table) return;\n } else if (vectorProviderColumnState === \"present\") {\n try {\n const existingRows = await table.query().select([\"docid\", \"vector\", \"vectorProvider\"]).toArray();\n for (const row of existingRows ?? []) {\n if (isSearchAborted(execution)) return;\n const docid = row.docid;\n if (typeof docid !== \"string\") continue;\n const vector = row.vector;\n if (!vector || typeof vector !== \"object\") continue;\n existingVectors.set(docid, {\n vector: Array.from(vector as ArrayLike<number>),\n providerIdentity: typeof row.vectorProvider === \"string\" ? row.vectorProvider : undefined,\n });\n }\n } catch {\n log.debug(\"LanceDbBackend skipped refresh after vector preservation failed\");\n return;\n }\n } else {\n log.debug(\"LanceDbBackend skipped vector preservation after vectorProvider probe failed\");\n return;\n }\n\n const rows = docs.map((d) => {\n const existing = existingVectors.get(d.docid);\n const canPreserveVector =\n existing &&\n this.isCompatibleStoredVector(existing.vector) &&\n (!embeddingProviderIdentity ||\n existing.providerIdentity === embeddingProviderIdentity);\n return {\n docid: d.docid,\n path: d.path,\n content: d.content,\n snippet: d.snippet,\n vector: canPreserveVector\n ? existing.vector\n : new Array(this.embeddingDimension).fill(0),\n vectorProvider: canPreserveVector\n ? existing.providerIdentity ?? \"\"\n : \"\",\n };\n });\n\n try {\n if (isSearchAborted(execution)) return;\n await table.add(rows, { mode: \"overwrite\" });\n this.rememberVectorProviderCompatibility(\n table,\n embeddingProviderIdentity,\n rows.length > 0 && rows.every((row) => row.vectorProvider === embeddingProviderIdentity),\n );\n if (isSearchAborted(execution)) return;\n // FTS index on the content column.\n await this.createFtsIndex(table);\n if (collection === this.collection) this.table = table;\n } catch (err) {\n log.debug(`LanceDbBackend update failed: ${err}`);\n }\n }\n\n async embed(): Promise<void> {\n await this.embedCollection(this.collection);\n }\n\n async embedCollection(collection: string): Promise<void> {\n if (!this.embedHelper.isAvailable()) return;\n\n const table = await this.ensureTableForCollection(collection);\n if (!table) return;\n\n try {\n const embeddingProviderIdentity = this.embedHelper.getProviderIdentity();\n const allRows = await table.query().select([\"docid\", \"content\", \"vector\", \"vectorProvider\"]).toArray();\n const needsEmbed = allRows.filter((row: any) => {\n if (embeddingProviderIdentity && row.vectorProvider !== embeddingProviderIdentity) {\n return true;\n }\n return !this.isCompatibleStoredVector(row.vector);\n });\n\n if (needsEmbed.length === 0) {\n this.rememberVectorProviderCompatibility(table, embeddingProviderIdentity, true);\n return;\n }\n\n let rowsToEmbed = needsEmbed;\n let embedResult = await this.embedHelper.embedBatchWithProvider(\n rowsToEmbed.map((row: any) => row.content as string),\n );\n if (!embedResult) return;\n if (\n embeddingProviderIdentity &&\n embedResult.providerIdentity !== embeddingProviderIdentity\n ) {\n const effectiveProviderIdentity = embedResult.providerIdentity;\n const originalDocids = new Set(rowsToEmbed.map((row: any) => row.docid));\n const effectiveNeedsEmbed = allRows.filter((row: any) => (\n row.vectorProvider !== effectiveProviderIdentity ||\n !this.isCompatibleStoredVector(row.vector)\n ));\n const sameRows =\n effectiveNeedsEmbed.length === rowsToEmbed.length &&\n effectiveNeedsEmbed.every((row: any) => originalDocids.has(row.docid));\n if (!sameRows) {\n const effectiveTexts = effectiveNeedsEmbed.map((row: any) => row.content as string);\n const effectiveEmbedResult = await this.embedHelper.embedBatchWithProvider(effectiveTexts);\n if (effectiveEmbedResult) {\n rowsToEmbed = effectiveNeedsEmbed;\n embedResult = effectiveEmbedResult;\n }\n }\n }\n const { vectors, providerIdentity } = embedResult;\n\n let allEmbedded = true;\n for (let i = 0; i < rowsToEmbed.length; i++) {\n const vec = vectors[i];\n if (!this.isExpectedDimensionVector(vec)) {\n allEmbedded = false;\n continue;\n }\n const docid = rowsToEmbed[i].docid;\n await table.update({\n where: `docid = '${docid.replace(/'/g, \"''\")}'`,\n values: { vector: vec, vectorProvider: providerIdentity },\n });\n }\n if (allEmbedded) {\n this.rememberVectorProviderCompatibility(table, providerIdentity, true);\n } else {\n this.rememberVectorProviderCompatibility(table, providerIdentity, false);\n }\n } catch (err) {\n log.debug(`LanceDbBackend embed failed: ${err}`);\n }\n }\n\n async ensureCollection(\n _memoryDir: string,\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions,\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\"> {\n const { collection, execution: effectiveExecution } = resolveEnsureCollectionArgs(\n collectionOrExecution,\n execution,\n );\n if (isSearchAborted(effectiveExecution)) return \"skipped\";\n try {\n await this.ensureTableForCollection(collection ?? this.collection);\n return \"present\";\n } catch {\n return \"missing\";\n }\n }\n\n private table: any = null;\n\n private get lanceIndex(): any {\n return this.lanceModule.Index ?? this.lanceModule.default?.Index;\n }\n\n private async ensureDb(): Promise<any> {\n if (this.db) return this.db;\n if (!this.lanceModule) {\n this.lanceModule = await import(\"@lancedb/lancedb\");\n }\n const connect = this.lanceModule.connect ?? this.lanceModule.default?.connect;\n this.db = await connect(this.dbPath);\n return this.db;\n }\n\n private async ensureTableForCollection(collection: string): Promise<any> {\n // For the default collection, use the cached instance\n if (collection === this.collection) return this.ensureTable();\n\n const db = await this.ensureDb();\n const tables = await db.tableNames();\n\n if (tables.includes(collection)) {\n return await db.openTable(collection);\n }\n\n // Create empty table with schema\n const emptyRow = {\n docid: \"__placeholder__\",\n path: \"\",\n content: \"\",\n snippet: \"\",\n vector: new Array(this.embeddingDimension).fill(0),\n vectorProvider: \"\",\n };\n const newTable = await db.createTable(collection, [emptyRow]);\n await this.createFtsIndex(newTable);\n try {\n await newTable.delete(\"docid = '__placeholder__'\");\n } catch {\n // May fail if delete isn't supported on empty-ish tables\n }\n return newTable;\n }\n\n private async recreateTableForCollection(collection: string): Promise<any> {\n const db = await this.ensureDb();\n try {\n await db.dropTable(collection).catch(() => {});\n } catch {\n // Best-effort legacy schema migration; table creation below may still recover.\n }\n if (collection === this.collection) this.table = null;\n return this.ensureTableForCollection(collection);\n }\n\n private async tableVectorProviderColumnState(table: any): Promise<\"present\" | \"missing\" | \"unknown\"> {\n try {\n await table.query().select([\"vectorProvider\"]).toArray();\n return \"present\";\n } catch (err) {\n if (isMissingVectorProviderColumnError(err)) {\n return \"missing\";\n }\n log.debug(`LanceDbBackend vectorProvider column probe failed: ${err}`);\n return \"unknown\";\n }\n }\n\n private async ensureTable(): Promise<any> {\n if (this.table) return this.table;\n\n const db = await this.ensureDb();\n const tables = await db.tableNames();\n\n if (tables.includes(this.collection)) {\n this.table = await db.openTable(this.collection);\n return this.table;\n }\n\n // Create empty table with schema\n const emptyRow = {\n docid: \"__placeholder__\",\n path: \"\",\n content: \"\",\n snippet: \"\",\n vector: new Array(this.embeddingDimension).fill(0),\n vectorProvider: \"\",\n };\n this.table = await db.createTable(this.collection, [emptyRow]);\n // Create FTS index on content column\n await this.createFtsIndex(this.table);\n // Remove placeholder row\n try {\n await this.table.delete(\"docid = '__placeholder__'\");\n } catch {\n // May fail if delete isn't supported on empty-ish tables\n }\n return this.table;\n }\n\n /**\n * Create the FTS index on the content column with the default tokenizer.\n *\n * Known limitation (issue #2187): tantivy's default tokenizer does not\n * segment space-free scripts (CJK/Thai), so lexical recall over those\n * scripts is near zero here. LanceDB's `baseTokenizer: \"ngram\"` option is\n * not script-aware — it would n-gram English content too, degrading\n * precision and bloating the index — so no CJK-capable configuration is\n * available in the current @lancedb/lancedb API. Non-English lexical recall\n * on this backend rides on the vector tier instead. See\n * docs/search-backends.md (\"Non-English content\").\n */\n private async createFtsIndex(table: any): Promise<void> {\n try {\n await table.createIndex(\"content\", { config: this.lanceIndex.fts() });\n } catch {\n // FTS index creation may fail on some platforms — degrade gracefully\n }\n }\n\n private async searchTable(\n table: any,\n query: string,\n mode: \"fts\" | \"vector\" | \"hybrid\",\n limit: number,\n execution?: SearchExecutionOptions,\n ): Promise<SearchResult[]> {\n try {\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n if (mode === \"fts\") {\n const results = await table.search(query, \"fts\").limit(limit).toArray();\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n return this.mapRows(results);\n }\n\n if (mode === \"vector\") {\n const embedResult = await this.resolveCompatibleQueryEmbedding(table, query, execution);\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n if (!embedResult) {\n // Fall back to FTS\n const results = await table.search(query, \"fts\").limit(limit).toArray();\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n return this.mapRows(results);\n }\n const results = await table.search(embedResult.vector).limit(limit).toArray();\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n return this.mapRows(results);\n }\n\n // hybrid — try FTS+vector with RRF reranking\n const embedResult = await this.resolveCompatibleQueryEmbedding(table, query, execution);\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n if (!embedResult) {\n const results = await table.search(query, \"fts\").limit(limit).toArray();\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n return this.mapRows(results);\n }\n\n try {\n const results = await table\n .search(query, \"hybrid\")\n .vector(embedResult.vector)\n .limit(limit)\n .toArray();\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n return this.mapRows(results);\n } catch {\n // Hybrid may not be supported in all LanceDB versions — fall back to vector\n const results = await table.search(embedResult.vector).limit(limit).toArray();\n throwIfSearchAborted(execution, `LanceDbBackend ${mode} search aborted`);\n return this.mapRows(results);\n }\n } catch (err) {\n log.debug(`LanceDbBackend search (${mode}) failed: ${err}`);\n if (!isSearchAborted(execution)) {\n reportSearchDegradation(execution, {\n backend: \"lancedb\",\n code: \"backend_error\",\n detail: err instanceof Error ? err.name : typeof err,\n });\n }\n return [];\n }\n }\n\n private async resolveCompatibleQueryEmbedding(\n table: any,\n query: string,\n execution?: SearchExecutionOptions,\n ): Promise<EmbedWithProviderResult | null> {\n const embedResult = await this.embedHelper.embedWithProvider(query, { signal: execution?.signal });\n throwIfSearchAborted(execution, \"LanceDbBackend query embedding aborted\");\n if (!embedResult || !this.isExpectedDimensionVector(embedResult.vector)) return null;\n\n const storedProviderIdentity = await this.findCompatibleStoredVectorProvider(table, execution);\n if (!storedProviderIdentity) {\n this.rememberVectorProviderCompatibility(table, embedResult.providerIdentity, false);\n return null;\n }\n if (storedProviderIdentity === embedResult.providerIdentity) return embedResult;\n\n const fallbackEmbed = await this.embedQueryWithStoredFallbackProvider(query, storedProviderIdentity, execution);\n throwIfSearchAborted(execution, \"LanceDbBackend fallback query embedding aborted\");\n if (\n fallbackEmbed &&\n fallbackEmbed.providerIdentity === storedProviderIdentity &&\n this.isExpectedDimensionVector(fallbackEmbed.vector)\n ) {\n return fallbackEmbed;\n }\n\n this.rememberVectorProviderCompatibility(table, embedResult.providerIdentity, false);\n return null;\n }\n\n private async embedQueryWithStoredFallbackProvider(\n query: string,\n providerIdentity: EmbedProviderIdentity,\n execution?: SearchExecutionOptions,\n ): Promise<EmbedWithProviderResult | null> {\n const embedWithIdentity = (this.embedHelper as unknown as {\n embedWithFallbackProviderIdentity?: (\n text: string,\n identity: EmbedProviderIdentity,\n options?: { signal?: AbortSignal },\n ) => Promise<EmbedWithProviderResult | null>;\n }).embedWithFallbackProviderIdentity;\n if (typeof embedWithIdentity !== \"function\") return null;\n return embedWithIdentity.call(this.embedHelper, query, providerIdentity, { signal: execution?.signal });\n }\n\n private async findCompatibleStoredVectorProvider(\n table: any,\n execution?: SearchExecutionOptions,\n ): Promise<EmbedProviderIdentity | null> {\n try {\n const cached = this.vectorProviderCompatibility.get(table);\n if (cached?.compatible) return cached.providerIdentity;\n const rows = await table.query().select([\"vector\", \"vectorProvider\"]).toArray();\n let providerIdentity: EmbedProviderIdentity | null = null;\n let compatible = rows.length > 0;\n for (const row of rows ?? []) {\n throwIfSearchAborted(execution, \"LanceDbBackend vector provider check aborted\");\n if (\n typeof row.vectorProvider !== \"string\" ||\n row.vectorProvider.length === 0 ||\n !this.isCompatibleStoredVector(row.vector)\n ) {\n compatible = false;\n break;\n }\n if (providerIdentity && row.vectorProvider !== providerIdentity) {\n compatible = false;\n break;\n }\n providerIdentity = row.vectorProvider as EmbedProviderIdentity;\n }\n if (compatible && providerIdentity) {\n this.vectorProviderCompatibility.set(table, {\n providerIdentity,\n compatible: true,\n });\n return providerIdentity;\n }\n return null;\n } catch (err) {\n if (isSearchAborted(execution)) throw err;\n log.debug(`LanceDbBackend stored vector provider check failed: ${err}`);\n return null;\n }\n }\n\n private mapRows(rows: any[]): SearchResult[] {\n return (rows ?? [])\n .filter((row) => row.docid && row.docid !== \"__placeholder__\")\n .map((row) => ({\n docid: row.docid ?? \"\",\n path: row.path ?? \"\",\n snippet: row.snippet ?? row.content?.slice(0, 200) ?? \"\",\n score: row._relevance_score ?? (row._distance != null ? 1 / (1 + (row._distance ?? 0)) : 0.5),\n }));\n }\n\n private async tableHasCompatibleVectors(\n table: any,\n providerIdentity: EmbedProviderIdentity,\n execution?: SearchExecutionOptions,\n ): Promise<boolean> {\n try {\n const cached = this.vectorProviderCompatibility.get(table);\n if (cached?.providerIdentity === providerIdentity) return cached.compatible;\n const rows = await table.query().select([\"vector\", \"vectorProvider\"]).toArray();\n let compatible = rows.length > 0;\n for (const row of rows ?? []) {\n throwIfSearchAborted(execution, \"LanceDbBackend vector provider check aborted\");\n if (\n row.vectorProvider !== providerIdentity ||\n !this.isCompatibleStoredVector(row.vector)\n ) {\n compatible = false;\n break;\n }\n }\n this.vectorProviderCompatibility.set(table, { providerIdentity, compatible });\n return compatible;\n } catch (err) {\n if (isSearchAborted(execution)) throw err;\n log.debug(`LanceDbBackend vector provider check failed: ${err}`);\n return false;\n }\n }\n\n private rememberVectorProviderCompatibility(\n table: unknown,\n providerIdentity: EmbedProviderIdentity | null,\n compatible: boolean,\n ): void {\n if (!table || typeof table !== \"object\") return;\n if (!providerIdentity) {\n this.vectorProviderCompatibility.delete(table);\n return;\n }\n this.vectorProviderCompatibility.set(table, { providerIdentity, compatible });\n }\n\n private isExpectedDimensionVector(vector: number[] | null | undefined): vector is number[] {\n return Array.isArray(vector) && vector.length === this.embeddingDimension;\n }\n\n private isCompatibleStoredVector(vector: unknown): boolean {\n if (!vector || typeof vector !== \"object\") return false;\n const arr = Array.from(vector as ArrayLike<number>);\n return (\n arr.length === this.embeddingDimension &&\n arr.every((value) => Number.isFinite(value)) &&\n arr.some((value) => value !== 0)\n );\n }\n}\n\nfunction isMissingVectorProviderColumnError(err: unknown): boolean {\n const message = err instanceof Error ? err.message : String(err);\n return /\\bvectorProvider\\b/i.test(message) &&\n /\\b(column|field|schema|missing|not found|not exist|does not exist|unknown)\\b/i.test(message);\n}\n"],"mappings":"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","names":["embedResult","results"]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// src/whitespace.ts
|
|
2
|
+
function collapseWhitespace(value) {
|
|
3
|
+
return value.replace(/\s+/g, " ").trim();
|
|
4
|
+
}
|
|
5
|
+
function truncateCodePointSafe(value, maxChars) {
|
|
6
|
+
const glyphs = Array.from(value);
|
|
7
|
+
if (maxChars <= 0) return "";
|
|
8
|
+
if (glyphs.length <= maxChars) return value;
|
|
9
|
+
return glyphs.slice(0, Math.max(1, maxChars)).join("").trimEnd();
|
|
10
|
+
}
|
|
11
|
+
var graphemeSegmenter;
|
|
12
|
+
function getGraphemeSegmenter() {
|
|
13
|
+
if (graphemeSegmenter === void 0) {
|
|
14
|
+
graphemeSegmenter = typeof Intl !== "undefined" && typeof Intl.Segmenter === "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null;
|
|
15
|
+
}
|
|
16
|
+
return graphemeSegmenter;
|
|
17
|
+
}
|
|
18
|
+
function truncateGraphemeSafe(value, maxChars) {
|
|
19
|
+
if (maxChars <= 0) return "";
|
|
20
|
+
if (value.length <= maxChars) return value;
|
|
21
|
+
let truncated = "";
|
|
22
|
+
for (const unit of graphemeUnits(value)) {
|
|
23
|
+
if (truncated.length + unit.length > maxChars) break;
|
|
24
|
+
truncated += unit;
|
|
25
|
+
}
|
|
26
|
+
return truncated;
|
|
27
|
+
}
|
|
28
|
+
function graphemeUnits(value) {
|
|
29
|
+
const segmenter = getGraphemeSegmenter();
|
|
30
|
+
if (segmenter === null) return [...value];
|
|
31
|
+
return Array.from(segmenter.segment(value), (segment) => segment.segment);
|
|
32
|
+
}
|
|
33
|
+
var COMBINING_MARK = /\p{M}/u;
|
|
34
|
+
var FORMAT_CHAR = /\p{Cf}/u;
|
|
35
|
+
var EMOJI_PRESENTATION = /\p{Emoji_Presentation}/u;
|
|
36
|
+
var EMOJI_PRESENTATION_SELECTOR = "\uFE0F";
|
|
37
|
+
var WIDE_CODE_POINT_RANGES = [
|
|
38
|
+
[4352, 4447],
|
|
39
|
+
// Hangul Jamo
|
|
40
|
+
[11904, 12350],
|
|
41
|
+
// CJK radicals, Kangxi radicals, CJK symbols and punctuation
|
|
42
|
+
[12353, 13311],
|
|
43
|
+
// Hiragana, Katakana, Bopomofo, Hangul compatibility jamo
|
|
44
|
+
[13312, 19903],
|
|
45
|
+
// CJK unified ideographs extension A
|
|
46
|
+
[19968, 42191],
|
|
47
|
+
// CJK unified ideographs, Yi
|
|
48
|
+
[43360, 43391],
|
|
49
|
+
// Hangul Jamo extension A
|
|
50
|
+
[44032, 55203],
|
|
51
|
+
// Hangul syllables
|
|
52
|
+
[63744, 64255],
|
|
53
|
+
// CJK compatibility ideographs
|
|
54
|
+
[65040, 65049],
|
|
55
|
+
// Vertical forms
|
|
56
|
+
[65072, 65131],
|
|
57
|
+
// CJK compatibility forms
|
|
58
|
+
[65280, 65376],
|
|
59
|
+
// Fullwidth ASCII and punctuation
|
|
60
|
+
[65504, 65510],
|
|
61
|
+
// Fullwidth signs
|
|
62
|
+
[127744, 128591],
|
|
63
|
+
// Emoji symbols, pictographs, emoticons
|
|
64
|
+
[128640, 128767],
|
|
65
|
+
// Transport and map
|
|
66
|
+
[129280, 129535],
|
|
67
|
+
// Supplemental symbols
|
|
68
|
+
[129648, 129791],
|
|
69
|
+
// Symbols and pictographs extended-A
|
|
70
|
+
[131072, 196605],
|
|
71
|
+
// CJK extensions B-F
|
|
72
|
+
[196608, 262141]
|
|
73
|
+
// CJK extension G and later
|
|
74
|
+
];
|
|
75
|
+
function isWideGlyph(glyph) {
|
|
76
|
+
const codePoint = glyph.codePointAt(0);
|
|
77
|
+
let low = 0;
|
|
78
|
+
let high = WIDE_CODE_POINT_RANGES.length - 1;
|
|
79
|
+
while (low <= high) {
|
|
80
|
+
const mid = low + high >> 1;
|
|
81
|
+
const [start, end] = WIDE_CODE_POINT_RANGES[mid];
|
|
82
|
+
if (codePoint < start) high = mid - 1;
|
|
83
|
+
else if (codePoint > end) low = mid + 1;
|
|
84
|
+
else return true;
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
function displayWidth(value) {
|
|
89
|
+
let width = 0;
|
|
90
|
+
for (const cluster of graphemeUnits(value)) {
|
|
91
|
+
width += graphemeClusterWidth(cluster);
|
|
92
|
+
}
|
|
93
|
+
return width;
|
|
94
|
+
}
|
|
95
|
+
function graphemeClusterWidth(cluster) {
|
|
96
|
+
if (cluster.includes(EMOJI_PRESENTATION_SELECTOR)) return 2;
|
|
97
|
+
let emojiCluster = false;
|
|
98
|
+
let width = 0;
|
|
99
|
+
for (const glyph of cluster) {
|
|
100
|
+
if (COMBINING_MARK.test(glyph) || FORMAT_CHAR.test(glyph)) continue;
|
|
101
|
+
if (EMOJI_PRESENTATION.test(glyph)) emojiCluster = true;
|
|
102
|
+
width += isWideGlyph(glyph) ? 2 : 1;
|
|
103
|
+
}
|
|
104
|
+
return emojiCluster ? 2 : width;
|
|
105
|
+
}
|
|
106
|
+
function padEndDisplay(value, targetWidth) {
|
|
107
|
+
const padding = targetWidth - displayWidth(value);
|
|
108
|
+
return padding > 0 ? value + " ".repeat(padding) : value;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export {
|
|
112
|
+
collapseWhitespace,
|
|
113
|
+
truncateCodePointSafe,
|
|
114
|
+
truncateGraphemeSafe,
|
|
115
|
+
graphemeUnits,
|
|
116
|
+
displayWidth,
|
|
117
|
+
padEndDisplay
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=chunk-PJKTFXE2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/whitespace.ts"],"sourcesContent":["export function collapseWhitespace(value: string): string {\n return value.replace(/\\s+/g, \" \").trim();\n}\n\nexport function truncateCodePointSafe(value: string, maxChars: number): string {\n const glyphs = Array.from(value);\n if (maxChars <= 0) return \"\";\n if (glyphs.length <= maxChars) return value;\n return glyphs.slice(0, Math.max(1, maxChars)).join(\"\").trimEnd();\n}\n\nlet graphemeSegmenter: Intl.Segmenter | null | undefined;\n\nfunction getGraphemeSegmenter(): Intl.Segmenter | null {\n if (graphemeSegmenter === undefined) {\n graphemeSegmenter =\n typeof Intl !== \"undefined\" && typeof Intl.Segmenter === \"function\"\n ? new Intl.Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n }\n return graphemeSegmenter;\n}\n\n/**\n * Longest prefix of `value` whose UTF-16 length stays within `maxChars`\n * without splitting a surrogate pair or a grapheme cluster (ZWJ emoji\n * sequences, flags, Hangul jamo runs, combining marks). A cluster wider than\n * the budget is dropped whole rather than split. Falls back to code-point\n * boundaries when Intl.Segmenter is unavailable.\n */\nexport function truncateGraphemeSafe(value: string, maxChars: number): string {\n if (maxChars <= 0) return \"\";\n if (value.length <= maxChars) return value;\n let truncated = \"\";\n for (const unit of graphemeUnits(value)) {\n if (truncated.length + unit.length > maxChars) break;\n truncated += unit;\n }\n return truncated;\n}\n\n/**\n * Grapheme clusters of `value` as separate strings, or its code points when\n * Intl.Segmenter is unavailable.\n */\nexport function graphemeUnits(value: string): string[] {\n const segmenter = getGraphemeSegmenter();\n if (segmenter === null) return [...value];\n return Array.from(segmenter.segment(value), (segment) => segment.segment);\n}\n\nconst COMBINING_MARK = /\\p{M}/u;\nconst FORMAT_CHAR = /\\p{Cf}/u;\nconst EMOJI_PRESENTATION = /\\p{Emoji_Presentation}/u;\nconst EMOJI_PRESENTATION_SELECTOR = \"\\uFE0F\";\n\n// ponytail: pragmatic East_Asian_Width Wide/Fullwidth subset - contiguous\n// block ranges plus the emoji presentation planes. Sparse exceptions inside\n// those ranges (narrow unassigned code points, U+303F) do not matter for\n// terminal column alignment; switch to a full EAW table only if drift shows.\nconst WIDE_CODE_POINT_RANGES: ReadonlyArray<readonly [number, number]> = [\n [0x1100, 0x115f], // Hangul Jamo\n [0x2e80, 0x303e], // CJK radicals, Kangxi radicals, CJK symbols and punctuation\n [0x3041, 0x33ff], // Hiragana, Katakana, Bopomofo, Hangul compatibility jamo\n [0x3400, 0x4dbf], // CJK unified ideographs extension A\n [0x4e00, 0xa4cf], // CJK unified ideographs, Yi\n [0xa960, 0xa97f], // Hangul Jamo extension A\n [0xac00, 0xd7a3], // Hangul syllables\n [0xf900, 0xfaff], // CJK compatibility ideographs\n [0xfe10, 0xfe19], // Vertical forms\n [0xfe30, 0xfe6b], // CJK compatibility forms\n [0xff00, 0xff60], // Fullwidth ASCII and punctuation\n [0xffe0, 0xffe6], // Fullwidth signs\n [0x1f300, 0x1f64f], // Emoji symbols, pictographs, emoticons\n [0x1f680, 0x1f6ff], // Transport and map\n [0x1f900, 0x1f9ff], // Supplemental symbols\n [0x1fa70, 0x1faff], // Symbols and pictographs extended-A\n [0x20000, 0x2fffd], // CJK extensions B-F\n [0x30000, 0x3fffd], // CJK extension G and later\n];\n\nfunction isWideGlyph(glyph: string): boolean {\n const codePoint = glyph.codePointAt(0)!;\n let low = 0;\n let high = WIDE_CODE_POINT_RANGES.length - 1;\n while (low <= high) {\n const mid = (low + high) >> 1;\n const [start, end] = WIDE_CODE_POINT_RANGES[mid]!;\n if (codePoint < start) high = mid - 1;\n else if (codePoint > end) low = mid + 1;\n else return true;\n }\n return false;\n}\n\n/**\n * Terminal cell width: East_Asian_Width Wide/Fullwidth glyphs count as 2,\n * combining marks and format characters (ZWJ, variation selectors) as 0,\n * everything else as 1. A grapheme cluster with emoji presentation - ZWJ\n * sequences, flags, skin-tone modifiers - occupies two cells.\n */\nexport function displayWidth(value: string): number {\n let width = 0;\n for (const cluster of graphemeUnits(value)) {\n width += graphemeClusterWidth(cluster);\n }\n return width;\n}\n\nfunction graphemeClusterWidth(cluster: string): number {\n if (cluster.includes(EMOJI_PRESENTATION_SELECTOR)) return 2;\n let emojiCluster = false;\n let width = 0;\n for (const glyph of cluster) {\n if (COMBINING_MARK.test(glyph) || FORMAT_CHAR.test(glyph)) continue;\n if (EMOJI_PRESENTATION.test(glyph)) emojiCluster = true;\n width += isWideGlyph(glyph) ? 2 : 1;\n }\n return emojiCluster ? 2 : width;\n}\n\n/**\n * padEnd analog that pads to a terminal cell width, so rows containing CJK\n * or emoji keep their columns aligned.\n */\nexport function padEndDisplay(value: string, targetWidth: number): string {\n const padding = targetWidth - displayWidth(value);\n return padding > 0 ? value + \" \".repeat(padding) : value;\n}\n"],"mappings":";AAAO,SAAS,mBAAmB,OAAuB;AACxD,SAAO,MAAM,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACzC;AAEO,SAAS,sBAAsB,OAAe,UAA0B;AAC7E,QAAM,SAAS,MAAM,KAAK,KAAK;AAC/B,MAAI,YAAY,EAAG,QAAO;AAC1B,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO,OAAO,MAAM,GAAG,KAAK,IAAI,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ;AACjE;AAEA,IAAI;AAEJ,SAAS,uBAA8C;AACrD,MAAI,sBAAsB,QAAW;AACnC,wBACE,OAAO,SAAS,eAAe,OAAO,KAAK,cAAc,aACrD,IAAI,KAAK,UAAU,QAAW,EAAE,aAAa,WAAW,CAAC,IACzD;AAAA,EACR;AACA,SAAO;AACT;AASO,SAAS,qBAAqB,OAAe,UAA0B;AAC5E,MAAI,YAAY,EAAG,QAAO;AAC1B,MAAI,MAAM,UAAU,SAAU,QAAO;AACrC,MAAI,YAAY;AAChB,aAAW,QAAQ,cAAc,KAAK,GAAG;AACvC,QAAI,UAAU,SAAS,KAAK,SAAS,SAAU;AAC/C,iBAAa;AAAA,EACf;AACA,SAAO;AACT;AAMO,SAAS,cAAc,OAAyB;AACrD,QAAM,YAAY,qBAAqB;AACvC,MAAI,cAAc,KAAM,QAAO,CAAC,GAAG,KAAK;AACxC,SAAO,MAAM,KAAK,UAAU,QAAQ,KAAK,GAAG,CAAC,YAAY,QAAQ,OAAO;AAC1E;AAEA,IAAM,iBAAiB;AACvB,IAAM,cAAc;AACpB,IAAM,qBAAqB;AAC3B,IAAM,8BAA8B;AAMpC,IAAM,yBAAmE;AAAA,EACvE,CAAC,MAAQ,IAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,OAAQ,KAAM;AAAA;AAAA,EACf,CAAC,QAAS,MAAO;AAAA;AAAA,EACjB,CAAC,QAAS,MAAO;AAAA;AAAA,EACjB,CAAC,QAAS,MAAO;AAAA;AAAA,EACjB,CAAC,QAAS,MAAO;AAAA;AAAA,EACjB,CAAC,QAAS,MAAO;AAAA;AAAA,EACjB,CAAC,QAAS,MAAO;AAAA;AACnB;AAEA,SAAS,YAAY,OAAwB;AAC3C,QAAM,YAAY,MAAM,YAAY,CAAC;AACrC,MAAI,MAAM;AACV,MAAI,OAAO,uBAAuB,SAAS;AAC3C,SAAO,OAAO,MAAM;AAClB,UAAM,MAAO,MAAM,QAAS;AAC5B,UAAM,CAAC,OAAO,GAAG,IAAI,uBAAuB,GAAG;AAC/C,QAAI,YAAY,MAAO,QAAO,MAAM;AAAA,aAC3B,YAAY,IAAK,OAAM,MAAM;AAAA,QACjC,QAAO;AAAA,EACd;AACA,SAAO;AACT;AAQO,SAAS,aAAa,OAAuB;AAClD,MAAI,QAAQ;AACZ,aAAW,WAAW,cAAc,KAAK,GAAG;AAC1C,aAAS,qBAAqB,OAAO;AAAA,EACvC;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,SAAyB;AACrD,MAAI,QAAQ,SAAS,2BAA2B,EAAG,QAAO;AAC1D,MAAI,eAAe;AACnB,MAAI,QAAQ;AACZ,aAAW,SAAS,SAAS;AAC3B,QAAI,eAAe,KAAK,KAAK,KAAK,YAAY,KAAK,KAAK,EAAG;AAC3D,QAAI,mBAAmB,KAAK,KAAK,EAAG,gBAAe;AACnD,aAAS,YAAY,KAAK,IAAI,IAAI;AAAA,EACpC;AACA,SAAO,eAAe,IAAI;AAC5B;AAMO,SAAS,cAAc,OAAe,aAA6B;AACxE,QAAM,UAAU,cAAc,aAAa,KAAK;AAChD,SAAO,UAAU,IAAI,QAAQ,IAAI,OAAO,OAAO,IAAI;AACrD;","names":[]}
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
import {
|
|
38
38
|
countRecallTokenOverlap,
|
|
39
39
|
normalizeRecallTokens
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-DJ7HMNSL.js";
|
|
41
41
|
import {
|
|
42
42
|
log
|
|
43
43
|
} from "./chunk-3WCASNQZ.js";
|
|
@@ -1320,4 +1320,4 @@ export {
|
|
|
1320
1320
|
syncWearableSource,
|
|
1321
1321
|
defaultTimezone
|
|
1322
1322
|
};
|
|
1323
|
-
//# sourceMappingURL=chunk-
|
|
1323
|
+
//# sourceMappingURL=chunk-PMRUMGK6.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SupportPassportError,
|
|
3
3
|
getOperation
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4FFROSFG.js";
|
|
5
5
|
import {
|
|
6
6
|
abortError,
|
|
7
7
|
isAbortError
|
|
@@ -499,4 +499,4 @@ export {
|
|
|
499
499
|
buildSupportPassportPublicRequestHandler,
|
|
500
500
|
composeSupportPassportExternalRequestHandlers
|
|
501
501
|
};
|
|
502
|
-
//# sourceMappingURL=chunk-
|
|
502
|
+
//# sourceMappingURL=chunk-PSNN25DW.js.map
|