@unbrained/pm-cli 2026.7.1 → 2026.7.3
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/.claude-plugin/marketplace.json +3 -3
- package/CHANGELOG.md +25 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +1 -1
- package/dist/cli/commander-usage.d.ts +2 -0
- package/dist/cli/commander-usage.js +110 -86
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/activity.js +79 -57
- package/dist/cli/commands/activity.js.map +1 -1
- package/dist/cli/commands/aggregate.js +102 -79
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/calendar.js +278 -243
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close-many.js +176 -114
- package/dist/cli/commands/close-many.js.map +1 -1
- package/dist/cli/commands/close.js +157 -129
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +50 -42
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +443 -879
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.js +365 -287
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +352 -238
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +32 -17
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +46 -39
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/dedupe-merge.js +88 -69
- package/dist/cli/commands/dedupe-merge.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +56 -67
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/shared.js +21 -15
- package/dist/cli/commands/extension/shared.js.map +1 -1
- package/dist/cli/commands/get.js +114 -81
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.d.ts +17 -0
- package/dist/cli/commands/health.js +545 -417
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-compact.js +209 -140
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-redact.js +162 -119
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +120 -85
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.js +32 -19
- package/dist/cli/commands/init-agent-guidance.js.map +1 -1
- package/dist/cli/commands/init.d.ts +8 -2
- package/dist/cli/commands/init.js +263 -162
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.js +152 -102
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.js +60 -40
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/plan.js +373 -298
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/profile.js +23 -15
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/recurrence-parsers.js +43 -25
- package/dist/cli/commands/recurrence-parsers.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +21 -5
- package/dist/cli/commands/reindex.js +345 -205
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +8 -7
- package/dist/cli/commands/restore.js +105 -69
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.js +33 -30
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +10 -2
- package/dist/cli/commands/search.js +503 -470
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/telemetry.js +98 -87
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/test-all.js +237 -168
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +6 -5
- package/dist/cli/commands/test.js +424 -344
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +57 -42
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -1
- package/dist/cli/commands/update.js +738 -671
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +20 -1
- package/dist/cli/commands/validate.js +478 -343
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +406 -361
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-help.js +27 -19
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/help-json-payload.js +57 -49
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.d.ts +47 -0
- package/dist/cli/main.js +474 -371
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migration-gates.js +22 -45
- package/dist/cli/migration-gates.js.map +1 -1
- package/dist/cli/register-list-query.js +299 -310
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +763 -779
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +386 -362
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +120 -101
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +4 -0
- package/dist/cli/registration-helpers.js +45 -56
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-5YWLSPGE.js} +9 -9
- package/dist/cli-bundle/chunks/activity-BIML7K2D.js +16 -0
- package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-2V2M3JZU.js} +107 -83
- package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-2V2M3JZU.js.map} +2 -2
- package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-EK7DXML7.js} +108 -84
- package/dist/cli-bundle/chunks/aggregate-EK7DXML7.js.map +1 -0
- package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-EZESUVJT.js} +8 -8
- package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-JFG4WQMG.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-32IUNTG4.js} +158 -119
- package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-3W2HJKJX.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-4EXFFP7T.js} +86 -52
- package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-4PFVUUYV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-4WB6S4YX.js} +308 -184
- package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-572FKBRL.js} +61 -102
- package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-5E7N4T2Z.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-5IZUBZBR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-5JIWFWOZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-67LARBDL.js} +493 -404
- package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-6CDCWKSX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-6KRFL33E.js} +308 -184
- package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-6NYJGMTY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-7CLLC75T.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-7LYO6S5A.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-A3OQ7TFW.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-AIKU3IIL.js} +153 -90
- package/dist/cli-bundle/chunks/chunk-AIKU3IIL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AJHYQCBJ.js} +39 -5
- package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-BE2SR6QL.js} +92 -77
- package/dist/cli-bundle/chunks/chunk-BE2SR6QL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-BI4R7HI2.js} +75 -53
- package/dist/cli-bundle/chunks/chunk-BI4R7HI2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-CXR3CMBQ.js} +33 -6
- package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-ECU6MMTQ.js} +713 -613
- package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-EJ2OCBHF.js} +54 -30
- package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-EQURFOMH.js} +41 -26
- package/dist/cli-bundle/chunks/chunk-EQURFOMH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-ER4ME5U2.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-ERG65A2L.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-F6WNBITZ.js} +157 -113
- package/dist/cli-bundle/chunks/chunk-F6WNBITZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-FH2H3CBD.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-FUFFPIYA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-FZJM2TXF.js} +110 -73
- package/dist/cli-bundle/chunks/chunk-FZJM2TXF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-GUYNUXQT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-GVJE5T7Q.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-HB4FAT3O.js} +42 -60
- package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-HQAF23Q2.js} +626 -484
- package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-JBZ2NTKX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-JPATY4SE.js} +54 -30
- package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-K5DT2YKM.js} +109 -72
- package/dist/cli-bundle/chunks/chunk-K5DT2YKM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KEZOIPCR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-KHVGM5CS.js} +466 -365
- package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-KS6ATO47.js} +288 -175
- package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-L4SLHV6G.js} +463 -362
- package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-LBE5QFMZ.js} +158 -114
- package/dist/cli-bundle/chunks/chunk-LBE5QFMZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-LCWQP6NM.js} +76 -54
- package/dist/cli-bundle/chunks/chunk-LCWQP6NM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-LOWVNZBZ.js} +91 -76
- package/dist/cli-bundle/chunks/chunk-LOWVNZBZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-MDHWWBNZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-MEZZZBYX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-MHRS5FUX.js} +288 -175
- package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-NOIEVOK5.js} +391 -313
- package/dist/cli-bundle/chunks/chunk-NOIEVOK5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-NZ7QIUP5.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-OGLGI22K.js} +115 -67
- package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js.map → chunk-OGLGI22K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-P5L7Z2O6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-PULUSQAV.js} +492 -403
- package/dist/cli-bundle/chunks/chunk-PULUSQAV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-QCDTQCMW.js} +22 -30
- package/dist/cli-bundle/chunks/chunk-QCDTQCMW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-QNNQAAZ5.js} +24 -18
- package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-QNNQAAZ5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-RAHINBVP.js} +60 -101
- package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-RJH5VQHW.js} +43 -61
- package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-SU2E4AWU.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-SU3TB4NS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-SYE6WMV6.js} +626 -484
- package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-T3P7PMZP.js} +42 -27
- package/dist/cli-bundle/chunks/chunk-T3P7PMZP.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-T4XBKJ3F.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-T6AXEBOP.js} +23 -17
- package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-T6AXEBOP.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-TQ6AX5SQ.js} +58 -69
- package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-TQ6AX5SQ.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-U3S2B7TA.js} +86 -52
- package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-U5TR4N7J.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UMNQZS4H.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-WJA3PXW7.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WRYERRZX.js} +157 -118
- package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-WYOIIFSE.js} +712 -612
- package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-XRYSCRZR.js} +116 -68
- package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js.map → chunk-XRYSCRZR.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-YF746GTH.js} +59 -70
- package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-YF746GTH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-YPWUSH72.js} +390 -312
- package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-YPWUSH72.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-YSDFIY7N.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-YSGTMDWC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-YVKZ3ANP.js} +21 -29
- package/dist/cli-bundle/chunks/chunk-YVKZ3ANP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-Z5F6XZXE.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-Z7RPDF2Y.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-ZFTKYWIF.js} +152 -89
- package/dist/cli-bundle/chunks/chunk-ZFTKYWIF.js.map +7 -0
- package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-2BGBGSVI.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-5GU7OE67.js} +8 -8
- package/dist/cli-bundle/chunks/close-6YODBUIV.js +14 -0
- package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-AFVKPR57.js} +7 -7
- package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-7KLOSYLP.js} +186 -122
- package/dist/cli-bundle/chunks/close-many-7KLOSYLP.js.map +7 -0
- package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-JKUJMHLG.js} +187 -123
- package/dist/cli-bundle/chunks/close-many-JKUJMHLG.js.map +1 -0
- package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-DNWHEBOS.js} +9 -9
- package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-RW23R3VE.js} +9 -9
- package/dist/cli-bundle/chunks/config-AUM5WBYA.js +1072 -0
- package/dist/cli-bundle/chunks/config-AUM5WBYA.js.map +7 -0
- package/dist/cli-bundle/chunks/config-OZWSA2NP.js +1062 -0
- package/dist/cli-bundle/chunks/config-OZWSA2NP.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-OYXRGY7S.js} +12 -12
- package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-PKCEHQY3.js} +12 -12
- package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-L6ODXNUM.js} +320 -199
- package/dist/cli-bundle/chunks/contracts-L6ODXNUM.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-X74F2GSM.js} +321 -200
- package/dist/cli-bundle/chunks/contracts-X74F2GSM.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-6XOR3HKN.js} +5 -5
- package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-I4NCLBR4.js} +5 -5
- package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-PM45M6PE.js} +12 -12
- package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +28 -0
- package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-7YXHYG67.js} +5 -5
- package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-LPISP43T.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-N2T26FME.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-WATKQDE3.js} +5 -5
- package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-6LQ3GLM7.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-Z3X6JZLT.js} +7 -7
- package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-6DCLG52D.js} +10 -10
- package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-Y3ZCUTHK.js} +10 -10
- package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-BNINIMT7.js} +11 -11
- package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-QWE4YYK5.js} +11 -11
- package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-6SGKHS6O.js} +7 -7
- package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-FUYPSOFJ.js} +7 -7
- package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-2Q3K76G2.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-ATLBWXXD.js} +6 -6
- package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-RUYEMNRF.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-TDWSDR66.js} +3 -3
- package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-2WGLX74N.js} +120 -80
- package/dist/cli-bundle/chunks/get-2WGLX74N.js.map +7 -0
- package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-LY6M2JIM.js} +121 -81
- package/dist/cli-bundle/chunks/get-LY6M2JIM.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-4RKHYS3T.js} +535 -371
- package/dist/cli-bundle/chunks/health-4RKHYS3T.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-TMFVNYRA.js} +534 -370
- package/dist/cli-bundle/chunks/health-TMFVNYRA.js.map +7 -0
- package/dist/cli-bundle/chunks/history-CGNQJXFE.js +18 -0
- package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-SGRRS72R.js} +8 -8
- package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-LOED43R3.js} +213 -134
- package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-V5DNAQHH.js} +214 -135
- package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-IRL7WJ3E.js} +9 -9
- package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +19 -0
- package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-4WVBVHFR.js} +124 -84
- package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-PGYQJMGD.js} +123 -83
- package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +7 -0
- package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-4GESW7RM.js} +12 -12
- package/dist/cli-bundle/chunks/init-XIDPABA4.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-4BHWFFUV.js} +9 -9
- package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-4FJY7WIW.js} +9 -9
- package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-472TIOVK.js} +8 -8
- package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-D7BF5CL2.js} +8 -8
- package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-D5STGWI2.js} +71 -46
- package/dist/cli-bundle/chunks/next-D5STGWI2.js.map +1 -0
- package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-SFQZVX2B.js} +70 -45
- package/dist/cli-bundle/chunks/next-SFQZVX2B.js.map +7 -0
- package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-6KNOSLIT.js} +9 -9
- package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-W4UEICGF.js} +9 -9
- package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-JO6V7BXO.js} +373 -279
- package/dist/cli-bundle/chunks/plan-JO6V7BXO.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-MJQW5XK3.js} +372 -278
- package/dist/cli-bundle/chunks/plan-MJQW5XK3.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-3TOTMUR4.js} +27 -19
- package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-WIQY2KCV.js} +28 -20
- package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +1 -0
- package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js +416 -0
- package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js.map +7 -0
- package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js +406 -0
- package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-ROFE2YPC.js} +729 -702
- package/dist/cli-bundle/chunks/register-mutation-ROFE2YPC.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-SJWMVIJ2.js} +730 -703
- package/dist/cli-bundle/chunks/register-mutation-SJWMVIJ2.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-IADFVH53.js} +389 -365
- package/dist/cli-bundle/chunks/register-operations-IADFVH53.js.map +7 -0
- package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js +510 -0
- package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-3QJY43CY.js} +128 -103
- package/dist/cli-bundle/chunks/register-setup-3QJY43CY.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-AJWUSSQX.js} +129 -104
- package/dist/cli-bundle/chunks/register-setup-AJWUSSQX.js.map +1 -0
- package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-44IHMMZZ.js} +9 -9
- package/dist/cli-bundle/chunks/restore-EXHU34EU.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-OLHNLAZY.js} +12 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-TSBK4AY5.js} +12 -12
- package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-IB2NZZWD.js} +7 -7
- package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-VBCELP5G.js} +7 -7
- package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-7UBETML4.js} +10 -10
- package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-R227JOL6.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-FAG7COEH.js} +6 -6
- package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-MCK7PLYS.js} +6 -6
- package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-DRPDZMAO.js} +84 -70
- package/dist/cli-bundle/chunks/telemetry-DRPDZMAO.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-GVVUQSJQ.js} +85 -71
- package/dist/cli-bundle/chunks/telemetry-GVVUQSJQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-QY44WAMR.js} +15 -15
- package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-SY76DZTO.js} +15 -15
- package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js +430 -0
- package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js.map +7 -0
- package/dist/cli-bundle/chunks/test-all-USPJHXFR.js +427 -0
- package/dist/cli-bundle/chunks/test-all-USPJHXFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-MG5VIGSK.js} +185 -147
- package/dist/cli-bundle/chunks/test-runs-MG5VIGSK.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-QIR5MJPL.js} +184 -146
- package/dist/cli-bundle/chunks/test-runs-QIR5MJPL.js.map +7 -0
- package/dist/cli-bundle/chunks/update-A7EICML6.js +24 -0
- package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-IKJZWLQC.js} +15 -15
- package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-BEMTDA2X.js} +84 -69
- package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-BEMTDA2X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-RATAARHU.js} +83 -68
- package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-RATAARHU.js.map} +2 -2
- package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-NWMR3VQL.js} +11 -11
- package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-VU46BLJZ.js} +11 -11
- package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-GAJ6FUSI.js} +451 -321
- package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +1 -0
- package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-NRY6MFXN.js} +450 -320
- package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +7 -0
- package/dist/cli-bundle/main.js +1107 -916
- package/dist/cli-bundle/main.js.map +3 -3
- package/dist/core/config/nested-settings.js +89 -67
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/governance/metadata-coverage.js +20 -28
- package/dist/core/governance/metadata-coverage.js.map +1 -1
- package/dist/core/history/drift-scan.js +93 -81
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/item/item-type-definition.js +14 -14
- package/dist/core/item/item-type-definition.js.map +1 -1
- package/dist/core/item/type-registry.js +114 -99
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/output/mutation-projection.js +42 -26
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +97 -80
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/status-defs-file.js +26 -3
- package/dist/core/schema/status-defs-file.js.map +1 -1
- package/dist/core/search/corpus.js +25 -19
- package/dist/core/search/corpus.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +64 -37
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.js +32 -17
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/helpers.js +31 -28
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/sentry/instrument.js +54 -43
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/shared/memo.d.ts +12 -0
- package/dist/core/shared/memo.js +25 -0
- package/dist/core/shared/memo.js.map +1 -0
- package/dist/core/shared/serialization.js +24 -14
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/shared/time.js +26 -4
- package/dist/core/shared/time.js.map +1 -1
- package/dist/core/store/front-matter-cache.d.ts +5 -0
- package/dist/core/store/front-matter-cache.js +316 -171
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-store.js +33 -26
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings.js +247 -203
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/test/background-runs.js +189 -160
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +71 -99
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/compose.js +51 -42
- package/dist/sdk/compose.js.map +1 -1
- package/docs/AGENT_GUIDE.md +2 -2
- package/docs/ARCHITECTURE.md +2 -2
- package/docs/COMMANDS.md +8 -4
- package/docs/CONFIGURATION.md +1 -1
- package/docs/EXTENSIONS.md +12 -12
- package/docs/ONBOARDING.md +4 -2
- package/docs/README.md +2 -0
- package/docs/examples/starter-extension/README.md +11 -10
- package/marketplace.json +3 -3
- package/package.json +2 -2
- package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
- package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
- package/plugins/pm-claude/.claude-plugin/plugin.json +2 -2
- package/plugins/pm-claude/README.md +6 -3
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
- package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-22WKIL3H.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-AXIDKKAT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JLM7BHI7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WYDHYJPO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
- package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
- package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
- package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
- package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
- package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
- package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
- package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
- package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
- package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
- package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
- package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
- package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
- package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
- package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
- package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
- package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
- package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
- package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
- package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
- package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
- package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +0 -7
- package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js +0 -400
- package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js +0 -410
- package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js +0 -486
- package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
- package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
- package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
- package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
- package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
- package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
- package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
- package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
- package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
- /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-5YWLSPGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-BIML7K2D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-EZESUVJT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-JFG4WQMG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-3W2HJKJX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-4PFVUUYV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-5E7N4T2Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-5IZUBZBR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-5JIWFWOZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-6CDCWKSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-6NYJGMTY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-7CLLC75T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-7LYO6S5A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-A3OQ7TFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-ER4ME5U2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-ERG65A2L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-FH2H3CBD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-FUFFPIYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-GUYNUXQT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-GVJE5T7Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-JBZ2NTKX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KEZOIPCR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-MDHWWBNZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-MEZZZBYX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-NZ7QIUP5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-P5L7Z2O6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-SU2E4AWU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-SU3TB4NS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-T4XBKJ3F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-U5TR4N7J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UMNQZS4H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-WJA3PXW7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-YSDFIY7N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-YSGTMDWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-Z5F6XZXE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-Z7RPDF2Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-2BGBGSVI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-5GU7OE67.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-6YODBUIV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-AFVKPR57.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-DNWHEBOS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-RW23R3VE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-OYXRGY7S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-PKCEHQY3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-6XOR3HKN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-I4NCLBR4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-PM45M6PE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-Z7YCH3BE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-7YXHYG67.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-LPISP43T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-N2T26FME.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-WATKQDE3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-6LQ3GLM7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-Z3X6JZLT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-6DCLG52D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-Y3ZCUTHK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-BNINIMT7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-QWE4YYK5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-6SGKHS6O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-FUYPSOFJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-2Q3K76G2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-ATLBWXXD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-RUYEMNRF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-TDWSDR66.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-CGNQJXFE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-SGRRS72R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-IRL7WJ3E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-N3JK7VBW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-4GESW7RM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-XIDPABA4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-4BHWFFUV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-4FJY7WIW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-472TIOVK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-D7BF5CL2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-6KNOSLIT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-W4UEICGF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-44IHMMZZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-EXHU34EU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-OLHNLAZY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-TSBK4AY5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-IB2NZZWD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-VBCELP5G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-7UBETML4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-R227JOL6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-FAG7COEH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-MCK7PLYS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-QY44WAMR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-SY76DZTO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-A7EICML6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-IKJZWLQC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-NWMR3VQL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-VU46BLJZ.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="02364b53-8625-5d05-90d9-1234e6d63964")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
collectStaleVectorizationIds
|
|
5
5
|
} from "./chunk-ROGZTCCB.js";
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
resolveSearchCorpusFields,
|
|
16
16
|
resolveSettingsWithSemanticRuntimeDefaults,
|
|
17
17
|
resolveVectorStores
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-OGLGI22K.js";
|
|
19
19
|
import {
|
|
20
20
|
applyFilterValueEcho,
|
|
21
21
|
buildContentFilterEcho,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
parseStatusFilterCsv,
|
|
27
27
|
resolveContentFieldFilters,
|
|
28
28
|
resolveMissingMetadataFilters
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-AIKU3IIL.js";
|
|
30
30
|
import {
|
|
31
31
|
hasContentFieldFilter,
|
|
32
32
|
itemMatchesContentFilters
|
|
@@ -35,27 +35,27 @@ import {
|
|
|
35
35
|
hasMissingMetadataFilter,
|
|
36
36
|
itemMatchesMissingMetadata,
|
|
37
37
|
lifecycleClassifierFromStatusRegistry
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-QCDTQCMW.js";
|
|
39
39
|
import {
|
|
40
40
|
parseLimit,
|
|
41
41
|
parsePriority,
|
|
42
42
|
parseType
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-YSGTMDWC.js";
|
|
44
44
|
import {
|
|
45
45
|
collectRegisteredItemFieldNames,
|
|
46
46
|
listAllDocumentCandidatesCached,
|
|
47
47
|
listAllFrontMatter,
|
|
48
48
|
toItemRecord
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-4WB6S4YX.js";
|
|
50
50
|
import {
|
|
51
51
|
isTerminalStatus,
|
|
52
52
|
parseItemDocument
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-YSDFIY7N.js";
|
|
54
54
|
import {
|
|
55
55
|
compareTimestampStrings,
|
|
56
56
|
nowIso,
|
|
57
57
|
resolveIsoOrRelative
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-CXR3CMBQ.js";
|
|
59
59
|
import {
|
|
60
60
|
EXIT_CODE,
|
|
61
61
|
PmCliError,
|
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
runActiveOnReadHooks,
|
|
76
76
|
toNonEmptyString,
|
|
77
77
|
toNonEmptyStringOrUndefined
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-L4SLHV6G.js";
|
|
79
79
|
|
|
80
80
|
// dist/cli/commands/search.js
|
|
81
81
|
import fs from "node:fs/promises";
|
|
@@ -499,8 +499,6 @@ var LONG_QUERY_PHRASE_MULTIPLIER = 6;
|
|
|
499
499
|
var ALL_TERMS_COVERAGE_BONUS = 40;
|
|
500
500
|
var EXACT_ID_MATCH_SCORE = 1e3;
|
|
501
501
|
var SHORT_ID_MATCH_SCORE = 900;
|
|
502
|
-
var IMPLICIT_HYBRID_EMBEDDING_TIMEOUT_MS = 8e3;
|
|
503
|
-
var IMPLICIT_HYBRID_VECTOR_TIMEOUT_MS = 8e3;
|
|
504
502
|
var HIGHLIGHT_OPEN = "\xAB";
|
|
505
503
|
var HIGHLIGHT_CLOSE = "\xBB";
|
|
506
504
|
var HIGHLIGHT_SNIPPET_RADIUS = 60;
|
|
@@ -622,16 +620,6 @@ function classifyImplicitSemanticFallbackReason(error) {
|
|
|
622
620
|
}
|
|
623
621
|
return "error";
|
|
624
622
|
}
|
|
625
|
-
function buildImplicitSemanticFallbackWarning(error) {
|
|
626
|
-
const reason = classifyImplicitSemanticFallbackReason(error);
|
|
627
|
-
if (reason === "timeout") {
|
|
628
|
-
return "search_implicit_semantic_fallback:timeout:using_keyword_mode";
|
|
629
|
-
}
|
|
630
|
-
if (reason === "connection") {
|
|
631
|
-
return "search_implicit_semantic_fallback:connection:using_keyword_mode";
|
|
632
|
-
}
|
|
633
|
-
return "search_implicit_semantic_fallback:error:using_keyword_mode";
|
|
634
|
-
}
|
|
635
623
|
function buildExplicitSemanticFallbackWarning(requestedMode, error) {
|
|
636
624
|
const reason = classifyImplicitSemanticFallbackReason(error);
|
|
637
625
|
return `search_${requestedMode}_fallback:${reason}:using_keyword_mode`;
|
|
@@ -763,7 +751,6 @@ var _testOnlySearchCommand = {
|
|
|
763
751
|
buildExplicitSemanticFallbackWarning,
|
|
764
752
|
buildCompactSearchFilterSummary,
|
|
765
753
|
buildHybridLexicalScore,
|
|
766
|
-
buildImplicitSemanticFallbackWarning,
|
|
767
754
|
buildRerankCorpus,
|
|
768
755
|
buildSemanticHits,
|
|
769
756
|
classifyImplicitSemanticFallbackReason,
|
|
@@ -1475,8 +1462,12 @@ function resolveExtensionVectorAdapter(settings) {
|
|
|
1475
1462
|
if (typeof query !== "function") {
|
|
1476
1463
|
return null;
|
|
1477
1464
|
}
|
|
1465
|
+
const upsert = runtimeDefinition.upsert;
|
|
1466
|
+
const runtimeAdapterName = toOptionalNonEmptyString(runtimeDefinition.name) ?? toOptionalNonEmptyString(resolved.definition.name) ?? adapterName ?? "extension";
|
|
1478
1467
|
return {
|
|
1479
|
-
|
|
1468
|
+
adapterName: runtimeAdapterName,
|
|
1469
|
+
query,
|
|
1470
|
+
...typeof upsert === "function" ? { upsert } : {}
|
|
1480
1471
|
};
|
|
1481
1472
|
}
|
|
1482
1473
|
function normalizeExtensionProviderHits(providerName, raw, filteredById) {
|
|
@@ -1643,52 +1634,151 @@ function buildRerankCorpus(document) {
|
|
|
1643
1634
|
document.body
|
|
1644
1635
|
].map((entry) => typeof entry === "string" ? entry.trim() : "").filter((entry) => entry.length > 0).join("\n");
|
|
1645
1636
|
}
|
|
1646
|
-
async function
|
|
1647
|
-
const semanticLimit = context.limit ?? context.maxResults;
|
|
1648
|
-
const embeddingOptions = context.embeddingTimeoutMs !== void 0 ? { timeout_ms: context.embeddingTimeoutMs } : {};
|
|
1649
|
-
const vectorQueryOptions = context.vectorQueryTimeoutMs !== void 0 ? { timeout_ms: context.vectorQueryTimeoutMs } : {};
|
|
1650
|
-
const queryTrimmed = context.query.trim();
|
|
1637
|
+
async function resolveExpandedSemanticQueries(context, queryTrimmed) {
|
|
1651
1638
|
const baseExpandedQueries = context.queryExpansion.enabled ? buildDeterministicQueryExpansions(queryTrimmed, context.queryExpansion.max_queries) : [queryTrimmed];
|
|
1652
|
-
|
|
1653
|
-
if (context.queryExpansion.enabled) {
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
}
|
|
1666
|
-
|
|
1667
|
-
context.warnings.push(`search_query_expansion_provider_unavailable:${context.queryExpansion.provider}:using_builtin`);
|
|
1639
|
+
const expandedQueries = baseExpandedQueries.length > 0 ? baseExpandedQueries : [queryTrimmed];
|
|
1640
|
+
if (!context.queryExpansion.enabled) {
|
|
1641
|
+
return expandedQueries;
|
|
1642
|
+
}
|
|
1643
|
+
if (context.queryExpansionExtension?.expand) {
|
|
1644
|
+
try {
|
|
1645
|
+
const rawExpansion = await Promise.resolve(context.queryExpansionExtension.expand({
|
|
1646
|
+
query: queryTrimmed,
|
|
1647
|
+
mode: context.requestedMode,
|
|
1648
|
+
settings: context.settings
|
|
1649
|
+
}));
|
|
1650
|
+
return mergeQueryExpansions(expandedQueries, normalizeQueryExpansionOutput(rawExpansion), context.queryExpansion.max_queries);
|
|
1651
|
+
} catch {
|
|
1652
|
+
context.warnings.push(`search_query_expansion_provider_failed:${context.queryExpansionExtension.providerName}:using_builtin`);
|
|
1653
|
+
return expandedQueries;
|
|
1668
1654
|
}
|
|
1669
1655
|
}
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1656
|
+
if (context.queryExpansion.provider && context.queryExpansion.provider !== "openai" && context.queryExpansion.provider !== "ollama") {
|
|
1657
|
+
context.warnings.push(`search_query_expansion_provider_unavailable:${context.queryExpansion.provider}:using_builtin`);
|
|
1658
|
+
}
|
|
1659
|
+
return expandedQueries;
|
|
1660
|
+
}
|
|
1661
|
+
async function executeSemanticVectorQuery(context, semanticVector, semanticLimit, vectorQueryOptions) {
|
|
1662
|
+
if (context.extensionVectorAdapter?.query) {
|
|
1663
|
+
try {
|
|
1664
|
+
return await Promise.resolve(context.extensionVectorAdapter.query({
|
|
1665
|
+
vector: semanticVector,
|
|
1666
|
+
limit: semanticLimit,
|
|
1667
|
+
settings: context.settings
|
|
1668
|
+
}));
|
|
1669
|
+
} catch (error) {
|
|
1670
|
+
if (!context.vectorStore) {
|
|
1671
|
+
throw new PmCliError(`Extension vector adapter query failed and no built-in fallback store is configured (${error instanceof Error ? error.message : String(error)})`, EXIT_CODE.GENERIC_FAILURE);
|
|
1684
1672
|
}
|
|
1685
|
-
|
|
1686
|
-
if (context.vectorStore) {
|
|
1673
|
+
context.warnings.push(`search_vector_adapter_failed:${context.extensionVectorAdapter.adapterName}:using_builtin`);
|
|
1687
1674
|
return await executeVectorQuery(context.vectorStore, semanticVector, semanticLimit, vectorQueryOptions);
|
|
1688
1675
|
}
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1676
|
+
}
|
|
1677
|
+
if (context.vectorStore) {
|
|
1678
|
+
return await executeVectorQuery(context.vectorStore, semanticVector, semanticLimit, vectorQueryOptions);
|
|
1679
|
+
}
|
|
1680
|
+
throw new PmCliError("Semantic search requires either a configured vector store or an extension vector adapter query handler", EXIT_CODE.USAGE);
|
|
1681
|
+
}
|
|
1682
|
+
function buildRerankCandidateContexts(hybridHits, filteredById, topK) {
|
|
1683
|
+
const sortedForCandidates = [...hybridHits].sort((left, right) => {
|
|
1684
|
+
if (left.score !== right.score) {
|
|
1685
|
+
return right.score - left.score;
|
|
1686
|
+
}
|
|
1687
|
+
return left.item.id.localeCompare(right.item.id);
|
|
1688
|
+
});
|
|
1689
|
+
return sortedForCandidates.slice(0, topK).map((hit) => {
|
|
1690
|
+
const document = filteredById.get(hit.item.id);
|
|
1691
|
+
return document ? { hit, text: buildRerankCorpus(document) } : null;
|
|
1692
|
+
}).filter((entry) => entry !== null);
|
|
1693
|
+
}
|
|
1694
|
+
async function resolveExtensionRerankScores(context, queryTrimmed, candidateContexts) {
|
|
1695
|
+
if (!context.rerankExtension?.rerank) {
|
|
1696
|
+
return null;
|
|
1697
|
+
}
|
|
1698
|
+
try {
|
|
1699
|
+
const rawRerank = await Promise.resolve(context.rerankExtension.rerank({
|
|
1700
|
+
query: queryTrimmed,
|
|
1701
|
+
mode: "hybrid",
|
|
1702
|
+
model: context.rerank.model,
|
|
1703
|
+
top_k: context.rerank.top_k,
|
|
1704
|
+
settings: context.settings,
|
|
1705
|
+
candidates: candidateContexts.map((entry) => ({
|
|
1706
|
+
id: entry.hit.item.id,
|
|
1707
|
+
text: entry.text,
|
|
1708
|
+
score: entry.hit.score
|
|
1709
|
+
}))
|
|
1710
|
+
}));
|
|
1711
|
+
const normalizedRerank = normalizeRerankOutput(rawRerank);
|
|
1712
|
+
if (normalizedRerank.length > 0) {
|
|
1713
|
+
return new Map(normalizedRerank.map((entry) => [entry.id, entry.score]));
|
|
1714
|
+
}
|
|
1715
|
+
context.warnings.push(`search_rerank_provider_invalid_response:${context.rerankExtension.providerName}:using_builtin`);
|
|
1716
|
+
return null;
|
|
1717
|
+
} catch {
|
|
1718
|
+
context.warnings.push(`search_rerank_provider_failed:${context.rerankExtension.providerName}:using_builtin`);
|
|
1719
|
+
return null;
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
async function resolveRerankScores(context, queryTrimmed, candidateContexts) {
|
|
1723
|
+
const extensionScores = await resolveExtensionRerankScores(context, queryTrimmed, candidateContexts);
|
|
1724
|
+
if (extensionScores) {
|
|
1725
|
+
return extensionScores;
|
|
1726
|
+
}
|
|
1727
|
+
const rerankCandidates = candidateContexts.map((entry) => ({
|
|
1728
|
+
id: entry.hit.item.id,
|
|
1729
|
+
text: entry.text
|
|
1730
|
+
}));
|
|
1731
|
+
try {
|
|
1732
|
+
return await rerankCandidatesWithEmbeddings(context.provider, context.rerank.model, queryTrimmed, rerankCandidates, context.embeddingTimeoutMs);
|
|
1733
|
+
} catch {
|
|
1734
|
+
context.warnings.push("search_rerank_failed:using_hybrid_scores");
|
|
1735
|
+
return null;
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
function applyRerankScores(hybridHits, rerankScores) {
|
|
1739
|
+
const rerankedIds = new Set(rerankScores.keys());
|
|
1740
|
+
const rerankedHits = hybridHits.map((hit) => {
|
|
1741
|
+
const rerankScore = rerankScores.get(hit.item.id);
|
|
1742
|
+
if (rerankScore === void 0) {
|
|
1743
|
+
return hit;
|
|
1744
|
+
}
|
|
1745
|
+
const matchedFields = new Set(hit.matched_fields);
|
|
1746
|
+
matchedFields.add("rerank");
|
|
1747
|
+
return {
|
|
1748
|
+
...hit,
|
|
1749
|
+
score: rerankScore,
|
|
1750
|
+
matched_fields: [...matchedFields].sort((left, right) => left.localeCompare(right))
|
|
1751
|
+
};
|
|
1752
|
+
});
|
|
1753
|
+
rerankedHits.sort((left, right) => {
|
|
1754
|
+
const leftWasReranked = rerankedIds.has(left.item.id);
|
|
1755
|
+
const rightWasReranked = rerankedIds.has(right.item.id);
|
|
1756
|
+
if (leftWasReranked !== rightWasReranked) {
|
|
1757
|
+
return leftWasReranked ? -1 : 1;
|
|
1758
|
+
}
|
|
1759
|
+
if (left.score !== right.score) {
|
|
1760
|
+
return right.score - left.score;
|
|
1761
|
+
}
|
|
1762
|
+
return left.item.id.localeCompare(right.item.id);
|
|
1763
|
+
});
|
|
1764
|
+
return rerankedHits;
|
|
1765
|
+
}
|
|
1766
|
+
async function applyHybridRerank(context, queryTrimmed, hybridHits, filteredById) {
|
|
1767
|
+
if (!context.rerank.enabled || hybridHits.length <= 1) {
|
|
1768
|
+
return hybridHits;
|
|
1769
|
+
}
|
|
1770
|
+
const candidateContexts = buildRerankCandidateContexts(hybridHits, filteredById, context.rerank.top_k);
|
|
1771
|
+
const rerankScores = await resolveRerankScores(context, queryTrimmed, candidateContexts);
|
|
1772
|
+
return rerankScores && rerankScores.size > 0 ? applyRerankScores(hybridHits, rerankScores) : hybridHits;
|
|
1773
|
+
}
|
|
1774
|
+
async function computeSemanticOrHybridHits(context) {
|
|
1775
|
+
const semanticLimit = context.limit ?? context.maxResults;
|
|
1776
|
+
const embeddingOptions = context.embeddingTimeoutMs !== void 0 ? { timeout_ms: context.embeddingTimeoutMs } : {};
|
|
1777
|
+
const vectorQueryOptions = context.vectorQueryTimeoutMs !== void 0 ? { timeout_ms: context.vectorQueryTimeoutMs } : {};
|
|
1778
|
+
const queryTrimmed = context.query.trim();
|
|
1779
|
+
const expandedQueries = await resolveExpandedSemanticQueries(context, queryTrimmed);
|
|
1780
|
+
const queryVectors = await executeEmbeddingRequest(context.provider, expandedQueries, embeddingOptions);
|
|
1781
|
+
const queryVectorGroups = await Promise.all(queryVectors.map(async (semanticVector) => await executeSemanticVectorQuery(context, semanticVector, semanticLimit, vectorQueryOptions)));
|
|
1692
1782
|
const vectorHits = mergeVectorHitsById(queryVectorGroups);
|
|
1693
1783
|
const filteredById = new Map(context.filteredDocuments.map((document) => [document.metadata.id, document]));
|
|
1694
1784
|
const { semanticHits, semanticScores } = buildSemanticHits(vectorHits, filteredById);
|
|
@@ -1696,86 +1786,7 @@ async function computeSemanticOrHybridHits(context) {
|
|
|
1696
1786
|
if (context.requestedMode === "semantic") {
|
|
1697
1787
|
return { hits: forceExactIdHitsToTop(semanticHits, context.keywordHits), vectorMatchCount };
|
|
1698
1788
|
}
|
|
1699
|
-
|
|
1700
|
-
if (context.rerank.enabled && hybridHits.length > 1) {
|
|
1701
|
-
const sortedForCandidates = [...hybridHits].sort((left, right) => {
|
|
1702
|
-
if (left.score !== right.score) {
|
|
1703
|
-
return right.score - left.score;
|
|
1704
|
-
}
|
|
1705
|
-
return left.item.id.localeCompare(right.item.id);
|
|
1706
|
-
});
|
|
1707
|
-
const candidateHits = sortedForCandidates.slice(0, context.rerank.top_k);
|
|
1708
|
-
const candidateContexts = candidateHits.map((hit) => {
|
|
1709
|
-
const document = filteredById.get(hit.item.id);
|
|
1710
|
-
if (!document) {
|
|
1711
|
-
return null;
|
|
1712
|
-
}
|
|
1713
|
-
return { hit, text: buildRerankCorpus(document) };
|
|
1714
|
-
}).filter((entry) => entry !== null);
|
|
1715
|
-
const rerankCandidates = candidateContexts.map((entry) => ({
|
|
1716
|
-
id: entry.hit.item.id,
|
|
1717
|
-
text: entry.text
|
|
1718
|
-
}));
|
|
1719
|
-
let rerankScores = null;
|
|
1720
|
-
if (context.rerankExtension?.rerank) {
|
|
1721
|
-
try {
|
|
1722
|
-
const rawRerank = await Promise.resolve(context.rerankExtension.rerank({
|
|
1723
|
-
query: queryTrimmed,
|
|
1724
|
-
mode: "hybrid",
|
|
1725
|
-
model: context.rerank.model,
|
|
1726
|
-
top_k: context.rerank.top_k,
|
|
1727
|
-
settings: context.settings,
|
|
1728
|
-
candidates: candidateContexts.map((entry) => ({
|
|
1729
|
-
id: entry.hit.item.id,
|
|
1730
|
-
text: entry.text,
|
|
1731
|
-
score: entry.hit.score
|
|
1732
|
-
}))
|
|
1733
|
-
}));
|
|
1734
|
-
const normalizedRerank = normalizeRerankOutput(rawRerank);
|
|
1735
|
-
if (normalizedRerank.length > 0) {
|
|
1736
|
-
rerankScores = new Map(normalizedRerank.map((entry) => [entry.id, entry.score]));
|
|
1737
|
-
} else {
|
|
1738
|
-
context.warnings.push(`search_rerank_provider_invalid_response:${context.rerankExtension.providerName}:using_builtin`);
|
|
1739
|
-
}
|
|
1740
|
-
} catch {
|
|
1741
|
-
context.warnings.push(`search_rerank_provider_failed:${context.rerankExtension.providerName}:using_builtin`);
|
|
1742
|
-
}
|
|
1743
|
-
}
|
|
1744
|
-
if (!rerankScores) {
|
|
1745
|
-
try {
|
|
1746
|
-
rerankScores = await rerankCandidatesWithEmbeddings(context.provider, context.rerank.model, queryTrimmed, rerankCandidates, context.embeddingTimeoutMs);
|
|
1747
|
-
} catch {
|
|
1748
|
-
context.warnings.push("search_rerank_failed:using_hybrid_scores");
|
|
1749
|
-
}
|
|
1750
|
-
}
|
|
1751
|
-
if (rerankScores && rerankScores.size > 0) {
|
|
1752
|
-
const rerankedIds = new Set(rerankScores.keys());
|
|
1753
|
-
hybridHits = hybridHits.map((hit) => {
|
|
1754
|
-
const rerankScore = rerankScores.get(hit.item.id);
|
|
1755
|
-
if (rerankScore === void 0) {
|
|
1756
|
-
return hit;
|
|
1757
|
-
}
|
|
1758
|
-
const matchedFields = new Set(hit.matched_fields);
|
|
1759
|
-
matchedFields.add("rerank");
|
|
1760
|
-
return {
|
|
1761
|
-
...hit,
|
|
1762
|
-
score: rerankScore,
|
|
1763
|
-
matched_fields: [...matchedFields].sort((left, right) => left.localeCompare(right))
|
|
1764
|
-
};
|
|
1765
|
-
});
|
|
1766
|
-
hybridHits.sort((left, right) => {
|
|
1767
|
-
const leftWasReranked = rerankedIds.has(left.item.id);
|
|
1768
|
-
const rightWasReranked = rerankedIds.has(right.item.id);
|
|
1769
|
-
if (leftWasReranked !== rightWasReranked) {
|
|
1770
|
-
return leftWasReranked ? -1 : 1;
|
|
1771
|
-
}
|
|
1772
|
-
if (left.score !== right.score) {
|
|
1773
|
-
return right.score - left.score;
|
|
1774
|
-
}
|
|
1775
|
-
return left.item.id.localeCompare(right.item.id);
|
|
1776
|
-
});
|
|
1777
|
-
}
|
|
1778
|
-
}
|
|
1789
|
+
const hybridHits = await applyHybridRerank(context, queryTrimmed, combineHybridHits(filteredById, semanticScores, context.keywordHits, context.hybridSemanticWeight), filteredById);
|
|
1779
1790
|
return {
|
|
1780
1791
|
// GH-281: applied LAST (after any rerank reordering) so an exact full-ID /
|
|
1781
1792
|
// short-ID keyword match always ranks #1 in hybrid mode regardless of the
|
|
@@ -1886,7 +1897,15 @@ function projectSearchHits(hits, projection) {
|
|
|
1886
1897
|
return projected;
|
|
1887
1898
|
});
|
|
1888
1899
|
}
|
|
1889
|
-
|
|
1900
|
+
function resolveQueryExpansionExtension(queryExpansion) {
|
|
1901
|
+
const provider = resolveExtensionSearchProviderByName(queryExpansion.provider ?? void 0);
|
|
1902
|
+
return provider?.queryExpansion ? { providerName: provider.providerName, expand: provider.queryExpansion } : null;
|
|
1903
|
+
}
|
|
1904
|
+
function resolveRerankExtension(settings) {
|
|
1905
|
+
const provider = resolveExtensionSearchProviderByName(toOptionalNonEmptyString(settings.search?.provider));
|
|
1906
|
+
return provider?.rerank ? { providerName: provider.providerName, rerank: provider.rerank } : null;
|
|
1907
|
+
}
|
|
1908
|
+
function prepareSearchInput(rawQuery, rawOptions) {
|
|
1890
1909
|
const inlineWarnings = [];
|
|
1891
1910
|
const inlineParse = parseInlineQueryFilters(rawQuery);
|
|
1892
1911
|
const hasInlineFilters = Object.keys(inlineParse.inlineFilters).length > 0;
|
|
@@ -1900,310 +1919,380 @@ async function runSearch(rawQuery, rawOptions, global) {
|
|
|
1900
1919
|
}
|
|
1901
1920
|
const query = hasInlineFilters ? inlineParse.residualQuery : rawQuery;
|
|
1902
1921
|
const options = applyInlineQueryFilters(rawOptions, inlineParse.inlineFilters, inlineWarnings);
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1922
|
+
return {
|
|
1923
|
+
query,
|
|
1924
|
+
options,
|
|
1925
|
+
inlineWarnings,
|
|
1926
|
+
highlight: options.highlight === true,
|
|
1927
|
+
includeLinked: parseIncludeLinked(options.includeLinked),
|
|
1928
|
+
titleExact: parseTitleExact(options.titleExact),
|
|
1929
|
+
phraseExact: parsePhraseExact(options.phraseExact),
|
|
1930
|
+
matchMode: parseMatchMode(typeof options.matchMode === "string" ? options.matchMode : void 0),
|
|
1931
|
+
minScoreOverride: parseMinScoreOverride(options.minScore),
|
|
1932
|
+
countOnly: options.count === true,
|
|
1933
|
+
tokens: parseTokens(query),
|
|
1934
|
+
normalizedQuery: normalizeSearchPhrase(query),
|
|
1935
|
+
limit: parseLimit(options.limit),
|
|
1936
|
+
projection: parseProjectionConfig(options),
|
|
1937
|
+
modeWasExplicit: typeof options.mode === "string" && options.mode.trim().length > 0
|
|
1938
|
+
};
|
|
1939
|
+
}
|
|
1940
|
+
async function resolveSearchRuntimeContext(prepared, global) {
|
|
1915
1941
|
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
1916
1942
|
if (!await pathExists(getSettingsPath(pmRoot))) {
|
|
1917
1943
|
throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
|
|
1918
1944
|
}
|
|
1919
1945
|
const storedSettings = await readSettings(pmRoot);
|
|
1920
|
-
const
|
|
1921
|
-
const settings = runtimeDefaultsResolution.settings;
|
|
1946
|
+
const settings = resolveSettingsWithSemanticRuntimeDefaults(storedSettings).settings;
|
|
1922
1947
|
const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
|
|
1923
1948
|
const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
|
|
1924
|
-
validateSearchProjectionFields(projection, runtimeFieldRegistry);
|
|
1925
|
-
const runtimeFieldFilters = collectRuntimeFilterValues(options, runtimeFieldRegistry, "search");
|
|
1926
|
-
const statusFilter = parseStatusFilterCsv(typeof options.status === "string" ? options.status : void 0, statusRegistry, { strict: true });
|
|
1949
|
+
validateSearchProjectionFields(prepared.projection, runtimeFieldRegistry);
|
|
1950
|
+
const runtimeFieldFilters = collectRuntimeFilterValues(prepared.options, runtimeFieldRegistry, "search");
|
|
1927
1951
|
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
1928
|
-
const maxResults = resolveSearchMaxResults(settings);
|
|
1929
|
-
const scoreThreshold = minScoreOverride ?? resolveSearchScoreThreshold(settings);
|
|
1930
|
-
const semanticWeightProvided = options.semanticWeight !== void 0;
|
|
1931
|
-
const semanticWeightOverride = parseSemanticWeightOverride(options.semanticWeight);
|
|
1932
|
-
const hybridSemanticWeight = semanticWeightOverride ?? resolveHybridSemanticWeight(settings);
|
|
1933
|
-
const tuning = resolveSearchTuning(settings);
|
|
1934
1952
|
const providerResolution = resolveEmbeddingProviders(settings);
|
|
1935
1953
|
const vectorResolution = resolveVectorStores(settings);
|
|
1936
1954
|
const extensionSearchProvider = resolveExtensionSearchProvider(settings);
|
|
1937
1955
|
const extensionVectorAdapter = resolveExtensionVectorAdapter(settings);
|
|
1938
|
-
const
|
|
1939
|
-
configuredProvider: toOptionalNonEmptyString(settings.search?.provider),
|
|
1940
|
-
hasEmbeddingProvider: providerResolution.active !== null,
|
|
1941
|
-
hasExtensionSearchProvider: extensionSearchProvider !== null
|
|
1942
|
-
});
|
|
1956
|
+
const semanticWeightOverride = parseSemanticWeightOverride(prepared.options.semanticWeight);
|
|
1943
1957
|
const queryExpansion = resolveQueryExpansionConfig(settings, providerResolution.active?.name ?? null);
|
|
1944
1958
|
const rerank = resolveRerankConfig(settings, providerResolution.active?.model ?? toOptionalNonEmptyString(settings.search?.embedding_model) ?? "text-embedding-3-small");
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1959
|
+
return {
|
|
1960
|
+
pmRoot,
|
|
1961
|
+
settings,
|
|
1962
|
+
statusRegistry,
|
|
1963
|
+
runtimeFieldRegistry,
|
|
1964
|
+
runtimeFieldFilters,
|
|
1965
|
+
typeRegistry,
|
|
1966
|
+
maxResults: resolveSearchMaxResults(settings),
|
|
1967
|
+
scoreThreshold: prepared.minScoreOverride ?? resolveSearchScoreThreshold(settings),
|
|
1968
|
+
semanticWeightProvided: prepared.options.semanticWeight !== void 0,
|
|
1969
|
+
semanticWeightOverride,
|
|
1970
|
+
hybridSemanticWeight: semanticWeightOverride ?? resolveHybridSemanticWeight(settings),
|
|
1971
|
+
tuning: resolveSearchTuning(settings),
|
|
1972
|
+
providerResolution,
|
|
1973
|
+
vectorResolution,
|
|
1974
|
+
extensionSearchProvider,
|
|
1975
|
+
extensionVectorAdapter,
|
|
1976
|
+
bm25Mode: resolveBuiltInBm25Mode({
|
|
1977
|
+
configuredProvider: toOptionalNonEmptyString(settings.search?.provider),
|
|
1978
|
+
hasEmbeddingProvider: providerResolution.active !== null,
|
|
1979
|
+
hasExtensionSearchProvider: extensionSearchProvider !== null
|
|
1980
|
+
}),
|
|
1981
|
+
queryExpansion,
|
|
1982
|
+
queryExpansionExtension: resolveQueryExpansionExtension(queryExpansion),
|
|
1983
|
+
rerank,
|
|
1984
|
+
rerankExtension: resolveRerankExtension(settings),
|
|
1985
|
+
effectiveMode: parseMode(prepared.options.mode, {
|
|
1986
|
+
hasProvider: providerResolution.active !== null || extensionSearchProvider !== null,
|
|
1987
|
+
hasVectorStore: vectorResolution.active !== null || extensionVectorAdapter !== null
|
|
1988
|
+
})
|
|
1989
|
+
};
|
|
1990
|
+
}
|
|
1991
|
+
async function loadFilteredSearchCorpus(prepared, runtime) {
|
|
1992
|
+
const loadedDocuments = await loadDocuments(runtime.pmRoot, runtime.settings.item_format ?? "toon", runtime.typeRegistry.type_to_folder, runtime.settings.schema);
|
|
1993
|
+
const statusFilter = parseStatusFilterCsv(typeof prepared.options.status === "string" ? prepared.options.status : void 0, runtime.statusRegistry, { strict: true });
|
|
1994
|
+
const lifecycleClassifier = lifecycleClassifierFromStatusRegistry(runtime.statusRegistry);
|
|
1995
|
+
const metadataFilteredDocuments = applyFilters(loadedDocuments.documents, prepared.options, runtime.typeRegistry, runtime.runtimeFieldFilters, statusFilter, lifecycleClassifier);
|
|
1996
|
+
return {
|
|
1997
|
+
warnings: loadedDocuments.warnings,
|
|
1998
|
+
allDocuments: loadedDocuments.documents,
|
|
1999
|
+
filteredDocuments: applyExactQueryFilters(metadataFilteredDocuments, prepared.normalizedQuery, {
|
|
2000
|
+
titleExact: prepared.titleExact,
|
|
2001
|
+
phraseExact: prepared.phraseExact || prepared.matchMode === "exact"
|
|
2002
|
+
})
|
|
2003
|
+
};
|
|
2004
|
+
}
|
|
2005
|
+
async function collectLinkedCorpusById(includeLinked, effectiveMode, filteredDocuments) {
|
|
2006
|
+
const linkedCorpusById = /* @__PURE__ */ new Map();
|
|
2007
|
+
if (!includeLinked || effectiveMode !== "keyword" && effectiveMode !== "hybrid") {
|
|
2008
|
+
return linkedCorpusById;
|
|
1957
2009
|
}
|
|
1958
|
-
|
|
1959
|
-
|
|
2010
|
+
const projectRoot = process.cwd();
|
|
2011
|
+
const linkedCorpusRoots = await resolveLinkedCorpusRoots(projectRoot, resolveGlobalPmRoot(projectRoot));
|
|
2012
|
+
const linkedCorpusEntries = await Promise.all(filteredDocuments.map(async (document) => [document.metadata.id, await loadLinkedCorpus(document, linkedCorpusRoots)]));
|
|
2013
|
+
for (const [id, corpus] of linkedCorpusEntries) {
|
|
2014
|
+
linkedCorpusById.set(id, corpus);
|
|
2015
|
+
}
|
|
2016
|
+
return linkedCorpusById;
|
|
2017
|
+
}
|
|
2018
|
+
async function computeKeywordSearchHits(prepared, runtime, filteredDocuments) {
|
|
2019
|
+
const linkedCorpusById = await collectLinkedCorpusById(prepared.includeLinked, runtime.effectiveMode, filteredDocuments);
|
|
2020
|
+
const applyCoverageBonus = prepared.matchMode === "or";
|
|
2021
|
+
return filteredDocuments.map((document) => buildHybridLexicalScore(document, prepared.tokens, prepared.normalizedQuery, prepared.includeLinked, linkedCorpusById, runtime.tuning, runtime.settings.id_prefix, applyCoverageBonus)).filter((entry) => entry !== null).filter((entry) => prepared.matchMode !== "and" || entry.matched_all_terms === true);
|
|
2022
|
+
}
|
|
2023
|
+
function buildEmptySearchResultFromContext(response, countOnly) {
|
|
2024
|
+
return emptySearchResult(response.query, response.effectiveMode, response.matchMode, response.options, response.includeLinked, response.scoreThreshold, response.hybridSemanticWeight, response.queryExpansion, response.rerank, response.projection, response.warnings, response.runtimeFieldFilters, countOnly);
|
|
2025
|
+
}
|
|
2026
|
+
async function executeBuiltInBm25Search(prepared, runtime, filteredDocuments, keywordHits, warnings) {
|
|
2027
|
+
if (runtime.bm25Mode === null || runtime.effectiveMode === "keyword") {
|
|
2028
|
+
return null;
|
|
1960
2029
|
}
|
|
1961
|
-
const
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
2030
|
+
const hits = computeBuiltInBm25Hits({
|
|
2031
|
+
requestedMode: runtime.effectiveMode,
|
|
2032
|
+
query: prepared.query,
|
|
2033
|
+
filteredDocuments,
|
|
2034
|
+
keywordHits,
|
|
2035
|
+
corpusFields: resolveSearchCorpusFields(runtime.settings),
|
|
2036
|
+
bm25Params: resolveBm25Params(runtime.settings),
|
|
2037
|
+
hybridSemanticWeight: runtime.hybridSemanticWeight
|
|
1969
2038
|
});
|
|
1970
|
-
if (
|
|
1971
|
-
|
|
2039
|
+
if (runtime.bm25Mode === "auto-fallback") {
|
|
2040
|
+
warnings.push(`search_${runtime.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`);
|
|
1972
2041
|
}
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
if (
|
|
1977
|
-
|
|
1978
|
-
const linkedCorpusEntries = await Promise.all(filteredDocuments.map(async (document) => [document.metadata.id, await loadLinkedCorpus(document, linkedCorpusRoots)]));
|
|
1979
|
-
for (const [id, corpus] of linkedCorpusEntries) {
|
|
1980
|
-
linkedCorpusById.set(id, corpus);
|
|
1981
|
-
}
|
|
2042
|
+
return hits;
|
|
2043
|
+
}
|
|
2044
|
+
async function executeExtensionSearchProvider(prepared, runtime, filteredDocuments, filteredById) {
|
|
2045
|
+
if (!runtime.extensionSearchProvider) {
|
|
2046
|
+
return null;
|
|
1982
2047
|
}
|
|
1983
|
-
const
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
let hits = keywordHits;
|
|
1998
|
-
const useBuiltInBm25 = bm25Mode !== null && effectiveMode !== "keyword";
|
|
1999
|
-
if (bm25Mode !== null && effectiveMode !== "keyword") {
|
|
2000
|
-
hits = computeBuiltInBm25Hits({
|
|
2001
|
-
requestedMode: effectiveMode,
|
|
2002
|
-
query,
|
|
2003
|
-
filteredDocuments,
|
|
2004
|
-
keywordHits,
|
|
2005
|
-
corpusFields: resolveSearchCorpusFields(settings),
|
|
2006
|
-
bm25Params: resolveBm25Params(settings),
|
|
2007
|
-
hybridSemanticWeight
|
|
2008
|
-
});
|
|
2009
|
-
if (bm25Mode === "auto-fallback") {
|
|
2010
|
-
warnings.push(`search_${effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`);
|
|
2048
|
+
const canUseBuiltInSemantic = runtime.providerResolution.active !== null && (runtime.vectorResolution.active !== null || runtime.extensionVectorAdapter !== null);
|
|
2049
|
+
try {
|
|
2050
|
+
const providerResponse = await Promise.resolve(runtime.extensionSearchProvider.query({
|
|
2051
|
+
query: prepared.query,
|
|
2052
|
+
mode: runtime.effectiveMode,
|
|
2053
|
+
tokens: prepared.tokens,
|
|
2054
|
+
options: prepared.options,
|
|
2055
|
+
settings: runtime.settings,
|
|
2056
|
+
documents: filteredDocuments
|
|
2057
|
+
}));
|
|
2058
|
+
return normalizeExtensionProviderHits(runtime.extensionSearchProvider.providerName, providerResponse, filteredById);
|
|
2059
|
+
} catch (error) {
|
|
2060
|
+
if (!canUseBuiltInSemantic) {
|
|
2061
|
+
throw new PmCliError(`Extension search provider "${runtime.extensionSearchProvider.providerName}" failed: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
|
|
2011
2062
|
}
|
|
2063
|
+
return null;
|
|
2012
2064
|
}
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
}
|
|
2018
|
-
try {
|
|
2019
|
-
if (!extensionSearchProvider) {
|
|
2020
|
-
requireSemanticDependencies(effectiveMode, providerResolution, vectorResolution, extensionVectorAdapter !== null);
|
|
2021
|
-
}
|
|
2022
|
-
if (filteredDocuments.length === 0 || limit === 0) {
|
|
2023
|
-
return emptySearchResult(query, effectiveMode, matchMode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters, countOnly);
|
|
2024
|
-
}
|
|
2025
|
-
const filteredById = new Map(filteredDocuments.map((document) => [document.metadata.id, document]));
|
|
2026
|
-
const canUseBuiltInSemantic = providerResolution.active !== null && (vectorResolution.active !== null || extensionVectorAdapter !== null);
|
|
2027
|
-
if (extensionSearchProvider) {
|
|
2028
|
-
try {
|
|
2029
|
-
const providerResponse = await Promise.resolve(extensionSearchProvider.query({
|
|
2030
|
-
query,
|
|
2031
|
-
mode: effectiveMode,
|
|
2032
|
-
tokens,
|
|
2033
|
-
options,
|
|
2034
|
-
settings,
|
|
2035
|
-
documents: filteredDocuments
|
|
2036
|
-
}));
|
|
2037
|
-
hits = normalizeExtensionProviderHits(extensionSearchProvider.providerName, providerResponse, filteredById);
|
|
2038
|
-
} catch (error) {
|
|
2039
|
-
if (!canUseBuiltInSemantic) {
|
|
2040
|
-
throw new PmCliError(`Extension search provider "${extensionSearchProvider.providerName}" failed: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
|
|
2041
|
-
}
|
|
2042
|
-
}
|
|
2043
|
-
}
|
|
2044
|
-
if (hits === keywordHits) {
|
|
2045
|
-
const implicitHybridMode = !modeWasExplicit && effectiveMode === "hybrid";
|
|
2046
|
-
const { provider, vectorStore } = requireSemanticDependencies(effectiveMode, providerResolution, vectorResolution, extensionVectorAdapter !== null);
|
|
2047
|
-
const semanticResult = await computeSemanticOrHybridHits({
|
|
2048
|
-
requestedMode: effectiveMode,
|
|
2049
|
-
query,
|
|
2050
|
-
filteredDocuments,
|
|
2051
|
-
keywordHits,
|
|
2052
|
-
hybridSemanticWeight,
|
|
2053
|
-
limit,
|
|
2054
|
-
maxResults,
|
|
2055
|
-
provider,
|
|
2056
|
-
vectorStore,
|
|
2057
|
-
extensionVectorAdapter,
|
|
2058
|
-
queryExpansion,
|
|
2059
|
-
queryExpansionExtension,
|
|
2060
|
-
rerank,
|
|
2061
|
-
rerankExtension,
|
|
2062
|
-
warnings,
|
|
2063
|
-
settings,
|
|
2064
|
-
/* c8 ignore next 5 -- reserved for future implicit-hybrid auto-mode; current parseMode defaults keyword when mode is omitted */
|
|
2065
|
-
...implicitHybridMode ? {
|
|
2066
|
-
embeddingTimeoutMs: IMPLICIT_HYBRID_EMBEDDING_TIMEOUT_MS,
|
|
2067
|
-
vectorQueryTimeoutMs: IMPLICIT_HYBRID_VECTOR_TIMEOUT_MS
|
|
2068
|
-
} : {}
|
|
2069
|
-
});
|
|
2070
|
-
hits = semanticResult.hits;
|
|
2071
|
-
if (semanticResult.vectorMatchCount === 0) {
|
|
2072
|
-
if (effectiveMode === "semantic") {
|
|
2073
|
-
hits = keywordHits;
|
|
2074
|
-
}
|
|
2075
|
-
warnings.push(`search_${effectiveMode}_degraded:no_vector_matches:results_are_lexical`);
|
|
2076
|
-
}
|
|
2077
|
-
}
|
|
2078
|
-
} catch (error) {
|
|
2079
|
-
const fallbackWarning = modeWasExplicit ? buildExplicitSemanticFallbackWarning(effectiveMode, error) : buildImplicitSemanticFallbackWarning(error);
|
|
2080
|
-
effectiveMode = "keyword";
|
|
2081
|
-
hits = keywordHits;
|
|
2082
|
-
warnings.push(fallbackWarning);
|
|
2083
|
-
}
|
|
2065
|
+
}
|
|
2066
|
+
function maybeApplyNoVectorFallback(effectiveMode, semanticResult, keywordHits, warnings) {
|
|
2067
|
+
if (semanticResult.vectorMatchCount > 0) {
|
|
2068
|
+
return semanticResult.hits;
|
|
2084
2069
|
}
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
const
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2070
|
+
warnings.push(`search_${effectiveMode}_degraded:no_vector_matches:results_are_lexical`);
|
|
2071
|
+
return effectiveMode === "semantic" ? keywordHits : semanticResult.hits;
|
|
2072
|
+
}
|
|
2073
|
+
async function prepareBuiltInSemanticSearch(runtime, effectiveMode, filteredDocuments, warnings, modeWasExplicit) {
|
|
2074
|
+
const builtInSemanticWillRun = !runtime.extensionSearchProvider && runtime.providerResolution.active !== null && (runtime.vectorResolution.active !== null || runtime.extensionVectorAdapter !== null);
|
|
2075
|
+
if (modeWasExplicit && builtInSemanticWillRun) {
|
|
2076
|
+
await maybeEmitVectorIndexStaleWarning(runtime.pmRoot, filteredDocuments, warnings);
|
|
2077
|
+
}
|
|
2078
|
+
if (!runtime.extensionSearchProvider) {
|
|
2079
|
+
requireSemanticDependencies(effectiveMode, runtime.providerResolution, runtime.vectorResolution, runtime.extensionVectorAdapter !== null);
|
|
2080
|
+
}
|
|
2081
|
+
}
|
|
2082
|
+
async function executeSemanticSearch(input) {
|
|
2083
|
+
const { prepared, runtime, filteredDocuments, keywordHits, warnings, modeWasExplicit } = input;
|
|
2084
|
+
let hits = keywordHits;
|
|
2085
|
+
const bm25Hits = await executeBuiltInBm25Search(prepared, runtime, filteredDocuments, keywordHits, warnings);
|
|
2086
|
+
const semanticMode = runtime.effectiveMode;
|
|
2087
|
+
if (bm25Hits !== null || semanticMode === "keyword") {
|
|
2088
|
+
return { effectiveMode: runtime.effectiveMode, hits: bm25Hits ?? hits };
|
|
2089
|
+
}
|
|
2090
|
+
try {
|
|
2091
|
+
await prepareBuiltInSemanticSearch(runtime, semanticMode, filteredDocuments, warnings, modeWasExplicit);
|
|
2092
|
+
if (filteredDocuments.length === 0 || prepared.limit === 0) {
|
|
2093
|
+
return { effectiveMode: runtime.effectiveMode, hits: [] };
|
|
2094
|
+
}
|
|
2095
|
+
const filteredById = new Map(filteredDocuments.map((document) => [document.metadata.id, document]));
|
|
2096
|
+
hits = await executeExtensionSearchProvider(prepared, runtime, filteredDocuments, filteredById) ?? hits;
|
|
2097
|
+
if (hits === keywordHits) {
|
|
2098
|
+
const { provider, vectorStore } = requireSemanticDependencies(semanticMode, runtime.providerResolution, runtime.vectorResolution, runtime.extensionVectorAdapter !== null);
|
|
2099
|
+
const semanticResult = await computeSemanticOrHybridHits({
|
|
2100
|
+
requestedMode: semanticMode,
|
|
2101
|
+
query: prepared.query,
|
|
2102
|
+
filteredDocuments,
|
|
2103
|
+
keywordHits,
|
|
2104
|
+
hybridSemanticWeight: runtime.hybridSemanticWeight,
|
|
2105
|
+
limit: prepared.limit,
|
|
2106
|
+
maxResults: runtime.maxResults,
|
|
2107
|
+
provider,
|
|
2108
|
+
vectorStore,
|
|
2109
|
+
extensionVectorAdapter: runtime.extensionVectorAdapter,
|
|
2110
|
+
queryExpansion: runtime.queryExpansion,
|
|
2111
|
+
queryExpansionExtension: runtime.queryExpansionExtension,
|
|
2112
|
+
rerank: runtime.rerank,
|
|
2113
|
+
rerankExtension: runtime.rerankExtension,
|
|
2114
|
+
warnings,
|
|
2115
|
+
settings: runtime.settings
|
|
2104
2116
|
});
|
|
2105
|
-
|
|
2106
|
-
query: query.trim(),
|
|
2107
|
-
mode: effectiveMode,
|
|
2108
|
-
items: [],
|
|
2109
|
-
count: total,
|
|
2110
|
-
total,
|
|
2111
|
-
count_only: true,
|
|
2112
|
-
filters: compactFilters,
|
|
2113
|
-
...warnings.length > 0 ? { warnings } : {}
|
|
2114
|
-
};
|
|
2117
|
+
hits = maybeApplyNoVectorFallback(semanticMode, semanticResult, keywordHits, warnings);
|
|
2115
2118
|
}
|
|
2116
|
-
return {
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
+
return { effectiveMode: runtime.effectiveMode, hits };
|
|
2120
|
+
} catch (error) {
|
|
2121
|
+
warnings.push(buildExplicitSemanticFallbackWarning(runtime.effectiveMode, error));
|
|
2122
|
+
return { effectiveMode: "keyword", hits: keywordHits };
|
|
2123
|
+
}
|
|
2124
|
+
}
|
|
2125
|
+
function buildCountOnlySearchResult(response, total) {
|
|
2126
|
+
if (response.projection.mode === "compact" && response.options.compact === true) {
|
|
2127
|
+
return withSearchWarnings({
|
|
2128
|
+
query: response.query.trim(),
|
|
2129
|
+
mode: response.effectiveMode,
|
|
2119
2130
|
items: [],
|
|
2120
2131
|
count: total,
|
|
2121
2132
|
total,
|
|
2122
2133
|
count_only: true,
|
|
2123
|
-
filters:
|
|
2124
|
-
effectiveMode,
|
|
2125
|
-
matchMode,
|
|
2126
|
-
options,
|
|
2127
|
-
includeLinked,
|
|
2128
|
-
titleExact,
|
|
2129
|
-
phraseExact,
|
|
2130
|
-
scoreThreshold,
|
|
2131
|
-
hybridSemanticWeight,
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2134
|
+
filters: buildCompactSearchFilterSummary({
|
|
2135
|
+
mode: response.effectiveMode,
|
|
2136
|
+
matchMode: response.matchMode,
|
|
2137
|
+
options: response.options,
|
|
2138
|
+
includeLinked: response.includeLinked,
|
|
2139
|
+
titleExact: response.titleExact,
|
|
2140
|
+
phraseExact: response.phraseExact,
|
|
2141
|
+
scoreThreshold: response.scoreThreshold,
|
|
2142
|
+
hybridSemanticWeight: response.hybridSemanticWeight,
|
|
2143
|
+
runtimeFieldFilters: response.runtimeFieldFilters
|
|
2144
|
+
})
|
|
2145
|
+
}, response.warnings);
|
|
2146
|
+
}
|
|
2147
|
+
const projectionFields = response.projection.mode === "full" ? null : [...response.projection.fields];
|
|
2148
|
+
return withSearchWarnings({
|
|
2149
|
+
query: response.query.trim(),
|
|
2150
|
+
mode: response.effectiveMode,
|
|
2151
|
+
items: [],
|
|
2152
|
+
count: total,
|
|
2153
|
+
total,
|
|
2154
|
+
count_only: true,
|
|
2155
|
+
filters: buildVerboseSearchFilters({
|
|
2156
|
+
effectiveMode: response.effectiveMode,
|
|
2157
|
+
matchMode: response.matchMode,
|
|
2158
|
+
options: response.options,
|
|
2159
|
+
includeLinked: response.includeLinked,
|
|
2160
|
+
titleExact: response.titleExact,
|
|
2161
|
+
phraseExact: response.phraseExact,
|
|
2162
|
+
scoreThreshold: response.scoreThreshold,
|
|
2163
|
+
hybridSemanticWeight: response.hybridSemanticWeight,
|
|
2164
|
+
queryExpansion: response.queryExpansion,
|
|
2165
|
+
rerank: response.rerank,
|
|
2166
|
+
runtimeFieldFilters: response.runtimeFieldFilters
|
|
2167
|
+
}),
|
|
2168
|
+
projection: {
|
|
2169
|
+
mode: response.projection.mode,
|
|
2170
|
+
fields: projectionFields
|
|
2171
|
+
},
|
|
2172
|
+
now: nowIso()
|
|
2173
|
+
}, response.warnings);
|
|
2174
|
+
}
|
|
2175
|
+
function withSearchWarnings(result, warnings) {
|
|
2176
|
+
if (warnings.length === 0) {
|
|
2177
|
+
return result;
|
|
2143
2178
|
}
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
...hit,
|
|
2150
|
-
highlights: buildHitHighlights(documentById.get(hit.item.id), hit.matched_fields, tokens)
|
|
2151
|
-
}));
|
|
2152
|
-
if (projection.mode !== "full" && !projection.fields.includes("highlights")) {
|
|
2153
|
-
effectiveProjection = { mode: projection.mode, fields: [...projection.fields, "highlights"] };
|
|
2154
|
-
}
|
|
2179
|
+
return { ...result, warnings };
|
|
2180
|
+
}
|
|
2181
|
+
function attachSearchHighlights(prepared, filteredDocuments, limited) {
|
|
2182
|
+
if (!prepared.highlight) {
|
|
2183
|
+
return { hits: limited, projection: prepared.projection };
|
|
2155
2184
|
}
|
|
2156
|
-
const
|
|
2157
|
-
const
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
query: query.trim(),
|
|
2173
|
-
mode: effectiveMode,
|
|
2185
|
+
const documentById = new Map(filteredDocuments.map((document) => [document.metadata.id, document]));
|
|
2186
|
+
const hits = limited.map((hit) => ({
|
|
2187
|
+
...hit,
|
|
2188
|
+
highlights: buildHitHighlights(documentById.get(hit.item.id), hit.matched_fields, prepared.tokens)
|
|
2189
|
+
}));
|
|
2190
|
+
if (prepared.projection.mode === "full" || prepared.projection.fields.includes("highlights")) {
|
|
2191
|
+
return { hits, projection: prepared.projection };
|
|
2192
|
+
}
|
|
2193
|
+
return { hits, projection: { mode: prepared.projection.mode, fields: [...prepared.projection.fields, "highlights"] } };
|
|
2194
|
+
}
|
|
2195
|
+
function buildSearchResultForHits(response, projectedItems, total, limitedCount, effectiveProjection) {
|
|
2196
|
+
const truncationExtras = limitedCount < total ? { total } : {};
|
|
2197
|
+
if (response.projection.mode === "compact" && response.options.compact === true) {
|
|
2198
|
+
return withSearchWarnings({
|
|
2199
|
+
query: response.query.trim(),
|
|
2200
|
+
mode: response.effectiveMode,
|
|
2174
2201
|
items: projectedItems,
|
|
2175
2202
|
count: projectedItems.length,
|
|
2176
2203
|
...truncationExtras,
|
|
2177
|
-
filters:
|
|
2178
|
-
|
|
2179
|
-
|
|
2204
|
+
filters: buildCompactSearchFilterSummary({
|
|
2205
|
+
mode: response.effectiveMode,
|
|
2206
|
+
matchMode: response.matchMode,
|
|
2207
|
+
options: response.options,
|
|
2208
|
+
includeLinked: response.includeLinked,
|
|
2209
|
+
titleExact: response.titleExact,
|
|
2210
|
+
phraseExact: response.phraseExact,
|
|
2211
|
+
scoreThreshold: response.scoreThreshold,
|
|
2212
|
+
hybridSemanticWeight: response.hybridSemanticWeight,
|
|
2213
|
+
runtimeFieldFilters: response.runtimeFieldFilters
|
|
2214
|
+
})
|
|
2215
|
+
}, response.warnings);
|
|
2180
2216
|
}
|
|
2217
|
+
const finalProjectionFields = effectiveProjection.mode === "full" ? null : [...effectiveProjection.fields];
|
|
2181
2218
|
return {
|
|
2182
|
-
query: query.trim(),
|
|
2183
|
-
mode: effectiveMode,
|
|
2219
|
+
query: response.query.trim(),
|
|
2220
|
+
mode: response.effectiveMode,
|
|
2184
2221
|
items: projectedItems,
|
|
2185
2222
|
count: projectedItems.length,
|
|
2186
2223
|
...truncationExtras,
|
|
2187
2224
|
filters: buildVerboseSearchFilters({
|
|
2188
|
-
effectiveMode,
|
|
2189
|
-
matchMode,
|
|
2190
|
-
options,
|
|
2191
|
-
includeLinked,
|
|
2192
|
-
titleExact,
|
|
2193
|
-
phraseExact,
|
|
2194
|
-
scoreThreshold,
|
|
2195
|
-
hybridSemanticWeight,
|
|
2196
|
-
queryExpansion,
|
|
2197
|
-
rerank,
|
|
2198
|
-
runtimeFieldFilters
|
|
2225
|
+
effectiveMode: response.effectiveMode,
|
|
2226
|
+
matchMode: response.matchMode,
|
|
2227
|
+
options: response.options,
|
|
2228
|
+
includeLinked: response.includeLinked,
|
|
2229
|
+
titleExact: response.titleExact,
|
|
2230
|
+
phraseExact: response.phraseExact,
|
|
2231
|
+
scoreThreshold: response.scoreThreshold,
|
|
2232
|
+
hybridSemanticWeight: response.hybridSemanticWeight,
|
|
2233
|
+
queryExpansion: response.queryExpansion,
|
|
2234
|
+
rerank: response.rerank,
|
|
2235
|
+
runtimeFieldFilters: response.runtimeFieldFilters
|
|
2199
2236
|
}),
|
|
2200
2237
|
projection: {
|
|
2201
2238
|
mode: effectiveProjection.mode,
|
|
2202
2239
|
fields: finalProjectionFields
|
|
2203
2240
|
},
|
|
2204
2241
|
now: nowIso(),
|
|
2205
|
-
...warnings.length > 0 ? { warnings } : {}
|
|
2242
|
+
...response.warnings.length > 0 ? { warnings: response.warnings } : {}
|
|
2243
|
+
};
|
|
2244
|
+
}
|
|
2245
|
+
async function runSearch(rawQuery, rawOptions, global) {
|
|
2246
|
+
const prepared = prepareSearchInput(rawQuery, rawOptions);
|
|
2247
|
+
const runtime = await resolveSearchRuntimeContext(prepared, global);
|
|
2248
|
+
const corpus = await loadFilteredSearchCorpus(prepared, runtime);
|
|
2249
|
+
const warnings = corpus.warnings;
|
|
2250
|
+
warnings.push(...prepared.inlineWarnings);
|
|
2251
|
+
if (runtime.effectiveMode === "hybrid" && runtime.semanticWeightProvided && runtime.semanticWeightOverride === void 0) {
|
|
2252
|
+
warnings.push("search_hybrid_semantic_weight_override_invalid:using_settings_default");
|
|
2253
|
+
}
|
|
2254
|
+
const responseBase = {
|
|
2255
|
+
query: prepared.query,
|
|
2256
|
+
matchMode: prepared.matchMode,
|
|
2257
|
+
options: prepared.options,
|
|
2258
|
+
includeLinked: prepared.includeLinked,
|
|
2259
|
+
titleExact: prepared.titleExact,
|
|
2260
|
+
phraseExact: prepared.phraseExact,
|
|
2261
|
+
scoreThreshold: runtime.scoreThreshold,
|
|
2262
|
+
hybridSemanticWeight: runtime.hybridSemanticWeight,
|
|
2263
|
+
queryExpansion: runtime.queryExpansion,
|
|
2264
|
+
rerank: runtime.rerank,
|
|
2265
|
+
projection: prepared.projection,
|
|
2266
|
+
warnings,
|
|
2267
|
+
runtimeFieldFilters: runtime.runtimeFieldFilters
|
|
2206
2268
|
};
|
|
2269
|
+
if (runtime.effectiveMode === "keyword" && (corpus.filteredDocuments.length === 0 || prepared.limit === 0)) {
|
|
2270
|
+
return buildEmptySearchResultFromContext({ ...responseBase, effectiveMode: runtime.effectiveMode }, prepared.countOnly);
|
|
2271
|
+
}
|
|
2272
|
+
const keywordHits = await computeKeywordSearchHits(prepared, runtime, corpus.filteredDocuments);
|
|
2273
|
+
const modeResult = await executeSemanticSearch({
|
|
2274
|
+
prepared,
|
|
2275
|
+
runtime,
|
|
2276
|
+
filteredDocuments: corpus.filteredDocuments,
|
|
2277
|
+
keywordHits,
|
|
2278
|
+
warnings,
|
|
2279
|
+
modeWasExplicit: prepared.modeWasExplicit
|
|
2280
|
+
});
|
|
2281
|
+
if (modeResult.effectiveMode !== "keyword" && modeResult.hits.length === 0 && (corpus.filteredDocuments.length === 0 || prepared.limit === 0)) {
|
|
2282
|
+
return buildEmptySearchResultFromContext({ ...responseBase, effectiveMode: modeResult.effectiveMode }, prepared.countOnly);
|
|
2283
|
+
}
|
|
2284
|
+
const thresholded = modeResult.hits.filter((entry) => entry.exact_id_match === true || entry.score >= runtime.scoreThreshold);
|
|
2285
|
+
const sorted = sortHits(thresholded, runtime.statusRegistry);
|
|
2286
|
+
const total = sorted.length;
|
|
2287
|
+
const resolvedLimit = prepared.limit ?? runtime.maxResults;
|
|
2288
|
+
const limited = sorted.slice(0, resolvedLimit);
|
|
2289
|
+
const response = { ...responseBase, effectiveMode: modeResult.effectiveMode };
|
|
2290
|
+
if (prepared.countOnly) {
|
|
2291
|
+
return buildCountOnlySearchResult(response, total);
|
|
2292
|
+
}
|
|
2293
|
+
const { hits: projectedHits, projection: effectiveProjection } = attachSearchHighlights(prepared, corpus.filteredDocuments, limited);
|
|
2294
|
+
const projectedItems = projectSearchHits(projectedHits, effectiveProjection);
|
|
2295
|
+
return buildSearchResultForHits(response, projectedItems, total, limited.length, effectiveProjection);
|
|
2207
2296
|
}
|
|
2208
2297
|
|
|
2209
2298
|
export {
|
|
@@ -2216,6 +2305,6 @@ export {
|
|
|
2216
2305
|
resolveSearchTuning,
|
|
2217
2306
|
runSearch
|
|
2218
2307
|
};
|
|
2219
|
-
//# sourceMappingURL=chunk-
|
|
2308
|
+
//# sourceMappingURL=chunk-67LARBDL.js.map
|
|
2220
2309
|
|
|
2221
|
-
//# debugId=
|
|
2310
|
+
//# debugId=02364b53-8625-5d05-90d9-1234e6d63964
|