@unbrained/pm-cli 2026.9.8 → 2026.9.9
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/.agents/skills/pm-user/SKILL.md +2 -2
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +21 -2
- package/dist/cli/register-list-query.js +4 -4
- package/dist/cli/register-mutation.d.ts +0 -5
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli/register-operations.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +150 -150
- package/dist/cli-bundle/chunks/{chunk-G5ADGQ2D.js → chunk-3IPRM75M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LEZOUXG6.js → chunk-4VL5P22L.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +29 -0
- package/dist/cli-bundle/chunks/{chunk-XOD2PCB6.js → chunk-D3YVILJJ.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ECBLPN7B.js +3 -0
- package/dist/cli-bundle/chunks/chunk-J6ERHBV2.js +235 -0
- package/dist/cli-bundle/chunks/{chunk-RHSFOMHU.js → chunk-JUNJ5EKI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JAAEYHUA.js → chunk-L5RCDKQ2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FLDWYEND.js → chunk-OHNLSGGV.js} +62 -60
- package/dist/cli-bundle/chunks/chunk-WQKMSFBV.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-DAM4CBBR.js → chunk-XZ6T7YPP.js} +72 -57
- package/dist/cli-bundle/chunks/{chunk-YVEQ2AMO.js → chunk-Z3XVXUVF.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-KSK3R63M.js → register-list-query-UIHRCS6D.js} +7 -7
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-BQ5SVD4B.js → register-setup-PERI45EM.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-KOOMJ54F.js → chunk-2W4XIYOB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-2WSBXIGF.js +12 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3WRPWLA7.js → chunk-5FHTCOHS.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-7N6DOREF.js +26 -0
- package/dist/cli-bundle/focused-chunks/{chunk-RMWES4M6.js → chunk-7PC4R5QB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-HJVARYM3.js → chunk-BUCJUZVG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-RXT4P5QH.js → chunk-OQUGRHKV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-OPFHFGDD.js → chunk-PNKIANFZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-EE5QSM4Z.js → chunk-QQQ4SAUO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-TTYXF5YD.js +177 -0
- package/dist/cli-bundle/focused-chunks/{chunk-7MBUII7U.js → chunk-XNR3DM6J.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-XSS3APUF.js +9 -0
- package/dist/cli-bundle/focused-chunks/{chunk-COPBO5HW.js → chunk-YCDQ2N23.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-DUN4IXYN.js → chunk-YJUXGS57.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-ZTCE4UO6.js +58 -0
- package/dist/cli-bundle/main.js +2 -2
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +37 -37
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +9 -9
- package/dist/core/config/nested-settings.js +1 -1
- package/dist/core/policy/workflow-policy-schema.d.ts +312 -0
- package/dist/core/policy/workflow-policy-schema.js +2 -0
- package/dist/core/policy/workflow-policy-store.d.ts +24 -0
- package/dist/core/policy/workflow-policy-store.js +2 -0
- package/dist/core/policy/workflow-policy.d.ts +139 -0
- package/dist/core/policy/workflow-policy.js +2 -0
- package/dist/core/shared/constants.js +1 -1
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +1 -1
- package/dist/core/store/settings.js +1 -1
- package/dist/mcp/tool-definitions.js +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1
- package/dist/sdk/completion.js +19 -4
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
- package/dist/sdk/governance/validate.d.ts +3 -1
- package/dist/sdk/governance/validate.js +1 -1
- package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
- package/dist/sdk/governance/workflow-completeness.js +2 -0
- package/dist/sdk/governance/workflow-policy.d.ts +47 -0
- package/dist/sdk/governance/workflow-policy.js +4 -0
- package/dist/sdk/governance.d.ts +1 -0
- package/dist/sdk/governance.js +1 -1
- package/dist/sdk/index.d.ts +0 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/lifecycle/create.js +1 -1
- package/dist/sdk/lifecycle/recurrence-parsers.d.ts +1 -1
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
- package/dist/sdk/lifecycle/restore.js +1 -1
- package/dist/sdk/lifecycle/update.js +1 -1
- package/dist/sdk/package-import-adapters.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/search-contracts.d.ts +27 -0
- package/dist/sdk/query/search-contracts.js +1 -1
- package/dist/sdk/query/search.d.ts +6 -4
- package/dist/sdk/query/search.js +2 -2
- package/dist/sdk/read-output-contracts.d.ts +1 -1
- package/dist/sdk/read-output-contracts.js +1 -1
- package/dist/sdk/runtime-public-contracts.d.ts +2 -1
- package/dist/sdk/runtime.d.ts +4 -0
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/schema.d.ts +2 -1
- package/dist/sdk/schema.js +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.js +1 -1
- package/docs/COMMANDS.md +10 -0
- package/docs/CONFIGURATION.md +12 -1
- package/docs/README.md +1 -0
- package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
- package/docs/TESTING.md +10 -0
- package/docs/WORKFLOW_POLICIES.md +129 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +2 -2
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +9 -3
- package/marketplace.json +2 -2
- package/package.json +5 -5
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli-bundle/chunks/chunk-3BZZA6A3.js +0 -5
- package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +0 -235
- package/dist/cli-bundle/chunks/chunk-KR3RP4FH.js +0 -3
- package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +0 -29
- package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-DWVHR2NC.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +0 -177
- package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +0 -56
- package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +0 -9
- package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-WE3IUNIW.js +0 -26
- package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +0 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-digital-twin",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.9",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-claude",
|
|
3
3
|
"description": "Native pm CLI integration for Claude Code — 28 MCP tools, 5 workflow skills, 14 slash commands, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.",
|
|
4
|
-
"version": "2026.9.
|
|
4
|
+
"version": "2026.9.9",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "unbrained",
|
|
7
7
|
"url": "https://github.com/unbraind/pm-cli"
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{Cb as tn,Cc as cn,Db as rn,Ha as Qr,I as $r,J as zr,Jb as tt,Kb as rt,Lb as nt,M as Vr,Mb as ot,Nb as nn,Ob as on,Rb as sn,Sb as it,Tb as st,Ub as Fe,Z as Kr,a as H,c as Hr,d as J,e as et,eb as Yr,f as jr,fb as Te,g as se,h as z,i as Or,j as qr,o as Ur,s as Nr,u as Gr,ub as ae,vb as Xr,w as Wr,wb as Jr,x as Br,xb as Me,yb as Zr,yc as an,zb as en}from"./chunk-XOD2PCB6.js";import{$ as Nt,$d as Xt,$h as be,Ah as dr,Ai as Se,Aj as Ce,Bh as ur,Bj as Tr,Cj as Ye,D as qt,Dd as Qt,Dj as Xe,Ed as Yt,Ej as Je,Fj as Mr,Hh as $,I as f,Ih as mr,Jh as Ke,Jj as Fr,K as h,Kh as we,Kj as Ze,L as ee,Lc as C,Le as _e,Lh as oe,M as We,Me as Zt,Mh as fr,Mi as br,Ne as er,Nh as M,Ni as Er,O as he,Od as q,Oe as ne,Oh as hr,P as Ut,Ph as ie,Qc as Bt,Qd as Q,Qh as pr,Rc as ze,Tj as Pr,Uc as K,Vc as $t,Vi as F,Wa as O,Wc as te,Wh as gr,X as x,Xh as Qe,Xi as Sr,Yh as yr,Zh as ve,_g as sr,aa as Gt,ai as _r,ba as Be,be as re,bi as wr,cb as A,cd as zt,dn as Lr,eb as Wt,ef as Y,fe as Jt,fj as Ie,gb as B,gd as Vt,ge,gf as tr,hd as Kt,he as ye,hj as xe,i as fe,ib as pe,ij as Ir,jk as X,la as $e,li as vr,lj as P,m as L,mf as rr,mj as Re,nj as ke,oj as xr,pj as Rr,qj as Ae,rf as nr,rh as Ve,sf as or,sj as kr,th as ar,tj as Ar,vk as Dr,wi as Ee,yf as ir,yh as cr,zh as lr,zj as Cr}from"./chunk-AMRDVX36.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2a9a4dc0-8027-5761-9bbf-cac1ef83bd10")}catch{}})();var Qo=["status","type","tag","priority","deadlineBefore","deadlineAfter","updatedAfter","updatedBefore","createdAfter","createdBefore","ids","assignee","assigneeFilter","parent","sprint","release"],Yo=["filterAcMissing","filterEstimatesMissing","filterResolutionMissing","filterMetadataMissing","filterReviewerMissing","filterRiskMissing","filterConfidenceMissing","filterSprintMissing","filterReleaseMissing","hasNotes","hasLearnings","hasFiles","hasDocs","hasTests","hasComments","hasDeps","hasBody","hasLinkedCommand","noNotes","noLearnings","noFiles","noDocs","noTests","noComments","noDeps","emptyBody","noLinkedCommand"];function Xo(e){return e!=null&&(typeof e!="string"||e.split(",").some(t=>t.trim().length>0))}function Wa(e,t,r={}){let n=r.includePagination!==!1;return[t,...Qo.map(i=>e?.[i]),...n?[e?.limit,e?.offset]:[]].some(Xo)||Yo.some(i=>e?.[i]===!0)}function ln(e){return{type:e.type,tag:e.tag,priority:e.priority,deadlineBefore:e.deadlineBefore,deadlineAfter:e.deadlineAfter,assignee:e.assignee,assigneeFilter:e.assigneeFilter,parent:e.parent,sprint:e.sprint,release:e.release}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7a4a98b2-3872-506d-b88d-877b0033dd2d")}catch{}})();var dn=["parent","type","priority","status","assignee","tags","sprint","release"];function mn(e,t){let r=Ee(e,t,{strict:!0,flagLabel:"--status"});if(!(!r||r.length===0))return r}function fn(e,t=["estimate","estimated_minutes","priority"]){let r=e.sum?.trim(),n=e.avg?.trim(),o=r&&r.length>0?r:void 0,i=n&&n.length>0?n:void 0;if(!o&&!i)return null;if(o&&i&&o!==i)throw new h("Aggregate --sum and --avg must target the same numeric field",f.USAGE);let s=o??i;if(!t.includes(s))throw new h(`Aggregate numeric field "${s}" is not registered. Allowed: ${t.join(", ")}`,f.USAGE);return{field:s,sum:o!==void 0,avg:i!==void 0}}function hn(e){let t=e?.trim()??"status";if(t.length===0)throw new h("--group-by requires at least one field name",f.USAGE);let r=Dr(t);if(r.length===0)throw new h("--group-by requires a comma-separated list of fields",f.USAGE);for(let n of r)if(!dn.includes(n))throw new h(`Aggregate group fields must be one of ${dn.join("|")}; received "${n}"`,f.USAGE);return r}function pn(e){let t=[...new Set(e.map(r=>r.trim().toLowerCase()).filter(r=>r.length>0))].sort((r,n)=>r.localeCompare(n));return t.length===0?null:t.join(",")}function gn(e,t){switch(e){case"parent":return t.parent??null;case"type":return t.type;case"priority":return t.priority;case"status":return t.status;case"assignee":return t.assignee??null;case"tags":return pn(t.tags);case"sprint":return t.sprint??null;case"release":return t.release??null;default:return null}}function yn(e,t){let r=e??null,n=t??null;return r===n?0:r===null?1:n===null?-1:typeof r=="number"&&typeof n=="number"?r-n:String(r).localeCompare(String(n))}function Pe(e,t){return e.map(r=>`${r}:${JSON.stringify(t[r]??null)}`).join("|")}var Jo={parent:"(unparented)",type:"(untyped)",priority:"(no priority)",status:"(no status)",assignee:"(unassigned)",tags:"(untagged)",sprint:"(no sprint)",release:"(no release)"};function un(e,t){return t==null||t===""?Jo[e]:String(t)}function Zo(e,t){return e.length===1?un(e[0],t[e[0]]):e.map(r=>`${r}=${un(r,t[r])}`).join(" | ")}function _n(e,t,r){for(let n of r){let o=yn(e.group[n],t.group[n]);if(o!==0)return o}return 0}function wn(e,t){let n=e[t];if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"){let o=n.trim();if(o.length===0)return null;let i=Number(o);if(Number.isFinite(i))return i}return null}function vn(e,t){return t<=0?0:Math.round(e/t*1e4)/100}function at(e,t,r){let n=Xt(String(t),r)??t;if(n===r.open_status){e.open_count+=1;return}if(n==="in_progress"||r.active_statuses.has(n)&&n!==r.open_status){e.in_progress_count+=1;return}if(r.terminal_done_statuses.has(n)||n===r.close_status){e.closed_count+=1;return}e.other_count+=1}function ei(e,t){return{row:{group:e,count:1},numeric_count:t===null?0:1,numeric_sum:t??0,null_count:t===null?1:0,open_count:0,in_progress_count:0,closed_count:0,other_count:0}}function ti(e,t){if(t===null){e.null_count+=1;return}e.numeric_count+=1,e.numeric_sum+=t}function ri(e){e.accumulator.row.count+=1,e.includeCompletion&&at(e.accumulator,e.item.status,e.statusRegistry),e.numericAggregation!==null&&ti(e.accumulator,e.numericValue)}function ni(e,t,r,n){for(let o of t){let i=Pe(r,o),s=e.get(i);if(s){ri({...n,accumulator:s});continue}let a=ei(o,n.numericValue);n.includeCompletion&&at(a,n.item.status,n.statusRegistry),e.set(i,a)}}function oi(e,t){let r={};for(let n of e)r[n]=gn(n,t);return r}function ii(e,t,r){let n=[oi(e,t)];if(r==="tuple")return n;for(let o of e){let i=t[o];if(!Array.isArray(i))continue;let s=[...new Set(i.map(a=>a.trim().toLowerCase()).filter(Boolean))].sort();s.length!==0&&(n=n.flatMap(a=>s.map(u=>({...a,[o]:u}))))}return n}function si(e,t,r,n){let o={...e.row,group_label:Zo(t,e.row.group)};return r&&(o.open=e.open_count,o.in_progress=e.in_progress_count,o.closed=e.closed_count,o.other=e.other_count,o.completion_pct=vn(e.closed_count,e.row.count)),n!==null&&(o.null_count=e.null_count,n.sum&&(o.sum=e.numeric_sum),n.avg&&(o.avg=e.numeric_count===0?null:e.numeric_sum/e.numeric_count)),o}function ai(e){return{group_by:e.groupBy,set_mode:e.setMode,count:!0,completion:e.includeCompletion,include_unparented:e.includeUnparented,status:e.status?.[0]??null,status_values:e.status,type:e.options.type??null,tag:e.options.tag??null,priority:e.options.priority??null,deadline_before:e.options.deadlineBefore??null,deadline_after:e.options.deadlineAfter??null,assignee:e.options.assignee??null,assignee_filter:e.options.assigneeFilter??null,parent:e.options.parent??null,sprint:e.options.sprint??null,release:e.options.release??null,...e.numericAggregation!==null?{sum:e.options.sum??null,avg:e.options.avg??null,numeric_field:e.numericAggregation.field}:{}}}async function Qa(e,t){if(e.count===!1)throw new h("Aggregate grouped counts are always enabled; omit count=false.",f.USAGE);let r=A(process.cwd(),t.path),n=await F(r),o=q(n.schema),i=["estimate","estimated_minutes","priority",...Q(n.schema).definitions.filter(v=>v.type==="number").map(v=>v.metadata_key)],s=hn(e.groupBy),a=e.setMode??"element";if(a!=="element"&&a!=="tuple")throw new h("Aggregate --set-mode must be element or tuple",f.USAGE);let u=mn(e.status,o),c=fn(e,[...new Set(i)].sort((v,E)=>v.localeCompare(E))),l=e.completion===!0,d=e.includeUnparented===!0,m=await Fe(void 0,{...ln(e),status:e.status,noTruncate:!0,strictRead:!0},t),p=new Map,y=0,_=0,g=0;for(let v of m.items){let E=v;if(s.includes("parent")&&E.parent===void 0&&!d){y+=1;continue}let R=c===null?null:wn(E,c.field),I=ii(s,E,a);ni(p,I,s,{item:E,statusRegistry:o,includeCompletion:l,numericAggregation:c,numericValue:R}),g+=I.length,_+=1}let w=[...p.values()].map(v=>si(v,s,l,c)).sort((v,E)=>_n(v,E,s)),b=m.warnings&&m.warnings.length>0?m.warnings:void 0;return{...ci(w,s,e),count:w.length,totals:{items_considered:m.items.length,items_grouped:_,items_skipped_unparented:y,group_memberships:g},filters:ai({groupBy:s,setMode:a,includeCompletion:l,includeUnparented:d,status:u,options:e,numericAggregation:c}),now:x(),...b?{warnings:b}:{}}}function ci(e,t,r){let n=Kr(r.limit,"limit")??50,o=r.after===void 0?-1:e.findIndex(a=>Pe(t,a.group)===r.after);if(r.after!==void 0&&o<0)throw new h("Aggregate --after cursor is absent from the current grouping; restart without --after.",f.USAGE);let i=e.slice(o+1,o+1+n),s=o+1+i.length<e.length;return{groups:i,returned_count:i.length,truncated:s,next_after:s?Pe(t,i.at(-1).group):null}}var Ya={buildGroupKey:Pe,compareAggregateRows:_n,compareNullableGroupValue:yn,completionPct:vn,normalizeTagGroupValue:pn,parseGroupBy:hn,parseNumericAggregation:fn,parseStatus:mn,readNumericAggregateValue:wn,resolveGroupValue:gn,updateCompletionCounts:at};import li from"fast-json-patch";import ct from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0f22715f-cfb9-5c75-b4c5-e9719416c2b9")}catch{}})();async function bn(e,t,r){let n=await xr(e,{schema:t.schema});return n.error===null?{raw:n.raw,document:n.document}:{raw:n.raw,document:En(r),recovered:!0}}function di(e,t){return Hr(e,t,{errorSubject:"restore",allowFutureTimestamp:!0})}function En(e){let t=et(e,e.length-1);return Object.keys(t.metadata).length===0?{metadata:{},body:t.body}:ye(M(t))}async function ui(e,t,r,n){let o=await z(e,t,r,n),i=o.located?await ve({pmRoot:e,settings:r,itemId:o.id,commandLabel:"restore"}):{warnings:[]};return{...o,historyPolicyWarnings:i.warnings}}function mi(e,t){let r=ie(e),n=ie(t),o=li.compare(r,n),i=new Set;for(let s of o){if(s.path==="/body"||s.path.startsWith("/body/")){i.add("body");continue}let a=s.path.replace(/^\/(?:metadata|front_matter)\/?/,"").split("/")[0];i.add(a.replaceAll("~1","/").replaceAll("~0","~"))}return Array.from(i).sort((s,a)=>s.localeCompare(a))}async function fi(e){let t=await Yr({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:"restore",readItem:r=>bn(r,e.settings,e.history)});return{loadedItemUnderLock:t.loadedItemUnderLock,existingItemPath:t.locatedUnderLock?.itemPath??null}}function hi(e,t){return e?{document:e.document,originalRaw:e.raw}:{document:En(t),originalRaw:null}}function pi(e){let t=e.document.metadata.assignee?.trim();if(!(t&&t!==e.author&&!e.force))return[];if(e.enforcement==="strict")throw new h(`Item ${e.resolvedId} is assigned to ${t}. Use --force to override.`,f.CONFLICT);return e.enforcement==="warn"?[`ownership_warning:assignee_conflict:${e.resolvedId}:${t}`]:[]}async function gi(e){if(e.existingItemPath&&e.resolvedOriginalRaw!==null&&e.restoredItemPath!==e.existingItemPath){await L(e.existingItemPath,e.resolvedOriginalRaw),await ct.rm(e.restoredItemPath,{force:!0});return}if(e.existingItemPath&&e.resolvedOriginalRaw!==null){await L(e.existingItemPath,e.resolvedOriginalRaw);return}await ct.rm(e.restoredItemPath,{force:!0})}async function yi(e){return[...await K({path:e.restoredItemPath,scope:"project",op:"restore",item_id:e.after.metadata.id,item_type:e.after.metadata.type,before:e.before,after:e.after,changed_fields:["restored"]}),...await K({path:e.historyPath,scope:"project",op:"restore:history",item_id:e.after.metadata.id,item_type:e.after.metadata.type,before:e.before,after:e.after,changed_fields:["restored"]})]}async function dc(e,t,r,n){let o=A(process.cwd(),n.path);await P(o);let i=await F(o),s=O(i,C()),a=await ui(o,e,i,s.type_to_folder),u=a.id,{raw:c,entries:l}=await er(a.historyPath,u);if(l.length===0)throw new h(`No history exists for ${u}; restore is unavailable.`,f.NOT_FOUND);let d=di(t,l),m=jr(et(l,d.historyIndex),d),p=hr(m,{schema:i.schema});if(p.metadata.id!==u)throw new h(`Restore target resolved to item ${p.metadata.id}, expected ${u}.`,f.GENERIC_FAILURE);let _=(a.located?await bn(a.located,i,l):null)?.raw??null,g=_e(r.author,i.author_default),w=await Zt(o,u,i.locks.ttl_seconds,g,!!r.force,i.governance.force_required_for_stale_lock,i.locks.wait_ms);try{let{loadedItemUnderLock:b,existingItemPath:v}=await fi({pmRoot:o,subject:a,settings:i,typeRegistry:s,historyRawBeforeLock:c,currentItemRawBeforeLock:_,history:l}),E="toon",R=hi(b,l),I=pi({document:R.document,author:g,force:r.force,enforcement:i.governance.ownership_enforcement,resolvedId:u}),S=mi(R.document,p);await $t({pm_root:o,operation:"restore",before:R.document,after:p,changed_fields:S,sdk:kr({pmRoot:o,settings:i,typeToFolder:s.type_to_folder})});let k=ge(p,{format:E,schema:i.schema}),G=B(o,p.metadata.type,u,E,s.type_to_folder),W=await Ie(o,g),me=[];try{await L(G,k),v&&G!==v&&await ct.rm(v);let Vo=$({nowIso:x(),author:g,op:"restore",before:R.document,after:p,message:r.message});try{await mr(a.historyPath,Vo)}catch(Ko){throw await gi({existingItemPath:v,resolvedOriginalRaw:R.originalRaw,restoredItemPath:G}),Ko}me=await xe({pmRoot:o,preferredFormat:i.item_format,typeToFolder:s.type_to_folder,schema:i.schema,itemPath:G,previousItemPath:v??void 0,document:p})}finally{await W()}let zo=await yi({restoredItemPath:G,historyPath:a.historyPath,before:R.document,after:p});Bt({id:p.metadata.id,op:"restore",item_type:p.metadata.type,previous_status:R.document.metadata.status,status:p.metadata.status,previous:ze(R.document.metadata,S),current:ze(p.metadata,S),changed_fields:S});let jt=l[d.historyIndex],Ot=H(l,!0);return{item:p.metadata,restored_from:{kind:d.kind,target:d.raw,history_index:d.historyIndex+1,version:Ot===null?null:Ot+d.historyIndex+1,entry_ts:jt.ts,entry_op:jt.op},changed_fields:S,warnings:[...b?.recovered?["restore_unreadable_item_recovered"]:[],...a.historyPolicyWarnings,...I,...me,...zo]}}finally{await w()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0cc18a30-5068-5c59-b559-7afc4d446ed8")}catch{}})();function _i(e,t){return t===void 0?e:e.slice(Math.max(0,e.length-t))}function wi(e,t){return e.map(({entry:r,version:n})=>{let o=new Set,i=pr(r.patch);for(let s of i)o.add(Qe(s.path)),s.from&&o.add(Qe(s.from));return{index:n,...t?{version:t.offset===null?null:t.offset+n}:{},ts:r.ts,op:r.op,author:r.author,patch_ops:i.length,changed_fields:[...o].sort((s,a)=>s.localeCompare(a))}})}function vi(e){if(e[0]?.op!=="history_compact_baseline")return;let t=H(e,!0);return{offset:t,first_version:t===null?null:t+1,last_version:t===null?null:t+e.length}}async function bi(e,t){let r=A(process.cwd(),t.path);await P(r);let n=await F(r),o=O(n,C()),i=e.trim()===be,s=i?be:vr(e,n.id_prefix),a=await Re(r,s,n.id_prefix,n.item_format,o.type_to_folder),u=a?.id??s,c=i?_r(r):pe(r,u);if(!a&&!await fe(c))throw new h(`Item ${e} not found`,f.NOT_FOUND);return a&&await ve({pmRoot:r,settings:n,itemId:a.id,commandLabel:"history"}),{historyPath:c,located:a,resolvedId:u,settings:n}}async function bc(e,t,r){let n=Se(t.limit),{historyPath:o,located:i,resolvedId:s,settings:a}=await bi(e,r),u=await ne(o,s),c=vi(u),l=a.agent_identity.identity_vocabulary,d=Nr(a.agent_identity.harness_signals),m=Wr({harness:t.harness,agentInstance:t.agentInstance,provenance:t.provenanceFilter},l,d),p=Ei(u).filter(({entry:S})=>m(S)),y=_i(p,n),_=y.map(({entry:S})=>S),g=t.compact===!0,w=g?wi(y,c):void 0,b=t.provenance===!0?y.map(({entry:S,durableVersion:k})=>Gr(S,l,{itemId:s,version:k})):void 0,v=t.provenance===!0?"provenance":g?"compact":"full",E={compact:{compact_history:w},provenance:{provenance_history:b},full:{history:_}}[v],I={id:s,...E,compact:g,projection:{mode:v,row_key:{compact:"compact_history",provenance:"provenance_history",full:"history"}[v]},omission_receipt:rr("history",v),count:_.length,limit:n??null,version_addressing:c,...t.provenanceSummary===!0?{provenance_summary:Br(p.map(({entry:S})=>S),l,d)}:{}};if((t.diff||t.field!==void 0)&&(I.diff=yr(u,{windowStartIndex:Math.max(0,u.length-_.length),field:t.field})),t.verify){let S=i?(await ke(i,{schema:a.schema})).document:void 0;if(I.verification=Or(u,S),s===be&&I.verification.ok){let k=await wr(A(process.cwd(),r.path));I.verification={...I.verification,ok:k.ok,errors:k.ok?I.verification.errors:[...I.verification.errors,"verify_failed:workspace_state_mismatch"],workspace_state_matches_latest:k.ok,workspace_state_mismatches:k.mismatched_documents,workspace_state_missing:k.missing_documents,workspace_state_unreadable:k.unreadable_documents}}}return I}function Ei(e){let t=H(e,!0);return e.map((r,n)=>({entry:r,version:n+1,durableVersion:t===null?void 0:t+n+1}))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="acda1c64-cb50-57b5-868d-a27ca6912979")}catch{}})();var Sn=1e6,In=20;function xn(e,t,r,n=In){if(!Number.isSafeInteger(n)||n<0)throw new h("Child projection sample limit must be a non-negative integer.",f.USAGE);let o=e.trim().toLowerCase(),i={},s=[],a=0;for(let g of t){if(a+=1,a>Sn)throw new h(`Child projection exceeded the ${Sn.toLocaleString("en-US")} item safety bound.`,f.GENERIC_FAILURE,{code:"child_projection_item_bound_exceeded",required:"Use an indexed or parent-filtered metadata source.",why:"Unbounded graph scans can exhaust memory in universal project stores.",nextSteps:["Build the derived item index, then retry the parent read."]});s.push(g)}let u=new Map(s.map(g=>[g.id.trim().toLowerCase(),g])),c=Vr(zr(s,$r())),l=new Set(c.children_by_parent.get(o)??[]);for(let g of s)g.parent?.trim().toLowerCase()===o&&l.add(g.id.trim().toLowerCase());let d=[...l].map(g=>u.get(g)),m=0;for(let g of d){let w=g.status.trim().toLowerCase();i[w]=(i[w]??0)+1,re(w,r)||(m+=1)}d.sort((g,w)=>g.id.localeCompare(w.id));let p=d.slice(0,n).map(g=>({id:g.id,title:g.title,type:g.type,status:g.status,priority:g.priority})),y=d.length>p.length,_=n===0?In:n;return{count:d.length,active:m,by_status:Object.fromEntries(Object.entries(i).sort(([g],[w])=>g.localeCompare(w))),sample:p,sample_limit:n,truncated:y,next_offset:y?p.length:null,continuation:y?`pm list --status all --parent ${e} --offset ${p.length} --limit ${_}`:null,scanned:a}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="926ca5b2-8cfc-56e7-8cbf-fb0e7152d834")}catch{}})();var Si=new Set(["event","meeting","reminder"]);function Ii(e){return Si.has(e.type.trim().toLowerCase())||e.deadline!==void 0||(e.reminders?.length??0)>0||(e.events?.length??0)>0}function lt(e){if(!Ii(e))return;let t=[...e.events??[]].sort((n,o)=>n.start_at.localeCompare(o.start_at)),r=t[0];return{deadline:e.deadline??null,start_at:r?.start_at??null,end_at:r?.end_at??null,location:r?.location??null,reminders:[...e.reminders??[]],events:t}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="26bf8487-2515-5885-b6de-56ba6292fb65")}catch{}})();var Ri=new Set(["epic","feature","milestone","plan"]),ki=new Set(Object.keys(qt).map(e=>e.toLowerCase()));function ut(e){return Object.fromEntries(["comments","notes","learnings","files","tests","docs","reminders","events"].map(r=>[r,e[r]?.length??0]))}function Ai(e,t){let r=ut(e);return[...t.length>0?["body"]:[],...Object.entries(r).flatMap(([n,o])=>o>0?[n]:[]),...r.files+r.tests+r.docs>0?["linked"]:[],"children",...typeof e.assignee=="string"&&e.assignee.trim().length>0?["claim_state"]:[],...lt(e)?["schedule"]:[]]}function kn(e){let t=e.trim().toLowerCase();return t.length>0&&(Ri.has(t)||!ki.has(t))}function Rn(e){return{ts:e.ts,author:e.author,message:e.message??null}}function Ci(e,t){let r=e?.trim(),n=r&&r.length>0?r:null,o=[...t].reverse().find(s=>s.op==="claim"),i=[...t].reverse().find(s=>s.op==="release");return{claimed:n!==null,assignee:n,last_claim:o?Rn(o):null,last_release:i?Rn(i):null}}function Ti(e){if(e===void 0||e.trim().length===0)return"standard";let t=e.trim().toLowerCase();if(t==="full")return"deep";if(tt.includes(t))return t;throw new h("Get --depth must be one of brief|standard|deep|full",f.USAGE)}function Mi(e,t){let r=ut(e);if(t==="deep")return{...e,comments:e.comments??[],notes:e.notes??[],learnings:e.learnings??[],files:e.files??[],tests:e.tests??[],docs:e.docs??[],reminders:e.reminders??[],events:e.events??[],notes_count:r.notes,tests_count:r.tests,collection_counts:r};let{comments:n,notes:o,learnings:i,files:s,tests:a,docs:u,reminders:c,events:l,...d}=e;return{...d,notes_count:e.notes?.length??0,tests_count:e.tests?.length??0,collection_counts:r}}function Fi(e){if(e===void 0)return null;let t=e.split(",").map(r=>r.trim()).filter(r=>r.length>0);if(t.length===0)throw new h("Get --fields requires a comma-separated list of field names",f.USAGE);return t}function Le(e){return e.startsWith("item.")?e.slice(5):e}function Pi(e,t,r){if(e===null)return;let n=rt(t),o=new Set(n),i=e.filter(s=>{let a=Le(s);return!o.has(s)&&!o.has(a)});if(i.length>0){let s=["get",r,"--fields","id,title,status"];throw new h(`Unknown get --fields value(s): ${i.join(", ")}`,f.USAGE,{code:"unknown_field_projection",examples:["pm get <id> --fields id,title,status,type,updated_at","pm get <id> --fields id,title,claim_state","pm get <id> --fields id,title,body,linked.files"],recovery:{allowed_values:n,suggested_retry:Y(s),suggested_retry_args:s}})}}var Di=new Set(["comments","notes","learnings","files","tests","test_runs","docs","reminders","events","dependencies","plan_steps","plan_decisions","plan_discoveries","plan_validation"]);function Li(e,t,r){return Object.hasOwn(t,r)?t[r]:e[r]!==void 0?e[r]:Di.has(r)?[]:void 0}function Hi(e,t){let r=e,n={notes_count:e.notes?.length??0,tests_count:e.tests?.length??0,collection_counts:ut(e)},o={id:e.id};for(let i of t){let s=Le(i);s==="body"||s==="linked"||s.startsWith("linked.")||s==="claim_state"||s.startsWith("claim_state.")||s==="children"||s.startsWith("children.")||s==="schedule"||s.startsWith("schedule.")||(o[s]=Li(r,n,s))}return o}function ce(e,t){return e?.some(r=>r===t||r===`item.${t}`)??!1}function De(e,t){return e.some(r=>{let n=Le(r);return n===t||n.startsWith(`${t}.`)})}function ji(e,t){if(e.full&&(e.fields!==void 0||e.depth!==void 0))throw new h("Get projection options are mutually exclusive; remove the extra projection flag and retry.",f.USAGE,{code:"projection_options_mutually_exclusive",recovery:{suggested_retry:Y(["get",t,"--full"]),suggested_retry_args:["get",t,"--full"]}});if(e.tree!==!0&&e.treeDepth!==void 0)throw new h("Get --tree-depth requires --tree",f.USAGE);if(e.at!==void 0&&e.tree===!0)throw new h("Get --at cannot be combined with --tree because workspace-level historical projections are not yet indexed.",f.USAGE);return{depth:e.full?"deep":Ti(e.depth),treeDepth:e.tree===!0?Ur(e.treeDepth,"--tree-depth"):void 0,fields:Fi(e.fields),fieldProjection:e.fields!==void 0}}async function Oi(e,t,r){let n=A(process.cwd(),t.path);await P(n);let o=await F(n),i=O(o,C());if(r!==void 0){let u=await qr(e,r,{pmRoot:t.path});return{pmRoot:n,settings:o,typeToFolder:i.type_to_folder,locatedId:u.document.metadata.id,metadata:u.document.metadata,body:u.document.body,historical:u}}let s=await Re(n,e,o.id_prefix,o.item_format,i.type_to_folder);if(!s)throw await Ar(n,e,o.id_prefix,i.type_to_folder);let a=await ke(s,{schema:o.schema});return{pmRoot:n,settings:o,typeToFolder:i.type_to_folder,locatedId:s.id,metadata:a.document.metadata,body:a.document.body}}function qi(e,t,r,n){let o=Q(t.schema).definitions.map(i=>i.metadata_key);if(Pi(e,o,n),r&&De(e??[],"children"))throw new h("Get --at cannot project children because workspace-level historical relationships are not yet indexed.",f.USAGE)}function dt(e){let{fieldProjection:t,depth:r,fields:n,field:o}=e;return t?o==="body"||o==="linked"?ce(n,o):De(n,o):r!=="brief"}async function Ui(e,t){if(!t)return;let r=pe(e.pmRoot,e.locatedId),n=await ne(r,e.locatedId);return Ci(e.metadata.assignee,e.historical?n.slice(0,e.historical.target.historyIndex+1):n)}function Ni(e,t,r,n){let o=n||ce(r,"linked.files"),i=n||ce(r,"linked.tests"),s=n||ce(r,"linked.docs");!n&&!o&&!i&&!s||(e.linked={files:o?t.metadata.files??[]:[],tests:i?t.metadata.tests??[]:[],docs:s?t.metadata.docs??[]:[]})}async function Gi(e,t){if(!t)return;let r=q(e.settings.schema),n=await Ae(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema);return xn(e.locatedId,n,r)}function Wi(e,t,r,n){if(!n)return;let o=lt(t.metadata);if(o){if(r===null||ce(r,"schedule")){e.schedule=o;return}e.schedule=Object.fromEntries(Object.entries(o).filter(([i])=>r.some(s=>Le(s)===`schedule.${i}`)))}}async function Bi(e,t,r,n){if(t.tree!==!0)return;let o=await Fe(void 0,{parent:e.locatedId,tree:!0,treeDepth:r===void 0?void 0:String(r),full:!0},n);return{root_id:e.locatedId,root_title:e.metadata.title,depth_limit:r??null,count:o.count,items:o.items.map(i=>i)}}async function Wc(e,t,r={}){let n=ji(r,e),o=await Oi(e,t,r.at);qi(n.fields,o.settings,o.historical!==void 0,o.locatedId);let i=dt({...n,field:"body"}),s=dt({...n,field:"linked"}),a=dt({...n,field:"claim_state"}),u=o.historical===void 0&&(n.fieldProjection?De(n.fields,"children"):n.depth==="deep"&&kn(o.metadata.type)),c=n.fieldProjection?De(n.fields,"schedule"):n.depth!=="brief",l=await Ui(o,a),d={item:n.fieldProjection?Hi(o.metadata,n.fields):Mi(o.metadata,n.depth)};i&&(d.item.body=o.body),Ni(d,o,n.fields,s),l&&(d.claim_state=l),Wi(d,o,n.fields,c);let m=await Gi(o,u);m!==void 0&&(d.children=m);let p=await Bi(o,r,n.treeDepth,t);if(p!==void 0&&(d.tree=p),o.historical&&(d.reconstructed=!0,d.as_of_version=o.historical.as_of_version,d.as_of_timestamp=o.historical.as_of_timestamp),o.historical===void 0)try{await sr({pmRoot:o.pmRoot,author:_e(void 0,o.settings.author_default),itemIds:[o.locatedId],intent:"get"})}catch{}return tr(d,Ai(o.metadata,o.body)),d}var Bc={shouldAutoIncludeGetChildren:kn};(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7b09736a-499b-57f6-b688-0458b487786b")}catch{}})();var Cn=10,U="https://schema.unbrained.dev/pm/eval-query-set/v1",$i={schema:U,accepted_top_level:["array","object"],required_query_fields:["query","relevant_ids"],optional_fields:["mode","description"],modes:["keyword","semantic","hybrid"]},He={schema:U,queries:[{query:"offline search",relevant_ids:["pm-75k9"],mode:"keyword"}]},T=class extends Error{constructor(t){super(t),this.name="EvalQuerySetError"}},zi=new Set(["keyword","semantic","hybrid"]);function An(e,t){let r=0,n=Math.min(t,e.length);for(let o=0;o<n;o+=1)r+=e[o]/Math.log2(o+2);return r}function Vi(e,t,r){if(t.size===0)return 0;let n=e.map(a=>t.has(a)?1:0),o=An(n,r),i=Array.from({length:t.size},()=>1),s=An(i,r);return s===0?0:o/s}function Ki(e,t,r){let n=Math.min(r,e.length);for(let o=0;o<n;o+=1)if(t.has(e[o]))return 1/(o+1);return 0}function mt(e,t,r){let n=Math.min(r,e.length),o=0;for(let i=0;i<n;i+=1)t.has(e[i])&&(o+=1);return o}function Qi(e,t,r){return r<=0?0:mt(e,t,r)/r}function Yi(e,t,r){return t.size===0?0:mt(e,t,r)/t.size}function Tn(e,t,r){return{ndcg:Vi(e,t,r),mrr:Ki(e,t,r),precision:Qi(e,t,r),recall:Yi(e,t,r),relevant_total:t.size,retrieved_relevant:mt(e,t,r)}}function Mn(e){let t=e.length;if(t===0)return{ndcg:0,mrr:0,precision:0,recall:0,query_count:0};let r=e.reduce((n,o)=>({ndcg:n.ndcg+o.ndcg,mrr:n.mrr+o.mrr,precision:n.precision+o.precision,recall:n.recall+o.recall}),{ndcg:0,mrr:0,precision:0,recall:0});return{ndcg:r.ndcg/t,mrr:r.mrr/t,precision:r.precision/t,recall:r.recall/t,query_count:t}}function Xi(e,t){if(typeof e!="object"||e===null)throw new T(`Eval query at index ${t} must be an object`);let r=e,n=typeof r.query=="string"?r.query.trim():"";if(n.length===0)throw new T(`Eval query at index ${t} must have a non-empty "query" string`);if(!Array.isArray(r.relevant_ids))throw new T(`Eval query at index ${t} must have a "relevant_ids" array`);if(r.relevant_ids.some(i=>typeof i!="string"))throw new T(`Eval query at index ${t} must have a "relevant_ids" array of strings`);let o=[...new Set(r.relevant_ids.map(i=>i.trim()).filter(i=>i.length>0))];if(o.length===0)throw new T(`Eval query at index ${t} must list at least one relevant id`);if(r.mode!==void 0&&(typeof r.mode!="string"||!zi.has(r.mode)))throw new T(`Eval query at index ${t} has an invalid mode (expected keyword|semantic|hybrid)`);return{query:n,relevant_ids:o,...r.mode!==void 0?{mode:r.mode}:{},...typeof r.description=="string"&&r.description.trim().length>0?{description:r.description.trim()}:{}}}function ft(e){let t=typeof e=="object"&&e!==null&&!Array.isArray(e)?e.schema:void 0;if(t!==void 0&&t!==U)throw new T(`Unsupported eval query set schema; expected "${U}"`);let r=Array.isArray(e)?e:typeof e=="object"&&e!==null?e.queries:void 0;if(!Array.isArray(r))throw new T('Eval query set must be an array of queries or an object with a "queries" array');if(r.length===0)throw new T("Eval query set must contain at least one query");return{schema:U,queries:r.map((n,o)=>Xi(n,o))}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="48888c80-60e1-5905-afd5-8c1b6e532f99")}catch{}})();function Fn(e){if(typeof e!="string")return!1;let t=e.split(",").map(r=>r.trim().toLowerCase()).filter(Boolean);return t.length===1&&t[0]==="all"}var Ji=[{optionKey:"status",summaryKey:"status",normalize:e=>Fn(e)?"all":e},{optionKey:"type",summaryKey:"type"},{optionKey:"tag",summaryKey:"tag"},{optionKey:"priority",summaryKey:"priority"},{optionKey:"deadlineBefore",summaryKey:"deadline_before"},{optionKey:"deadlineAfter",summaryKey:"deadline_after"},{optionKey:"updatedAfter",summaryKey:"updated_after"},{optionKey:"updatedBefore",summaryKey:"updated_before"},{optionKey:"createdAfter",summaryKey:"created_after"},{optionKey:"createdBefore",summaryKey:"created_before"},{optionKey:"assignee",summaryKey:"assignee"},{optionKey:"sprint",summaryKey:"sprint"},{optionKey:"release",summaryKey:"release"},{optionKey:"parent",summaryKey:"parent"}];function le(e){let{mode:t,matchMode:r,options:n,includeLinked:o,titleExact:i,phraseExact:s,scoreThreshold:a,hybridSemanticWeight:u,runtimeFieldFilters:c}=e,l={};return sn(l,n,Ji),Object.assign(l,st(n)),Object.assign(l,it(n)),r!==void 0&&r!=="or"&&(l.match_mode=r),o&&(l.include_linked=!0),i&&(l.title_exact=!0),s&&(l.phrase_exact=!0),a>0&&(l.score_threshold=a),t==="hybrid"&&n.semanticWeight!==void 0&&(l.hybrid_semantic_weight=u),n.limit!==void 0&&(l.limit=n.limit),c&&Object.keys(c).length>0&&(l.runtime_filters=c),l}function de(e){let{effectiveMode:t,matchMode:r,options:n,includeLinked:o,titleExact:i,phraseExact:s,scoreThreshold:a,hybridSemanticWeight:u,queryExpansion:c,rerank:l,runtimeFieldFilters:d}=e,m=p=>p??null;return{mode:t,match_mode:r,status:n.status===void 0||Fn(n.status)?"all":n.status,type:m(n.type),tag:m(n.tag),priority:m(n.priority),deadline_before:m(n.deadlineBefore),deadline_after:m(n.deadlineAfter),updated_after:m(n.updatedAfter),updated_before:m(n.updatedBefore),created_after:m(n.createdAfter),created_before:m(n.createdBefore),assignee:m(n.assignee),sprint:m(n.sprint),release:m(n.release),parent:m(n.parent),...st(n),...it(n),include_linked:o,title_exact:i,phrase_exact:s,score_threshold:a,hybrid_semantic_weight:t==="hybrid"?u:null,query_expansion_enabled:c.enabled,query_expansion_provider:c.provider,rerank_enabled:l.enabled,rerank_model:l.model,rerank_top_k:l.top_k,limit:m(n.limit),runtime_filters:d}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="91b01dd0-6a8d-5b97-96d2-c27f4044c009")}catch{}})();function Zi(e){return or("search",{query:e.query.trim(),mode:e.mode,options:nr(e.searchOptions,Lr)})}function Pn(e){let t=ir(e.sorted,{cursor:e.searchOptions.after,fingerprint:Zi(e),limit:e.limit,readId:r=>r.item.id});return{limited:t.rows,pageExtras:{applied_limit:e.limit,...t.has_more?{has_more:!0,truncated:!0}:{},...t.next_cursor?{next_cursor:t.next_cursor}:{}}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fdd0f9b0-bd89-5cc1-9b20-bea153f4d896")}catch{}})();function Dn(e){if(e===void 0)return"keyword";let t=e.trim().toLowerCase();if(t!=="keyword"&&t!=="semantic"&&t!=="hybrid")throw new h("Search mode must be one of keyword|semantic|hybrid",f.USAGE);return t}function je(e){return e===!0}function Ln(e){return Ut(e,0,1)??void 0}function Hn(e){if(e===void 0)return"or";let t=e.trim().toLowerCase();if(t!=="and"&&t!=="or"&&t!=="exact")throw new h("Search --match-mode must be one of and|or|exact",f.USAGE);return t}function jn(e){if(e==null||e==="")return;let t=typeof e=="number"?e:Number(String(e).trim());if(!Number.isFinite(t)||t<0)throw new h("Search --min-score must be a finite number >= 0",f.USAGE);return t}function Z(e,t){if(e==null)return;let r=String(e).trim();if(r.length!==0)return Be(r,new Date,t)}function j(e){return e.toLowerCase().replace(/\s+/g," ").trim()}function ht(e,t){if(e!==void 0)return Be(e,new Date,t)}function es(e){if(e===void 0)return;let t=e.split(",").map(r=>r.trim()).filter(r=>r.length>0);if(t.length===0)throw new h("Search --fields requires a comma-separated list of field names",f.USAGE);return[...new Set(t)]}function pt(e,t="<query>"){let r=e.compact===!0,n=e.full===!0,o=es(e.fields);if(Number(r)+Number(n)+ +(o!==void 0)>1)throw new h("Search projection options are mutually exclusive. Use one of --compact, --full, or --fields.",f.USAGE,{code:"projection_options_mutually_exclusive",recovery:{suggested_retry:Y(["search",t,"--full"]),suggested_retry_args:["search",t,"--full"]}});return r?{mode:"compact",fields:[...nt]}:n?{mode:"full",fields:[]}:o?{mode:"fields",fields:o}:{mode:"full",fields:[]}}function gt(e,t,r="<query>"){if(e.mode!=="fields")return;let n=ot(t.definitions.flatMap(s=>[s.key,s.metadata_key])),o=new Set(n),i=e.fields.filter(s=>{let a=s.trim();return!o.has(a)});if(i.length>0){let s=["search",r,"--fields","id,title,status,score"];throw new h(`Unknown search --fields value(s): ${i.join(", ")}`,f.USAGE,{code:"unknown_field_projection",examples:["pm search <query> --fields id,title,status,score","pm search <query> --fields id,title,item.description,matched_fields"],nextSteps:["Use item.<field> for explicit item metadata fields, or run pm search --help for projection examples."],recovery:{allowed_values:n,suggested_retry:Y(s),suggested_retry_args:s}})}}function yt(e){let t=j(e);if(!t)throw new h("Search query must not be empty",f.USAGE);return t.split(/\s+/u).filter(Boolean)}function _t(e){let t=e.search?.max_results;return typeof t=="number"&&Number.isFinite(t)&&t>0?Math.floor(t):50}function wt(e){let t=e.search?.score_threshold;return typeof t=="number"&&Number.isFinite(t)?t:0}function vt(e){let t=e.search?.hybrid_semantic_weight;return typeof t=="number"&&Number.isFinite(t)&&t>=0&&t<=1?t:.7}function bt(e){let t={title_exact_bonus:10,title_weight:48,description_weight:5,tags_weight:6,status_weight:2,body_weight:1,comments_weight:1,notes_weight:1,learnings_weight:1,reminders_weight:2,events_weight:2,dependencies_weight:3,linked_content_weight:1},r=e.search?.tuning;if(!r)return t;let n=(o,i)=>typeof o=="number"&&Number.isFinite(o)&&o>=0?o:i;return{title_exact_bonus:n(r.title_exact_bonus,t.title_exact_bonus),title_weight:n(r.title_weight,t.title_weight),description_weight:n(r.description_weight,t.description_weight),tags_weight:n(r.tags_weight,t.tags_weight),status_weight:n(r.status_weight,t.status_weight),body_weight:n(r.body_weight,t.body_weight),comments_weight:n(r.comments_weight,t.comments_weight),notes_weight:n(r.notes_weight,t.notes_weight),learnings_weight:n(r.learnings_weight,t.learnings_weight),reminders_weight:n(r.reminders_weight,t.reminders_weight),events_weight:n(r.events_weight,t.events_weight),dependencies_weight:n(r.dependencies_weight,t.dependencies_weight),linked_content_weight:n(r.linked_content_weight,t.linked_content_weight)}}import qe from"node:fs/promises";import kt from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e2985104-efdb-59e5-9674-2dd865ebdf56")}catch{}})();var Et=4,ts=20,rs=200,ns=new Set(["a","an","and","for","from","in","into","of","on","or","the","to","with"]);function St(e,t){let r=[],n=new Set;for(let o of e){let i=o.trim().replaceAll(/\s+/g," ");if(i.length===0)continue;let s=i.toLowerCase();if(!n.has(s)&&(n.add(s),r.push(i),r.length>=t))break}return r}function os(e){let t=e.toLowerCase();return t.length>4&&t.endsWith("ies")?`${t.slice(0,-3)}y`:t.length>4&&(t.endsWith("ches")||t.endsWith("shes")||t.endsWith("xes")||t.endsWith("zes")||t.endsWith("sses"))?t.slice(0,-2):t.length>3&&t.endsWith("s")&&!t.endsWith("ss")&&!t.endsWith("us")&&!t.endsWith("is")&&!t.endsWith("as")?t.slice(0,-1):t}function is(e){let t=e.toLowerCase();return t.length>2&&(!t.endsWith("s")||t.endsWith("ss"))?t.endsWith("y")&&!/[aeiou]y$/u.test(t)?`${t.slice(0,-1)}ies`:t.endsWith("ch")||t.endsWith("sh")||t.endsWith("x")||t.endsWith("z")||t.endsWith("ss")?`${t}es`:`${t}s`:t}function On(e,t=Et){let r=e.trim().replaceAll(/\s+/g," ");if(r.length===0)return[];let n=X(r);if(n.length===0)return[r];let o=n.filter(a=>!ns.has(a.toLowerCase())),i=n.map(a=>os(a)),s=o.map(a=>is(a));return St([r,n.join(" "),o.join(" "),i.join(" "),s.join(" ")],Math.max(1,t))}function qn(e){let t=Array.isArray(e)?e:e?.queries;return Array.isArray(t)?St(t.filter(r=>typeof r=="string"),Et):[]}function Un(e,t,r){return St([...e,...t],Math.max(1,r))}function Nn(e,t){let n=e.search?.query_expansion,o=ee(n?.provider);return{enabled:n?.enabled===!0,provider:o??t,max_queries:Et}}function Gn(e,t){let n=e.search?.rerank,o=ee(n?.model),s=he(n?.top_k)??ts;return{enabled:n?.enabled===!0,model:o??t,top_k:Math.min(rs,s)}}function Wn(e){let t=Array.isArray(e)?e:e?.hits;if(!Array.isArray(t))return[];let r=new Map;for(let o of t){if(typeof o!="object"||o===null)continue;let i=ee(o.id),s=o.score;if(!i||typeof s!="number"||!Number.isFinite(s))continue;let a=r.get(i);(a===void 0||s>a)&&r.set(i,s)}let n=[...r.entries()].map(([o,i])=>({id:o,score:i}));return n.sort((o,i)=>o.score!==i.score?i.score-o.score:o.id.localeCompare(i.id)),n}function ss(e,t){let r=e.length,n=0;for(let o=0;o<r;o+=1)n+=e[o]*t[o];return n}function Bn(e){let t=0;for(let r=0;r<e.length;r+=1)t+=e[r]*e[r];return Math.sqrt(t)}function as(e,t,r){if(!e||!t||e.length===0||t.length===0||e.length!==t.length)return 0;let n=ss(e,t),o=Bn(t),i=r*o;return!Number.isFinite(n)||!Number.isFinite(r)||!Number.isFinite(o)||!Number.isFinite(i)||i===0?0:Math.max(-1,Math.min(1,n/i))}async function $n(e,t,r,n,o){if(n.length===0)return new Map;let i=ee(t)??e.model,s=i===e.model?e:{...e,model:i},a=[r.trim(),...n.map(m=>m.text)],u=await Ce(s,a,o?{timeout_ms:o}:{}),c=u[0];if(!c)return new Map;let l=Bn(c),d=new Map;for(let m=0;m<n.length;m+=1){let p=n[m],y=u[m+1];if(!y)continue;let _=as(c,y,l);d.set(p.id,Math.max(0,Math.min(1,(_+1)/2)))}return d}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="bc52818b-d37f-5d00-954d-d50203a433c2")}catch{}})();var cs=1.2,ls=.75;function It(e){return X(e)}function ds(e){let t=new Map;for(let r of e)t.set(r,(t.get(r)??0)+1);return t}function Vn(e){let t=[],r=new Map,n=0;for(let i of e){let s=It(i.text),a=ds(s);n+=s.length;for(let u of a.keys())r.set(u,(r.get(u)??0)+1);t.push({id:i.id,termFrequencies:a,length:s.length})}let o=t.length;return{documents:t,documentFrequency:r,documentCount:o,averageDocumentLength:o>0?n/o:0}}function us(e,t){return Math.log(1+(e-t+.5)/(t+.5))}function Kn(e,t,r){let n=new Map;if(e.documentCount===0||e.averageDocumentLength===0)return n;let o=[...new Set(t.filter(s=>s.length>0))];if(o.length===0)return n;let i=new Map;for(let s of o){let a=e.documentFrequency.get(s);a!==void 0&&i.set(s,us(e.documentCount,a))}if(i.size===0)return n;for(let s of e.documents){let a=0;for(let[u,c]of i){let l=s.termFrequencies.get(u);if(l===void 0)continue;let d=1-r.b+r.b*s.length/e.averageDocumentLength,m=l+r.k1*d;a+=c*(l*(r.k1+1)/m)}a>0&&n.set(s.id,a)}return n}function zn(e,t,r,n){return typeof e!="number"||!Number.isFinite(e)?t:Math.min(n,Math.max(r,e))}function Qn(e){let t=r=>typeof r=="string"?[r]:typeof r=="number"?[String(r)]:Array.isArray(r)?r.flatMap(t):typeof r=="object"&&r!==null?Object.values(r).flatMap(t):[];return t(Object.values(e)).join(" ")}function Yn(e){let t=e?.search?.bm25;return{k1:zn(t?.k1,cs,0,1e3),b:zn(t?.b,ls,0,1)}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="83c28598-a965-5d1f-99cb-ecfc77c0736d")}catch{}})();var ms=2,fs=120,hs=6,ps=40,gs=1e3,ys=900,_s="\xAB",ws="\xBB",Xn=60,eo=["tag","status","type","priority"];function to(e){let t=[],r=e;for(let n=0;n<5&&r&&typeof r=="object";n+=1){let o=r.code;typeof o=="string"&&t.push(o.toLowerCase()),r=r.cause}return t.join(" ")}function ro(e){let t=(e instanceof Error?e.message:String(e)).toLowerCase(),r=to(e),n=`${t} ${r}`;return n.includes("timed out")||n.includes("timeout")||n.includes("etimedout")?"timeout":n.includes("econnrefused")||n.includes("connection refused")||n.includes("connect ")||n.includes("enotfound")||n.includes("eai_again")||n.includes("econnreset")||n.includes("fetch failed")?"connection":"error"}function no(e,t){let r=ro(t);return`search_${e}_fallback:${r}:using_keyword_mode`}function vs(e){return e?.commands?.some(r=>r.command.trim()==="reindex")===!0?{command:"pm reindex --mode hybrid",args:["reindex","--mode","hybrid"]}:{command:"pm install search-advanced --project",args:["install","search-advanced","--project"],follow_up_command:"pm reindex --mode hybrid",follow_up_args:["reindex","--mode","hybrid"]}}async function oo(e,t,r){try{let n=await Pr(e);n.warnings.length>0&&r.push(...n.warnings);let o=Qr(t.map(s=>({id:s.metadata.id,updated_at:s.metadata.updated_at})),n.entries);if(o.length===0)return;let i=vs(C());r.push(...bs(o.length,i)),process.stderr.write(`[pm] warning: ${o.length} item${o.length===1?" is":"s are"} new or modified since the last reindex and ${o.length===1?"is":"are"} NOT in the semantic index yet \u2014 run '${i.command}'${i.follow_up_command?`, then '${i.follow_up_command}'`:""}. (Write-time embedding is governed by search.mutation_refresh_policy; staleness means the embed was skipped, failed, or the backend was unreachable.)
|
|
2
|
-
`)}catch{}}function bs(e,t){return[`vector_index_stale:${e}`,`vector_index_recovery:${t.args.join(" ")}`,...t.follow_up_args?[`vector_index_recovery_follow_up:${t.follow_up_args.join(" ")}`]:[]]}var ed={applyFilters:uo,applyExactQueryFilters:lo,applyInlineQueryFilters:so,buildHitHighlights:_o,buildVerboseSearchFilters:de,buildExplicitSemanticFallbackWarning:no,buildCompactSearchFilterSummary:le,buildHybridLexicalScore:bo,buildRerankCorpus:To,buildSemanticHits:Ro,classifyImplicitSemanticFallbackReason:ro,collectErrorCauseCodes:to,collectExactPhraseFields:ao,collectLinkedPaths:mo,combineHybridHits:Mt,computeBuiltInBm25Hits:Ao,computeSemanticOrHybridHits:Mo,resolveBuiltInBm25Mode:ko,countOccurrences:Ct,dependencyEntries:At,documentContainsExactPhrase:co,emptySearchResult:Eo,highlightFieldSnippet:yo,loadDocuments:Fo,markTokenRuns:go,parseInlineQueryFilters:io,maybeEmitVectorIndexStaleWarning:oo,loadLinkedCorpus:ho,mergeVectorHitsById:Co,normalizeExtensionProviderHits:xo,normalizeScoreMap:xt,parseProjectionConfig:pt,parseTimestampWindow:Z,parseTokens:yt,projectSearchHits:Do,readSearchFieldValue:Po,requireSemanticDependencies:Tt,resolveExtensionSearchProvider:So,resolveExtensionSearchProviderByName:Ge,resolveExtensionVectorAdapter:Io,resolveLinkedCorpusRoots:fo,scoreDocument:wo,sortHits:vo,stringArray:Ne,textEntries:V,validateSearchProjectionFields:gt};function io(e){let t={},r=[];for(let n of e.split(/\s+/).filter(o=>o.length>0)){let o=n.indexOf(":"),i=o>0?n.slice(0,o).toLowerCase():"",s=o>0?n.slice(o+1):"",a=eo.includes(i)?i:void 0;if(a&&s.length>0&&t[a]===void 0){t[a]=s;continue}r.push(n)}return{residualQuery:r.join(" "),inlineFilters:t}}function so(e,t,r){let n={...e};for(let o of eo){let i=t[o];if(i!==void 0){if(We(n[o])!==void 0){r.push(`search_inline_filter_ignored:${o}:flag_takes_precedence`);continue}n[o]=i}}return n}function Ne(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function V(e){return Array.isArray(e)?e.filter(t=>typeof t=="object"&&t!==null&&typeof t.text=="string"):[]}function At(e){return Array.isArray(e)?e.filter(t=>typeof t=="object"&&t!==null&&typeof t.id=="string"&&typeof t.kind=="string"):[]}function ao(e){let t=e.metadata;return[t.title,t.description,t.status,Ne(t.tags).join(" "),e.body,V(t.comments).map(r=>r.text).join(" "),V(t.notes).map(r=>r.text).join(" "),V(t.learnings).map(r=>r.text).join(" "),Ye(t).join(" "),Xe(t).join(" "),At(t.dependencies).map(r=>`${r.id} ${r.kind}`).join(" "),Je(t)]}function co(e,t){return ao(e).some(r=>j(r).includes(t))}function lo(e,t,r){return!r.titleExact&&!r.phraseExact?e:e.filter(n=>!(r.titleExact&&j(n.metadata.title)!==t||r.phraseExact&&!co(n,t)))}function Es(e){if(e&&[...e].some(t=>t.toLowerCase()==="none"||t.toLowerCase()==="null"))throw new h('--assignee no longer accepts "none" or "null".',f.USAGE)}function Ss(e,t,r){let n=ae(e.assignee,{label:"--assignee"});Es(n);let o=nn(e),i=on(e);return{typeFilter:Xr(e.type,t),tagFilter:ae(e.tag,{label:"--tag",normalize:s=>s.toLowerCase()}),priorityFilter:Jr(e.priority),deadlineBefore:ht(e.deadlineBefore,"deadline-before"),deadlineAfter:ht(e.deadlineAfter,"deadline-after"),updatedAfter:Z(e.updatedAfter,"updated-after"),updatedBefore:Z(e.updatedBefore,"updated-before"),createdAfter:Z(e.createdAfter,"created-after"),createdBefore:Z(e.createdBefore,"created-before"),assigneeFilter:n,sprintFilter:ae(e.sprint,{label:"--sprint"}),releaseFilter:ae(e.release,{label:"--release"}),parentFilter:e.parent?.trim(),statusSet:r&&r.length>0?new Set(r):void 0,missingMetadataFilters:o,missingMetadataActive:Zr(o),contentFieldFilters:i,contentFiltersActive:tn(i)}}function Is(e,t){return xs(e,t)&&Rs(e,t)&&ks(e,t)}function xs(e,t){if(t.statusSet&&!t.statusSet.has(e.status)||t.typeFilter&&!t.typeFilter.has(e.type))return!1;let r=t.tagFilter;return!(r&&!Ne(e.tags).some(n=>r.has(n))||t.priorityFilter!==void 0&&!t.priorityFilter.has(e.priority))}function Rs(e,t){return Gt(e,t)}function ks(e,t){return!(t.assigneeFilter!==void 0&&(e.assignee===void 0||!t.assigneeFilter.has(e.assignee))||t.sprintFilter!==void 0&&(e.sprint===void 0||!t.sprintFilter.has(e.sprint))||t.releaseFilter!==void 0&&(e.release===void 0||!t.releaseFilter.has(e.release))||t.parentFilter!==void 0&&e.parent!==t.parentFilter)}function As(e,t,r,n){let o=e.metadata;return!(!Is(o,t)||!Er(o,r)||t.missingMetadataActive&&!en(o,t.missingMetadataFilters,n)||t.contentFiltersActive&&!rn(o,t.contentFieldFilters))}function uo(e,t,r,n,o,i){let s=Ss(t,r,o);return e.filter(a=>As(a,s,n,i))}function Ct(e,t){let r=0,n=0;for(;;){let o=e.indexOf(t,n);if(o<0)return r;r+=1,n=o+t.length}}function Cs(e){return X(e)}function mo(e){let t=(e.files??[]).map(s=>({scope:s.scope,path:s.path.trim()})),r=(e.docs??[]).map(s=>({scope:s.scope,path:s.path.trim()})),n=(e.tests??[]).filter(s=>typeof s.path=="string"&&s.path.trim().length>0).map(s=>({scope:s.scope,path:s.path.trim()})),o=[...t,...r,...n].filter(s=>s.path.length>0).sort((s,a)=>s.scope.localeCompare(a.scope)||s.path.localeCompare(a.path)),i=new Map;for(let s of o)i.set(`${s.scope}:${s.path}`,s);return[...i.values()]}async function Jn(e){let t=kt.resolve(e);try{let r=await qe.realpath(t);return{resolved:t,realpath:r}}catch{return null}}async function fo(e,t){let[r,n]=await Promise.all([Jn(e),Jn(t)]);return{projectContainmentRoot:r,globalContainmentRoot:n}}async function ho(e,t){let r=mo(e.metadata),n=[];for(let o of r){let i=o.scope==="global"?t.globalContainmentRoot:t.projectContainmentRoot;if(!i)continue;let s=kt.resolve(i.resolved,o.path);if(!$e(i.resolved,s))continue;let a;try{a=await qe.realpath(s)}catch{continue}if($e(i.realpath,a))try{await te({path:s,scope:o.scope}),n.push(await qe.readFile(s,"utf8"))}catch{}}return n.join(`
|
|
3
|
-
`)}var po=[{name:"title",weightKey:"title_weight",value:e=>e.metadata.title},{name:"description",weightKey:"description_weight",value:e=>e.metadata.description},{name:"tags",weightKey:"tags_weight",value:e=>Ne(e.metadata.tags).join(" ")},{name:"status",weightKey:"status_weight",value:e=>typeof e.metadata.status=="string"?e.metadata.status:""},{name:"body",weightKey:"body_weight",value:e=>e.body},{name:"comments",weightKey:"comments_weight",value:e=>V(e.metadata.comments).map(t=>t.text).join(" ")},{name:"notes",weightKey:"notes_weight",value:e=>V(e.metadata.notes).map(t=>t.text).join(" ")},{name:"learnings",weightKey:"learnings_weight",value:e=>V(e.metadata.learnings).map(t=>t.text).join(" ")},{name:"reminders",weightKey:"reminders_weight",value:e=>Ye(e.metadata).join(" ")},{name:"events",weightKey:"events_weight",value:e=>Xe(e.metadata).join(" ")},{name:"dependencies",weightKey:"dependencies_weight",value:e=>At(e.metadata.dependencies).map(t=>`${t.id} ${t.kind}`).join(" ")},{name:"plan",weightKey:"body_weight",value:e=>Je(e.metadata)}],Ts=new Map(po.map(e=>[e.name,e]));function Ms(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function go(e,t){let r=t.filter(o=>o.length>0).sort((o,i)=>i.length-o.length).map(Ms);if(r.length===0)return e;let n=new RegExp(r.join("|"),"gi");return e.replace(n,o=>`${_s}${o}${ws}`)}function yo(e,t){if(e.length===0)return null;let r=e.toLowerCase(),n=-1,o=0;for(let l of t){if(l.length===0)continue;let d=r.indexOf(l);d>=0&&(n<0||d<n)&&(n=d,o=l.length)}if(n<0)return null;let i=Math.max(0,n-Xn),s=Math.min(e.length,n+o+Xn),a=go(e.slice(i,s),t),u=i>0?"\u2026":"",c=s<e.length?"\u2026":"";return`${u}${a}${c}`}function _o(e,t,r){let n=[];for(let o of t){let i=Ts.get(o);if(i===void 0)continue;let s=yo(i.value(e),r);s!==null&&n.push({field:o,snippet:s})}return n}function Fs(e,t,r){return[...po.map(n=>({name:n.name,value:n.value(e),weight:r[n.weightKey]})),{name:"linked_content",value:t,weight:r.linked_content_weight}]}function Ps(e,t,r){let n=j(e.id),o=typeof r=="string"?r.trim().toLowerCase():"",i=j(o),s=i.length>0&&n.startsWith(i)?n.slice(i.length).trim():n;return t!==n&&t!==s?null:{item:e,score:t===n?gs:ys,matched_fields:["id"],matched_all_terms:!0,exact_id_match:!0}}function Ds(e,t,r,n,o){for(let i of e){let s=t.get(i)??0;s>0&&(o.score+=s*n.title_exact_bonus,o.matched.add("title"),o.matchedTokens.add(i));for(let a of r){let u=Ct(a.value.toLowerCase(),i);u>0&&(o.score+=u*a.weight,o.matched.add(a.name),o.matchedTokens.add(i))}}}function Ls(e,t,r,n){j(e.title)===t&&(n.score+=fs,n.matched.add("title"));for(let i of r){let s=Ct(j(i.value),t);s>0&&(n.score+=s*i.weight*hs,n.matched.add(i.name))}}function wo(e,t,r,n,o,i,s=!1){let a=e.metadata,u=Ps(a,r,i);if(u)return u;let c=new Map;for(let _ of Cs(a.title))c.set(_,(c.get(_)??0)+1);let l=Fs(e,n,o),d={score:0,matched:new Set,matchedTokens:new Set};Ds(t,c,l,o,d);let m=new Set(t),p=m.size>0&&d.matchedTokens.size===m.size;return s&&m.size>1&&p&&(d.score+=ps),t.length>=ms&&r.includes(" ")&&Ls(a,r,l,d),d.score<=0?null:{item:a,score:d.score,matched_fields:[...d.matched].sort((_,g)=>_.localeCompare(g)),matched_all_terms:p}}function vo(e,t){return[...e].sort((r,n)=>{let o=n.score-r.score;if(o!==0)return o;let i=re(r.item.status,t),s=re(n.item.status,t);if(i!==s)return i?1:-1;let a=r.item.priority-n.item.priority;if(a!==0)return a;let u=Nt(n.item.updated_at,r.item.updated_at);return u!==0?u:r.item.id.localeCompare(n.item.id)})}function bo(e,t,r,n,o,i,s,a=!1){return wo(e,t,r,n?o.get(e.metadata.id)??"":"",i,s,a)}function xt(e){if(e.size===0)return new Map;let t=[...e.values()],r=Math.min(...t),n=Math.max(...t);if(n===r)return new Map([...e.keys()].map(i=>[i,1]));let o=new Map;for(let[i,s]of e)o.set(i,(s-r)/(n-r));return o}function Eo(e,t,r,n,o,i,s,a,u,c,l,d,m=!1){let p=m?{total:0,count_only:!0}:{};if(c.mode==="compact"&&n.compact===!0){let g=le({mode:t,matchMode:r,options:n,includeLinked:o,titleExact:n.titleExact===!0,phraseExact:n.phraseExact===!0,scoreThreshold:i,hybridSemanticWeight:s,runtimeFieldFilters:d});return{query:e.trim(),mode:t,items:[],count:0,...p,filters:g,...l.length>0?{warnings:l}:{}}}let _=c.mode==="full"?null:[...c.fields];return{query:e.trim(),mode:t,items:[],count:0,...p,filters:de({effectiveMode:t,matchMode:r,options:n,includeLinked:o,titleExact:n.titleExact===!0,phraseExact:n.phraseExact===!0,scoreThreshold:i,hybridSemanticWeight:s,queryExpansion:a,rerank:u,runtimeFieldFilters:d??{}}),projection:{mode:c.mode,fields:_},now:x(),...l.length>0?{warnings:l}:{}}}function Tt(e,t,r,n){if(!t.active)throw new h(`Search mode '${e}' requires a configured embedding provider in settings.providers.openai or settings.providers.ollama`,f.USAGE);if(!r.active&&!n)throw new h(`Search mode '${e}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`,f.USAGE);return{provider:t.active,vectorStore:r.active??null}}var D=We;function Ge(e){let t=C(),r=Vt(t,e);if(!r)return null;let n=r.runtime_definition??r.definition,o=n.query,i=n.queryExpansion??n.query_expansion,s=n.rerank,a=D(n.name)??D(r.definition.name)??e;if(!a)return null;let u={providerName:a,...typeof o=="function"?{query:o}:{},...typeof i=="function"?{queryExpansion:i}:{},...typeof s=="function"?{rerank:s}:{}};return!u.query&&!u.queryExpansion&&!u.rerank?null:u}function So(e){let t=D(e.search?.provider),r=Ge(t);return r?.query?{providerName:r.providerName,query:r.query}:null}function Io(e){let t=C(),r=D(e.vector_store?.adapter),n=Kt(t,r);if(!n)return null;let o=n.runtime_definition??n.definition,i=o.query;if(typeof i!="function")return null;let s=o.upsert;return{adapterName:D(o.name)??D(n.definition.name)??r??"extension",query:i,...typeof s=="function"?{upsert:s}:{}}}function xo(e,t,r){let n=Array.isArray(t)?t:t?.hits;if(!Array.isArray(n))throw new h(`Extension search provider "${e}" must return an array of hits or { hits: [...] }`,f.GENERIC_FAILURE);let o=new Set,i=[];for(let s of n){if(typeof s!="object"||s===null)continue;let a=D(s.id),u=s.score;if(!a||typeof u!="number"||!Number.isFinite(u)||o.has(a))continue;let c=r.get(a);if(!c)continue;let l=s.matched_fields,d=Array.isArray(l)&&l.every(m=>typeof m=="string")?[...new Set(l.map(m=>m.trim()).filter(m=>m.length>0))].sort((m,p)=>m.localeCompare(p)):[`provider:${e}`];o.add(a),i.push({item:c.metadata,score:u,matched_fields:d})}return i}function Ro(e,t){let r=[],n=new Map;for(let o of e){if(n.has(o.id))continue;let i=t.get(o.id);i&&(n.set(o.id,o.score),r.push({item:i.metadata,score:o.score,matched_fields:["semantic"]}))}return{semanticHits:r,semanticScores:n}}function Ue(e,t){let r=t.filter(c=>c.exact_id_match===!0);if(r.length===0)return e;let n=new Set(r.map(c=>c.item.id)),o=e.filter(c=>!n.has(c.item.id)),i=o.reduce((c,l)=>Math.max(c,l.score),0),s=r.sort((c,l)=>l.score-c.score),a=i+s.length+1;return[...s.map((c,l)=>({...c,score:a-l,matched_fields:["id"]})),...o]}function Mt(e,t,r,n,o="semantic"){let i=new Map(r.map(d=>[d.item.id,d.score])),s=new Map(r.map(d=>[d.item.id,d.matched_fields])),a=xt(t),u=xt(i),c=new Set([...t.keys(),...i.keys()]),l=1-n;return[...c].map(d=>{let m=e.get(d),p=a.get(d)??0,y=u.get(d)??0,_=p*n+y*l;if(_<=0)return null;let g=new Set;t.has(d)&&g.add(o);for(let w of s.get(d)??[])g.add(w);return{item:m.metadata,score:_,matched_fields:[...g].sort((w,b)=>w.localeCompare(b))}}).filter(d=>d!==null)}function ko(e){let t=e.configuredProvider?.trim().toLowerCase();return t==="bm25"?"explicit":t==="auto"&&!e.hasEmbeddingProvider&&!e.hasExtensionSearchProvider?"auto-fallback":null}function Ao(e){let t=e.filteredDocuments.map(s=>({id:s.metadata.id,text:Qn(Mr(s,{fields:e.corpusFields}))})),r=Vn(t),n=Kn(r,It(e.query),e.bm25Params),o=new Map(e.filteredDocuments.map(s=>[s.metadata.id,s]));if(e.requestedMode==="semantic"){let s=[...n].map(([a,u])=>({item:o.get(a).metadata,score:u,matched_fields:["bm25"]}));return Ue(s,e.keywordHits)}let i=Mt(o,n,e.keywordHits,e.hybridSemanticWeight,"bm25");return Ue(i,e.keywordHits)}function Co(e){let t=new Map;for(let n of e)for(let o of n){let i=t.get(o.id);(!i||o.score>i.score)&&t.set(o.id,o)}let r=[...t.values()];return r.sort((n,o)=>n.score!==o.score?o.score-n.score:n.id.localeCompare(o.id)),r}function To(e){let t=e.metadata,r=Array.isArray(t?.tags)?t.tags.join(" "):"";return[t?.title,t?.description,t?.type,t?.status,r,e.body].map(n=>typeof n=="string"?n.trim():"").filter(n=>n.length>0).join(`
|
|
4
|
-
`)}async function Hs(e,t){let r=e.queryExpansion.enabled?On(t,e.queryExpansion.max_queries):[t],n=r.length>0?r:[t];if(!e.queryExpansion.enabled)return n;if(e.queryExpansionExtension?.expand)try{let o=await Promise.resolve(e.queryExpansionExtension.expand({query:t,mode:e.requestedMode,settings:e.settings}));return Un(n,qn(o),e.queryExpansion.max_queries)}catch{return e.warnings.push(`search_query_expansion_provider_failed:${e.queryExpansionExtension.providerName}:using_builtin`),n}return e.queryExpansion.provider&&e.queryExpansion.provider!=="openai"&&e.queryExpansion.provider!=="ollama"&&e.warnings.push(`search_query_expansion_provider_unavailable:${e.queryExpansion.provider}:using_builtin`),n}async function js(e,t,r,n){if(e.extensionVectorAdapter?.query)try{return await Promise.resolve(e.extensionVectorAdapter.query({vector:t,limit:r,settings:e.settings}))}catch(o){if(!e.vectorStore)throw new h(`Extension vector adapter query failed and no built-in fallback store is configured (${o instanceof Error?o.message:String(o)})`,f.GENERIC_FAILURE);return e.warnings.push(`search_vector_adapter_failed:${e.extensionVectorAdapter.adapterName}:using_builtin`),await Ze(e.vectorStore,t,r,n)}if(e.vectorStore)return await Ze(e.vectorStore,t,r,n);throw new h("Semantic search requires either a configured vector store or an extension vector adapter query handler",f.USAGE)}function Os(e,t,r){return[...e].sort((o,i)=>o.score!==i.score?i.score-o.score:o.item.id.localeCompare(i.item.id)).slice(0,r).map(o=>{let i=t.get(o.item.id);return i?{hit:o,text:To(i)}:null}).filter(o=>o!==null)}async function qs(e,t,r){if(!e.rerankExtension?.rerank)return null;try{let n=await Promise.resolve(e.rerankExtension.rerank({query:t,mode:"hybrid",model:e.rerank.model,top_k:e.rerank.top_k,settings:e.settings,candidates:r.map(i=>({id:i.hit.item.id,text:i.text,score:i.hit.score}))})),o=Wn(n);return o.length>0?new Map(o.map(i=>[i.id,i.score])):(e.warnings.push(`search_rerank_provider_invalid_response:${e.rerankExtension.providerName}:using_builtin`),null)}catch{return e.warnings.push(`search_rerank_provider_failed:${e.rerankExtension.providerName}:using_builtin`),null}}async function Us(e,t,r){let n=await qs(e,t,r);if(n)return n;let o=r.map(i=>({id:i.hit.item.id,text:i.text}));try{return await $n(e.provider,e.rerank.model,t,o,e.embeddingTimeoutMs)}catch{return e.warnings.push("search_rerank_failed:using_hybrid_scores"),null}}function Ns(e,t){let r=new Set(t.keys()),n=e.map(o=>{let i=t.get(o.item.id);if(i===void 0)return o;let s=new Set(o.matched_fields);return s.add("rerank"),{...o,score:i,matched_fields:[...s].sort((a,u)=>a.localeCompare(u))}});return n.sort((o,i)=>{let s=r.has(o.item.id),a=r.has(i.item.id);return s!==a?s?-1:1:o.score!==i.score?i.score-o.score:o.item.id.localeCompare(i.item.id)}),n}async function Gs(e,t,r,n){if(!e.rerank.enabled||r.length<=1)return r;let o=Os(r,n,e.rerank.top_k),i=await Us(e,t,o);return i&&i.size>0?Ns(r,i):r}async function Mo(e){let t=Math.max(e.limit??e.maxResults,e.maxResults),r=e.embeddingTimeoutMs!==void 0?{timeout_ms:e.embeddingTimeoutMs}:{},n=e.vectorQueryTimeoutMs!==void 0?{timeout_ms:e.vectorQueryTimeoutMs}:{},o=e.query.trim(),i=await Hs(e,o),s=await Ce(e.provider,i,r),a=await Promise.all(s.map(async y=>await js(e,y,t,n))),u=Co(a),c=new Map(e.filteredDocuments.map(y=>[y.metadata.id,y])),{semanticHits:l,semanticScores:d}=Ro(u,c),m=d.size;if(e.requestedMode==="semantic")return{hits:Ue(l,e.keywordHits),vectorMatchCount:m};let p=await Gs(e,o,Mt(c,d,e.keywordHits,e.hybridSemanticWeight),c);return{hits:Ue(p,e.keywordHits),vectorMatchCount:m}}async function Fo(e,t,r,n){let o=zt(C()),i=async(c,l,d)=>{let m=async(p,y)=>{await te({path:p,scope:"project"});let _=await qe.readFile(p,"utf8");return Jt(_,{format:y,schema:n,extensionFieldNames:o,onWarning:w=>s.push(w)}).body};try{return await m(l,d)}catch{let p=d==="toon"?"json_markdown":"toon",y=B(e,c.type,c.id,p,r);try{return await m(y,p)}catch{return s.push(`item_list_item_read_failed:${kt.relative(e,y)}`),""}}},s=[],a=await Ir(e,t,r,s,n),u=[];if(a.length===0){let c=await Rr(e,t,r,s,n);for(let l of c){let d=B(e,l.type,l.id,t,r),m=await i(l,d,t);u.push({metadata:l,body:m})}return{documents:u,warnings:[...new Set(s)].sort((l,d)=>l.localeCompare(d))}}for(let c of a){if(typeof c.body=="string"){u.push({metadata:c.metadata,body:c.body});continue}let l=await i(c.metadata,c.item_path,c.item_format);u.push({metadata:c.metadata,body:l})}return{documents:u,warnings:[...new Set(s)].sort((c,l)=>c.localeCompare(l))}}function Po(e,t){let r=t.trim();if(r.length===0)return null;if(r==="score")return e.score;if(r==="matched_fields")return e.matched_fields;if(r.startsWith("item.")){let i=r.slice(5);return i.length===0?null:e.item[i]??null}let n=e,o=e.item;return Object.prototype.hasOwnProperty.call(o,r)?o[r]??null:Object.prototype.hasOwnProperty.call(n,r)?n[r]??null:null}function Do(e,t){return t.mode==="full"?e.map(({matched_all_terms:r,exact_id_match:n,...o})=>o):e.map(r=>{let n={};for(let o of t.fields)n[o]=Po(r,o);return n})}function Ws(e){let t=Ge(e.provider??void 0);return t?.queryExpansion?{providerName:t.providerName,expand:t.queryExpansion}:null}function Bs(e){let t=Ge(D(e.search?.provider));return t?.rerank?{providerName:t.providerName,rerank:t.rerank}:null}function $s(e,t){let r=[],n=io(e),o=Object.keys(n.inlineFilters).length>0;if(o&&n.residualQuery.trim().length===0)throw new h("Inline field:value tokens consumed the entire query, leaving no search terms.",f.USAGE,{examples:["pm search auth tag:area:search","pm list --tag area:search --status open"],nextSteps:["Add keyword terms alongside the inline filters, or use pm list for pure tag/status/type/priority filtering."]});let i=o?n.residualQuery:e,s=so(t,n.inlineFilters,r);return{query:i,options:s,inlineWarnings:r,highlight:s.highlight===!0,includeLinked:je(s.includeLinked),titleExact:je(s.titleExact),phraseExact:je(s.phraseExact),matchMode:Hn(typeof s.matchMode=="string"?s.matchMode:void 0),minScoreOverride:jn(s.minScore),countOnly:s.count===!0,tokens:yt(i),normalizedQuery:j(i),limit:Se(s.limit),projection:pt(s,e),modeWasExplicit:typeof s.mode=="string"&&s.mode.trim().length>0}}async function zs(e,t){let r=A(process.cwd(),t.path);await P(r);let n=await F(r),o=Sr(n).settings,i=q(o.schema),s=Q(o.schema);gt(e.projection,s,e.query);let a=br(e.options,s,"search"),u=O(o,C()),c=Cr(o),l=Fr(o,r),d=So(o),m=Io(o),p=Ln(e.options.semanticWeight),y=Nn(o,c.active?.name??null),_=Gn(o,c.active?.model??D(o.search?.embedding_model)??"text-embedding-3-small");return{pmRoot:r,settings:o,statusRegistry:i,runtimeFieldRegistry:s,runtimeFieldFilters:a,typeRegistry:u,maxResults:_t(o),scoreThreshold:e.minScoreOverride??wt(o),semanticWeightProvided:e.options.semanticWeight!==void 0,semanticWeightOverride:p,hybridSemanticWeight:p??vt(o),tuning:bt(o),providerResolution:c,vectorResolution:l,extensionSearchProvider:d,extensionVectorAdapter:m,bm25Mode:ko({configuredProvider:D(o.search?.provider),hasEmbeddingProvider:c.active!==null,hasExtensionSearchProvider:d!==null}),queryExpansion:y,queryExpansionExtension:Ws(y),rerank:_,rerankExtension:Bs(o),effectiveMode:Dn(e.options.mode)}}async function Vs(e,t){let r=await Fo(t.pmRoot,t.settings.item_format??"toon",t.typeRegistry.type_to_folder,t.settings.schema),n=Ee(typeof e.options.status=="string"?e.options.status:void 0,t.statusRegistry,{strict:!0}),o=Me(t.statusRegistry),i=uo(r.documents,e.options,t.typeRegistry,t.runtimeFieldFilters,n,o);return{warnings:r.warnings,allDocuments:r.documents,filteredDocuments:lo(i,e.normalizedQuery,{titleExact:e.titleExact,phraseExact:e.phraseExact||e.matchMode==="exact"})}}async function Ks(e,t,r){let n=new Map;if(!e||t!=="keyword"&&t!=="hybrid")return n;let o=process.cwd(),i=await fo(o,Wt(o)),s=await Promise.all(r.map(async a=>[a.metadata.id,await ho(a,i)]));for(let[a,u]of s)n.set(a,u);return n}async function Qs(e,t,r){let n=await Ks(e.includeLinked,t.effectiveMode,r),o=e.matchMode==="or";return r.map(i=>bo(i,e.tokens,e.normalizedQuery,e.includeLinked,n,t.tuning,t.settings.id_prefix,o)).filter(i=>i!==null).filter(i=>e.matchMode!=="and"||i.matched_all_terms===!0)}function Zn(e,t){return Eo(e.query,e.effectiveMode,e.matchMode,e.options,e.includeLinked,e.scoreThreshold,e.hybridSemanticWeight,e.queryExpansion,e.rerank,e.projection,e.warnings,e.runtimeFieldFilters,t)}async function Ys(e,t,r,n,o){if(t.bm25Mode===null||t.effectiveMode==="keyword")return null;let i=Ao({requestedMode:t.effectiveMode,query:e.query,filteredDocuments:r,keywordHits:n,corpusFields:Tr(t.settings),bm25Params:Yn(t.settings),hybridSemanticWeight:t.hybridSemanticWeight});return t.bm25Mode==="auto-fallback"&&o.push(`search_${t.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`),i}async function Xs(e,t,r,n){if(!t.extensionSearchProvider)return null;let o=t.providerResolution.active!==null&&(t.vectorResolution.active!==null||t.extensionVectorAdapter!==null);try{let i=await Promise.resolve(t.extensionSearchProvider.query({query:e.query,mode:t.effectiveMode,tokens:e.tokens,options:e.options,settings:t.settings,documents:r}));return xo(t.extensionSearchProvider.providerName,i,n)}catch(i){if(!o)throw new h(`Extension search provider "${t.extensionSearchProvider.providerName}" failed: ${i instanceof Error?i.message:String(i)}`,f.GENERIC_FAILURE);return null}}function Js(e,t,r,n){return t.vectorMatchCount>0?t.hits:(n.push(`search_${e}_degraded:no_vector_matches:results_are_lexical`),e==="semantic"?r:t.hits)}async function Zs(e,t,r,n,o){let i=!e.extensionSearchProvider&&e.providerResolution.active!==null&&(e.vectorResolution.active!==null||e.extensionVectorAdapter!==null);o&&i&&await oo(e.pmRoot,r,n),e.extensionSearchProvider||Tt(t,e.providerResolution,e.vectorResolution,e.extensionVectorAdapter!==null)}async function ea(e){let{prepared:t,runtime:r,filteredDocuments:n,keywordHits:o,warnings:i,modeWasExplicit:s}=e,a=o,u=await Ys(t,r,n,o,i),c=r.effectiveMode;if(u!==null||c==="keyword")return{effectiveMode:r.effectiveMode,hits:u??a};try{if(await Zs(r,c,n,i,s),n.length===0||t.limit===0)return{effectiveMode:r.effectiveMode,hits:[]};let l=new Map(n.map(d=>[d.metadata.id,d]));if(a=await Xs(t,r,n,l)??a,a===o){let{provider:d,vectorStore:m}=Tt(c,r.providerResolution,r.vectorResolution,r.extensionVectorAdapter!==null),p=await Mo({requestedMode:c,query:t.query,filteredDocuments:n,keywordHits:o,hybridSemanticWeight:r.hybridSemanticWeight,limit:t.limit,maxResults:r.maxResults,provider:d,vectorStore:m,extensionVectorAdapter:r.extensionVectorAdapter,queryExpansion:r.queryExpansion,queryExpansionExtension:r.queryExpansionExtension,rerank:r.rerank,rerankExtension:r.rerankExtension,warnings:i,settings:r.settings});a=Js(c,p,o,i)}return{effectiveMode:r.effectiveMode,hits:a}}catch(l){return i.push(no(r.effectiveMode,l)),{effectiveMode:"keyword",hits:o}}}function ta(e,t){if(e.projection.mode==="compact"&&e.options.compact===!0)return Rt({query:e.query.trim(),mode:e.effectiveMode,items:[],count:t,total:t,count_only:!0,filters:le({mode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,runtimeFieldFilters:e.runtimeFieldFilters})},e.warnings);let r=e.projection.mode==="full"?null:[...e.projection.fields];return Rt({query:e.query.trim(),mode:e.effectiveMode,items:[],count:t,total:t,count_only:!0,filters:de({effectiveMode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,queryExpansion:e.queryExpansion,rerank:e.rerank,runtimeFieldFilters:e.runtimeFieldFilters}),projection:{mode:e.projection.mode,fields:r},now:x()},e.warnings)}function Rt(e,t){return t.length===0?e:{...e,warnings:t}}function Oe(e,t){return t?{...e,workspace_memory:t}:e}function ra(e,t,r){if(!e.highlight)return{hits:r,projection:e.projection};let n=new Map(t.map(i=>[i.metadata.id,i])),o=r.map(i=>({...i,highlights:_o(n.get(i.item.id),i.matched_fields,e.tokens)}));return e.projection.mode==="full"||e.projection.fields.includes("highlights")?{hits:o,projection:e.projection}:{hits:o,projection:{mode:e.projection.mode,fields:[...e.projection.fields,"highlights"]}}}function na(e,t,r,n,o,i){let s=n<r?{total:r}:{};if(e.projection.mode==="compact"&&e.options.compact===!0)return Rt({query:e.query.trim(),mode:e.effectiveMode,items:t,count:t.length,...s,...i,filters:le({mode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,runtimeFieldFilters:e.runtimeFieldFilters})},e.warnings);let a=o.mode==="full"?null:[...o.fields];return{query:e.query.trim(),mode:e.effectiveMode,items:t,count:t.length,...s,...i,filters:de({effectiveMode:e.effectiveMode,matchMode:e.matchMode,options:e.options,includeLinked:e.includeLinked,titleExact:e.titleExact,phraseExact:e.phraseExact,scoreThreshold:e.scoreThreshold,hybridSemanticWeight:e.hybridSemanticWeight,queryExpansion:e.queryExpansion,rerank:e.rerank,runtimeFieldFilters:e.runtimeFieldFilters}),projection:{mode:o.mode,fields:a},now:x(),...e.warnings.length>0?{warnings:e.warnings}:{}}}function oa(e){if(e.after!==void 0&&e.count===!0)throw new h("Search --after cannot be combined with --count.",f.USAGE)}async function Lo(e,t,r){oa(t);let n=$s(e,t),o=await zs(n,r),i=await Vs(n,o),s=i.warnings;s.push(...n.inlineWarnings);let a=await an(i.allDocuments.map(E=>E.metadata),{pmRoot:o.pmRoot,statusRegistry:o.statusRegistry,now:x()});s.push(...a.warnings);let u=cn(a,n.query);o.effectiveMode==="hybrid"&&o.semanticWeightProvided&&o.semanticWeightOverride===void 0&&s.push("search_hybrid_semantic_weight_override_invalid:using_settings_default");let c={query:n.query,matchMode:n.matchMode,options:n.options,includeLinked:n.includeLinked,titleExact:n.titleExact,phraseExact:n.phraseExact,scoreThreshold:o.scoreThreshold,hybridSemanticWeight:o.hybridSemanticWeight,queryExpansion:o.queryExpansion,rerank:o.rerank,projection:n.projection,warnings:s,runtimeFieldFilters:o.runtimeFieldFilters};if(o.effectiveMode==="keyword"&&(i.filteredDocuments.length===0||n.limit===0&&!n.countOnly))return Oe(Zn({...c,effectiveMode:o.effectiveMode},n.countOnly),u);let l=await Qs(n,o,i.filteredDocuments),d=await ea({prepared:n,runtime:o,filteredDocuments:i.filteredDocuments,keywordHits:l,warnings:s,modeWasExplicit:n.modeWasExplicit});if(d.effectiveMode!=="keyword"&&d.hits.length===0&&(i.filteredDocuments.length===0||n.limit===0&&!n.countOnly))return Oe(Zn({...c,effectiveMode:d.effectiveMode},n.countOnly),u);let m=d.hits.filter(E=>E.exact_id_match===!0||E.score>=o.scoreThreshold),p=vo(m,o.statusRegistry),y=p.length,_=Pn({sorted:p,query:n.query,mode:d.effectiveMode,searchOptions:n.options,limit:n.limit??o.maxResults}),g={...c,effectiveMode:d.effectiveMode};if(n.countOnly)return Oe(ta(g,y),u);let{hits:w,projection:b}=ra(n,i.filteredDocuments,_.limited),v=Do(w,b);return Oe(na(g,v,y,_.limited.length,b,_.pageExtras),u)}import ia from"node:fs/promises";import Ft from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7f6cfdef-5456-5716-9067-8ccadf077f5f")}catch{}})();var sa=Ft.join("search","eval-queries.json"),Pt={schema:U,examples:[JSON.stringify(He)],nextSteps:["Create a git-tracked golden-query JSON file that follows the schema, then re-run pm eval."]},aa=new Set(["keyword","semantic","hybrid"]),ca=e=>{if(e===void 0)return"keyword";let t=e.trim().toLowerCase();if(!aa.has(t))throw new h("Eval --mode must be one of keyword|semantic|hybrid",f.USAGE);return t},la=e=>{if(e===void 0||e==="")return Cn;let t=he(e);if(t===null)throw new h("Eval --k must be a positive integer",f.USAGE);return t},da=e=>{if(e===void 0||e==="")return;let t=String(e).trim(),r=Number(t);if([t.length===0,!Number.isFinite(r),r<0,r>1].includes(!0))throw new h("Eval --fail-under must be a number in the range [0, 1]",f.USAGE);return r},N=e=>Math.round(e*1e4)/1e4,ua=async e=>{try{return await ia.readFile(e,"utf8")}catch{throw new h(`Eval query set not found at ${e}`,f.NOT_FOUND,{...Pt,examples:[`echo '${JSON.stringify(He)}' > ${e}`,"pm eval --queries ./my-eval.json"]})}},ma=(e,t)=>{try{return JSON.parse(e)}catch(r){throw new h(`Eval query set at ${t} is not valid JSON: ${r instanceof Error?r.message:String(r)}`,f.USAGE,Pt)}},fa=e=>{try{return ft(e)}catch(t){throw new h(t instanceof Error?t.message:String(t),f.USAGE,Pt)}},ha=async e=>fa(ma(await ua(e),e)),pa=(e,t)=>t?Ft.resolve(process.cwd(),t):Ft.join(e,sa),ga=async(e,t,r,n)=>{let o=e.mode??t,s=(await Lo(e.query,{mode:o,limit:String(r),fields:"id"},n)).items.map(u=>u.id).filter(u=>typeof u=="string"),a=Tn(s,new Set(e.relevant_ids),r);return{metrics:a,report:{query:e.query,mode:o,relevant_total:a.relevant_total,retrieved_relevant:a.retrieved_relevant,ndcg:N(a.ndcg),mrr:N(a.mrr),precision:N(a.precision),recall:N(a.recall)}}},ya=(e,t,r,n)=>{let o=Mn(r);return{k:e,query_count:t.length,aggregate:{ndcg:N(o.ndcg),mrr:N(o.mrr),precision:N(o.precision),recall:N(o.recall)},queries:t,...n!==void 0?{fail_under:n}:{},passed:n===void 0||o.ndcg>=n}},md=async(e,t)=>{let r=A(process.cwd(),t.path);await P(r);let n=la(e.k),o=ca(e.mode),i=da(e.failUnder),s=pa(r,e.queries),a=await ha(s),u=[],c=[];for(let l of a.queries){let{report:d,metrics:m}=await ga(l,o,n,t);c.push(m),u.push(d)}return ya(n,u,c,i)};import Dt from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d562ab68-1891-54cc-8256-57cc1121b9ce")}catch{}})();function Lt(e){return Array.isArray(e)?e:typeof e=="string"?[e]:[]}function jo(e){let t=[];for(let r of e)t.includes(r)||t.push(r);return t.includes("g")||t.push("g"),t.join("")}function Oo(e){let t=e.trim();if(t.length===0)throw new h("history-redact --regex requires a non-empty pattern.",f.USAGE);let r=t,n="g";if(t.startsWith("/")&&t.length>1){let o=t.lastIndexOf("/");o>0&&(r=t.slice(1,o),n=jo(t.slice(o+1)))}if(r.length===0)throw new h("history-redact --regex cannot use an empty pattern.",f.USAGE);try{new RegExp(r,n)}catch{throw new h("Invalid --regex value; provide a valid JavaScript regular expression.",f.USAGE)}return{kind:"regex",source:r,flags:n}}function qo(e,t){let r=[...new Set(Lt(e).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),n=[...new Set(Lt(t).map(i=>i.trim()))].filter(i=>i.length>0).map(Oo),o=[...r,...n];if(o.length===0)throw new h("history-redact requires at least one matcher via --literal or --regex.",f.USAGE,{code:"missing_required_argument",required:"Provide --literal <value> and/or --regex <pattern>.",examples:['pm history-redact pm-a1b2 --literal "[redacted_path_prefix]/private"','pm history-redact pm-a1b2 --regex "/192\\\\.168\\\\.[0-9.]+/g" --replacement "[scrubbed_ip]"']});return o}function Uo(e,t,r){if(t.length===0)return{value:e,replacements:0};let n=0,o=0;for(;n<=e.length;){let i=e.indexOf(t,n);if(i===-1)break;o+=1,n=i+Math.max(1,t.length)}return o===0?{value:e,replacements:0}:{value:e.split(t).join(r),replacements:o}}function No(e,t,r){let n=new RegExp(t.source,t.flags),o=[...e.matchAll(n)];return o.length===0?{value:e,replacements:0}:{value:e.replace(n,r),replacements:o.length}}function Ht(e,t,r){let n=e,o=0;for(let i of t){let s=i.kind==="literal"?Uo(n,i.value,r):No(n,i,r);n=s.value,o+=s.replacements}return{value:n,replacements:o}}function ue(e,t,r){if(typeof e=="string")return Ht(e,t,r);if(Array.isArray(e)){let n=0;return{value:e.map(i=>{let s=ue(i,t,r);return n+=s.replacements,s.value}),replacements:n}}if(typeof e=="object"&&e!==null){let n=0,o={};for(let[i,s]of Object.entries(e)){let a=ue(s,t,r);n+=a.replacements,o[i]=a.value}return{value:o,replacements:n}}return{value:e,replacements:0}}function Ho(e,t,r){let n=0;return{patch:e.map(i=>{if(!Object.prototype.hasOwnProperty.call(i,"value"))return i;let s=ue(i.value,t,r);return n+=s.replacements,s.replacements>0?{...i,value:s.value}:i}),replacements:n}}function _a(e){let t=structuredClone(Ke),r=0,n=0;for(let o=0;o<e.length;o+=1){let i=e[o];oe(t)!==i.before_hash&&(r+=1),t=J(t,i.patch,o+1,i.op),oe(t)!==i.after_hash&&(n+=1)}return{hashMismatchesBefore:r,hashMismatchesAfter:n,finalDocument:t}}function wa(e,t,r){let n=0,o=!1,i=!1,s=e.message;if(typeof e.message=="string"){let c=Ht(e.message,t,r);s=c.value,n+=c.replacements,c.replacements>0&&(o=!0)}let a=Ho(e.patch,t,r);n+=a.replacements,o||=a.replacements>0;let u=e.reanchor_evidence?.map(c=>{let l=c.patch?Ho(c.patch,t,r):{patch:void 0,replacements:0},d=c.record?ue(c.record,t,r):{value:void 0,replacements:0};n+=l.replacements,n+=d.replacements;let m=l.replacements>0||d.replacements>0;if(o||=m,!m)return c;i=!0;let{patch:p,record:y,record_hash:_,record_hash_version:g,...w}=c;return l.replacements>0?w:{...w,patch:c.patch}});return{entry:{...e,message:s,patch:a.patch,...u?{reanchor_evidence:u}:{}},replacements:n,changed:o,reanchorEvidenceRedacted:i}}function va(e,t,r){let n=structuredClone(Ke),o=0,i=0,s=[];for(let a=0;a<e.length;a+=1){let u=e[a],c=dr(u);if(!c.ok)throw new h(`history-redact refuses invalid immutable record ${a+1} (${c.error}).`,f.GENERIC_FAILURE);let l=wa(u,t,r);i+=l.replacements,l.changed&&(o+=1);let d=oe(n);n=J(n,l.entry.patch,a+1,l.entry.op);let m=oe(n);s.push(ur(u,{...l.entry,before_hash:d,after_hash:m},{retainPriorRecord:l.changed,retainPriorRecordHash:!l.changed}))}return{entries:s,finalDocument:n,entriesChanged:o,replacements:i}}function Go(e){return Object.keys(e.metadata).length>0}function ba(e){if(!Go(e.finalDocument))return{raw:null,path:null,document:null};let t=ye(M(e.finalDocument),{schema:e.settings.schema});if(t.metadata.id!==e.subject.id)throw new h("history-redact would change the item id; narrow your patterns.",f.USAGE);return{document:t,path:B(e.pmRoot,t.metadata.type,e.subject.id,"toon",e.typeToFolder),raw:ge(t,{format:"toon",schema:e.settings.schema})}}function Ea(e,t){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-redact replaced ${t.replacements} match(es) across ${t.entriesChanged} entr${t.entriesChanged===1?"y":"ies"}.`}function Sa(e){let t=[...e.rewritten.entries];if(e.dryRun||!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let r=e.nextItemDocument??M(e.rewritten.finalDocument);return t.push($({nowIso:x(),author:e.author,op:"history_redact",before:r,after:r,message:e.message})),{rewrittenEntries:t,auditEntryAdded:!0}}function Ia(e){let t=[];return{applyRewrite:async({historyRawUnderLock:r})=>{let n=await Ie(e.pmRoot,e.author),o=new Set;e.currentItem.path&&o.add(e.currentItem.path),e.nextItem.path&&o.add(e.nextItem.path);let i=new Map;e.currentItem.path&&e.currentItem.raw!==null&&i.set(e.currentItem.path,e.currentItem.raw);let s=()=>{};try{try{e.nextItem.path&&e.nextItem.raw!==null&&e.nextItem.raw!==e.currentItem.raw&&await L(e.nextItem.path,e.nextItem.raw),e.currentItem.path&&(!e.nextItem.path||e.nextItem.path!==e.currentItem.path)&&await Dt.rm(e.currentItem.path,{force:!0}),await L(e.subject.historyPath,gr(e.rewrittenEntries))}catch(u){try{await xa(e.subject.historyPath,r,o,i)}finally{await Ve(e.subject.historyPath)}throw u}await Ve(e.subject.historyPath);let a=e.nextItem.path??e.currentItem.path;a&&(t=await xe({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:e.typeRegistry.type_to_folder,schema:e.settings.schema,itemPath:a,...e.currentItem.path?{previousItemPath:e.currentItem.path}:{},document:e.nextItem.document}))}finally{await n().catch(a=>{s=()=>{throw a}})}s()},afterWrite:async()=>[...t,...await Ra(e.subject.historyPath,[e.nextItem.path,e.currentItem.path])]}}async function xa(e,t,r,n){t===null?await Dt.rm(e,{force:!0}):await L(e,t);for(let o of r){let i=n.get(o);i===void 0?await Dt.rm(o,{force:!0}):await L(o,i)}}async function Ra(e,t){let r=[],n=new Set(t.filter(o=>o!==null));for(let o of n)r.push(...await K({path:o,scope:"project",op:"history_redact"}));return r.push(...await K({path:e,scope:"project",op:"history_redact:history"})),r}async function Td(e,t,r){let{pmRoot:n,settings:o,typeRegistry:i}=await se(r.path),s=t.replacement??"",a=s.length===0,u=a?"[redacted]":s,c=qo(t.literal,t.regex),l=await z(n,e,o,i.type_to_folder);return Te({pmRoot:n,subject:l,settings:o,typeRegistry:i,operation:"history-redact",options:t,transform:d=>ka({pmRoot:n,subject:l,settings:o,typeRegistry:i,options:t,rules:c,replacement:u,replacementIsDefault:a},d)})}function ka(e,t){let{pmRoot:r,subject:n,settings:o,typeRegistry:i,options:s,rules:a,replacement:u,replacementIsDefault:c}=e,l=t.entries,d=_a(l),m=va(l,a,u),p=d.hashMismatchesBefore+d.hashMismatchesAfter,y=!!s.dryRun,_=m.replacements>0,g=[];p>0&&g.push(`history_redact_preexisting_hash_mismatches:${p}`),_||g.push("history_redact_no_matches");let w={raw:t.loadedItem?.raw??null,path:n.located?.itemPath??null,document:t.loadedItem?.document??null},b=ba({pmRoot:r,subject:n,settings:o,typeToFolder:i.type_to_folder,finalDocument:m.finalDocument}),v=(w.path??null)!==(b.path??null)||(w.raw??null)!==(b.raw??null),E=t.author,R=Ea(s,m),{rewrittenEntries:I,auditEntryAdded:S}=Sa({rewritten:m,dryRun:y,changed:_,nextItemDocument:b.document,author:E,message:R});return{changed:_,rewrittenEntries:I,...Ia({pmRoot:r,subject:n,settings:o,typeRegistry:i,currentItem:w,nextItem:b,author:E,rewrittenEntries:I}),report:({verification:k,warnings:G})=>({id:n.id,dry_run:y,changed:_,patterns:{literal_count:a.filter(W=>W.kind==="literal").length,regex_count:a.filter(W=>W.kind==="regex").length,total_count:a.length,replacement_is_default:c},history:{path:n.historyPath,entries_scanned:l.length,entries_changed:m.entriesChanged,replacements:m.replacements,hash_mismatches_before:d.hashMismatchesBefore,hash_mismatches_after:d.hashMismatchesAfter,preexisting_hash_mismatches:p,audit_entry_added:S,verify_ok:k.ok,verify_errors:k.errors},item:{existed_before:w.path!==null,exists_after:b.path!==null,path_before:w.path,path_after:b.path,changed:v},warnings:[...new Set([...g,...G])].sort((W,me)=>W.localeCompare(me)),generated_at:x()})}}var Md={applyLiteralRule:Uo,applyRegexRule:No,buildRedactionRules:qo,hasItemMetadata:Go,normalizeRegexFlags:jo,normalizeStringArrayInput:Lt,parseRegexRule:Oo,redactStringValue:Ht,redactUnknownValue:ue};import Bo from"node:fs/promises";import $o from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d51da34a-9f37-5441-91f0-15a16b601709")}catch{}})();function Aa(e,t,r){let n=new Set,o=[];for(let i of e){let s=i.trim();if(s.length===0||n.has(s))continue;n.add(s);let a=t.get(s);if(a===void 0){o.push({id:s,entries:0,selected:!1,skip_reason:"no_stream"});continue}if(a.entries<=r){o.push({id:s,entries:a.entries,selected:!1,skip_reason:"already_compact"});continue}o.push({id:s,entries:a.entries,selected:!0,skip_reason:null})}return o}function Ca(e,t){let r=[...e].sort((o,i)=>i.entries-o.entries||o.id.localeCompare(i.id)),n=[];for(let o of r){if(t.scope==="closed"&&o.bucket!=="closed"){n.push({id:o.id,entries:o.entries,selected:!1,skip_reason:"scope_mismatch"});continue}if(o.entries<=t.minEntries){n.push({id:o.id,entries:o.entries,selected:!1,skip_reason:"already_compact"});continue}if(t.allOver!==void 0&&o.entries<=t.allOver){n.push({id:o.id,entries:o.entries,selected:!1,skip_reason:"below_threshold"});continue}n.push({id:o.id,entries:o.entries,selected:!0,skip_reason:null})}return n}function Wo(e,t){if(t.ids!==void 0&&t.ids.length>0){let r=new Map(e.map(n=>[n.id,n]));return Aa(t.ids,r,t.minEntries)}return Ca(e,t)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d6824edc-ca22-5900-b43b-645135e2562d")}catch{}})();function Ta(e,t){if(e===void 0)return{kind:"default",raw:null,compactCount:t.length,retainedCount:0};let r=e.trim();if(r.length===0)throw new h("history-compact --before requires a non-empty value.",f.USAGE);if(/^\d+$/.test(r)){let i=Number.parseInt(r,10),s=H(t);if(!Number.isSafeInteger(i)||i<s+1||i>s+t.length+1)throw new h(`history-compact --before version must be between ${s+1} and ${s+t.length+1}.`,f.USAGE);let a=i-s-1;return{kind:"version",raw:r,compactCount:a,retainedCount:t.length-a}}let n=Date.parse(r);if(!Number.isFinite(n))throw new h(`Invalid history-compact --before value "${e}". Use a version number or ISO timestamp.`,f.USAGE);let o=0;for(let[i,s]of t.entries()){let a=Date.parse(s.ts);if(!Number.isFinite(a))throw new h(`History for this item contains invalid timestamp at entry ${i+1}.`,f.GENERIC_FAILURE);if(a>=n)break;o+=1}return{kind:"timestamp",raw:r,compactCount:o,retainedCount:t.length-o}}function Ma(e,t){let r=we(),n=we();for(let o=0;o<e.length;o+=1){let i=e[o];r=J(r,i.patch,o+1,i.op),o+1===t&&(n=structuredClone(r))}return{checkpoint:n,finalReplay:r}}function Fa(e,t){if(!e)return{loadedItem:null,currentItemRawBeforeLock:null,matchedChainBefore:null};let r=t[t.length-1];return{loadedItem:e,currentItemRawBeforeLock:e.raw,matchedChainBefore:ar.some(n=>(r.item_hash_version===void 0||r.item_hash_version===n)&&fr(ie(e.document),n).includes(r.after_hash))}}function Pa(e,t){return typeof e.message=="string"&&e.message.trim().length>0?e.message:t.raw===null?`history-compact compacted full stream (${t.compactCount} entr${t.compactCount===1?"y":"ies"}).`:`history-compact compacted ${t.compactCount} entr${t.compactCount===1?"y":"ies"} before ${t.raw}.`}function Da(e){return e.raw===null?`history-compact baseline snapshot after compacting ${e.compactCount} entr${e.compactCount===1?"y":"ies"}.`:`history-compact baseline snapshot before ${e.raw}.`}function La(e){if(!e.changed)return{rewrittenEntries:e.historyEntries,baselineEntryAdded:!1,auditEntryAdded:!1};let{checkpoint:t,finalReplay:r}=Ma(e.historyEntries,e.boundary.compactCount),n=e.historyEntries.slice(e.boundary.compactCount),o=H(e.historyEntries,!0),i=$({nowIso:e.historyEntries[e.boundary.compactCount-1].ts,author:e.author,op:"history_compact_baseline",before:M(we()),after:M(t),message:Da(e.boundary),context:{history_compaction:{contract_version:1,version_offset:o===null?null:o+e.boundary.compactCount-1,checkpoint_timestamp_semantics:"last_compacted_entry",pruned_entry_count:e.boundary.compactCount,pruned_stream_digest:cr(e.historyEntries.slice(0,e.boundary.compactCount)),retained_proof:"stream_digest_and_checkpoint",limitation:"individual_pruned_entries_require_pre_compaction_stream"}}}),s=e.historyEntries[e.boundary.compactCount-1],a=[lr({...i,before_hash:e.historyEntries[0].before_hash,after_hash:s.after_hash,item_hash_version:s.item_hash_version}),...n];return e.dryRun||a.push($({nowIso:x(),author:e.author,op:"history_compact",before:M(r),after:M(r),message:Pa(e.options,e.boundary)})),{rewrittenEntries:a,baselineEntryAdded:!0,auditEntryAdded:!e.dryRun}}async function Ha(e,t,r){let{pmRoot:n,settings:o,typeRegistry:i}=await se(r.path),s=await z(n,e,o,i.type_to_folder);return Te({pmRoot:n,subject:s,settings:o,typeRegistry:i,operation:"history-compact",options:t,transform:a=>ja(s,t,a)})}function ja(e,t,r){let n=e.historyPath,o=r.entries,i=r.verification;if(!i.ok)throw new h(`history-compact requires a valid history chain (${i.errors.join(", ")}). Run pm history-repair ${e.id} first.`,f.CONFLICT);let s=Ta(t.before,o),a=s.compactCount>0,u=!!t.dryRun,c=r.author,l=[];a||l.push("history_compact_noop_before_boundary");let d=Fa(r.loadedItem,o);d.matchedChainBefore===!1&&l.push("history_compact_item_chain_mismatch");let{rewrittenEntries:m,baselineEntryAdded:p,auditEntryAdded:y}=La({historyEntries:o,boundary:s,changed:a,dryRun:u,author:c,options:t}),_=H(o,!0),g=s.retainedCount>0&&_!==null?_+s.compactCount+1:null;return{changed:a,rewrittenEntries:m,report:({verification:w,warnings:b})=>({id:e.id,dry_run:u,changed:a,compact_boundary:{kind:s.kind,before:s.raw,entries_compacted:s.compactCount,entries_retained:s.retainedCount,first_retained_entry:g},history:{path:n,entries_scanned:o.length,entries_after:m.length,baseline_entry_added:p,audit_entry_added:y,verify_ok:w.ok,verify_errors:w.errors},item:{exists:e.located!==null,path:e.located?.itemPath??null,matched_chain_before:d.matchedChainBefore},warnings:[...new Set([...l,...b])].sort((v,E)=>v.localeCompare(E)),generated_at:x()})}}var Oa=3;function qa(e){for(let r of["allOver","minEntries"]){let n=e[r];if(n!==void 0&&(!Number.isSafeInteger(n)||n<0))throw new h(`history-compact ${r} must be a non-negative safe integer.`,f.USAGE)}let t=Yt(e.ids);if(e.ids!==void 0&&t==="")throw new h("history-compact ids requires at least one valid item ID.",f.USAGE,{code:"bulk_ids_input_empty",required:"Provide one or more string or finite numeric IDs; non-finite and unsupported selector values are rejected."});return{...e,ids:t===void 0?void 0:Qt(t)}}function Jd(e,t){let r=t.ids!==void 0&&t.ids.length>0,n=t.allOver!==void 0||t.scope!==void 0;if((e!==void 0?1:0)+(r?1:0)+(n?1:0)===0)throw new h("history-compact: provide an item <id>, or a bulk selector (--ids, --all-over <N>, --closed, or --all-streams).",f.USAGE);if(e!==void 0&&(r||n))throw new h("history-compact: <id> and bulk selectors (--ids/--all-over/--closed/--all-streams) are mutually exclusive; pass one item id, or use bulk mode without a positional id.",f.USAGE);if(r&&n)throw new h("history-compact: --ids is mutually exclusive with --all-over/--closed/--all-streams; pass an explicit id list or a scan selector, not both.",f.USAGE)}function Ua(e){let t=0;for(let r of e.split(/\r?\n/))r.trim().length>0&&(t+=1);return t}async function Na(e){let t=q(e.settings.schema),r=Me(t),n=await Ae(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema),o=new Map(n.map(c=>[c.id,r.classify(c.status)])),i=$o.join(e.pmRoot,"history"),s=[],a=[];if(!await fe(i))return{candidates:s,preselectionErrors:a};let u=(await Bo.readdir(i)).filter(c=>c.endsWith(".jsonl")).sort((c,l)=>c.localeCompare(l));for(let c of u){let l=$o.join(i,c),d=c.slice(0,-6);try{let m=await Bo.readFile(l,"utf8");await te({path:l,scope:"project"}),s.push({id:d,entries:Ua(m),bucket:o.get(d)??null})}catch(m){a.push({id:d,outcome:"errored",entries_before:0,entries_after:null,skip_reason:null,changed:!1,error:m instanceof Error?m.message:String(m)})}}return{candidates:s,preselectionErrors:a}}async function Ga(e){if(!e.row.selected)return{selected:!1,compacted:!1,errored:!1,result:{id:e.row.id,outcome:"skipped",entries_before:e.row.entries,entries_after:null,skip_reason:e.row.skip_reason,changed:!1,error:null}};try{let t=await Ha(e.row.id,{dryRun:e.dryRun,author:e.options.author,message:e.options.message,force:e.options.force},e.global);return{selected:!0,compacted:!0,errored:!1,result:{id:e.row.id,outcome:"compacted",entries_before:e.row.entries,entries_after:t.history.entries_after,skip_reason:null,changed:t.changed,error:null}}}catch(t){return{selected:!0,compacted:!1,errored:!0,result:{id:e.row.id,outcome:"errored",entries_before:e.row.entries,entries_after:null,skip_reason:null,changed:!1,error:t instanceof Error?t.message:String(t)}}}}async function Zd(e,t){let r=qa(e),{pmRoot:n,settings:o,typeRegistry:i}=await se(t.path),{candidates:s,preselectionErrors:a}=await Na({pmRoot:n,settings:o,typeToFolder:i.type_to_folder}),u=r.ids!==void 0&&r.ids.length>0?"ids":"scan",c=e.minEntries??Oa,l=o.history.compact_policy,d=u==="scan"&&e.allOver===void 0&&l.enabled,m=e.allOver??(d?l.max_entries:void 0),p=Wo(s,{ids:r.ids,scope:e.scope,minEntries:c,allOver:m}),y=!!e.dryRun,_=[...a],g={streams_considered:s.length+a.length,selected:0,items_compacted:0,items_skipped:0,items_errored:a.length};for(let w of p){let b=await Ga({row:w,options:r,dryRun:y,global:t});if(_.push(b.result),!b.selected){g.items_skipped+=1;continue}g.selected+=1,b.compacted&&(g.items_compacted+=1),b.errored&&(g.items_errored+=1)}return{bulk:!0,dry_run:y,mode:u,scope:e.scope??null,criteria:{min_entries:c,all_over:m??null,policy_threshold_applied:d},totals:g,results:_,generated_at:x()}}export{Wa as a,Qa as b,Ya as c,dc as d,bc as e,Sn as f,In as g,xn as h,Ii as i,lt as j,Wc as k,Bc as l,U as m,$i as n,He as o,ft as p,le as q,de as r,Zi as s,Pn as t,_t as u,wt as v,vt as w,bt as x,to as y,ro as z,vs as A,bs as B,ed as C,Lo as D,sa as E,md as F,Td as G,Md as H,Ha as I,Oa as J,Jd as K,Zd as L};
|
|
5
|
-
//# sourceMappingURL=chunk-3BZZA6A3.js.map
|