@remnic/core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstraction-nodes.d.ts +52 -0
- package/dist/abstraction-nodes.js +15 -0
- package/dist/abstraction-nodes.js.map +1 -0
- package/dist/access-cli.d.ts +5 -0
- package/dist/access-cli.js +308 -0
- package/dist/access-cli.js.map +1 -0
- package/dist/access-http.d.ts +158 -0
- package/dist/access-http.js +32 -0
- package/dist/access-http.js.map +1 -0
- package/dist/access-idempotency.d.ts +31 -0
- package/dist/access-idempotency.js +11 -0
- package/dist/access-idempotency.js.map +1 -0
- package/dist/access-mcp.d.ts +76 -0
- package/dist/access-mcp.js +8 -0
- package/dist/access-mcp.js.map +1 -0
- package/dist/access-schema.d.ts +266 -0
- package/dist/access-schema.js +29 -0
- package/dist/access-schema.js.map +1 -0
- package/dist/access-service.d.ts +614 -0
- package/dist/access-service.js +32 -0
- package/dist/access-service.js.map +1 -0
- package/dist/behavior-learner.d.ts +16 -0
- package/dist/behavior-learner.js +124 -0
- package/dist/behavior-learner.js.map +1 -0
- package/dist/behavior-signals.d.ts +15 -0
- package/dist/behavior-signals.js +11 -0
- package/dist/behavior-signals.js.map +1 -0
- package/dist/bootstrap.d.ts +46 -0
- package/dist/bootstrap.js +9 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/boxes.d.ts +93 -0
- package/dist/boxes.js +14 -0
- package/dist/boxes.js.map +1 -0
- package/dist/buffer.d.ts +22 -0
- package/dist/buffer.js +9 -0
- package/dist/buffer.js.map +1 -0
- package/dist/calibration.d.ts +81 -0
- package/dist/calibration.js +239 -0
- package/dist/calibration.js.map +1 -0
- package/dist/causal-behavior.d.ts +79 -0
- package/dist/causal-behavior.js +190 -0
- package/dist/causal-behavior.js.map +1 -0
- package/dist/causal-chain.d.ts +61 -0
- package/dist/causal-chain.js +24 -0
- package/dist/causal-chain.js.map +1 -0
- package/dist/causal-consolidation.d.ts +71 -0
- package/dist/causal-consolidation.js +211 -0
- package/dist/causal-consolidation.js.map +1 -0
- package/dist/causal-retrieval.d.ts +44 -0
- package/dist/causal-retrieval.js +184 -0
- package/dist/causal-retrieval.js.map +1 -0
- package/dist/causal-trajectory-graph.d.ts +13 -0
- package/dist/causal-trajectory-graph.js +59 -0
- package/dist/causal-trajectory-graph.js.map +1 -0
- package/dist/causal-trajectory.d.ts +68 -0
- package/dist/causal-trajectory.js +18 -0
- package/dist/causal-trajectory.js.map +1 -0
- package/dist/chunk-2CJCWDMR.js +87 -0
- package/dist/chunk-2CJCWDMR.js.map +1 -0
- package/dist/chunk-2NMMFZ5T.js +216 -0
- package/dist/chunk-2NMMFZ5T.js.map +1 -0
- package/dist/chunk-2PO5ZRKV.js +103 -0
- package/dist/chunk-2PO5ZRKV.js.map +1 -0
- package/dist/chunk-3QKK7QOS.js +154 -0
- package/dist/chunk-3QKK7QOS.js.map +1 -0
- package/dist/chunk-3SLRNYNG.js +26 -0
- package/dist/chunk-3SLRNYNG.js.map +1 -0
- package/dist/chunk-4A24LIM2.js +68 -0
- package/dist/chunk-4A24LIM2.js.map +1 -0
- package/dist/chunk-6HZ6AO2P.js +164 -0
- package/dist/chunk-6HZ6AO2P.js.map +1 -0
- package/dist/chunk-763GUIOU.js +302 -0
- package/dist/chunk-763GUIOU.js.map +1 -0
- package/dist/chunk-AAI7JARD.js +173 -0
- package/dist/chunk-AAI7JARD.js.map +1 -0
- package/dist/chunk-B7LOFDVE.js +112 -0
- package/dist/chunk-B7LOFDVE.js.map +1 -0
- package/dist/chunk-BDFZXRSO.js +318 -0
- package/dist/chunk-BDFZXRSO.js.map +1 -0
- package/dist/chunk-BOUYNNYD.js +707 -0
- package/dist/chunk-BOUYNNYD.js.map +1 -0
- package/dist/chunk-BRK4ODMI.js +60 -0
- package/dist/chunk-BRK4ODMI.js.map +1 -0
- package/dist/chunk-C6QPK5GG.js +111 -0
- package/dist/chunk-C6QPK5GG.js.map +1 -0
- package/dist/chunk-C7VW7C3F.js +117 -0
- package/dist/chunk-C7VW7C3F.js.map +1 -0
- package/dist/chunk-CDW777AI.js +621 -0
- package/dist/chunk-CDW777AI.js.map +1 -0
- package/dist/chunk-CULXMQJH.js +185 -0
- package/dist/chunk-CULXMQJH.js.map +1 -0
- package/dist/chunk-CXWFUJR2.js +1203 -0
- package/dist/chunk-CXWFUJR2.js.map +1 -0
- package/dist/chunk-DGXUHMOV.js +61 -0
- package/dist/chunk-DGXUHMOV.js.map +1 -0
- package/dist/chunk-DM2T26WE.js +61 -0
- package/dist/chunk-DM2T26WE.js.map +1 -0
- package/dist/chunk-DORBM6OB.js +81 -0
- package/dist/chunk-DORBM6OB.js.map +1 -0
- package/dist/chunk-DT5TVLJE.js +32 -0
- package/dist/chunk-DT5TVLJE.js.map +1 -0
- package/dist/chunk-EEQLFRUM.js +89 -0
- package/dist/chunk-EEQLFRUM.js.map +1 -0
- package/dist/chunk-EQINRHYR.js +672 -0
- package/dist/chunk-EQINRHYR.js.map +1 -0
- package/dist/chunk-ESSMF2FR.js +146 -0
- package/dist/chunk-ESSMF2FR.js.map +1 -0
- package/dist/chunk-ETOW6ACV.js +158 -0
- package/dist/chunk-ETOW6ACV.js.map +1 -0
- package/dist/chunk-FYIYMQ5N.js +221 -0
- package/dist/chunk-FYIYMQ5N.js.map +1 -0
- package/dist/chunk-G3AG3KZN.js +78 -0
- package/dist/chunk-G3AG3KZN.js.map +1 -0
- package/dist/chunk-GJR6D6KC.js +61 -0
- package/dist/chunk-GJR6D6KC.js.map +1 -0
- package/dist/chunk-GPGBSNKM.js +380 -0
- package/dist/chunk-GPGBSNKM.js.map +1 -0
- package/dist/chunk-H63EDPFJ.js +57 -0
- package/dist/chunk-H63EDPFJ.js.map +1 -0
- package/dist/chunk-HG2NKWR2.js +185 -0
- package/dist/chunk-HG2NKWR2.js.map +1 -0
- package/dist/chunk-HL4DB7TO.js +13 -0
- package/dist/chunk-HL4DB7TO.js.map +1 -0
- package/dist/chunk-HLBYLYRD.js +346 -0
- package/dist/chunk-HLBYLYRD.js.map +1 -0
- package/dist/chunk-HLXVTBF3.js +109 -0
- package/dist/chunk-HLXVTBF3.js.map +1 -0
- package/dist/chunk-IFFFR3MR.js +68 -0
- package/dist/chunk-IFFFR3MR.js.map +1 -0
- package/dist/chunk-ISY75RLM.js +1027 -0
- package/dist/chunk-ISY75RLM.js.map +1 -0
- package/dist/chunk-IZME7KW2.js +1886 -0
- package/dist/chunk-IZME7KW2.js.map +1 -0
- package/dist/chunk-J3BT33K7.js +720 -0
- package/dist/chunk-J3BT33K7.js.map +1 -0
- package/dist/chunk-J47FNDR7.js +113 -0
- package/dist/chunk-J47FNDR7.js.map +1 -0
- package/dist/chunk-JWPLJLDU.js +63 -0
- package/dist/chunk-JWPLJLDU.js.map +1 -0
- package/dist/chunk-K6WK37A6.js +865 -0
- package/dist/chunk-K6WK37A6.js.map +1 -0
- package/dist/chunk-KL4CP4SB.js +130 -0
- package/dist/chunk-KL4CP4SB.js.map +1 -0
- package/dist/chunk-KT4NEUNF.js +315 -0
- package/dist/chunk-KT4NEUNF.js.map +1 -0
- package/dist/chunk-KWBU5S5U.js +42 -0
- package/dist/chunk-KWBU5S5U.js.map +1 -0
- package/dist/chunk-L5RPWGFK.js +59 -0
- package/dist/chunk-L5RPWGFK.js.map +1 -0
- package/dist/chunk-L7WO3MZ4.js +128 -0
- package/dist/chunk-L7WO3MZ4.js.map +1 -0
- package/dist/chunk-LIRZNNUP.js +74 -0
- package/dist/chunk-LIRZNNUP.js.map +1 -0
- package/dist/chunk-LK6SGL53.js +22 -0
- package/dist/chunk-LK6SGL53.js.map +1 -0
- package/dist/chunk-LOBRX7VD.js +200 -0
- package/dist/chunk-LOBRX7VD.js.map +1 -0
- package/dist/chunk-LPSF4OQH.js +47 -0
- package/dist/chunk-LPSF4OQH.js.map +1 -0
- package/dist/chunk-LU3GQNDQ.js +152 -0
- package/dist/chunk-LU3GQNDQ.js.map +1 -0
- package/dist/chunk-M5KEYE5E.js +350 -0
- package/dist/chunk-M5KEYE5E.js.map +1 -0
- package/dist/chunk-M62O4P4T.js +41 -0
- package/dist/chunk-M62O4P4T.js.map +1 -0
- package/dist/chunk-MARWOCVP.js +48 -0
- package/dist/chunk-MARWOCVP.js.map +1 -0
- package/dist/chunk-MDDAA2AO.js +925 -0
- package/dist/chunk-MDDAA2AO.js.map +1 -0
- package/dist/chunk-MWGVGUIS.js +198 -0
- package/dist/chunk-MWGVGUIS.js.map +1 -0
- package/dist/chunk-N5AKDXAI.js +74 -0
- package/dist/chunk-N5AKDXAI.js.map +1 -0
- package/dist/chunk-NGAVDO7E.js +115 -0
- package/dist/chunk-NGAVDO7E.js.map +1 -0
- package/dist/chunk-NTTLPF7F.js +283 -0
- package/dist/chunk-NTTLPF7F.js.map +1 -0
- package/dist/chunk-ONRU4L2N.js +240 -0
- package/dist/chunk-ONRU4L2N.js.map +1 -0
- package/dist/chunk-ORZMT74A.js +209 -0
- package/dist/chunk-ORZMT74A.js.map +1 -0
- package/dist/chunk-OTAVQCSF.js +268 -0
- package/dist/chunk-OTAVQCSF.js.map +1 -0
- package/dist/chunk-PGK3VUHN.js +160 -0
- package/dist/chunk-PGK3VUHN.js.map +1 -0
- package/dist/chunk-Q6FETXJA.js +1362 -0
- package/dist/chunk-Q6FETXJA.js.map +1 -0
- package/dist/chunk-QANCTXQF.js +271 -0
- package/dist/chunk-QANCTXQF.js.map +1 -0
- package/dist/chunk-QCCCQT3O.js +189 -0
- package/dist/chunk-QCCCQT3O.js.map +1 -0
- package/dist/chunk-QDOSNLB4.js +1048 -0
- package/dist/chunk-QDOSNLB4.js.map +1 -0
- package/dist/chunk-QFQVZOGA.js +2168 -0
- package/dist/chunk-QFQVZOGA.js.map +1 -0
- package/dist/chunk-QPKFPHOO.js +178 -0
- package/dist/chunk-QPKFPHOO.js.map +1 -0
- package/dist/chunk-QSVPYQPG.js +268 -0
- package/dist/chunk-QSVPYQPG.js.map +1 -0
- package/dist/chunk-QWUUMMIK.js +3045 -0
- package/dist/chunk-QWUUMMIK.js.map +1 -0
- package/dist/chunk-QY2BHY5O.js +2378 -0
- package/dist/chunk-QY2BHY5O.js.map +1 -0
- package/dist/chunk-SCHEKPYH.js +349 -0
- package/dist/chunk-SCHEKPYH.js.map +1 -0
- package/dist/chunk-SCU65EZI.js +15 -0
- package/dist/chunk-SCU65EZI.js.map +1 -0
- package/dist/chunk-T4WRIV2C.js +170 -0
- package/dist/chunk-T4WRIV2C.js.map +1 -0
- package/dist/chunk-TKO4HZCK.js +1852 -0
- package/dist/chunk-TKO4HZCK.js.map +1 -0
- package/dist/chunk-TP4FZJIZ.js +93 -0
- package/dist/chunk-TP4FZJIZ.js.map +1 -0
- package/dist/chunk-TPB3I2AC.js +403 -0
- package/dist/chunk-TPB3I2AC.js.map +1 -0
- package/dist/chunk-TVVVQQAK.js +1431 -0
- package/dist/chunk-TVVVQQAK.js.map +1 -0
- package/dist/chunk-U4PV25RD.js +14 -0
- package/dist/chunk-U4PV25RD.js.map +1 -0
- package/dist/chunk-UCYSTFZR.js +284 -0
- package/dist/chunk-UCYSTFZR.js.map +1 -0
- package/dist/chunk-UHGBNIOS.js +205 -0
- package/dist/chunk-UHGBNIOS.js.map +1 -0
- package/dist/chunk-UIYZ5T3I.js +108 -0
- package/dist/chunk-UIYZ5T3I.js.map +1 -0
- package/dist/chunk-UV2FO7J4.js +747 -0
- package/dist/chunk-UV2FO7J4.js.map +1 -0
- package/dist/chunk-UZB5KHKX.js +63 -0
- package/dist/chunk-UZB5KHKX.js.map +1 -0
- package/dist/chunk-V3RXWQIE.js +626 -0
- package/dist/chunk-V3RXWQIE.js.map +1 -0
- package/dist/chunk-V4YC4LUK.js +444 -0
- package/dist/chunk-V4YC4LUK.js.map +1 -0
- package/dist/chunk-VEWZZM3H.js +133 -0
- package/dist/chunk-VEWZZM3H.js.map +1 -0
- package/dist/chunk-WWIQTB2Y.js +98 -0
- package/dist/chunk-WWIQTB2Y.js.map +1 -0
- package/dist/chunk-X7XN6YU4.js +24 -0
- package/dist/chunk-X7XN6YU4.js.map +1 -0
- package/dist/chunk-XKECPATV.js +202 -0
- package/dist/chunk-XKECPATV.js.map +1 -0
- package/dist/chunk-XYIK4LF6.js +75 -0
- package/dist/chunk-XYIK4LF6.js.map +1 -0
- package/dist/chunk-Y27UJK6V.js +39 -0
- package/dist/chunk-Y27UJK6V.js.map +1 -0
- package/dist/chunk-Y4Z4I6WK.js +9 -0
- package/dist/chunk-Y4Z4I6WK.js.map +1 -0
- package/dist/chunk-YAPUAHAY.js +10761 -0
- package/dist/chunk-YAPUAHAY.js.map +1 -0
- package/dist/chunk-YAZNBMNF.js +92 -0
- package/dist/chunk-YAZNBMNF.js.map +1 -0
- package/dist/chunk-YCN4BVDK.js +66 -0
- package/dist/chunk-YCN4BVDK.js.map +1 -0
- package/dist/chunk-YNCQ7E4M.js +388 -0
- package/dist/chunk-YNCQ7E4M.js.map +1 -0
- package/dist/chunk-YNI4S5WT.js +143 -0
- package/dist/chunk-YNI4S5WT.js.map +1 -0
- package/dist/chunk-YRMVARQP.js +406 -0
- package/dist/chunk-YRMVARQP.js.map +1 -0
- package/dist/chunk-Z5AAYHUC.js +79 -0
- package/dist/chunk-Z5AAYHUC.js.map +1 -0
- package/dist/chunk-Z5LAYHGJ.js +15 -0
- package/dist/chunk-Z5LAYHGJ.js.map +1 -0
- package/dist/chunk-ZJLY4QSU.js +823 -0
- package/dist/chunk-ZJLY4QSU.js.map +1 -0
- package/dist/chunk-ZKYI7UVO.js +276 -0
- package/dist/chunk-ZKYI7UVO.js.map +1 -0
- package/dist/chunk-ZPKBYX2F.js +297 -0
- package/dist/chunk-ZPKBYX2F.js.map +1 -0
- package/dist/chunking.d.ts +48 -0
- package/dist/chunking.js +11 -0
- package/dist/chunking.js.map +1 -0
- package/dist/cli.d.ts +1162 -0
- package/dist/cli.js +7187 -0
- package/dist/cli.js.map +1 -0
- package/dist/commitment-ledger.d.ts +83 -0
- package/dist/commitment-ledger.js +19 -0
- package/dist/commitment-ledger.js.map +1 -0
- package/dist/compression-optimizer.d.ts +37 -0
- package/dist/compression-optimizer.js +13 -0
- package/dist/compression-optimizer.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -0
- package/dist/cue-anchors.d.ts +50 -0
- package/dist/cue-anchors.js +15 -0
- package/dist/cue-anchors.js.map +1 -0
- package/dist/dashboard-runtime.d.ts +46 -0
- package/dist/dashboard-runtime.js +10 -0
- package/dist/dashboard-runtime.js.map +1 -0
- package/dist/day-summary.d.ts +6 -0
- package/dist/day-summary.js +10 -0
- package/dist/day-summary.js.map +1 -0
- package/dist/delinearize.d.ts +34 -0
- package/dist/delinearize.js +11 -0
- package/dist/delinearize.js.map +1 -0
- package/dist/embedding-fallback.d.ts +22 -0
- package/dist/embedding-fallback.js +8 -0
- package/dist/embedding-fallback.js.map +1 -0
- package/dist/engine-P26JFSVY.js +19 -0
- package/dist/engine-P26JFSVY.js.map +1 -0
- package/dist/entity-retrieval.d.ts +23 -0
- package/dist/entity-retrieval.js +24 -0
- package/dist/entity-retrieval.js.map +1 -0
- package/dist/evals.d.ts +282 -0
- package/dist/evals.js +32 -0
- package/dist/evals.js.map +1 -0
- package/dist/explicit-capture.d.ts +60 -0
- package/dist/explicit-capture.js +23 -0
- package/dist/explicit-capture.js.map +1 -0
- package/dist/extraction.d.ts +141 -0
- package/dist/extraction.js +22 -0
- package/dist/extraction.js.map +1 -0
- package/dist/fallback-llm.d.ts +95 -0
- package/dist/fallback-llm.js +12 -0
- package/dist/fallback-llm.js.map +1 -0
- package/dist/graph-dashboard-diff.d.ts +12 -0
- package/dist/graph-dashboard-diff.js +8 -0
- package/dist/graph-dashboard-diff.js.map +1 -0
- package/dist/graph-dashboard-key.d.ts +5 -0
- package/dist/graph-dashboard-key.js +7 -0
- package/dist/graph-dashboard-key.js.map +1 -0
- package/dist/graph-dashboard-parser.d.ts +20 -0
- package/dist/graph-dashboard-parser.js +8 -0
- package/dist/graph-dashboard-parser.js.map +1 -0
- package/dist/graph.d.ts +157 -0
- package/dist/graph.js +27 -0
- package/dist/graph.js.map +1 -0
- package/dist/harmonic-retrieval.d.ts +27 -0
- package/dist/harmonic-retrieval.js +12 -0
- package/dist/harmonic-retrieval.js.map +1 -0
- package/dist/himem.d.ts +23 -0
- package/dist/himem.js +7 -0
- package/dist/himem.js.map +1 -0
- package/dist/hygiene.d.ts +24 -0
- package/dist/hygiene.js +9 -0
- package/dist/hygiene.js.map +1 -0
- package/dist/identity-continuity.d.ts +17 -0
- package/dist/identity-continuity.js +19 -0
- package/dist/identity-continuity.js.map +1 -0
- package/dist/importance.d.ts +25 -0
- package/dist/importance.js +11 -0
- package/dist/importance.js.map +1 -0
- package/dist/index.d.ts +923 -0
- package/dist/index.js +2512 -0
- package/dist/index.js.map +1 -0
- package/dist/intent.d.ts +8 -0
- package/dist/intent.js +13 -0
- package/dist/intent.js.map +1 -0
- package/dist/json-extract.d.ts +14 -0
- package/dist/json-extract.js +9 -0
- package/dist/json-extract.js.map +1 -0
- package/dist/json-store.d.ts +5 -0
- package/dist/json-store.js +11 -0
- package/dist/json-store.js.map +1 -0
- package/dist/legacy-hook-compat.d.ts +3 -0
- package/dist/legacy-hook-compat.js +35 -0
- package/dist/legacy-hook-compat.js.map +1 -0
- package/dist/lifecycle.d.ts +52 -0
- package/dist/lifecycle.js +21 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/local-llm.d.ts +154 -0
- package/dist/local-llm.js +10 -0
- package/dist/local-llm.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.js +9 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory-action-policy.d.ts +13 -0
- package/dist/memory-action-policy.js +7 -0
- package/dist/memory-action-policy.js.map +1 -0
- package/dist/memory-cache.d.ts +35 -0
- package/dist/memory-cache.js +37 -0
- package/dist/memory-cache.js.map +1 -0
- package/dist/memory-lifecycle-ledger-utils.d.ts +13 -0
- package/dist/memory-lifecycle-ledger-utils.js +23 -0
- package/dist/memory-lifecycle-ledger-utils.js.map +1 -0
- package/dist/memory-projection-format.d.ts +4 -0
- package/dist/memory-projection-format.js +9 -0
- package/dist/memory-projection-format.js.map +1 -0
- package/dist/memory-projection-store-NxMkbocT.d.ts +221 -0
- package/dist/memory-projection-store.d.ts +3 -0
- package/dist/memory-projection-store.js +31 -0
- package/dist/memory-projection-store.js.map +1 -0
- package/dist/model-registry.d.ts +60 -0
- package/dist/model-registry.js +8 -0
- package/dist/model-registry.js.map +1 -0
- package/dist/native-knowledge.d.ts +94 -0
- package/dist/native-knowledge.js +26 -0
- package/dist/native-knowledge.js.map +1 -0
- package/dist/negative.d.ts +26 -0
- package/dist/negative.js +8 -0
- package/dist/negative.js.map +1 -0
- package/dist/objective-state-writers.d.ts +22 -0
- package/dist/objective-state-writers.js +313 -0
- package/dist/objective-state-writers.js.map +1 -0
- package/dist/objective-state.d.ts +75 -0
- package/dist/objective-state.js +17 -0
- package/dist/objective-state.js.map +1 -0
- package/dist/openai-chat-compat.d.ts +13 -0
- package/dist/openai-chat-compat.js +11 -0
- package/dist/openai-chat-compat.js.map +1 -0
- package/dist/operator-toolkit.d.ts +304 -0
- package/dist/operator-toolkit.js +41 -0
- package/dist/operator-toolkit.js.map +1 -0
- package/dist/opik-exporter.d.ts +72 -0
- package/dist/opik-exporter.js +361 -0
- package/dist/opik-exporter.js.map +1 -0
- package/dist/orchestrator-zTa-Qo-1.d.ts +1104 -0
- package/dist/orchestrator.d.ts +21 -0
- package/dist/orchestrator.js +145 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/policy-runtime.d.ts +37 -0
- package/dist/policy-runtime.js +13 -0
- package/dist/policy-runtime.js.map +1 -0
- package/dist/port-C1GZFv8h.d.ts +41 -0
- package/dist/profiling.d.ts +80 -0
- package/dist/profiling.js +10 -0
- package/dist/profiling.js.map +1 -0
- package/dist/qmd-recall-cache.d.ts +29 -0
- package/dist/qmd-recall-cache.js +13 -0
- package/dist/qmd-recall-cache.js.map +1 -0
- package/dist/qmd.d.ts +105 -0
- package/dist/qmd.js +13 -0
- package/dist/qmd.js.map +1 -0
- package/dist/recall-qos.d.ts +33 -0
- package/dist/recall-qos.js +10 -0
- package/dist/recall-qos.js.map +1 -0
- package/dist/recall-query-policy.d.ts +20 -0
- package/dist/recall-query-policy.js +11 -0
- package/dist/recall-query-policy.js.map +1 -0
- package/dist/recall-state.d.ts +113 -0
- package/dist/recall-state.js +12 -0
- package/dist/recall-state.js.map +1 -0
- package/dist/recall-tokenization.d.ts +4 -0
- package/dist/recall-tokenization.js +9 -0
- package/dist/recall-tokenization.js.map +1 -0
- package/dist/reconstruct.d.ts +16 -0
- package/dist/reconstruct.js +7 -0
- package/dist/reconstruct.js.map +1 -0
- package/dist/release-changelog.d.ts +7 -0
- package/dist/release-changelog.js +30 -0
- package/dist/release-changelog.js.map +1 -0
- package/dist/relevance.d.ts +18 -0
- package/dist/relevance.js +8 -0
- package/dist/relevance.js.map +1 -0
- package/dist/rerank.d.ts +57 -0
- package/dist/rerank.js +11 -0
- package/dist/rerank.js.map +1 -0
- package/dist/resolve-provider-secret.d.ts +16 -0
- package/dist/resolve-provider-secret.js +11 -0
- package/dist/resolve-provider-secret.js.map +1 -0
- package/dist/resume-bundles.d.ts +66 -0
- package/dist/resume-bundles.js +27 -0
- package/dist/resume-bundles.js.map +1 -0
- package/dist/retrieval-agents.d.ts +129 -0
- package/dist/retrieval-agents.js +23 -0
- package/dist/retrieval-agents.js.map +1 -0
- package/dist/retrieval.d.ts +19 -0
- package/dist/retrieval.js +10 -0
- package/dist/retrieval.js.map +1 -0
- package/dist/sanitize.d.ts +9 -0
- package/dist/sanitize.js +9 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/schemas.d.ts +688 -0
- package/dist/schemas.js +51 -0
- package/dist/schemas.js.map +1 -0
- package/dist/sdk-compat.d.ts +21 -0
- package/dist/sdk-compat.js +28 -0
- package/dist/sdk-compat.js.map +1 -0
- package/dist/semantic-consolidation.d.ts +42 -0
- package/dist/semantic-consolidation.js +12 -0
- package/dist/semantic-consolidation.js.map +1 -0
- package/dist/semantic-rule-promotion.d.ts +28 -0
- package/dist/semantic-rule-promotion.js +17 -0
- package/dist/semantic-rule-promotion.js.map +1 -0
- package/dist/semantic-rule-verifier.d.ts +19 -0
- package/dist/semantic-rule-verifier.js +18 -0
- package/dist/semantic-rule-verifier.js.map +1 -0
- package/dist/session-integrity.d.ts +67 -0
- package/dist/session-integrity.js +11 -0
- package/dist/session-integrity.js.map +1 -0
- package/dist/session-observer-bands.d.ts +6 -0
- package/dist/session-observer-bands.js +9 -0
- package/dist/session-observer-bands.js.map +1 -0
- package/dist/session-observer-state.d.ts +40 -0
- package/dist/session-observer-state.js +11 -0
- package/dist/session-observer-state.js.map +1 -0
- package/dist/signal.d.ts +6 -0
- package/dist/signal.js +9 -0
- package/dist/signal.js.map +1 -0
- package/dist/storage.d.ts +453 -0
- package/dist/storage.js +24 -0
- package/dist/storage.js.map +1 -0
- package/dist/store-contract.d.ts +10 -0
- package/dist/store-contract.js +21 -0
- package/dist/store-contract.js.map +1 -0
- package/dist/summarizer.d.ts +35 -0
- package/dist/summarizer.js +17 -0
- package/dist/summarizer.js.map +1 -0
- package/dist/summary-snapshot.d.ts +8 -0
- package/dist/summary-snapshot.js +13 -0
- package/dist/summary-snapshot.js.map +1 -0
- package/dist/temporal-index.d.ts +139 -0
- package/dist/temporal-index.js +29 -0
- package/dist/temporal-index.js.map +1 -0
- package/dist/threading.d.ts +62 -0
- package/dist/threading.js +8 -0
- package/dist/threading.js.map +1 -0
- package/dist/tier-migration.d.ts +44 -0
- package/dist/tier-migration.js +7 -0
- package/dist/tier-migration.js.map +1 -0
- package/dist/tier-routing.d.ts +21 -0
- package/dist/tier-routing.js +10 -0
- package/dist/tier-routing.js.map +1 -0
- package/dist/tmt.d.ts +79 -0
- package/dist/tmt.js +29 -0
- package/dist/tmt.js.map +1 -0
- package/dist/tokens.d.ts +24 -0
- package/dist/tokens.js +21 -0
- package/dist/tokens.js.map +1 -0
- package/dist/topics.d.ts +29 -0
- package/dist/topics.js +9 -0
- package/dist/topics.js.map +1 -0
- package/dist/transcript.d.ts +171 -0
- package/dist/transcript.js +9 -0
- package/dist/transcript.js.map +1 -0
- package/dist/trust-zones.d.ts +170 -0
- package/dist/trust-zones.js +32 -0
- package/dist/trust-zones.js.map +1 -0
- package/dist/types.d.ts +1243 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/utility-learner.d.ts +59 -0
- package/dist/utility-learner.js +17 -0
- package/dist/utility-learner.js.map +1 -0
- package/dist/utility-runtime.d.ts +21 -0
- package/dist/utility-runtime.js +16 -0
- package/dist/utility-runtime.js.map +1 -0
- package/dist/utility-telemetry.d.ts +68 -0
- package/dist/utility-telemetry.js +17 -0
- package/dist/utility-telemetry.js.map +1 -0
- package/dist/verified-recall.d.ts +17 -0
- package/dist/verified-recall.js +19 -0
- package/dist/verified-recall.js.map +1 -0
- package/dist/version-utils.d.ts +4 -0
- package/dist/version-utils.js +7 -0
- package/dist/version-utils.js.map +1 -0
- package/dist/work-product-ledger.d.ts +65 -0
- package/dist/work-product-ledger.js +18 -0
- package/dist/work-product-ledger.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertIsoRecordedAt,
|
|
3
|
+
assertSafePathSegment,
|
|
4
|
+
assertString,
|
|
5
|
+
isRecord,
|
|
6
|
+
optionalStringArray,
|
|
7
|
+
recordStoreDay,
|
|
8
|
+
validateStringRecord
|
|
9
|
+
} from "./chunk-DGXUHMOV.js";
|
|
10
|
+
import {
|
|
11
|
+
listJsonFiles,
|
|
12
|
+
readJsonFile
|
|
13
|
+
} from "./chunk-LPSF4OQH.js";
|
|
14
|
+
|
|
15
|
+
// src/utility-telemetry.ts
|
|
16
|
+
import path from "path";
|
|
17
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
18
|
+
function resolveUtilityTelemetryDir(memoryDir, overrideDir) {
|
|
19
|
+
if (typeof overrideDir === "string" && overrideDir.trim().length > 0) {
|
|
20
|
+
return overrideDir.trim();
|
|
21
|
+
}
|
|
22
|
+
return path.join(memoryDir, "state", "utility-telemetry");
|
|
23
|
+
}
|
|
24
|
+
function assertUtilityScore(value) {
|
|
25
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
26
|
+
throw new Error("utilityScore must be a finite number");
|
|
27
|
+
}
|
|
28
|
+
if (value < -1 || value > 1) {
|
|
29
|
+
throw new Error("utilityScore must be between -1 and 1");
|
|
30
|
+
}
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
function validateUtilityTelemetryEvent(raw) {
|
|
34
|
+
if (!isRecord(raw)) throw new Error("utility telemetry event must be an object");
|
|
35
|
+
if (raw.schemaVersion !== 1) throw new Error("schemaVersion must be 1");
|
|
36
|
+
const source = assertString(raw.source, "source");
|
|
37
|
+
if (!["cli", "system", "benchmark", "tool_result"].includes(source)) {
|
|
38
|
+
throw new Error("source must be one of cli|system|benchmark|tool_result");
|
|
39
|
+
}
|
|
40
|
+
const target = assertString(raw.target, "target");
|
|
41
|
+
if (!["promotion", "ranking"].includes(target)) {
|
|
42
|
+
throw new Error("target must be one of promotion|ranking");
|
|
43
|
+
}
|
|
44
|
+
const decision = assertString(raw.decision, "decision");
|
|
45
|
+
if (!["promote", "demote", "hold", "boost", "suppress"].includes(decision)) {
|
|
46
|
+
throw new Error("decision must be one of promote|demote|hold|boost|suppress");
|
|
47
|
+
}
|
|
48
|
+
const outcome = assertString(raw.outcome, "outcome");
|
|
49
|
+
if (!["helpful", "neutral", "harmful"].includes(outcome)) {
|
|
50
|
+
throw new Error("outcome must be one of helpful|neutral|harmful");
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
schemaVersion: 1,
|
|
54
|
+
eventId: assertSafePathSegment(assertString(raw.eventId, "eventId"), "eventId"),
|
|
55
|
+
recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, "recordedAt")),
|
|
56
|
+
sessionKey: assertString(raw.sessionKey, "sessionKey"),
|
|
57
|
+
source,
|
|
58
|
+
target,
|
|
59
|
+
decision,
|
|
60
|
+
outcome,
|
|
61
|
+
utilityScore: assertUtilityScore(raw.utilityScore),
|
|
62
|
+
summary: assertString(raw.summary, "summary"),
|
|
63
|
+
memoryIds: optionalStringArray(raw.memoryIds, "memoryIds"),
|
|
64
|
+
entityRefs: optionalStringArray(raw.entityRefs, "entityRefs"),
|
|
65
|
+
tags: optionalStringArray(raw.tags, "tags"),
|
|
66
|
+
metadata: validateStringRecord(raw.metadata, "metadata")
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async function recordUtilityTelemetryEvent(options) {
|
|
70
|
+
const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);
|
|
71
|
+
const validated = validateUtilityTelemetryEvent(options.event);
|
|
72
|
+
const day = recordStoreDay(validated.recordedAt);
|
|
73
|
+
const eventsDir = path.join(rootDir, "events", day);
|
|
74
|
+
const filePath = path.join(eventsDir, `${validated.eventId}.json`);
|
|
75
|
+
await mkdir(eventsDir, { recursive: true });
|
|
76
|
+
await writeFile(filePath, JSON.stringify(validated, null, 2), "utf8");
|
|
77
|
+
return filePath;
|
|
78
|
+
}
|
|
79
|
+
async function readUtilityTelemetryEvents(options) {
|
|
80
|
+
const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);
|
|
81
|
+
const files = await listJsonFiles(path.join(rootDir, "events"));
|
|
82
|
+
const events = [];
|
|
83
|
+
const invalidEvents = [];
|
|
84
|
+
for (const filePath of files) {
|
|
85
|
+
try {
|
|
86
|
+
events.push(validateUtilityTelemetryEvent(await readJsonFile(filePath)));
|
|
87
|
+
} catch (error) {
|
|
88
|
+
invalidEvents.push({
|
|
89
|
+
path: filePath,
|
|
90
|
+
error: error instanceof Error ? error.message : String(error)
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return { files, events, invalidEvents };
|
|
95
|
+
}
|
|
96
|
+
async function getUtilityTelemetryStatus(options) {
|
|
97
|
+
const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);
|
|
98
|
+
const eventsDir = path.join(rootDir, "events");
|
|
99
|
+
if (!options.enabled) {
|
|
100
|
+
return {
|
|
101
|
+
enabled: false,
|
|
102
|
+
promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,
|
|
103
|
+
rootDir,
|
|
104
|
+
eventsDir,
|
|
105
|
+
events: {
|
|
106
|
+
total: 0,
|
|
107
|
+
valid: 0,
|
|
108
|
+
invalid: 0,
|
|
109
|
+
byTarget: {},
|
|
110
|
+
byDecision: {},
|
|
111
|
+
byOutcome: {}
|
|
112
|
+
},
|
|
113
|
+
invalidEvents: []
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const { files, events, invalidEvents } = await readUtilityTelemetryEvents(options);
|
|
117
|
+
events.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));
|
|
118
|
+
const byTarget = {};
|
|
119
|
+
const byDecision = {};
|
|
120
|
+
const byOutcome = {};
|
|
121
|
+
for (const event of events) {
|
|
122
|
+
byTarget[event.target] = (byTarget[event.target] ?? 0) + 1;
|
|
123
|
+
byDecision[event.decision] = (byDecision[event.decision] ?? 0) + 1;
|
|
124
|
+
byOutcome[event.outcome] = (byOutcome[event.outcome] ?? 0) + 1;
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
enabled: true,
|
|
128
|
+
promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,
|
|
129
|
+
rootDir,
|
|
130
|
+
eventsDir,
|
|
131
|
+
events: {
|
|
132
|
+
total: files.length,
|
|
133
|
+
valid: events.length,
|
|
134
|
+
invalid: invalidEvents.length,
|
|
135
|
+
byTarget,
|
|
136
|
+
byDecision,
|
|
137
|
+
byOutcome,
|
|
138
|
+
latestEventId: events[0]?.eventId,
|
|
139
|
+
latestRecordedAt: events[0]?.recordedAt,
|
|
140
|
+
latestSessionKey: events[0]?.sessionKey
|
|
141
|
+
},
|
|
142
|
+
latestEvent: events[0],
|
|
143
|
+
invalidEvents
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export {
|
|
148
|
+
resolveUtilityTelemetryDir,
|
|
149
|
+
validateUtilityTelemetryEvent,
|
|
150
|
+
recordUtilityTelemetryEvent,
|
|
151
|
+
readUtilityTelemetryEvents,
|
|
152
|
+
getUtilityTelemetryStatus
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=chunk-3QKK7QOS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utility-telemetry.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport {\n assertIsoRecordedAt,\n assertSafePathSegment,\n assertString,\n isRecord,\n optionalStringArray,\n recordStoreDay,\n validateStringRecord,\n} from \"./store-contract.js\";\n\nexport type UtilityTelemetrySource = \"cli\" | \"system\" | \"benchmark\" | \"tool_result\";\nexport type UtilityTelemetryTarget = \"promotion\" | \"ranking\";\nexport type UtilityTelemetryDecision = \"promote\" | \"demote\" | \"hold\" | \"boost\" | \"suppress\";\nexport type UtilityTelemetryOutcome = \"helpful\" | \"neutral\" | \"harmful\";\n\nexport interface UtilityTelemetryEvent {\n schemaVersion: 1;\n eventId: string;\n recordedAt: string;\n sessionKey: string;\n source: UtilityTelemetrySource;\n target: UtilityTelemetryTarget;\n decision: UtilityTelemetryDecision;\n outcome: UtilityTelemetryOutcome;\n utilityScore: number;\n summary: string;\n memoryIds?: string[];\n entityRefs?: string[];\n tags?: string[];\n metadata?: Record<string, string>;\n}\n\nexport interface UtilityTelemetryStatus {\n enabled: boolean;\n promotionByOutcomeEnabled: boolean;\n rootDir: string;\n eventsDir: string;\n events: {\n total: number;\n valid: number;\n invalid: number;\n byTarget: Partial<Record<UtilityTelemetryTarget, number>>;\n byDecision: Partial<Record<UtilityTelemetryDecision, number>>;\n byOutcome: Partial<Record<UtilityTelemetryOutcome, number>>;\n latestEventId?: string;\n latestRecordedAt?: string;\n latestSessionKey?: string;\n };\n latestEvent?: UtilityTelemetryEvent;\n invalidEvents: Array<{\n path: string;\n error: string;\n }>;\n}\n\nexport function resolveUtilityTelemetryDir(memoryDir: string, overrideDir?: string): string {\n if (typeof overrideDir === \"string\" && overrideDir.trim().length > 0) {\n return overrideDir.trim();\n }\n return path.join(memoryDir, \"state\", \"utility-telemetry\");\n}\n\nfunction assertUtilityScore(value: unknown): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new Error(\"utilityScore must be a finite number\");\n }\n if (value < -1 || value > 1) {\n throw new Error(\"utilityScore must be between -1 and 1\");\n }\n return value;\n}\n\nexport function validateUtilityTelemetryEvent(raw: unknown): UtilityTelemetryEvent {\n if (!isRecord(raw)) throw new Error(\"utility telemetry event must be an object\");\n if (raw.schemaVersion !== 1) throw new Error(\"schemaVersion must be 1\");\n\n const source = assertString(raw.source, \"source\");\n if (![\"cli\", \"system\", \"benchmark\", \"tool_result\"].includes(source)) {\n throw new Error(\"source must be one of cli|system|benchmark|tool_result\");\n }\n\n const target = assertString(raw.target, \"target\");\n if (![\"promotion\", \"ranking\"].includes(target)) {\n throw new Error(\"target must be one of promotion|ranking\");\n }\n\n const decision = assertString(raw.decision, \"decision\");\n if (![\"promote\", \"demote\", \"hold\", \"boost\", \"suppress\"].includes(decision)) {\n throw new Error(\"decision must be one of promote|demote|hold|boost|suppress\");\n }\n\n const outcome = assertString(raw.outcome, \"outcome\");\n if (![\"helpful\", \"neutral\", \"harmful\"].includes(outcome)) {\n throw new Error(\"outcome must be one of helpful|neutral|harmful\");\n }\n\n return {\n schemaVersion: 1,\n eventId: assertSafePathSegment(assertString(raw.eventId, \"eventId\"), \"eventId\"),\n recordedAt: assertIsoRecordedAt(assertString(raw.recordedAt, \"recordedAt\")),\n sessionKey: assertString(raw.sessionKey, \"sessionKey\"),\n source: source as UtilityTelemetrySource,\n target: target as UtilityTelemetryTarget,\n decision: decision as UtilityTelemetryDecision,\n outcome: outcome as UtilityTelemetryOutcome,\n utilityScore: assertUtilityScore(raw.utilityScore),\n summary: assertString(raw.summary, \"summary\"),\n memoryIds: optionalStringArray(raw.memoryIds, \"memoryIds\"),\n entityRefs: optionalStringArray(raw.entityRefs, \"entityRefs\"),\n tags: optionalStringArray(raw.tags, \"tags\"),\n metadata: validateStringRecord(raw.metadata, \"metadata\"),\n };\n}\n\nexport async function recordUtilityTelemetryEvent(options: {\n memoryDir: string;\n utilityTelemetryDir?: string;\n event: UtilityTelemetryEvent;\n}): Promise<string> {\n const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);\n const validated = validateUtilityTelemetryEvent(options.event);\n const day = recordStoreDay(validated.recordedAt);\n const eventsDir = path.join(rootDir, \"events\", day);\n const filePath = path.join(eventsDir, `${validated.eventId}.json`);\n await mkdir(eventsDir, { recursive: true });\n await writeFile(filePath, JSON.stringify(validated, null, 2), \"utf8\");\n return filePath;\n}\n\nexport async function readUtilityTelemetryEvents(options: {\n memoryDir: string;\n utilityTelemetryDir?: string;\n}): Promise<{\n files: string[];\n events: UtilityTelemetryEvent[];\n invalidEvents: Array<{ path: string; error: string }>;\n}> {\n const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);\n const files = await listJsonFiles(path.join(rootDir, \"events\"));\n const events: UtilityTelemetryEvent[] = [];\n const invalidEvents: Array<{ path: string; error: string }> = [];\n for (const filePath of files) {\n try {\n events.push(validateUtilityTelemetryEvent(await readJsonFile(filePath)));\n } catch (error) {\n invalidEvents.push({\n path: filePath,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { files, events, invalidEvents };\n}\n\nexport async function getUtilityTelemetryStatus(options: {\n memoryDir: string;\n utilityTelemetryDir?: string;\n enabled: boolean;\n promotionByOutcomeEnabled?: boolean;\n}): Promise<UtilityTelemetryStatus> {\n const rootDir = resolveUtilityTelemetryDir(options.memoryDir, options.utilityTelemetryDir);\n const eventsDir = path.join(rootDir, \"events\");\n if (!options.enabled) {\n return {\n enabled: false,\n promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,\n rootDir,\n eventsDir,\n events: {\n total: 0,\n valid: 0,\n invalid: 0,\n byTarget: {},\n byDecision: {},\n byOutcome: {},\n },\n invalidEvents: [],\n };\n }\n\n const { files, events, invalidEvents } = await readUtilityTelemetryEvents(options);\n events.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));\n\n const byTarget: Partial<Record<UtilityTelemetryTarget, number>> = {};\n const byDecision: Partial<Record<UtilityTelemetryDecision, number>> = {};\n const byOutcome: Partial<Record<UtilityTelemetryOutcome, number>> = {};\n for (const event of events) {\n byTarget[event.target] = (byTarget[event.target] ?? 0) + 1;\n byDecision[event.decision] = (byDecision[event.decision] ?? 0) + 1;\n byOutcome[event.outcome] = (byOutcome[event.outcome] ?? 0) + 1;\n }\n\n return {\n enabled: true,\n promotionByOutcomeEnabled: options.promotionByOutcomeEnabled === true,\n rootDir,\n eventsDir,\n events: {\n total: files.length,\n valid: events.length,\n invalid: invalidEvents.length,\n byTarget,\n byDecision,\n byOutcome,\n latestEventId: events[0]?.eventId,\n latestRecordedAt: events[0]?.recordedAt,\n latestSessionKey: events[0]?.sessionKey,\n },\n latestEvent: events[0],\n invalidEvents,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
graphEdgeKey
|
|
3
|
+
} from "./chunk-Y4Z4I6WK.js";
|
|
4
|
+
|
|
5
|
+
// src/graph-dashboard-diff.ts
|
|
6
|
+
function diffGraphSnapshots(previous, next) {
|
|
7
|
+
const prevNodeSet = new Set(previous.nodes.map((node) => node.id));
|
|
8
|
+
const nextNodeSet = new Set(next.nodes.map((node) => node.id));
|
|
9
|
+
const prevEdges = new Map(previous.edges.map((edge) => [graphEdgeKey(edge), edge]));
|
|
10
|
+
const nextEdges = new Map(next.edges.map((edge) => [graphEdgeKey(edge), edge]));
|
|
11
|
+
const addedNodes = [...nextNodeSet].filter((id) => !prevNodeSet.has(id)).sort((a, b) => a.localeCompare(b));
|
|
12
|
+
const removedNodes = [...prevNodeSet].filter((id) => !nextNodeSet.has(id)).sort((a, b) => a.localeCompare(b));
|
|
13
|
+
const addedEdges = [...nextEdges.entries()].filter(([key]) => !prevEdges.has(key)).map(([, edge]) => edge).sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));
|
|
14
|
+
const removedEdges = [...prevEdges.entries()].filter(([key]) => !nextEdges.has(key)).map(([, edge]) => edge).sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));
|
|
15
|
+
return {
|
|
16
|
+
addedNodes,
|
|
17
|
+
removedNodes,
|
|
18
|
+
addedEdges,
|
|
19
|
+
removedEdges
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
diffGraphSnapshots
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=chunk-3SLRNYNG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/graph-dashboard-diff.ts"],"sourcesContent":["import type { GraphEdge } from \"./graph.js\";\nimport { graphEdgeKey } from \"./graph-dashboard-key.js\";\nimport type { GraphSnapshot } from \"./graph-dashboard-parser.js\";\n\nexport interface GraphPatch {\n addedNodes: string[];\n removedNodes: string[];\n addedEdges: GraphEdge[];\n removedEdges: GraphEdge[];\n}\n\nexport function diffGraphSnapshots(previous: GraphSnapshot, next: GraphSnapshot): GraphPatch {\n const prevNodeSet = new Set(previous.nodes.map((node) => node.id));\n const nextNodeSet = new Set(next.nodes.map((node) => node.id));\n const prevEdges = new Map(previous.edges.map((edge) => [graphEdgeKey(edge), edge]));\n const nextEdges = new Map(next.edges.map((edge) => [graphEdgeKey(edge), edge]));\n\n const addedNodes = [...nextNodeSet].filter((id) => !prevNodeSet.has(id)).sort((a, b) => a.localeCompare(b));\n const removedNodes = [...prevNodeSet].filter((id) => !nextNodeSet.has(id)).sort((a, b) => a.localeCompare(b));\n const addedEdges = [...nextEdges.entries()]\n .filter(([key]) => !prevEdges.has(key))\n .map(([, edge]) => edge)\n .sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));\n const removedEdges = [...prevEdges.entries()]\n .filter(([key]) => !nextEdges.has(key))\n .map(([, edge]) => edge)\n .sort((a, b) => a.type.localeCompare(b.type) || a.from.localeCompare(b.from) || a.to.localeCompare(b.to));\n\n return {\n addedNodes,\n removedNodes,\n addedEdges,\n removedEdges,\n };\n}\n"],"mappings":";;;;;AAWO,SAAS,mBAAmB,UAAyB,MAAiC;AAC3F,QAAM,cAAc,IAAI,IAAI,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;AACjE,QAAM,cAAc,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC;AAC7D,QAAM,YAAY,IAAI,IAAI,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,GAAG,IAAI,CAAC,CAAC;AAClF,QAAM,YAAY,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,GAAG,IAAI,CAAC,CAAC;AAE9E,QAAM,aAAa,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC1G,QAAM,eAAe,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC5G,QAAM,aAAa,CAAC,GAAG,UAAU,QAAQ,CAAC,EACvC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,EACrC,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EACtB,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAC1G,QAAM,eAAe,CAAC,GAAG,UAAU,QAAQ,CAAC,EACzC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,EACrC,IAAI,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,EACtB,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,KAAK,cAAc,EAAE,IAAI,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAE1G,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
clamp01,
|
|
3
|
+
computeLifecycleValueInputs,
|
|
4
|
+
daysSince
|
|
5
|
+
} from "./chunk-QCCCQT3O.js";
|
|
6
|
+
|
|
7
|
+
// src/tier-routing.ts
|
|
8
|
+
function computeTierValueScore(memory, now, signals) {
|
|
9
|
+
const fm = memory.frontmatter;
|
|
10
|
+
const inputs = computeLifecycleValueInputs(memory, now, signals);
|
|
11
|
+
const correctionBoost = fm.category === "correction" ? 0.08 : 0;
|
|
12
|
+
const confirmedBoost = fm.verificationState === "user_confirmed" ? 0.05 : 0;
|
|
13
|
+
const score = inputs.confidence * 0.24 + inputs.access * 0.26 + inputs.recency * 0.2 + inputs.importance * 0.2 + inputs.feedback * 0.1 + correctionBoost + confirmedBoost - inputs.disputedPenalty * 0.5;
|
|
14
|
+
return clamp01(score);
|
|
15
|
+
}
|
|
16
|
+
function decideTierTransition(memory, currentTier, policy, now, signals) {
|
|
17
|
+
const valueScore = computeTierValueScore(memory, now, signals);
|
|
18
|
+
if (!policy.enabled) {
|
|
19
|
+
return {
|
|
20
|
+
currentTier,
|
|
21
|
+
nextTier: currentTier,
|
|
22
|
+
valueScore,
|
|
23
|
+
changed: false,
|
|
24
|
+
reason: "tier_migration_disabled"
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (currentTier === "hot") {
|
|
28
|
+
const ageDays = daysSince(memory.frontmatter.updated ?? memory.frontmatter.created, now.getTime());
|
|
29
|
+
if (ageDays >= policy.demotionMinAgeDays && valueScore <= policy.demotionValueThreshold) {
|
|
30
|
+
return {
|
|
31
|
+
currentTier,
|
|
32
|
+
nextTier: "cold",
|
|
33
|
+
valueScore,
|
|
34
|
+
changed: true,
|
|
35
|
+
reason: "value_below_demotion_threshold"
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
currentTier,
|
|
40
|
+
nextTier: currentTier,
|
|
41
|
+
valueScore,
|
|
42
|
+
changed: false,
|
|
43
|
+
reason: ageDays < policy.demotionMinAgeDays ? "demotion_min_age_not_met" : "value_above_demotion_threshold"
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (valueScore >= policy.promotionValueThreshold) {
|
|
47
|
+
return {
|
|
48
|
+
currentTier,
|
|
49
|
+
nextTier: "hot",
|
|
50
|
+
valueScore,
|
|
51
|
+
changed: true,
|
|
52
|
+
reason: "value_above_promotion_threshold"
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
currentTier,
|
|
57
|
+
nextTier: currentTier,
|
|
58
|
+
valueScore,
|
|
59
|
+
changed: false,
|
|
60
|
+
reason: "value_below_promotion_threshold"
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
computeTierValueScore,
|
|
66
|
+
decideTierTransition
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=chunk-4A24LIM2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tier-routing.ts"],"sourcesContent":["import type { MemoryFile } from \"./types.js\";\nimport {\n clamp01,\n computeLifecycleValueInputs,\n daysSince,\n type LifecycleSignals,\n} from \"./lifecycle.js\";\n\nexport type MemoryTier = \"hot\" | \"cold\";\n\nexport interface TierRoutingPolicy {\n enabled: boolean;\n demotionMinAgeDays: number;\n demotionValueThreshold: number;\n promotionValueThreshold: number;\n}\n\nexport interface TierTransitionDecision {\n currentTier: MemoryTier;\n nextTier: MemoryTier;\n valueScore: number;\n changed: boolean;\n reason: string;\n}\n\nexport function computeTierValueScore(\n memory: Pick<MemoryFile, \"frontmatter\">,\n now: Date,\n signals?: LifecycleSignals,\n): number {\n const fm = memory.frontmatter;\n const inputs = computeLifecycleValueInputs(memory, now, signals);\n const correctionBoost = fm.category === \"correction\" ? 0.08 : 0;\n const confirmedBoost = fm.verificationState === \"user_confirmed\" ? 0.05 : 0;\n\n const score = (inputs.confidence * 0.24)\n + (inputs.access * 0.26)\n + (inputs.recency * 0.2)\n + (inputs.importance * 0.2)\n + (inputs.feedback * 0.1)\n + correctionBoost\n + confirmedBoost\n - (inputs.disputedPenalty * 0.5);\n\n return clamp01(score);\n}\n\nexport function decideTierTransition(\n memory: Pick<MemoryFile, \"frontmatter\">,\n currentTier: MemoryTier,\n policy: TierRoutingPolicy,\n now: Date,\n signals?: LifecycleSignals,\n): TierTransitionDecision {\n const valueScore = computeTierValueScore(memory, now, signals);\n if (!policy.enabled) {\n return {\n currentTier,\n nextTier: currentTier,\n valueScore,\n changed: false,\n reason: \"tier_migration_disabled\",\n };\n }\n\n if (currentTier === \"hot\") {\n const ageDays = daysSince(memory.frontmatter.updated ?? memory.frontmatter.created, now.getTime());\n if (ageDays >= policy.demotionMinAgeDays && valueScore <= policy.demotionValueThreshold) {\n return {\n currentTier,\n nextTier: \"cold\",\n valueScore,\n changed: true,\n reason: \"value_below_demotion_threshold\",\n };\n }\n return {\n currentTier,\n nextTier: currentTier,\n valueScore,\n changed: false,\n reason: ageDays < policy.demotionMinAgeDays ? \"demotion_min_age_not_met\" : \"value_above_demotion_threshold\",\n };\n }\n\n if (valueScore >= policy.promotionValueThreshold) {\n return {\n currentTier,\n nextTier: \"hot\",\n valueScore,\n changed: true,\n reason: \"value_above_promotion_threshold\",\n };\n }\n return {\n currentTier,\n nextTier: currentTier,\n valueScore,\n changed: false,\n reason: \"value_below_promotion_threshold\",\n };\n}\n"],"mappings":";;;;;;;AAyBO,SAAS,sBACd,QACA,KACA,SACQ;AACR,QAAM,KAAK,OAAO;AAClB,QAAM,SAAS,4BAA4B,QAAQ,KAAK,OAAO;AAC/D,QAAM,kBAAkB,GAAG,aAAa,eAAe,OAAO;AAC9D,QAAM,iBAAiB,GAAG,sBAAsB,mBAAmB,OAAO;AAE1E,QAAM,QAAS,OAAO,aAAa,OAC9B,OAAO,SAAS,OAChB,OAAO,UAAU,MACjB,OAAO,aAAa,MACpB,OAAO,WAAW,MACnB,kBACA,iBACC,OAAO,kBAAkB;AAE9B,SAAO,QAAQ,KAAK;AACtB;AAEO,SAAS,qBACd,QACA,aACA,QACA,KACA,SACwB;AACxB,QAAM,aAAa,sBAAsB,QAAQ,KAAK,OAAO;AAC7D,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI,gBAAgB,OAAO;AACzB,UAAM,UAAU,UAAU,OAAO,YAAY,WAAW,OAAO,YAAY,SAAS,IAAI,QAAQ,CAAC;AACjG,QAAI,WAAW,OAAO,sBAAsB,cAAc,OAAO,wBAAwB;AACvF,aAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,QAAQ,UAAU,OAAO,qBAAqB,6BAA6B;AAAA,IAC7E;AAAA,EACF;AAEA,MAAI,cAAc,OAAO,yBAAyB;AAChD,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF;","names":[]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// src/recall-query-policy.ts
|
|
2
|
+
var DEFAULT_STOPWORDS = /* @__PURE__ */ new Set([
|
|
3
|
+
"the",
|
|
4
|
+
"and",
|
|
5
|
+
"for",
|
|
6
|
+
"with",
|
|
7
|
+
"from",
|
|
8
|
+
"that",
|
|
9
|
+
"this",
|
|
10
|
+
"your",
|
|
11
|
+
"you",
|
|
12
|
+
"are",
|
|
13
|
+
"was",
|
|
14
|
+
"were",
|
|
15
|
+
"have",
|
|
16
|
+
"has",
|
|
17
|
+
"had",
|
|
18
|
+
"not",
|
|
19
|
+
"but",
|
|
20
|
+
"its",
|
|
21
|
+
"into",
|
|
22
|
+
"only",
|
|
23
|
+
"use",
|
|
24
|
+
"run",
|
|
25
|
+
"then",
|
|
26
|
+
"when",
|
|
27
|
+
"what",
|
|
28
|
+
"where",
|
|
29
|
+
"which",
|
|
30
|
+
"will",
|
|
31
|
+
"would",
|
|
32
|
+
"should",
|
|
33
|
+
"could",
|
|
34
|
+
"goal",
|
|
35
|
+
"output",
|
|
36
|
+
"format",
|
|
37
|
+
"rules",
|
|
38
|
+
"section",
|
|
39
|
+
"sections",
|
|
40
|
+
"skip",
|
|
41
|
+
"today",
|
|
42
|
+
"yesterday",
|
|
43
|
+
"return",
|
|
44
|
+
"summary",
|
|
45
|
+
"plain",
|
|
46
|
+
"text",
|
|
47
|
+
"before",
|
|
48
|
+
"after",
|
|
49
|
+
"time",
|
|
50
|
+
"date",
|
|
51
|
+
"daily",
|
|
52
|
+
"cron",
|
|
53
|
+
"agent",
|
|
54
|
+
"mode",
|
|
55
|
+
"data",
|
|
56
|
+
"gathering",
|
|
57
|
+
"context"
|
|
58
|
+
]);
|
|
59
|
+
function collapseWhitespace(text) {
|
|
60
|
+
return text.replace(/\s+/g, " ").trim();
|
|
61
|
+
}
|
|
62
|
+
function stripFilesystemLikePaths(text) {
|
|
63
|
+
return text.replace(/(?:^|\s)(~\/[^\s)]+)(?=\s|$)/g, " ").replace(/(?:^|\s)(\/[A-Za-z0-9._\-\/]+)(?=\s|$)/g, " ").replace(/(?:^|\s)([A-Za-z]:\\[^\s)]+)(?=\s|$)/g, " ");
|
|
64
|
+
}
|
|
65
|
+
function isBulletOrNumberedLine(line) {
|
|
66
|
+
if (line.startsWith("-") || line.startsWith("*")) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
let i = 0;
|
|
70
|
+
while (i < line.length) {
|
|
71
|
+
const code = line.charCodeAt(i);
|
|
72
|
+
if (code < 48 || code > 57) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
i += 1;
|
|
76
|
+
}
|
|
77
|
+
return i > 0 && i < line.length && line.charAt(i) === ".";
|
|
78
|
+
}
|
|
79
|
+
function scoreInstructionHeavyShape(prompt) {
|
|
80
|
+
const lines = prompt.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
81
|
+
const lineCount = lines.length;
|
|
82
|
+
if (lineCount === 0) return 0;
|
|
83
|
+
const headingLineCount = lines.filter(
|
|
84
|
+
(line) => /^(goal|output format|tone rules|grounding rules|data gathering|date computation|crm context|follow-up|social|current time|return)\b/i.test(
|
|
85
|
+
line
|
|
86
|
+
) || /^[A-Z][A-Z\s/-]{4,}:$/.test(line)
|
|
87
|
+
).length;
|
|
88
|
+
const bulletLineCount = lines.filter((line) => isBulletOrNumberedLine(line)).length;
|
|
89
|
+
const longLineCount = lines.filter((line) => line.length >= 180).length;
|
|
90
|
+
const hasPathDensity = (prompt.match(/(?:~\/|\/Users\/|[A-Za-z]:\\)/g)?.length ?? 0) >= 2;
|
|
91
|
+
const hasImperativeDensity = (prompt.match(/\b(run|extract|read|parse|determine|include|omit|skip)\b/gi)?.length ?? 0) >= 8;
|
|
92
|
+
let score = 0;
|
|
93
|
+
if (lineCount >= 24) score += 2;
|
|
94
|
+
if (headingLineCount >= 4) score += 2;
|
|
95
|
+
if (bulletLineCount >= 8) score += 1;
|
|
96
|
+
if (longLineCount >= 3) score += 1;
|
|
97
|
+
if (hasPathDensity) score += 1;
|
|
98
|
+
if (hasImperativeDensity) score += 1;
|
|
99
|
+
return score;
|
|
100
|
+
}
|
|
101
|
+
function classifyRecallPromptShape(prompt) {
|
|
102
|
+
const score = scoreInstructionHeavyShape(prompt);
|
|
103
|
+
return score >= 5 ? "instruction_heavy" : "standard";
|
|
104
|
+
}
|
|
105
|
+
function tokenizeForCompactQuery(text) {
|
|
106
|
+
const raw = text.toLowerCase().replace(/[^a-z0-9\s:_-]+/g, " ").split(/\s+/).filter((token) => token.length >= 3);
|
|
107
|
+
const deduped = [];
|
|
108
|
+
const seen = /* @__PURE__ */ new Set();
|
|
109
|
+
for (const token of raw) {
|
|
110
|
+
if (DEFAULT_STOPWORDS.has(token)) continue;
|
|
111
|
+
if (seen.has(token)) continue;
|
|
112
|
+
seen.add(token);
|
|
113
|
+
deduped.push(token);
|
|
114
|
+
}
|
|
115
|
+
return deduped;
|
|
116
|
+
}
|
|
117
|
+
function buildInstructionHeavyQuery(prompt, tokenCap, maxChars) {
|
|
118
|
+
const cleaned = stripFilesystemLikePaths(prompt);
|
|
119
|
+
const tokens = tokenizeForCompactQuery(cleaned).slice(0, Math.max(8, tokenCap));
|
|
120
|
+
const joined = tokens.join(" ");
|
|
121
|
+
const compact = collapseWhitespace(joined);
|
|
122
|
+
if (compact.length <= maxChars) return compact;
|
|
123
|
+
return compact.slice(0, maxChars).trim();
|
|
124
|
+
}
|
|
125
|
+
function clampInstructionHeavyTokenCap(value) {
|
|
126
|
+
if (!Number.isFinite(value)) return 8;
|
|
127
|
+
return Math.max(8, Math.round(value));
|
|
128
|
+
}
|
|
129
|
+
function buildStandardQuery(prompt, maxChars) {
|
|
130
|
+
const trimmed = collapseWhitespace(prompt);
|
|
131
|
+
if (trimmed.length <= maxChars) return trimmed;
|
|
132
|
+
return trimmed.slice(0, maxChars).trim();
|
|
133
|
+
}
|
|
134
|
+
function buildRecallQueryPolicy(prompt, sessionKey, cfg) {
|
|
135
|
+
const normalizedPrompt = collapseWhitespace(prompt);
|
|
136
|
+
const isCron = (sessionKey ?? "").includes(":cron:");
|
|
137
|
+
if (!cfg.cronRecallPolicyEnabled || !isCron) {
|
|
138
|
+
return {
|
|
139
|
+
promptShape: "standard",
|
|
140
|
+
retrievalQuery: prompt,
|
|
141
|
+
skipConversationRecall: false,
|
|
142
|
+
retrievalBudgetMode: "full"
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const promptShape = classifyRecallPromptShape(prompt);
|
|
146
|
+
const maxChars = Math.max(120, cfg.cronRecallNormalizedQueryMaxChars);
|
|
147
|
+
const tokenCap = clampInstructionHeavyTokenCap(cfg.cronRecallInstructionHeavyTokenCap);
|
|
148
|
+
const retrievalQuery = promptShape === "instruction_heavy" ? buildInstructionHeavyQuery(prompt, tokenCap, maxChars) : buildStandardQuery(prompt, maxChars);
|
|
149
|
+
const skipConversationRecall = cfg.cronConversationRecallMode === "never" ? true : cfg.cronConversationRecallMode === "always" ? false : promptShape === "instruction_heavy";
|
|
150
|
+
const retrievalBudgetMode = promptShape === "instruction_heavy" ? "minimal" : "full";
|
|
151
|
+
return {
|
|
152
|
+
promptShape,
|
|
153
|
+
retrievalQuery: retrievalQuery.length > 0 ? retrievalQuery : normalizedPrompt.slice(0, maxChars),
|
|
154
|
+
skipConversationRecall,
|
|
155
|
+
retrievalBudgetMode
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export {
|
|
160
|
+
classifyRecallPromptShape,
|
|
161
|
+
clampInstructionHeavyTokenCap,
|
|
162
|
+
buildRecallQueryPolicy
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=chunk-6HZ6AO2P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/recall-query-policy.ts"],"sourcesContent":["export type RecallPromptShape = \"standard\" | \"instruction_heavy\";\nexport type CronConversationRecallMode = \"auto\" | \"always\" | \"never\";\nexport type RecallBudgetMode = \"full\" | \"minimal\";\n\nexport interface RecallQueryPolicyConfig {\n cronRecallPolicyEnabled: boolean;\n cronRecallNormalizedQueryMaxChars: number;\n cronRecallInstructionHeavyTokenCap: number;\n cronConversationRecallMode: CronConversationRecallMode;\n}\n\nexport interface RecallQueryPolicyResult {\n promptShape: RecallPromptShape;\n retrievalQuery: string;\n skipConversationRecall: boolean;\n retrievalBudgetMode: RecallBudgetMode;\n}\n\nconst DEFAULT_STOPWORDS = new Set([\n \"the\",\n \"and\",\n \"for\",\n \"with\",\n \"from\",\n \"that\",\n \"this\",\n \"your\",\n \"you\",\n \"are\",\n \"was\",\n \"were\",\n \"have\",\n \"has\",\n \"had\",\n \"not\",\n \"but\",\n \"its\",\n \"into\",\n \"only\",\n \"use\",\n \"run\",\n \"then\",\n \"when\",\n \"what\",\n \"where\",\n \"which\",\n \"will\",\n \"would\",\n \"should\",\n \"could\",\n \"goal\",\n \"output\",\n \"format\",\n \"rules\",\n \"section\",\n \"sections\",\n \"skip\",\n \"today\",\n \"yesterday\",\n \"return\",\n \"summary\",\n \"plain\",\n \"text\",\n \"before\",\n \"after\",\n \"time\",\n \"date\",\n \"daily\",\n \"cron\",\n \"agent\",\n \"mode\",\n \"data\",\n \"gathering\",\n \"context\",\n]);\n\nfunction collapseWhitespace(text: string): string {\n return text.replace(/\\s+/g, \" \").trim();\n}\n\nfunction stripFilesystemLikePaths(text: string): string {\n return text\n .replace(/(?:^|\\s)(~\\/[^\\s)]+)(?=\\s|$)/g, \" \")\n .replace(/(?:^|\\s)(\\/[A-Za-z0-9._\\-\\/]+)(?=\\s|$)/g, \" \")\n .replace(/(?:^|\\s)([A-Za-z]:\\\\[^\\s)]+)(?=\\s|$)/g, \" \");\n}\n\nfunction isBulletOrNumberedLine(line: string): boolean {\n if (line.startsWith(\"-\") || line.startsWith(\"*\")) {\n return true;\n }\n\n let i = 0;\n while (i < line.length) {\n const code = line.charCodeAt(i);\n if (code < 48 || code > 57) {\n break;\n }\n i += 1;\n }\n return i > 0 && i < line.length && line.charAt(i) === \".\";\n}\n\nfunction scoreInstructionHeavyShape(prompt: string): number {\n const lines = prompt\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n const lineCount = lines.length;\n if (lineCount === 0) return 0;\n\n const headingLineCount = lines.filter(\n (line) =>\n /^(goal|output format|tone rules|grounding rules|data gathering|date computation|crm context|follow-up|social|current time|return)\\b/i.test(\n line,\n ) || /^[A-Z][A-Z\\s/-]{4,}:$/.test(line),\n ).length;\n const bulletLineCount = lines.filter((line) => isBulletOrNumberedLine(line)).length;\n const longLineCount = lines.filter((line) => line.length >= 180).length;\n const hasPathDensity =\n (prompt.match(/(?:~\\/|\\/Users\\/|[A-Za-z]:\\\\)/g)?.length ?? 0) >= 2;\n const hasImperativeDensity =\n (prompt.match(/\\b(run|extract|read|parse|determine|include|omit|skip)\\b/gi)?.length ?? 0) >=\n 8;\n\n let score = 0;\n if (lineCount >= 24) score += 2;\n if (headingLineCount >= 4) score += 2;\n if (bulletLineCount >= 8) score += 1;\n if (longLineCount >= 3) score += 1;\n if (hasPathDensity) score += 1;\n if (hasImperativeDensity) score += 1;\n return score;\n}\n\nexport function classifyRecallPromptShape(prompt: string): RecallPromptShape {\n const score = scoreInstructionHeavyShape(prompt);\n return score >= 5 ? \"instruction_heavy\" : \"standard\";\n}\n\nfunction tokenizeForCompactQuery(text: string): string[] {\n const raw = text\n .toLowerCase()\n .replace(/[^a-z0-9\\s:_-]+/g, \" \")\n .split(/\\s+/)\n .filter((token) => token.length >= 3);\n const deduped: string[] = [];\n const seen = new Set<string>();\n for (const token of raw) {\n if (DEFAULT_STOPWORDS.has(token)) continue;\n if (seen.has(token)) continue;\n seen.add(token);\n deduped.push(token);\n }\n return deduped;\n}\n\nfunction buildInstructionHeavyQuery(\n prompt: string,\n tokenCap: number,\n maxChars: number,\n): string {\n const cleaned = stripFilesystemLikePaths(prompt);\n const tokens = tokenizeForCompactQuery(cleaned).slice(0, Math.max(8, tokenCap));\n const joined = tokens.join(\" \");\n const compact = collapseWhitespace(joined);\n if (compact.length <= maxChars) return compact;\n return compact.slice(0, maxChars).trim();\n}\n\nexport function clampInstructionHeavyTokenCap(value: number): number {\n if (!Number.isFinite(value)) return 8;\n return Math.max(8, Math.round(value));\n}\n\nfunction buildStandardQuery(prompt: string, maxChars: number): string {\n const trimmed = collapseWhitespace(prompt);\n if (trimmed.length <= maxChars) return trimmed;\n return trimmed.slice(0, maxChars).trim();\n}\n\nexport function buildRecallQueryPolicy(\n prompt: string,\n sessionKey: string | undefined,\n cfg: RecallQueryPolicyConfig,\n): RecallQueryPolicyResult {\n const normalizedPrompt = collapseWhitespace(prompt);\n const isCron = (sessionKey ?? \"\").includes(\":cron:\");\n if (!cfg.cronRecallPolicyEnabled || !isCron) {\n return {\n promptShape: \"standard\",\n retrievalQuery: prompt,\n skipConversationRecall: false,\n retrievalBudgetMode: \"full\",\n };\n }\n\n const promptShape = classifyRecallPromptShape(prompt);\n const maxChars = Math.max(120, cfg.cronRecallNormalizedQueryMaxChars);\n const tokenCap = clampInstructionHeavyTokenCap(cfg.cronRecallInstructionHeavyTokenCap);\n const retrievalQuery =\n promptShape === \"instruction_heavy\"\n ? buildInstructionHeavyQuery(prompt, tokenCap, maxChars)\n : buildStandardQuery(prompt, maxChars);\n\n const skipConversationRecall =\n cfg.cronConversationRecallMode === \"never\"\n ? true\n : cfg.cronConversationRecallMode === \"always\"\n ? false\n : promptShape === \"instruction_heavy\";\n\n const retrievalBudgetMode = promptShape === \"instruction_heavy\" ? \"minimal\" : \"full\";\n\n return {\n promptShape,\n retrievalQuery: retrievalQuery.length > 0 ? retrievalQuery : normalizedPrompt.slice(0, maxChars),\n skipConversationRecall,\n retrievalBudgetMode,\n };\n}\n"],"mappings":"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","names":[]}
|