@unbrained/pm-cli 2026.9.28 → 2026.9.29
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-developer/references/GRAPH_AND_RELATIONSHIPS.md +7 -6
- package/.agents/skills/pm-user/references/BACKLOG_SHAPING.md +1 -1
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +26 -3
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +17 -0
- package/dist/cli/error-guidance.js +1 -1
- package/dist/cli/help-json-payload.js +2 -2
- package/dist/cli/main.js +2 -2
- package/dist/cli/runtime/invocation-options.d.ts +3 -1
- package/dist/cli/runtime/invocation-options.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +153 -153
- package/dist/cli-bundle/chunks/{chunk-OYCCWPBM.js → chunk-2AQKVJMW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UT7GRGHY.js → chunk-4DOL43PF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GLH2LNRH.js → chunk-5KEPG36D.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YERBAGQD.js → chunk-D32HVIB2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-A2G5OG6W.js → chunk-GP6QTYSD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CPOWTIIS.js → chunk-OTLIM22J.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PLNNUAFZ.js → chunk-P75SO5HO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PR4UAMI5.js → chunk-PJSQAWWQ.js} +60 -60
- package/dist/cli-bundle/chunks/{chunk-VMJLM7P2.js → chunk-S5A2UIRV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZFHJP7YD.js → chunk-SC6JHXFT.js} +31 -29
- package/dist/cli-bundle/chunks/{chunk-NBDB3SRC.js → chunk-SEJ53XDN.js} +48 -48
- package/dist/cli-bundle/chunks/{chunk-35DME35A.js → chunk-SJI55O65.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NEUIVBFO.js → chunk-U3QJGJYN.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-N6RP6PSP.js → register-list-query-R3ELWWPY.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-CY7JGQE6.js → register-mutation-WHXJXIHJ.js} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-53HAD3QP.js → register-operations-7ASWBYQG.js} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-NVX6374E.js → register-setup-FDRTUG54.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YZB7IPR6.js → chunk-2O3QFI3G.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-Y5Z3XNGY.js → chunk-4A4DO5ZT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-K7GSZ7YZ.js → chunk-5MC57KRC.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-IWLMQLBO.js → chunk-6OXJVE74.js} +17 -17
- package/dist/cli-bundle/focused-chunks/{chunk-6IVQPNYN.js → chunk-7URX7FMY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-5KJXX2TZ.js → chunk-AVP5C674.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-DTLRXY77.js → chunk-AZE7KUHG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-V7OPZRL6.js → chunk-DZVOCJFY.js} +14 -14
- package/dist/cli-bundle/focused-chunks/{chunk-AZA4AEOR.js → chunk-FBIRNSYP.js} +6 -6
- package/dist/cli-bundle/focused-chunks/{chunk-A5O3VYWV.js → chunk-IFBA3ZAT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ONDNR3VU.js → chunk-K3AIMRIK.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZMQTIS3L.js → chunk-KLKKCHWM.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BRLXKRI2.js → chunk-MRH4A542.js} +4 -4
- package/dist/cli-bundle/focused-chunks/{chunk-IJXZQE3D.js → chunk-NXQZMKW5.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BGWF6CMP.js → chunk-NY6FLQTN.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-OVVCXTIE.js → chunk-T4H6Q44B.js} +2 -2
- package/dist/cli-bundle/main.js +22 -22
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +22 -21
- 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 +28 -28
- 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 +2 -2
- package/dist/core/history/replay.js +1 -1
- package/dist/core/output/mutation-projection.js +1 -1
- package/dist/core/telemetry/runtime.js +2 -2
- package/dist/sdk/cli-contracts/command-aliases.js +1 -1
- package/dist/sdk/index.d.ts +1 -0
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/lifecycle/plan-mutation-receipt.d.ts +53 -0
- package/dist/sdk/lifecycle/plan-mutation-receipt.js +2 -0
- package/dist/sdk/lifecycle/plan.d.ts +3 -0
- package/dist/sdk/lifecycle/plan.js +1 -1
- package/dist/sdk/linked-artifacts.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/runtime/actions.js +1 -1
- package/dist/sdk/runtime-input.d.ts +2 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime.js +1 -1
- package/dist/sdk/similarity-scoring.js +1 -1
- package/dist/sdk/telemetry.d.ts +2 -0
- package/dist/sdk/telemetry.js +3 -1
- package/docs/CLI_GRAMMAR.md +18 -1
- package/docs/ECOSYSTEM_PLANNING_REVIEW.md +270 -0
- package/docs/README.md +1 -0
- package/docs/SDK_EVIDENCE_TRACEABILITY.md +34 -0
- package/docs/agent-task-token-baseline.json +28 -2
- package/docs/agent-task-transcripts.json +137 -14
- package/docs/ecosystem-review-2026-09-28.json +3159 -0
- package/marketplace.json +2 -2
- package/package.json +1 -1
- 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-claude/package.json +2 -2
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +2 -2
- package/plugins/pm-codex/plugin.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{a as zo,c as Gr,d as qr,e as pl,g as hl,h as Wo,i as _l,j as an,k as cn,l as gl,m as yl,n as Go,o as bl,p as ln,q as dn,r as kl,s as Sl,t as qo}from"./chunk-A5O3VYWV.js";import{e as ei,f as Yo,h as Xo}from"./chunk-ZMQTIS3L.js";import{B as Ml,C as Xr,D as jl,E as Ko,G as Fl,H as Ul,J as zl,K as Zr,M as Qr,a as al,g as Uo,i as cl}from"./chunk-K7GSZ7YZ.js";import{K as Xd}from"./chunk-IJXZQE3D.js";import{D as ns,E as fi,Ha as Hd,Ia as Wd,Ma as Gd,Na as qd,T as pi,U as yd,V as rs,W as Zn,Y as is,aa as Td,ba as $d,ca as Od,da as Dd,ea as _i,f as ld,g as dd,ga as Pd,h as ud,ha as Nd,ia as Ld,ja as Wt,k as mi,ka as Md,kb as Jd,la as gn,ma as jd,mb as as,na as os,nb as Kd,o as Yn,oa as yn,ob as Yd,p as md,pa as Fd,q as fd,qa as Ud,r as Xn,ra as zd,s as pd,sa as ss,u as ts,v as hd,wb as cs,z as _d}from"./chunk-V7OPZRL6.js";import{a as dl,b as sn,c as Ho,d as ul,e as ml,f as at,g as Br,h as fl,i as St}from"./chunk-YZB7IPR6.js";import{$ as Ut,Aa as id,Ab as ct,Bb as Ht,C as q,Ca as pn,D as Hl,Da as Kn,Ea as od,Eb as Cd,Fa as si,Fb as lt,G as Ee,Ga as zt,H as Zo,Ha as fe,Ia as ai,Ja as sd,Ka as es,La as ci,Ma as hn,N as Wl,Na as li,O as ti,Oa as ad,Qa as xe,R as ni,Ra as cd,S as ri,Sa as $,Ta as di,Tb as Qn,U as Gl,Ua as ui,V as De,Vb as gi,Wa as gd,X as xt,Y as ql,Z as Bl,_ as Vl,aa as Jl,ac as Bd,bb as wd,cb as vd,dc as Vd,eb as bd,fa as Kl,fb as kd,ga as Qo,gb as It,ha as ii,hb as Sd,ia as mn,ib as Ed,ka as oi,la as Yl,lb as xd,ma as Xl,mb as Id,oa as Zl,qa as Ql,rb as hi,sa as ed,tb as Ad,ua as td,vb as ne,wa as fn,wb as Pe,xa as nd,xb as Ne,yb as Rd,za as rd,zb as _n}from"./chunk-IWLMQLBO.js";import{b as rn,e as de,g as Oe,i as Se,j as Xe,n as _e,o as wl,p as Vr,r as vl}from"./chunk-Y5Z3XNGY.js";import{$ as g,$a as Lt,Aa as $e,Ab as Ye,Ba as Kc,Bc as Ol,Da as te,Ga as Yc,Jc as H,Ka as Xc,Kb as ll,Mc as X,Oc as We,Pb as Jr,Pc as Dl,Qa as Zc,Qb as El,Qc as Yr,Ra as Qc,Rb as Bo,S as Hc,Sa as G,Sb as Vo,T as Wc,Tb as Jo,Td as T,Ud as Ll,V as Gc,Vb as xl,Vd as un,Wb as Il,Wd as Et,X as qc,Xa as Jn,Xc as Pl,Xd as Ft,Y as Hr,Ya as N,Yc as Ze,Z as Bc,Za as Je,Zb as Al,_a as Wr,_c as Nl,a as Ur,aa as y,ae as ce,bb as el,cb as Mt,d as zr,eb as tl,ec as Rl,fb as nl,gb as rl,ha as Vc,i as Fc,ka as Jc,l as Uc,m as zc,ma as jo,ob as il,pb as jt,qb as C,ra as Vn,rb as ol,sa as O,sb as ke,ta as kt,ua as z,ub as Fo,va as V,vb as sl,vc as Cl,w as Mo,wa as Q,wb as on,xc as Kr,yb as Ke,yc as Tl,za as he,zc as $l}from"./chunk-BRLXKRI2.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]="00d2200c-d308-51a6-acc4-8da90afaf6d6")}catch{}})();var L=class extends TypeError{constructor(t){super(t),this.name="AssuranceMutationRefusalError"}},Ie=class extends TypeError{context;constructor(t,n={}){super(t),this.name="AssuranceEvaluationRefusalError",this.context=n}},Qe=class extends TypeError{measurement_id;source_kind;field;check;constructor(t,n){super(t),this.name="AssuranceSourceResolutionError",this.measurement_id=n.measurement_id,this.source_kind=n.source_kind,this.field=n.field,this.check=n.check}};async function wn(e){try{return await e()}catch(t){throw t instanceof L?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_mutation_refused"}):t}}async function Zd(e){try{return await e()}catch(t){throw t instanceof Ie?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_evaluation_refused",...t.context}):t}}import{createHash as Fg}from"node:crypto";import Ug 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]="b00dcab2-22c6-55b7-b93d-f6f5413d4b04")}catch{}})();var vn=1e3;(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]="00ad9b34-4feb-5812-8755-801869cce3ad")}catch{}})();var eu=1,Gt=["pre-commit","pre-push","pre-merge","ci","pre-release","post-release","scheduled","on-claim","on-close"],ls=["items","dependency_kind","prose_edge_gap","graph","validate","health","history","links","provider","derived"],zg=["ceiling","floor","equals","zero","monotone_nondecreasing","monotone_nonincreasing","subset_of"],Hg=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,yi=30,wi=5e3,tu=4,Wg=50;function dt(e,t){if(!Hg.test(e))throw new L(`${t} must be a stable lowercase id`)}function Gg(e,t){if(!Number.isFinite(e)||e<0)throw new L(`${t} must be a finite non-negative number`)}function er(e){let t=zg.filter(i=>e[i]!==void 0);if(t.length!==1)throw new L(`assertion ${e.id} must declare exactly one polarity`);let n=t[0],r=e[n];return{polarity:n,value:n==="zero"?0:r}}function us(e,t){return C(e)===C(t)}function nu(e,t){if(t.polarity==="equals")return us(e,t.value);if(t.polarity==="subset_of"){if(!Array.isArray(e)||!Array.isArray(t.value))return!1;let r=t.value;return e.every(i=>r.includes(i))}if(typeof e!="number")return!1;let n=t.value;return t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?e<=n:t.polarity==="floor"||t.polarity==="monotone_nondecreasing"?e>=n:e===0}function ru(e){let t=er(e),n=e.negative_control.cases;return n.some(r=>r.expected==="pass")&&n.some(r=>r.expected==="fail")&&n.every(r=>nu(r.observed,t)===(r.expected==="pass"))}function qg(e,t){if(e.polarity!==t.polarity)return!0;if(typeof e.value=="number"&&typeof t.value=="number")return e.polarity==="ceiling"||e.polarity==="monotone_nonincreasing"?t.value>e.value:e.polarity==="floor"||e.polarity==="monotone_nondecreasing"?t.value<e.value:t.value!==e.value;if(e.polarity==="subset_of"){let n=e.value,r=t.value;return!Array.isArray(n)||!Array.isArray(r)||r.some(i=>!n.includes(i))}return!us(e.value,t.value)}function Bg(e,t){if(e.measurement_id!==t.measurement_id||e.owner_item_id!==t.owner_item_id||C(e.scope)!==C(t.scope))return!0;let n={observe:0,warn:1,block:2},r=(e.lifetime??"hold")==="hold"&&(t.lifetime??"hold")==="retire";return qg(er(e),er(t))||n[t.enforcement]<n[e.enforcement]||r}function Vg(e){if(e.state!==void 0&&!(e.state==="present"||e.state==="missing"))throw new L("items source state must be present or missing");let t=Object.hasOwn(e,"equals"),n=e.state!==void 0,r=Number(t)+Number(n);if(e.field!==void 0&&r!==1)throw new L("items source with field requires exactly one of equals or state");if(e.field===void 0&&r!==0)throw new L("items source equals/state requires field")}function Jg(e){if(typeof e.dependency_kind!="string"||e.dependency_kind.trim().length===0)throw new L("dependency_kind source requires dependency_kind");if([e.source_kind,e.source_kind_prefix,e.source_kind_state].filter(n=>n!==void 0).length>1)throw new L("dependency_kind source accepts at most one source_kind predicate");if(e.source_kind!==void 0&&e.source_kind.trim().length===0||e.source_kind_prefix!==void 0&&e.source_kind_prefix.trim().length===0)throw new L("dependency_kind source provenance values must not be empty");if(e.source_kind_state!==void 0&&e.source_kind_state!=="present"&&e.source_kind_state!=="missing")throw new L("dependency_kind source source_kind_state must be present or missing")}function Kg(e){if(e.sample_limit!==void 0&&(!Number.isInteger(e.sample_limit)||e.sample_limit<1))throw new L("prose_edge_gap sample_limit must be a positive integer");for(let t of e.exemptions??[]){if(typeof t.holder_id!="string"||t.holder_id.trim().length===0||typeof t.reason!="string"||t.reason.trim().length===0)throw new L("prose_edge_gap exemptions require holder_id and reason");if(t.target_id!==void 0&&t.target_id.trim().length===0||t.text_contains!==void 0&&t.text_contains.trim().length===0)throw new L("prose_edge_gap exemption selectors must not be empty")}}function ms(e){dt(e.id,"measurement.id"),e.max_cost!==void 0&&Gg(e.max_cost,"measurement.max_cost");let t=e.source;if(Object.prototype.toString.call(t)!=="[object Object]")throw new L(`measurement.source.kind must be one of ${ls.join(", ")}`);let n=Reflect.get(t,"kind");if(!ls.includes(n))throw new L(`measurement.source.kind must be one of ${ls.join(", ")}`);let r=t;if(r.kind==="items"&&Vg(r),r.kind==="dependency_kind"&&Jg(r),r.kind==="prose_edge_gap"&&Kg(r),(r.kind==="graph"||r.kind==="validate"||r.kind==="health")&&(typeof r.field!="string"||r.field.trim().length===0))throw new L(`${r.kind} source requires field`);return r.kind==="provider"&&(dt(r.provider,"provider source provider"),dt(r.key,"provider source key")),e}function fs(e){if(dt(e.id,"assertion.id"),dt(e.measurement_id,"assertion.measurement_id"),typeof e.owner_item_id!="string"||e.owner_item_id.trim().length===0)throw new L("assertion.owner_item_id is required");let t=er(e);if(typeof t.value=="number"&&!Number.isFinite(t.value))throw new L(`assertion.${t.polarity} must be a finite number`);if(e.lifetime==="retire"&&(typeof e.retire_reason!="string"||e.retire_reason.trim().length===0))throw new L("retired assertion requires retire_reason");e.scope.kind==="filter"&&dt(e.scope.measurement_id,"assertion.scope.measurement_id");let n=e.negative_control?.cases;if(!Array.isArray(n)||!n.some(r=>r.expected==="pass")||!n.some(r=>r.expected==="fail"))throw new L("assertion negative control requires pass and fail cases");if(!ru(e))throw new L(`assertion ${e.id} negative control does not prove its bound`);return e}function Yg(e){if(!Array.isArray(e.allowed_providers))throw new L("gate provider_policy.allowed_providers must be an array");for(let t of e.allowed_providers)dt(t,"gate.provider_policy.allowed_provider");if(typeof e.triggers!="object"||e.triggers===null||Array.isArray(e.triggers))throw new L("gate provider_policy.triggers must be an object");for(let[t,n]of Object.entries(e.triggers)){if(!Gt.includes(t))throw new L(`gate provider policy has unknown trigger ${t}`);if(typeof n!="object"||n===null||!["low","medium","high"].includes(n.max_cost_class)||typeof n.allow_network!="boolean")throw new L(`gate provider policy trigger ${t} is invalid`)}}function iu(e){if(dt(e.id,"gate.id"),!Array.isArray(e.assertion_ids))throw new L("gate.assertion_ids is required and must be an array");if(e.assertion_ids.length===0)throw new L("gate requires at least one assertion");for(let t of e.assertion_ids)dt(t,"gate.assertion_id");if(!Array.isArray(e.triggers))throw new L(`gate.triggers is required and must be an array of ${Gt.join(", ")}`);if(e.triggers.length===0)throw new L("gate requires at least one trigger");for(let t of e.triggers)if(!Gt.includes(t))throw new L(`gate trigger must be one of ${Gt.join(", ")}`);return e.provider_policy&&Yg(e.provider_policy),e}function bn(e){if(e.version!==eu)throw new L(`unsupported assurance document version ${String(e.version)}`);let t=new Set;for(let r of e.measurements){if(ms(r),t.has(`measurement:${r.id}`))throw new L(`duplicate measurement ${r.id}`);t.add(`measurement:${r.id}`)}for(let r of e.assertions){if(fs(r),t.has(`assertion:${r.id}`))throw new L(`duplicate assertion ${r.id}`);t.add(`assertion:${r.id}`)}for(let r of e.gates){iu(r);let i=r.assertion_ids.filter(o=>!e.assertions.some(s=>s.id===o));if(i.length>0)throw new L(`gate ${r.id} references missing assertions: ${i.join(", ")}`);if(t.has(`gate:${r.id}`))throw new L(`duplicate gate ${r.id}`);t.add(`gate:${r.id}`)}let n=new Set(e.measurements.map(r=>r.id));for(let[r,i]of ou(e))if(!n.has(r))throw new L(`${i.join(", ")} references missing measurement ${r}`);return e}function ps(e,t){if("measurement"in e){t.push(e.measurement);return}if("operator"in e)for(let n of e.operands)ps(n,t)}function ou(e){let t=new Map,n=(r,i)=>{let o=t.get(r)??[];o.push(i),t.set(r,o)};for(let r of e.assertions)n(r.measurement_id,`assertion ${r.id}`),r.scope.kind==="filter"&&n(r.scope.measurement_id,`assertion ${r.id} scope`);for(let r of e.measurements){if(r.source.kind!=="derived")continue;let i=[];ps(r.source.expression,i);for(let o of i)n(o,`derived measurement ${r.id}`)}return t}function Xg(e,t){let n=e.assertion_ids.flatMap(o=>{let s=t.assertions.find(a=>a.id===o);return[s.measurement_id,...s.scope.kind==="filter"?[s.scope.measurement_id]:[]]}),r=new Set,i=new Set;for(;n.length>0;){let o=n.pop();if(r.has(o))continue;r.add(o);let s=t.measurements.find(a=>a.id===o);s.source.kind==="provider"?i.add(s.source.provider):s.source.kind==="derived"&&ps(s.source.expression,n)}return i}function tr(){return{version:eu,measurements:[],assertions:[],gates:[]}}function Zg(e,t){let n=t.items.filter(r=>(e.statuses===void 0||e.statuses.includes(r.status))&&(e.types===void 0||e.types.includes(r.type))&&(e.tags===void 0||e.tags.every(i=>r.tags?.includes(i)))&&(e.field===void 0||(()=>{let i=r[e.field];if(e.state!==void 0){let o=i==null||i===""||Array.isArray(i)&&i.length===0;return e.state==="missing"?o:!o}return us(i,e.equals)})()));return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function Qg(e,t){return e.source_kind!==void 0?t?.toLowerCase()===e.source_kind.trim().toLowerCase():e.source_kind_prefix!==void 0?t?.toLowerCase().startsWith(e.source_kind_prefix.trim().toLowerCase())===!0:e.source_kind_state==="present"?t!==void 0&&t.length>0:e.source_kind_state==="missing"?t===void 0||t.length===0:!0}function ey(e,t){let n=[],r=jo(e.dependency_kind)??e.dependency_kind.trim().toLowerCase();for(let i of t.items)for(let o of i.dependencies??[]){let s=jo(o.kind)??o.kind.trim().toLowerCase(),a=o.source_kind?.trim();s===r&&Qg(e,a)&&n.push(`${i.id}->${o.id}${a?`@${a}`:""}`)}return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n}}function ty(e){let t=[e.description,e.body].filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean);for(let n of["comments","notes","learnings"]){let r=e[n];if(Array.isArray(r)){for(let i of r)if(typeof i=="string")t.push(i);else if(typeof i=="object"&&i!==null){let o=Reflect.get(i,"text");typeof o=="string"&&t.push(o)}}}return t}function ny(e,t,n,r){return e.some(i=>i.holder_id.trim().toLowerCase()===t.toLowerCase()&&(i.target_id===void 0||i.target_id.trim().toLowerCase()===n.toLowerCase())&&(i.text_contains===void 0||r.toLowerCase().includes(i.text_contains.trim().toLowerCase())))}function ds(e,t){return[e.toLowerCase(),t.toLowerCase()].sort().join("\0")}function ry(e){let t=new Map,n=new Set,r=[],i=/\b[a-z][a-z0-9]*-[a-z0-9]+\b/giu,o=0;for(let s of e){t.set(s.id.toLowerCase(),s.id);for(let a of s.dependencies??[])n.add(ds(s.id,a.id));for(let a of[s.parent,s.blocked_by])typeof a=="string"&&n.add(ds(s.id,a));for(let a of ty(s)){let c=[...a.matchAll(i)].map(l=>l[0]);o+=c.length,r.push({holder_id:s.id,segment:a,mentioned_ids:c})}}return{canonical_ids:t,linked_pairs:n,prose_mentions:r,mention_count:o}}function iy(e,t){let n=ry(t.items),r=new Map;for(let s of n.prose_mentions){let a=s.mentioned_ids.map(l=>n.canonical_ids.get(l.toLowerCase())).filter(l=>l!==void 0&&l!==s.holder_id),c=[...new Set(a)];for(let l of c){let d=ds(s.holder_id,l);if(n.linked_pairs.has(d)||ny(e.exemptions??[],s.holder_id,l,s.segment))continue;let u=c.some(m=>m!==l);r.get(d)?.explicit===!0&&!u||r.set(d,{contributor:`${s.holder_id}->${l}|subject=${u?"explicit":"implicit"}`,explicit:u})}}let i=[...r.values()],o=i.map(s=>s.contributor).sort();return{value:o.length,population_size:n.canonical_ids.size,cost:t.items.length+n.linked_pairs.size+n.mention_count,contributors:o.slice(0,e.sample_limit??25),partitions:{explicit_subject:i.filter(s=>s.explicit).length,implicit_subject:i.filter(s=>!s.explicit).length}}}function oy(e,t){return{value:t.history.filter(r=>(e.op===void 0||r.op===e.op)&&(e.author===void 0||r.author===e.author)&&(e.harness===void 0||r.agent_harness===e.harness)&&(e.model===void 0||r.agent_model===e.model)).length,population_size:t.history.length,cost:t.history.length}}function sy(e,t){let n=t.items.filter(r=>{let i=r[e.link],o=Array.isArray(i)&&i.length>0;return e.state==="present"?o:!o});return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function ay(e,t){let n=e.source;return n.kind==="items"?Zg(n,t):n.kind==="dependency_kind"?ey(n,t):n.kind==="prose_edge_gap"?iy(n,t):n.kind==="history"?oy(n,t):n.kind==="links"?sy(n,t):null}function su(e,t){return e.reduce((n,r)=>({units:n.units+r.units,items_scanned:n.items_scanned+r.items_scanned,history_entries:n.history_entries+r.history_entries,provider_calls:n.provider_calls+r.provider_calls,duration_ms:t}),{units:0,items_scanned:0,history_entries:0,provider_calls:0,duration_ms:t})}function cy(e,t){if(t.length===0)throw new TypeError(`derived ${e} requires operands`);if(e==="add")return t.reduce((n,r)=>n+r,0);if(e==="subtract")return t.slice(1).reduce((n,r)=>n-r,t[0]);if(e==="multiply")return t.reduce((n,r)=>n*r,1);if(e==="divide"){if(t.slice(1).includes(0))throw new TypeError("derived divide cannot divide by zero");return t.slice(1).reduce((n,r)=>n/r,t[0])}return e==="min"?Math.min(...t):Math.max(...t)}async function au(e,t,n){let r=new Array(e.length),i=0,o=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let s=i;i+=1,r[s]=await n(e[s],s)}});return await Promise.all(o),r}async function cu(e,t,n,r,i){if("literal"in e)return{value:e.literal,costs:[],population_size:0,contributors:[]};if("measurement"in e){let s=n.find(l=>l.id===e.measurement);if(!s)throw new TypeError(`derived measurement references missing ${e.measurement}`);let a=await lu(s,t,n,r,i);if(typeof a.value!="number")throw new TypeError(`derived measurement ${s.id} is not numeric`);let c=i.charged.has(s.id)?[]:[a.cost];return i.charged.add(s.id),{value:a.value,costs:c,population_size:a.population_size,contributors:a.contributors}}let o=await au(e.operands,tu,s=>cu(s,t,n,r,i));return{value:cy(e.operator,o.map(s=>s.value)),costs:o.flatMap(s=>s.costs),population_size:Math.max(0,...o.map(s=>s.population_size)),contributors:[...new Set(o.flatMap(s=>s.contributors))]}}async function ly(e,t,n,r,i){ms(e);let o=Date.now(),s,a=[],c=0;if(e.source.kind==="derived"){let u=await cu(e.source.expression,t,n,[...r,e.id],i);s={value:u.value,population_size:u.population_size,cost:0,contributors:u.contributors},a=u.costs}else{let u=ay(e,t);u!==null?s=u:(s=await t.external(e.source),c=1)}let l={units:s.cost,items_scanned:e.source.kind==="items"||e.source.kind==="dependency_kind"||e.source.kind==="prose_edge_gap"||e.source.kind==="links"?t.items.length:0,history_entries:e.source.kind==="history"?t.history.length:0,provider_calls:c,duration_ms:Date.now()-o},d=su([...a,l],Date.now()-o);if(e.max_cost!==void 0&&d.units>e.max_cost)throw new Ie(`measurement ${e.id} exceeded cost ceiling ${e.max_cost} with ${d.units}`);return{id:e.id,definition_fingerprint:`sha256:${Fg("sha256").update(C(e)).digest("hex")}`,value:s.value,population_size:s.population_size,cost:d,contributors:s.contributors??[],...s.partitions?{partitions:s.partitions}:{}}}function lu(e,t,n,r,i){if(r.includes(e.id))throw new TypeError(`derived measurement cycle: ${[...r,e.id].join(" -> ")}`);let o=i.cache.get(e.id);if(o)return o;let s=ly(e,t,n,r,i).catch(a=>{if(a instanceof Qe&&a.measurement_id===void 0){let c={measurement_id:e.id,source_kind:a.source_kind,field:a.field,...a.check?{check:a.check}:{}},l=new Qe(a.message,c);throw l.cause=a,l}throw a});return i.cache.set(e.id,s),s}async function hs(e,t,n=[e]){return lu(e,t,n,[],{cache:new Map,charged:new Set})}function dy(e,t){return typeof e!="number"||typeof t.value!="number"?null:t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?t.value-e:(t.polarity==="floor"||t.polarity==="monotone_nondecreasing",e-t.value)}function uy(e,t,n={}){fs(e);let r=er(e),i=e.lifetime==="retire"&&n.owner_terminal===!0;return{assertion_id:e.id,measurement_id:e.measurement_id,measurement_definition_fingerprint:t.definition_fingerprint,scope:e.scope,population_size:t.population_size,observed:t.value,bound:r,distance:dy(t.value,r),verdict:i?"retired":nu(t.value,r)?"pass":"fail",enforcement:e.enforcement,negative_control_proven:ru(e),cost:t.cost,contributors:t.contributors,...t.partitions?{partitions:t.partitions}:{}}}function my(e,t,n,r){let i=Xg(e,t);if(i.size===0)return;let o=e.provider_policy,s=o?.triggers[r];if(!o||!s)throw new Ie(`assurance gate ${e.id} refuses provider execution at trigger ${r} without an explicit provider policy`);let a=new Set(o.allowed_providers),c={low:0,medium:1,high:2};for(let l of i){if(!a.has(l))throw new Ie(`assurance gate ${e.id} refuses provider ${l}`);let d=n.provider_capabilities?.[l];if(!d)throw new Ie(`assurance provider ${l} has no declared capabilities`);if(c[d.cost_class]>c[s.max_cost_class])throw new Ie(`assurance gate ${e.id} refuses ${d.cost_class}-cost provider ${l} at trigger ${r}`);if(d.network&&!s.allow_network)throw new Ie(`assurance gate ${e.id} refuses network provider ${l} at trigger ${r}`)}}async function Qd(e,t,n,r,i){try{return await hs(n,r,i)}catch(o){if(o instanceof Qe){let s=o.check?` check ${o.check}`:"",a=o.measurement_id??n.id,c=new Ie(`assurance gate ${e} assertion ${t} measurement ${a} source ${o.source_kind}${s} field ${o.field} could not resolve: ${o.message}`,{gate_id:e,assertion_id:t,measurement_id:a,source_kind:o.source_kind,field:o.field,...o.check?{check:o.check}:{}});throw c.cause=o,c}throw o}}async function du(e,t,n,r){bn(t);let i=t.gates.find(c=>c.id===e);if(!i)throw new Ie(`assurance gate ${e} not found`);if(!i.triggers.includes(r.trigger))throw new Ie(`assurance gate ${e} does not declare trigger ${r.trigger}`);my(i,t,n,r.trigger);let o=await au(i.assertion_ids,tu,async c=>{let l=t.assertions.find(p=>p.id===c),d=t.measurements.find(p=>p.id===l.measurement_id),u=n;if(l.scope.kind==="active"){let p=new Set(n.terminal_statuses??["closed","canceled"]);u={...n,items:n.items.filter(_=>!p.has(_.status))}}else if(l.scope.kind==="filter"){let p=l.scope.measurement_id,_=t.measurements.find(v=>v.id===p),h=await Qd(i.id,l.id,_,n,t.measurements),w=new Set(h.contributors);u={...n,items:n.items.filter(v=>w.has(v.id))}}let m=n.items.find(p=>p.id===l.owner_item_id),f=m!==void 0&&new Set(n.terminal_statuses??["closed","canceled"]).has(m.status);return uy(l,await Qd(i.id,l.id,d,u,t.measurements),{owner_terminal:f})}),s=o.some(c=>c.verdict==="fail"&&c.enforcement==="block"),a=o.some(c=>c.verdict==="fail"&&c.enforcement==="warn");return{gate_id:i.id,tree_id:n.tree_id,trigger:r.trigger,dry_run:r.dry_run===!0,evaluated_at:new Date().toISOString(),verdict:s?"block":a?"warn":"pass",exit_code:s?1:0,assertions:o,assertions_total:o.length,row_contract:{row_keys:["assertions"],jq_selector:".assertions[]"},cost:su(o.map(c=>c.cost),Math.max(0,...o.map(c=>c.cost.duration_ms)))}}function vi(e){return Ug.join(e,"assurance.json")}async function uu(e){let t=await V(vi(e));return t===null?tr():bi(t)}function bi(e){try{return bn(JSON.parse(e))}catch(t){throw new y("The assurance registry is invalid. Repair or restore .agents/pm/assurance.json and retry.",g.GENERIC_FAILURE,{code:"assurance_registry_invalid",reason:String(t),nextSteps:["Restore a valid assurance.json from version control or repair its declaration references.","Run pm assurance list measurement after the repair."]})}}function ki(e,t){return t==="measurement"?e.measurements:t==="assertion"?e.assertions:e.gates}function fy(e,t){e==="measurement"?ms(t):e==="assertion"?fs(t):iu(t)}async function nr(e,t){let n=structuredClone(ki(await uu(e),t));return{items:n,count:n.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function _s(e,t,n){let r=ki(await uu(e),t).find(i=>i.id===n);if(!r)throw new TypeError(`assurance ${t} ${n} not found`);return structuredClone(r)}async function Si(e,t,n,r={}){fy(t,n);let i=await $(e),o=q(r.author,i.author_default),s=await hn({pmRoot:e,filePath:vi(e),op:`assurance:${t}:put`,author:o,message:r.message,lockTtlSeconds:yi,lockWaitMs:wi,mutate:a=>{let c=a===null?tr():bi(a),l=ki(c,t),d=l.findIndex(m=>m.id===n.id),u=d<0?"created":"updated";if(t==="assertion"&&d>=0&&Bg(l[d],n)){let m=n.authorization_decision;if(!m||!r.authorized_decision_ids?.includes(m))throw new L(`loosening assertion ${n.id} requires a verified authorization_decision`)}return d<0?l.push(structuredClone(n)):l[d]=structuredClone(n),bn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
1
|
+
import{a as zo,c as Gr,d as qr,e as pl,g as hl,h as Wo,i as _l,j as an,k as cn,l as gl,m as yl,n as Go,o as bl,p as ln,q as dn,r as kl,s as Sl,t as qo}from"./chunk-IFBA3ZAT.js";import{e as ei,f as Yo,h as Xo}from"./chunk-KLKKCHWM.js";import{B as Ml,C as Xr,D as jl,E as Ko,G as Fl,H as Ul,J as zl,K as Zr,M as Qr,a as al,g as Uo,i as cl}from"./chunk-5MC57KRC.js";import{K as Xd}from"./chunk-NXQZMKW5.js";import{D as ns,E as fi,Ha as Hd,Ia as Wd,Ma as Gd,Na as qd,T as pi,U as yd,V as rs,W as Zn,Y as is,aa as Td,ba as $d,ca as Od,da as Dd,ea as _i,f as ld,g as dd,ga as Pd,h as ud,ha as Nd,ia as Ld,ja as Wt,k as mi,ka as Md,kb as Jd,la as gn,ma as jd,mb as as,na as os,nb as Kd,o as Yn,oa as yn,ob as Yd,p as md,pa as Fd,q as fd,qa as Ud,r as Xn,ra as zd,s as pd,sa as ss,u as ts,v as hd,wb as cs,z as _d}from"./chunk-DZVOCJFY.js";import{a as dl,b as sn,c as Ho,d as ul,e as ml,f as at,g as Br,h as fl,i as St}from"./chunk-2O3QFI3G.js";import{$ as Ut,Aa as id,Ab as ct,Bb as Ht,C as q,Ca as pn,D as Hl,Da as Kn,Ea as od,Eb as Cd,Fa as si,Fb as lt,G as Ee,Ga as zt,H as Zo,Ha as fe,Ia as ai,Ja as sd,Ka as es,La as ci,Ma as hn,N as Wl,Na as li,O as ti,Oa as ad,Qa as xe,R as ni,Ra as cd,S as ri,Sa as $,Ta as di,Tb as Qn,U as Gl,Ua as ui,V as De,Vb as gi,Wa as gd,X as xt,Y as ql,Z as Bl,_ as Vl,aa as Jl,ac as Bd,bb as wd,cb as vd,dc as Vd,eb as bd,fa as Kl,fb as kd,ga as Qo,gb as It,ha as ii,hb as Sd,ia as mn,ib as Ed,ka as oi,la as Yl,lb as xd,ma as Xl,mb as Id,oa as Zl,qa as Ql,rb as hi,sa as ed,tb as Ad,ua as td,vb as ne,wa as fn,wb as Pe,xa as nd,xb as Ne,yb as Rd,za as rd,zb as _n}from"./chunk-6OXJVE74.js";import{b as rn,e as de,g as Oe,i as Se,j as Xe,n as _e,o as wl,p as Vr,r as vl}from"./chunk-4A4DO5ZT.js";import{$ as g,$a as Lt,Aa as $e,Ab as Ye,Ba as Kc,Bc as Ol,Da as te,Ga as Yc,Jc as H,Ka as Xc,Kb as ll,Mc as X,Oc as We,Pb as Jr,Pc as Dl,Qa as Zc,Qb as El,Qc as Yr,Ra as Qc,Rb as Bo,S as Hc,Sa as G,Sb as Vo,T as Wc,Tb as Jo,Td as T,Ud as Ll,V as Gc,Vb as xl,Vd as un,Wb as Il,Wd as Et,X as qc,Xa as Jn,Xc as Pl,Xd as Ft,Y as Hr,Ya as N,Yc as Ze,Z as Bc,Za as Je,Zb as Al,_a as Wr,_c as Nl,a as Ur,aa as y,ae as ce,bb as el,cb as Mt,d as zr,eb as tl,ec as Rl,fb as nl,gb as rl,ha as Vc,i as Fc,ka as Jc,l as Uc,m as zc,ma as jo,ob as il,pb as jt,qb as C,ra as Vn,rb as ol,sa as O,sb as ke,ta as kt,ua as z,ub as Fo,va as V,vb as sl,vc as Cl,w as Mo,wa as Q,wb as on,xc as Kr,yb as Ke,yc as Tl,za as he,zc as $l}from"./chunk-MRH4A542.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]="00d2200c-d308-51a6-acc4-8da90afaf6d6")}catch{}})();var L=class extends TypeError{constructor(t){super(t),this.name="AssuranceMutationRefusalError"}},Ie=class extends TypeError{context;constructor(t,n={}){super(t),this.name="AssuranceEvaluationRefusalError",this.context=n}},Qe=class extends TypeError{measurement_id;source_kind;field;check;constructor(t,n){super(t),this.name="AssuranceSourceResolutionError",this.measurement_id=n.measurement_id,this.source_kind=n.source_kind,this.field=n.field,this.check=n.check}};async function wn(e){try{return await e()}catch(t){throw t instanceof L?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_mutation_refused"}):t}}async function Zd(e){try{return await e()}catch(t){throw t instanceof Ie?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_evaluation_refused",...t.context}):t}}import{createHash as Fg}from"node:crypto";import Ug 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]="b00dcab2-22c6-55b7-b93d-f6f5413d4b04")}catch{}})();var vn=1e3;(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]="00ad9b34-4feb-5812-8755-801869cce3ad")}catch{}})();var eu=1,Gt=["pre-commit","pre-push","pre-merge","ci","pre-release","post-release","scheduled","on-claim","on-close"],ls=["items","dependency_kind","prose_edge_gap","graph","validate","health","history","links","provider","derived"],zg=["ceiling","floor","equals","zero","monotone_nondecreasing","monotone_nonincreasing","subset_of"],Hg=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,yi=30,wi=5e3,tu=4,Wg=50;function dt(e,t){if(!Hg.test(e))throw new L(`${t} must be a stable lowercase id`)}function Gg(e,t){if(!Number.isFinite(e)||e<0)throw new L(`${t} must be a finite non-negative number`)}function er(e){let t=zg.filter(i=>e[i]!==void 0);if(t.length!==1)throw new L(`assertion ${e.id} must declare exactly one polarity`);let n=t[0],r=e[n];return{polarity:n,value:n==="zero"?0:r}}function us(e,t){return C(e)===C(t)}function nu(e,t){if(t.polarity==="equals")return us(e,t.value);if(t.polarity==="subset_of"){if(!Array.isArray(e)||!Array.isArray(t.value))return!1;let r=t.value;return e.every(i=>r.includes(i))}if(typeof e!="number")return!1;let n=t.value;return t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?e<=n:t.polarity==="floor"||t.polarity==="monotone_nondecreasing"?e>=n:e===0}function ru(e){let t=er(e),n=e.negative_control.cases;return n.some(r=>r.expected==="pass")&&n.some(r=>r.expected==="fail")&&n.every(r=>nu(r.observed,t)===(r.expected==="pass"))}function qg(e,t){if(e.polarity!==t.polarity)return!0;if(typeof e.value=="number"&&typeof t.value=="number")return e.polarity==="ceiling"||e.polarity==="monotone_nonincreasing"?t.value>e.value:e.polarity==="floor"||e.polarity==="monotone_nondecreasing"?t.value<e.value:t.value!==e.value;if(e.polarity==="subset_of"){let n=e.value,r=t.value;return!Array.isArray(n)||!Array.isArray(r)||r.some(i=>!n.includes(i))}return!us(e.value,t.value)}function Bg(e,t){if(e.measurement_id!==t.measurement_id||e.owner_item_id!==t.owner_item_id||C(e.scope)!==C(t.scope))return!0;let n={observe:0,warn:1,block:2},r=(e.lifetime??"hold")==="hold"&&(t.lifetime??"hold")==="retire";return qg(er(e),er(t))||n[t.enforcement]<n[e.enforcement]||r}function Vg(e){if(e.state!==void 0&&!(e.state==="present"||e.state==="missing"))throw new L("items source state must be present or missing");let t=Object.hasOwn(e,"equals"),n=e.state!==void 0,r=Number(t)+Number(n);if(e.field!==void 0&&r!==1)throw new L("items source with field requires exactly one of equals or state");if(e.field===void 0&&r!==0)throw new L("items source equals/state requires field")}function Jg(e){if(typeof e.dependency_kind!="string"||e.dependency_kind.trim().length===0)throw new L("dependency_kind source requires dependency_kind");if([e.source_kind,e.source_kind_prefix,e.source_kind_state].filter(n=>n!==void 0).length>1)throw new L("dependency_kind source accepts at most one source_kind predicate");if(e.source_kind!==void 0&&e.source_kind.trim().length===0||e.source_kind_prefix!==void 0&&e.source_kind_prefix.trim().length===0)throw new L("dependency_kind source provenance values must not be empty");if(e.source_kind_state!==void 0&&e.source_kind_state!=="present"&&e.source_kind_state!=="missing")throw new L("dependency_kind source source_kind_state must be present or missing")}function Kg(e){if(e.sample_limit!==void 0&&(!Number.isInteger(e.sample_limit)||e.sample_limit<1))throw new L("prose_edge_gap sample_limit must be a positive integer");for(let t of e.exemptions??[]){if(typeof t.holder_id!="string"||t.holder_id.trim().length===0||typeof t.reason!="string"||t.reason.trim().length===0)throw new L("prose_edge_gap exemptions require holder_id and reason");if(t.target_id!==void 0&&t.target_id.trim().length===0||t.text_contains!==void 0&&t.text_contains.trim().length===0)throw new L("prose_edge_gap exemption selectors must not be empty")}}function ms(e){dt(e.id,"measurement.id"),e.max_cost!==void 0&&Gg(e.max_cost,"measurement.max_cost");let t=e.source;if(Object.prototype.toString.call(t)!=="[object Object]")throw new L(`measurement.source.kind must be one of ${ls.join(", ")}`);let n=Reflect.get(t,"kind");if(!ls.includes(n))throw new L(`measurement.source.kind must be one of ${ls.join(", ")}`);let r=t;if(r.kind==="items"&&Vg(r),r.kind==="dependency_kind"&&Jg(r),r.kind==="prose_edge_gap"&&Kg(r),(r.kind==="graph"||r.kind==="validate"||r.kind==="health")&&(typeof r.field!="string"||r.field.trim().length===0))throw new L(`${r.kind} source requires field`);return r.kind==="provider"&&(dt(r.provider,"provider source provider"),dt(r.key,"provider source key")),e}function fs(e){if(dt(e.id,"assertion.id"),dt(e.measurement_id,"assertion.measurement_id"),typeof e.owner_item_id!="string"||e.owner_item_id.trim().length===0)throw new L("assertion.owner_item_id is required");let t=er(e);if(typeof t.value=="number"&&!Number.isFinite(t.value))throw new L(`assertion.${t.polarity} must be a finite number`);if(e.lifetime==="retire"&&(typeof e.retire_reason!="string"||e.retire_reason.trim().length===0))throw new L("retired assertion requires retire_reason");e.scope.kind==="filter"&&dt(e.scope.measurement_id,"assertion.scope.measurement_id");let n=e.negative_control?.cases;if(!Array.isArray(n)||!n.some(r=>r.expected==="pass")||!n.some(r=>r.expected==="fail"))throw new L("assertion negative control requires pass and fail cases");if(!ru(e))throw new L(`assertion ${e.id} negative control does not prove its bound`);return e}function Yg(e){if(!Array.isArray(e.allowed_providers))throw new L("gate provider_policy.allowed_providers must be an array");for(let t of e.allowed_providers)dt(t,"gate.provider_policy.allowed_provider");if(typeof e.triggers!="object"||e.triggers===null||Array.isArray(e.triggers))throw new L("gate provider_policy.triggers must be an object");for(let[t,n]of Object.entries(e.triggers)){if(!Gt.includes(t))throw new L(`gate provider policy has unknown trigger ${t}`);if(typeof n!="object"||n===null||!["low","medium","high"].includes(n.max_cost_class)||typeof n.allow_network!="boolean")throw new L(`gate provider policy trigger ${t} is invalid`)}}function iu(e){if(dt(e.id,"gate.id"),!Array.isArray(e.assertion_ids))throw new L("gate.assertion_ids is required and must be an array");if(e.assertion_ids.length===0)throw new L("gate requires at least one assertion");for(let t of e.assertion_ids)dt(t,"gate.assertion_id");if(!Array.isArray(e.triggers))throw new L(`gate.triggers is required and must be an array of ${Gt.join(", ")}`);if(e.triggers.length===0)throw new L("gate requires at least one trigger");for(let t of e.triggers)if(!Gt.includes(t))throw new L(`gate trigger must be one of ${Gt.join(", ")}`);return e.provider_policy&&Yg(e.provider_policy),e}function bn(e){if(e.version!==eu)throw new L(`unsupported assurance document version ${String(e.version)}`);let t=new Set;for(let r of e.measurements){if(ms(r),t.has(`measurement:${r.id}`))throw new L(`duplicate measurement ${r.id}`);t.add(`measurement:${r.id}`)}for(let r of e.assertions){if(fs(r),t.has(`assertion:${r.id}`))throw new L(`duplicate assertion ${r.id}`);t.add(`assertion:${r.id}`)}for(let r of e.gates){iu(r);let i=r.assertion_ids.filter(o=>!e.assertions.some(s=>s.id===o));if(i.length>0)throw new L(`gate ${r.id} references missing assertions: ${i.join(", ")}`);if(t.has(`gate:${r.id}`))throw new L(`duplicate gate ${r.id}`);t.add(`gate:${r.id}`)}let n=new Set(e.measurements.map(r=>r.id));for(let[r,i]of ou(e))if(!n.has(r))throw new L(`${i.join(", ")} references missing measurement ${r}`);return e}function ps(e,t){if("measurement"in e){t.push(e.measurement);return}if("operator"in e)for(let n of e.operands)ps(n,t)}function ou(e){let t=new Map,n=(r,i)=>{let o=t.get(r)??[];o.push(i),t.set(r,o)};for(let r of e.assertions)n(r.measurement_id,`assertion ${r.id}`),r.scope.kind==="filter"&&n(r.scope.measurement_id,`assertion ${r.id} scope`);for(let r of e.measurements){if(r.source.kind!=="derived")continue;let i=[];ps(r.source.expression,i);for(let o of i)n(o,`derived measurement ${r.id}`)}return t}function Xg(e,t){let n=e.assertion_ids.flatMap(o=>{let s=t.assertions.find(a=>a.id===o);return[s.measurement_id,...s.scope.kind==="filter"?[s.scope.measurement_id]:[]]}),r=new Set,i=new Set;for(;n.length>0;){let o=n.pop();if(r.has(o))continue;r.add(o);let s=t.measurements.find(a=>a.id===o);s.source.kind==="provider"?i.add(s.source.provider):s.source.kind==="derived"&&ps(s.source.expression,n)}return i}function tr(){return{version:eu,measurements:[],assertions:[],gates:[]}}function Zg(e,t){let n=t.items.filter(r=>(e.statuses===void 0||e.statuses.includes(r.status))&&(e.types===void 0||e.types.includes(r.type))&&(e.tags===void 0||e.tags.every(i=>r.tags?.includes(i)))&&(e.field===void 0||(()=>{let i=r[e.field];if(e.state!==void 0){let o=i==null||i===""||Array.isArray(i)&&i.length===0;return e.state==="missing"?o:!o}return us(i,e.equals)})()));return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function Qg(e,t){return e.source_kind!==void 0?t?.toLowerCase()===e.source_kind.trim().toLowerCase():e.source_kind_prefix!==void 0?t?.toLowerCase().startsWith(e.source_kind_prefix.trim().toLowerCase())===!0:e.source_kind_state==="present"?t!==void 0&&t.length>0:e.source_kind_state==="missing"?t===void 0||t.length===0:!0}function ey(e,t){let n=[],r=jo(e.dependency_kind)??e.dependency_kind.trim().toLowerCase();for(let i of t.items)for(let o of i.dependencies??[]){let s=jo(o.kind)??o.kind.trim().toLowerCase(),a=o.source_kind?.trim();s===r&&Qg(e,a)&&n.push(`${i.id}->${o.id}${a?`@${a}`:""}`)}return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n}}function ty(e){let t=[e.description,e.body].filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean);for(let n of["comments","notes","learnings"]){let r=e[n];if(Array.isArray(r)){for(let i of r)if(typeof i=="string")t.push(i);else if(typeof i=="object"&&i!==null){let o=Reflect.get(i,"text");typeof o=="string"&&t.push(o)}}}return t}function ny(e,t,n,r){return e.some(i=>i.holder_id.trim().toLowerCase()===t.toLowerCase()&&(i.target_id===void 0||i.target_id.trim().toLowerCase()===n.toLowerCase())&&(i.text_contains===void 0||r.toLowerCase().includes(i.text_contains.trim().toLowerCase())))}function ds(e,t){return[e.toLowerCase(),t.toLowerCase()].sort().join("\0")}function ry(e){let t=new Map,n=new Set,r=[],i=/\b[a-z][a-z0-9]*-[a-z0-9]+\b/giu,o=0;for(let s of e){t.set(s.id.toLowerCase(),s.id);for(let a of s.dependencies??[])n.add(ds(s.id,a.id));for(let a of[s.parent,s.blocked_by])typeof a=="string"&&n.add(ds(s.id,a));for(let a of ty(s)){let c=[...a.matchAll(i)].map(l=>l[0]);o+=c.length,r.push({holder_id:s.id,segment:a,mentioned_ids:c})}}return{canonical_ids:t,linked_pairs:n,prose_mentions:r,mention_count:o}}function iy(e,t){let n=ry(t.items),r=new Map;for(let s of n.prose_mentions){let a=s.mentioned_ids.map(l=>n.canonical_ids.get(l.toLowerCase())).filter(l=>l!==void 0&&l!==s.holder_id),c=[...new Set(a)];for(let l of c){let d=ds(s.holder_id,l);if(n.linked_pairs.has(d)||ny(e.exemptions??[],s.holder_id,l,s.segment))continue;let u=c.some(m=>m!==l);r.get(d)?.explicit===!0&&!u||r.set(d,{contributor:`${s.holder_id}->${l}|subject=${u?"explicit":"implicit"}`,explicit:u})}}let i=[...r.values()],o=i.map(s=>s.contributor).sort();return{value:o.length,population_size:n.canonical_ids.size,cost:t.items.length+n.linked_pairs.size+n.mention_count,contributors:o.slice(0,e.sample_limit??25),partitions:{explicit_subject:i.filter(s=>s.explicit).length,implicit_subject:i.filter(s=>!s.explicit).length}}}function oy(e,t){return{value:t.history.filter(r=>(e.op===void 0||r.op===e.op)&&(e.author===void 0||r.author===e.author)&&(e.harness===void 0||r.agent_harness===e.harness)&&(e.model===void 0||r.agent_model===e.model)).length,population_size:t.history.length,cost:t.history.length}}function sy(e,t){let n=t.items.filter(r=>{let i=r[e.link],o=Array.isArray(i)&&i.length>0;return e.state==="present"?o:!o});return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function ay(e,t){let n=e.source;return n.kind==="items"?Zg(n,t):n.kind==="dependency_kind"?ey(n,t):n.kind==="prose_edge_gap"?iy(n,t):n.kind==="history"?oy(n,t):n.kind==="links"?sy(n,t):null}function su(e,t){return e.reduce((n,r)=>({units:n.units+r.units,items_scanned:n.items_scanned+r.items_scanned,history_entries:n.history_entries+r.history_entries,provider_calls:n.provider_calls+r.provider_calls,duration_ms:t}),{units:0,items_scanned:0,history_entries:0,provider_calls:0,duration_ms:t})}function cy(e,t){if(t.length===0)throw new TypeError(`derived ${e} requires operands`);if(e==="add")return t.reduce((n,r)=>n+r,0);if(e==="subtract")return t.slice(1).reduce((n,r)=>n-r,t[0]);if(e==="multiply")return t.reduce((n,r)=>n*r,1);if(e==="divide"){if(t.slice(1).includes(0))throw new TypeError("derived divide cannot divide by zero");return t.slice(1).reduce((n,r)=>n/r,t[0])}return e==="min"?Math.min(...t):Math.max(...t)}async function au(e,t,n){let r=new Array(e.length),i=0,o=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let s=i;i+=1,r[s]=await n(e[s],s)}});return await Promise.all(o),r}async function cu(e,t,n,r,i){if("literal"in e)return{value:e.literal,costs:[],population_size:0,contributors:[]};if("measurement"in e){let s=n.find(l=>l.id===e.measurement);if(!s)throw new TypeError(`derived measurement references missing ${e.measurement}`);let a=await lu(s,t,n,r,i);if(typeof a.value!="number")throw new TypeError(`derived measurement ${s.id} is not numeric`);let c=i.charged.has(s.id)?[]:[a.cost];return i.charged.add(s.id),{value:a.value,costs:c,population_size:a.population_size,contributors:a.contributors}}let o=await au(e.operands,tu,s=>cu(s,t,n,r,i));return{value:cy(e.operator,o.map(s=>s.value)),costs:o.flatMap(s=>s.costs),population_size:Math.max(0,...o.map(s=>s.population_size)),contributors:[...new Set(o.flatMap(s=>s.contributors))]}}async function ly(e,t,n,r,i){ms(e);let o=Date.now(),s,a=[],c=0;if(e.source.kind==="derived"){let u=await cu(e.source.expression,t,n,[...r,e.id],i);s={value:u.value,population_size:u.population_size,cost:0,contributors:u.contributors},a=u.costs}else{let u=ay(e,t);u!==null?s=u:(s=await t.external(e.source),c=1)}let l={units:s.cost,items_scanned:e.source.kind==="items"||e.source.kind==="dependency_kind"||e.source.kind==="prose_edge_gap"||e.source.kind==="links"?t.items.length:0,history_entries:e.source.kind==="history"?t.history.length:0,provider_calls:c,duration_ms:Date.now()-o},d=su([...a,l],Date.now()-o);if(e.max_cost!==void 0&&d.units>e.max_cost)throw new Ie(`measurement ${e.id} exceeded cost ceiling ${e.max_cost} with ${d.units}`);return{id:e.id,definition_fingerprint:`sha256:${Fg("sha256").update(C(e)).digest("hex")}`,value:s.value,population_size:s.population_size,cost:d,contributors:s.contributors??[],...s.partitions?{partitions:s.partitions}:{}}}function lu(e,t,n,r,i){if(r.includes(e.id))throw new TypeError(`derived measurement cycle: ${[...r,e.id].join(" -> ")}`);let o=i.cache.get(e.id);if(o)return o;let s=ly(e,t,n,r,i).catch(a=>{if(a instanceof Qe&&a.measurement_id===void 0){let c={measurement_id:e.id,source_kind:a.source_kind,field:a.field,...a.check?{check:a.check}:{}},l=new Qe(a.message,c);throw l.cause=a,l}throw a});return i.cache.set(e.id,s),s}async function hs(e,t,n=[e]){return lu(e,t,n,[],{cache:new Map,charged:new Set})}function dy(e,t){return typeof e!="number"||typeof t.value!="number"?null:t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?t.value-e:(t.polarity==="floor"||t.polarity==="monotone_nondecreasing",e-t.value)}function uy(e,t,n={}){fs(e);let r=er(e),i=e.lifetime==="retire"&&n.owner_terminal===!0;return{assertion_id:e.id,measurement_id:e.measurement_id,measurement_definition_fingerprint:t.definition_fingerprint,scope:e.scope,population_size:t.population_size,observed:t.value,bound:r,distance:dy(t.value,r),verdict:i?"retired":nu(t.value,r)?"pass":"fail",enforcement:e.enforcement,negative_control_proven:ru(e),cost:t.cost,contributors:t.contributors,...t.partitions?{partitions:t.partitions}:{}}}function my(e,t,n,r){let i=Xg(e,t);if(i.size===0)return;let o=e.provider_policy,s=o?.triggers[r];if(!o||!s)throw new Ie(`assurance gate ${e.id} refuses provider execution at trigger ${r} without an explicit provider policy`);let a=new Set(o.allowed_providers),c={low:0,medium:1,high:2};for(let l of i){if(!a.has(l))throw new Ie(`assurance gate ${e.id} refuses provider ${l}`);let d=n.provider_capabilities?.[l];if(!d)throw new Ie(`assurance provider ${l} has no declared capabilities`);if(c[d.cost_class]>c[s.max_cost_class])throw new Ie(`assurance gate ${e.id} refuses ${d.cost_class}-cost provider ${l} at trigger ${r}`);if(d.network&&!s.allow_network)throw new Ie(`assurance gate ${e.id} refuses network provider ${l} at trigger ${r}`)}}async function Qd(e,t,n,r,i){try{return await hs(n,r,i)}catch(o){if(o instanceof Qe){let s=o.check?` check ${o.check}`:"",a=o.measurement_id??n.id,c=new Ie(`assurance gate ${e} assertion ${t} measurement ${a} source ${o.source_kind}${s} field ${o.field} could not resolve: ${o.message}`,{gate_id:e,assertion_id:t,measurement_id:a,source_kind:o.source_kind,field:o.field,...o.check?{check:o.check}:{}});throw c.cause=o,c}throw o}}async function du(e,t,n,r){bn(t);let i=t.gates.find(c=>c.id===e);if(!i)throw new Ie(`assurance gate ${e} not found`);if(!i.triggers.includes(r.trigger))throw new Ie(`assurance gate ${e} does not declare trigger ${r.trigger}`);my(i,t,n,r.trigger);let o=await au(i.assertion_ids,tu,async c=>{let l=t.assertions.find(p=>p.id===c),d=t.measurements.find(p=>p.id===l.measurement_id),u=n;if(l.scope.kind==="active"){let p=new Set(n.terminal_statuses??["closed","canceled"]);u={...n,items:n.items.filter(_=>!p.has(_.status))}}else if(l.scope.kind==="filter"){let p=l.scope.measurement_id,_=t.measurements.find(v=>v.id===p),h=await Qd(i.id,l.id,_,n,t.measurements),w=new Set(h.contributors);u={...n,items:n.items.filter(v=>w.has(v.id))}}let m=n.items.find(p=>p.id===l.owner_item_id),f=m!==void 0&&new Set(n.terminal_statuses??["closed","canceled"]).has(m.status);return uy(l,await Qd(i.id,l.id,d,u,t.measurements),{owner_terminal:f})}),s=o.some(c=>c.verdict==="fail"&&c.enforcement==="block"),a=o.some(c=>c.verdict==="fail"&&c.enforcement==="warn");return{gate_id:i.id,tree_id:n.tree_id,trigger:r.trigger,dry_run:r.dry_run===!0,evaluated_at:new Date().toISOString(),verdict:s?"block":a?"warn":"pass",exit_code:s?1:0,assertions:o,assertions_total:o.length,row_contract:{row_keys:["assertions"],jq_selector:".assertions[]"},cost:su(o.map(c=>c.cost),Math.max(0,...o.map(c=>c.cost.duration_ms)))}}function vi(e){return Ug.join(e,"assurance.json")}async function uu(e){let t=await V(vi(e));return t===null?tr():bi(t)}function bi(e){try{return bn(JSON.parse(e))}catch(t){throw new y("The assurance registry is invalid. Repair or restore .agents/pm/assurance.json and retry.",g.GENERIC_FAILURE,{code:"assurance_registry_invalid",reason:String(t),nextSteps:["Restore a valid assurance.json from version control or repair its declaration references.","Run pm assurance list measurement after the repair."]})}}function ki(e,t){return t==="measurement"?e.measurements:t==="assertion"?e.assertions:e.gates}function fy(e,t){e==="measurement"?ms(t):e==="assertion"?fs(t):iu(t)}async function nr(e,t){let n=structuredClone(ki(await uu(e),t));return{items:n,count:n.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function _s(e,t,n){let r=ki(await uu(e),t).find(i=>i.id===n);if(!r)throw new TypeError(`assurance ${t} ${n} not found`);return structuredClone(r)}async function Si(e,t,n,r={}){fy(t,n);let i=await $(e),o=q(r.author,i.author_default),s=await hn({pmRoot:e,filePath:vi(e),op:`assurance:${t}:put`,author:o,message:r.message,lockTtlSeconds:yi,lockWaitMs:wi,mutate:a=>{let c=a===null?tr():bi(a),l=ki(c,t),d=l.findIndex(m=>m.id===n.id),u=d<0?"created":"updated";if(t==="assertion"&&d>=0&&Bg(l[d],n)){let m=n.authorization_decision;if(!m||!r.authorized_decision_ids?.includes(m))throw new L(`loosening assertion ${n.id} requires a verified authorization_decision`)}return d<0?l.push(structuredClone(n)):l[d]=structuredClone(n),bn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
2
2
|
`,result:{changed:!0,action:u,kind:t,id:n.id}}}});return{...s.result,changed:s.changed}}async function gs(e,t,n={}){let r=tr();r.measurements=structuredClone(t.measurements),r.assertions=structuredClone(t.assertions),r.gates=structuredClone(t.gates),bn(r);let i=await $(e),o=q(n.author,i.author_default),s=await hn({pmRoot:e,filePath:vi(e),op:"assurance:bundle:apply",author:o,message:n.message,lockTtlSeconds:yi,lockWaitMs:wi,mutate:a=>{let c=a===null?tr():bi(a),l=[],d=[],u=(m,f,p)=>{for(let _ of f){let h=m.find(w=>w.id===_.id);if(!h){m.push(structuredClone(_)),l.push(`${p}:${_.id}`);continue}if(C(h)!==C(_))throw new L(`assurance bundle refuses to replace divergent ${p} ${_.id}`);d.push(`${p}:${_.id}`)}};return u(c.measurements,r.measurements,"measurement"),u(c.assertions,r.assertions,"assertion"),u(c.gates,r.gates,"gate"),bn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
3
3
|
`,result:{changed:l.length>0,created_ids:l,unchanged_ids:d}}}});return{...s.result,changed:s.changed}}async function mu(e,t,n,r={}){let i=await $(e),o=q(r.author,i.author_default),s=await hn({pmRoot:e,filePath:vi(e),op:`assurance:${t}:remove`,author:o,message:r.message,lockTtlSeconds:yi,lockWaitMs:wi,mutate:a=>{let c=a===null?tr():bi(a);if(t==="measurement"){let u=ou(c).get(n);if(u&&u.length>0)throw new L(`assurance measurement ${n} is referenced by ${u.join(", ")}`)}if(t==="assertion"&&c.gates.some(u=>u.assertion_ids.includes(n)))throw new L(`assurance assertion ${n} is referenced by gate`);let l=ki(c,t),d=l.findIndex(u=>u.id===n);if(d<0)throw new L(`assurance ${t} ${n} not found`);return l.splice(d,1),bn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
4
4
|
`,result:{changed:!0,action:"removed",kind:t,id:n}}}});return{...s.result,changed:s.changed}}async function fu(e,t,n={}){if(t.dry_run)throw new TypeError("dry-run assurance verdicts are not persisted");let r=await $(e);await ci({pmRoot:e,op:"assurance:gate:verdict",author:q(n.author,r.author_default),context:{assurance_verdict:t},message:n.message??`Assurance gate ${t.gate_id} returned ${t.verdict}`,lockTtlSeconds:yi,lockWaitMs:wi})}async function pu(e,t={}){let n=t.limit??Wg;if(!Number.isInteger(n)||n<1||n>vn)throw new TypeError(`assurance verdict limit must be an integer from 1 through ${vn}`);return(await Ut(ai(e),fe)).reverse().filter(i=>i.op==="assurance:gate:verdict").map(i=>i.context?.assurance_verdict).filter(i=>typeof i=="object"&&i!==null&&"gate_id"in i).filter(i=>t.gate_id===void 0||i.gate_id===t.gate_id).slice(0,n)}(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]="0daf7c89-abc5-5c35-ba3f-9772a50408c0")}catch{}})();var rr={type:"string",minLength:1,maxLength:128,pattern:"\\S"},Ei={type:"array",minItems:1,maxItems:Bo,items:rr},hu={...Ei,items:{...rr,pattern:"^(?!(?:.*\\.)?(?:__proto__|constructor|prototype)(?:\\.|$))[a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*){0,7}$"}},py={type:"object",additionalProperties:!1,required:["id","rule"],properties:{id:{type:"string",minLength:1,maxLength:128,pattern:"^[a-zA-Z0-9][a-zA-Z0-9._-]*$"},description:{type:"string",minLength:1,maxLength:500,pattern:"\\S"},effect:{enum:["advise","warn","refuse"]},subject:{type:"object",additionalProperties:!1,properties:{...Object.fromEntries(["types","tags","statuses","operations","parents"].map(e=>[e,Ei])),dependency:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:rr,id:rr}}}},rule:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","fields"],properties:{kind:{const:"require_fields"},fields:hu}},{type:"object",additionalProperties:!1,required:["kind","authors"],properties:{kind:{const:"authors"},authors:Ei}},...["field_writers","approval"].map(e=>({type:"object",additionalProperties:!1,required:["kind","fields","authors"],properties:{kind:{const:e},fields:hu,authors:Ei}})),{type:"object",additionalProperties:!1,required:["kind","allowed"],properties:{kind:{const:"transition"},allowed:{type:"array",maxItems:Bo,items:{type:"array",minItems:2,maxItems:2,items:rr}}}}]}}},HT={$schema:"https://json-schema.org/draft/2020-12/schema",title:"pm workflow policy registry",type:"object",additionalProperties:!1,required:["version","policies"],properties:{version:{const:1},enforcement:{enum:["advise","refuse"],default:"advise"},policies:{type:"array",maxItems:El,items:py}}};(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]="42dee0a5-d003-5e44-8b2d-d74a23d3f2ce")}catch{}})();async function _u(e,t,n,r){let i=await It(e).catch(()=>null);return i===null?{check:{name:"completeness",status:"error",ok:!1,details:{policy_registry_readable:!1,policy_registry_path:"schema/policies.json",remediation_hint:"Repair schema/policies.json, then rerun pm validate."}},warnings:["validate_completeness_policy_registry_unreadable"]}:gu(i,t,n,r)}function hy(e,t,n){return e===0?"undeclared":t===0?"empty":n===0?"inapplicable":n===t?"covered":"partial"}function gu(e,t,n=5,r=!1){let i=[],o=new Map,s=e.policies.filter(h=>h.rule.kind==="require_fields"),a=s.filter(h=>h.subject?.operations===void 0),c=new Set,l=0,d=0,u=0,m=0,f=0,p=Al(e);for(let h of t){let w=p({operation:"",author:"",before:h,after:h,completeness_only:!0});l+=+(w.decisions.length>0),d+=w.decisions.length,w.decisions.forEach(S=>c.add(S.policy_id));let v=w.decisions.filter(S=>!S.satisfied);if(v.length===0)continue;m+=1;let k=o.get(h.type)??{items:0,violations:0,missing_fields:0};k.items+=1;for(let S of v)u+=1,k.violations+=1,k.missing_fields+=S.missing_fields.length,S.effect==="refuse"&&(f+=1),i.length<n&&i.push({id:h.id,type:h.type,status:h.status,decision:S});o.set(h.type,k)}let _=r||f>0?"error":u>0?"warn":"ok";return{check:{name:"completeness",status:_,ok:_==="ok",details:{scope:"operation_independent_require_fields",declared_requirement_count:s.length,state_requirement_count:a.length,applicable_requirement_count:c.size,requirement_application_count:d,governed_items:l,ungoverned_items:t.length-l,contract_status:hy(s.length,t.length,l),applied_policy_ids:[...c].sort().slice(0,Math.max(0,n)),applied_policy_ids_truncated:c.size>Math.max(0,n),checked_items:t.length,incomplete_items:m,violation_count:u,refused_violations:f,missing_by_type:Object.fromEntries(o),violations:i,violations_truncated:i.length<u,enforcement:e.enforcement}},warnings:[...u>0?[`validate_completeness_missing_fields:${u}`]:[],...r?["validate_completeness_source_incomplete"]:[]]}}import _y 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]="f54fe358-8f4c-5bf4-ae2a-9c92cd08c953")}catch{}})();function gy(){return{version:1,enforcement:"advise",policies:[...[["Epic",["goal","objective","body"]],["Story",["description","value","acceptance_criteria"]],["Decision",["body","resolution"]],["Feature",["acceptance_criteria","expected_result"]],["Task",["description"]],["Issue",["repro_steps","expected_result"]],["Chore",["description"]]].map(([t,n])=>({id:`completeness-${t.toLowerCase()}`,effect:"advise",description:`Evidence expected when ${t} work reaches completion.`,subject:{types:[t],statuses:["closed"]},rule:{kind:"require_fields",fields:[...n]}})),{id:"completeness-resolution",effect:"advise",subject:{statuses:["closed"]},rule:{kind:"require_fields",fields:["resolution","expected_result","actual_result"]}}]}}function vu(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{throw new y("Policy definition must be valid JSON.",g.USAGE)}if(typeof t!="object"||t===null||Array.isArray(t))throw new y("Policy definition must be an object.",g.USAGE);return t}async function yy(e,t){let n=N(process.cwd(),e.path);await ne(n);let r=await $(n);return{pmRoot:n,settings:r,author:q(t,r.author_default)}}function yu(e,t,n,r){if(e==="policy-mode")return Jo({...n,enforcement:t});let i=n.policies.filter(a=>a.id!==t);if(e==="policy-remove")return{...n,policies:i};let o=Vo(r.definition),s=Jo({...n,policies:[...i,o].sort((a,c)=>a.id.localeCompare(c.id))});if(Buffer.byteLength(`${JSON.stringify(s,null,2)}
|
|
5
5
|
`)>bd)throw new y("Policy registry exceeds its byte ceiling.",g.USAGE);return s}async function wu(e,t,n,r){if(n.dryRun)return{policy_result:!0,action:e,changed:!1,result:yu(e,t,await It(r.pmRoot),n)};let i=await hn({pmRoot:r.pmRoot,filePath:_y.join(r.pmRoot,"schema","policies.json"),op:`schema:${e}`,author:r.author,message:n.message,lockTtlSeconds:r.settings.locks.ttl_seconds,lockWaitMs:r.settings.locks.wait_ms,mutate(o){let s=yu(e,t,kd(o),n);return{raw:`${JSON.stringify(s,null,2)}
|
|
6
|
-
`,result:s}}});return{policy_result:!0,action:e,changed:i.changed,result:i.result}}async function wy(e,t,n){let r,i=await Cd({...n,id:e,op:"policy_approve",message:t.message,resolveHistoryContext:()=>({workflow_approval:r}),async mutate(o){let a=(await It(n.pmRoot)).policies.find(c=>c.id===t.policy);if(!a||a.rule.kind!=="approval")throw new y("--policy must name an approval rule.",g.USAGE);if(!a.rule.authors.includes(n.author))throw new y("This actor is not a declared approver.",g.CONFLICT);return await Sd(n.pmRoot,o.metadata.id),r={policy_id:a.id,policy_fingerprint:xl(a),content_fingerprint:Il(a,{...o.metadata,body:o.body})},{changedFields:[]}}});return{policy_result:!0,action:"policy-approve",changed:!0,result:{id:i.item.id,...r,warnings:i.warnings}}}function vy(e,t){let n=vu(t),r=Vo({...n,id:n.id===void 0?e:n.id});if(e!==void 0&&e.trim()!==r.id)throw new y("Policy id operand does not match definition.id.",g.USAGE,{required:"Use the same policy id operand and definition.id, or supply only one of them.",nextSteps:["Omit the policy id operand to use definition.id, or omit definition.id to use the operand."]});return r}async function c$(e,t,n={},r={}){if(!Jr.includes(e))throw new y("Unknown workflow policy action.",g.USAGE);if(e==="policy-presets")return{policy_result:!0,action:e,changed:!1,result:gy()};let i=await yy(r,n.author);if(e==="policies")return{policy_result:!0,action:e,changed:!1,result:await It(i.pmRoot)};if(e==="policy-put"){let d=vy(t,n.definition);return wu(e,d.id,{...n,definition:d},i)}if(!t?.trim())throw new y(`schema ${e} requires an operand.`,g.USAGE);if(["policy-remove","policy-mode"].includes(e))return wu(e,t,n,i);if(e==="policy-approve"){if(n.dryRun)throw new y("Use policy-check to preview; policy-approve records an approval.",g.USAGE);return wy(t,n,i)}let o=G(i.settings,H()),s=await Pe(i.pmRoot,t,i.settings.id_prefix,i.settings.item_format,o.type_to_folder);if(!s)throw new y(`Item ${t} not found.`,g.NOT_FOUND);let{document:a}=await Ne(s,{schema:i.settings.schema}),c={...a.metadata,body:a.body},l=n.definition===void 0?c:{...c,...vu(n.definition)};if(l.id!==c.id)throw new y("Policy preview cannot change the item id.",g.USAGE);return{policy_result:!0,action:e,changed:!1,result:await Ed(i.pmRoot,await It(i.pmRoot),{operation:"update",author:i.author,before:c,after:l,completeness_only:n.definition===void 0})}}import{createHash as Ou}from"node:crypto";import ir from"node:fs/promises";import or from"node:path";import{Option as R$}from"commander";(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]="7ffd5046-9154-52e7-94ce-192b07b8ceae")}catch{}})();function by(e,t){let n=[],r=new Set;for(let i of t.keys){if(!Object.hasOwn(e,i))continue;let o=e[i];if(o!=null){if(typeof o=="string"){n.push(o);continue}if(!Array.isArray(o)||!o.every(s=>typeof s=="string"))return;r.has(o)||(r.add(o),n.push(...o))}}return n.length>0?n.join("; "):void 0}function xi(e,t){return e.find(r=>r.target===t)??{target:t,keys:[t]}}function U(e,t){return e[t]===!0?!0:void 0}function ut(e,t){return e[t]===!1?!0:void 0}function bu(e,t){return t.some(n=>e[n]===!0)?!0:void 0}function ku(e,t){for(let[n,r]of Object.entries(t))n==="__proto__"||n==="constructor"||n==="prototype"||Object.hasOwn(e,n)||(e[n]=r)}function Su(e){let t=i=>Uo(e,xi(ei,i)),n=i=>cl(e,xi(Yo,i)),r={title:t("title"),description:t("description"),body:t("body"),status:t("status"),closeReason:t("closeReason"),priority:t("priority"),type:t("type"),tags:t("tags"),addTags:n("addTags"),removeTags:n("removeTags"),deadline:t("deadline"),estimatedMinutes:t("estimatedMinutes"),acceptanceCriteria:by(e,xi(Yo,"acceptanceCriteria")),addAc:n("addAc"),removeAc:n("removeAc"),definitionOfReady:t("definitionOfReady"),order:t("order"),rank:t("rank"),goal:t("goal"),objective:t("objective"),value:t("value"),impact:t("impact"),outcome:t("outcome"),whyNow:t("whyNow"),author:t("author"),message:t("message"),force:!!e.force,ownershipMetadataBypass:e.ownershipMetadataBypass===!0?!0:void 0,ownershipDependencyBypass:e.ownershipDependencyBypass===!0?!0:void 0,assignee:t("assignee"),parent:t("parent"),allowUnresolvedDeps:bu(e,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,reviewer:t("reviewer"),risk:t("risk"),confidence:t("confidence"),sprint:t("sprint"),release:t("release"),blockedBy:t("blockedBy"),blockedReason:t("blockedReason"),unblockNote:t("unblockNote"),reporter:t("reporter"),severity:t("severity"),environment:t("environment"),reproSteps:t("reproSteps"),resolution:t("resolution"),expectedResult:t("expectedResult"),actualResult:t("actualResult"),affectedVersion:t("affectedVersion"),fixedVersion:t("fixedVersion"),component:t("component"),regression:e.regression===!0?"true":t("regression"),customerImpact:t("customerImpact"),dep:n("dep"),depRemove:n("depRemove"),replaceDeps:U(e,"replaceDeps"),replaceTests:U(e,"replaceTests"),replaceFiles:U(e,"replaceFiles"),replaceDocs:U(e,"replaceDocs"),comment:n("comment"),note:n("note"),learning:n("learning"),file:n("file"),test:n("test"),doc:n("doc"),reminder:n("reminder"),event:n("event"),typeOption:n("typeOption"),field:n("field"),unset:n("unset"),clearDeps:U(e,"clearDeps"),clearComments:U(e,"clearComments"),clearNotes:U(e,"clearNotes"),clearLearnings:U(e,"clearLearnings"),clearFiles:U(e,"clearFiles"),clearTests:U(e,"clearTests"),clearDocs:U(e,"clearDocs"),clearReminders:U(e,"clearReminders"),clearEvents:U(e,"clearEvents"),clearTypeOptions:U(e,"clearTypeOptions")};return ku(r,e),r}function ie(e,t){let n=xi(al,t),r=Uo(e,n);if(r!==void 0)return r;for(let i of n.keys){let o=e[i];if(Array.isArray(o)){let s=o.filter(a=>typeof a=="string");if(s.length>0)return s.join(",")}if(t==="ids"&&typeof o=="string")return o;if(typeof o=="number"&&Number.isFinite(o))return String(o)}}function ky(e){let t=U(e,"filterFilesMissing"),n=U(e,"filterDocsMissing");return{filterReviewerMissing:U(e,"filterReviewerMissing"),filterRiskMissing:U(e,"filterRiskMissing"),filterConfidenceMissing:U(e,"filterConfidenceMissing"),filterSprintMissing:U(e,"filterSprintMissing"),filterReleaseMissing:U(e,"filterReleaseMissing"),hasNotes:U(e,"hasNotes"),hasLearnings:U(e,"hasLearnings"),hasFiles:U(e,"hasFiles"),hasDocs:U(e,"hasDocs"),hasTests:U(e,"hasTests"),hasComments:U(e,"hasComments"),hasDeps:U(e,"hasDeps"),hasBody:U(e,"hasBody"),hasLinkedCommand:U(e,"hasLinkedCommand"),noNotes:ut(e,"notes"),noLearnings:ut(e,"learnings"),noFiles:ut(e,"files")??t,filterFilesMissing:t,noDocs:ut(e,"docs")??n,filterDocsMissing:n,noTests:ut(e,"tests"),noComments:ut(e,"comments"),noDeps:ut(e,"deps"),emptyBody:U(e,"emptyBody"),noLinkedCommand:ut(e,"linkedCommand")}}function Eu(e){let t={status:ie(e,"status"),type:ie(e,"type"),tag:ie(e,"tag"),priority:ie(e,"priority"),deadlineBefore:ie(e,"deadlineBefore"),deadlineAfter:ie(e,"deadlineAfter"),updatedAfter:ie(e,"updatedAfter"),updatedBefore:ie(e,"updatedBefore"),createdAfter:ie(e,"createdAfter"),createdBefore:ie(e,"createdBefore"),today:U(e,"today"),recent:U(e,"recent"),ids:ie(e,"ids"),assignee:ie(e,"assignee"),assigneeFilter:ie(e,"assigneeFilter"),parent:ie(e,"parent"),sprint:ie(e,"sprint"),release:ie(e,"release"),limit:ie(e,"limit"),offset:ie(e,"offset"),noTruncate:ut(e,"truncate"),includeBody:U(e,"includeBody"),strictRead:U(e,"strictRead"),compact:U(e,"compact"),brief:U(e,"brief"),full:U(e,"full"),fields:ie(e,"fields"),sort:ie(e,"sort"),order:ie(e,"order"),tree:U(e,"tree"),treeDepth:ie(e,"treeDepth"),filterAcMissing:U(e,"filterAcMissing"),filterEstimatesMissing:bu(e,["filterEstimatesMissing","filterEstimateMissing"]),filterResolutionMissing:U(e,"filterResolutionMissing"),filterMetadataMissing:U(e,"filterMetadataMissing"),...ky(e)};return ku(t,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]="17883200-00ba-51ef-8a6b-ab0ce2ad2029")}catch{}})();var Sy=Symbol("pm.mcp-mutation-transport"),Ey=new Set(["activity","aggregate","context","contracts","deps","files-discover","files-lookup","get","graph","health","history","history-attest","list","next","search","stats","telemetry","validate"]);function Ai(e){return Sy in e}function Ri(e,t){return Ai(e)?pd(t):ts(e,t)}function U$(e,t,n=[]){let r=ts(e,{...e,...t});for(let i of n)Reflect.deleteProperty(r,i);return r}function D(e,t){let n=e[t];return typeof n=="string"&&n.trim().length>0?n:void 0}function se(e,t){let n=e[t];return typeof n=="string"?n.trim().length>0?n:void 0:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function z$(e,t){let n=e[t];return typeof n=="string"?n:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function kn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function vs(e,t){if(typeof e=="number"){if(!Number.isInteger(e))throw new y(`${t} must be a finite integer.`,g.USAGE);return e}if(typeof e=="string"&&e.trim().length>0){let n=Number(e);if(!Number.isInteger(n))throw new y(`${t} must be a finite integer.`,g.USAGE);return n}}function H$(e,t){return typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:typeof t.limit=="number"&&Number.isFinite(t.limit)?t.limit:D(e,"limit")??D(t,"limit")}function W$(e){let t=D(e,"outputFormat");return{json:!0,quiet:!0,author:D(e,"author"),path:D(e,"path"),noExtensions:e.noExtensions===!0||e.no_extensions===!0,noPager:!0,outputInclude:D(e,"outputInclude"),outputLimit:se(e,"outputLimit"),outputBudget:se(e,"outputBudget"),outputSession:D(e,"outputSession"),outputCursor:D(e,"outputCursor"),outputFormat:t==="json"||t==="toon"?t:void 0}}var xy=new Set(["tags","blockedBy","blocked_by","skills","fields"]),Iu=new Set(["comment","note","learning","reminder","event","dep","depRemove","dep_remove","file","doc","test","unset","addGlob","add_glob","migrate","envSet","env_set","envClear","env_clear"]),Iy=new Set([...Iu].filter(e=>e!=="file")),Ay=new Set(["files","files-discover","docs","test","test-all"]),Au=new Set(["comments","notes","learnings"]);function Ry(e,t){if(!(!Au.has(e)||!Object.prototype.hasOwnProperty.call(t,"file")))throw new y(`MCP ${e} does not accept options.file. Pass annotation text in options.add instead.`,g.USAGE,{code:"mcp_annotation_file_unavailable",required:"Pass annotation text as JSON data; MCP annotation actions cannot read server-local files."})}var Cy=new Set(["claim","release","start-task","pause-task","close-task"]),Ty={"history-attest":["verify","output","hashAlgorithm"],list:["status","type","tag","priority","limit","offset"],search:["mode","status","type","tag","priority","limit"],create:["title","type","status","description","body","priority","tags","parent","createMode","create_mode","allowMissingParent","allowDuplicate"],update:["parent","allowMissingParent","completedAt"],copy:["allowDuplicate"],close:["duplicateOf","completedAt","releaseAssignment"],claim:["start","next","ifAvailable"],release:["pause"],comments:["ifAbsent"],notes:["ifAbsent"],learnings:["ifAbsent"],extension:["dryRun"],package:["dryRun"],install:["dryRun"],upgrade:["scope","dryRun","cliOnly","packagesOnly","repair","tag","packageName"],append:["body"]},$y=["outputInclude","outputLimit","outputBudget","outputFormat","outputSession","outputCursor"];function Ru(e,t=""){let n={},r=Ay.has(t),i=t==="files"||t==="files-discover"||t==="docs",o=Au.has(t)?Iy:Iu;for(let[s,a]of Object.entries(e)){if(Array.isArray(a)&&xy.has(s)){n[s]=a.join(",");continue}if(s==="note"&&i){n[s]=a;continue}if(typeof a=="string"&&o.has(s)){n[s]=[a];continue}if(typeof a=="string"&&r&&(s==="add"||s==="remove")){n[s]=[a];continue}n[s]=a}return Object.assign(n,Object.fromEntries(Object.getOwnPropertySymbols(e).map(s=>[s,Reflect.get(e,s)]))),n}function Oy(e,t,n){let r=D(e,"author");return r!==void 0?r:n!==void 0&&Cy.has(n)?D(e,"assignee")??D(t,"assignee"):void 0}function Dy(e,t){return t!==void 0&&e.author===void 0?{...e,author:t}:e}function G$(e,t){let n=kn(e.options)?e.options:void 0,r=Xc(e.options),i={},o=c=>{r[c]!==void 0||e[c]===void 0||(i[c]=e[c])};for(let c of Ty[t??""]??[])o(c);for(let c of $y)o(c);t!==void 0&&Ai(e)&&Ry(t,r);let s=Ru({...i,...r},t);if(t==="history-attest"&&Ai(e)&&(s.output!==void 0||typeof s.verify=="string"))throw new y("MCP history attest does not accept server-local proof paths. Export the returned JSON bundle and pass that JSON object as verify.",g.USAGE);let a=Ai(e)?e:n??e;return Ri(a,Dy(s,Oy(e,s,t)))}function q$(e){if(e.addNote===void 0)return e;let t={...e};return t.note===void 0&&typeof t.addNote=="string"&&(t.note=t.addNote),delete t.addNote,t}function B$(e){let t={...e};return t.discoveryNote!==void 0&&t.note===void 0&&typeof t.discoveryNote=="string"&&(t.note=t.discoveryNote),delete t.discover,delete t.discoveryNote,t}function Py(e){let t=[],n=!0;for(let r of e.trim().toLowerCase()){if(r>="a"&&r<="z"||r>="0"&&r<="9"){t.push(r),n=!1;continue}n||(t.push("-"),n=!0)}return t.at(-1)==="-"&&t.pop(),t.join("")}function V$(e){return!Ey.has(Py(e))}function J$(e){return e.trim().toLowerCase().split(/\s+/).filter(Boolean).join(" ")}function bs(e){return Array.isArray(e)?e.map(t=>String(t)).filter(t=>t.length>0):[]}function K$(e,t){let n=new Set(["action","args","author","cwd","fullChangedFields","id","options","path","query","reason","target"]),r={};for(let[o,s]of Object.entries(e))n.has(o)||(r[o]=s);let i={...r,...t};return delete i.args,i}function Y$(e,t){let n=Ri(t??{},{...t});return{changedFields:e.fullChangedFields===!0?"full":"compact",idOnly:e.idOnly===!0,runnerOptions:n}}function ws(e){return{type:se(e,"filterType"),tag:se(e,"filterTag"),priority:se(e,"filterPriority"),deadlineBefore:se(e,"filterDeadlineBefore"),deadlineAfter:se(e,"filterDeadlineAfter"),updatedAfter:se(e,"filterUpdatedAfter"),updatedBefore:se(e,"filterUpdatedBefore"),createdAfter:se(e,"filterCreatedAfter"),createdBefore:se(e,"filterCreatedBefore"),ids:ns(e.ids),assignee:se(e,"filterAssignee"),assigneeFilter:se(e,"filterAssigneeFilter")??se(e,"filterAssignee_filter"),parent:se(e,"filterParent"),sprint:se(e,"filterSprint"),release:se(e,"filterRelease"),limit:se(e,"limit"),offset:se(e,"offset")}}function ys(e){if(typeof e=="string"&&e.trim().length>0)return e;if(Array.isArray(e))return bs(e)}function Ii(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="string"&&e.trim().length>0)return e}function X$(e){let t=ys(e.kind),n=ys(e.exemptIsolate),r=ys(e.exemptIsolateType);return{...t===void 0?{}:{kind:t},maxDepth:Ii(e.maxDepth),limit:Ii(e.limit),after:D(e,"after"),direction:D(e,"direction"),maxPaths:Ii(e.maxPaths),sample:Ii(e.sample),...n===void 0?{}:{exemptIsolate:n},...r===void 0?{}:{exemptIsolateType:r},saveBaseline:e.saveBaseline===!0,rebuild:e.rebuild===!0,clear:e.clear===!0,summary:e.summary===!0,...e.full===!0?{full:!0}:{}}}function Cu(e){let t=Eu(e);return e.ids!==void 0&&(t.ids=ns(e.ids)),t}function Z$(e){return{status:D(e,"filterStatus"),list:kn(e.list)?Cu(e.list):ws(e),reason:D(e,"reason"),resolution:D(e,"resolution"),expectedResult:D(e,"expectedResult")??D(e,"expected_result")??D(e,"expected"),actualResult:D(e,"actualResult")??D(e,"actual_result")??D(e,"actual"),validateClose:D(e,"validateClose")??D(e,"validate_close"),author:D(e,"author"),message:D(e,"message"),force:e.force===!0?!0:void 0,dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:D(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}var Ny=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","ids","list","update","limit","offset","dryRun","dry_run","rollback","checkpoint","noCheckpoint","no_checkpoint"]);function xu(e){let t={};for(let[n,r]of Object.entries(e))Ny.has(n)||(t[n]=r);return Tu(t)}function Tu(e){let t=Ru(e,"update-many");for(let n of ei)for(let r of n.keys){let i=t[r];typeof i=="number"&&Number.isFinite(i)&&(t[r]=String(i))}return Su(t)}function Q$(e){if(kn(e.list)||kn(e.update)){let t=kn(e.update)?e.update:xu(e),n=Ri(e,Tu(t));return{status:se(e,"filterStatus"),list:kn(e.list)?Cu(e.list):ws(e),update:hd(t,n),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:D(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}return{status:se(e,"filterStatus"),list:ws(e),update:Ri(e,xu(e)),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:D(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}(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]="fd8c4c35-98bb-5f3b-927d-8696125af703")}catch{}})();function Le(e,t){throw new y(e,g.USAGE,t)}var Ly="2026-07-15T06:22:12.276Z",My=Date.parse(Ly),jy=[["attributed","attributed"],["legacy_unknown","actionable_unknown"]],$u=e=>typeof e=="string"?e:"",Du=e=>{let t=e??{},n=$u(t.author).trim().toLowerCase(),r=Number(["","unknown"].includes(n)),i=+(Date.parse($u(t.ts))>=My);return jy[r][i]};function Pu(e,t,n=20,r=new Set,i=!1){let o=[],s=[],a={legacy_unknown:0,actionable_unknown:0},c=Math.max(0,n),l=0,d=0,u=0;for(let[m,f]of t.split(/\r?\n/).entries()){let p;try{p=JSON.parse(f)}catch{continue}l+=1;let _=Du(p);if(_!=="attributed"){if(d+=1,_==="actionable_unknown"&&r.has(`${e}:${m+1}`)){u+=1;continue}a[_]+=1,i&&_==="actionable_unknown"&&s.push({item_id:e,line:m+1}),o.length<c&&o.push({item_id:e,line:m+1})}}return{checked_events:l,unknown_event_count:d,legacy_unknown_event_count:a.legacy_unknown,actionable_unknown_event_count:a.actionable_unknown,acknowledged_actionable_event_count:u,samples:o,samples_truncated:a.legacy_unknown+a.actionable_unknown>o.length,actionable_events:s}}var lO=(e,t,n=20,r=new Set)=>Pu(e,t,n,r);function Nu(e){let t=new Set;for(let n of e.split(/\r?\n/)){let r;try{r=JSON.parse(n)}catch{continue}let o=(typeof r=="object"&&r!==null&&typeof r.context=="object"&&r.context!==null?r.context:{}).author_acknowledgment;if(!(typeof o!="object"||o===null||!Array.isArray(o.events)))for(let s of o.events)typeof s=="object"&&s!==null&&typeof s.item_id=="string"&&Number.isSafeInteger(s.line)&&t.add(`${s.item_id}:${String(s.line)}`)}return t}var sr=async(e,t=20,n=!1)=>{let r=or.join(e,"history"),i;try{i=(await ir.readdir(r)).filter(w=>w.endsWith(".jsonl")).sort((w,v)=>w.localeCompare(v))}catch{i=[]}let o=new Set,s=[],a=[],c=0,l=0,d=0,u=0,m=0,f=0,p="_workspace.jsonl",_=new Set;if(i.includes(p))try{_=Nu(await ir.readFile(or.join(r,p),"utf8"))}catch{_=new Set}for(let w of i){let v;try{v=await ir.readFile(or.join(r,w),"utf8")}catch{continue}let k=w.slice(0,-6),S=Pu(k,v,t-s.length,_,n);c+=1,l+=S.checked_events,d+=S.unknown_event_count,u+=S.legacy_unknown_event_count,m+=S.actionable_unknown_event_count,f+=S.acknowledged_actionable_event_count,S.unknown_event_count>0&&o.add(k),s.push(...S.samples),n&&a.push(...S.actionable_events)}let h=u+m;return{checked_streams:c,checked_events:l,unknown_event_count:d,legacy_unknown_event_count:u,actionable_unknown_event_count:m,acknowledged_actionable_event_count:f,affected_item_ids:[...o].sort((w,v)=>w.localeCompare(v)),samples:s,samples_truncated:h>s.length,...n?{actionable_events:a}:{}}};function Fy(e){return[...new Map(e.map(t=>[`${t.item_id}:${t.line}`,{item_id:t.item_id,line:t.line}])).values()].sort((t,n)=>t.item_id.localeCompare(n.item_id)||t.line-n.line)}async function Uy(e){try{return Nu(await ir.readFile(or.join(e,"history","_workspace.jsonl"),"utf8"))}catch{return new Set}}function zy(e){return(e.item_id===fe||/^[a-z0-9][a-z0-9-]*$/iu.test(e.item_id))&&Number.isSafeInteger(e.line)&&e.line>=1}function Hy(e,t,n){let r=n[e.line-1]??"",i;try{i=JSON.parse(r)}catch{Le(`Unknown-author acknowledgment target ${e.item_id}:${e.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}return Du(i)!=="actionable_unknown"&&Le(`Author acknowledgment target ${e.item_id}:${e.line} is not an actionable unknown-author event.`,{code:"history_author_acknowledge_target_not_actionable"}),{...e,source_event_hash:Ou("sha256").update(r).digest("hex"),disposition:t.has(`${e.item_id}:${e.line}`)?"already_acknowledged":"actionable"}}async function Lu(e,t,n){let r=t.events??[],i=+(t.all_actionable===!0)+ +(r.length>0);i===0&&Le("Specify exactly one selector: events or all_actionable.",{code:"history_author_acknowledge_selector_required"}),i>1&&Le("Author acknowledgment accepts either explicit events or all_actionable, not both.",{code:"history_author_acknowledge_selector_conflict"}),(!Number.isSafeInteger(n)||n<0)&&Le("Author acknowledgment coordinate_limit must be a non-negative integer.",{code:"history_author_acknowledge_preview_limit_invalid"});let o=Fy(t.all_actionable===!0?(await sr(e,0,!0)).actionable_events:r),s=await Uy(e),a=new Map;for(let m of o)if(zy(m)||Le(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"}),!a.has(m.item_id))try{a.set(m.item_id,(await ir.readFile(or.join(e,"history",`${m.item_id}.jsonl`),"utf8")).split(/\r?\n/u))}catch{Le(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}let c=o.map(m=>Hy(m,s,a.get(m.item_id))),l=t.all_actionable===!0?"all_actionable":"events",d=Ou("sha256").update(JSON.stringify({version:1,selection:l,coordinates:c})).digest("hex"),u=c.filter(({disposition:m})=>m==="actionable").length;return{plan:{selection:{kind:l},selected_count:c.length,actionable_count:u,already_acknowledged_count:c.length-u,omitted_count:Math.max(0,c.length-n),coordinates:c.slice(0,n),plan_fingerprint:d},completeCoordinates:c}}async function dO(e,t,n=50){return(await Lu(e,t,n)).plan}function Wy(e,t){let n=e.length>0;return n&&t&&Le("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_conflict",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),!n&&!t&&Le("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_required",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),{events:Gy(e),all_actionable:t}}function Gy(e){return e.map(t=>{let n=t.lastIndexOf(":"),r=t.slice(0,n).trim(),i=Number(t.slice(n+1)),o=r===fe||/^[a-z0-9][a-z0-9-]*$/iu.test(r);return(n<1||!o||!Number.isSafeInteger(i)||i<1)&&Le(`history-author-acknowledge --event expects <item-id>:<one-based-line>, received "${t}".`,{code:"history_author_acknowledge_target_unreadable"}),{item_id:r,line:i}})}function uO(e,t){let n=Wy(bs(t.historyEvent),t.allActionable===!0||t.all_actionable===!0);return qy(e,{events:n.events,all_actionable:n.all_actionable,dry_run:t.dryRun===!0||t.dry_run===!0,plan_fingerprint:D(t,"planFingerprint")??D(t,"plan_fingerprint"),coordinate_limit:typeof t.limit=="number"?t.limit:typeof t.limit=="string"?Number(t.limit):void 0,attributed_author:D(t,"attributedAuthor")??D(t,"attributed_author")??void 0,reviewer:D(t,"reviewer"),reason:D(t,"reason")})}async function qy(e,t){let n=t.reviewer?.trim()??"",r=t.attributed_author?.trim()??"",i=t.reason?.trim()??"",o=await Lu(e,t,t.coordinate_limit??50);if(t.dry_run===!0)return{dry_run:!0,mutated:!1,acknowledged:0,outcome:"preview",exit_code:g.SUCCESS,plan:o.plan};if([n.length>0,n.toLowerCase()!=="unknown",r.length>0,r.toLowerCase()!=="unknown",i.length>0].includes(!1)&&Le("Author acknowledgment requires events, reviewer, attributed_author, and reason.",{code:"history_author_acknowledge_required_values_missing"}),t.plan_fingerprint?.trim()||Le("Author acknowledgment apply requires plan_fingerprint from a fresh dry-run preview.",{code:"history_author_acknowledge_plan_fingerprint_required",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run, then pass --plan-fingerprint <value>."}}),t.plan_fingerprint.trim()!==o.plan.plan_fingerprint)throw new y("Author acknowledgment selection changed after preview; no history was mutated.",g.CONFLICT,{code:"history_author_acknowledge_plan_conflict",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run and apply the fresh plan_fingerprint."}});let a=o.completeCoordinates.filter(({disposition:u})=>o.plan.selection.kind==="events"||u==="actionable").map(({item_id:u,line:m})=>({item_id:u,line:m}));if(a.length===0)return{dry_run:!1,mutated:!1,acknowledged:0,outcome:"no_effect",exit_code:g.NO_EFFECT,plan:o.plan};let c=await $(e),l=await ci({pmRoot:e,op:"history:author-acknowledge",author:n,context:{author_acknowledgment:{events:a,attributed_author:r}},message:i,lockTtlSeconds:c.locks.ttl_seconds,lockWaitMs:c.locks.wait_ms}),d=o.plan.actionable_count>0&&o.plan.already_acknowledged_count>0?{outcome:"partial_effect",exit_code:g.PARTIAL_EFFECT}:{outcome:"effect",exit_code:g.SUCCESS};return{dry_run:!1,mutated:!0,acknowledged:a.length,...d,plan:o.plan,history_path:l.historyPath}}import{execFile as By}from"node:child_process";import Mu 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]="1d4534aa-5a56-5a76-8971-aa3ba6c52e59")}catch{}})();function ju(e,t){return new Promise((n,r)=>{By("git",[...t],{cwd:e,encoding:"utf8",maxBuffer:4*1024*1024},(i,o)=>{i?r(i):n(o)})})}function Fu(e){if(e&&(!Number.isSafeInteger(e.start)||!Number.isSafeInteger(e.end)||e.start<1||e.end<e.start))throw new RangeError("Source line range must be inclusive positive integers with end >= start.")}function _O(e){let t=/^(\d+):(\d+)$/u.exec(e.trim()),n=t?{start:Number(t[1]),end:Number(t[2])}:void 0;if(Fu(n),!n)throw new RangeError("Source line range must use start:end.");return n}function Vy(e){let t=new Map;for(let n of e.split(`
|
|
6
|
+
`,result:s}}});return{policy_result:!0,action:e,changed:i.changed,result:i.result}}async function wy(e,t,n){let r,i=await Cd({...n,id:e,op:"policy_approve",message:t.message,resolveHistoryContext:()=>({workflow_approval:r}),async mutate(o){let a=(await It(n.pmRoot)).policies.find(c=>c.id===t.policy);if(!a||a.rule.kind!=="approval")throw new y("--policy must name an approval rule.",g.USAGE);if(!a.rule.authors.includes(n.author))throw new y("This actor is not a declared approver.",g.CONFLICT);return await Sd(n.pmRoot,o.metadata.id),r={policy_id:a.id,policy_fingerprint:xl(a),content_fingerprint:Il(a,{...o.metadata,body:o.body})},{changedFields:[]}}});return{policy_result:!0,action:"policy-approve",changed:!0,result:{id:i.item.id,...r,warnings:i.warnings}}}function vy(e,t){let n=vu(t),r=Vo({...n,id:n.id===void 0?e:n.id});if(e!==void 0&&e.trim()!==r.id)throw new y("Policy id operand does not match definition.id.",g.USAGE,{required:"Use the same policy id operand and definition.id, or supply only one of them.",nextSteps:["Omit the policy id operand to use definition.id, or omit definition.id to use the operand."]});return r}async function c$(e,t,n={},r={}){if(!Jr.includes(e))throw new y("Unknown workflow policy action.",g.USAGE);if(e==="policy-presets")return{policy_result:!0,action:e,changed:!1,result:gy()};let i=await yy(r,n.author);if(e==="policies")return{policy_result:!0,action:e,changed:!1,result:await It(i.pmRoot)};if(e==="policy-put"){let d=vy(t,n.definition);return wu(e,d.id,{...n,definition:d},i)}if(!t?.trim())throw new y(`schema ${e} requires an operand.`,g.USAGE);if(["policy-remove","policy-mode"].includes(e))return wu(e,t,n,i);if(e==="policy-approve"){if(n.dryRun)throw new y("Use policy-check to preview; policy-approve records an approval.",g.USAGE);return wy(t,n,i)}let o=G(i.settings,H()),s=await Pe(i.pmRoot,t,i.settings.id_prefix,i.settings.item_format,o.type_to_folder);if(!s)throw new y(`Item ${t} not found.`,g.NOT_FOUND);let{document:a}=await Ne(s,{schema:i.settings.schema}),c={...a.metadata,body:a.body},l=n.definition===void 0?c:{...c,...vu(n.definition)};if(l.id!==c.id)throw new y("Policy preview cannot change the item id.",g.USAGE);return{policy_result:!0,action:e,changed:!1,result:await Ed(i.pmRoot,await It(i.pmRoot),{operation:"update",author:i.author,before:c,after:l,completeness_only:n.definition===void 0})}}import{createHash as Ou}from"node:crypto";import ir from"node:fs/promises";import or from"node:path";import{Option as R$}from"commander";(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]="7ffd5046-9154-52e7-94ce-192b07b8ceae")}catch{}})();function by(e,t){let n=[],r=new Set;for(let i of t.keys){if(!Object.hasOwn(e,i))continue;let o=e[i];if(o!=null){if(typeof o=="string"){n.push(o);continue}if(!Array.isArray(o)||!o.every(s=>typeof s=="string"))return;r.has(o)||(r.add(o),n.push(...o))}}return n.length>0?n.join("; "):void 0}function xi(e,t){return e.find(r=>r.target===t)??{target:t,keys:[t]}}function U(e,t){return e[t]===!0?!0:void 0}function ut(e,t){return e[t]===!1?!0:void 0}function bu(e,t){return t.some(n=>e[n]===!0)?!0:void 0}function ku(e,t){for(let[n,r]of Object.entries(t))n==="__proto__"||n==="constructor"||n==="prototype"||Object.hasOwn(e,n)||(e[n]=r)}function Su(e){let t=i=>Uo(e,xi(ei,i)),n=i=>cl(e,xi(Yo,i)),r={title:t("title"),description:t("description"),body:t("body"),status:t("status"),closeReason:t("closeReason"),priority:t("priority"),type:t("type"),tags:t("tags"),addTags:n("addTags"),removeTags:n("removeTags"),deadline:t("deadline"),estimatedMinutes:t("estimatedMinutes"),acceptanceCriteria:by(e,xi(Yo,"acceptanceCriteria")),addAc:n("addAc"),removeAc:n("removeAc"),definitionOfReady:t("definitionOfReady"),order:t("order"),rank:t("rank"),goal:t("goal"),objective:t("objective"),value:t("value"),impact:t("impact"),outcome:t("outcome"),whyNow:t("whyNow"),author:t("author"),message:t("message"),force:!!e.force,ownershipMetadataBypass:e.ownershipMetadataBypass===!0?!0:void 0,ownershipDependencyBypass:e.ownershipDependencyBypass===!0?!0:void 0,assignee:t("assignee"),parent:t("parent"),allowUnresolvedDeps:bu(e,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,reviewer:t("reviewer"),risk:t("risk"),confidence:t("confidence"),sprint:t("sprint"),release:t("release"),blockedBy:t("blockedBy"),blockedReason:t("blockedReason"),unblockNote:t("unblockNote"),reporter:t("reporter"),severity:t("severity"),environment:t("environment"),reproSteps:t("reproSteps"),resolution:t("resolution"),expectedResult:t("expectedResult"),actualResult:t("actualResult"),affectedVersion:t("affectedVersion"),fixedVersion:t("fixedVersion"),component:t("component"),regression:e.regression===!0?"true":t("regression"),customerImpact:t("customerImpact"),dep:n("dep"),depRemove:n("depRemove"),replaceDeps:U(e,"replaceDeps"),replaceTests:U(e,"replaceTests"),replaceFiles:U(e,"replaceFiles"),replaceDocs:U(e,"replaceDocs"),comment:n("comment"),note:n("note"),learning:n("learning"),file:n("file"),test:n("test"),doc:n("doc"),reminder:n("reminder"),event:n("event"),typeOption:n("typeOption"),field:n("field"),unset:n("unset"),clearDeps:U(e,"clearDeps"),clearComments:U(e,"clearComments"),clearNotes:U(e,"clearNotes"),clearLearnings:U(e,"clearLearnings"),clearFiles:U(e,"clearFiles"),clearTests:U(e,"clearTests"),clearDocs:U(e,"clearDocs"),clearReminders:U(e,"clearReminders"),clearEvents:U(e,"clearEvents"),clearTypeOptions:U(e,"clearTypeOptions")};return ku(r,e),r}function ie(e,t){let n=xi(al,t),r=Uo(e,n);if(r!==void 0)return r;for(let i of n.keys){let o=e[i];if(Array.isArray(o)){let s=o.filter(a=>typeof a=="string");if(s.length>0)return s.join(",")}if(t==="ids"&&typeof o=="string")return o;if(typeof o=="number"&&Number.isFinite(o))return String(o)}}function ky(e){let t=U(e,"filterFilesMissing"),n=U(e,"filterDocsMissing");return{filterReviewerMissing:U(e,"filterReviewerMissing"),filterRiskMissing:U(e,"filterRiskMissing"),filterConfidenceMissing:U(e,"filterConfidenceMissing"),filterSprintMissing:U(e,"filterSprintMissing"),filterReleaseMissing:U(e,"filterReleaseMissing"),hasNotes:U(e,"hasNotes"),hasLearnings:U(e,"hasLearnings"),hasFiles:U(e,"hasFiles"),hasDocs:U(e,"hasDocs"),hasTests:U(e,"hasTests"),hasComments:U(e,"hasComments"),hasDeps:U(e,"hasDeps"),hasBody:U(e,"hasBody"),hasLinkedCommand:U(e,"hasLinkedCommand"),noNotes:ut(e,"notes"),noLearnings:ut(e,"learnings"),noFiles:ut(e,"files")??t,filterFilesMissing:t,noDocs:ut(e,"docs")??n,filterDocsMissing:n,noTests:ut(e,"tests"),noComments:ut(e,"comments"),noDeps:ut(e,"deps"),emptyBody:U(e,"emptyBody"),noLinkedCommand:ut(e,"linkedCommand")}}function Eu(e){let t={status:ie(e,"status"),type:ie(e,"type"),tag:ie(e,"tag"),priority:ie(e,"priority"),deadlineBefore:ie(e,"deadlineBefore"),deadlineAfter:ie(e,"deadlineAfter"),updatedAfter:ie(e,"updatedAfter"),updatedBefore:ie(e,"updatedBefore"),createdAfter:ie(e,"createdAfter"),createdBefore:ie(e,"createdBefore"),today:U(e,"today"),recent:U(e,"recent"),ids:ie(e,"ids"),assignee:ie(e,"assignee"),assigneeFilter:ie(e,"assigneeFilter"),parent:ie(e,"parent"),sprint:ie(e,"sprint"),release:ie(e,"release"),limit:ie(e,"limit"),offset:ie(e,"offset"),noTruncate:ut(e,"truncate"),includeBody:U(e,"includeBody"),strictRead:U(e,"strictRead"),compact:U(e,"compact"),brief:U(e,"brief"),full:U(e,"full"),fields:ie(e,"fields"),sort:ie(e,"sort"),order:ie(e,"order"),tree:U(e,"tree"),treeDepth:ie(e,"treeDepth"),filterAcMissing:U(e,"filterAcMissing"),filterEstimatesMissing:bu(e,["filterEstimatesMissing","filterEstimateMissing"]),filterResolutionMissing:U(e,"filterResolutionMissing"),filterMetadataMissing:U(e,"filterMetadataMissing"),...ky(e)};return ku(t,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]="e3e1f9c6-6824-524d-9800-c4e031a71f3e")}catch{}})();var Sy=Symbol("pm.mcp-mutation-transport"),Ey=new Set(["activity","aggregate","context","contracts","deps","files-discover","files-lookup","get","graph","health","history","history-attest","list","next","search","stats","telemetry","validate"]);function Ai(e){return Sy in e}function Ri(e,t){return Ai(e)?pd(t):ts(e,t)}function U$(e,t,n=[]){let r=ts(e,{...e,...t});for(let i of n)Reflect.deleteProperty(r,i);return r}function D(e,t){let n=e[t];return typeof n=="string"&&n.trim().length>0?n:void 0}function se(e,t){let n=e[t];return typeof n=="string"?n.trim().length>0?n:void 0:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function z$(e,t){let n=e[t];return typeof n=="string"?n:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function kn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function vs(e,t){if(typeof e=="number"){if(!Number.isInteger(e))throw new y(`${t} must be a finite integer.`,g.USAGE);return e}if(typeof e=="string"&&e.trim().length>0){let n=Number(e);if(!Number.isInteger(n))throw new y(`${t} must be a finite integer.`,g.USAGE);return n}}function H$(e,t){return typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:typeof t.limit=="number"&&Number.isFinite(t.limit)?t.limit:D(e,"limit")??D(t,"limit")}function W$(e){let t=D(e,"outputFormat");return{json:!0,quiet:!0,author:D(e,"author"),path:D(e,"path"),noExtensions:e.noExtensions===!0||e.no_extensions===!0,noPager:!0,outputInclude:D(e,"outputInclude"),outputLimit:se(e,"outputLimit"),outputBudget:se(e,"outputBudget"),outputSession:D(e,"outputSession"),outputCursor:D(e,"outputCursor"),outputFormat:t==="json"||t==="toon"?t:void 0}}var xy=new Set(["tags","blockedBy","blocked_by","skills","fields"]),Iu=new Set(["comment","note","learning","reminder","event","dep","depRemove","dep_remove","file","doc","test","unset","addGlob","add_glob","migrate","envSet","env_set","envClear","env_clear"]),Iy=new Set([...Iu].filter(e=>e!=="file")),Ay=new Set(["files","files-discover","docs","test","test-all"]),Au=new Set(["comments","notes","learnings"]);function Ry(e,t){if(!(!Au.has(e)||!Object.prototype.hasOwnProperty.call(t,"file")))throw new y(`MCP ${e} does not accept options.file. Pass annotation text in options.add instead.`,g.USAGE,{code:"mcp_annotation_file_unavailable",required:"Pass annotation text as JSON data; MCP annotation actions cannot read server-local files."})}var Cy=new Set(["claim","release","start-task","pause-task","close-task"]),Ty={"history-attest":["verify","output","hashAlgorithm"],list:["status","type","tag","priority","limit","offset"],search:["mode","status","type","tag","priority","limit"],create:["title","type","status","description","body","priority","tags","parent","createMode","create_mode","allowMissingParent","allowDuplicate"],update:["parent","allowMissingParent","completedAt"],copy:["allowDuplicate"],close:["duplicateOf","completedAt","releaseAssignment"],claim:["start","next","ifAvailable"],release:["pause"],comments:["ifAbsent"],notes:["ifAbsent"],learnings:["ifAbsent"],extension:["dryRun"],package:["dryRun"],install:["dryRun"],upgrade:["scope","dryRun","cliOnly","packagesOnly","repair","tag","packageName"],append:["body"]},$y=["outputInclude","outputLimit","outputBudget","outputFormat","outputSession","outputCursor"];function Ru(e,t=""){let n={},r=Ay.has(t),i=t==="files"||t==="files-discover"||t==="docs",o=Au.has(t)?Iy:Iu;for(let[s,a]of Object.entries(e)){if(Array.isArray(a)&&xy.has(s)){n[s]=a.join(",");continue}if(s==="note"&&i){n[s]=a;continue}if(typeof a=="string"&&o.has(s)){n[s]=[a];continue}if(typeof a=="string"&&r&&(s==="add"||s==="remove")){n[s]=[a];continue}n[s]=a}return Object.assign(n,Object.fromEntries(Object.getOwnPropertySymbols(e).map(s=>[s,Reflect.get(e,s)]))),n}function Oy(e,t,n){let r=D(e,"author");return r!==void 0?r:n!==void 0&&Cy.has(n)?D(e,"assignee")??D(t,"assignee"):void 0}function Dy(e,t){return t!==void 0&&e.author===void 0?{...e,author:t}:e}function G$(e,t){let n=kn(e.options)?e.options:void 0,r=Xc(e.options),i={},o=c=>{r[c]!==void 0||e[c]===void 0||(i[c]=e[c])};for(let c of Ty[t??""]??[])o(c);for(let c of $y)o(c);t!==void 0&&Ai(e)&&Ry(t,r);let s=Ru({...i,...r},t);if(t==="history-attest"&&Ai(e)&&(s.output!==void 0||typeof s.verify=="string"))throw new y("MCP history attest does not accept server-local proof paths. Export the returned JSON bundle and pass that JSON object as verify.",g.USAGE);let a=Ai(e)?e:n??e;return Ri(a,Dy(s,Oy(e,s,t)))}function q$(e){if(e.addNote===void 0)return e;let t={...e};return t.note===void 0&&typeof t.addNote=="string"&&(t.note=t.addNote),delete t.addNote,t}function B$(e){let t={...e};return t.discoveryNote!==void 0&&t.note===void 0&&typeof t.discoveryNote=="string"&&(t.note=t.discoveryNote),delete t.discover,delete t.discoveryNote,t}function Py(e){let t=[],n=!0;for(let r of e.trim().toLowerCase()){if(r>="a"&&r<="z"||r>="0"&&r<="9"){t.push(r),n=!1;continue}n||(t.push("-"),n=!0)}return t.at(-1)==="-"&&t.pop(),t.join("")}function V$(e){return!Ey.has(Py(e))}function J$(e){return e.trim().toLowerCase().split(/\s+/).filter(Boolean).join(" ")}function bs(e){return Array.isArray(e)?e.map(t=>String(t)).filter(t=>t.length>0):[]}function K$(e,t){let n=new Set(["action","args","author","cwd","fullChangedFields","id","options","path","query","reason","target"]),r={};for(let[o,s]of Object.entries(e))n.has(o)||(r[o]=s);let i={...r,...t};return delete i.args,i}function Y$(e,t){let n=Ri(t??{},{...t});return{changedFields:e.fullChangedFields===!0?"full":"compact",idOnly:e.idOnly===!0,runnerOptions:n}}function ws(e){return{type:se(e,"filterType"),tag:se(e,"filterTag"),priority:se(e,"filterPriority"),deadlineBefore:se(e,"filterDeadlineBefore"),deadlineAfter:se(e,"filterDeadlineAfter"),updatedAfter:se(e,"filterUpdatedAfter"),updatedBefore:se(e,"filterUpdatedBefore"),createdAfter:se(e,"filterCreatedAfter"),createdBefore:se(e,"filterCreatedBefore"),ids:ns(e.ids),assignee:se(e,"filterAssignee"),assigneeFilter:se(e,"filterAssigneeFilter")??se(e,"filterAssignee_filter"),parent:se(e,"filterParent"),sprint:se(e,"filterSprint"),release:se(e,"filterRelease"),limit:se(e,"limit"),offset:se(e,"offset")}}function ys(e){if(typeof e=="string"&&e.trim().length>0)return e;if(Array.isArray(e))return bs(e)}function Ii(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="string"&&e.trim().length>0)return e}function X$(e){let t=ys(e.kind),n=ys(e.exemptIsolate),r=ys(e.exemptIsolateType);return{...t===void 0?{}:{kind:t},maxDepth:Ii(e.maxDepth),limit:Ii(e.limit),after:D(e,"after"),direction:D(e,"direction"),maxPaths:Ii(e.maxPaths),sample:Ii(e.sample),...n===void 0?{}:{exemptIsolate:n},...r===void 0?{}:{exemptIsolateType:r},saveBaseline:e.saveBaseline===!0,rebuild:e.rebuild===!0,clear:e.clear===!0,summary:e.summary===!0,...e.full===!0?{full:!0}:{}}}function Cu(e){let t=Eu(e);return e.ids!==void 0&&(t.ids=ns(e.ids)),t}function Z$(e){return{status:D(e,"filterStatus"),list:kn(e.list)?Cu(e.list):ws(e),reason:D(e,"reason"),resolution:D(e,"resolution"),expectedResult:D(e,"expectedResult")??D(e,"expected_result")??D(e,"expected"),actualResult:D(e,"actualResult")??D(e,"actual_result")??D(e,"actual"),validateClose:D(e,"validateClose")??D(e,"validate_close"),author:D(e,"author"),message:D(e,"message"),force:e.force===!0?!0:void 0,dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:D(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}var Ny=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","ids","list","update","limit","offset","dryRun","dry_run","rollback","checkpoint","noCheckpoint","no_checkpoint"]);function xu(e){let t={};for(let[n,r]of Object.entries(e))Ny.has(n)||(t[n]=r);return Tu(t)}function Tu(e){let t=Ru(e,"update-many");for(let n of ei)for(let r of n.keys){let i=t[r];typeof i=="number"&&Number.isFinite(i)&&(t[r]=String(i))}return Su(t)}function Q$(e){if(kn(e.list)||kn(e.update)){let t=kn(e.update)?e.update:xu(e),n=Ri(e,Tu(t));return{status:se(e,"filterStatus"),list:kn(e.list)?Cu(e.list):ws(e),update:hd(t,n),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:D(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}return{status:se(e,"filterStatus"),list:ws(e),update:Ri(e,xu(e)),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:D(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}(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]="fd8c4c35-98bb-5f3b-927d-8696125af703")}catch{}})();function Le(e,t){throw new y(e,g.USAGE,t)}var Ly="2026-07-15T06:22:12.276Z",My=Date.parse(Ly),jy=[["attributed","attributed"],["legacy_unknown","actionable_unknown"]],$u=e=>typeof e=="string"?e:"",Du=e=>{let t=e??{},n=$u(t.author).trim().toLowerCase(),r=Number(["","unknown"].includes(n)),i=+(Date.parse($u(t.ts))>=My);return jy[r][i]};function Pu(e,t,n=20,r=new Set,i=!1){let o=[],s=[],a={legacy_unknown:0,actionable_unknown:0},c=Math.max(0,n),l=0,d=0,u=0;for(let[m,f]of t.split(/\r?\n/).entries()){let p;try{p=JSON.parse(f)}catch{continue}l+=1;let _=Du(p);if(_!=="attributed"){if(d+=1,_==="actionable_unknown"&&r.has(`${e}:${m+1}`)){u+=1;continue}a[_]+=1,i&&_==="actionable_unknown"&&s.push({item_id:e,line:m+1}),o.length<c&&o.push({item_id:e,line:m+1})}}return{checked_events:l,unknown_event_count:d,legacy_unknown_event_count:a.legacy_unknown,actionable_unknown_event_count:a.actionable_unknown,acknowledged_actionable_event_count:u,samples:o,samples_truncated:a.legacy_unknown+a.actionable_unknown>o.length,actionable_events:s}}var lO=(e,t,n=20,r=new Set)=>Pu(e,t,n,r);function Nu(e){let t=new Set;for(let n of e.split(/\r?\n/)){let r;try{r=JSON.parse(n)}catch{continue}let o=(typeof r=="object"&&r!==null&&typeof r.context=="object"&&r.context!==null?r.context:{}).author_acknowledgment;if(!(typeof o!="object"||o===null||!Array.isArray(o.events)))for(let s of o.events)typeof s=="object"&&s!==null&&typeof s.item_id=="string"&&Number.isSafeInteger(s.line)&&t.add(`${s.item_id}:${String(s.line)}`)}return t}var sr=async(e,t=20,n=!1)=>{let r=or.join(e,"history"),i;try{i=(await ir.readdir(r)).filter(w=>w.endsWith(".jsonl")).sort((w,v)=>w.localeCompare(v))}catch{i=[]}let o=new Set,s=[],a=[],c=0,l=0,d=0,u=0,m=0,f=0,p="_workspace.jsonl",_=new Set;if(i.includes(p))try{_=Nu(await ir.readFile(or.join(r,p),"utf8"))}catch{_=new Set}for(let w of i){let v;try{v=await ir.readFile(or.join(r,w),"utf8")}catch{continue}let k=w.slice(0,-6),S=Pu(k,v,t-s.length,_,n);c+=1,l+=S.checked_events,d+=S.unknown_event_count,u+=S.legacy_unknown_event_count,m+=S.actionable_unknown_event_count,f+=S.acknowledged_actionable_event_count,S.unknown_event_count>0&&o.add(k),s.push(...S.samples),n&&a.push(...S.actionable_events)}let h=u+m;return{checked_streams:c,checked_events:l,unknown_event_count:d,legacy_unknown_event_count:u,actionable_unknown_event_count:m,acknowledged_actionable_event_count:f,affected_item_ids:[...o].sort((w,v)=>w.localeCompare(v)),samples:s,samples_truncated:h>s.length,...n?{actionable_events:a}:{}}};function Fy(e){return[...new Map(e.map(t=>[`${t.item_id}:${t.line}`,{item_id:t.item_id,line:t.line}])).values()].sort((t,n)=>t.item_id.localeCompare(n.item_id)||t.line-n.line)}async function Uy(e){try{return Nu(await ir.readFile(or.join(e,"history","_workspace.jsonl"),"utf8"))}catch{return new Set}}function zy(e){return(e.item_id===fe||/^[a-z0-9][a-z0-9-]*$/iu.test(e.item_id))&&Number.isSafeInteger(e.line)&&e.line>=1}function Hy(e,t,n){let r=n[e.line-1]??"",i;try{i=JSON.parse(r)}catch{Le(`Unknown-author acknowledgment target ${e.item_id}:${e.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}return Du(i)!=="actionable_unknown"&&Le(`Author acknowledgment target ${e.item_id}:${e.line} is not an actionable unknown-author event.`,{code:"history_author_acknowledge_target_not_actionable"}),{...e,source_event_hash:Ou("sha256").update(r).digest("hex"),disposition:t.has(`${e.item_id}:${e.line}`)?"already_acknowledged":"actionable"}}async function Lu(e,t,n){let r=t.events??[],i=+(t.all_actionable===!0)+ +(r.length>0);i===0&&Le("Specify exactly one selector: events or all_actionable.",{code:"history_author_acknowledge_selector_required"}),i>1&&Le("Author acknowledgment accepts either explicit events or all_actionable, not both.",{code:"history_author_acknowledge_selector_conflict"}),(!Number.isSafeInteger(n)||n<0)&&Le("Author acknowledgment coordinate_limit must be a non-negative integer.",{code:"history_author_acknowledge_preview_limit_invalid"});let o=Fy(t.all_actionable===!0?(await sr(e,0,!0)).actionable_events:r),s=await Uy(e),a=new Map;for(let m of o)if(zy(m)||Le(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"}),!a.has(m.item_id))try{a.set(m.item_id,(await ir.readFile(or.join(e,"history",`${m.item_id}.jsonl`),"utf8")).split(/\r?\n/u))}catch{Le(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}let c=o.map(m=>Hy(m,s,a.get(m.item_id))),l=t.all_actionable===!0?"all_actionable":"events",d=Ou("sha256").update(JSON.stringify({version:1,selection:l,coordinates:c})).digest("hex"),u=c.filter(({disposition:m})=>m==="actionable").length;return{plan:{selection:{kind:l},selected_count:c.length,actionable_count:u,already_acknowledged_count:c.length-u,omitted_count:Math.max(0,c.length-n),coordinates:c.slice(0,n),plan_fingerprint:d},completeCoordinates:c}}async function dO(e,t,n=50){return(await Lu(e,t,n)).plan}function Wy(e,t){let n=e.length>0;return n&&t&&Le("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_conflict",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),!n&&!t&&Le("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_required",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),{events:Gy(e),all_actionable:t}}function Gy(e){return e.map(t=>{let n=t.lastIndexOf(":"),r=t.slice(0,n).trim(),i=Number(t.slice(n+1)),o=r===fe||/^[a-z0-9][a-z0-9-]*$/iu.test(r);return(n<1||!o||!Number.isSafeInteger(i)||i<1)&&Le(`history-author-acknowledge --event expects <item-id>:<one-based-line>, received "${t}".`,{code:"history_author_acknowledge_target_unreadable"}),{item_id:r,line:i}})}function uO(e,t){let n=Wy(bs(t.historyEvent),t.allActionable===!0||t.all_actionable===!0);return qy(e,{events:n.events,all_actionable:n.all_actionable,dry_run:t.dryRun===!0||t.dry_run===!0,plan_fingerprint:D(t,"planFingerprint")??D(t,"plan_fingerprint"),coordinate_limit:typeof t.limit=="number"?t.limit:typeof t.limit=="string"?Number(t.limit):void 0,attributed_author:D(t,"attributedAuthor")??D(t,"attributed_author")??void 0,reviewer:D(t,"reviewer"),reason:D(t,"reason")})}async function qy(e,t){let n=t.reviewer?.trim()??"",r=t.attributed_author?.trim()??"",i=t.reason?.trim()??"",o=await Lu(e,t,t.coordinate_limit??50);if(t.dry_run===!0)return{dry_run:!0,mutated:!1,acknowledged:0,outcome:"preview",exit_code:g.SUCCESS,plan:o.plan};if([n.length>0,n.toLowerCase()!=="unknown",r.length>0,r.toLowerCase()!=="unknown",i.length>0].includes(!1)&&Le("Author acknowledgment requires events, reviewer, attributed_author, and reason.",{code:"history_author_acknowledge_required_values_missing"}),t.plan_fingerprint?.trim()||Le("Author acknowledgment apply requires plan_fingerprint from a fresh dry-run preview.",{code:"history_author_acknowledge_plan_fingerprint_required",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run, then pass --plan-fingerprint <value>."}}),t.plan_fingerprint.trim()!==o.plan.plan_fingerprint)throw new y("Author acknowledgment selection changed after preview; no history was mutated.",g.CONFLICT,{code:"history_author_acknowledge_plan_conflict",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run and apply the fresh plan_fingerprint."}});let a=o.completeCoordinates.filter(({disposition:u})=>o.plan.selection.kind==="events"||u==="actionable").map(({item_id:u,line:m})=>({item_id:u,line:m}));if(a.length===0)return{dry_run:!1,mutated:!1,acknowledged:0,outcome:"no_effect",exit_code:g.NO_EFFECT,plan:o.plan};let c=await $(e),l=await ci({pmRoot:e,op:"history:author-acknowledge",author:n,context:{author_acknowledgment:{events:a,attributed_author:r}},message:i,lockTtlSeconds:c.locks.ttl_seconds,lockWaitMs:c.locks.wait_ms}),d=o.plan.actionable_count>0&&o.plan.already_acknowledged_count>0?{outcome:"partial_effect",exit_code:g.PARTIAL_EFFECT}:{outcome:"effect",exit_code:g.SUCCESS};return{dry_run:!1,mutated:!0,acknowledged:a.length,...d,plan:o.plan,history_path:l.historyPath}}import{execFile as By}from"node:child_process";import Mu 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]="1d4534aa-5a56-5a76-8971-aa3ba6c52e59")}catch{}})();function ju(e,t){return new Promise((n,r)=>{By("git",[...t],{cwd:e,encoding:"utf8",maxBuffer:4*1024*1024},(i,o)=>{i?r(i):n(o)})})}function Fu(e){if(e&&(!Number.isSafeInteger(e.start)||!Number.isSafeInteger(e.end)||e.start<1||e.end<e.start))throw new RangeError("Source line range must be inclusive positive integers with end >= start.")}function _O(e){let t=/^(\d+):(\d+)$/u.exec(e.trim()),n=t?{start:Number(t[1]),end:Number(t[2])}:void 0;if(Fu(n),!n)throw new RangeError("Source line range must use start:end.");return n}function Vy(e){let t=new Map;for(let n of e.split(`
|
|
7
7
|
`)){let r=/^([0-9a-f^]{40,64}) \d+ \d+(?: \d+)?$/u.exec(n)?.[1];r&&t.set(r,(t.get(r)??0)+1)}return t}function Jy(e){let t=e.split("\0"),n=new Map;for(let r=0;r+1<t.length;r+=2){let i=t[r]?.trim();if(!i)continue;let o=[...new Set(t[r+1]?.match(/\bpm-[a-z0-9][a-z0-9-]{2,63}\b/gu)??[])].sort((s,a)=>s.localeCompare(a));n.set(i,o)}return n}async function Ky(e){let t=Mu.relative(e.workspaceRoot,Mu.resolve(e.workspaceRoot,e.sourcePath)),n=await ju(e.workspaceRoot,["blame","--line-porcelain","-L",`${e.lineRange.start},${e.lineRange.end}`,"--",t]),r=await ju(e.workspaceRoot,["log","-n","256","--format=%H%x00%B%x00","--",t]);return{commitLines:Vy(n),commitItems:Jy(r),available:!0}}function Yy(e){let t=e.current.nodes.at(-1),n=e.current.kinds.length+1,r;for(let i of e.graph.incidentEdges(t)){let o=i.source===t,s=o?i.target:i.source;if((e.visitedDepth.get(s)??Number.POSITIVE_INFINITY)<n)continue;e.visitedDepth.set(s,n);let a=e.graph.registry().require(i.kind),c={nodes:[...e.current.nodes,s],kinds:[...e.current.kinds,o?i.kind:a.inverse??i.kind]};e.details.get(s)?.type?.toLowerCase()==="decision"?(r=n,e.found.push(c)):e.queue.push(c)}return r}function Xy(e){let t=[{nodes:[e.itemId],kinds:[]}],n=new Map([[e.itemId,0]]),r=[],i;for(;t.length>0;){let o=t.shift(),s=o.kinds.length;i!==void 0&&s>=i||s>=e.maxDepth||(i=Yy({current:o,graph:e.graph,details:e.details,visitedDepth:n,queue:t,found:r})??i)}return r.sort((o,s)=>o.nodes.join("\0").localeCompare(s.nodes.join("\0"))),r}function Zy(e,t,n){let r=Vd(t);if(!r.graph.hasNode(e))return{status:"not_found",nodes:[],kinds:[],alternative_decision_ids:[]};let i=Xy({itemId:e,maxDepth:n,graph:r.graph,details:new Map(r.details.map(a=>[a.id,a]))}),o=i[0];if(!o)return{status:"not_found",nodes:[],kinds:[],alternative_decision_ids:[]};let s=[...new Set(i.map(a=>a.nodes.at(-1)))];return{status:s.length===1?"found":"ambiguous",nodes:o.nodes,kinds:o.kinds,alternative_decision_ids:s.slice(1)}}async function Qy(e){if(!e.lineRange)return{commitLines:new Map,commitItems:new Map,available:!0};try{return await Ky({workspaceRoot:e.workspaceRoot,sourcePath:e.paths[0],lineRange:e.lineRange})}catch{return{commitLines:new Map,commitItems:new Map,available:!1}}}function ew(e){let t=[];return e.hasLineRange&&!e.attributionAvailable&&t.push("git_attribution_unavailable"),e.hasLineRange&&e.contributionLines===0&&t.push("line_attribution_unmapped"),e.decisionStatus==="ambiguous"&&t.push("multiple_governing_decisions"),e.decisionStatus==="not_found"&&t.push("governing_decision_not_found"),t}function tw(e){return[...e.commitLines.keys()].filter(t=>(e.commitItems.get(t)?.length??0)>0)}async function Uu(e){Fu(e.lineRange);let t=e.decisionDepth??8;if(!Number.isSafeInteger(t)||t<1||t>32)throw new RangeError("Decision path depth must be an integer from 1 to 32.");let n=await Qy(e),r=tw(n),i=new Map;for(let o of e.candidates){let s=[...n.commitLines.entries()].filter(([d])=>n.commitItems.get(d)?.includes(o.item.id)),a=s.reduce((d,[,u])=>d+u,0),c=Zy(o.item.id,e.corpus,t),l=ew({hasLineRange:e.lineRange!==void 0,attributionAvailable:n.available,contributionLines:a,decisionStatus:c.status});i.set(o.item.id,{score:a*100+o.files.length*10+Math.max(0,9-Math.floor((Date.now()-Date.parse(o.item.updated_at))/(720*60*60*1e3))),contribution_lines:a,evidence:[...o.files.map(d=>({kind:"linked_file",reference:d.path})),...s.map(([d,u])=>({kind:"git_commit",reference:d.slice(0,12),contribution_lines:u}))],rationale:{value:o.item.value?.trim()||null,why_now:o.item.why_now?.trim()||null,outcome:o.item.outcome?.trim()||null,objective:o.item.objective?.trim()||null},decision_path:c,ambiguities:l})}return{explanations:i,receipt:{line_range:e.lineRange??null,blamed_commit_count:n.commitLines.size,mapped_commit_count:r.length,unmapped_commit_count:n.commitLines.size-r.length,decision_depth: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]="7470da18-4b85-5090-8ede-7de708b1f4ff")}catch{}})();var ar=["software-delivery","research","agent-evaluation","operations"];function zu(e,t,n,r,i){return{id:e,measurement_id:t,owner_item_id:n,scope:{kind:"active"},ceiling:r,lifetime:"hold",enforcement:i,negative_control:{cases:[{observed:r,expected:"pass"},{observed:r+1,expected:"fail"}]}}}function Ci(e,t,n,r,i){let o=`preset-${e}`,s=i.map(c=>({id:`${o}-missing-${c}`,description:`Active items missing ${c} evidence.`,source:{kind:"links",link:c,state:"missing"}})),a=s.map(c=>zu(`${c.id}-zero`,c.id,r,0,"warn"));return{id:e,title:t,description:n,declarations:{measurements:s,assertions:a,gates:[{id:`${o}-readiness`,description:n,assertion_ids:a.map(c=>c.id),triggers:["ci","scheduled"]}]}}}function Ti(e,t){return e==="software-delivery"?Ci(e,"Software delivery","Warn when active delivery work lacks executable tests or documentation.",t,["tests","docs"]):e==="research"?Ci(e,"Research","Warn when active research work lacks reproducibility files or documentation.",t,["files","docs"]):e==="agent-evaluation"?Ci(e,"Agent evaluation","Warn when active evaluation work lacks executable scenarios or recorded artifacts.",t,["tests","files"]):Ci(e,"Operations","Warn when active operational work lacks runbook documentation or repair evidence.",t,["docs","files"])}function Hu(e,t,n,r={}){return gs(e,Ti(t,n).declarations,r)}async function Wu(e,t){let n=new Set(e.terminal_statuses??["closed","canceled"]),r={...e,items:e.items.filter(o=>!n.has(o.status))};return await Promise.all(["files","tests","docs"].map(async o=>{let s={id:`derived-active-missing-${o}`,description:`Observed active items missing ${o} evidence.`,source:{kind:"links",link:o,state:"missing"}},c=(await hs(s,r)).value,l=zu(`${s.id}-ceiling`,s.id,t,c,"observe"),d=`active-missing-${o}`;return{id:d,population_size:r.items.length,scope:{kind:"active"},observed:c,declarations:{measurements:[s],assertions:[l],gates:[{id:`derived-${d}`,description:`Observe the accepted ${o} evidence baseline.`,assertion_ids:[l.id],triggers:["ci","scheduled"]}]}}}))}function Gu(e,t,n={}){return gs(e,{measurements:t.flatMap(r=>r.declarations.measurements),assertions:t.flatMap(r=>r.declarations.assertions),gates:t.flatMap(r=>r.declarations.gates)},n)}async function qu(e,t,n,r={}){let i=t.enforcement==="observe"?"warn":"block";if(t.enforcement==="block"||n!==i)throw new TypeError(`assurance assertion ${t.id} promotion must be ${t.enforcement} -> ${i}`);return Si(e,"assertion",{...t,enforcement:n},{...r,message:r.message??`Promote assurance assertion ${t.id} from ${t.enforcement} to ${n}`})}import Ju from"node:fs/promises";import{createRequire as nw}from"node:module";import Ae 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]="a0014621-9e3d-5620-8f36-081811054843")}catch{}})();function Bu(e,t){let n=Ae.relative(t,e);if(n.length>0&&n!==".."&&!n.startsWith(`..${Ae.sep}`)&&!Ae.isAbsolute(n))return n.split(Ae.sep).join("/");let r=Ae.resolve(e),i=0xcbf29ce484222325n;for(let s=0;s<r.length;s+=1)i^=BigInt(r.charCodeAt(s)),i=BigInt.asUintN(64,i*0x100000001b3n);return`<external>/${i.toString(16).padStart(16,"0")}/${Ae.basename(Ae.dirname(e))}/package.json`}function rw(e){return e.includes(`${Ae.sep}.pnpm${Ae.sep}`)?"pnpm":e.includes(`${Ae.sep}node_modules${Ae.sep}`)?"npm":"other"}async function Vu(e){try{let t=JSON.parse(await Ju.readFile(e,"utf8"));return t.name==="@unbrained/pm-cli"&&typeof t.version=="string"&&t.version.trim().length>0?t.version.trim():void 0}catch{return}}async function ks(e){try{return await Ju.realpath(e)}catch{return Ae.resolve(e)}}async function Ku(e,t,n=$e(import.meta.url,["../../.."])){let r=await ks(t),i=await ks(Ae.join(n,"package.json")),o=await Vu(i),s=new Map;o!==void 0&&s.set(i,{version:o,path:Bu(i,r),layout:"host",consumers:["pm-cli-host"]});for(let l of e)try{let d=nw(l.entry_path).resolve("@unbrained/pm-cli/package.json"),u=await ks(d),m=await Vu(u);if(m===void 0)continue;let f=u,p=s.get(f);if(p){p.consumers.includes(l.name)||(p.consumers.push(l.name),p.consumers.sort((_,h)=>_.localeCompare(h)));continue}s.set(f,{version:m,path:Bu(u,r),layout:rw(u),consumers:[l.name]})}catch{}let a=[...s.values()].sort((l,d)=>l.path.localeCompare(d.path)),c=o===void 0?[]:a.filter(l=>l.version!==o);return{host_version:o??null,copies:a,mismatches:c,warnings:c.map(l=>`extension_host_pm_cli_version_skew:${o}:${l.version}:${l.consumers.join("+")}`)}}import Ss from"node:fs/promises";import Es 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]="86c82880-d6c1-5d03-b786-222421f1146d")}catch{}})();var Yu=8388608,iw=new Set(["resolved","failed"]),ow=[{kind:"boolean",matches:e=>typeof e=="boolean"||typeof e=="string"&&/^(?:true|false)$/iu.test(e.trim())},{kind:"single_digit",matches:e=>typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=9||typeof e=="string"&&/^\d$/u.test(e.trim())}];function et(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xs(e){return ow.find(t=>t.matches(e))?.kind}function Xu(e){let t=new Map,n=0,r=0;return{entries:e.map(o=>{let s=et(o.agent_provenance)?o.agent_provenance:void 0;if(s===void 0||!Yl(o).ok)return o;let a={},c=!1;for(let[d,u]of Object.entries(s)){let m=et(u)?xs(u.value):void 0;if(m===void 0){a[d]=u;continue}c=!0,r+=1;let f=o.agent_harness??"unknown",p=`${f}\0${d}\0${m}`,_=t.get(p)??{harness:f,dimension:d,kind:m,count:0};_.count+=1,t.set(p,_)}if(!c)return o;n+=1;let l={...o};return Object.keys(a).length===0?delete l.agent_provenance:l.agent_provenance=a,Xl(o,l,{retainPriorRecord:!0,retainPriorRecordHash:!1})}),receipt:{changed:n>0,events_changed:n,observations_removed:r,invalid_values:[...t.values()].sort((o,s)=>o.harness.localeCompare(s.harness)||o.dimension.localeCompare(s.dimension)||o.kind.localeCompare(s.kind))}}}async function Zu(e){let t=[];for(let n of await Qu(e)??[])try{let r=await Ss.readFile(Es.join(e,"history",n),"utf8");for(let i of r.split(`
|
|
8
8
|
`)){if(i.trim().length===0)continue;let o=em(i);if(o===null||!et(o.agent_provenance))continue;if(Object.values(o.agent_provenance).some(a=>et(a)&&xs(a.value)!==void 0)){t.push(n.slice(0,-6));break}}}catch{}return t}async function Qu(e){try{return(await Ss.readdir(Es.join(e,"history"))).filter(t=>t.endsWith(".jsonl")).sort()}catch{return null}}async function sw(e,t,n){let r;try{r=await Ss.open(Es.join(e,"history",t),"r");let i=(await r.stat()).size,o=Math.min(i,Math.max(0,n)),s=Buffer.alloc(o),{bytesRead:a}=await r.read(s,0,o,0),c=s.subarray(0,a).toString("utf8"),l=a>=i,d=c.lastIndexOf(`
|
|
9
9
|
`),u=c;return l||(u=d===-1?"":c.slice(0,d+1)),{content:u,bytesRead:a,complete:l}}catch{return null}finally{await r?.close()}}function em(e){try{let t=JSON.parse(e);return et(t)?t:null}catch{return null}}function aw(e,t,n){let r=typeof e.agent_harness=="string"?e.agent_harness:void 0;if(r===void 0)return;let i=et(e.agent_provenance)?e.agent_provenance:{};if(Object.entries(i).forEach(([s,a])=>{if(!et(a))return;let c=xs(a.value);if(!c)return;let l=`${r}\0${s}\0${c}`,d=n.get(l)??{harness:r,dimension:s,kind:c,count:0};d.count+=1,n.set(l,d)}),!et(e.context))return;let o=e.context.agent_provenance_outcomes;et(o)&&Object.entries(o).forEach(([s,a])=>{if(!et(a)||typeof a.resolver!="string"||!iw.has(String(a.status)))return;let c=`${r}\0${s}\0${a.resolver}`,l=t.get(c)??{harness:r,dimension:s,resolver:a.resolver,attempts:0,successes:0};l.attempts+=1,a.status==="resolved"&&(l.successes+=1),t.set(c,l)})}function cw(e,t,n,r,i,o){let s=i;for(let a of e.split(`
|
|
@@ -62,8 +62,8 @@ ${l}`,g.GENERIC_FAILURE)}}function Af(e){let t=e.trim(),n=t.includes("@file:")?t
|
|
|
62
62
|
`)}return o}async function ch(e,t){let n;try{n=await qx(e)}catch(a){let c=await Yx(e,a);return{receipts:[],invalid_evidence_count:c?0:1,invalid_evidence:c?[]:[{evidence_source:t,reason:"directory_unreadable"}],invalid_evidence_truncated:!1}}let r=[],i=0,o=[],s=(a,c)=>{if(i+=1,o.length>=mo)return;let l=a.slice(0,-5);o.push({evidence_source:t,reason:c.reason,...c.validation_path?{validation_path:c.validation_path}:{},...c.validation_error===void 0?{}:{validation_error:c.validation_error},...gt(l)?{receipt_id:l}:{candidate_name_hash:ke(a)}})};for(let a of n.sort((c,l)=>c.localeCompare(l))){if(!a.endsWith(".json"))continue;let c=await Xx(e,a,t);c.receipt!==void 0?r.push(c.receipt):s(a,c)}return{receipts:r,invalid_evidence_count:i,invalid_evidence:o,invalid_evidence_truncated:i>o.length}}async function Yx(e,t,n=Bx){if(!z(t))return!1;let r=e;for(;;)try{return(await n(r)).isDirectory()}catch(i){if(!z(i))return!1;let o=ge.dirname(r);if(o===r)return!0;r=o}}async function Xx(e,t,n){let r;try{r=await Rr(ge.join(e,t),lh)}catch{return{reason:"candidate_unreadable"}}if(r===null)return{reason:"candidate_not_bounded_regular_file"};let i;try{i=Ta(JSON.parse(r))}catch{return{reason:"candidate_invalid_json"}}let o=Ca(i,n);if(o!==null)return{reason:new Set(["receipt_id","item_id","item_path"]).has(o)?"identity_invalid":"schema_invalid",validation_error:o,...o==="collections"?{validation_path:sh(i)}:{}};let s=i;if(t!==Pn(s.id))return{reason:"identity_invalid",validation_error:"filename"};let{preferred:a,evidence_source:c,...l}=s;return{receipt:{...l,requested_preference:s.requested_preference??a??"ours",requested_preference_applied:s.requested_preference_applied??(s.conflict_resolution??"preferred_side")==="preferred_side",conflict_resolution:s.conflict_resolution??"preferred_side",evidence_source:n}}}async function yt(e,t={}){let n=await Da(e),r=n===null?{receipts:[],invalid_evidence_count:0,invalid_evidence:[],invalid_evidence_truncated:!1}:await ch(n,"clone_local"),i=t.pmRoot??ge.join(e,".agents","pm"),o=await ch(Pa(i),"durable"),s=new Map(o.receipts.map(l=>[l.id,l])),a=0,c=[];for(let l of r.receipts){let d=s.get(l.id);if(d!==void 0&&!(d.value_policy===void 0?Na(l):[Tr(l)]).includes(Tr(d))){s.delete(l.id),a+=1,r.invalid_evidence.length+o.invalid_evidence.length+c.length<mo&&c.push({evidence_source:"clone_local_and_durable",reason:"copy_provenance_mismatch",receipt_id:l.id});continue}s.set(l.id,d===void 0?l:Kx(l,d))}return{receipts:[...s.values()].filter(l=>(t.includeReconciled||l.state==="pending")&&(t.includeLossless!==!1||l.decisions.length>0)).sort((l,d)=>l.created_at.localeCompare(d.created_at)),invalid_evidence_count:r.invalid_evidence_count+o.invalid_evidence_count+a,invalid_evidence:[...r.invalid_evidence,...o.invalid_evidence,...c].slice(0,mo),invalid_evidence_truncated:r.invalid_evidence_truncated||o.invalid_evidence_truncated||r.invalid_evidence_count+o.invalid_evidence_count+a>mo,clone_local_evidence_resolved:n!==null}}function Nn(e){let t=[],n=[];for(let r of e)(Array.isArray(r.decisions)&&r.decisions.length>0?t:n).push(r);return{pendingDecisions:t,lossless:n}}async function IF(e,t,n={}){let r=await Da(e);if(r===null){if(n.requireExisting===!0)throw new Error(`Receipt ${t.id} disappeared before settlement.`);return}let i=t.evidence_source??"clone_local";if(!$a(t,i))throw new Error("Merge receipt trusted settlement input failed schema validation.");let o=T(),s=ge.join(r,Pn(t.id)),a=await dh(e,t.item_path),c=a===null?null:ge.join(Pa(a),Pn(t.id)),d=(await Promise.all([ah({receiptPath:s,receiptId:t.id,evidenceSource:"clone_local",reconciledAt:o,settlement:n.settlement}),...c===null?[]:[ah({receiptPath:c,receiptId:t.id,evidenceSource:"durable",reconciledAt:o,settlement:n.settlement})]])).filter(m=>m!==null);if(d.length===0){if(n.requireExisting===!0)throw new Error(`Receipt ${t.id} disappeared before settlement.`);return}if(!(d.some(m=>m.modern)?[Tr(t)]:Na(t)).some(m=>d.every(f=>f.fingerprints.includes(m))))throw new Error(`Receipt ${t.id} settlement copies disagree on immutable merge provenance.`);for(let m of d)await Q(m.path,m.content)}async function AF(e){let t=await yt(e.cwd??process.cwd(),{...e,includeLossless:!0}),n=t.clone_local_evidence_resolved===!0&&t.invalid_evidence_count===0;return{ok:n,complete:n,count:t.receipts.length,invalid_evidence_count:t.invalid_evidence_count,invalid_evidence:t.invalid_evidence,invalid_evidence_truncated:t.invalid_evidence_truncated,clone_local_evidence_resolved:t.clone_local_evidence_resolved,receipts:t.receipts,generated_at:T()}}import{createHash as Zx}from"node:crypto";import fo 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]="e5ba549f-1965-5c5e-98b3-bd0903210032")}catch{}})();var Qx="2026-08-09T16:15:18.000Z",mh=Symbol("pre-durable-disposition-eligible");function wt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ma(e){if(!Array.isArray(e)||e.length>256)return!1;let t=new Set;for(let n=0;n<e.length;n+=1){let r=e[n];if(!(n in e)||typeof r!="string"||r.length===0||r.length>256||r.includes("\0")||t.has(r))return!1;t.add(r)}return!0}function uh(e){return wt(e)?typeof e.field=="string"&&e.field.length>0&&e.field.length<=256&&!e.field.includes("\0")&&typeof e.retained_hash=="string"&&/^[a-f0-9]{64}$/u.test(e.retained_hash)&&typeof e.discarded_hash=="string"&&/^[a-f0-9]{64}$/u.test(e.discarded_hash):!1}function fh(e,t){if(typeof e!="string")return!1;let n=fo.posix.normalize(e);return e.length<=4096&&!e.includes("\\")&&!e.includes("\0")&&!fo.posix.isAbsolute(e)&&n===e&&!n.startsWith("../")&&(fo.posix.basename(n)===`${t}.toon`||fo.posix.basename(n)===`${t}.md`)}function eI(e,t){return typeof e.receipt_id=="string"&>(e.receipt_id)&&(e.preferred==="ours"||e.preferred==="theirs")&&e.requested_preference===void 0&&e.conflict_resolution===void 0&&e.item_id===t&&fh(e.item_path,t)}function ph(e){let t=e.conflict_fields,n=e.fields_from_theirs,r=e.union_fields,i=e.decisions,o=Array.isArray(i)?new Set(i.flatMap(s=>uh(s)?[s.field]:[])):new Set;return Ma(t)&&Ma(n)&&Ma(r)&&Array.isArray(i)&&i.length>0&&i.length<=256&&Object.keys(i).length===i.length&&i.every(uh)&&o.size===i.length&&t.length===o.size&&t.every(s=>o.has(s))}function tI(e,t){return eI(e,t)&&ph(e)}function nI(e,t){return typeof e.receipt_id=="string"&>(e.receipt_id)&&(e.preferred==="ours"||e.preferred==="theirs")&&e.requested_preference===void 0&&(e.conflict_resolution==="preferred_side"||e.conflict_resolution==="stable_value_order")&&e.item_id===t&&fh(e.item_path,t)&&ph(e)}function rI(e){return e[mh]===!0}function hh(e,t){if(!wt(e)||!wt(e.context))return[];let n=e.context.merge;return!wt(n)||!Array.isArray(n.receipts)?[]:n.receipts.flatMap(r=>!wt(r)||typeof r.receipt_id!="string"||r.receipt_id.trim().length===0?[]:[{receiptId:r.receipt_id,legacySummaryAccepted:tI(r,t),[mh]:nI(r,t),...typeof e.ts=="string"&&un(e.ts)?{eventTimestamp:e.ts}:{}}])}function _h(e,t,n){if(!wt(e)||e.op!=="merge_reconcile")return[];if(!wt(e.context)||!wt(e.context.merge))return[];let r=e.context.merge.missing_receipt_dispositions;return!Array.isArray(r)||r.length>256?[]:r.flatMap(i=>!wt(i)||typeof i.receipt_id!="string"||!gt(i.receipt_id)||typeof i.original_history_line!="number"||!Number.isSafeInteger(i.original_history_line)||i.original_history_line<1||typeof i.original_event_ts!="string"||!un(i.original_event_ts)||i.reason!=="legacy_clone_local_only"?[]:[{itemId:t,receiptId:i.receipt_id,originalHistoryLine:i.original_history_line,originalEventTimestamp:i.original_event_ts,auditHistoryLine:n,reason:i.reason}])}function gh(e,t,n=[]){let r=new Map;for(let s of n){let a=`${s.itemId}\0${s.originalHistoryLine}\0${s.receiptId}\0${s.originalEventTimestamp}`;r.set(a,Math.max(r.get(a)??0,s.auditHistoryLine))}let i=s=>rI(s)&&s.eventTimestamp!==void 0&&Ft(s.eventTimestamp,Qx)<0&&(r.get(`${s.itemId}\0${s.line}\0${s.receiptId}\0${s.eventTimestamp}`)??0)>s.line;return{missing:e.filter(s=>!s.legacySummaryAccepted&&!t.has(s.receiptId)&&!i(s)).map(s=>({item_id:s.itemId,history_line:s.line,...gt(s.receiptId)?{receipt_id:s.receiptId}:{receipt_reference_hash:Zx("sha256").update(s.receiptId).digest("hex")}})),acceptedLegacyCount:e.filter(s=>s.legacySummaryAccepted).length,acceptedDispositionCount:e.filter(i).length}}import{isUtf8 as iI}from"node:buffer";import{readFile as oI}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]="c1778165-2763-5eab-80f3-d52e08547fc2")}catch{}})();function sI(e){let t;try{t=JSON.parse(e)}catch{if(e.trimStart().startsWith("{")&&e.includes("}"))throw new y("History salvage cannot discard a potentially complete record with trailing corruption.",g.CONFLICT,{code:"history_salvage_refused"});return null}if(typeof t!="object"||t===null||Array.isArray(t))throw new y("History salvage would conceal interior corruption or a malformed record.",g.CONFLICT,{code:"history_salvage_refused"});let n=t;if(!Array.isArray(n.patch)||![n.ts,n.author,n.op,n.before_hash,n.after_hash].every(r=>typeof r=="string"))throw new y("History salvage requires complete history records before the invalid tail.",g.CONFLICT,{code:"history_salvage_refused"});return n}function aI(e){if(De(e))throw new y("Resolve history merge conflicts before salvage.",g.CONFLICT,{code:"history_salvage_refused"});let t=[],n=0,r,i=0;for(let[s,a]of e.split(`
|
|
63
63
|
`).entries()){if(!a.trim()){n+=a.length+1;continue}let c=sI(a);if(c===null){r===void 0&&(r=n,i=s+1),n+=a.length+1;continue}if(r!==void 0)throw new y("History salvage would discard a record or conceal interior corruption.",g.CONFLICT,{code:"history_salvage_refused",required:"Recover the damaged record from version control or a backup; no bytes were changed."});t.push(c),n+=a.length+1}let o=pn(t);if(!o.ok||o.item_hash_version===void 0)throw new y("History salvage requires a nonempty verified prefix.",g.CONFLICT,{code:"history_salvage_refused",verification_errors:o.errors,required:"Recover an intact history prefix from version control or a backup."});return{entries:t,itemHashVersion:o.item_hash_version,prefix:r===void 0?e:e.slice(0,r),receipt:r===void 0?null:{first_invalid_line:i,discarded_bytes:Buffer.byteLength(e.slice(r)),discarded_sha256:ke(e.slice(r)),retained_entries:t.length}}}async function cI(e,t,n){if(!e.located)return{itemRaw:null,document:n};let r=await Rd(e.located,{schema:t.schema});return{itemRaw:r.raw,document:r.document??n}}async function yh(e){let t;try{t=await oI(e)}catch(n){if(z(n))return null;throw n}if(!iI(t))throw new y("History salvage requires UTF-8 input; recover binary corruption from a byte-preserving backup.",g.CONFLICT,{code:"history_salvage_refused"});return t.toString("utf8")}async function wh(e){let{subject:t,settings:n,options:r,author:i}=e;if([r.normalizeProvenance,r.auditOperation,r.auditContext,r.auditContextById,r.forceAuditEntry,r.mergeReceiptProof,r.mergeReceiptProofById].some(Boolean))throw new y("Tail salvage cannot be combined with other repair modes.",g.USAGE);let o=await yh(t.historyPath);if(o===null)throw new y(`No history stream exists for ${t.id}.`,g.NOT_FOUND);await We({path:t.historyPath,scope:"project"});let s=aI(o),a=vd(s.entries,s.entries.length-1),c=nd(a);if(typeof a.metadata.id=="string"&&a.metadata.id!==t.id)throw new y("History belongs to another item; salvage refused.",g.CONFLICT,{code:"history_salvage_refused"});let l=await cI(t,n,c),d=Is({itemDocument:l.document,subjectId:t.id,author:i,force:r.force,settings:n}),u=s.itemHashVersion,m=r.dryRun===!0,f=s.receipt!==null;if(f&&!m){let p=await ce(e.pmRoot,t.id,n.locks.ttl_seconds,i,!!r.force,n.governance.force_required_for_stale_lock,n.locks.wait_ms);try{let _=await yh(t.historyPath),h=await Pe(e.pmRoot,t.id,n.id_prefix,n.item_format,e.typeRegistry.type_to_folder),w=h?await V(h.itemPath):null;if(_!==o||w!==l.itemRaw)throw new y("History or item changed while waiting for salvage lock; retry.",g.CONFLICT);let v=oi({...Ql({hashAlgorithm:Ee(s.entries.at(-1).hash_algorithm),nowIso:T(),author:i,op:"history_salvage",before:c,after:c,message:r.message,context:{history_salvage:s.receipt}}),before_hash:s.entries.at(-1).after_hash,after_hash:s.entries.at(-1).after_hash,item_hash_version:u});await $i({historyPath:t.historyPath,historyRawUnderLock:o,nextHistoryRaw:`${s.prefix}${JSON.stringify(v)}
|
|
64
64
|
`}),d.push(...await X({path:t.historyPath,scope:"project",op:"history_salvage:history"}))}finally{await p()}}return{id:t.id,dry_run:m,changed:f,history:{path:t.historyPath,entries_scanned:s.entries.length,chain_drift_before:!1,entries_rehashed:0,entries_patch_repaired:0,converted_replace_to_add:0,skipped_ops:0,reconciled_with_item:!1,audit_entry_added:f&&!m,verify_ok:!0,verify_errors:[],item_hash_version_before:u,item_hash_version_after:u,version_disposition:"preserved"},item:{exists:t.located!==null,path:t.located?.itemPath??null,matched_chain_before:null},provenance_normalization:{requested:!1,changed:!1,events_changed:0,observations_removed:0,invalid_values:[]},...s.receipt?{salvage:s.receipt}:{},warnings:d,generated_at:T()}}import{realpath as Sh}from"node:fs/promises";import ja from"node:path";import Eh from"fast-json-patch";(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]="55e22181-7bbf-5fed-965c-219fe465ed72")}catch{}})();function vh(e,t){return t==="body"?e.body:e.metadata[t]}function Fa(e,t){if(e===void 0||Object.is(e,t))return!0;if(Array.isArray(e)){if(!Array.isArray(t))return!1;let r=new Set;return e.every(i=>{let o=t.findIndex((s,a)=>!r.has(a)&&Fa(i,s));return o<0?!1:(r.add(o),!0)})}if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(t))return!1;let n=t;return Object.entries(e).every(([r,i])=>Object.hasOwn(n,r)&&Fa(i,n[r]))}function bh(e,t){let n=new Set(t),r=[];for(let i=e.length-1;i>=0&&n.size>0;i-=1){let o=e[i],s=new Set;for(let c of id(o.patch))s.add(fi(c.path)),c.from&&s.add(fi(c.from));let a=[...n].filter(c=>s.has(c));if(a.length!==0){for(let c of a)n.delete(c);r.push({index:i+1,ts:o.ts,author:o.author,op:o.op,fields:a.sort((c,l)=>c.localeCompare(l))})}}return r.reverse()}function lI(e,t,n){let r=Eh.compare(t,n);if(r.length===0)return;let i=new Set;for(let p of r)i.add(fi(p.path));let o=new Set([...i].filter(p=>Fa(vh(t,p),vh(n,p)))),s=new Set([...i].filter(p=>!o.has(p))),a=bh(e,s),c=bh(e,o),l=[...i].sort((p,_)=>p.localeCompare(_)),d=[...s].sort((p,_)=>p.localeCompare(_)),u=[...o].sort((p,_)=>p.localeCompare(_)),m=[...new Set(a.map(p=>p.author))].sort((p,_)=>p.localeCompare(_)),f=[...new Set(c.map(p=>p.author))].sort((p,_)=>p.localeCompare(_));return{reconciled_field_count:i.size,reconciled_fields:l,reverted_field_count:s.size,reverted_fields:d,discarded_events:a,discarded_authors:m,preserved_field_count:o.size,preserved_fields:u,preserved_events:c,preserved_authors:f,recovery_hint:a.length>0?"Reconciliation keeps the on-disk item and overwrites these replayed mutations. To recover one, inspect it with pm history <id> --diff --field <field>, then re-apply the lost value with pm update.":null}}async function dI(e){try{return await Sh(e)}catch{return null}}async function uI(e){if(await dI(ja.resolve(e.gitWorkspaceRoot,e.receipt.item_path))!==e.currentPath)return null;let n=[...new Set([...e.receipt.fields_from_theirs,...e.receipt.union_fields,...e.receipt.decisions.map(a=>a.field)])].sort(),r=e.receipt.merged_field_hashes;if(!r||n.length===0)return null;let i=Object.keys(r).sort();if(n.length!==i.length||n.some((a,c)=>a!==i[c]))return null;let o=e.currentItemReplay.metadata;return n.every(a=>{let c=a==="body"?e.currentItemReplay.body:o[a];return[Dt(c),ke(C(Y(c)))].includes(r[a])})?{receipt:e.receipt,declaredFields:n}:null}async function mI(e){if(e.proof.gitWorkspaceRoot===null)return{trusted:!1,reason:"git_workspace_unavailable",receipt_ids:[]};if(e.itemPath===null||e.currentItemReplay===null)return{trusted:!1,reason:"item_path_unavailable",receipt_ids:[]};let t=e.proof.receipts.filter(s=>s.item_id===e.id);if(t.length===0)return{trusted:!1,reason:"no_item_receipts",receipt_ids:[]};let n=await Sh(e.itemPath),r=[];for(let s of t){let a=await uI({receipt:s,gitWorkspaceRoot:e.proof.gitWorkspaceRoot,currentPath:n,currentItemReplay:e.currentItemReplay});a&&r.push(a)}let i=new Set(r.flatMap(({declaredFields:s})=>s)),o=e.reconciliation?.reconciled_fields;return r.length>0&&(o===void 0||o.length>0&&o.every(s=>i.has(s)))?{trusted:!0,reason:"trusted_merge_driver_hash_evidence",receipt_ids:r.map(({receipt:s})=>s.id)}:{trusted:!1,reason:"no_receipt_set_proves_snapshot",receipt_ids:[]}}async function kh(e,t,n,r){if(e===void 0)return;let{receipt:i,gitWorkspaceRoot:o}=e,s=t.currentItemPath===null?null:ja.relative(o,t.currentItemPath).split(ja.sep).join("/");if(!n||r.entriesRehashed!==0||r.entriesPatchRepaired!==0||t.matchedChainBefore!==!0||t.currentItemRawBeforeLock===null||s!==i.item_path||i.operation===void 0||!await th(o,i.item_path,i.operation,t.currentItemRawBeforeLock))throw new y("Restored-origin receipt evidence no longer proves the exact clean item snapshot.",g.CONFLICT,{code:"merge_reconcile_receipt_evidence_untrusted",recovery:{suggested_retry:"pm merge reconcile --dry-run"}})}async function fI(e){let t=new Set(e.options.mergeReceiptProof?.receipts.filter(s=>s.item_id===e.subjectId).map(s=>s.id)??[]),r=(e.options.mergeReceiptProof?await yt(e.options.mergeReceiptProof.gitWorkspaceRoot??process.cwd(),{includeReconciled:!0,includeLossless:!0,pmRoot:e.pmRoot}):void 0)?.receipts.filter(s=>s.item_id===e.subjectId&&t.has(s.id))??[],i=e.options.mergeReceiptProof?await mI({proof:{...e.options.mergeReceiptProof,receipts:r},id:e.subjectId,itemPath:e.itemReplayContext.currentItemPath,currentItemReplay:e.itemReplayContext.currentItemReplay,reconciliation:e.reconciliation}):void 0;if(i&&!i.trusted&&e.options.force!==!0)throw new y(`Merge receipt evidence for ${e.subjectId} does not prove the exact item snapshot (${i.reason}).`,g.CONFLICT,{code:"merge_reconcile_receipt_evidence_untrusted",required:"Use authoritative clone-local or durable receipt evidence whose canonical path, declared fields, and merged-value hashes match the current item, or review the mismatch and rerun with --force.",recovery:{suggested_retry:"pm merge reconcile --dry-run"}});let o=i?.trusted?r.filter(s=>i.receipt_ids.includes(s.id)):[];return{mergeReceiptProof:i,effectiveAuditContext:o.length>0&&e.options.force!==!0?{...e.options.auditContext,merge:{receipts:o.map(La)}}:e.options.auditContext}}function pI(e,t,n){let r=e.located?.itemPath??null,i=t.loadedItem,o=t.entries;if(!i)return{currentItemReplay:null,currentItemPath:r,matchedChainBefore:null,currentItemRawBeforeLock:null,loadedItem:null};let s=rd(i.document),a=o[o.length-1].after_hash;return{currentItemReplay:s,currentItemPath:r,matchedChainBefore:fn(s,n,Ee(o.at(-1)?.hash_algorithm)).includes(a),currentItemRawBeforeLock:i.raw,loadedItem:i}}function hI(e){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-repair re-anchored ${e.entriesRehashed} entr${e.entriesRehashed===1?"y":"ies"}${e.entriesPatchRepaired>0?`, repaired ${e.entriesPatchRepaired} patch(es)`:""}${e.reconcileNeeded?", reconciled chain with on-disk item":""}.`}function _I(e){let t=[...e.reanchorEntries];if(!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let n=e.reconcileNeeded&&e.currentItemReplay?e.currentItemReplay:e.finalReplay,r=Ee(e.reanchorEntries.at(-1)?.hash_algorithm),i=fn(e.finalReplay,e.itemHashVersion,r),o=e.reanchorEntries[e.reanchorEntries.length-1].after_hash,s=i.indexOf(o),a=fn(n,e.itemHashVersion,r),c={hash_algorithm:r,ts:T(),author:e.author,op:e.auditOperation,patch:e.reconcileNeeded&&e.currentItemReplay?Eh.compare(e.finalReplay,e.currentItemReplay):[],before_hash:i[s],after_hash:a[s],message:e.message,...e.explicitItemHashVersion?{item_hash_version:e.itemHashVersion}:{},...e.auditContext===void 0?{}:{context:e.auditContext}};return t.push(oi({...c,event_class:Jl(c)})),{rewrittenEntries:t,auditEntryAdded:!0}}function gI(e,t,n){let r=[];return e||r.push("history_repair_no_changes"),t>0&&r.push(`history_repair_skipped_unresolvable_ops:${t}`),n&&n.discarded_events.length>0&&r.push(`history_repair_reconcile_discards_events:${n.discarded_events.length}`,`history_repair_discarded_authors:${n.discarded_authors.join(",")}`),r}async function Ua(e,t,n){let{pmRoot:r,settings:i,typeRegistry:o}=await as(n.path),s=await Kd(r,e,i,o.type_to_folder);return t.salvageTail===!0?wh({pmRoot:r,subject:s,settings:i,typeRegistry:o,options:t,author:q(t.author,i.author_default)}):rm({pmRoot:r,subject:s,settings:i,typeRegistry:o,operation:"history-repair",options:t,transform:a=>wI({pmRoot:r,subject:s,options:t},a)})}function yI(e,t){let n=e.mergeAbandonmentProof!==void 0&&e.auditContext!==void 0&&t.some(r=>r.op==="merge_reconcile"&&C(r.context)===C(e.auditContext));return e.forceAuditEntry===!0&&!n}async function wI(e,t){let{pmRoot:n,subject:r,options:i}=e,o=t.entries,s=t.verification,a=pn(o),c=i.normalizeProvenance?Xu(o):{entries:o,receipt:{changed:!1,events_changed:0,observations_removed:0,invalid_values:[]}},l=od(c.entries),d=new Set(c.entries.map(I=>I.item_hash_version).filter(I=>I!==void 0)),u=si(c.entries,l),m=pI(r,t,l);await kh(i.mergeAbandonmentProof,m,s.ok,u);let f=u.finalDocument,p=fn(f,l),_=!1;if(m.currentItemReplay!==null){let I=fn(m.currentItemReplay,l);_=!p.some((F,P)=>F===I[P])}let h=_&&m.currentItemReplay?lI(u.entries,f,m.currentItemReplay):void 0,{mergeReceiptProof:w,effectiveAuditContext:v}=await fI({options:i,pmRoot:n,subjectId:r.id,itemReplayContext:m,reconciliation:h}),k=[u.entriesRehashed>0,u.entriesPatchRepaired>0,_,yI(i,o),c.receipt.changed].some(Boolean),S=t.author,x=!!i.dryRun,R=hI({message:i.message,entriesRehashed:u.entriesRehashed,entriesPatchRepaired:u.entriesPatchRepaired,reconcileNeeded:_}),{rewrittenEntries:E,auditEntryAdded:b}=_I({reanchorEntries:u.entries,changed:k,reconcileNeeded:_,currentItemReplay:m.currentItemReplay,finalReplay:f,author:S,message:R,auditOperation:i.auditOperation??"history_repair",auditContext:c.receipt.changed?{...v,provenance_normalization:c.receipt}:v,itemHashVersion:l,explicitItemHashVersion:u.explicitItemHashVersion}),j=gI(k,u.skippedOps,h);return{changed:k,rewrittenEntries:E,beforeWrite:async()=>kh(i.mergeAbandonmentProof,m,s.ok,u),report:({verification:I,warnings:F})=>({id:r.id,dry_run:x,changed:k,history:{path:r.historyPath,entries_scanned:o.length,chain_drift_before:!s.ok,entries_rehashed:u.entriesRehashed,entries_patch_repaired:u.entriesPatchRepaired,converted_replace_to_add:u.convertedReplaceToAdd,skipped_ops:u.skippedOps,reconciled_with_item:_,audit_entry_added:b,verify_ok:I.ok,verify_errors:I.errors,item_hash_version_before:a.item_hash_version??null,item_hash_version_after:l,version_disposition:d.size>1?"selected_for_ambiguous_stream":"preserved"},item:{exists:m.currentItemPath!==null,path:m.currentItemPath,matched_chain_before:m.matchedChainBefore},provenance_normalization:{requested:i.normalizeProvenance===!0,...c.receipt},...h?{reconciliation:h}:{},...w?{merge_receipt_proof:w}:{},warnings:[...new Set([...j,...F])].sort((P,ee)=>P.localeCompare(ee)),generated_at:T()})}}function v1(e,t){if(t&&e!==void 0)throw new y("history-repair: <id> and --all are mutually exclusive; pass an item id to repair one stream or --all to repair every drifted stream.",g.USAGE);if(!t&&e===void 0)throw new y("history-repair: provide an item <id> or pass --all to repair every drifted stream.",g.USAGE)}async function b1(e,t){if(e.salvageTail===!0)throw new y("Tail salvage requires one explicit item ID; --all is not supported.",g.USAGE);let{pmRoot:n,settings:r,typeRegistry:i}=await as(t.path),o=[],s=await Ht(n,r.item_format,i.type_to_folder,o,r.schema,{forceSourceScan:!0}),a=await qt(n,s),c=e.normalizeProvenance?await Zu(n):[],l=[...new Set([...a.driftedItems,...c])].sort((f,p)=>f.localeCompare(p)),d=[],u=[],m={repaired:0,skipped_clean:0,failed:0};for(let f of l)try{let p=await Ua(f,{...e,auditContext:e.auditContextById?.[f],auditContextById:void 0,mergeReceiptProof:e.mergeReceiptProofById?.[f]??e.mergeReceiptProof,mergeReceiptProofById:void 0},t),_=p.changed?"repaired":"skipped_clean";m[_]+=1,u.push(...p.warnings.map(h=>`${f}:${h}`)),d.push({id:f,outcome:_,entries_rehashed:p.history.entries_rehashed,entries_patch_repaired:p.history.entries_patch_repaired,reconciled_with_item:p.history.reconciled_with_item,...p.reconciliation?{reconciliation:p.reconciliation}:{},...p.merge_receipt_proof?{merge_receipt_proof:p.merge_receipt_proof}:{},warnings:p.warnings})}catch(p){m.failed+=1,d.push({id:f,outcome:"failed",error:p instanceof Error?p.message:String(p)})}return e.dryRun||await Kl(n),{all:!0,dry_run:!!e.dryRun,scanned_streams:s.length,drifted_streams:a.driftedItems.length,provenance_invalid_streams:c.length,streams:d,totals:m,warnings:[...new Set([...o,...u])].sort((f,p)=>f.localeCompare(p)),generated_at: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]="b6bed68c-7e40-5b4f-a520-75b36fefc33b")}catch{}})();var vI=new Set(zd),Ih=25,Ln=8,en=100,bI=ve.join("runtime","telemetry","events.jsonl"),kI=ve.join("runtime","telemetry","state.json"),SI=2500,EI=500,Ah=qd-3,xI=["x-pm-telemetry-max-schema-version","x-pm-telemetry-max-version"];function Ba(e,t=!1){return e.startsWith("agent_guidance_")||e.startsWith("telemetry_")||e.startsWith("history_stream_over_compact_threshold:")||e.startsWith("integrity_legacy_hierarchy_")||e.startsWith("stale_in_progress_items:")||e.startsWith("provenance_resolver_zero_success:")||e.startsWith("provenance_value_domain_invalid:")||!t&&e.startsWith("merge_driver_configuration_missing:")}function Va(e){let t=e.trim(),n=t.indexOf(":");return n===-1?t:t.slice(0,n)}function Mn(e){return e.trim().toLowerCase()}function Wa(e,t){let n=Mn(e),r=Mn(t);return n.startsWith("builtin-")?!0:r==="beads"||r==="todos"}async function Ja(e){try{return(await vt.stat(e)).isDirectory()}catch{return!1}}async function II(e){let t=(await vt.readdir(e,{withFileTypes:!0})).filter(r=>r.isDirectory()),n=await Promise.all(t.map(r=>vt.readdir(ve.join(e,r.name),{withFileTypes:!0})));return new Set(n.flatMap(r=>r.filter(i=>i.isFile()).filter(i=>Jn.some(o=>i.name.endsWith(o))).map(i=>ve.parse(i.name).name)))}async function AI(e,t,n,r){let i=await We({path:e,scope:"project"}),o=t!=="_workspace"&&!r.has(t);if(!n.enabled&&!o)return{warnings:i,overThreshold:!1,classification:"live"};let s;try{s=await vt.readFile(e,"utf8")}catch{return{warnings:i,overThreshold:!1,classification:"unreadable"}}let a="live";if(o){let l=s.split(/\r?\n/).map(d=>d.trim()).filter(Boolean).at(-1);try{a=JSON.parse(l??"{}").op==="delete"?"tombstone":"orphaned"}catch{a="orphaned"}}let c=n.enabled?s.split(/\r?\n/).filter(l=>l.trim().length>0).length:0;return{warnings:i,overThreshold:n.enabled&&c>n.max_entries,classification:a}}async function RI(e,t,n){let r=ve.join(e,"history");if(!await Ja(r))return{count:0,warnings:[],over_threshold:[],max_entries:null,tombstones:[],orphaned:[]};let i=(await vt.readdir(r)).filter(u=>u.endsWith(".jsonl")).sort((u,m)=>u.localeCompare(m)),s=t.enabled?t.max_entries:null,a=[],c=[],l=[],d=[];for(let u of i){let m=ve.join(r,u),f=u.slice(0,-6),p=await AI(m,f,t,n);a.push(...p.warnings),p.classification==="tombstone"&&l.push(f),p.classification==="orphaned"&&d.push(f),p.overThreshold&&c.push(f)}return{count:i.length,warnings:[...a,...c.map(u=>`history_stream_over_compact_threshold:${u}`),...d.map(u=>`history_orphaned_stream:${u}`)],over_threshold:c,max_entries:s,tombstones:l,orphaned:d}}function Ga(e,t){return ve.relative(e,t).replaceAll("\\","/")}async function Rh(e,t){let n=[...new Set(Object.values(t))].sort((i,o)=>i.localeCompare(o)),r=[];for(let i of n){let o=ve.join(e,i),s=[];try{s=await vt.readdir(o)}catch(a){if(typeof a=="object"&&a!==null&&"code"in a&&z(a))continue;continue}for(let a of s)Jn.some(c=>a.toLowerCase().endsWith(c))&&r.push(ve.join(o,a))}return r.sort((i,o)=>Ga(e,i).localeCompare(Ga(e,o))),r}function CI(e){return!(typeof e=="object"&&e!==null&&"code"in e&&z(e))}async function TI(e,t,n){let r=await Rh(e,t),i=[],o=[],s=[],a=[],c=rn(H());for(let l of r){let d=Ga(e,l),u;try{u=await vt.readFile(l,"utf8")}catch{i.push(d);continue}let m=De(u);if(m){o.push({path:d,...m});continue}try{let f=xt(u,{format:el(l),schema:n,extensionFieldNames:c});a.push({ref:d,version:ti(f.metadata)})}catch{s.push(d)}}return{paths:r,unreadable:i,conflictMarkers:o,parseFailures:s,formatVersions:a}}async function $I(e){let t=ve.join(e,"history"),n=[],r=[],i=[],o=[],s=[],a=[];try{a=(await vt.readdir(t)).filter(c=>c.endsWith(".jsonl")).sort((c,l)=>c.localeCompare(l))}catch(c){CI(c)&&n.push("history")}for(let c of a){let l=c.slice(0,-6),d;try{d=await vt.readFile(ve.join(t,c),"utf8")}catch{n.push(l);continue}let u=De(d);if(u){r.push({id:l,...u});continue}d.split(/\r?\n/).forEach((m,f)=>{if(m.trim())try{let p=JSON.parse(m);o.push(...hh(p,l).map(_=>({itemId:l,line:f+1,..._}))),s.push(..._h(p,l,f+1))}catch{i.push({id:l,line:f+1})}})}return{files:a,unreadable:n,conflictMarkers:r,invalidJson:i,mergeReceiptReferences:o,mergeReceiptDispositions:s}}function Ch(e){return[...e.cycles.map(t=>t.legacy_terminal?`integrity_legacy_hierarchy_cycle:${t.item_ids.join(",")}`:`integrity_hierarchy_cycle:${t.item_ids.join(",")}`),...e.cardinality_violations.map(t=>t.legacy_terminal?`integrity_legacy_hierarchy_cardinality:${t.child_id}`:`integrity_hierarchy_cardinality:${t.child_id}`),...e.divergences.map(t=>t.legacy_terminal?`integrity_legacy_hierarchy_divergence:${t.child_id}`:`integrity_hierarchy_divergence:${t.child_id}`)]}async function OI(e,t,n,r,i,o){let s=await TI(e,t,n),a=await $I(e),c=ni(s.formatVersions),l=_e(n),d=gi(o,I=>Gl(I,l),Qn()),u=await io(e),m=await tt(e),f=await Vp(e,m,r,i),p=m===null?null:await Rn(m),_=await yt(m??e,{includeReconciled:!0,includeLossless:!0,pmRoot:e}),h=new Set(_.receipts.map(I=>I.id)),w=gh(a.mergeReceiptReferences,h,a.mergeReceiptDispositions),v=w.missing,k=_.receipts.filter(I=>I.state==="pending"),{pendingDecisions:S,lossless:x}=Nn(k),R=p?.status==="missing"&&p.missing_keys.length===5&&p.drifted_keys.length===0,E=[...s.unreadable.map(I=>`integrity_item_unreadable:${I}`),...s.conflictMarkers.map(I=>`integrity_item_conflict_marker:${I.path}:L${I.line}`),...s.parseFailures.map(I=>`integrity_item_parse_failed:${I}`),...a.unreadable.map(I=>`integrity_history_unreadable:${I}`),...a.conflictMarkers.map(I=>`integrity_history_conflict_marker:${I.id}:L${I.line}`),...a.invalidJson.map(I=>`integrity_history_invalid_json:${I.id}:L${I.line}`),...c.outdated.map(I=>`integrity_item_outdated_format_version:${I}`),...c.ahead.map(I=>`integrity_item_ahead_format_version:${I}`),...Ch(d),...u.tracked_path_count>0?[`tracked_runtime_cache_files:${u.tracked_path_count}`]:[],...p!==null&&p.status!=="ok"?[`merge_driver_configuration_${R?"missing":"drift"}:${p.missing_keys.length+p.drifted_keys.length}`]:[],...f.warnings,...S.length>0?[`merge_decisions_unreviewed:${S.length}`]:[],...x.length>0?[`merge_receipts_pending:${x.length}`]:[],...Jp({invalidEvidenceCount:_.invalid_evidence_count,missingHistoryReferenceCount:v.length})],b=[...new Set(E)].sort((I,F)=>I.localeCompare(F)),j=b.filter(I=>!I.startsWith("integrity_legacy_hierarchy_"));return{check:{name:"integrity",status:j.length===0?"ok":"warn",ok:j.length===0,details:{checked_item_files:s.paths.length,checked_history_streams:a.files.length,counts:{item_unreadable:s.unreadable.length,item_conflict_markers:s.conflictMarkers.length,item_parse_failures:s.parseFailures.length,history_unreadable:a.unreadable.length,history_conflict_markers:a.conflictMarkers.length,history_invalid_json:a.invalidJson.length,item_outdated_format_version:c.outdated.length,item_ahead_format_version:c.ahead.length,hierarchy_cycles:d.cycles.length,hierarchy_cardinality_violations:d.cardinality_violations.length,hierarchy_parent_divergences:d.divergences.length,tracked_runtime_cache_files:u.tracked_path_count,merge_driver_configuration:p===null||p.status==="ok"?0:p.missing_keys.length+p.drifted_keys.length,merge_fence:f.count,pending_merge_decisions:S.length,lossless_merge_receipts:x.length,invalid_merge_receipt_evidence:_.invalid_evidence_count,missing_merge_receipt_history_references:v.length,accepted_legacy_merge_receipt_references:w.acceptedLegacyCount,accepted_missing_merge_receipt_dispositions:w.acceptedDispositionCount},item_unreadable:s.unreadable,item_conflict_markers:s.conflictMarkers,item_parse_failures:s.parseFailures,item_outdated_format_version:c.outdated,item_ahead_format_version:c.ahead,hierarchy_integrity:{...d,relations:ot(d.relations,Ln)},history_unreadable:a.unreadable,history_conflict_markers:a.conflictMarkers,history_invalid_json:a.invalidJson,tracked_runtime_cache:{tracker_relative_root:u.tracker_relative_root,tracked_paths:u.tracked_paths,tracked_path_count:u.tracked_path_count,remediation_command:u.remediation_command},merge_driver_configuration:p===null?null:{...p,required:i},merge_fence:f.audit,pending_merge_decision_items:[...new Set(S.map(I=>I.item_id))].sort((I,F)=>I.localeCompare(F)),lossless_merge_receipt_items:[...new Set(x.map(I=>I.item_id))].sort((I,F)=>I.localeCompare(F)),invalid_merge_receipt_evidence_details:_.invalid_evidence,invalid_merge_receipt_evidence_details_truncated:_.invalid_evidence_truncated,missing_merge_receipt_history_reference_details:v.slice(0,en),missing_merge_receipt_history_reference_details_truncated:v.length>en}},warnings:b,gitWorkspaceRoot:m,pendingMergeReceipts:k}}function DI(e){if(typeof e.activate=="function")return!0;let t=e.default;return typeof t!="object"||t===null?!1:typeof t.activate=="function"}function PI(e){let t={layer:e.layer,directory:e.directory,manifest_path:e.manifest_path,name:e.name,version:e.version,entry:e.entry,priority:e.priority,entry_path:e.entry_path,has_activate:DI(e.module)};return Array.isArray(e.capabilities)&&(t.capabilities=[...e.capabilities]),t}function NI(e,t){let n=te(e.id);return n||`migration-${String(t+1).padStart(3,"0")}`}function LI(e){let n=te(e.status)?.toLowerCase();return n==="failed"?"failed":n==="applied"?"applied":"pending"}function MI(e){return te(e.reason)??te(e.error)??te(e.message)}function za(e,t){let n=(e.layer??"").localeCompare(t.layer??"");if(n!==0)return n;let r=(e.name??"").localeCompare(t.name??"");return r!==0?r:(e.id??"").localeCompare(t.id??"")}function jI(e){let t=[],n=[],r=[];e.forEach((o,s)=>{let a=NI(o.definition,s),c=LI(o.definition);if(c==="applied"){t.push({layer:o.layer,name:o.name,id:a,status:c});return}if(c==="failed"){r.push({layer:o.layer,name:o.name,id:a,status:c,reason:MI(o.definition)});return}n.push({layer:o.layer,name:o.name,id:a,status:c})}),t.sort(za),n.sort(za),r.sort(za);let i=[...r.map(o=>`extension_migration_failed:${o.layer}:${o.name}:${o.id}`),...n.map(o=>`extension_migration_pending:${o.layer}:${o.name}:${o.id}`)];return{summary:{applied:t,pending:n,failed:r,applied_count:t.length,pending_count:n.length,failed_count:r.length},warnings:i}}function Th(e,t,n,r,i,o,s,a,c){let l=[...new Set(e)].sort((h,w)=>h.localeCompare(w)),d=[...new Set(l.map(h=>Va(h)))].sort((h,w)=>h.localeCompare(w)),u=l.filter(h=>h.startsWith("extension_capability_unknown:")).length,m=c.length>0,f=m?"partial":"full",p=[],_=ua(l,{deactivate:"pm extension --deactivate <name> --project/--global",doctor:"pm extension --doctor --project/--global --detail deep --trace"});return _&&p.push(_),t>0&&p.push("Run pm extension --explore --project and pm extension --explore --global to inspect load failures."),n>0&&p.push("Review checks[name=extensions].details.activation.failed in pm health --json for activation error details."),(r.failed_count>0||r.pending_count>0)&&p.push("Resolve pending/failed extension migrations before write commands; use --force only when policy allows."),i>0&&p.push("Run pm extension --manage --project and pm extension --manage --global to refresh managed-state diagnostics."),u>0&&p.push(`Unknown extension capabilities detected. Allowed capabilities: ${Ur.join(", ")}. Review extension_capability_unknown warning details for suggested replacements.`),l.some(h=>h.startsWith("extension_capability_legacy_alias:"))&&p.push("Legacy extension capability aliases were auto-remapped to canonical capabilities. Update manifests to canonical names (migration/validation -> schema)."),l.some(h=>h.startsWith("extension_command_definition_legacy_handler_alias:"))&&p.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility."),m?p.push("Update-check coverage is partial because unmanaged extensions need adoption. Adopt existing installs via pm extension --manage --project/--global --fix-managed-state, pm extension --adopt-all --project/--global, or pm extension --adopt <name>."):s.length>0&&p.push("Loaded unmanaged extensions are currently treated as informational. Use pm extension --manage --project/--global --fix-managed-state to adopt them for update checks."),p.length===0&&p.push("No immediate action required. Re-run pm health after extension configuration changes."),{status:l.length===0?"ok":"warn",warning_count:l.length,warning_codes:d,load_failure_count:t,activation_failure_count:n,migration_failed_count:r.failed_count,migration_pending_count:r.pending_count,managed_state_warning_count:i,managed_extension_entries_count:o,unmanaged_loaded_extension_count:s.length,unmanaged_loaded_extensions:s,unmanaged_expected_extension_count:a.length,unmanaged_expected_extensions:a,unmanaged_action_required_extension_count:c.length,unmanaged_action_required_extensions:c,update_health_coverage:f,update_health_partial:m,unknown_capability_count:u,top_warnings:l.slice(0,8),remediation:p}}async function FI(e,t,n){let r=await _a(Je(e)),i=await Ke({pmRoot:e,settings:t,cwd:process.cwd(),noExtensions:n}),o=i.loaded.map(E=>PI(E)),s=await Ku(i.loaded,Je(e)),a=await Ye({...i,loaded:i.loaded}),[c,l]=await Promise.all([we(i.roots.project),we(i.roots.global)]);await ha(e,a.registrations.migrations);let d=jI(a.registrations.migrations),u={failed:a.failed,warnings:a.warnings,hook_counts:a.hook_counts,command_override_count:a.command_override_count,command_handler_count:a.command_handler_count,parser_override_count:a.parser_override_count,preflight_override_count:a.preflight_override_count,service_override_count:a.service_override_count,renderer_override_count:a.renderer_override_count,registration_counts:a.registration_counts,registrations:a.registrations,migration_status:d.summary,managed_extensions:{project:{path:c.path,count:c.state.entries.length,entries:c.state.entries},global:{path:l.path,count:l.state.entries.length,entries:l.state.entries}}},m=new Set(c.state.entries.map(E=>Mn(E.name))),f=new Set(l.state.entries.map(E=>Mn(E.name))),p=[...new Map(i.loaded.filter(E=>!(E.layer==="project"?m:f).has(Mn(E.name))).map(E=>[`${E.layer}:${E.name}`,{layer:E.layer,name:E.name,directory:E.directory}])).values()].sort((E,b)=>{let j=`${E.layer}:${E.name}`,I=`${b.layer}:${b.name}`;return j.localeCompare(I)}),_=p.map(E=>`${E.layer}:${E.name}`).sort((E,b)=>E.localeCompare(b)),h=p.filter(E=>Wa(E.name,E.directory)).map(E=>`${E.layer}:${E.name}`).sort((E,b)=>E.localeCompare(b)),w=p.filter(E=>!Wa(E.name,E.directory)).map(E=>`${E.layer}:${E.name}`).sort((E,b)=>E.localeCompare(b)),v=w.length>0?[`extension_update_health_partial_coverage:skipped_unmanaged:${w.length}`]:[],k=[...r.warnings,...i.warnings,...u.warnings,...d.warnings,...c.warnings,...l.warnings,...v,...s.warnings],S=Sr(k),x=Er(),R=Th(k,i.failed.length,a.failed.length,d.summary,c.warnings.length+l.warnings.length,c.state.entries.length+l.state.entries.length,_,h,w);return{check:{name:"extensions",status:k.length===0?"ok":"warn",ok:k.length===0,details:{...i,loaded:o,warnings:k,activation:u,author_manifest:r,triage:R,...d.summary.pending_count>0?{remediation_map:{extension_migration_pending:"pm extension migrate --project"}}:{},capability_contract:x,capability_guidance:S,host_version_census:s}},warnings:k}}function UI(e,t){return e.length<=t?{values:e,truncated:!1}:{values:e.slice(0,t),truncated:!0}}function ot(e,t){return Array.isArray(e)?{count:e.length,sample:e.slice(0,t),truncated:e.length>t}:{count:0,sample:[],truncated:!1}}function zI(e){if(typeof e!="object"||e===null||Array.isArray(e))return{};let t=e;return{layer:t.layer,directory:t.directory,name:t.name,version:t.version,enabled:t.enabled,status:t.status,has_activate:t.has_activate,capabilities:t.capabilities}}function po(e,t){let n=ot(e,t);return{...n,sample:n.sample.map(r=>zI(r))}}function B(e,t){if(!Array.isArray(e))return{count:0,sample:[],truncated:!1};let n=e.filter(r=>typeof r=="string");return{count:n.length,sample:n.slice(0,t),truncated:n.length>t}}function HI(e){if(typeof e!="object"||e===null)return null;let t=e;return{applied_count:t.applied_count,pending_count:t.pending_count,failed_count:t.failed_count}}var WI={settings:(e,t)=>({version:e.version,id_prefix:e.id_prefix,locks_ttl_seconds:e.locks_ttl_seconds,warnings:B(e.warnings,t)}),directories:(e,t)=>({required_count:Array.isArray(e.required)?e.required.length:0,optional_count:Array.isArray(e.optional)?e.optional.length:0,missing_required:B(e.missing_required,t),missing_optional:B(e.missing_optional,t),missing:B(e.missing,t),strict_directories:e.strict_directories}),settings_values:(e,t)=>({warnings:B(e.warnings,t)}),telemetry:e=>({enabled:e.enabled,capture_level:e.capture_level,endpoint:e.endpoint,queue_exists:e.queue_exists,queue_entries:e.queue_entries,queue_draining:e.queue_draining,queue_invalid_rows:e.queue_invalid_rows,queue_rows_total:e.queue_rows_total,last_successful_flush_at:e.last_successful_flush_at,last_failed_flush_at:e.last_failed_flush_at,endpoint_probe:e.endpoint_probe,env_overrides:e.env_overrides}),extensions:(e,t)=>{let n=typeof e.activation=="object"&&e.activation!==null?e.activation:{};return{disabled_by_flag:e.disabled_by_flag,discovered:po(e.discovered,t),effective:po(e.effective,t),loaded:po(e.loaded,t),failed:ot(e.failed,t),warnings:B(e.warnings,t),activation:{failed:ot(n.failed,t),warnings:B(n.warnings,t),hook_counts:n.hook_counts,command_handler_count:n.command_handler_count,service_override_count:n.service_override_count,renderer_override_count:n.renderer_override_count,registration_counts:n.registration_counts,migration_status:HI(n.migration_status)},author_manifest:e.author_manifest,triage:e.triage,capability_contract:e.capability_contract,capability_guidance:ot(e.capability_guidance,t),host_version_census:e.host_version_census}},storage:(e,t)=>{let n=typeof e.author_attribution=="object"&&e.author_attribution!==null?e.author_attribution:void 0;return{...e,...n?{author_attribution:{...n,affected_item_ids:B(n.affected_item_ids,t),samples:ot(n.samples,t)}}:{}}},locks:e=>({active_lock_count:e.active_lock_count,stale_lock_count:e.stale_lock_count,unreadable_lock_count:e.unreadable_lock_count,unparseable_lock_count:e.unparseable_lock_count}),integrity:(e,t)=>{let n=typeof e.tracked_runtime_cache=="object"&&e.tracked_runtime_cache!==null?e.tracked_runtime_cache:void 0;return{checked_item_files:e.checked_item_files,checked_history_streams:e.checked_history_streams,counts:e.counts,item_unreadable:B(e.item_unreadable,t),item_conflict_markers:ot(e.item_conflict_markers,t),item_parse_failures:B(e.item_parse_failures,t),tracked_runtime_cache:n===void 0?e.tracked_runtime_cache:{...n,tracked_paths:B(n.tracked_paths,t)},history_unreadable:B(e.history_unreadable,t),history_conflict_markers:ot(e.history_conflict_markers,t),history_invalid_json:ot(e.history_invalid_json,t),skipped:e.skipped}},history_drift:(e,t)=>{let n=typeof e.cache_confirmation=="object"&&e.cache_confirmation!==null?e.cache_confirmation:void 0;return{checked_items:e.checked_items,cache_hit_verification:e.cache_hit_verification,cache_confirmation:n===void 0?e.cache_confirmation:{...n,candidate_items:B(n.candidate_items,t),confirmed_items:B(n.confirmed_items,t),resolved_false_positive_items:B(n.resolved_false_positive_items,t)},counts:e.counts,drifted_items:B(e.drifted_items,t),merge_receipt_attributed_items:B(e.merge_receipt_attributed_items,t),missing_streams:B(e.missing_streams,t),unreadable_streams:B(e.unreadable_streams,t),hash_mismatches:B(e.hash_mismatches,t),chain_mismatches:B(e.chain_mismatches,t),version_skews:B(e.version_skews,t),workspace_state_mismatches:B(e.workspace_state_mismatches,t),workspace_state_missing:B(e.workspace_state_missing,t),workspace_state_unreadable:B(e.workspace_state_unreadable,t),skipped:e.skipped}},vectorization:(e,t)=>({semantic_runtime_available:e.semantic_runtime_available,compatibility_mode_auto_defaults:e.compatibility_mode_auto_defaults,auto_ollama_defaults_applied:e.auto_ollama_defaults_applied,auto_ollama_defaults_skipped_reason:e.auto_ollama_defaults_skipped_reason,auto_ollama_defaults_remediation:e.auto_ollama_defaults_remediation,refresh_policy:e.refresh_policy,provider_active:e.provider_active,vector_store_active:e.vector_store_active,items:e.items,ledger_entries_before:e.ledger_entries_before,stale_items_before_total:e.stale_items_before_total,stale_items_before:B(e.stale_items_before,t),refresh_attempted:e.refresh_attempted,refresh_skipped_reason:e.refresh_skipped_reason,refresh_result:e.refresh_result,ledger_entries_after:e.ledger_entries_after,stale_items_after_total:e.stale_items_after_total,stale_items_after:B(e.stale_items_after,t),skipped:e.skipped})};function $h(e,t){let n=WI[e.name];return n?n(e.details,t):e.details}function GI(e){let t=B(e.warnings,Ln);return{ok:e.ok,...e.verdict?{verdict:e.verdict}:{},checks:e.checks.map(n=>({name:n.name,status:n.status,ok:n.ok,details:$h(n,Ln)})),warnings:t.sample,findings:e.findings.filter(n=>t.sample.includes(n.warning)||e.failed_because.includes(n.warning)),failed_because:e.failed_because,projection:{mode:"brief",warning_count:t.count,warnings_truncated:t.truncated,detail_limit:Ln},generated_at:e.generated_at}}function xh(e){return e.details.skipped===!0}function qI(e){let t=B(e.warnings,Ln),n=e.checks.filter(xh).map(r=>r.name);return{ok:e.ok,...e.verdict?{verdict:e.verdict}:{},checks:e.checks.filter(r=>!xh(r)).map(r=>({name:r.name,status:r.status,ok:r.ok,details:{}})),warning_count:t.count,warnings:t.sample,findings:e.findings.filter(r=>t.sample.includes(r.warning)||e.failed_because.includes(r.warning)),failed_because:e.failed_because,projection:{mode:"summary",warning_count:t.count,warnings_truncated:t.truncated,detail_limit:Ln,omitted_checks:n},generated_at:e.generated_at}}function qa(e,t){if(t)return{values:e,truncated:!1,total:e.length};let n=UI(e,Ih);return{values:n.values,truncated:n.truncated,total:e.length}}function ho(e){let t=(process.env[e]??"").trim().toLowerCase();return t==="1"||t==="true"||t==="yes"||t==="on"}function BI(){let e=(process.env.PM_TELEMETRY_SOURCE_CONTEXT??"").trim().toLowerCase();return vI.has(e)?e:null}function _o(e){let t=e.trim();if(t.length===0)return"";try{let n=new URL(t);return n.username="",n.password="",n.search="",n.hash="",n.toString()}catch{return t}}function Oh(e){let t=0,n=0,r=0,i=0,o=0;for(let s of e.split(`
|
|
65
|
-
`)){let a=s.trim();if(a.length!==0){r+=1;try{let c=JSON.parse(a);if(typeof c=="object"&&c!==null&&typeof c.attempts=="number"&&Number.isFinite(c.attempts)){let l=Math.max(0,Math.trunc(c.attempts));t+=1,o=Math.max(o,l),l>=Ah&&(i+=1)}else n+=1}catch{n+=1}}}return{validEntries:t,invalidRows:n,totalRows:r,highRetryEntries:i,maxAttempts:o}}function VI(){return{validEntries:0,invalidRows:0,totalRows:0,highRetryEntries:0,maxAttempts:0}}function JI(e){if(!e||e.trim().length===0)return{runtimeState:{},stateParseFailed:!1};try{let t=JSON.parse(e);return typeof t=="object"&&t!==null&&!Array.isArray(t)?{runtimeState:t,stateParseFailed:!1}:{runtimeState:{},stateParseFailed:!0}}catch{return{runtimeState:{},stateParseFailed:!0}}}async function KI(e,t){let n=e.telemetry.endpoint.trim();return!t||!e.telemetry.enabled||n.length===0||ss().telemetry_disabled?void 0:{attempted:!0,...await Dh(n)}}function YI(e,t,n){let r=[];if(t.invalidRows>0&&r.push(`telemetry_queue_invalid_rows:${t.invalidRows}`),!e.telemetry.enabled||t.validEntries===0)return r;let i=n.last_successful_flush_at,o=n.last_failed_flush_at,s=o&&(!i||o>i),a=!i,c=t.validEntries>=EI;return(s||a||c)&&r.push(`telemetry_queue_pending:${t.validEntries}`),t.highRetryEntries>0&&r.push(`telemetry_queue_high_retries:${t.highRetryEntries}`),r}function XI(e){return!e||e.ok!==!1?[]:typeof e.status=="number"?[`telemetry_endpoint_probe_http_status:${e.status}`]:["telemetry_endpoint_probe_failed"]}function ZI(e){let t=Number.parseInt(e?.max_schema_version??"",10);return e?.ok===!0&&Number.isInteger(t)&&t>Gd?[`telemetry_schema_version_behind:${t}`]:[]}function QI(e,t){let n=typeof t.pending_otel_spans=="number"?t.pending_otel_spans:0,r=t.last_otel_success_at,i=t.last_otel_failure_at;return e.telemetry.enabled&&n>0&&!!i&&(!r||i>=r)?[`telemetry_otel_export_failing:${n}`]:[]}function eA(){return{...ss(),pm_no_telemetry:ho("PM_NO_TELEMETRY"),telemetry_otel_disabled:ho("PM_TELEMETRY_OTEL_DISABLED"),telemetry_inline_flush:ho("PM_TELEMETRY_INLINE_FLUSH"),telemetry_source_context:BI()}}function tA(e,t){return e.telemetry.enabled&&t.validEntries>0}function nA(e,t){return e&&t.every(n=>!n.startsWith("telemetry_queue_pending:")&&!n.startsWith("telemetry_queue_high_retries:"))}async function Dh(e){let t=e;try{let n=new URL(e);n.pathname="/healthz",n.search="",n.hash="",t=n.toString()}catch{}try{let n=await fetch(t,{method:"GET",signal:AbortSignal.timeout(SI)});return{probe_url:_o(t),ok:n.ok,status:n.status,max_schema_version:(()=>{for(let r of xI){let i=n.headers.get(r)?.trim();if(i&&i.length>0)return i}})()}}catch(n){return{probe_url:_o(t),ok:!1,error:n instanceof Error?n.message:"probe_failed"}}}async function rA(e,t){let n=Wr(process.cwd()),r=ve.join(n,bI),i=ve.join(n,kI),o=await V(r),s=o!==null,a=o?Buffer.byteLength(o,"utf8"):0,c=o?Oh(o):VI(),l=await V(i),{runtimeState:d,stateParseFailed:u}=JI(l),m=e.telemetry.endpoint.trim(),f=_o(m),p=await KI(e,t.checkTelemetry),_=[];u&&_.push("telemetry_state_invalid_json"),_.push(...YI(e,c,d),...XI(p),...ZI(p),...QI(e,d));let h=tA(e,c),w=typeof d.pending_otel_spans=="number"?d.pending_otel_spans:0;return{check:{name:"telemetry",status:_.length===0?"ok":"warn",ok:_.length===0,details:{enabled:e.telemetry.enabled,capture_level:e.telemetry.capture_level,endpoint:f,global_pm_root:n,queue_path:r,queue_exists:s,queue_entries:c.validEntries,queue_draining:nA(h,_),queue_invalid_rows:c.invalidRows,queue_rows_total:c.totalRows,queue_size_bytes:a,queue_high_retry_entries:c.highRetryEntries,queue_high_retry_threshold:Ah,queue_max_attempts:c.maxAttempts,runtime_state_path:i,last_attempted_flush_at:d.last_attempted_flush_at??null,last_successful_flush_at:d.last_successful_flush_at??null,last_failed_flush_at:d.last_failed_flush_at??null,last_failed_flush_error:d.last_failed_flush_error??null,pending_otel_spans:w,last_otel_attempt_at:d.last_otel_attempt_at??null,last_otel_success_at:d.last_otel_success_at??null,last_otel_failure_at:d.last_otel_failure_at??null,last_otel_failure_error:d.last_otel_failure_error??null,endpoint_probe:p??{attempted:!1},env_overrides:eA()}},warnings:_}}async function iA(e){let t;try{t=await wm(e)}catch(r){let i=r instanceof Error?r.message:String(r);return{check:{name:"locks",status:"warn",ok:!1,details:{active_lock_count:0,stale_lock_count:0,unreadable_lock_count:0,unparseable_lock_count:0,scan_failed:!0,error:i,pm_root:e}},warnings:[`locks_scan_failed:${i}`]}}let n=[];return t.stale_lock_count>0&&n.push(`locks_stale_count:${t.stale_lock_count}`),t.unreadable_lock_count>0&&n.push(`locks_unreadable:${t.unreadable_lock_count}`),{check:{name:"locks",status:n.length===0?"ok":"warn",ok:n.length===0,details:{active_lock_count:t.active_lock_count,stale_lock_count:t.stale_lock_count,unreadable_lock_count:t.unreadable_lock_count,unparseable_lock_count:t.unparseable_lock_count}},warnings:n}}async function oA(e){let t="metadata",n=e.items,r=await qt(e.pmRoot,n,{cacheHitVerification:t}),i=[...new Set([...r.hashMismatches,...r.chainMismatches,...r.versionSkews])].sort((w,v)=>w.localeCompare(v)),o=[],s=[];if(i.length>0){n=await Ht(e.pmRoot,e.settings.item_format,e.typeRegistry.type_to_folder,e.itemReadWarnings,e.settings.schema,{forceSourceScan:!0}),r=await qt(e.pmRoot,n),o=[...new Set([...r.hashMismatches,...r.chainMismatches,...r.versionSkews])].sort((v,k)=>v.localeCompare(k));let w=new Set(o);s=i.filter(v=>!w.has(v))}let{missingStreams:a,unreadableStreams:c,hashMismatches:l,chainMismatches:d,versionSkews:u,driftedItems:m,workspaceStateMismatches:f,workspaceStateMissing:p,workspaceStateUnreadable:_}=r,h=[...a.map(w=>`history_drift_missing_stream:${w}`),...c.map(w=>`history_drift_unreadable_stream:${w}`),...l.map(w=>`history_drift_hash_mismatch:${w}`),...d.map(w=>`history_drift_chain_mismatch:${w}`),...u.map(w=>`history_drift_version_skew:${w}`),...f.map(w=>`history_drift_workspace_state_mismatch:${w}`),...p.map(w=>`history_drift_workspace_state_missing:${w}`),..._.map(w=>`history_drift_workspace_state_unreadable:${w}`)];return{check:{name:"history_drift",status:h.length===0?"ok":"warn",ok:h.length===0,details:{checked_items:n.length,cache_hit_verification:i.length>0?"metadata_then_content_hash":t,cache_confirmation:{triggered:i.length>0,reason:i.length>0?"cached_corruption_candidate":null,candidate_items:i,confirmed_items:o,resolved_false_positive_items:s,authoritative_item_source:i.length>0},drifted_items:m,counts:{drifted:m.length,missing_streams:a.length,unreadable_streams:c.length,hash_mismatches:l.length,chain_mismatches:d.length,version_skews:u.length,workspace_state_mismatches:f.length,workspace_state_missing:p.length,workspace_state_unreadable:_.length},missing_streams:a,unreadable_streams:c,hash_mismatches:l,chain_mismatches:d,version_skews:u,workspace_state_mismatches:f,workspace_state_missing:p,workspace_state_unreadable:_}},warnings:h}}function sA(e,t){let n=pi(e),r=Zn(n.settings),i=_i(n.settings,t),o=r.active?Wt(r.active.name,r.active.model):null;return{runtimeDefaults:n,providerResolution:r,vectorStoreResolution:i,runtimeEmbeddingIdentity:o,semanticRuntimeAvailable:!!(r.active&&i.active)}}function aA(){return{refreshed:[],skipped:[],warnings:[]}}async function cA(e){return!e.refreshPolicy.enabled||!e.snapshot.semanticRuntimeAvailable||e.staleBefore.length===0?aA():Ud(e.pmRoot,e.staleBefore,{settings:e.snapshot.runtimeDefaults.settings,apply_runtime_defaults:!1})}function lA(e){return e.strictVectorizationWarnings&&e.semanticRuntimeAvailable&&!!(e.ledgerBefore.embedding&&e.runtimeEmbeddingIdentity&&gn(e.ledgerBefore.embedding,e.runtimeEmbeddingIdentity))}function dA(e){let t=new Set([...e.ledgerBefore.warnings,...e.ledgerAfter.warnings]);if(e.strictVectorizationWarnings)for(let n of e.refreshResult.warnings)t.add(n);return e.embeddingIdentityChanged&&t.add("vectorization_embedding_identity_changed"),e.strictVectorizationWarnings&&e.semanticRuntimeAvailable&&e.staleAfter.length>0&&t.add(`vectorization_stale_items_remaining:${e.staleAfter.length}`),[...t].sort((n,r)=>n.localeCompare(r))}function uA(e,t,n){return e.enabled&&t&&n.length>0?null:e.enabled?t?"no_stale_items":"semantic_runtime_unavailable":"refresh_disabled"}function Ph(e,t){let n=t.providerResolution.active?.name??null,r=t.vectorStoreResolution.active?.name??null;return{provider_active:n,provider_configured:typeof e.search?.provider=="string"?e.search.provider:null,provider_source:rs(n,e.search?.provider??null),vector_store_active:r,vector_store_configured:typeof e.vector_store?.adapter=="string"?e.vector_store.adapter:null,vector_store_source:rs(r,e.vector_store?.adapter??null)}}function mA(e){return{enabled:e.enabled,check_only:e.checkOnly,no_refresh:e.noRefresh,refresh_vectors:e.refreshVectors}}function fA(e,t,n){return e.enabled&&n.length>0&&t}async function pA(e,t,n,r,i){let o=sA(t,e),s=await yn(e),a=o.semanticRuntimeAvailable?cs(n,s.entries):[],c=await cA({pmRoot:e,snapshot:o,refreshPolicy:r,staleBefore:a}),l=await yn(e),d=o.semanticRuntimeAvailable?cs(n,l.entries):[],u=!o.runtimeDefaults.auto_ollama_defaults_applied,m=lA({strictVectorizationWarnings:u,semanticRuntimeAvailable:o.semanticRuntimeAvailable,ledgerBefore:s,runtimeEmbeddingIdentity:o.runtimeEmbeddingIdentity}),f=dA({ledgerBefore:s,ledgerAfter:l,refreshResult:c,strictVectorizationWarnings:u,semanticRuntimeAvailable:o.semanticRuntimeAvailable,embeddingIdentityChanged:m,staleAfter:d}),p=qa(a,i),_=qa(d,i),h=fA(r,o.semanticRuntimeAvailable,a);return{check:{name:"vectorization",status:f.length===0?"ok":"warn",ok:f.length===0,details:{semantic_runtime_available:o.semanticRuntimeAvailable,compatibility_mode_auto_defaults:o.runtimeDefaults.auto_ollama_defaults_applied,auto_ollama_defaults_applied:o.runtimeDefaults.auto_ollama_defaults_applied,auto_ollama_defaults_skipped_reason:o.runtimeDefaults.auto_ollama_defaults_skipped_reason??null,auto_ollama_defaults_remediation:o.runtimeDefaults.auto_ollama_defaults_remediation??null,refresh_policy:mA(r),...Ph(t,o),embedding_identity_changed:m,embedding_identity_before:s.embedding??null,embedding_identity_runtime:o.runtimeEmbeddingIdentity??null,items:n.length,ledger_entries_before:Object.keys(s.entries).length,stale_items_detail_mode:i?"full":"summary",stale_items_summary_limit:Ih,stale_items_before_total:p.total,stale_items_before:p.values,stale_items_before_truncated:p.truncated,refresh_attempted:h,refresh_skipped_reason:uA(r,o.semanticRuntimeAvailable,a),refresh_result:c,ledger_entries_after:Object.keys(l.entries).length,stale_items_after_total:_.total,stale_items_after:_.values,stale_items_after_truncated:_.truncated}},warnings:f}}function hA(e){let t=[];return e.id_prefix.trim().length===0&&t.push("settings:id_prefix_empty"),e.locks.ttl_seconds<=0&&t.push("settings:locks_ttl_non_positive"),t}function Nh(e){let t=e.checkOnly===!0,n=e.refreshVectors===!0;if(n&&t)throw new y("--check-only cannot be combined with --refresh-vectors",g.USAGE);if(n&&e.noRefresh===!0)throw new y("--no-refresh cannot be combined with --refresh-vectors",g.USAGE);return{enabled:n,checkOnly:t,noRefresh:!n,refreshVectors:n}}var _A=new Set(["extensions","locks","search"]);function gA(e){let t=new Set(Wc.filter(i=>i.length>0)),n=new Set,r=new Set(Object.values(Gc));for(let i of e.folders)t.has(i)&&!r.has(i)||(t.delete(i),n.add(i));for(let i of _A)t.delete(i),n.add(i);return{requiredDirs:[...t].sort((i,o)=>i.localeCompare(o)),optionalDirs:[...n].sort((i,o)=>i.localeCompare(o)),optionalDirSet:n}}async function yA(e,t,n){let{requiredDirs:r,optionalDirs:i,optionalDirSet:o}=gA(t),s=[],a=[],c=[];for(let l of[...r,...i]){let d=ve.join(e,l);c.push(...await We({path:d,scope:"project"})),!await Ja(d)&&(o.has(l)?a.push(l):s.push(l))}return{requiredDirs:r,optionalDirs:i,missingRequiredDirs:s,missingOptionalDirs:a,missingDirs:n?[...s,...a]:[...s],hookWarnings:c}}function Lh(e){let t=e.checkOnly===!0&&e.brief!==!0&&e.summary!==!0&&e.full!==!0,n=(e.summary===!0||t)&&e.full!==!0,r=e.checkOnly===!0&&(e.brief===!0||e.summary===!0)&&e.full!==!0;return{summaryMode:n,skipIntegrity:(e.skipIntegrity===!0||r)&&e.full!==!0,skipDrift:(e.skipDrift===!0||r)&&e.full!==!0,skipVectors:(e.skipVectors===!0||r)&&e.full!==!0}}async function wA(e){return e.skipPolicy.skipDrift&&e.skipPolicy.skipVectors?ct(e.pmRoot,e.settings.item_format,e.typeRegistry.type_to_folder,e.itemReadWarnings,e.settings.schema):Ht(e.pmRoot,e.settings.item_format,e.typeRegistry.type_to_folder,e.itemReadWarnings,e.settings.schema)}function Ha(e){return{check:{name:e,status:"ok",ok:!0,details:{skipped:!0}},warnings:[]}}function vA(e,t,n){return{name:"settings",status:n.length===0?"ok":"warn",ok:n.length===0,details:{path:e,version:t.version,id_prefix:t.id_prefix,locks_ttl_seconds:t.locks.ttl_seconds,warnings:n}}}function bA(e,t){return{name:"directories",status:e.missingDirs.length===0?"ok":"warn",ok:e.missingDirs.length===0,details:{required:e.requiredDirs,optional:e.optionalDirs,missing_required:e.missingRequiredDirs,missing_optional:e.missingOptionalDirs,missing:e.missingDirs,strict_directories:t}}}function kA(e,t){return{name:"settings_values",status:e.length===0?"ok":"warn",ok:e.length===0,details:{warnings:e,...t.roleless_status_count>0?{lifecycle_status_roles:t}:{}}}}var Ka=e=>e.unknown_event_count??0,Ya=e=>e.actionable_unknown_event_count??Ka(e);function SA(e,t,n,r,i,o){let s=Ka(r),a=Ya(r),c=s>0,l=a>0,d=i.count>0;return{name:"storage",status:n.over_threshold.length===0&&n.orphaned.length===0&&!l&&!d?"ok":"warn",ok:n.over_threshold.length===0&&n.orphaned.length===0&&!l&&!d,details:{items:e.length,history_streams:n.count,tombstones:{retention_policy:"retain_append_only",gc_enabled:!1,count:n.tombstones.length,ids:n.tombstones.slice(0,25),truncated:n.tombstones.length>25},orphaned_history_streams:{count:n.orphaned.length,ids:n.orphaned.slice(0,25),truncated:n.orphaned.length>25},...c?{author_attribution:r}:{},...d?{stale_in_progress:i}:{},...o.outcomes.length>0?{provenance_resolver_outcomes:o.outcomes}:{},...o.invalid_values.length>0?{provenance_invalid_values:o.invalid_values}:{},provenance_sample:o.sample,...n.max_entries!==null?{compact_policy:{enabled:t.history.compact_policy.enabled,max_entries:n.max_entries,trigger:t.history.compact_policy.trigger,over_threshold_count:n.over_threshold.length,over_threshold:n.over_threshold}}:{}}}}function Mh(e){let t=e.count===0?[]:[`stale_in_progress_items:${e.count}`];return{scan:e,warnings:t}}function EA(e){let t=[...e.directoryState.missingDirs.map(n=>`missing_directory:${n}`),...e.normalizedSettingsReadWarnings,...e.settingWarnings,...e.normalizedItemReadWarnings,...e.telemetryCheck.warnings,...e.extensionCheck.warnings,...e.historyPolicyWarnings,...e.historySummary.warnings,...e.authorAttributionWarnings,...e.staleInProgressWarnings,...e.provenanceWarnings,...e.locksCheck.warnings,...e.integrityCheck.warnings,...e.historyDriftCheck.warnings,...e.vectorizationCheck.warnings,...e.directoryState.hookWarnings];return[...new Set(t)]}function xA(e){let t=e.check.details.counts;return typeof t?.drifted=="number"?t.drifted:0}function IA(e){return{settings:e.normalizedSettingsReadWarnings,directories:e.directoryState.missingDirs.map(t=>`missing_directory:${t}`).concat(e.directoryState.hookWarnings),settings_values:e.settingWarnings,telemetry:e.telemetryCheck.warnings,extensions:e.extensionCheck.warnings,storage:[...e.historyPolicyWarnings,...e.historySummary.warnings,...e.authorAttributionWarnings,...e.staleInProgressWarnings,...e.provenanceWarnings],locks:e.locksCheck.warnings,integrity:[...e.normalizedItemReadWarnings,...e.integrityCheck.warnings],history_drift:e.historyDriftCheck.warnings,vectorization:e.vectorizationCheck.warnings}}function jh(e){let t=new Map;for(let[i,o]of Object.entries(e.remediationSources))for(let s of o)t.has(s)||t.set(s,i);let n=new Map(e.checks.map(i=>[i.name,i]));return e.warnings.map(i=>{let o=t.get(i)??"integrity",s=$s(i)?.code??Va(i),a=n.get(o)?.details,c=typeof a?.remediation_map=="object"&&a.remediation_map!==null?a.remediation_map:{},l=s==="agent_guidance_outdated"?"pm init --agent-guidance add":s==="agent_guidance_unreadable"?"Check AGENTS.md and CLAUDE.md read permissions and file types, then retry pm health.":c[s],d=Ba(i,e.requireMergeDrivers)?"advisory":"gate_failing";return{warning:i,code:s,check:o,severity:d,...typeof l=="string"?{remediation:l}:d==="gate_failing"?{disposition:"no_safe_automatic_remediation"}:{}}})}function AA(e){if(e.check.name==="history_drift"&&e.historyDriftedCount>1)for(let t of Object.keys(e.remediationMap))t!=="history_drift_merge_receipt"&&t!=="history_drift_version_skew"&&(e.remediationMap[t]="pm history-repair --all");if(e.check.name==="storage"&&e.overThresholdCount>1)for(let t of Object.keys(e.remediationMap))e.remediationMap[t]="pm history-compact --all-streams"}function RA(e){for(let t of e.checks){let n=Os(e.remediationSources[t.name]);AA({check:t,remediationMap:n,historyDriftedCount:e.historyDriftedCount,overThresholdCount:e.overThresholdCount}),Object.keys(n).length>0&&(t.details={...t.details,remediation_map:n})}}async function CA(e){if(e.gitWorkspaceRoot===null||e.pendingMergeReceipts.length===0)return[];let t=e.historyDriftCheck.check.details,n=Array.isArray(t.hash_mismatches)?t.hash_mismatches.filter(s=>typeof s=="string"):[],r=new Set([t.missing_streams,t.unreadable_streams,t.chain_mismatches].flatMap(s=>Array.isArray(s)?s:[])),i=new Map;for(let s of e.pendingMergeReceipts){if(s.evidence_source!=="clone_local")continue;let a=i.get(s.item_id)??[];a.push(s),i.set(s.item_id,a)}let o=[];for(let s of n){if(r.has(s))continue;let a=i.get(s);if(!(!a||a.length===0))try{await Ua(s,{dryRun:!0,mergeReceiptProof:{gitWorkspaceRoot:e.gitWorkspaceRoot,receipts:a}},e.global),o.push(s)}catch{}}return[...new Set(o)].sort((s,a)=>s.localeCompare(a))}function TA(e,t){let n=new Set(t);e.warnings=[...e.warnings.filter(r=>r.startsWith("history_drift_hash_mismatch:")?!n.has(r.slice(r.indexOf(":")+1)):!0),...t.map(r=>`history_drift_merge_receipt:${r}`)].sort((r,i)=>r.localeCompare(i)),e.check.details={...e.check.details,merge_receipt_attributed_items:t}}function Fh(e,t,n){let r=e.warning_count??e.warnings.length,i={...e,warning_count:r,warning_limit:en,warnings_truncated:r>en,warnings:e.warnings.slice(0,en),findings:(e.findings??[]).filter(s=>e.warnings.slice(0,en).includes(s.warning)||e.failed_because.includes(s.warning))},o=n?qI(i):t.brief===!0?GI(i):i;return{...o,warning_count:r,warning_limit:en,warnings_truncated:r>o.warnings.length,...o.projection?{projection:{...o.projection,warning_count:r,warnings_truncated:r>o.warnings.length}}:{}}}async function Uh(e,t={}){let n=N(process.cwd(),e.path);await ne(n);let r=Lt(n),{settings:i,warnings:o}=await cd(n),s=[...new Set(o)],a=G(i,H()),c=t.strictDirectories===!0,l=t.strictExit===!0||t.failOnWarn===!0,d=t.requireMergeDrivers===!0||l,u=Nh(t),m=await yA(n,a,c),f=hA(i),p=await rA(i,{checkTelemetry:t.checkTelemetry===!0}),_=await FI(n,i,!!e.noExtensions),h=Lh(t),w=[],v=await wA({pmRoot:n,settings:i,typeRegistry:a,skipPolicy:h,itemReadWarnings:w}),k=v,S=Oi(_e(i.schema),v),R=[...(await mm({pm_root:n,cwd:process.cwd(),mode:"status",interactive:!1,settings:i}).catch(()=>({warnings:["agent_guidance_unreadable:AGENTS.md,CLAUDE.md"]}))).warnings.filter(pe=>pe.startsWith("agent_guidance_")),...f,...Di(S)],E=h.skipDrift?{warnings:[]}:await gd({pmRoot:n,settings:i,itemIds:v.map(pe=>pe.id),commandLabel:"health"}),b=await RI(n,i.history.compact_policy,await II(n)),j=await sr(n,20,t.verboseAuthorEvents===!0),I=Ya(j),F=I>0?[`history_unknown_author_events:${I}`]:[],P=Mh(await Hd(n,v,{in_progress_status:i.schema.workflow.in_progress_status,threshold_hours:i.mutation_guard.stale_in_progress_hours})),ee=await tm(n),Ue=ee.warnings,ye=await iA(n),ze=h.skipIntegrity&&!d?{...Ha("integrity"),gitWorkspaceRoot:null,pendingMergeReceipts:[]}:await OI(n,a.type_to_folder,i.schema,i,d,v),He=h.skipDrift?Ha("history_drift"):await oA({pmRoot:n,items:k,settings:i,typeRegistry:a,itemReadWarnings:w}),nn=[...new Set(w)],W=await CA({gitWorkspaceRoot:ze.gitWorkspaceRoot,pendingMergeReceipts:ze.pendingMergeReceipts,historyDriftCheck:He,global:e});TA(He,W);let J=h.skipVectors?Ha("vectorization"):await pA(n,i,k,u,t.verboseStaleItems===!0),qn=[vA(r,i,s),bA(m,c),kA(R,S),p.check,_.check,SA(v,i,b,j,P.scan,ee),ye.check,ze.check,He.check,J.check],Bn=EA({directoryState:m,normalizedSettingsReadWarnings:s,settingWarnings:R,normalizedItemReadWarnings:nn,telemetryCheck:p,extensionCheck:_,historyPolicyWarnings:E.warnings,historySummary:b,authorAttributionWarnings:F,staleInProgressWarnings:P.warnings,provenanceWarnings:Ue,locksCheck:ye,integrityCheck:ze,historyDriftCheck:He,vectorizationCheck:J}),jc=IA({directoryState:m,normalizedSettingsReadWarnings:s,settingWarnings:R,normalizedItemReadWarnings:nn,telemetryCheck:p,extensionCheck:_,historyPolicyWarnings:E.warnings,historySummary:b,authorAttributionWarnings:F,staleInProgressWarnings:P.warnings,provenanceWarnings:Ue,locksCheck:ye,integrityCheck:ze,historyDriftCheck:He,vectorizationCheck:J});RA({checks:qn,remediationSources:jc,historyDriftedCount:xA(He),overThresholdCount:b.over_threshold.length});let No=Bn.filter(pe=>!Ba(pe,d)),Lo=jh({warnings:Bn,checks:qn,remediationSources:jc,requireMergeDrivers:d}),Lg=new Set(Lo.filter(pe=>pe.severity==="gate_failing").map(pe=>pe.check)),Mg=new Set(Lo.map(pe=>pe.check));for(let pe of qn)pe.ok=!Lg.has(pe.name),Mg.has(pe.name)&&(pe.status="warn");let jg={ok:No.length===0,verdict:{authority:"ok",...l?{strict_exit:!0}:{},...d?{require_merge_drivers:!0}:{},exit_code:l&&No.length>0?g.GENERIC_FAILURE:0},checks:qn,warnings:Bn,findings:Lo,failed_because:No,generated_at:T()};return Fh(jg,t,h.summaryMode)}var wU={buildHierarchyIntegrityWarnings:Ch,buildExtensionHealthTriageSummary:Th,buildHealthFindings:jh,buildCapabilityContractMetadata:Er,buildStaleInProgressHealthSummary:Mh,buildVectorizationProviderDetails:Ph,collectUnknownCapabilityGuidance:Sr,isAdvisoryHealthWarning:Ba,isDirectory:Ja,isExpectedUnmanagedExtension:Wa,listItemDocumentPaths:Rh,normalizeEndpointForDisplay:_o,normalizeExtensionNameForMatch:Mn,parseTelemetryQueue:Oh,probeTelemetryEndpointHealth:Dh,projectHealthResult:Fh,resolveActionableUnknownAuthorEventCount:Ya,resolveHealthSkipPolicy:Lh,resolveUnknownAuthorEventCount:Ka,resolveVectorRefreshPolicy:Nh,selectStaleItemDetail:qa,summarizeHealthCheckDetails:$h,summarizeExtensionList:po,summarizeRecordList:ot,summarizeStringList:B,telemetryEnvFlagEnabled:ho,warningCode:Va};(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]="1e1d8d86-3f4e-50eb-ae73-ca7c030f7c0a")}catch{}})();function zh(e,t,n){if(!n.has(t.metadata.status))return{reason:"not_terminal"};if(e.length===0)return{reason:"missing_history"};if(!Yd(e,t).ok)return{reason:"unverified_history"};let r=td(),i={reason:"no_proven_transition"};for(let[o,s]of e.entries()){let a=n.has(String(r.metadata.status));r=wd(r,s.patch,o+1,s.op),n.has(String(r.metadata.status))?a||(i=["create","close","cancel","update","update_audit"].includes(s.op)&&Et(s.ts)?{timestamp:s.ts,source_index:o+1}:{reason:"no_proven_transition"}):i={reason:"no_proven_transition"}}return i}function Hh(e){return new Set([...e.terminal_statuses,...[...e.alias_to_id].filter(([,t])=>e.terminal_statuses.has(t)).map(([t])=>t)])}async function Wh(e,t,n,r,i){let o=Hh(n),s=t.filter(l=>o.has(l.status)&&!l.closed_at),a=[],c=[];for(let l of r?s:[]){let d;try{let u=await Ut(Mt(e,l.id),l.id),{body:m,...f}=l;d=zh(u,{metadata:f,body:m},o)}catch{c.push({id:l.id,reason:"unreadable_history"});continue}if("reason"in d){c.push({id:l.id,reason:d.reason});continue}a.push({item_id:l.id,check:"metadata",field:"closed_at",kind:"set_closed_at",value:d.timestamp,gate:"timestamps",command:"pm validate --check-metadata --auto-fix --fix-scope timestamps"})}return{details:{missing_closed_at_count:s.length,missing_closed_at_item_ids:s.slice(0,i).map(l=>l.id),missing_closed_at_item_ids_truncated:s.length>i,closure_history_inspected:r,closure_timestamp_derivable_count:a.length,closure_timestamp_residual_count:c.length,closure_timestamp_residual:c.slice(0,i),closure_timestamp_residual_truncated:c.length>i,...s.length>0?{closure_timestamp_fix_hint:"pm validate --check-metadata --auto-fix --fix-scope timestamps --dry-run"}:{}},fixes:a,warnings:s.length>0?[`validate_metadata_missing_closed_at:${s.length}`]:[]}}async function Gh(e,t){let n=N(process.cwd(),t.path),r=await $(n),i=_e(r.schema);await lt({pmRoot:n,settings:r,id:e.item_id,op:"update",author:q(t.author,r.author_default),message:"Backfill closed_at from verified lifecycle history",skipNoop:!0,async mutate(o){if(o.metadata.closed_at)return{changedFields:[]};let s=await Ut(Mt(n,o.metadata.id),o.metadata.id),a=Hh(i),c=zh(s,o,a);if(!("timestamp"in c)||c.timestamp!==e.value)throw new y("Closure timestamp evidence changed or cannot be verified; rerun the timestamp repair preview.",g.GENERIC_FAILURE);return o.metadata.closed_at=c.timestamp,{changedFields:["closed_at"]}}})}(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]="e2cd8850-491a-505c-8709-3dcdb758de75")}catch{}})();function $A(e,t){return e==="malformed"||t==="malformed"?"malformed":e==="moved"||t==="moved"?"moved":"deleted"}function qh(e){return`${e.item_id} ${e.link_kind}`}function Bh(e,t){let n=new Map;for(let r of e){let i=n.get(r.path);i?(i.classification=$A(i.classification,r.classification),i.owners.set(qh(r),r)):n.set(r.path,{classification:r.classification,owners:new Map([[qh(r),r]])})}return[...n.entries()].sort(([r],[i])=>r.localeCompare(i)).map(([r,i])=>({path:r,classification:i.classification,items:[...i.owners.values()].map(o=>{let s=t(o.item_id);return{id:o.item_id,type:s?.type??"Unknown",title:s?.title??"",status:s?.status??"",field:o.link_kind}}).sort((o,s)=>{let a=o.id.localeCompare(s.id);return a!==0?a:o.field.localeCompare(s.field)})}))}(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]="ccb0d064-940b-5e14-ae63-2803aced4ee7")}catch{}})();function Vh(e,t,n,r,i=40){let o=i===1/0?1/0:Number.isFinite(i)?Math.max(0,Math.floor(i)):40,s=new Map(t.map(l=>[l.path,l])),a={missing_linked_path_rows_count:0,missing_linked_path_rows:[],missing_linked_path_rows_truncated:!1,missing_linked_links_count:0,active_missing_linked_links_count:0,legacy_closed_missing_linked_links_count:0,legacy_terminal_missing_linked_links_count:0,active_missing_linked_paths_count:0},c=Bh(e,n).map(l=>{let d=[],u=[];for(let f of l.items){let p=ri(f.status,r)??f.status;r.terminal_statuses.has(p)?(u.push(f),p===r.close_status&&(a.legacy_closed_missing_linked_links_count+=1)):d.push(f)}a.missing_linked_links_count+=l.items.length,a.active_missing_linked_links_count+=d.length,a.legacy_terminal_missing_linked_links_count+=u.length,d.length>0&&(a.active_missing_linked_paths_count+=1);let m=s.get(l.path);return{...l,candidates:m?.candidates??[],candidates_truncated:m?.candidates_truncated??!1,link_count:l.items.length,active_link_count:d.length,items:[...d,...u].slice(0,o),items_truncated:l.items.length>o}});return c.sort((l,d)=>+(d.active_link_count>0)-+(l.active_link_count>0)||l.path.localeCompare(d.path)),a.missing_linked_path_rows_count=c.length,a.missing_linked_path_rows=c.slice(0,o),a.missing_linked_path_rows_truncated=c.length>o,a}import jn from"node:fs/promises";import Fn 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]="9bcae2f2-3739-5ef8-b080-daaaf7df2681")}catch{}})();async function OA(e,t){let n=[...new Set(Object.values(t))],r=[];return await Promise.all(n.map(async i=>{let o;try{o=await jn.readdir(Fn.join(e,i))}catch{return}for(let s of o)for(let a of Jn)if(s.toLowerCase().endsWith(a)){r.push({relativePath:`${i}/${s}`,id:s.slice(0,-a.length)});break}})),r.sort((i,o)=>i.relativePath.localeCompare(o.relativePath))}function DA(e,t){let{id:n,relativePath:r,liveItemIds:i,out:o}=e,s=De(t);if(s){o.conflictMarkers.push({id:n,path:r,line:s.line,detail:`unresolved merge conflict marker ${s.marker}`});return}let a=PA(e,t);a!==null&&(a.op==="delete"&&i.has(n)&&o.resurrected.push({id:n,deleted_at:typeof a.ts=="string"?a.ts:"",deleted_by:typeof a.author=="string"?a.author:""}),a.op==="history_repair"&&Array.isArray(a.patch)&&a.patch.length>0&&(o.repairReconciliations+=1))}function PA(e,t){let{id:n,relativePath:r,out:i}=e,o=null,s=!1,a=t.split(/\r?\n/).map((c,l)=>({content:c.trim(),number:l+1})).filter(c=>c.content.length>0);for(let c of a){try{let l=JSON.parse(c.content);if(typeof l!="object"||l===null||Array.isArray(l))throw new TypeError("history entry must be an object");o=l}catch{return i.unparseable.push({id:n,path:r,line:c.number,detail:"history line is not a valid JSON object"}),null}if(o.op==="create"){if(s)return i.unparseable.push({id:n,path:r,line:c.number,detail:"duplicate item identity: more than one create event in one history stream"}),null;s=!0}}return o}function Xa(e,t){let n=typeof t=="object"&&t!==null&&"code"in t&&typeof t.code=="string"?t.code:"UNKNOWN";return`${e} could not be read (error code: ${n})`}async function NA(e,t){let n={conflictMarkers:[],unparseable:[],resurrected:[],repairReconciliations:0,scanned:0},r;try{r=await jn.readdir(Fn.join(e,"history"))}catch{return n}for(let i of r.sort((o,s)=>o.localeCompare(s))){if(!i.endsWith(".jsonl"))continue;n.scanned+=1;let o;try{o=await jn.readFile(Fn.join(e,"history",i),"utf8")}catch(s){n.unparseable.push({id:i.slice(0,-6),path:`history/${i}`,detail:Xa("history stream",s)});continue}DA({id:i.slice(0,-6),relativePath:`history/${i}`,liveItemIds:t,out:n},o)}return n}function Jh(e){let t=De(e);if(t)return`unresolved merge conflict marker ${t.marker} at line ${t.line}`;try{return JSON.parse(e),null}catch(n){return`invalid JSON (${String(n)})`}}async function LA(e){let t=[],n=0,r=null;try{r=await V(Lt(e))}catch(o){n+=1,t.push({path:"settings.json",detail:Xa("configuration file",o)})}if(r!==null){n+=1;let o=Jh(r);o!==null&&t.push({path:"settings.json",detail:o})}let i;try{i=await jn.readdir(Fn.join(e,"schema"))}catch{return{scanned:n,unparseable:t}}for(let o of i.sort((s,a)=>s.localeCompare(a))){if(!o.endsWith(".json"))continue;n+=1;let s;try{s=await jn.readFile(Fn.join(e,"schema",o),"utf8")}catch(c){t.push({path:`schema/${o}`,detail:Xa("configuration file",c)});continue}let a=Jh(s);a!==null&&t.push({path:`schema/${o}`,detail:a})}return{scanned:n,unparseable:t}}async function Kh(e,t,n,r={}){let i=await OA(e,n),o=new Set(i.map(u=>u.id)),s=new Map;for(let u of i){let m=s.get(u.id);m===void 0?s.set(u.id,[u.relativePath]):m.push(u.relativePath)}let a=[...s.entries()].filter(([,u])=>u.length>1).map(([u,m])=>({id:u,paths:[...m].sort((f,p)=>f.localeCompare(p))})).sort((u,m)=>u.id.localeCompare(m.id)),c=(await Promise.all(i.map(async u=>{if(!t.has(u.id))return{path:u.relativePath,id:u.id};try{let m=Fn.join(e,u.relativePath);return xt(await jn.readFile(m,"utf8"),{format:m.toLowerCase().endsWith(".md")?"json_markdown":"toon",schema:r.schema,extensionFieldNames:r.extensionFieldNames}),null}catch{return{path:u.relativePath,id:u.id}}}))).filter(u=>u!==null),l=await NA(e,o),d=await LA(e);return{item_files_on_disk:i.length,item_ids_on_disk:o.size,parsed_items:t.size,unreadable_item_files:c,duplicate_item_ids:a,history_streams_scanned:l.scanned,history_conflict_marker_streams:l.conflictMarkers,history_unparseable_streams:l.unparseable,resurrected_items:l.resurrected,history_repair_reconciliations:l.repairReconciliations,config_files_scanned:d.scanned,unparseable_config_files:d.unparseable}}import Sc from"node:fs/promises";import{realpathSync as JR}from"node:fs";import{execFile as KR}from"node:child_process";import be from"node:path";import{promisify as YR}from"node:util";(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]="c1b189d7-2939-5891-b936-5f208dc8f5ff")}catch{}})();var MA=["metadata","resolution"],Za=["metadata","resolution","estimates","timestamps","lifecycle"],jA="completed";function Qa(e){return`"${e.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`}function Yh(e){let t=e?.trim();return t!==void 0&&t.length>0?t:void 0}function Xh(e){let t=[];for(let n of e){if(!n.missing_fields.includes("resolution"))continue;let r=Yh(n.close_reason)??jA;t.push({item_id:n.id,check:"resolution",field:"resolution",kind:"set_resolution",value:r,command:`pm update ${n.id} --resolution ${Qa(r)}`,gate:"resolution"})}return t}function Zh(e){let t=[];for(let n of e){let r=Yh(n.resolution);r!==void 0&&t.push({item_id:n.id,check:"metadata",field:"close_reason",kind:"set_close_reason",value:r,command:`pm update ${n.id} --close-reason ${Qa(r)}`,gate:"metadata"})}return t}function Qh(e,t){return e.map(n=>{let r=ad(n.type,t);return{item_id:n.id,check:"metadata",field:"estimated_minutes",kind:"set_estimate",value:String(r),command:`pm update ${n.id} --estimate ${r}`,gate:"estimates"}})}function e_(e){return e.map(t=>t.grandparent_id!==void 0&&t.grandparent_active===!0?{item_id:t.id,check:"lifecycle",field:"parent",kind:"reparent",parent_id:t.grandparent_id,command:`pm update ${t.id} --parent ${t.grandparent_id}`,gate:"lifecycle"}:{item_id:t.id,check:"lifecycle",field:"parent",kind:"unset_parent",command:`pm update ${t.id} --unset parent`,gate:"lifecycle"})}function t_(e){let t=[];for(let n of e){if(n.classification!=="deleted")continue;let r=n.link_kind==="files"?"files":"docs";t.push({item_id:n.item_id,check:"files",field:n.link_kind,kind:n.link_kind==="files"?"prune_file_link":"prune_doc_link",path:n.path,command:`pm ${r} ${n.item_id} --remove ${Qa(n.path)}`})}return t}function n_(e){let t=(e??[]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);if(t.length===0){if(e!==void 0&&e.length>0)throw new y(`--fix-scope values must not be empty. Supported values: ${Za.join(", ")}.`,g.USAGE);return new Set(MA)}let n=new Set;for(let r of t){let i=r.toLowerCase().replaceAll("-","_");if(Za.includes(i)){n.add(i);continue}throw new y(`Unknown --fix-scope value "${r}". Supported values: ${Za.join(", ")}.`,g.USAGE)}return n}function r_(e,t){let n=[],r=[];for(let i of e)i.gate!==void 0&&!t.has(i.gate)?r.push(i):n.push(i);return{applicable:n,gated:r}}function $r(e){return{item_id:e.item_id,check:e.check,field:e.field,command:e.command,...e.gate!==void 0?{gate:e.gate}:{}}}(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]="3b09b58f-2ec7-523e-87f3-8d828deb8480")}catch{}})();var FA=/^([A-Z][A-Z0-9]*-\d+)\b/iu;function UA(e,t={}){if(typeof e!="string")return null;let n=e.trim();if(n.length===0)return null;let r=FA.exec(n);if(!r)return null;let i=r[1],o=i.toUpperCase(),s=i.slice(0,i.lastIndexOf("-")),a=new Set((t.configuredPrefixes??[]).map(m=>m.trim().replace(/-+$/u,"").toUpperCase())),c=n.slice(i.length),l=t.evidenceText?.toUpperCase()??"",d=l.includes(`ISSUE CODE: ${o}`)||l.includes(`ISSUE CODE \`${o}\``)||l.includes(`\`${o}\``)||l.includes(`[${o}]`);return s===s.toUpperCase()||/^\s*(?::|—|–|\])/u.test(c)||a.has(s.toUpperCase())||d?o:null}function i_(e){return typeof e=="string"&&e.trim().length>0}function zA(e){let t=new Set(e.map(a=>a.id.toLowerCase())),n=new Map,r=new Map;for(let a of e){let c=a.id.toLowerCase(),l=new Set([...a.parent===null?[]:[a.parent.toLowerCase()],...a.derivations].filter(d=>d!==c&&t.has(d)));n.set(c,l);for(let d of l){let u=r.get(d)??[];u.push(c),r.set(d,u)}}let o=[...[...n].filter(([,a])=>a.size===0).map(([a])=>a)],s=new Set;for(let a=0;a<o.length;a+=1)for(let c of r.get(o[a])??[]){let l=n.get(c);l.delete(o[a]),l.size===0&&(s.add(c),o.push(c))}return e.filter(a=>!s.has(a.id.toLowerCase()))}function o_(e,t={}){let n=new Map;for(let i of e){if(typeof i.title!="string"||i_(i.duplicate_of))continue;let o=UA(i.title,{...t,evidenceText:i.body});if(o===null)continue;let s=n.get(o);s||(s=[],n.set(o,s)),s.some(a=>a.id===i.id)||s.push({id:i.id,title:i.title,parent:i_(i.parent)?i.parent.trim():null,derivations:(i.dependencies??[]).filter(a=>["discovered_from","supersedes","incident_from"].includes(a.kind)).map(a=>a.id.trim().toLowerCase()).filter(a=>a!==i.id.toLowerCase())})}let r=[];for(let[i,o]of n){if(o.length<2)continue;let s=zA(o);if(s.length<2)continue;let a=[...s].sort((c,l)=>c.id.localeCompare(l.id));r.push({code:i,count:a.length,ids:a.map(c=>c.id),titles:a.map(c=>c.title)})}return r.sort((i,o)=>i.code.localeCompare(o.code))}(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]="b51a9fba-7bbe-573b-a708-5ffea6fa040f")}catch{}})();function s_(e){let t=new Map;for(let r of e){let i=t.get(r.item_type);i||(i=new Map,t.set(r.item_type,i)),i.set(r.field,(i.get(r.field)??0)+1)}let n={};for(let r of[...t.keys()].sort((i,o)=>i.localeCompare(o))){let i=t.get(r),o={};for(let s of[...i.keys()].sort((a,c)=>a.localeCompare(c)))o[s]=i.get(s);n[r]=o}return n}(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]="ede22770-cb10-5054-85a7-89bb2758c25f")}catch{}})();var a_=3;function c_(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?e:e.slice(t+1)}function l_(e,t,n=a_){let r=Number.isFinite(n)&&n>=1?Math.floor(n):a_,i=new Map;for(let o of t){let s=c_(o);if(s.length===0)continue;let a=i.get(s);a?a.push(o):i.set(s,[o])}return e.map(o=>{if(o.includes(",")||o.replace(/^[a-z]:[\\/]/i,"").includes(":"))return{path:o,classification:"malformed",candidates:[],candidates_truncated:!1};let s=(i.get(c_(o))??[]).filter(a=>a!==o).sort((a,c)=>a.localeCompare(c));return s.length===0?{path:o,classification:"deleted",candidates:[],candidates_truncated:!1}:{path:o,classification:"moved",candidates:s.slice(0,r),candidates_truncated:s.length>r}})}function d_(e){return e.map(t=>t.classification==="moved"?`${t.path}:moved:${t.candidates[0]}`:`${t.path}:${t.classification}`)}(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]="6f94fb3c-3d6c-5543-a2f0-e12680459e71")}catch{}})();var HA=/^[a-z][a-z0-9+.-]+:\/\//i;function Or(e){return HA.test(e.trim())}import WA from"node:fs/promises";import je from"node:path";import GA from"fast-glob";(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]="02743545-3a44-565d-932c-7fe736d17eb8")}catch{}})();var qA=["path","scope","note"],BA=["pattern","glob","path","scope","note"],VA=["path"],JA=["from","to"],KA=new Set(["note","scope"]);function m_(e){let t=e??"project";if(!Mo.includes(t))throw new y(`Invalid scope "${e}". Valid scopes: ${Mo.join(", ")} (default: project).`,g.USAGE);return t}function ec(e){if(e.startsWith("```")||e.includes(`
|
|
66
|
-
`)||/^(?:[-*+]\s+)?(?:path|scope|note)\s*[:=]/i.test(e))return!0;let t=e.indexOf(","),n=e.slice(0,t>=0?t:e.length),r=n.indexOf("=");return r>=0&&!/\s/u.test(e)&&(/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(e)||/^(?:[A-Za-z]:[\\/]|[\\/]{1,2}|\.\.?(?:[\\/]))/u.test(e)||[e.indexOf("/"),e.indexOf("\\")].some(i=>i>=0&&i<r))?!1:n.includes("=")||md(e)}function YA(e){let t=0;for(let n of e)if(n==="("&&(t+=1),n===")"&&(t-=1),t<0)return!1;return t===0}function XA(e){if(/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(e)&&!ec(e))return{path:e,scope:"project",note:void 0};let t=e.indexOf("](");if(e.startsWith("[")&&t>0&&e.endsWith(")")){let o=e.slice(t+2,-1).trim();if(o.length>0&&YA(o))return{path:o,scope:"project",note:e.slice(1,t).trim()||void 0}}let n=e.indexOf(",");if(n<0)return;let r=e.slice(0,n).trim(),i=e.slice(n+1).trim();if(!(r.length===0||!/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(i)))return{path:i,scope:"project",note:r}}function ZA(e,t){return e?e.flatMap(n=>{let r=n.trim();if(t==="doc"){let o=XA(r);if(o!==void 0)return[o]}fd(r,"--add",`${t} path`,ec(r));let i=ec(r)?Yn(n,"--add"):{path:r};if(Xn(i,"--add",qA),!i.path)throw new y(`--add requires path=<value> or a bare ${t} path`,g.USAGE);return[{path:i.path,scope:m_(i.scope),note:i.note?.trim()||void 0}]}):[]}function QA(e){return e?e.map(t=>{let n=t.trim();if(!n)throw new y("--add-glob requires a glob pattern value",g.USAGE);if(n.includes("=")||/^(?:[-*+]\s+)?(?:pattern|glob|path)\s*[:=]/i.test(n)||n.startsWith("```")){let r=Yn(n,"--add-glob");Xn(r,"--add-glob",BA);let i=r.pattern?.trim()||r.glob?.trim()||r.path?.trim();if(!i)throw new y("--add-glob key/value form requires pattern=<glob>",g.USAGE);return{pattern:i,scope:m_(r.scope),note:r.note?.trim()||void 0}}return{pattern:n,scope:"project"}}):[]}function eR(e){return e?e.map(t=>{let n=t.trim();if(!n)throw new y("--remove requires a path value",g.USAGE);if(n.includes("=")||/^(?:[-*+]\s+)?path\s*[:=]/i.test(n)||n.startsWith("```")){let r=Yn(n,"--remove"),i=Object.keys(r).filter(o=>KA.has(o.toLowerCase()));if(i.length>0)throw new y(`--remove identifies a linked artifact by path only and does not accept ${i.map(o=>`"${o}"`).join(", ")}. Pass just the path (path=<value>, path:<value>, or a bare path); record removal context with --message "<why removed>".`,g.USAGE);if(Xn(r,"--remove",VA),!r.path)throw new y("--remove key/value form requires path=<value>",g.USAGE);return r.path}return n}):[]}function tR(e){return e?e.map(t=>{let n=Yn(t,"--migrate");Xn(n,"--migrate",JA);let r=n.from?.trim(),i=n.to?.trim();if(!r||!i)throw new y("--migrate requires from=<value> and to=<value>",g.USAGE);return{from:r,to:i}}):[]}function Dr(e,t){let n=e;for(let r of t)n.startsWith(r.from)&&(n=`${r.to}${n.slice(r.from.length)}`);return n}function nR(e,t,n=[]){if(e.length===0||t.length===0)return;let r=new Set(e.map(o=>Dr(o.path,n))),i=[...new Set(t.map(o=>Dr(o,n)).filter(o=>r.has(o)))].sort((o,s)=>o.localeCompare(s));if(i.length!==0)throw new y(`Linked artifact mutation cannot add and remove the same normalized path in one transaction: ${i.join(", ")}. Split the replacement into separate commands so each history event has one unambiguous intent.`,g.USAGE,{code:"linked_artifact_mutation_conflict",reason:"same_path_added_and_removed",required:"Use distinct normalized paths for --add and --remove in one invocation.",why:"Conflicting batch intent cannot be applied deterministically without silently discarding metadata or a removal.",nextSteps:["Run the removal and addition as separate commands with a --message describing each intent."]})}function bt(e){return e.split(je.sep).join("/")}function tc(e,t,n=process.cwd()){let r=e.trim();if(Or(r))return r;if(je.isAbsolute(r)||/^[A-Za-z]:[\\/]/.test(r))return bt(r.replaceAll("\\",je.sep));let i=je.relative(t,n);return i.startsWith(`..${je.sep}`)||i===".."||je.isAbsolute(i)?bt(je.normalize(r)):bt(je.relative(t,je.resolve(n,r)))}async function rR(e,t=process.cwd(),n=process.cwd()){let r=[];for(let i of e){let o=je.isAbsolute(i.pattern),s=await GA(i.pattern,{cwd:n,absolute:o,onlyFiles:!0,dot:!0,unique:!0,followSymbolicLinks:!0}),a=[...new Set(s.map(c=>tc(c,t,n)))].sort((c,l)=>c.localeCompare(l));for(let c of a)r.push({path:c,scope:i.scope,note:i.note})}return r}function iR(e,t,n){if(t===void 0)return e;if(!n)throw new y("--note requires --add or --add-glob in the same invocation (the note annotates the links being added)",g.USAGE);let r=t.trim();return r.length===0?e:e.map(i=>i.note===void 0?{...i,note:r}:i)}function oR(e){return`${e.path}::${e.scope}`}function nc(e){return[...e].sort((t,n)=>{let r=t.path.localeCompare(n.path);return r!==0?r:t.scope.localeCompare(n.scope)})}function rc(e){return[...new Map(e.map(t=>[oR(t),t])).values()].map(t=>({...t,note:t.note?.trim()||void 0}))}async function sR(e,t=process.cwd()){let n=[...new Set(e)].sort((a,c)=>a.localeCompare(c)),r=[],i=[],o=[],s=[];for(let a of n){if(Or(a)){s.push(a.trim());continue}let c=je.isAbsolute(a)?a:je.resolve(t,a);try{(await WA.stat(c)).isFile()?r.push(a):o.push(a)}catch(l){if(typeof l=="object"&&l!==null&&"code"in l&&kt(l)){i.push(a);continue}o.push(a)}}return{checked:n.length,existing_files:r,missing_paths:i,non_file_paths:o,remote_references:s}}function aR(e,t,n,r){let i=0;for(let s=0;s<e.length;s+=1){let a=Dr(e[s].path,r);a!==e[s].path&&(e[s]={...e[s],path:a},i+=1)}return{adds:t.map(s=>{let a=Dr(s.path,r);return a!==s.path&&(i+=1),{...s,path:a}}),removes:n.map(s=>Dr(s,r)),count:i}}function cR(e,t,n,r){for(let o of t)e.some(s=>s.path===o.path&&s.scope===o.scope)||e.push(o);if(n.length>0)for(let o=e.length-1;o>=0;o-=1)n.includes(e[o].path)&&e.splice(o,1);let i=rc(e);return r?i:nc(i)}async function u_(e){let t=e.artifacts.map(n=>n.path);return{id:e.id,artifacts:e.artifacts,changed:e.changed,count:e.artifacts.length,migrations_applied:e.migrationsApplied&&e.migrationsApplied>0?e.migrationsApplied:void 0,validation:e.options.validatePaths||e.changed?await sR(t,e.workspaceRoot):void 0}}async function go(e,t,n,r){let{metadataKey:i}=r,o=_d(),s=N(process.cwd(),n.path),a=Je(s),c=process.cwd();await ne(s);let l=await $(s),d=G(l,H()),u=await o.resolveList(t.add,"--add"),m=await o.resolveList(t.addGlob,"--add-glob"),f=await o.resolveList(t.remove,"--remove"),p=await o.resolveList(t.migrate,"--migrate"),_=ZA(u,r.bareNoun).map(F=>({...F,path:tc(F.path,a,c)})),h=QA(m),w=await rR(h,a,c),v=iR([..._,...w],t.note,_.length>0||h.length>0),k=eR(f).map(F=>tc(F,a,c)),S=tR(p);if(nR(v,k,S),!(v.length>0||k.length>0||S.length>0)){let F=await Pe(s,e,l.id_prefix,l.item_format,d.type_to_folder);if(!F)throw new y(`Item ${e} not found`,g.NOT_FOUND);let ee=(await Ne(F,{schema:l.schema})).document.metadata[i]??[];return u_({id:F.id,artifacts:ee,changed:!1,options:t,workspaceRoot:a})}let R=q(t.author,l.author_default),E=await lt({pmRoot:s,settings:l,id:e,op:r.op,author:R,message:t.message,force:t.force,skipNoop:!0,mutate(F){let P=F.metadata,ee=P[i]??[],Ue=[...ee],ye=aR(Ue,v,k,S),ze=cR(Ue,ye.adds,ye.removes,r.supportsAppendStable&&t.appendStable===!0);ze.length>0?P[i]=ze:delete P[i];let He=!ol(ee,ze);return{changedFields:He?[i]:[],warnings:He&&ye.count>0?[`path_migrations_applied:${ye.count}`]:[]}}}),b=E.item[i]??[],j=E.warnings.find(F=>F.startsWith("path_migrations_applied:")),I=j?Number(j.slice(24)):0;return u_({id:E.item.id,artifacts:b,changed:E.changedFields.includes(i),migrationsApplied:I,options:t,workspaceRoot:a})}function yo(e,t){let n={};for(let[r,i]of Object.entries(e))n[r==="artifacts"?t:r]=i;return n}(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]="aef928ec-4a5b-5614-bb5c-cbf63f891845")}catch{}})();async function f_(e,t,n){let r=await go(e,t,n,{metadataKey:"docs",op:"docs_add",bareNoun:"doc",supportsAppendStable:!1});return yo(r,"docs")}import p_ from"node:fs/promises";import Fe 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]="573da024-c791-5ff2-b3ee-3529804bab43")}catch{}})();var lR=32768;function ic(e){return bt(Fe.normalize(e))}async function wo(e){try{return await p_.realpath(e)}catch{return Fe.resolve(e)}}function Un(e,t){let n=Fe.isAbsolute(e.path)?Fe.resolve(e.path):Fe.resolve(t,e.path);return`${ic(n)}::${e.scope}`}function vo(e,t,n){if(typeof e=="string"){let r=e.trim();r.length>0&&n.push({field:t,value:r});return}if(Array.isArray(e)){e.forEach((r,i)=>vo(r,`${t}[${i}]`,n));return}if(typeof e=="object"&&e!==null)for(let[r,i]of Object.entries(e))vo(i,t?`${t}.${r}`:r,n)}function dR(e){let t=[];return vo(e.metadata,"metadata",t),vo(e.body,"body",t),t}function uR(e){let t=e.trim();return t=t.replace(/^[`"'<([{]+/u,""),t=t.replace(/[`"'>)\]},;!?]+$/u,""),t=t.replace(/[.]+$/u,""),t=t.replace(/:(?:\d+)(?::\d+)?$/u,""),t=t.replace(/[.]+$/u,""),t}function mR(e){let t=[],n=/(?:[A-Za-z]:[\\/]|\/)[^\s"'`<>()[\]{},;]+/gu,r=/(?:\.{1,2}[\\/])?(?:(?:[A-Za-z0-9_.@-]+[\\/])+[A-Za-z0-9_.@-]+|[A-Za-z0-9_.@-]+\.[A-Za-z0-9][A-Za-z0-9._-]*)/gu;for(let i of e){let o=new Set,s=i.value.slice(0,lR);for(let[a,c]of[[n,i.value],[r,s]]){a.lastIndex=0;for(let l of c.matchAll(a)){let d=uR(l[0]);!d||o.has(d)||(o.add(d),t.push({field:i.field,value:d}))}}}return t}async function fR(e,t,n=t){let r=Fe.isAbsolute(e)?Fe.resolve(e):Fe.resolve(n,e),i;try{i=await p_.stat(r)}catch{return}if(!i.isFile())return;let[o,s]=await Promise.all([wo(t),wo(r)]);if(he(o,s)){let a=Fe.relative(o,s);return!a||a.startsWith("..")||Fe.isAbsolute(a)?void 0:{path:ic(a),scope:"project"}}return{path:ic(r),scope:"global"}}async function pR(e,t,n=t){let r=new Set((e.metadata.files??[]).map(c=>Un(c,t))),i=new Map,o=mR(dR(e)),s=new Map;await Promise.all([...new Set(o.map(c=>c.value))].map(async c=>{s.set(c,await fR(c,t,n))}));let a=o.map(c=>({reference:c,resolved:s.get(c.value)}));for(let{reference:c,resolved:l}of a){if(!l)continue;let d=Un(l,t),u=i.get(d)??{path:l.path,scope:l.scope,sourceFields:new Set,originalPaths:new Set,sourceCount:0};u.sourceFields.add(c.field),u.originalPaths.add(c.value),u.sourceCount+=1,i.set(d,u)}return[...i.entries()].map(([c,l])=>({path:l.path,scope:l.scope,status:r.has(c)?"already_linked":"addable",source_count:l.sourceCount,source_fields:[...l.sourceFields].sort((d,u)=>d.localeCompare(u)),original_paths:[...l.originalPaths].sort((d,u)=>d.localeCompare(u))})).sort((c,l)=>{let d=c.status.localeCompare(l.status);if(d!==0)return d;let u=c.path.localeCompare(l.path);return u!==0?u:c.scope.localeCompare(l.scope)})}async function h_(e,t,n){let r=await go(e,t,n,{metadataKey:"files",op:"files_add",bareNoun:"file",supportsAppendStable:!0});return yo(r,"files")}async function hR(e,t){let n=await wo(t),r=await Promise.all(e.map(async o=>{let s=o.trim();if(!s)throw new y("Files lookup paths must not be empty.",g.USAGE);if(!Fe.isAbsolute(s))return bt(s);let a=await wo(s);return he(n,a)?bt(Fe.relative(n,a)):bt(a)})),i=[...new Set(r)].sort((o,s)=>o.localeCompare(s));if(i.length===0)throw new y("Files lookup requires at least one path.",g.USAGE);return i}function _R(e){for(let[r,i]of[["limit",e.limit],["offset",e.offset]])if(i!==void 0&&(!Number.isInteger(i)||i<0))throw new y(`Files lookup ${r} must be a non-negative integer.`,g.USAGE);let{offset:t=0,limit:n=50}=e;return{offset:Math.max(0,Math.floor(t)),limit:e.noTruncate?void 0:Math.max(0,Math.floor(n))}}function __(e){return{id:e.id,title:e.title,type:e.type,status:e.status,priority:e.priority,updated_at:e.updated_at}}function g_(e,t){let n=e.item.priority-t.item.priority;if(n!==0)return n;let r=t.item.updated_at.localeCompare(e.item.updated_at);return r===0?e.item.id.localeCompare(t.item.id):r}function gR(e){return e.metadata.map(t=>({item:t,files:(t.files??[]).filter(n=>e.paths.includes(bt(n.path))&&(e.scope===void 0||n.scope===e.scope)).sort((n,r)=>{let i=n.path.localeCompare(r.path);return i===0?n.scope.localeCompare(r.scope):i})})).filter(t=>t.files.length>0).sort(g_)}async function yR(e){if(e.explain)return Uu({workspaceRoot:e.workspaceRoot,paths:e.paths,candidates:e.matching,corpus:e.metadata,...e.lineRange?{lineRange:e.lineRange}:{},...e.decisionDepth===void 0?{}:{decisionDepth:e.decisionDepth}})}async function wR(e){if([e.strictRead,e.noTruncate,e.explain,Dl()].includes(!0))return null;let t=await hi(e.pmRoot,[...new Set(Object.values(e.typeToFolder))]);return t?Id({pmRoot:e.pmRoot,expectedSourceCursor:t.source_cursor,paths:e.paths,scope:e.scope,limit:e.limit,offset:e.offset}):null}async function vR(e){let t=[],n=await _n(e.pmRoot,e.settings.item_format,e.typeToFolder,t,e.settings.schema),r=gR({metadata:n,paths:e.paths,scope:e.scope}),i=t.filter(c=>/^item_list_(?:item|directory)_read_failed:/u.test(c));if(e.strictRead&&i.length>0)throw new y(`Files lookup could not read every item: ${i.join("; ")}`,g.GENERIC_FAILURE);let o=await yR({explain:e.explain,workspaceRoot:e.workspaceRoot,paths:e.paths,matching:r,metadata:n,lineRange:e.lineRange,decisionDepth:e.decisionDepth}),a=(o?[...r].sort((c,l)=>{let d=o.explanations.get(l.item.id).score-o.explanations.get(c.item.id).score;return d!==0?d:g_(c,l)}):r).slice(e.offset,e.limit===void 0?void 0:e.offset+e.limit);return{paths:e.paths,total:r.length,count:a.length,offset:e.offset,limit:e.limit??null,has_more:e.offset+a.length<r.length,truncated:e.offset+a.length<r.length,completeness:{status:i.length===0?"complete":"partial",source:"source_scan"},warnings:t,matches:a.map(c=>({item:__(c.item),files:c.files,...o?{traceability:o.explanations.get(c.item.id)}:{}})),...o?{traceability_receipt:o.receipt}:{}}}async function Dz(e,t){let n=N(process.cwd(),t.path),r=Je(n);await ne(n);let i=await hR(e.paths,r);if(e.lineRange&&i.length!==1)throw new y("Files lookup line attribution requires exactly one source path.",g.USAGE);let o=await $(n),s=G(o,H()),{offset:a,limit:c}=_R(e),l=await wR({pmRoot:n,typeToFolder:s.type_to_folder,paths:i,scope:e.scope,limit:c,offset:a,strictRead:e.strictRead===!0,noTruncate:e.noTruncate===!0,explain:e.explain===!0||e.lineRange!==void 0});return l?{paths:i,total:l.total,count:l.matches.length,offset:a,limit:c,has_more:a+l.matches.length<l.total,truncated:a+l.matches.length<l.total,completeness:{status:"unchecked",source:"index"},warnings:[],matches:l.matches.map(d=>({item:__(d.item),files:d.files}))}:vR({pmRoot:n,settings:o,typeToFolder:s.type_to_folder,paths:i,scope:e.scope,limit:c,offset:a,strictRead:e.strictRead===!0,workspaceRoot:r,explain:e.explain===!0||e.lineRange!==void 0,lineRange:e.lineRange,decisionDepth:e.decisionDepth})}async function Pz(e,t,n){let r=N(process.cwd(),n.path),i=Je(r);await ne(r);let o=await $(r),s=G(o,H()),a=await Pe(r,e,o.id_prefix,o.item_format,s.type_to_folder);if(!a)throw new y(`Item ${e} not found`,g.NOT_FOUND);let c=await Ne(a,{schema:o.schema}),l=await pR(c.document,i,process.cwd()),d=l.filter(b=>b.status==="addable"),u=l.filter(b=>b.status==="already_linked"),m=t.apply===!0,f=t.note?.trim()||"discovered from item text";if(!m||d.length===0){let b=c.document.metadata.files??[];return{id:a.id,files:b,changed:!1,apply:m,count:b.length,candidate_count:l.length,addable_count:d.length,added_count:0,skipped_existing_count:u.length,candidates:l,added:[],skipped_existing:u}}let p=q(t.author,o.author_default),_=d.map(b=>({path:b.path,scope:b.scope,note:f})),h=[],w=new Set,v=await lt({pmRoot:r,settings:o,id:e,op:"files_discover",author:p,message:t.message??"Discover referenced file links",force:t.force,mutate(b){let j=[...b.metadata.files??[]],I=new Set(j.map(ee=>Un(ee,i)));h=[],w.clear();for(let[ee,Ue]of _.entries()){let ye=Un(Ue,i);I.has(ye)||(j.push(Ue),I.add(ye),h.push(Ue),w.add(ee))}let F=rc(j),P=t.appendStable?F:nc(F);return P.length>0?b.metadata.files=P:delete b.metadata.files,{changedFields:h.length>0?["files"]:[],warnings:h.length!==_.length?[`files_discover_skipped_existing:${_.length-h.length}`]:[]}}}),k=v.item.files??[],S=new Set(h.map(b=>Un(b,i))),x=k.filter(b=>S.has(Un(b,i))),R=d.filter((b,j)=>!w.has(j)),E=[...u,...R];return{id:v.item.id,files:k,changed:x.length>0,apply:!0,count:k.length,candidate_count:l.length,addable_count:d.length,added_count:x.length,skipped_existing_count:E.length,candidates:l,added:x,skipped_existing:E}}import{readFileSync as bR}from"node:fs";import bo 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]="e69d7d9b-9ae8-5337-9ea3-a8e40a62d3af")}catch{}})();var kR=new Set(["get","history","restore","update","close","delete","append","claim","release","comments","notes","learnings","files","docs","deps","test"]),oc=new Set(["--pm-path","--path","--author"]),SR={get:new Set(["--depth","--fields","--tree-depth","--tree_depth","--at","--format"]),history:new Set(["--limit","--field","--format"]),restore:new Set(["--message"]),update:new Set(["--title","-t","--description","-d","--body","-b","--status","-s","--close-reason","--close_reason","--priority","-p","--type","--tags","--add-tags","--add_tags","--remove-tags","--remove_tags","--deadline","--estimated-minutes","--estimate","--estimated_minutes","--acceptance-criteria","--ac","--acceptance_criteria","--definition-of-ready","--definition_of_ready","--order","--rank","--goal","--objective","--value","--impact","--outcome","--why-now","--why_now","--message","--assignee","--parent","--reviewer","--risk","--confidence","--sprint","--release","--blocked-by","--blocked_by","--blocked-reason","--blocked_reason","--unblock-note","--unblock_note","--reporter","--severity","--environment","--repro-steps","--repro_steps","--resolution","--expected-result","--expected_result","--expected","--actual-result","--actual_result","--actual","--affected-version","--affected_version","--fixed-version","--fixed_version","--component","--regression","--customer-impact","--customer_impact","--dep","--dep-remove","--dep_remove","--comment","--note","--learning","--file","--test","--doc","--reminder","--event","--type-option","--type_option","--field","--unset","--body-file"]),close:new Set(["--reason","-r","--close-reason","--duplicate-of","-d","--message","-m","--validate-close","--resolution","--expected-result","--expected_result","--expected","--actual-result","--actual_result","--actual"]),delete:new Set(["--message"]),append:new Set(["--body","--text","--message"]),claim:new Set(["--assignee","--message","--type","--tag","--priority","--assignee-filter","--parent","--sprint","--release","--max-attempts"]),release:new Set(["--assignee","--message"]),comments:new Set(["--add","--body","--comment","--file","--edit","--delete","--limit","--message"]),notes:new Set(["--add","--file","--edit","--delete","--limit","--message"]),learnings:new Set(["--add","--file","--edit","--delete","--limit","--message"]),files:new Set(["--add","--add-glob","--remove","--migrate","--note","--message"]),docs:new Set(["--add","--add-glob","--remove","--migrate","--note","--message"]),deps:new Set(["--format","--max-depth","--collapse","--node-limit","--edge-limit","--token-budget","--cursor","--direction","--kind"]),test:new Set(["--add","--add-json","--remove","--match","--only-index","--timeout","--env-set","--env-clear","--pm-context","--message"])},ER=new Set(["-p","--package"]),xR=new Set(["-c","--call"]),IR=new Set(["-c","-C","--config","--dir","--filter","--workspace-dir"]),AR=new Set(["-C","--prefix","--userconfig","--cache"]),jz=new Set(["--cwd"]),Fz=new Set(["--cwd"]),RR=new Set(["exec","x"]),Uz=new Set(["run","run-script"]),zz=new Set(["-C","--dir","--cwd","-w","--workspace","--filter"]);function CR(e){return e.split(/&&|\|\||\||;/).map(t=>t.trim()).filter(t=>t.length>0)}function TR(e,t=process.cwd()){let n=$R(e.split(" ").filter(s=>s.length>0));if(n.length===0)return null;let[r,...i]=n;if(y_(r)||w_(r,t))return i;if(r==="node"&&i[0]&&w_(i[0],t))return i.slice(1);let o=r==="npx"||r==="bunx"?sc(i):r==="pnpm"?PR(i):r==="npm"?NR(i):null;return o&&(y_(o.command)||DR(o.command))?o.args:null}var v_=(e,t="pm")=>{let n=t.trim().toLowerCase(),r=n.length;for(;r>0&&n[r-1]==="-";)r-=1;let i=n.slice(0,r);if(i.length===0)return[];let o=e.trim().replaceAll("\\","/").replaceAll('"',"").replaceAll("'","").replaceAll(/\s+/g," ").toLowerCase(),s=new Set;for(let a of CR(o)){let c=TR(a),l=c?LR(c):null,d=l&&kR.has(l.subcommand)?MR(l.remaining,SR[l.subcommand]):void 0,u=d?.trim().toLowerCase();u?.startsWith(`${i}-`)===!0&&u.length>i.length+1&&s.add(d)}return[...s].sort((a,c)=>a.localeCompare(c))};function $R(e){let t=0;for(e[t]==="env"&&(t+=1);t<e.length;){let n=e[t];if(/^(?:[a-z_][a-z0-9_]*|\$env:[a-z_][a-z0-9_]*)=.*/.test(n)){t+=1;continue}break}return e.slice(t)}function Hz(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="--"){t+=1;continue}if(n.startsWith("-")){if(oc.has(n)){t+=2;continue}t+=1;continue}return n}}function y_(e){return e==="pm"||e==="pm.cmd"||e==="pm.exe"||e.endsWith("/pm")||e.endsWith("/pm.cmd")||e.endsWith("/pm.exe")}function OR(e){let t=e.trim();if(!t.startsWith("@")){let i=t.indexOf("@");return i===-1?t:t.slice(0,i)}let n=t.indexOf("/");if(n===-1)return t;let r=t.indexOf("@",n+1);return r===-1?t:t.slice(0,r)}function DR(e){let t=OR(e);return t==="pm-cli"||t.endsWith("/pm-cli")||e==="pm-cli"||e.endsWith("/pm-cli")}function w_(e,t=process.cwd()){let n=e.replaceAll("\\","/");if(n!=="dist/cli.js"&&n!=="./dist/cli.js"&&!n.endsWith("/dist/cli.js"))return!1;let r=bo.resolve(t,e);try{return JSON.parse(bR(bo.join(bo.dirname(bo.dirname(r)),"package.json"),"utf8")).name==="@unbrained/pm-cli"}catch{return!1}}function sc(e){let t=0;for(;t<e.length;){let r=e[t];if(r==="--"){t+=1;break}if(!r.startsWith("-"))break;let i=/^(?:-c|--call)=(.*)$/.exec(r);if(i){let o=i[1];return o?{command:o,args:e.slice(t+1)}:null}if(xR.has(r)){t+=1;break}t+=ER.has(r)&&!r.includes("=")?2:1}let n=e[t];return n?{command:n,args:e.slice(t+1)}:null}function b_(e,t){let n=0;for(;n<e.length;){let r=e[n];if(r==="--"){n+=1;continue}if(r.startsWith("-")){if(r.includes("=")){n+=1;continue}if(t.has(r)){n+=2;continue}n+=1;continue}return{subcommand:r,args:e.slice(n+1)}}return null}function PR(e){let t=b_(e,IR);return t?.subcommand!=="dlx"?null:sc(t.args)}function NR(e){let t=b_(e,AR);return!t||!RR.has(t.subcommand)?null:sc(t.args)}function LR(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="--"){t+=1;continue}if(n.startsWith("-")){if(oc.has(n)){t+=2;continue}t+=1;continue}return{subcommand:n,remaining:e.slice(t+1)}}return null}function MR(e,t=new Set){for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="--")return e[n+1];if(!r.startsWith("-"))return r;!r.includes("=")&&(oc.has(r)||t.has(r))&&(n+=1)}}import{execFile as jR}from"node:child_process";import{readFile as FR}from"node:fs/promises";import S_ from"node:path";import{promisify as UR}from"node:util";(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]="eeb9bc22-b9e1-5449-9ad0-fbb1a14fb09d")}catch{}})();var zR=UR(jR),ac=1,HR="linked-test-trust.json";function cc(e){return S_.join(tl(e),HR)}function k_(){return{version:ac,acknowledged:{}}}async function lc(e){try{let t=JSON.parse(await FR(cc(e),"utf8"));return t.version!==ac||typeof t.acknowledged!="object"||t.acknowledged===null||Array.isArray(t.acknowledged)?k_():{version:ac,acknowledged:t.acknowledged}}catch{return k_()}}async function dc(e=process.cwd()){let t=process.env.GITHUB_HEAD_REF?.trim()||process.env.GITHUB_REF_NAME?.trim();if(t&&t!=="merge")return t;try{let{stdout:n}=await zR("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8",windowsHide:!0,timeout:1e4}),r=n.trim();return r.length===0?void 0:r}catch{return}}function uc(e=process.cwd()){return process.env.PM_SOURCE_WORKSPACE_ROOT?.trim()||e}function WR(e){return e===null||typeof e!="object"?!1:typeof e.author=="string"&&e.author.trim().length>0&&typeof e.created_at=="string"&&Ll(e.created_at)&&(e.source_kind==="local_mutation"||e.source_kind==="merge_union")}function Pr(e,t){return{...e?{source_ref:e}:{},...t?{current_source_ref:t}:{}}}function GR(e,t,n,r){return e?.map(i=>i.command&&!i.provenance?{...i,provenance:{author:t,created_at:n,source_kind:"local_mutation",...r?{source_ref:r}:{}}}:i)}async function Zz(e,t,n){if(!e||e.length===0)return e;let r=uc();return GR(e,t,n,await dc(r))}function E_(e){return ke(C({command:e.command??null,path:e.path??null,scope:e.scope,pm_context_mode:e.pm_context_mode??null,workspace_context_mode:e.workspace_context_mode??null,env_set:e.env_set??null,env_clear:e.env_clear??null,shared_host_safe:e.shared_host_safe??null,provenance:e.provenance??null,provenance_invalid:e.provenance_invalid??null}))}async function Qz(e,t,n){let r=await lc(e);return x_(t,n,r)}function x_(e,t,n){let r=E_(e),i=e.provenance?.source_ref;if(e.provenance===void 0&&e.provenance_invalid!==!0)return{fingerprint:r,trusted:!0,reason:"legacy"};let o=Object.hasOwn(n.acknowledged,r);return e.provenance_invalid===!0||!WR(e.provenance)?o?{fingerprint:r,trusted:!0,reason:"acknowledged",...Pr(void 0,t)}:{fingerprint:r,trusted:!1,reason:"invalid_provenance",...Pr(void 0,t)}:e.provenance.source_kind==="local_mutation"&&i===void 0?{fingerprint:r,trusted:!0,reason:"local_mutation",...Pr(void 0,t)}:e.provenance.source_kind==="local_mutation"&&i!==void 0&&i===t?{fingerprint:r,trusted:!0,reason:"local_source_ref",source_ref:i,current_source_ref:t}:o?{fingerprint:r,trusted:!0,reason:"acknowledged",...Pr(i,t)}:{fingerprint:r,trusted:!1,reason:"foreign_source_ref",...Pr(i,t)}}async function I_(e,t,n){let r=await lc(e);return t.map(i=>x_(i,n,r))}async function eH(e,t,n){let r=await lc(e),i=t.filter(o=>typeof o.command=="string"&&o.command.length>0).map(E_);for(let o of i)r.acknowledged[o]={acknowledged_at:n};return await Vn(S_.dirname(cc(e))),await Q(cc(e),`${JSON.stringify(r,null,2)}
|
|
65
|
+
`)){let a=s.trim();if(a.length!==0){r+=1;try{let c=JSON.parse(a);if(typeof c=="object"&&c!==null&&typeof c.attempts=="number"&&Number.isFinite(c.attempts)){let l=Math.max(0,Math.trunc(c.attempts));t+=1,o=Math.max(o,l),l>=Ah&&(i+=1)}else n+=1}catch{n+=1}}}return{validEntries:t,invalidRows:n,totalRows:r,highRetryEntries:i,maxAttempts:o}}function VI(){return{validEntries:0,invalidRows:0,totalRows:0,highRetryEntries:0,maxAttempts:0}}function JI(e){if(!e||e.trim().length===0)return{runtimeState:{},stateParseFailed:!1};try{let t=JSON.parse(e);return typeof t=="object"&&t!==null&&!Array.isArray(t)?{runtimeState:t,stateParseFailed:!1}:{runtimeState:{},stateParseFailed:!0}}catch{return{runtimeState:{},stateParseFailed:!0}}}async function KI(e,t){let n=e.telemetry.endpoint.trim();return!t||!e.telemetry.enabled||n.length===0||ss().telemetry_disabled?void 0:{attempted:!0,...await Dh(n)}}function YI(e,t,n){let r=[];if(t.invalidRows>0&&r.push(`telemetry_queue_invalid_rows:${t.invalidRows}`),!e.telemetry.enabled||t.validEntries===0)return r;let i=n.last_successful_flush_at,o=n.last_failed_flush_at,s=o&&(!i||o>i),a=!i,c=t.validEntries>=EI;return(s||a||c)&&r.push(`telemetry_queue_pending:${t.validEntries}`),t.highRetryEntries>0&&r.push(`telemetry_queue_high_retries:${t.highRetryEntries}`),r}function XI(e){return!e||e.ok!==!1?[]:typeof e.status=="number"?[`telemetry_endpoint_probe_http_status:${e.status}`]:["telemetry_endpoint_probe_failed"]}function ZI(e){let t=Number.parseInt(e?.max_schema_version??"",10);return e?.ok===!0&&Number.isInteger(t)&&t>Gd?[`telemetry_schema_version_behind:${t}`]:[]}function QI(e,t){let n=typeof t.pending_otel_spans=="number"?t.pending_otel_spans:0,r=t.last_otel_success_at,i=t.last_otel_failure_at;return e.telemetry.enabled&&n>0&&!!i&&(!r||i>=r)?[`telemetry_otel_export_failing:${n}`]:[]}function eA(){return{...ss(),pm_no_telemetry:ho("PM_NO_TELEMETRY"),telemetry_otel_disabled:ho("PM_TELEMETRY_OTEL_DISABLED"),telemetry_inline_flush:ho("PM_TELEMETRY_INLINE_FLUSH"),telemetry_source_context:BI()}}function tA(e,t){return e.telemetry.enabled&&t.validEntries>0}function nA(e,t){return e&&t.every(n=>!n.startsWith("telemetry_queue_pending:")&&!n.startsWith("telemetry_queue_high_retries:"))}async function Dh(e){let t=e;try{let n=new URL(e);n.pathname="/healthz",n.search="",n.hash="",t=n.toString()}catch{}try{let n=await fetch(t,{method:"GET",signal:AbortSignal.timeout(SI)});return{probe_url:_o(t),ok:n.ok,status:n.status,max_schema_version:(()=>{for(let r of xI){let i=n.headers.get(r)?.trim();if(i&&i.length>0)return i}})()}}catch(n){return{probe_url:_o(t),ok:!1,error:n instanceof Error?n.message:"probe_failed"}}}async function rA(e,t){let n=Wr(process.cwd()),r=ve.join(n,bI),i=ve.join(n,kI),o=await V(r),s=o!==null,a=o?Buffer.byteLength(o,"utf8"):0,c=o?Oh(o):VI(),l=await V(i),{runtimeState:d,stateParseFailed:u}=JI(l),m=e.telemetry.endpoint.trim(),f=_o(m),p=await KI(e,t.checkTelemetry),_=[];u&&_.push("telemetry_state_invalid_json"),_.push(...YI(e,c,d),...XI(p),...ZI(p),...QI(e,d));let h=tA(e,c),w=typeof d.pending_otel_spans=="number"?d.pending_otel_spans:0;return{check:{name:"telemetry",status:_.length===0?"ok":"warn",ok:_.length===0,details:{enabled:e.telemetry.enabled,capture_level:e.telemetry.capture_level,endpoint:f,global_pm_root:n,queue_path:r,queue_exists:s,queue_entries:c.validEntries,queue_draining:nA(h,_),queue_invalid_rows:c.invalidRows,queue_rows_total:c.totalRows,queue_size_bytes:a,queue_high_retry_entries:c.highRetryEntries,queue_high_retry_threshold:Ah,queue_max_attempts:c.maxAttempts,runtime_state_path:i,last_attempted_flush_at:d.last_attempted_flush_at??null,last_successful_flush_at:d.last_successful_flush_at??null,last_failed_flush_at:d.last_failed_flush_at??null,last_failed_flush_error:d.last_failed_flush_error??null,pending_otel_spans:w,last_otel_attempt_at:d.last_otel_attempt_at??null,last_otel_success_at:d.last_otel_success_at??null,last_otel_failure_at:d.last_otel_failure_at??null,last_otel_failure_error:d.last_otel_failure_error??null,endpoint_probe:p??{attempted:!1},env_overrides:eA()}},warnings:_}}async function iA(e){let t;try{t=await wm(e)}catch(r){let i=r instanceof Error?r.message:String(r);return{check:{name:"locks",status:"warn",ok:!1,details:{active_lock_count:0,stale_lock_count:0,unreadable_lock_count:0,unparseable_lock_count:0,scan_failed:!0,error:i,pm_root:e}},warnings:[`locks_scan_failed:${i}`]}}let n=[];return t.stale_lock_count>0&&n.push(`locks_stale_count:${t.stale_lock_count}`),t.unreadable_lock_count>0&&n.push(`locks_unreadable:${t.unreadable_lock_count}`),{check:{name:"locks",status:n.length===0?"ok":"warn",ok:n.length===0,details:{active_lock_count:t.active_lock_count,stale_lock_count:t.stale_lock_count,unreadable_lock_count:t.unreadable_lock_count,unparseable_lock_count:t.unparseable_lock_count}},warnings:n}}async function oA(e){let t="metadata",n=e.items,r=await qt(e.pmRoot,n,{cacheHitVerification:t}),i=[...new Set([...r.hashMismatches,...r.chainMismatches,...r.versionSkews])].sort((w,v)=>w.localeCompare(v)),o=[],s=[];if(i.length>0){n=await Ht(e.pmRoot,e.settings.item_format,e.typeRegistry.type_to_folder,e.itemReadWarnings,e.settings.schema,{forceSourceScan:!0}),r=await qt(e.pmRoot,n),o=[...new Set([...r.hashMismatches,...r.chainMismatches,...r.versionSkews])].sort((v,k)=>v.localeCompare(k));let w=new Set(o);s=i.filter(v=>!w.has(v))}let{missingStreams:a,unreadableStreams:c,hashMismatches:l,chainMismatches:d,versionSkews:u,driftedItems:m,workspaceStateMismatches:f,workspaceStateMissing:p,workspaceStateUnreadable:_}=r,h=[...a.map(w=>`history_drift_missing_stream:${w}`),...c.map(w=>`history_drift_unreadable_stream:${w}`),...l.map(w=>`history_drift_hash_mismatch:${w}`),...d.map(w=>`history_drift_chain_mismatch:${w}`),...u.map(w=>`history_drift_version_skew:${w}`),...f.map(w=>`history_drift_workspace_state_mismatch:${w}`),...p.map(w=>`history_drift_workspace_state_missing:${w}`),..._.map(w=>`history_drift_workspace_state_unreadable:${w}`)];return{check:{name:"history_drift",status:h.length===0?"ok":"warn",ok:h.length===0,details:{checked_items:n.length,cache_hit_verification:i.length>0?"metadata_then_content_hash":t,cache_confirmation:{triggered:i.length>0,reason:i.length>0?"cached_corruption_candidate":null,candidate_items:i,confirmed_items:o,resolved_false_positive_items:s,authoritative_item_source:i.length>0},drifted_items:m,counts:{drifted:m.length,missing_streams:a.length,unreadable_streams:c.length,hash_mismatches:l.length,chain_mismatches:d.length,version_skews:u.length,workspace_state_mismatches:f.length,workspace_state_missing:p.length,workspace_state_unreadable:_.length},missing_streams:a,unreadable_streams:c,hash_mismatches:l,chain_mismatches:d,version_skews:u,workspace_state_mismatches:f,workspace_state_missing:p,workspace_state_unreadable:_}},warnings:h}}function sA(e,t){let n=pi(e),r=Zn(n.settings),i=_i(n.settings,t),o=r.active?Wt(r.active.name,r.active.model):null;return{runtimeDefaults:n,providerResolution:r,vectorStoreResolution:i,runtimeEmbeddingIdentity:o,semanticRuntimeAvailable:!!(r.active&&i.active)}}function aA(){return{refreshed:[],skipped:[],warnings:[]}}async function cA(e){return!e.refreshPolicy.enabled||!e.snapshot.semanticRuntimeAvailable||e.staleBefore.length===0?aA():Ud(e.pmRoot,e.staleBefore,{settings:e.snapshot.runtimeDefaults.settings,apply_runtime_defaults:!1})}function lA(e){return e.strictVectorizationWarnings&&e.semanticRuntimeAvailable&&!!(e.ledgerBefore.embedding&&e.runtimeEmbeddingIdentity&&gn(e.ledgerBefore.embedding,e.runtimeEmbeddingIdentity))}function dA(e){let t=new Set([...e.ledgerBefore.warnings,...e.ledgerAfter.warnings]);if(e.strictVectorizationWarnings)for(let n of e.refreshResult.warnings)t.add(n);return e.embeddingIdentityChanged&&t.add("vectorization_embedding_identity_changed"),e.strictVectorizationWarnings&&e.semanticRuntimeAvailable&&e.staleAfter.length>0&&t.add(`vectorization_stale_items_remaining:${e.staleAfter.length}`),[...t].sort((n,r)=>n.localeCompare(r))}function uA(e,t,n){return e.enabled&&t&&n.length>0?null:e.enabled?t?"no_stale_items":"semantic_runtime_unavailable":"refresh_disabled"}function Ph(e,t){let n=t.providerResolution.active?.name??null,r=t.vectorStoreResolution.active?.name??null;return{provider_active:n,provider_configured:typeof e.search?.provider=="string"?e.search.provider:null,provider_source:rs(n,e.search?.provider??null),vector_store_active:r,vector_store_configured:typeof e.vector_store?.adapter=="string"?e.vector_store.adapter:null,vector_store_source:rs(r,e.vector_store?.adapter??null)}}function mA(e){return{enabled:e.enabled,check_only:e.checkOnly,no_refresh:e.noRefresh,refresh_vectors:e.refreshVectors}}function fA(e,t,n){return e.enabled&&n.length>0&&t}async function pA(e,t,n,r,i){let o=sA(t,e),s=await yn(e),a=o.semanticRuntimeAvailable?cs(n,s.entries):[],c=await cA({pmRoot:e,snapshot:o,refreshPolicy:r,staleBefore:a}),l=await yn(e),d=o.semanticRuntimeAvailable?cs(n,l.entries):[],u=!o.runtimeDefaults.auto_ollama_defaults_applied,m=lA({strictVectorizationWarnings:u,semanticRuntimeAvailable:o.semanticRuntimeAvailable,ledgerBefore:s,runtimeEmbeddingIdentity:o.runtimeEmbeddingIdentity}),f=dA({ledgerBefore:s,ledgerAfter:l,refreshResult:c,strictVectorizationWarnings:u,semanticRuntimeAvailable:o.semanticRuntimeAvailable,embeddingIdentityChanged:m,staleAfter:d}),p=qa(a,i),_=qa(d,i),h=fA(r,o.semanticRuntimeAvailable,a);return{check:{name:"vectorization",status:f.length===0?"ok":"warn",ok:f.length===0,details:{semantic_runtime_available:o.semanticRuntimeAvailable,compatibility_mode_auto_defaults:o.runtimeDefaults.auto_ollama_defaults_applied,auto_ollama_defaults_applied:o.runtimeDefaults.auto_ollama_defaults_applied,auto_ollama_defaults_skipped_reason:o.runtimeDefaults.auto_ollama_defaults_skipped_reason??null,auto_ollama_defaults_remediation:o.runtimeDefaults.auto_ollama_defaults_remediation??null,refresh_policy:mA(r),...Ph(t,o),embedding_identity_changed:m,embedding_identity_before:s.embedding??null,embedding_identity_runtime:o.runtimeEmbeddingIdentity??null,items:n.length,ledger_entries_before:Object.keys(s.entries).length,stale_items_detail_mode:i?"full":"summary",stale_items_summary_limit:Ih,stale_items_before_total:p.total,stale_items_before:p.values,stale_items_before_truncated:p.truncated,refresh_attempted:h,refresh_skipped_reason:uA(r,o.semanticRuntimeAvailable,a),refresh_result:c,ledger_entries_after:Object.keys(l.entries).length,stale_items_after_total:_.total,stale_items_after:_.values,stale_items_after_truncated:_.truncated}},warnings:f}}function hA(e){let t=[];return e.id_prefix.trim().length===0&&t.push("settings:id_prefix_empty"),e.locks.ttl_seconds<=0&&t.push("settings:locks_ttl_non_positive"),t}function Nh(e){let t=e.checkOnly===!0,n=e.refreshVectors===!0;if(n&&t)throw new y("--check-only cannot be combined with --refresh-vectors",g.USAGE);if(n&&e.noRefresh===!0)throw new y("--no-refresh cannot be combined with --refresh-vectors",g.USAGE);return{enabled:n,checkOnly:t,noRefresh:!n,refreshVectors:n}}var _A=new Set(["extensions","locks","search"]);function gA(e){let t=new Set(Wc.filter(i=>i.length>0)),n=new Set,r=new Set(Object.values(Gc));for(let i of e.folders)t.has(i)&&!r.has(i)||(t.delete(i),n.add(i));for(let i of _A)t.delete(i),n.add(i);return{requiredDirs:[...t].sort((i,o)=>i.localeCompare(o)),optionalDirs:[...n].sort((i,o)=>i.localeCompare(o)),optionalDirSet:n}}async function yA(e,t,n){let{requiredDirs:r,optionalDirs:i,optionalDirSet:o}=gA(t),s=[],a=[],c=[];for(let l of[...r,...i]){let d=ve.join(e,l);c.push(...await We({path:d,scope:"project"})),!await Ja(d)&&(o.has(l)?a.push(l):s.push(l))}return{requiredDirs:r,optionalDirs:i,missingRequiredDirs:s,missingOptionalDirs:a,missingDirs:n?[...s,...a]:[...s],hookWarnings:c}}function Lh(e){let t=e.checkOnly===!0&&e.brief!==!0&&e.summary!==!0&&e.full!==!0,n=(e.summary===!0||t)&&e.full!==!0,r=e.checkOnly===!0&&(e.brief===!0||e.summary===!0)&&e.full!==!0;return{summaryMode:n,skipIntegrity:(e.skipIntegrity===!0||r)&&e.full!==!0,skipDrift:(e.skipDrift===!0||r)&&e.full!==!0,skipVectors:(e.skipVectors===!0||r)&&e.full!==!0}}async function wA(e){return e.skipPolicy.skipDrift&&e.skipPolicy.skipVectors?ct(e.pmRoot,e.settings.item_format,e.typeRegistry.type_to_folder,e.itemReadWarnings,e.settings.schema):Ht(e.pmRoot,e.settings.item_format,e.typeRegistry.type_to_folder,e.itemReadWarnings,e.settings.schema)}function Ha(e){return{check:{name:e,status:"ok",ok:!0,details:{skipped:!0}},warnings:[]}}function vA(e,t,n){return{name:"settings",status:n.length===0?"ok":"warn",ok:n.length===0,details:{path:e,version:t.version,id_prefix:t.id_prefix,locks_ttl_seconds:t.locks.ttl_seconds,warnings:n}}}function bA(e,t){return{name:"directories",status:e.missingDirs.length===0?"ok":"warn",ok:e.missingDirs.length===0,details:{required:e.requiredDirs,optional:e.optionalDirs,missing_required:e.missingRequiredDirs,missing_optional:e.missingOptionalDirs,missing:e.missingDirs,strict_directories:t}}}function kA(e,t){return{name:"settings_values",status:e.length===0?"ok":"warn",ok:e.length===0,details:{warnings:e,...t.roleless_status_count>0?{lifecycle_status_roles:t}:{}}}}var Ka=e=>e.unknown_event_count??0,Ya=e=>e.actionable_unknown_event_count??Ka(e);function SA(e,t,n,r,i,o){let s=Ka(r),a=Ya(r),c=s>0,l=a>0,d=i.count>0;return{name:"storage",status:n.over_threshold.length===0&&n.orphaned.length===0&&!l&&!d?"ok":"warn",ok:n.over_threshold.length===0&&n.orphaned.length===0&&!l&&!d,details:{items:e.length,history_streams:n.count,tombstones:{retention_policy:"retain_append_only",gc_enabled:!1,count:n.tombstones.length,ids:n.tombstones.slice(0,25),truncated:n.tombstones.length>25},orphaned_history_streams:{count:n.orphaned.length,ids:n.orphaned.slice(0,25),truncated:n.orphaned.length>25},...c?{author_attribution:r}:{},...d?{stale_in_progress:i}:{},...o.outcomes.length>0?{provenance_resolver_outcomes:o.outcomes}:{},...o.invalid_values.length>0?{provenance_invalid_values:o.invalid_values}:{},provenance_sample:o.sample,...n.max_entries!==null?{compact_policy:{enabled:t.history.compact_policy.enabled,max_entries:n.max_entries,trigger:t.history.compact_policy.trigger,over_threshold_count:n.over_threshold.length,over_threshold:n.over_threshold}}:{}}}}function Mh(e){let t=e.count===0?[]:[`stale_in_progress_items:${e.count}`];return{scan:e,warnings:t}}function EA(e){let t=[...e.directoryState.missingDirs.map(n=>`missing_directory:${n}`),...e.normalizedSettingsReadWarnings,...e.settingWarnings,...e.normalizedItemReadWarnings,...e.telemetryCheck.warnings,...e.extensionCheck.warnings,...e.historyPolicyWarnings,...e.historySummary.warnings,...e.authorAttributionWarnings,...e.staleInProgressWarnings,...e.provenanceWarnings,...e.locksCheck.warnings,...e.integrityCheck.warnings,...e.historyDriftCheck.warnings,...e.vectorizationCheck.warnings,...e.directoryState.hookWarnings];return[...new Set(t)]}function xA(e){let t=e.check.details.counts;return typeof t?.drifted=="number"?t.drifted:0}function IA(e){return{settings:e.normalizedSettingsReadWarnings,directories:e.directoryState.missingDirs.map(t=>`missing_directory:${t}`).concat(e.directoryState.hookWarnings),settings_values:e.settingWarnings,telemetry:e.telemetryCheck.warnings,extensions:e.extensionCheck.warnings,storage:[...e.historyPolicyWarnings,...e.historySummary.warnings,...e.authorAttributionWarnings,...e.staleInProgressWarnings,...e.provenanceWarnings],locks:e.locksCheck.warnings,integrity:[...e.normalizedItemReadWarnings,...e.integrityCheck.warnings],history_drift:e.historyDriftCheck.warnings,vectorization:e.vectorizationCheck.warnings}}function jh(e){let t=new Map;for(let[i,o]of Object.entries(e.remediationSources))for(let s of o)t.has(s)||t.set(s,i);let n=new Map(e.checks.map(i=>[i.name,i]));return e.warnings.map(i=>{let o=t.get(i)??"integrity",s=$s(i)?.code??Va(i),a=n.get(o)?.details,c=typeof a?.remediation_map=="object"&&a.remediation_map!==null?a.remediation_map:{},l=s==="agent_guidance_outdated"?"pm init --agent-guidance add":s==="agent_guidance_unreadable"?"Check AGENTS.md and CLAUDE.md read permissions and file types, then retry pm health.":c[s],d=Ba(i,e.requireMergeDrivers)?"advisory":"gate_failing";return{warning:i,code:s,check:o,severity:d,...typeof l=="string"?{remediation:l}:d==="gate_failing"?{disposition:"no_safe_automatic_remediation"}:{}}})}function AA(e){if(e.check.name==="history_drift"&&e.historyDriftedCount>1)for(let t of Object.keys(e.remediationMap))t!=="history_drift_merge_receipt"&&t!=="history_drift_version_skew"&&(e.remediationMap[t]="pm history-repair --all");if(e.check.name==="storage"&&e.overThresholdCount>1)for(let t of Object.keys(e.remediationMap))e.remediationMap[t]="pm history-compact --all-streams"}function RA(e){for(let t of e.checks){let n=Os(e.remediationSources[t.name]);AA({check:t,remediationMap:n,historyDriftedCount:e.historyDriftedCount,overThresholdCount:e.overThresholdCount}),Object.keys(n).length>0&&(t.details={...t.details,remediation_map:n})}}async function CA(e){if(e.gitWorkspaceRoot===null||e.pendingMergeReceipts.length===0)return[];let t=e.historyDriftCheck.check.details,n=Array.isArray(t.hash_mismatches)?t.hash_mismatches.filter(s=>typeof s=="string"):[],r=new Set([t.missing_streams,t.unreadable_streams,t.chain_mismatches].flatMap(s=>Array.isArray(s)?s:[])),i=new Map;for(let s of e.pendingMergeReceipts){if(s.evidence_source!=="clone_local")continue;let a=i.get(s.item_id)??[];a.push(s),i.set(s.item_id,a)}let o=[];for(let s of n){if(r.has(s))continue;let a=i.get(s);if(!(!a||a.length===0))try{await Ua(s,{dryRun:!0,mergeReceiptProof:{gitWorkspaceRoot:e.gitWorkspaceRoot,receipts:a}},e.global),o.push(s)}catch{}}return[...new Set(o)].sort((s,a)=>s.localeCompare(a))}function TA(e,t){let n=new Set(t);e.warnings=[...e.warnings.filter(r=>r.startsWith("history_drift_hash_mismatch:")?!n.has(r.slice(r.indexOf(":")+1)):!0),...t.map(r=>`history_drift_merge_receipt:${r}`)].sort((r,i)=>r.localeCompare(i)),e.check.details={...e.check.details,merge_receipt_attributed_items:t}}function Fh(e,t,n){let r=e.warning_count??e.warnings.length,i={...e,warning_count:r,warning_limit:en,warnings_truncated:r>en,warnings:e.warnings.slice(0,en),findings:(e.findings??[]).filter(s=>e.warnings.slice(0,en).includes(s.warning)||e.failed_because.includes(s.warning))},o=n?qI(i):t.brief===!0?GI(i):i;return{...o,warning_count:r,warning_limit:en,warnings_truncated:r>o.warnings.length,...o.projection?{projection:{...o.projection,warning_count:r,warnings_truncated:r>o.warnings.length}}:{}}}async function Uh(e,t={}){let n=N(process.cwd(),e.path);await ne(n);let r=Lt(n),{settings:i,warnings:o}=await cd(n),s=[...new Set(o)],a=G(i,H()),c=t.strictDirectories===!0,l=t.strictExit===!0||t.failOnWarn===!0,d=t.requireMergeDrivers===!0||l,u=Nh(t),m=await yA(n,a,c),f=hA(i),p=await rA(i,{checkTelemetry:t.checkTelemetry===!0}),_=await FI(n,i,!!e.noExtensions),h=Lh(t),w=[],v=await wA({pmRoot:n,settings:i,typeRegistry:a,skipPolicy:h,itemReadWarnings:w}),k=v,S=Oi(_e(i.schema),v),R=[...(await mm({pm_root:n,cwd:process.cwd(),mode:"status",interactive:!1,settings:i}).catch(()=>({warnings:["agent_guidance_unreadable:AGENTS.md,CLAUDE.md"]}))).warnings.filter(pe=>pe.startsWith("agent_guidance_")),...f,...Di(S)],E=h.skipDrift?{warnings:[]}:await gd({pmRoot:n,settings:i,itemIds:v.map(pe=>pe.id),commandLabel:"health"}),b=await RI(n,i.history.compact_policy,await II(n)),j=await sr(n,20,t.verboseAuthorEvents===!0),I=Ya(j),F=I>0?[`history_unknown_author_events:${I}`]:[],P=Mh(await Hd(n,v,{in_progress_status:i.schema.workflow.in_progress_status,threshold_hours:i.mutation_guard.stale_in_progress_hours})),ee=await tm(n),Ue=ee.warnings,ye=await iA(n),ze=h.skipIntegrity&&!d?{...Ha("integrity"),gitWorkspaceRoot:null,pendingMergeReceipts:[]}:await OI(n,a.type_to_folder,i.schema,i,d,v),He=h.skipDrift?Ha("history_drift"):await oA({pmRoot:n,items:k,settings:i,typeRegistry:a,itemReadWarnings:w}),nn=[...new Set(w)],W=await CA({gitWorkspaceRoot:ze.gitWorkspaceRoot,pendingMergeReceipts:ze.pendingMergeReceipts,historyDriftCheck:He,global:e});TA(He,W);let J=h.skipVectors?Ha("vectorization"):await pA(n,i,k,u,t.verboseStaleItems===!0),qn=[vA(r,i,s),bA(m,c),kA(R,S),p.check,_.check,SA(v,i,b,j,P.scan,ee),ye.check,ze.check,He.check,J.check],Bn=EA({directoryState:m,normalizedSettingsReadWarnings:s,settingWarnings:R,normalizedItemReadWarnings:nn,telemetryCheck:p,extensionCheck:_,historyPolicyWarnings:E.warnings,historySummary:b,authorAttributionWarnings:F,staleInProgressWarnings:P.warnings,provenanceWarnings:Ue,locksCheck:ye,integrityCheck:ze,historyDriftCheck:He,vectorizationCheck:J}),jc=IA({directoryState:m,normalizedSettingsReadWarnings:s,settingWarnings:R,normalizedItemReadWarnings:nn,telemetryCheck:p,extensionCheck:_,historyPolicyWarnings:E.warnings,historySummary:b,authorAttributionWarnings:F,staleInProgressWarnings:P.warnings,provenanceWarnings:Ue,locksCheck:ye,integrityCheck:ze,historyDriftCheck:He,vectorizationCheck:J});RA({checks:qn,remediationSources:jc,historyDriftedCount:xA(He),overThresholdCount:b.over_threshold.length});let No=Bn.filter(pe=>!Ba(pe,d)),Lo=jh({warnings:Bn,checks:qn,remediationSources:jc,requireMergeDrivers:d}),Lg=new Set(Lo.filter(pe=>pe.severity==="gate_failing").map(pe=>pe.check)),Mg=new Set(Lo.map(pe=>pe.check));for(let pe of qn)pe.ok=!Lg.has(pe.name),Mg.has(pe.name)&&(pe.status="warn");let jg={ok:No.length===0,verdict:{authority:"ok",...l?{strict_exit:!0}:{},...d?{require_merge_drivers:!0}:{},exit_code:l&&No.length>0?g.GENERIC_FAILURE:0},checks:qn,warnings:Bn,findings:Lo,failed_because:No,generated_at:T()};return Fh(jg,t,h.summaryMode)}var wU={buildHierarchyIntegrityWarnings:Ch,buildExtensionHealthTriageSummary:Th,buildHealthFindings:jh,buildCapabilityContractMetadata:Er,buildStaleInProgressHealthSummary:Mh,buildVectorizationProviderDetails:Ph,collectUnknownCapabilityGuidance:Sr,isAdvisoryHealthWarning:Ba,isDirectory:Ja,isExpectedUnmanagedExtension:Wa,listItemDocumentPaths:Rh,normalizeEndpointForDisplay:_o,normalizeExtensionNameForMatch:Mn,parseTelemetryQueue:Oh,probeTelemetryEndpointHealth:Dh,projectHealthResult:Fh,resolveActionableUnknownAuthorEventCount:Ya,resolveHealthSkipPolicy:Lh,resolveUnknownAuthorEventCount:Ka,resolveVectorRefreshPolicy:Nh,selectStaleItemDetail:qa,summarizeHealthCheckDetails:$h,summarizeExtensionList:po,summarizeRecordList:ot,summarizeStringList:B,telemetryEnvFlagEnabled:ho,warningCode:Va};(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]="1e1d8d86-3f4e-50eb-ae73-ca7c030f7c0a")}catch{}})();function zh(e,t,n){if(!n.has(t.metadata.status))return{reason:"not_terminal"};if(e.length===0)return{reason:"missing_history"};if(!Yd(e,t).ok)return{reason:"unverified_history"};let r=td(),i={reason:"no_proven_transition"};for(let[o,s]of e.entries()){let a=n.has(String(r.metadata.status));r=wd(r,s.patch,o+1,s.op),n.has(String(r.metadata.status))?a||(i=["create","close","cancel","update","update_audit"].includes(s.op)&&Et(s.ts)?{timestamp:s.ts,source_index:o+1}:{reason:"no_proven_transition"}):i={reason:"no_proven_transition"}}return i}function Hh(e){return new Set([...e.terminal_statuses,...[...e.alias_to_id].filter(([,t])=>e.terminal_statuses.has(t)).map(([t])=>t)])}async function Wh(e,t,n,r,i){let o=Hh(n),s=t.filter(l=>o.has(l.status)&&!l.closed_at),a=[],c=[];for(let l of r?s:[]){let d;try{let u=await Ut(Mt(e,l.id),l.id),{body:m,...f}=l;d=zh(u,{metadata:f,body:m},o)}catch{c.push({id:l.id,reason:"unreadable_history"});continue}if("reason"in d){c.push({id:l.id,reason:d.reason});continue}a.push({item_id:l.id,check:"metadata",field:"closed_at",kind:"set_closed_at",value:d.timestamp,gate:"timestamps",command:"pm validate --check-metadata --auto-fix --fix-scope timestamps"})}return{details:{missing_closed_at_count:s.length,missing_closed_at_item_ids:s.slice(0,i).map(l=>l.id),missing_closed_at_item_ids_truncated:s.length>i,closure_history_inspected:r,closure_timestamp_derivable_count:a.length,closure_timestamp_residual_count:c.length,closure_timestamp_residual:c.slice(0,i),closure_timestamp_residual_truncated:c.length>i,...s.length>0?{closure_timestamp_fix_hint:"pm validate --check-metadata --auto-fix --fix-scope timestamps --dry-run"}:{}},fixes:a,warnings:s.length>0?[`validate_metadata_missing_closed_at:${s.length}`]:[]}}async function Gh(e,t){let n=N(process.cwd(),t.path),r=await $(n),i=_e(r.schema);await lt({pmRoot:n,settings:r,id:e.item_id,op:"update",author:q(t.author,r.author_default),message:"Backfill closed_at from verified lifecycle history",skipNoop:!0,async mutate(o){if(o.metadata.closed_at)return{changedFields:[]};let s=await Ut(Mt(n,o.metadata.id),o.metadata.id),a=Hh(i),c=zh(s,o,a);if(!("timestamp"in c)||c.timestamp!==e.value)throw new y("Closure timestamp evidence changed or cannot be verified; rerun the timestamp repair preview.",g.GENERIC_FAILURE);return o.metadata.closed_at=c.timestamp,{changedFields:["closed_at"]}}})}(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]="e2cd8850-491a-505c-8709-3dcdb758de75")}catch{}})();function $A(e,t){return e==="malformed"||t==="malformed"?"malformed":e==="moved"||t==="moved"?"moved":"deleted"}function qh(e){return`${e.item_id} ${e.link_kind}`}function Bh(e,t){let n=new Map;for(let r of e){let i=n.get(r.path);i?(i.classification=$A(i.classification,r.classification),i.owners.set(qh(r),r)):n.set(r.path,{classification:r.classification,owners:new Map([[qh(r),r]])})}return[...n.entries()].sort(([r],[i])=>r.localeCompare(i)).map(([r,i])=>({path:r,classification:i.classification,items:[...i.owners.values()].map(o=>{let s=t(o.item_id);return{id:o.item_id,type:s?.type??"Unknown",title:s?.title??"",status:s?.status??"",field:o.link_kind}}).sort((o,s)=>{let a=o.id.localeCompare(s.id);return a!==0?a:o.field.localeCompare(s.field)})}))}(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]="ccb0d064-940b-5e14-ae63-2803aced4ee7")}catch{}})();function Vh(e,t,n,r,i=40){let o=i===1/0?1/0:Number.isFinite(i)?Math.max(0,Math.floor(i)):40,s=new Map(t.map(l=>[l.path,l])),a={missing_linked_path_rows_count:0,missing_linked_path_rows:[],missing_linked_path_rows_truncated:!1,missing_linked_links_count:0,active_missing_linked_links_count:0,legacy_closed_missing_linked_links_count:0,legacy_terminal_missing_linked_links_count:0,active_missing_linked_paths_count:0},c=Bh(e,n).map(l=>{let d=[],u=[];for(let f of l.items){let p=ri(f.status,r)??f.status;r.terminal_statuses.has(p)?(u.push(f),p===r.close_status&&(a.legacy_closed_missing_linked_links_count+=1)):d.push(f)}a.missing_linked_links_count+=l.items.length,a.active_missing_linked_links_count+=d.length,a.legacy_terminal_missing_linked_links_count+=u.length,d.length>0&&(a.active_missing_linked_paths_count+=1);let m=s.get(l.path);return{...l,candidates:m?.candidates??[],candidates_truncated:m?.candidates_truncated??!1,link_count:l.items.length,active_link_count:d.length,items:[...d,...u].slice(0,o),items_truncated:l.items.length>o}});return c.sort((l,d)=>+(d.active_link_count>0)-+(l.active_link_count>0)||l.path.localeCompare(d.path)),a.missing_linked_path_rows_count=c.length,a.missing_linked_path_rows=c.slice(0,o),a.missing_linked_path_rows_truncated=c.length>o,a}import jn from"node:fs/promises";import Fn 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]="9bcae2f2-3739-5ef8-b080-daaaf7df2681")}catch{}})();async function OA(e,t){let n=[...new Set(Object.values(t))],r=[];return await Promise.all(n.map(async i=>{let o;try{o=await jn.readdir(Fn.join(e,i))}catch{return}for(let s of o)for(let a of Jn)if(s.toLowerCase().endsWith(a)){r.push({relativePath:`${i}/${s}`,id:s.slice(0,-a.length)});break}})),r.sort((i,o)=>i.relativePath.localeCompare(o.relativePath))}function DA(e,t){let{id:n,relativePath:r,liveItemIds:i,out:o}=e,s=De(t);if(s){o.conflictMarkers.push({id:n,path:r,line:s.line,detail:`unresolved merge conflict marker ${s.marker}`});return}let a=PA(e,t);a!==null&&(a.op==="delete"&&i.has(n)&&o.resurrected.push({id:n,deleted_at:typeof a.ts=="string"?a.ts:"",deleted_by:typeof a.author=="string"?a.author:""}),a.op==="history_repair"&&Array.isArray(a.patch)&&a.patch.length>0&&(o.repairReconciliations+=1))}function PA(e,t){let{id:n,relativePath:r,out:i}=e,o=null,s=!1,a=t.split(/\r?\n/).map((c,l)=>({content:c.trim(),number:l+1})).filter(c=>c.content.length>0);for(let c of a){try{let l=JSON.parse(c.content);if(typeof l!="object"||l===null||Array.isArray(l))throw new TypeError("history entry must be an object");o=l}catch{return i.unparseable.push({id:n,path:r,line:c.number,detail:"history line is not a valid JSON object"}),null}if(o.op==="create"){if(s)return i.unparseable.push({id:n,path:r,line:c.number,detail:"duplicate item identity: more than one create event in one history stream"}),null;s=!0}}return o}function Xa(e,t){let n=typeof t=="object"&&t!==null&&"code"in t&&typeof t.code=="string"?t.code:"UNKNOWN";return`${e} could not be read (error code: ${n})`}async function NA(e,t){let n={conflictMarkers:[],unparseable:[],resurrected:[],repairReconciliations:0,scanned:0},r;try{r=await jn.readdir(Fn.join(e,"history"))}catch{return n}for(let i of r.sort((o,s)=>o.localeCompare(s))){if(!i.endsWith(".jsonl"))continue;n.scanned+=1;let o;try{o=await jn.readFile(Fn.join(e,"history",i),"utf8")}catch(s){n.unparseable.push({id:i.slice(0,-6),path:`history/${i}`,detail:Xa("history stream",s)});continue}DA({id:i.slice(0,-6),relativePath:`history/${i}`,liveItemIds:t,out:n},o)}return n}function Jh(e){let t=De(e);if(t)return`unresolved merge conflict marker ${t.marker} at line ${t.line}`;try{return JSON.parse(e),null}catch(n){return`invalid JSON (${String(n)})`}}async function LA(e){let t=[],n=0,r=null;try{r=await V(Lt(e))}catch(o){n+=1,t.push({path:"settings.json",detail:Xa("configuration file",o)})}if(r!==null){n+=1;let o=Jh(r);o!==null&&t.push({path:"settings.json",detail:o})}let i;try{i=await jn.readdir(Fn.join(e,"schema"))}catch{return{scanned:n,unparseable:t}}for(let o of i.sort((s,a)=>s.localeCompare(a))){if(!o.endsWith(".json"))continue;n+=1;let s;try{s=await jn.readFile(Fn.join(e,"schema",o),"utf8")}catch(c){t.push({path:`schema/${o}`,detail:Xa("configuration file",c)});continue}let a=Jh(s);a!==null&&t.push({path:`schema/${o}`,detail:a})}return{scanned:n,unparseable:t}}async function Kh(e,t,n,r={}){let i=await OA(e,n),o=new Set(i.map(u=>u.id)),s=new Map;for(let u of i){let m=s.get(u.id);m===void 0?s.set(u.id,[u.relativePath]):m.push(u.relativePath)}let a=[...s.entries()].filter(([,u])=>u.length>1).map(([u,m])=>({id:u,paths:[...m].sort((f,p)=>f.localeCompare(p))})).sort((u,m)=>u.id.localeCompare(m.id)),c=(await Promise.all(i.map(async u=>{if(!t.has(u.id))return{path:u.relativePath,id:u.id};try{let m=Fn.join(e,u.relativePath);return xt(await jn.readFile(m,"utf8"),{format:m.toLowerCase().endsWith(".md")?"json_markdown":"toon",schema:r.schema,extensionFieldNames:r.extensionFieldNames}),null}catch{return{path:u.relativePath,id:u.id}}}))).filter(u=>u!==null),l=await NA(e,o),d=await LA(e);return{item_files_on_disk:i.length,item_ids_on_disk:o.size,parsed_items:t.size,unreadable_item_files:c,duplicate_item_ids:a,history_streams_scanned:l.scanned,history_conflict_marker_streams:l.conflictMarkers,history_unparseable_streams:l.unparseable,resurrected_items:l.resurrected,history_repair_reconciliations:l.repairReconciliations,config_files_scanned:d.scanned,unparseable_config_files:d.unparseable}}import Sc from"node:fs/promises";import{realpathSync as JR}from"node:fs";import{execFile as KR}from"node:child_process";import be from"node:path";import{promisify as YR}from"node:util";(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]="c1b189d7-2939-5891-b936-5f208dc8f5ff")}catch{}})();var MA=["metadata","resolution"],Za=["metadata","resolution","estimates","timestamps","lifecycle"],jA="completed";function Qa(e){return`"${e.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`}function Yh(e){let t=e?.trim();return t!==void 0&&t.length>0?t:void 0}function Xh(e){let t=[];for(let n of e){if(!n.missing_fields.includes("resolution"))continue;let r=Yh(n.close_reason)??jA;t.push({item_id:n.id,check:"resolution",field:"resolution",kind:"set_resolution",value:r,command:`pm update ${n.id} --resolution ${Qa(r)}`,gate:"resolution"})}return t}function Zh(e){let t=[];for(let n of e){let r=Yh(n.resolution);r!==void 0&&t.push({item_id:n.id,check:"metadata",field:"close_reason",kind:"set_close_reason",value:r,command:`pm update ${n.id} --close-reason ${Qa(r)}`,gate:"metadata"})}return t}function Qh(e,t){return e.map(n=>{let r=ad(n.type,t);return{item_id:n.id,check:"metadata",field:"estimated_minutes",kind:"set_estimate",value:String(r),command:`pm update ${n.id} --estimate ${r}`,gate:"estimates"}})}function e_(e){return e.map(t=>t.grandparent_id!==void 0&&t.grandparent_active===!0?{item_id:t.id,check:"lifecycle",field:"parent",kind:"reparent",parent_id:t.grandparent_id,command:`pm update ${t.id} --parent ${t.grandparent_id}`,gate:"lifecycle"}:{item_id:t.id,check:"lifecycle",field:"parent",kind:"unset_parent",command:`pm update ${t.id} --unset parent`,gate:"lifecycle"})}function t_(e){let t=[];for(let n of e){if(n.classification!=="deleted")continue;let r=n.link_kind==="files"?"files":"docs";t.push({item_id:n.item_id,check:"files",field:n.link_kind,kind:n.link_kind==="files"?"prune_file_link":"prune_doc_link",path:n.path,command:`pm ${r} ${n.item_id} --remove ${Qa(n.path)}`})}return t}function n_(e){let t=(e??[]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);if(t.length===0){if(e!==void 0&&e.length>0)throw new y(`--fix-scope values must not be empty. Supported values: ${Za.join(", ")}.`,g.USAGE);return new Set(MA)}let n=new Set;for(let r of t){let i=r.toLowerCase().replaceAll("-","_");if(Za.includes(i)){n.add(i);continue}throw new y(`Unknown --fix-scope value "${r}". Supported values: ${Za.join(", ")}.`,g.USAGE)}return n}function r_(e,t){let n=[],r=[];for(let i of e)i.gate!==void 0&&!t.has(i.gate)?r.push(i):n.push(i);return{applicable:n,gated:r}}function $r(e){return{item_id:e.item_id,check:e.check,field:e.field,command:e.command,...e.gate!==void 0?{gate:e.gate}:{}}}(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]="3b09b58f-2ec7-523e-87f3-8d828deb8480")}catch{}})();var FA=/^([A-Z][A-Z0-9]*-\d+)\b/iu;function UA(e,t={}){if(typeof e!="string")return null;let n=e.trim();if(n.length===0)return null;let r=FA.exec(n);if(!r)return null;let i=r[1],o=i.toUpperCase(),s=i.slice(0,i.lastIndexOf("-")),a=new Set((t.configuredPrefixes??[]).map(m=>m.trim().replace(/-+$/u,"").toUpperCase())),c=n.slice(i.length),l=t.evidenceText?.toUpperCase()??"",d=l.includes(`ISSUE CODE: ${o}`)||l.includes(`ISSUE CODE \`${o}\``)||l.includes(`\`${o}\``)||l.includes(`[${o}]`);return s===s.toUpperCase()||/^\s*(?::|—|–|\])/u.test(c)||a.has(s.toUpperCase())||d?o:null}function i_(e){return typeof e=="string"&&e.trim().length>0}function zA(e){let t=new Set(e.map(a=>a.id.toLowerCase())),n=new Map,r=new Map;for(let a of e){let c=a.id.toLowerCase(),l=new Set([...a.parent===null?[]:[a.parent.toLowerCase()],...a.derivations].filter(d=>d!==c&&t.has(d)));n.set(c,l);for(let d of l){let u=r.get(d)??[];u.push(c),r.set(d,u)}}let o=[...[...n].filter(([,a])=>a.size===0).map(([a])=>a)],s=new Set;for(let a=0;a<o.length;a+=1)for(let c of r.get(o[a])??[]){let l=n.get(c);l.delete(o[a]),l.size===0&&(s.add(c),o.push(c))}return e.filter(a=>!s.has(a.id.toLowerCase()))}function o_(e,t={}){let n=new Map;for(let i of e){if(typeof i.title!="string"||i_(i.duplicate_of))continue;let o=UA(i.title,{...t,evidenceText:i.body});if(o===null)continue;let s=n.get(o);s||(s=[],n.set(o,s)),s.some(a=>a.id===i.id)||s.push({id:i.id,title:i.title,parent:i_(i.parent)?i.parent.trim():null,derivations:(i.dependencies??[]).filter(a=>["discovered_from","supersedes","incident_from"].includes(a.kind)).map(a=>a.id.trim().toLowerCase()).filter(a=>a!==i.id.toLowerCase())})}let r=[];for(let[i,o]of n){if(o.length<2)continue;let s=zA(o);if(s.length<2)continue;let a=[...s].sort((c,l)=>c.id.localeCompare(l.id));r.push({code:i,count:a.length,ids:a.map(c=>c.id),titles:a.map(c=>c.title)})}return r.sort((i,o)=>i.code.localeCompare(o.code))}(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]="b51a9fba-7bbe-573b-a708-5ffea6fa040f")}catch{}})();function s_(e){let t=new Map;for(let r of e){let i=t.get(r.item_type);i||(i=new Map,t.set(r.item_type,i)),i.set(r.field,(i.get(r.field)??0)+1)}let n={};for(let r of[...t.keys()].sort((i,o)=>i.localeCompare(o))){let i=t.get(r),o={};for(let s of[...i.keys()].sort((a,c)=>a.localeCompare(c)))o[s]=i.get(s);n[r]=o}return n}(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]="ede22770-cb10-5054-85a7-89bb2758c25f")}catch{}})();var a_=3;function c_(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?e:e.slice(t+1)}function l_(e,t,n=a_){let r=Number.isFinite(n)&&n>=1?Math.floor(n):a_,i=new Map;for(let o of t){let s=c_(o);if(s.length===0)continue;let a=i.get(s);a?a.push(o):i.set(s,[o])}return e.map(o=>{if(o.includes(",")||o.replace(/^[a-z]:[\\/]/i,"").includes(":"))return{path:o,classification:"malformed",candidates:[],candidates_truncated:!1};let s=(i.get(c_(o))??[]).filter(a=>a!==o).sort((a,c)=>a.localeCompare(c));return s.length===0?{path:o,classification:"deleted",candidates:[],candidates_truncated:!1}:{path:o,classification:"moved",candidates:s.slice(0,r),candidates_truncated:s.length>r}})}function d_(e){return e.map(t=>t.classification==="moved"?`${t.path}:moved:${t.candidates[0]}`:`${t.path}:${t.classification}`)}(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]="6f94fb3c-3d6c-5543-a2f0-e12680459e71")}catch{}})();var HA=/^[a-z][a-z0-9+.-]+:\/\//i;function Or(e){return HA.test(e.trim())}import WA from"node:fs/promises";import je from"node:path";import GA from"fast-glob";(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]="bb855f72-341c-5dc3-ade5-dd3102275cd8")}catch{}})();var qA=["path","scope","note"],BA=["pattern","glob","path","scope","note"],VA=["path"],JA=["from","to"],KA=new Set(["note","scope"]);function m_(e){let t=e??"project";if(!Mo.includes(t))throw new y(`Invalid scope "${e}". Valid scopes: ${Mo.join(", ")} (default: project).`,g.USAGE);return t}function ec(e){if(e.startsWith("```")||e.includes(`
|
|
66
|
+
`)||/^(?:[-*+]\s+)?(?:path|scope|note)\s*[:=]/i.test(e))return!0;let t=e.indexOf(","),n=e.slice(0,t>=0?t:e.length),r=n.indexOf("=");return r>=0&&!/\s/u.test(e)&&(/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(e)||/^(?:[A-Za-z]:[\\/]|[\\/]{1,2}|\.\.?(?:[\\/]))/u.test(e)||[e.indexOf("/"),e.indexOf("\\")].some(i=>i>=0&&i<r))?!1:n.includes("=")||md(e)}function YA(e){let t=0;for(let n of e)if(n==="("&&(t+=1),n===")"&&(t-=1),t<0)return!1;return t===0}function XA(e){if(/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(e)&&!ec(e))return{path:e,scope:"project",note:void 0};let t=e.indexOf("](");if(e.startsWith("[")&&t>0&&e.endsWith(")")){let o=e.slice(t+2,-1).trim();if(o.length>0&&YA(o))return{path:o,scope:"project",note:e.slice(1,t).trim()||void 0}}let n=e.indexOf(",");if(n<0)return;let r=e.slice(0,n).trim(),i=e.slice(n+1).trim();if(!(r.length===0||!/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(i)))return{path:i,scope:"project",note:r}}function ZA(e,t){return e?e.flatMap(n=>{let r=n.trim();if(t==="doc"){let o=XA(r);if(o!==void 0)return[o]}fd(r,"--add",`${t} path`,ec(r));let i=ec(r)?Yn(n,"--add"):{path:r};if(Xn(i,"--add",qA),!i.path)throw new y(`--add requires path=<value> or a bare ${t} path`,g.USAGE);return[{path:i.path,scope:m_(i.scope),note:i.note?.trim()||void 0}]}):[]}function QA(e){return e?e.map(t=>{let n=t.trim();if(!n)throw new y("--add-glob requires a glob pattern value",g.USAGE);if(n.includes("=")||/^(?:[-*+]\s+)?(?:pattern|glob|path)\s*[:=]/i.test(n)||n.startsWith("```")){let r=Yn(n,"--add-glob");Xn(r,"--add-glob",BA);let i=r.pattern?.trim()||r.glob?.trim()||r.path?.trim();if(!i)throw new y("--add-glob key/value form requires pattern=<glob>",g.USAGE);return{pattern:i,scope:m_(r.scope),note:r.note?.trim()||void 0}}return{pattern:n,scope:"project"}}):[]}function eR(e){return e?e.map(t=>{let n=t.trim();if(!n)throw new y("--remove requires a path value",g.USAGE);if(n.includes("=")||/^(?:[-*+]\s+)?path\s*[:=]/i.test(n)||n.startsWith("```")){let r=Yn(n,"--remove"),i=Object.keys(r).filter(o=>KA.has(o.toLowerCase()));if(i.length>0)throw new y(`--remove identifies a linked artifact by path only and does not accept ${i.map(o=>`"${o}"`).join(", ")}. Pass just the path (path=<value>, path:<value>, or a bare path); record removal context with --message "<why removed>".`,g.USAGE);if(Xn(r,"--remove",VA),!r.path)throw new y("--remove key/value form requires path=<value>",g.USAGE);return r.path}return n}):[]}function tR(e){return e?e.map(t=>{let n=Yn(t,"--migrate");Xn(n,"--migrate",JA);let r=n.from?.trim(),i=n.to?.trim();if(!r||!i)throw new y("--migrate requires from=<value> and to=<value>",g.USAGE);return{from:r,to:i}}):[]}function Dr(e,t){let n=e;for(let r of t)n.startsWith(r.from)&&(n=`${r.to}${n.slice(r.from.length)}`);return n}function nR(e,t,n=[]){if(e.length===0||t.length===0)return;let r=new Set(e.map(o=>Dr(o.path,n))),i=[...new Set(t.map(o=>Dr(o,n)).filter(o=>r.has(o)))].sort((o,s)=>o.localeCompare(s));if(i.length!==0)throw new y(`Linked artifact mutation cannot add and remove the same normalized path in one transaction: ${i.join(", ")}. Split the replacement into separate commands so each history event has one unambiguous intent.`,g.USAGE,{code:"linked_artifact_mutation_conflict",reason:"same_path_added_and_removed",required:"Use distinct normalized paths for --add and --remove in one invocation.",why:"Conflicting batch intent cannot be applied deterministically without silently discarding metadata or a removal.",nextSteps:["Run the removal and addition as separate commands with a --message describing each intent."]})}function bt(e){return e.split(je.sep).join("/")}function tc(e,t,n=process.cwd()){let r=e.trim();if(Or(r))return r;if(je.isAbsolute(r)||/^[A-Za-z]:[\\/]/.test(r))return bt(r.replaceAll("\\",je.sep));let i=je.relative(t,n);return i.startsWith(`..${je.sep}`)||i===".."||je.isAbsolute(i)?bt(je.normalize(r)):bt(je.relative(t,je.resolve(n,r)))}async function rR(e,t=process.cwd(),n=process.cwd()){let r=[];for(let i of e){let o=je.isAbsolute(i.pattern),s=await GA(i.pattern,{cwd:n,absolute:o,onlyFiles:!0,dot:!0,unique:!0,followSymbolicLinks:!0}),a=[...new Set(s.map(c=>tc(c,t,n)))].sort((c,l)=>c.localeCompare(l));for(let c of a)r.push({path:c,scope:i.scope,note:i.note})}return r}function iR(e,t,n){if(t===void 0)return e;if(!n)throw new y("--note requires --add or --add-glob in the same invocation (the note annotates the links being added)",g.USAGE);let r=t.trim();return r.length===0?e:e.map(i=>i.note===void 0?{...i,note:r}:i)}function oR(e){return`${e.path}::${e.scope}`}function nc(e){return[...e].sort((t,n)=>{let r=t.path.localeCompare(n.path);return r!==0?r:t.scope.localeCompare(n.scope)})}function rc(e){return[...new Map(e.map(t=>[oR(t),t])).values()].map(t=>({...t,note:t.note?.trim()||void 0}))}async function sR(e,t=process.cwd()){let n=[...new Set(e)].sort((a,c)=>a.localeCompare(c)),r=[],i=[],o=[],s=[];for(let a of n){if(Or(a)){s.push(a.trim());continue}let c=je.isAbsolute(a)?a:je.resolve(t,a);try{(await WA.stat(c)).isFile()?r.push(a):o.push(a)}catch(l){if(typeof l=="object"&&l!==null&&"code"in l&&kt(l)){i.push(a);continue}o.push(a)}}return{checked:n.length,existing_files:r,missing_paths:i,non_file_paths:o,remote_references:s}}function aR(e,t,n,r){let i=0;for(let s=0;s<e.length;s+=1){let a=Dr(e[s].path,r);a!==e[s].path&&(e[s]={...e[s],path:a},i+=1)}return{adds:t.map(s=>{let a=Dr(s.path,r);return a!==s.path&&(i+=1),{...s,path:a}}),removes:n.map(s=>Dr(s,r)),count:i}}function cR(e,t,n,r){let i=rc(e);for(let o of t){let s=i.findIndex(a=>a.path===o.path&&a.scope===o.scope);s<0?i.push(o):o.note!==void 0&&(i[s]={...i[s],note:o.note})}if(n.length>0)for(let o=i.length-1;o>=0;o-=1)n.includes(i[o].path)&&i.splice(o,1);return r?i:nc(i)}async function u_(e){let t=e.artifacts.map(n=>n.path);return{id:e.id,artifacts:e.artifacts,changed:e.changed,count:e.artifacts.length,migrations_applied:e.migrationsApplied&&e.migrationsApplied>0?e.migrationsApplied:void 0,validation:e.options.validatePaths||e.changed?await sR(t,e.workspaceRoot):void 0}}async function go(e,t,n,r){let{metadataKey:i}=r,o=_d(),s=N(process.cwd(),n.path),a=Je(s),c=process.cwd();await ne(s);let l=await $(s),d=G(l,H()),u=await o.resolveList(t.add,"--add"),m=await o.resolveList(t.addGlob,"--add-glob"),f=await o.resolveList(t.remove,"--remove"),p=await o.resolveList(t.migrate,"--migrate"),_=ZA(u,r.bareNoun).map(F=>({...F,path:tc(F.path,a,c)})),h=QA(m),w=await rR(h,a,c),v=iR([..._,...w],t.note,_.length>0||h.length>0),k=eR(f).map(F=>tc(F,a,c)),S=tR(p);if(nR(v,k,S),!(v.length>0||k.length>0||S.length>0)){let F=await Pe(s,e,l.id_prefix,l.item_format,d.type_to_folder);if(!F)throw new y(`Item ${e} not found`,g.NOT_FOUND);let ee=(await Ne(F,{schema:l.schema})).document.metadata[i]??[];return u_({id:F.id,artifacts:ee,changed:!1,options:t,workspaceRoot:a})}let R=q(t.author,l.author_default),E=await lt({pmRoot:s,settings:l,id:e,op:r.op,author:R,message:t.message,force:t.force,skipNoop:!0,mutate(F){let P=F.metadata,ee=P[i]??[],Ue=[...ee],ye=aR(Ue,v,k,S),ze=cR(Ue,ye.adds,ye.removes,r.supportsAppendStable&&t.appendStable===!0);ze.length>0?P[i]=ze:delete P[i];let He=!ol(ee,ze);return{changedFields:He?[i]:[],warnings:He&&ye.count>0?[`path_migrations_applied:${ye.count}`]:[]}}}),b=E.item[i]??[],j=E.warnings.find(F=>F.startsWith("path_migrations_applied:")),I=j?Number(j.slice(24)):0;return u_({id:E.item.id,artifacts:b,changed:E.changedFields.includes(i),migrationsApplied:I,options:t,workspaceRoot:a})}function yo(e,t){let n={};for(let[r,i]of Object.entries(e))n[r==="artifacts"?t:r]=i;return n}(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]="aef928ec-4a5b-5614-bb5c-cbf63f891845")}catch{}})();async function f_(e,t,n){let r=await go(e,t,n,{metadataKey:"docs",op:"docs_add",bareNoun:"doc",supportsAppendStable:!1});return yo(r,"docs")}import p_ from"node:fs/promises";import Fe 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]="573da024-c791-5ff2-b3ee-3529804bab43")}catch{}})();var lR=32768;function ic(e){return bt(Fe.normalize(e))}async function wo(e){try{return await p_.realpath(e)}catch{return Fe.resolve(e)}}function Un(e,t){let n=Fe.isAbsolute(e.path)?Fe.resolve(e.path):Fe.resolve(t,e.path);return`${ic(n)}::${e.scope}`}function vo(e,t,n){if(typeof e=="string"){let r=e.trim();r.length>0&&n.push({field:t,value:r});return}if(Array.isArray(e)){e.forEach((r,i)=>vo(r,`${t}[${i}]`,n));return}if(typeof e=="object"&&e!==null)for(let[r,i]of Object.entries(e))vo(i,t?`${t}.${r}`:r,n)}function dR(e){let t=[];return vo(e.metadata,"metadata",t),vo(e.body,"body",t),t}function uR(e){let t=e.trim();return t=t.replace(/^[`"'<([{]+/u,""),t=t.replace(/[`"'>)\]},;!?]+$/u,""),t=t.replace(/[.]+$/u,""),t=t.replace(/:(?:\d+)(?::\d+)?$/u,""),t=t.replace(/[.]+$/u,""),t}function mR(e){let t=[],n=/(?:[A-Za-z]:[\\/]|\/)[^\s"'`<>()[\]{},;]+/gu,r=/(?:\.{1,2}[\\/])?(?:(?:[A-Za-z0-9_.@-]+[\\/])+[A-Za-z0-9_.@-]+|[A-Za-z0-9_.@-]+\.[A-Za-z0-9][A-Za-z0-9._-]*)/gu;for(let i of e){let o=new Set,s=i.value.slice(0,lR);for(let[a,c]of[[n,i.value],[r,s]]){a.lastIndex=0;for(let l of c.matchAll(a)){let d=uR(l[0]);!d||o.has(d)||(o.add(d),t.push({field:i.field,value:d}))}}}return t}async function fR(e,t,n=t){let r=Fe.isAbsolute(e)?Fe.resolve(e):Fe.resolve(n,e),i;try{i=await p_.stat(r)}catch{return}if(!i.isFile())return;let[o,s]=await Promise.all([wo(t),wo(r)]);if(he(o,s)){let a=Fe.relative(o,s);return!a||a.startsWith("..")||Fe.isAbsolute(a)?void 0:{path:ic(a),scope:"project"}}return{path:ic(r),scope:"global"}}async function pR(e,t,n=t){let r=new Set((e.metadata.files??[]).map(c=>Un(c,t))),i=new Map,o=mR(dR(e)),s=new Map;await Promise.all([...new Set(o.map(c=>c.value))].map(async c=>{s.set(c,await fR(c,t,n))}));let a=o.map(c=>({reference:c,resolved:s.get(c.value)}));for(let{reference:c,resolved:l}of a){if(!l)continue;let d=Un(l,t),u=i.get(d)??{path:l.path,scope:l.scope,sourceFields:new Set,originalPaths:new Set,sourceCount:0};u.sourceFields.add(c.field),u.originalPaths.add(c.value),u.sourceCount+=1,i.set(d,u)}return[...i.entries()].map(([c,l])=>({path:l.path,scope:l.scope,status:r.has(c)?"already_linked":"addable",source_count:l.sourceCount,source_fields:[...l.sourceFields].sort((d,u)=>d.localeCompare(u)),original_paths:[...l.originalPaths].sort((d,u)=>d.localeCompare(u))})).sort((c,l)=>{let d=c.status.localeCompare(l.status);if(d!==0)return d;let u=c.path.localeCompare(l.path);return u!==0?u:c.scope.localeCompare(l.scope)})}async function h_(e,t,n){let r=await go(e,t,n,{metadataKey:"files",op:"files_add",bareNoun:"file",supportsAppendStable:!0});return yo(r,"files")}async function hR(e,t){let n=await wo(t),r=await Promise.all(e.map(async o=>{let s=o.trim();if(!s)throw new y("Files lookup paths must not be empty.",g.USAGE);if(!Fe.isAbsolute(s))return bt(s);let a=await wo(s);return he(n,a)?bt(Fe.relative(n,a)):bt(a)})),i=[...new Set(r)].sort((o,s)=>o.localeCompare(s));if(i.length===0)throw new y("Files lookup requires at least one path.",g.USAGE);return i}function _R(e){for(let[r,i]of[["limit",e.limit],["offset",e.offset]])if(i!==void 0&&(!Number.isInteger(i)||i<0))throw new y(`Files lookup ${r} must be a non-negative integer.`,g.USAGE);let{offset:t=0,limit:n=50}=e;return{offset:Math.max(0,Math.floor(t)),limit:e.noTruncate?void 0:Math.max(0,Math.floor(n))}}function __(e){return{id:e.id,title:e.title,type:e.type,status:e.status,priority:e.priority,updated_at:e.updated_at}}function g_(e,t){let n=e.item.priority-t.item.priority;if(n!==0)return n;let r=t.item.updated_at.localeCompare(e.item.updated_at);return r===0?e.item.id.localeCompare(t.item.id):r}function gR(e){return e.metadata.map(t=>({item:t,files:(t.files??[]).filter(n=>e.paths.includes(bt(n.path))&&(e.scope===void 0||n.scope===e.scope)).sort((n,r)=>{let i=n.path.localeCompare(r.path);return i===0?n.scope.localeCompare(r.scope):i})})).filter(t=>t.files.length>0).sort(g_)}async function yR(e){if(e.explain)return Uu({workspaceRoot:e.workspaceRoot,paths:e.paths,candidates:e.matching,corpus:e.metadata,...e.lineRange?{lineRange:e.lineRange}:{},...e.decisionDepth===void 0?{}:{decisionDepth:e.decisionDepth}})}async function wR(e){if([e.strictRead,e.noTruncate,e.explain,Dl()].includes(!0))return null;let t=await hi(e.pmRoot,[...new Set(Object.values(e.typeToFolder))]);return t?Id({pmRoot:e.pmRoot,expectedSourceCursor:t.source_cursor,paths:e.paths,scope:e.scope,limit:e.limit,offset:e.offset}):null}async function vR(e){let t=[],n=await _n(e.pmRoot,e.settings.item_format,e.typeToFolder,t,e.settings.schema),r=gR({metadata:n,paths:e.paths,scope:e.scope}),i=t.filter(c=>/^item_list_(?:item|directory)_read_failed:/u.test(c));if(e.strictRead&&i.length>0)throw new y(`Files lookup could not read every item: ${i.join("; ")}`,g.GENERIC_FAILURE);let o=await yR({explain:e.explain,workspaceRoot:e.workspaceRoot,paths:e.paths,matching:r,metadata:n,lineRange:e.lineRange,decisionDepth:e.decisionDepth}),a=(o?[...r].sort((c,l)=>{let d=o.explanations.get(l.item.id).score-o.explanations.get(c.item.id).score;return d!==0?d:g_(c,l)}):r).slice(e.offset,e.limit===void 0?void 0:e.offset+e.limit);return{paths:e.paths,total:r.length,count:a.length,offset:e.offset,limit:e.limit??null,has_more:e.offset+a.length<r.length,truncated:e.offset+a.length<r.length,completeness:{status:i.length===0?"complete":"partial",source:"source_scan"},warnings:t,matches:a.map(c=>({item:__(c.item),files:c.files,...o?{traceability:o.explanations.get(c.item.id)}:{}})),...o?{traceability_receipt:o.receipt}:{}}}async function Dz(e,t){let n=N(process.cwd(),t.path),r=Je(n);await ne(n);let i=await hR(e.paths,r);if(e.lineRange&&i.length!==1)throw new y("Files lookup line attribution requires exactly one source path.",g.USAGE);let o=await $(n),s=G(o,H()),{offset:a,limit:c}=_R(e),l=await wR({pmRoot:n,typeToFolder:s.type_to_folder,paths:i,scope:e.scope,limit:c,offset:a,strictRead:e.strictRead===!0,noTruncate:e.noTruncate===!0,explain:e.explain===!0||e.lineRange!==void 0});return l?{paths:i,total:l.total,count:l.matches.length,offset:a,limit:c,has_more:a+l.matches.length<l.total,truncated:a+l.matches.length<l.total,completeness:{status:"unchecked",source:"index"},warnings:[],matches:l.matches.map(d=>({item:__(d.item),files:d.files}))}:vR({pmRoot:n,settings:o,typeToFolder:s.type_to_folder,paths:i,scope:e.scope,limit:c,offset:a,strictRead:e.strictRead===!0,workspaceRoot:r,explain:e.explain===!0||e.lineRange!==void 0,lineRange:e.lineRange,decisionDepth:e.decisionDepth})}async function Pz(e,t,n){let r=N(process.cwd(),n.path),i=Je(r);await ne(r);let o=await $(r),s=G(o,H()),a=await Pe(r,e,o.id_prefix,o.item_format,s.type_to_folder);if(!a)throw new y(`Item ${e} not found`,g.NOT_FOUND);let c=await Ne(a,{schema:o.schema}),l=await pR(c.document,i,process.cwd()),d=l.filter(b=>b.status==="addable"),u=l.filter(b=>b.status==="already_linked"),m=t.apply===!0,f=t.note?.trim()||"discovered from item text";if(!m||d.length===0){let b=c.document.metadata.files??[];return{id:a.id,files:b,changed:!1,apply:m,count:b.length,candidate_count:l.length,addable_count:d.length,added_count:0,skipped_existing_count:u.length,candidates:l,added:[],skipped_existing:u}}let p=q(t.author,o.author_default),_=d.map(b=>({path:b.path,scope:b.scope,note:f})),h=[],w=new Set,v=await lt({pmRoot:r,settings:o,id:e,op:"files_discover",author:p,message:t.message??"Discover referenced file links",force:t.force,mutate(b){let j=[...b.metadata.files??[]],I=new Set(j.map(ee=>Un(ee,i)));h=[],w.clear();for(let[ee,Ue]of _.entries()){let ye=Un(Ue,i);I.has(ye)||(j.push(Ue),I.add(ye),h.push(Ue),w.add(ee))}let F=rc(j),P=t.appendStable?F:nc(F);return P.length>0?b.metadata.files=P:delete b.metadata.files,{changedFields:h.length>0?["files"]:[],warnings:h.length!==_.length?[`files_discover_skipped_existing:${_.length-h.length}`]:[]}}}),k=v.item.files??[],S=new Set(h.map(b=>Un(b,i))),x=k.filter(b=>S.has(Un(b,i))),R=d.filter((b,j)=>!w.has(j)),E=[...u,...R];return{id:v.item.id,files:k,changed:x.length>0,apply:!0,count:k.length,candidate_count:l.length,addable_count:d.length,added_count:x.length,skipped_existing_count:E.length,candidates:l,added:x,skipped_existing:E}}import{readFileSync as bR}from"node:fs";import bo 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]="e69d7d9b-9ae8-5337-9ea3-a8e40a62d3af")}catch{}})();var kR=new Set(["get","history","restore","update","close","delete","append","claim","release","comments","notes","learnings","files","docs","deps","test"]),oc=new Set(["--pm-path","--path","--author"]),SR={get:new Set(["--depth","--fields","--tree-depth","--tree_depth","--at","--format"]),history:new Set(["--limit","--field","--format"]),restore:new Set(["--message"]),update:new Set(["--title","-t","--description","-d","--body","-b","--status","-s","--close-reason","--close_reason","--priority","-p","--type","--tags","--add-tags","--add_tags","--remove-tags","--remove_tags","--deadline","--estimated-minutes","--estimate","--estimated_minutes","--acceptance-criteria","--ac","--acceptance_criteria","--definition-of-ready","--definition_of_ready","--order","--rank","--goal","--objective","--value","--impact","--outcome","--why-now","--why_now","--message","--assignee","--parent","--reviewer","--risk","--confidence","--sprint","--release","--blocked-by","--blocked_by","--blocked-reason","--blocked_reason","--unblock-note","--unblock_note","--reporter","--severity","--environment","--repro-steps","--repro_steps","--resolution","--expected-result","--expected_result","--expected","--actual-result","--actual_result","--actual","--affected-version","--affected_version","--fixed-version","--fixed_version","--component","--regression","--customer-impact","--customer_impact","--dep","--dep-remove","--dep_remove","--comment","--note","--learning","--file","--test","--doc","--reminder","--event","--type-option","--type_option","--field","--unset","--body-file"]),close:new Set(["--reason","-r","--close-reason","--duplicate-of","-d","--message","-m","--validate-close","--resolution","--expected-result","--expected_result","--expected","--actual-result","--actual_result","--actual"]),delete:new Set(["--message"]),append:new Set(["--body","--text","--message"]),claim:new Set(["--assignee","--message","--type","--tag","--priority","--assignee-filter","--parent","--sprint","--release","--max-attempts"]),release:new Set(["--assignee","--message"]),comments:new Set(["--add","--body","--comment","--file","--edit","--delete","--limit","--message"]),notes:new Set(["--add","--file","--edit","--delete","--limit","--message"]),learnings:new Set(["--add","--file","--edit","--delete","--limit","--message"]),files:new Set(["--add","--add-glob","--remove","--migrate","--note","--message"]),docs:new Set(["--add","--add-glob","--remove","--migrate","--note","--message"]),deps:new Set(["--format","--max-depth","--collapse","--node-limit","--edge-limit","--token-budget","--cursor","--direction","--kind"]),test:new Set(["--add","--add-json","--remove","--match","--only-index","--timeout","--env-set","--env-clear","--pm-context","--message"])},ER=new Set(["-p","--package"]),xR=new Set(["-c","--call"]),IR=new Set(["-c","-C","--config","--dir","--filter","--workspace-dir"]),AR=new Set(["-C","--prefix","--userconfig","--cache"]),jz=new Set(["--cwd"]),Fz=new Set(["--cwd"]),RR=new Set(["exec","x"]),Uz=new Set(["run","run-script"]),zz=new Set(["-C","--dir","--cwd","-w","--workspace","--filter"]);function CR(e){return e.split(/&&|\|\||\||;/).map(t=>t.trim()).filter(t=>t.length>0)}function TR(e,t=process.cwd()){let n=$R(e.split(" ").filter(s=>s.length>0));if(n.length===0)return null;let[r,...i]=n;if(y_(r)||w_(r,t))return i;if(r==="node"&&i[0]&&w_(i[0],t))return i.slice(1);let o=r==="npx"||r==="bunx"?sc(i):r==="pnpm"?PR(i):r==="npm"?NR(i):null;return o&&(y_(o.command)||DR(o.command))?o.args:null}var v_=(e,t="pm")=>{let n=t.trim().toLowerCase(),r=n.length;for(;r>0&&n[r-1]==="-";)r-=1;let i=n.slice(0,r);if(i.length===0)return[];let o=e.trim().replaceAll("\\","/").replaceAll('"',"").replaceAll("'","").replaceAll(/\s+/g," ").toLowerCase(),s=new Set;for(let a of CR(o)){let c=TR(a),l=c?LR(c):null,d=l&&kR.has(l.subcommand)?MR(l.remaining,SR[l.subcommand]):void 0,u=d?.trim().toLowerCase();u?.startsWith(`${i}-`)===!0&&u.length>i.length+1&&s.add(d)}return[...s].sort((a,c)=>a.localeCompare(c))};function $R(e){let t=0;for(e[t]==="env"&&(t+=1);t<e.length;){let n=e[t];if(/^(?:[a-z_][a-z0-9_]*|\$env:[a-z_][a-z0-9_]*)=.*/.test(n)){t+=1;continue}break}return e.slice(t)}function Hz(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="--"){t+=1;continue}if(n.startsWith("-")){if(oc.has(n)){t+=2;continue}t+=1;continue}return n}}function y_(e){return e==="pm"||e==="pm.cmd"||e==="pm.exe"||e.endsWith("/pm")||e.endsWith("/pm.cmd")||e.endsWith("/pm.exe")}function OR(e){let t=e.trim();if(!t.startsWith("@")){let i=t.indexOf("@");return i===-1?t:t.slice(0,i)}let n=t.indexOf("/");if(n===-1)return t;let r=t.indexOf("@",n+1);return r===-1?t:t.slice(0,r)}function DR(e){let t=OR(e);return t==="pm-cli"||t.endsWith("/pm-cli")||e==="pm-cli"||e.endsWith("/pm-cli")}function w_(e,t=process.cwd()){let n=e.replaceAll("\\","/");if(n!=="dist/cli.js"&&n!=="./dist/cli.js"&&!n.endsWith("/dist/cli.js"))return!1;let r=bo.resolve(t,e);try{return JSON.parse(bR(bo.join(bo.dirname(bo.dirname(r)),"package.json"),"utf8")).name==="@unbrained/pm-cli"}catch{return!1}}function sc(e){let t=0;for(;t<e.length;){let r=e[t];if(r==="--"){t+=1;break}if(!r.startsWith("-"))break;let i=/^(?:-c|--call)=(.*)$/.exec(r);if(i){let o=i[1];return o?{command:o,args:e.slice(t+1)}:null}if(xR.has(r)){t+=1;break}t+=ER.has(r)&&!r.includes("=")?2:1}let n=e[t];return n?{command:n,args:e.slice(t+1)}:null}function b_(e,t){let n=0;for(;n<e.length;){let r=e[n];if(r==="--"){n+=1;continue}if(r.startsWith("-")){if(r.includes("=")){n+=1;continue}if(t.has(r)){n+=2;continue}n+=1;continue}return{subcommand:r,args:e.slice(n+1)}}return null}function PR(e){let t=b_(e,IR);return t?.subcommand!=="dlx"?null:sc(t.args)}function NR(e){let t=b_(e,AR);return!t||!RR.has(t.subcommand)?null:sc(t.args)}function LR(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="--"){t+=1;continue}if(n.startsWith("-")){if(oc.has(n)){t+=2;continue}t+=1;continue}return{subcommand:n,remaining:e.slice(t+1)}}return null}function MR(e,t=new Set){for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="--")return e[n+1];if(!r.startsWith("-"))return r;!r.includes("=")&&(oc.has(r)||t.has(r))&&(n+=1)}}import{execFile as jR}from"node:child_process";import{readFile as FR}from"node:fs/promises";import S_ from"node:path";import{promisify as UR}from"node:util";(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]="eeb9bc22-b9e1-5449-9ad0-fbb1a14fb09d")}catch{}})();var zR=UR(jR),ac=1,HR="linked-test-trust.json";function cc(e){return S_.join(tl(e),HR)}function k_(){return{version:ac,acknowledged:{}}}async function lc(e){try{let t=JSON.parse(await FR(cc(e),"utf8"));return t.version!==ac||typeof t.acknowledged!="object"||t.acknowledged===null||Array.isArray(t.acknowledged)?k_():{version:ac,acknowledged:t.acknowledged}}catch{return k_()}}async function dc(e=process.cwd()){let t=process.env.GITHUB_HEAD_REF?.trim()||process.env.GITHUB_REF_NAME?.trim();if(t&&t!=="merge")return t;try{let{stdout:n}=await zR("git",["symbolic-ref","--quiet","--short","HEAD"],{cwd:e,encoding:"utf8",windowsHide:!0,timeout:1e4}),r=n.trim();return r.length===0?void 0:r}catch{return}}function uc(e=process.cwd()){return process.env.PM_SOURCE_WORKSPACE_ROOT?.trim()||e}function WR(e){return e===null||typeof e!="object"?!1:typeof e.author=="string"&&e.author.trim().length>0&&typeof e.created_at=="string"&&Ll(e.created_at)&&(e.source_kind==="local_mutation"||e.source_kind==="merge_union")}function Pr(e,t){return{...e?{source_ref:e}:{},...t?{current_source_ref:t}:{}}}function GR(e,t,n,r){return e?.map(i=>i.command&&!i.provenance?{...i,provenance:{author:t,created_at:n,source_kind:"local_mutation",...r?{source_ref:r}:{}}}:i)}async function Zz(e,t,n){if(!e||e.length===0)return e;let r=uc();return GR(e,t,n,await dc(r))}function E_(e){return ke(C({command:e.command??null,path:e.path??null,scope:e.scope,pm_context_mode:e.pm_context_mode??null,workspace_context_mode:e.workspace_context_mode??null,env_set:e.env_set??null,env_clear:e.env_clear??null,shared_host_safe:e.shared_host_safe??null,provenance:e.provenance??null,provenance_invalid:e.provenance_invalid??null}))}async function Qz(e,t,n){let r=await lc(e);return x_(t,n,r)}function x_(e,t,n){let r=E_(e),i=e.provenance?.source_ref;if(e.provenance===void 0&&e.provenance_invalid!==!0)return{fingerprint:r,trusted:!0,reason:"legacy"};let o=Object.hasOwn(n.acknowledged,r);return e.provenance_invalid===!0||!WR(e.provenance)?o?{fingerprint:r,trusted:!0,reason:"acknowledged",...Pr(void 0,t)}:{fingerprint:r,trusted:!1,reason:"invalid_provenance",...Pr(void 0,t)}:e.provenance.source_kind==="local_mutation"&&i===void 0?{fingerprint:r,trusted:!0,reason:"local_mutation",...Pr(void 0,t)}:e.provenance.source_kind==="local_mutation"&&i!==void 0&&i===t?{fingerprint:r,trusted:!0,reason:"local_source_ref",source_ref:i,current_source_ref:t}:o?{fingerprint:r,trusted:!0,reason:"acknowledged",...Pr(i,t)}:{fingerprint:r,trusted:!1,reason:"foreign_source_ref",...Pr(i,t)}}async function I_(e,t,n){let r=await lc(e);return t.map(i=>x_(i,n,r))}async function eH(e,t,n){let r=await lc(e),i=t.filter(o=>typeof o.command=="string"&&o.command.length>0).map(E_);for(let o of i)r.acknowledged[o]={acknowledged_at:n};return await Vn(S_.dirname(cc(e))),await Q(cc(e),`${JSON.stringify(r,null,2)}
|
|
67
67
|
`),{acknowledged:i.length,fingerprints:i}}(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]="3ae38c0a-7f43-5457-b9a5-d23491a371ea")}catch{}})();async function ko(e){return e.includeBody?Ht(e.pmRoot,e.settings.item_format,e.typeToFolder,e.warnings,e.settings.schema,{forceSourceScan:!0}):_n(e.pmRoot,e.settings.item_format,e.typeToFolder,e.warnings,e.settings.schema)}(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]="42402d5d-8074-591f-98b4-75f479509cb4")}catch{}})();var qR=5;async function So(e,t,n){let r=await qt(e,t),o=[["validate_history_drift_missing_streams",r.missingStreams.length],["validate_history_drift_unreadable_streams",r.unreadableStreams.length],["validate_history_drift_hash_mismatches",r.hashMismatches.length],["validate_history_drift_chain_mismatches",r.chainMismatches.length],["validate_history_drift_version_skews",r.versionSkews.length],["validate_history_drift_workspace_state_mismatches",r.workspaceStateMismatches.length],["validate_history_drift_workspace_state_missing",r.workspaceStateMissing.length],["validate_history_drift_workspace_state_unreadable",r.workspaceStateUnreadable.length]].filter(([,l])=>l>0).map(([l,d])=>`${l}:${d}`),s=n?Number.POSITIVE_INFINITY:qR,a=r.driftedItems.slice(0,s),c=r.identityDiscontinuities??[];return{check:{name:"history_drift",status:c.length>0?"error":o.length===0?"ok":"warn",ok:c.length===0&&o.length===0,details:{identity_discontinuities:c.slice(0,s),identity_discontinuities_count:c.length,identity_discontinuities_truncated:c.length>s,checked_items:t.length,drifted_items_count:r.driftedItems.length,drifted_items:a,drifted_items_truncated:a.length<r.driftedItems.length,counts:{missing_streams:r.missingStreams.length,unreadable_streams:r.unreadableStreams.length,hash_mismatches:r.hashMismatches.length,chain_mismatches:r.chainMismatches.length,version_skews:r.versionSkews.length,workspace_state_mismatches:r.workspaceStateMismatches.length,workspace_state_missing:r.workspaceStateMissing.length,workspace_state_unreadable:r.workspaceStateUnreadable.length},workspace_state_mismatches:r.workspaceStateMismatches,workspace_state_missing:r.workspaceStateMissing,workspace_state_unreadable:r.workspaceStateUnreadable,version_skews:r.versionSkews.slice(0,s)}},warnings: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]="c357729b-f316-51e7-9768-fc7bb4600e06")}catch{}})();function Eo(e,t){let n=e[0];if(e.length===1)return[n,n];let r=new Set(e),i=[n],o=new Set([n]),s=a=>{for(let c of(t.get(a)??[]).filter(l=>r.has(l))){if(c===n&&i.length>1)return i.push(n),!0;if(!o.has(c)){if(o.add(c),i.push(c),s(c))return!0;i.pop(),o.delete(c)}}return!1};return s(n)?[...i]:[...e,n]}function BR(e,t){if(typeof e!="string")return;let n=e.trim().toLowerCase();return n.length>0?t.get(n):void 0}function VR(e,t,n,r){for(let i of e.dependencies??[]){if(typeof i!="object"||i===null||typeof i.id!="string")continue;let o=r.resolve(i.kind);if(!o?.hierarchy)continue;let s=n.get(i.id.toLowerCase());s&&(o.hierarchyDirection==="source_parent"?t.get(s).push(e.id):t.get(e.id).push(s))}}function mc(e,t=Qn()){let n=new Map(e.map(i=>[i.id.toLowerCase(),i.id])),r=new Map(e.map(i=>[i.id,[]]));for(let i of[...e].sort((o,s)=>o.id.localeCompare(s.id))){let o=r.get(i.id),s=BR(i.parent,n);s&&o.push(s),VR(i,r,n,t)}for(let[i,o]of r)r.set(i,[...new Set(o)].sort());return r}function fc(e,t,n=Qn()){let r=gi(e,s=>t?vl(s,t):s==="closed"||s==="canceled",n),i=mc(e,n),o=r.cycles.map(s=>s.item_ids);return{cycle_count:o.length,active_cycle_count:r.cycles.filter(s=>!s.legacy_terminal).length,legacy_cycle_count:r.cycles.filter(s=>s.legacy_terminal).length,cycle_item_ids:[...new Set(o.flat())].sort(),cycle_sample_paths:o.map(s=>Eo(s,i).join("->")),cardinality_violation_count:r.cardinality_violations.length,active_cardinality_violation_count:r.cardinality_violations.filter(s=>!s.legacy_terminal).length,legacy_cardinality_violation_count:r.cardinality_violations.filter(s=>s.legacy_terminal).length,cardinality_violation_rows:r.cardinality_violations.map(s=>`${s.child_id}:${s.parent_ids.join(",")}:${s.legacy_terminal?"legacy":"active"}`),parent_divergence_count:r.divergences.length,active_parent_divergence_count:r.divergences.filter(s=>!s.legacy_terminal).length,legacy_parent_divergence_count:r.divergences.filter(s=>s.legacy_terminal).length,parent_divergence_rows:r.divergences.map(s=>`${s.child_id}:scalar=${s.scalar_parent_id}:dependencies=${s.dependency_parent_ids.join(",")}:${s.legacy_terminal?"legacy":"active"}`)}}(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]="b32d3476-3270-555f-a684-80318df96527")}catch{}})();function Pt(e){return e.replaceAll("\\","/").replace(/^\.\/+/,"").replace(/^\/+/,"")}function pc(e){return Pt(e).replace(/\/+$/,"")}function Be(e){let t=te(e);if(!t)return;let n=t.toLowerCase();if(!(n==="none"||n==="null"||n==="n/a"||n==="na"))return t}function hc(e){let t=e.trim().replaceAll(/\s+/g," ");return t.length>120?`${t.slice(0,117)}...`: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]="1ffaaceb-cc25-5d2f-a840-763ba8c7e81f")}catch{}})();var XR=["src","tests","docs"],ZR=["README.md","PRD.md","CHANGELOG.md","AGENTS.md","CONTRIBUTING.md","SECURITY.md","CODE_OF_CONDUCT.md","LICENSE"],QR=new Set(["node_modules",".git",".cursor",".agents","dist","coverage"]),e0=["resolution","expected_result","actual_result"],t0=["default","tracked-all","tracked-all-strict"],A_=["core","strict","custom"],Ao=["off","warn","error"],yc=["author","acceptance_criteria","estimated_minutes","close_reason"],T_=[...yc,"reviewer","risk","confidence","sprint","release"],wc=Array.from(new Set(T_)),n0={author:"author",acceptance_criteria:"acceptance_criteria","acceptance-criteria":"acceptance_criteria",estimated_minutes:"estimated_minutes","estimated-minutes":"estimated_minutes",estimate:"estimated_minutes",close_reason:"close_reason","close-reason":"close_reason",reviewer:"reviewer",risk:"risk",confidence:"confidence",sprint:"sprint",release:"release"},r0={author:"validate_metadata_missing_author",acceptance_criteria:"validate_metadata_missing_acceptance_criteria",estimated_minutes:"validate_metadata_missing_estimate",close_reason:"validate_metadata_missing_close_reason",reviewer:"validate_metadata_missing_reviewer",risk:"validate_metadata_missing_risk",confidence:"validate_metadata_missing_confidence",sprint:"validate_metadata_missing_sprint",release:"validate_metadata_missing_release"},i0={author:"missing_author",acceptance_criteria:"missing_acceptance_criteria",estimated_minutes:"missing_estimated_minutes",close_reason:"closed_missing_close_reason",reviewer:"missing_reviewer",risk:"missing_risk",confidence:"missing_confidence",sprint:"missing_sprint",release:"missing_release"},o0={author:"missing_author_item_ids",acceptance_criteria:"missing_acceptance_criteria_item_ids",estimated_minutes:"missing_estimated_minutes_item_ids",close_reason:"closed_missing_close_reason_item_ids",reviewer:"missing_reviewer_item_ids",risk:"missing_risk_item_ids",confidence:"missing_confidence_item_ids",sprint:"missing_sprint_item_ids",release:"missing_release_item_ids"},s0={author:"missing_author_truncated",acceptance_criteria:"missing_acceptance_criteria_truncated",estimated_minutes:"missing_estimated_minutes_truncated",close_reason:"closed_missing_close_reason_truncated",reviewer:"missing_reviewer_truncated",risk:"missing_risk_truncated",confidence:"missing_confidence_truncated",sprint:"missing_sprint_truncated",release:"missing_release_truncated"},a0=32*1024*1024,c0=1e4,vc=40,Ve=5,l0=4096,d0=255,u0=YR(KR);function $_(e){let t={};for(let[n,r]of Object.entries(e))Array.isArray(r)||r===!1&&n.endsWith("_truncated")||(t[n]=typeof r=="object"&&r!==null?$_(r):r);return t}function m0(e){return{...e,checks:e.checks.map(t=>({...t,details:$_(t.details)})),...e.fixes?{fixes:{mode:e.fixes.mode,auto_fix:e.fixes.auto_fix,prune_missing:e.fixes.prune_missing,planned_count:e.fixes.planned_count,applied_count:e.fixes.applied_count,gated_count:e.fixes.gated_count,failed_count:e.fixes.failed_count}}:{}}}function Co(e,t){return ri(e,t)??e}function Nr(e,t){return t.terminal_statuses.has(Co(e,t))}function Nt(e){return[...new Set((e??[]).map(t=>t.trim().toLowerCase()).filter(t=>t.length>0))].sort((t,n)=>t.localeCompare(n))}function xo(e,t){return e.length!==t.length?!1:e.every((n,r)=>n===t[r])}function f0(e){let t=Nt(qc),n={blocked_reason:Nt(Hr.blocked_reason),resolution:Nt(Hr.resolution),actual_result:Nt(Hr.actual_result)},r=Nt(e.validation.lifecycle_stale_blocker_reason_patterns),i={blocked_reason:Nt(e.validation.lifecycle_closure_like_blocked_reason_patterns),resolution:Nt(e.validation.lifecycle_closure_like_resolution_patterns),actual_result:Nt(e.validation.lifecycle_closure_like_actual_result_patterns)};return{stale_blocker_reason_patterns:r,stale_blocker_reason_pattern_source:xo(r,t)?"default":"settings",closure_like_metadata_field_patterns:i,closure_like_metadata_field_pattern_sources:{blocked_reason:xo(i.blocked_reason,n.blocked_reason)?"default":"settings",resolution:xo(i.resolution,n.resolution)?"default":"settings",actual_result:xo(i.actual_result,n.actual_result)?"default":"settings"}}}function O_(e){let t=e?.trim().toLowerCase();if(!t||t.length===0)return"core";if(A_.includes(t))return t;throw new y(`Unknown --metadata-profile value "${e}". Supported values: ${A_.join(", ")}.`,g.USAGE)}function D_(e){let t=e?.trim().toLowerCase();if(!t||t.length===0)return"warn";if(Ao.includes(t))return t;throw new y(`Unknown --dependency-cycle-severity value "${e}". Supported values: ${Ao.join(", ")}.`,g.USAGE)}function P_(e){let t=e?.trim().toLowerCase();if(!t||t.length===0)return"warn";if(Ao.includes(t))return t;throw new y(`Unknown --parent-cycle-severity value "${e}". Supported values: ${Ao.join(", ")}.`,g.USAGE)}function p0(e){return[...new Set((e??[]).map(n=>n.trim().toLowerCase().replaceAll("-","_")))].map(n=>n0[n]).filter(n=>n!==void 0).sort((n,r)=>n.localeCompare(r))}function h0(e,t,n){let r=p0(n);return e==="core"?{profile:e,profile_source:t,required_fields:[...yc],configured_custom_fields:r,fallback_to_core:!1,warnings:[]}:e==="strict"?{profile:e,profile_source:t,required_fields:[...T_],configured_custom_fields:r,fallback_to_core:!1,warnings:[]}:r.length>0?{profile:e,profile_source:t,required_fields:r,configured_custom_fields:r,fallback_to_core:!1,warnings:[]}:{profile:e,profile_source:t,required_fields:[...yc],configured_custom_fields:r,fallback_to_core:!0,warnings:["validate_metadata_custom_profile_missing_required_fields:0"]}}var _0=new Set(["acceptance_criteria","estimated_minutes"]);function N_(e,t,n,r){return!r&&_0.has(t)&&Nr(e.status,n)?!1:t==="author"?!te(e.author):t==="acceptance_criteria"?!te(e.acceptance_criteria):t==="estimated_minutes"?!Number.isFinite(e.estimated_minutes):t==="close_reason"?Co(e.status,n)===n.close_status&&!te(e.close_reason):t==="reviewer"?!te(e.reviewer):t==="risk"?!te(e.risk):t==="confidence"?typeof e.confidence=="number"?!Number.isFinite(e.confidence):!te(e.confidence):t==="sprint"?!te(e.sprint):!te(e.release)}function L_(e){if(e===void 0)return"default";let t=e.trim().toLowerCase();if(t.length===0||t==="default")return"default";if(t==="tracked-all"||t==="tracked_all")return"tracked-all";if(t==="tracked-all-strict"||t==="tracked_all_strict")return"tracked-all-strict";throw new y(`Unknown --scan-mode value "${e}". Supported values: ${t0.join(", ")}.`,g.USAGE)}function M_(e){let t=process.env.PM_SOURCE_WORKSPACE_ROOT?.trim();if(t)return be.resolve(t);let n=be.resolve(e);if(n.replaceAll("\\","/").endsWith("/.agents/pm"))return be.dirname(be.dirname(n));let i=be.resolve(process.cwd()),o=R_(n),s=R_(i),a=be.relative(o,s);return a.length===0||!a.startsWith("..")&&!be.isAbsolute(a)?n:i}function R_(e){try{return JR.native(e)}catch{return be.resolve(e)}}function g0(e,t){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"&&t.includes(e.code)}async function Ec(e,t,n){let r=t.length>0?be.join(e,t):e,i;try{i=await Sc.readdir(r,{withFileTypes:!0})}catch(o){if(z(o))return;throw o}for(let o of i){if(o.name.startsWith("."))continue;let s=t.length>0?be.join(t,o.name):o.name;if(o.isDirectory()){if(QR.has(o.name))continue;await Ec(e,s,n);continue}o.isFile()&&n.push(Pt(s))}}async function bc(e){let t=[];for(let n of XR)await Ec(e,n,t);for(let n of ZR){let r=be.join(e,n);try{(await Sc.stat(r)).isFile()&&t.push(Pt(n))}catch{}}return[...new Set(t)].sort((n,r)=>n.localeCompare(r))}async function j_(e){try{let{stdout:t}=await u0("git",["ls-files","-z"],{cwd:e,encoding:"utf8",maxBuffer:a0,windowsHide:!0,timeout:c0}),n=t.split("\0").map(r=>Pt(r)).filter(r=>r.length>0);return[...new Set(n)].sort((r,i)=>r.localeCompare(i))}catch{return null}}function y0(e,t){let n=new Set,r=pc(Hc);r.length>0&&n.add(r);let i=pc(be.relative(t,e));return i.length>0&&!i.startsWith("..")&&n.add(i),[...n].sort((o,s)=>o.localeCompare(s))}function C_(e,t){for(let n of t)if(e===n||e.startsWith(`${n}/`))return!0;return!1}async function w0(e,t){if(t==="tracked-all"||t==="tracked-all-strict"){let r=await j_(e);if(r)return{requestedMode:t,appliedMode:t,source:"tracked-git",candidateFiles:r,candidateTotal:r.length,candidateScanned:r.length};let i=await bc(e);return{requestedMode:t,appliedMode:"default",source:"tracked-all-fallback-default",candidateFiles:i,candidateTotal:i.length,candidateScanned:i.length}}let n=await bc(e);return{requestedMode:t,appliedMode:"default",source:"default-curated",candidateFiles:n,candidateTotal:n.length,candidateScanned:n.length}}function oe(e,t=Ve){return e.length<=t?{values:e,truncated:!1}:{values:e.slice(0,t),truncated:!0}}function tn(e,t){if(t)return{values:e,truncated:!1,total:e.length};let n=oe(e,vc);return{values:n.values,truncated:n.truncated,total:e.length}}var v0={resolution:"--resolution",expected_result:"--expected-result",actual_result:"--actual-result"},b0={resolution:"Describe how this item was resolved",expected_result:"Describe the expected result",actual_result:"Describe the actual result"};function k0(e){let t=e.missing_fields.map(n=>`${v0[n]} "${b0[n]}"`).join(" ");return`pm update ${e.id} ${t} --message "Backfill resolution metadata"`}function F_(e,t){let n=e.details?.missing_resolution_remediation_hints,r=Array.isArray(n)&&n.length>0,i=r?n.filter(s=>typeof s=="string"):bm(t);if(i.length===0)return;let o=r&&e.details?.missing_resolution_remediation_hints_truncated===!0;e.details={...e.details,fix_hints:i,...o?{fix_hints_truncated:!0}:{}}}function U_(e){let t=new Set;return e.checkCompleteness&&t.add("completeness"),e.checkMetadata&&t.add("metadata"),e.checkResolution&&t.add("resolution"),(e.checkLifecycle||e.checkStaleBlockers)&&t.add("lifecycle"),e.checkFiles&&t.add("files"),e.checkHistoryDrift&&t.add("history_drift"),e.checkCommandReferences&&t.add("command_references"),e.checkStorageIntegrity&&t.add("storage_integrity"),t.size===0?(e.autoFix&&(t.add("metadata"),t.add("resolution"),t.add("lifecycle")),e.pruneMissing&&t.add("files"),t.size===0&&(t.add("metadata"),t.add("resolution"),t.add("lifecycle"),t.add("files"),t.add("command_references"),t.add("history_drift"),t.add("format_version"),t.add("completeness"),t.add("storage_integrity")),t):(e.pruneMissing&&t.add("files"),t)}var S0="validate_metadata_duplicate_issue_codes";function z_(e,t){if(e.length===0)return{rows:[],truncated:!1,warnings:[]};let n=t?e.length:Ve,r=e.slice(0,n);return{rows:r.map(o=>({code:o.code,count:o.count,ids:o.ids,titles:o.titles,remediation_hint:`Items ${o.ids.join(", ")} share issue code "${o.code}"; rename or merge so each logical code maps to one item.`})),truncated:r.length<e.length,warnings:[`${S0}:${e.length}`]}}function E0(e,t,n){let r=Object.fromEntries(wc.map(i=>[i,[]]));for(let i of e)for(let o of wc)N_(i,o,t,n)&&r[o].push(i.id);return r}function x0(e,t,n){let r=[...e.warnings];for(let i of e.required_fields){let o=t[i];o.length>0&&r.push(`${r0[i]}:${o.length}`)}return r.push(...n),r}function H_(e,t){let n={};for(let r of e.required_fields){let i=t[r],o=i?i.length:0,s=i0[r];n[s]=o}return n}function W_(e,t,n){let r=[];for(let i of e.required_fields){let o=t[i];if(o)for(let s of o){let a=n.get(s)?.type,c=typeof a=="string"&&a.length>0?a:"Unknown";r.push({item_type:c,field:i})}}return r}function I0(e,t,n,r){for(let i of t.required_fields){let o=n[i];if(!o||o.length===0)continue;let s=o0[i],a=s0[i];if(!s||!a)continue;let c=oe(o,r?o.length:Ve);e[s]=c.values,e[a]=c.truncated}}function G_(e,t,n){if(!e.required_fields.includes("close_reason"))return[];let r=t.close_reason;return r?r.map(i=>({id:i,resolution:te(n.get(i)?.resolution)})):[]}function q_(e,t,n){if(!e.required_fields.includes("estimated_minutes"))return[];let r=t.estimated_minutes;return r?r.map(i=>({id:i,type:te(n.get(i)?.type)})):[]}function A0(e,t,n,r,i){let o=new Map(e.map(w=>[w.id,w])),s=t.profile==="strict",a=E0(e,n,s),c=o_(e,{configuredPrefixes:i}),l=z_(c,r),d=x0(t,a,l.warnings),u=H_(t,a),m=W_(t,a,o),f=s_(m),p={checked_items:e.length,metadata_profile:t.profile,metadata_profile_source:t.profile_source,metadata_profile_fallback_to_core:t.fallback_to_core,required_fields:[...t.required_fields],supported_required_fields:[...wc],counts:u,missing_by_type:f,duplicate_issue_codes_count:c.length,duplicate_issue_codes:l.rows,duplicate_issue_codes_truncated:l.truncated};t.configured_custom_fields.length>0&&(p.configured_custom_required_fields=[...t.configured_custom_fields]),I0(p,t,a,r);let _=G_(t,a,o),h=q_(t,a,o);return{check:{name:"metadata",status:d.length===0?"ok":"warn",ok:d.length===0,details:p},warnings:d,closeReasonBackfillRows:_,estimateBackfillRows:h}}function R0(e,t,n){let r=new Set(t.terminal_done_statuses);r.add(t.close_status);let i=e.filter(m=>r.has(Co(m.status,t))),o=[],s=[];for(let m of i){let f=e0.filter(p=>!te(m[p]));f.length!==0&&(o.push({id:m.id,missing_fields:f}),s.push({id:m.id,missing_fields:f,close_reason:te(m.close_reason)}))}let a=o.length>0?[`validate_resolution_missing_fields:${o.length}`]:[],c=n?Number.POSITIVE_INFINITY:Ve,l=oe(o.map(m=>`${m.id}:${m.missing_fields.join(",")}`),c),d=o.map(m=>k0(m)),u=oe(d,c);return{check:{name:"resolution",status:a.length===0?"ok":"warn",ok:a.length===0,details:{checked_closed_items:i.length,missing_resolution_items:o.length,missing_resolution_rows:l.values,missing_resolution_rows_truncated:l.truncated,missing_resolution_remediation_hints:u.values,missing_resolution_remediation_hints_truncated:u.truncated}},warnings:a,resolutionBackfillRows:s}}function B_(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V_(e,t="pm",n=Jc()){let r=new Set(e.map(o=>o.id)),i=[...e].sort((o,s)=>o.id.localeCompare(s.id));return new Map(i.map(o=>{let s=new Set,a=Be(o.blocked_by);a&&r.has(a)&&s.add(a),(o.dependencies??[]).filter(l=>{let d=Be(l.kind);return d!==void 0&&n.resolve(d)?.ordering===!0}).map(l=>Be(l.id)).filter(l=>l!==void 0&&r.has(l)).forEach(l=>s.add(l));let c=Be(o.definition_of_ready);return K_(c??"",t).filter(l=>r.has(l)).forEach(l=>s.add(l)),[o.id,[...s].sort((l,d)=>l.localeCompare(d))]}))}function J_(e,t,n){let r=Bd(e,n?d=>Nr(d,n):void 0),i=r.active.map(d=>`${d.holder_id}:${d.target_id}:${d.kind}`),o=r.legacy_terminal.map(d=>`${d.holder_id}:${d.target_id}:${d.kind}:${d.holder_status}`),s=t?Number.POSITIVE_INFINITY:Ve,a=oe(i,s),c=oe(o,s),l=oe(r.active.map(d=>d.source==="parent"?`pm update ${d.holder_id} --unset parent`:d.source==="blocked_by"?`pm update ${d.holder_id} --unset blocked_by`:`pm update ${d.holder_id} --replace-deps '<correct dependency edges>'`),s);return{check:{name:"dependency_references",status:i.length===0?"ok":"warn",ok:i.length===0,details:{checked_items:e.length,dangling_reference_count:i.length+o.length,active_dangling_reference_count:i.length,dangling_reference_rows:a.values,dangling_reference_rows_truncated:a.truncated,legacy_terminal_dangling_reference_count:o.length,legacy_closed_dangling_reference_count:r.legacy_terminal.filter(d=>d.holder_status==="closed").length,legacy_terminal_dangling_reference_rows:c.values,legacy_terminal_dangling_reference_rows_truncated:c.truncated,no_active_blocker_sentinel_count:r.no_active_blocker_sentinels.length,remediation_hints:l.values,remediation_hints_truncated:l.truncated}},warnings:i.length>0?[`validate_dangling_dependency_references:${i.length}`]:[]}}function K_(e,t="pm"){let n=(t.trim().toLowerCase()||"pm").replace(/-+$/g,""),r=new RegExp(`(?:^|[^a-z0-9-])(${B_(n)}-[a-z0-9][a-z0-9-]*)`,"gi");return[...new Set([...e.matchAll(r)].map(i=>i[1].toLowerCase()))].sort((i,o)=>i.localeCompare(o))}function Y_(e){let t=0,n=new Map,r=new Map,i=[],o=new Set,s=[],a=d=>{n.set(d,t),r.set(d,t),t+=1,i.push(d),o.add(d);for(let m of e.get(d)??[])n.has(m)?o.has(m)&&r.set(d,Math.min(r.get(d),n.get(m))):(a(m),r.set(d,Math.min(r.get(d),r.get(m))));if(r.get(d)!==n.get(d))return;let u=[];for(;i.length>0;){let m=i.pop();if(o.delete(m),u.push(m),m===d)break}u.sort((m,f)=>m.localeCompare(f)),s.push(u)},c=[...e.keys()].sort((d,u)=>d.localeCompare(u));for(let d of c)n.has(d)||a(d);return s.filter(d=>{if(d.length>1)return!0;let u=d[0];return(e.get(u)??[]).includes(u)}).sort((d,u)=>d[0].localeCompare(u[0])||d.length-u.length||d.join(",").localeCompare(u.join(",")))}function X_(e,t="pm"){let n=V_(e,t),r=Y_(n),i=[...new Set(r.flat())].sort((s,a)=>s.localeCompare(a)),o=r.map(s=>Eo(s,n).join("->"));return{cycle_count:r.length,cycle_item_ids:i,cycle_sample_paths:o}}function Z_(e){return e.startsWith("docs/")?"docs_unowned":e.startsWith("tests/")?"tests_unowned":e.startsWith("src/")?"source_unowned":e.endsWith(".md")?"docs_unowned":"unlinked_existing"}function Ro(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}function Q_(e,t){let n=Ro(e).split("/").filter(Boolean),r=Ro(t).split("/").filter(Boolean),i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i+=1;return i}function C0(e,t){let n=Ro(t),r=Ro(e),i=t.endsWith("/")?t:`${t}/`,o=e.startsWith(i),s=n.length>0&&n===r,a=Q_(e,t);return!o&&!s&&a===0?null:o?{score:t.length+1e3,confidence:"path_prefix"}:s?{score:a+500,confidence:"same_directory"}:{score:a,confidence:"shared_directory"}}function T0(e,t,n){return e===void 0||n>e.score||n===e.score&&t.id.localeCompare(e.item.id)<0}function $0(e,t,n){let r=t==="docs_unowned"?"docs":"files",i;return n.flatMap(o=>(r==="docs"?o.docs??[]:o.files??[]).map(s=>({item:o,link:s}))).forEach(({item:o,link:s})=>{if(s.scope!=="project")return;let a=Pt(s.path);if(a.length===0||a===e)return;let c=C0(e,a);c!==null&&T0(i,o,c.score)&&(i={item:o,score:c.score,confidence:c.confidence})}),i?{id:i.item.id,type:i.item.type,title:i.item.title,status:i.item.status,confidence:i.confidence}:null}function eg(e,t){return e.map(n=>{let r=Z_(n),i=r==="docs_unowned"?"docs":"files",o=$0(n,r,t),s=o?.id??"<id>";return{path:n,classification:r,owner_candidate:o,remediation_hint:`pm ${i} ${s} --add path=${n},scope=project,note="<why this artifact belongs to the item>"`}})}function tg(e){return e.map(t=>`${t.path}:${t.classification} owner_candidate=${t.owner_candidate?.id??"unowned"} hint=${JSON.stringify(t.remediation_hint)}`)}function O0(e,t){return Object.entries(t.closure_like_metadata_field_patterns).filter(([n,r])=>{let i=Be(e[n]);return i?r.some(o=>i.toLowerCase().includes(o)):!1}).map(([n])=>n).sort((n,r)=>n.localeCompare(r))}function D0(e,t,n,r,i){let o=Be(t.parent),s=o?n.get(r.get(o.toLowerCase())??o):void 0;return{id:e.id,parent_id:t.id,grandparent_id:s?.id,grandparent_active:s!==void 0&&!Nr(s.status,i)}}function P0(e,t,n,r){let i=Be(e.blocked_by),o=Be(e.blocked_reason),s=o?.toLowerCase(),a=Co(e.status,n),c=[];return t.has(a)?(!i&&!o&&c.push("blocked_status_missing_blocker_context"),s?.includes("no active blocker")&&c.push("blocked_status_reason_reports_no_active_blocker"),s&&r.stale_blocker_reason_patterns.some(l=>s.includes(l))&&c.push("blocked_status_reason_matches_stale_pattern"),c):(i&&c.push("non_blocked_status_has_blocked_by"),o&&c.push("non_blocked_status_has_blocked_reason"),c)}function N0(e,t,n,r){let i=new Map(e.map(c=>[c.id,c])),o=new Map(e.map(c=>[c.id.toLowerCase(),c.id])),s=n.blocked_statuses.size>0?n.blocked_statuses:new Set(["blocked"]),a={activeItems:e.filter(c=>!Nr(c.status,n)),closureLikeRows:[],terminalParentRows:[],terminalParentFixRows:[],staleBlockerRows:[]};for(let c of a.activeItems){let l=O0(c,r);l.length>0&&a.closureLikeRows.push({id:c.id,fields:l});let d=Be(c.parent),u=d?i.get(o.get(d.toLowerCase())??d):void 0;if(u&&Nr(u.status,n)&&(a.terminalParentRows.push({id:c.id,parent_id:u.id,parent_status:u.status}),a.terminalParentFixRows.push(D0(c,u,i,o,n))),t){let m=P0(c,s,n,r);m.length>0&&a.staleBlockerRows.push({id:c.id,status:c.status,reasons:[...new Set(m)].sort((f,p)=>f.localeCompare(p))})}}return a}function L0(e){e.closureLikeRows.sort((t,n)=>t.id.localeCompare(n.id)),e.terminalParentRows.sort((t,n)=>t.id.localeCompare(n.id)||t.parent_id.localeCompare(n.parent_id)),e.terminalParentFixRows.sort((t,n)=>t.id.localeCompare(n.id)||t.parent_id.localeCompare(n.parent_id)),e.staleBlockerRows.sort((t,n)=>t.id.localeCompare(n.id))}function Io(e,t,n){return n<=0||t==="off"?null:`${t==="error"?`${e}_error`:e}:${n}`}function _c(e,t,n){return n>0&&t!=="off"?`${e}:${n}`:null}function M0(e,t,n,r,i){let o=[];e.closureLikeRows.length>0&&o.push(`validate_lifecycle_active_closure_like_metadata:${e.closureLikeRows.length}`),e.terminalParentRows.length>0&&o.push(`validate_lifecycle_active_terminal_parent:${e.terminalParentRows.length}`),t&&e.staleBlockerRows.length>0&&o.push(`validate_lifecycle_stale_blockers:${e.staleBlockerRows.length}`);let s=Io("validate_lifecycle_dependency_cycles",n,i.dependencyCycles),a=Io("validate_hierarchy_parent_cycle",r,i.activeHierarchyCycles),c=Io("validate_hierarchy_cardinality_violation",r,i.activeHierarchyCardinality),l=Io("validate_hierarchy_parent_divergence",r,i.activeHierarchyDivergence),d=_c("validate_legacy_hierarchy_parent_cycle",r,i.legacyHierarchyCycles),u=_c("validate_legacy_hierarchy_cardinality_violation",r,i.legacyHierarchyCardinality),m=_c("validate_legacy_hierarchy_parent_divergence",r,i.legacyHierarchyDivergence);return[...o,...s?[s]:[],...a?[a]:[],...c?[c]:[],...l?[l]:[],...d?[d]:[],...u?[u]:[],...m?[m]:[]]}function ng(e){let t=Pt(e);return t.length>l0||t.split(/[\\/]/).some(n=>n.length>d0)}async function j0(e,t){let n=be.isAbsolute(t)?t:be.resolve(e,t);if(ng(n))return!1;try{let r=await Sc.stat(n);return!r.isFile()&&!r.isDirectory()}catch(r){return g0(r,["ENOENT","ENOTDIR"])}}async function F0(e,t){let n={linkedProjectPaths:new Set,remoteLinkedPaths:new Set,missingLinkedPaths:[],staleLinkRows:[]},r=e.flatMap(i=>[...(i.files??[]).map(o=>({item:i,artifact:o,link_kind:"files"})),...(i.docs??[]).map(o=>({item:i,artifact:o,link_kind:"docs"}))]);for(let{item:i,artifact:o,link_kind:s}of r){if(o.scope!=="project")continue;if(Or(o.path)){n.remoteLinkedPaths.add(o.path.trim());continue}let a=Pt(o.path);a.length!==0&&(n.linkedProjectPaths.add(a),await j0(t,o.path)&&(n.missingLinkedPaths.push(a),n.staleLinkRows.push({item_id:i.id,path:a,link_kind:s})))}return n}function U0(e,t,n,r,i,o){let s=r==="tracked-all-strict",a=s&&!i,c=i||s,l=c?[]:y0(t,n),d=l.length===0?[]:e.candidateFiles.filter(f=>C_(f,l)),u=l.length===0?e.candidateFiles:e.candidateFiles.filter(f=>!C_(f,l)),m={};if(d.length>0){let f=tn(d,o);m.pm_internals={count:d.length,paths:f.values,paths_truncated:f.truncated,paths_total:f.total}}return{strictTrackedAllMode:s,strictModeForcesPmInternals:a,includePmInternalsEffective:c,pmInternalCandidatePrefixes:l,excludedPmInternalPaths:d,candidateFiles:u,excludedByReason:m}}function rg(e,t,n,r,i,o,s,a="pm"){let c=N0(e,t,i,o);L0(c);let l=X_(c.activeItems,a),d=fc(e,i),u=Oi(i,e,s?Number.POSITIVE_INFINITY:Ve),m=[...M0(c,t,n,r,{dependencyCycles:l.cycle_count,activeHierarchyCycles:d.active_cycle_count,activeHierarchyCardinality:d.active_cardinality_violation_count,activeHierarchyDivergence:d.active_parent_divergence_count,legacyHierarchyCycles:d.legacy_cycle_count,legacyHierarchyCardinality:d.legacy_cardinality_violation_count,legacyHierarchyDivergence:d.legacy_parent_divergence_count}),...Di(u)],f=s?Number.POSITIVE_INFINITY:Ve,p=oe(c.closureLikeRows.map(b=>`${b.id}:${b.fields.join(",")}`),f),_=oe(c.terminalParentRows.map(b=>`${b.id}:${b.parent_id}:${b.parent_status}`),f),h=oe(c.staleBlockerRows.map(b=>`${b.id}:${b.status}:${b.reasons.join(",")}`),f),w=oe(l.cycle_item_ids,f),v=oe(l.cycle_sample_paths,f),k=oe(d.cycle_item_ids,f),S=oe(d.cycle_sample_paths,f),x=oe(d.cardinality_violation_rows,f),R=oe(d.parent_divergence_rows,f),E=l.cycle_count>0&&n==="error"||(d.active_cycle_count>0||d.active_cardinality_violation_count>0||d.active_parent_divergence_count>0)&&r==="error";return{check:{name:"lifecycle",status:E?"error":m.length===0?"ok":"warn",ok:!E&&m.length===0,details:{checked_active_items:c.activeItems.length,lifecycle_status_roles:u,active_closure_like_metadata_items:c.closureLikeRows.length,active_closure_like_metadata_rows:p.values,active_closure_like_metadata_rows_truncated:p.truncated,active_terminal_parent_items:c.terminalParentRows.length,active_terminal_parent_rows:_.values,active_terminal_parent_rows_truncated:_.truncated,stale_blocker_checks_enabled:t,stale_blocker_items:c.staleBlockerRows.length,stale_blocker_rows:h.values,stale_blocker_rows_truncated:h.truncated,dependency_cycle_severity_policy:n,dependency_cycle_count:l.cycle_count,dependency_cycle_item_count:l.cycle_item_ids.length,dependency_cycle_item_ids:w.values,dependency_cycle_item_ids_truncated:w.truncated,dependency_cycle_sample_paths:v.values,dependency_cycle_sample_paths_truncated:v.truncated,parent_cycle_severity_policy:r,parent_cycle_count:d.cycle_count,active_parent_cycle_count:d.active_cycle_count,legacy_parent_cycle_count:d.legacy_cycle_count,parent_cycle_item_count:d.cycle_item_ids.length,parent_cycle_item_ids:k.values,parent_cycle_item_ids_truncated:k.truncated,parent_cycle_sample_paths:S.values,parent_cycle_sample_paths_truncated:S.truncated,hierarchy_cardinality_violation_count:d.cardinality_violation_count,active_hierarchy_cardinality_violation_count:d.active_cardinality_violation_count,legacy_hierarchy_cardinality_violation_count:d.legacy_cardinality_violation_count,hierarchy_cardinality_violation_rows:x.values,hierarchy_cardinality_violation_rows_truncated:x.truncated,hierarchy_parent_divergence_count:d.parent_divergence_count,active_hierarchy_parent_divergence_count:d.active_parent_divergence_count,legacy_hierarchy_parent_divergence_count:d.legacy_parent_divergence_count,hierarchy_parent_divergence_rows:R.values,hierarchy_parent_divergence_rows_truncated:R.truncated,stale_blocker_reason_patterns:[...o.stale_blocker_reason_patterns],stale_blocker_reason_pattern_source:o.stale_blocker_reason_pattern_source,closure_like_blocked_reason_patterns:[...o.closure_like_metadata_field_patterns.blocked_reason],closure_like_blocked_reason_pattern_source:o.closure_like_metadata_field_pattern_sources.blocked_reason,closure_like_resolution_patterns:[...o.closure_like_metadata_field_patterns.resolution],closure_like_resolution_pattern_source:o.closure_like_metadata_field_pattern_sources.resolution,closure_like_actual_result_patterns:[...o.closure_like_metadata_field_patterns.actual_result],closure_like_actual_result_pattern_source:o.closure_like_metadata_field_pattern_sources.actual_result}},warnings:m,terminalParentFixRows:c.terminalParentFixRows}}async function ig(e,t,n,r,i,o,s=_e(Bc.schema)){let a=await F0(e,t),c=new Map(e.map(P=>[P.id,P])),l=[...new Set(a.missingLinkedPaths)].sort((P,ee)=>P.localeCompare(ee)),d=await w0(t,r),u=U0(d,n,t,r,i,o),m=u.candidateFiles.filter(P=>!a.linkedProjectPaths.has(P)),f=eg(m,e),p=l_(l,u.candidateFiles),_=new Map(p.map(P=>[P.path,P.classification])),h=p.filter(P=>P.classification==="moved").length,w=a.staleLinkRows.map(P=>({...P,classification:_.get(P.path)??"deleted"})).sort((P,ee)=>P.item_id.localeCompare(ee.item_id)||P.path.localeCompare(ee.path)||P.link_kind.localeCompare(ee.link_kind)),v=[];u.strictModeForcesPmInternals&&v.push("validate_files_tracked_all_strict_forces_pm_internals"),m.length>0&&v.push(`validate_files_orphaned_paths:${m.length}`);let k=[...a.remoteLinkedPaths].sort((P,ee)=>P.localeCompare(ee)),S=tn(k,o),x=tn(l,o),R=tn(m,o),E=tn(f.map(P=>`${P.path}:${P.classification}:owner_candidate=${P.owner_candidate?.id??"unowned"}`),o),b=o?f:tn(tg(f),!1).values,j=tn(d_(p),o),F=Vh(w,p,P=>c.get(P),s,o?1/0:vc);return F.active_missing_linked_paths_count>0&&v.push(`validate_files_missing_linked_paths:${F.active_missing_linked_paths_count}`),{check:{name:"files",status:v.length===0?"ok":"warn",ok:v.length===0,details:{workspace_root:t,scan_mode_requested:d.requestedMode,scan_mode_applied:d.appliedMode,strict_tracked_all_mode:u.strictTrackedAllMode,strict_mode_forces_pm_internals:u.strictModeForcesPmInternals,strict_mode_forces_pm_internals_notice:u.strictModeForcesPmInternals?"tracked-all-strict force-enables PM internals; pass --include-pm-internals to make inclusion explicit.":null,file_list_detail_mode:o?"full":"summary",file_list_summary_limit:vc,candidate_scan_source:d.source,include_pm_internals:u.includePmInternalsEffective,include_pm_internals_requested:i,pm_internal_candidate_prefixes:u.pmInternalCandidatePrefixes,pm_internal_excluded_count:u.excludedPmInternalPaths.length,excluded_total:u.excludedPmInternalPaths.length,excluded_by_reason:u.excludedByReason,linked_project_paths:a.linkedProjectPaths.size,remote_linked_paths_count:k.length,remote_linked_paths_total:S.total,remote_linked_paths:S.values,remote_linked_paths_truncated:S.truncated,candidate_total_raw:d.candidateTotal,candidate_scanned_raw:d.candidateScanned,candidate_total:u.candidateFiles.length,candidate_scanned:u.candidateFiles.length,scanned_candidate_files:u.candidateFiles.length,missing_linked_paths_count:l.length,missing_linked_paths_total:x.total,missing_linked_paths:x.values,missing_linked_paths_truncated:x.truncated,missing_linked_paths_moved_count:h,missing_linked_paths_deleted_count:p.filter(P=>P.classification==="deleted").length,missing_linked_paths_malformed_count:p.filter(P=>P.classification==="malformed").length,missing_linked_path_classifications:j.values,missing_linked_path_classifications_truncated:j.truncated,...F,orphaned_paths_count:m.length,orphaned_paths_total:R.total,orphaned_paths:R.values,orphaned_paths_truncated:R.truncated,orphaned_path_classifications:E.values,orphaned_path_classifications_truncated:E.truncated,orphaned_path_rows_count:f.length,orphaned_path_rows:b}},warnings:v,staleLinkPruneRows:w}}function z0(e,t){let n=[];return e.forEach(({item:r,linkedTest:i},o)=>{let s=t[o];if(s.trusted)return;let a=hc(i.command??"");n.push(`${r.id}:${s.source_ref??"unknown"}->${s.current_source_ref??"unknown"}:${a}`)}),n}async function og(e,t,n,r){let i=new Set(e.map(x=>x.id.toLowerCase())),o=0,s=0,a=new Set,c=[],l=e.flatMap(x=>(x.tests??[]).map(R=>({item:x,linkedTest:R}))),d=await dc(uc()),u=await I_(r,l.map(({linkedTest:x})=>x),d),m=z0(l,u);for(let{item:x,linkedTest:R}of l){if(typeof R.command!="string"||R.command.trim().length===0)continue;o+=1;let E=v_(R.command,t);if(E.length!==0){s+=E.length;for(let b of E)a.add(b),i.has(b.toLowerCase())||c.push(`${x.id}:${b}:${hc(R.command)}`)}}let f=[...new Set(c)].sort((x,R)=>x.localeCompare(R)),p=[...new Set(f.map(x=>x.split(":")[1]??""))].filter(x=>x.length>0).sort((x,R)=>x.localeCompare(R)),_=[];f.length>0&&_.push(`validate_command_references_stale_pm_ids:${f.length}`),m.length>0&&_.push(`validate_linked_test_trust_unacknowledged:${m.length}`);let h=n?Number.POSITIVE_INFINITY:Ve,w=oe(f,h),v=oe(p,h),k=oe([...a].sort((x,R)=>x.localeCompare(R)),h),S=oe(m,h);return{check:{name:"command_references",status:_.length===0?"ok":"warn",ok:_.length===0,details:{checked_items:e.length,linked_commands_scanned:o,referenced_pm_ids_count:s,unique_referenced_pm_ids_count:a.size,unique_referenced_pm_ids:k.values,unique_referenced_pm_ids_truncated:k.truncated,linked_test_trust_current_source_ref:d??null,untrusted_linked_tests_count:m.length,untrusted_linked_tests:S.values,untrusted_linked_tests_truncated:S.truncated,stale_pm_id_references_count:f.length,stale_pm_ids_count:p.length,stale_pm_ids:v.values,stale_pm_ids_truncated:v.truncated,stale_pm_id_reference_rows:w.values,stale_pm_id_reference_rows_truncated:w.truncated}},warnings:_}}function H0(e,t){let n=ni(e.map(c=>({ref:c.id,version:ti(c)}))),r=[];n.outdated.length>0&&r.push(`validate_format_version_outdated_items:${n.outdated.length}`),n.ahead.length>0&&r.push(`validate_format_version_ahead_items:${n.ahead.length}`);let i=t?Number.POSITIVE_INFINITY:Ve,o=oe(n.outdated,i),s=oe(n.ahead,i),a=n.ahead.length>0?"error":n.outdated.length>0?"warn":"ok";return{check:{name:"format_version",status:a,ok:a==="ok",details:{checked_items:e.length,current_format_version:Wl,outdated_items_count:n.outdated.length,outdated_items:o.values,outdated_items_truncated:o.truncated,ahead_items_count:n.ahead.length,ahead_items:s.values,ahead_items_truncated:s.truncated}},warnings:r}}var kc="pm validate auto-fix";async function sg(e,t,n){switch(e.kind){case"set_closed_at":await Gh(e,t);return;case"set_resolution":case"set_close_reason":case"set_estimate":case"reparent":case"unset_parent":{let r={message:kc};if(e.kind==="set_resolution"?r.resolution=e.value:e.kind==="set_close_reason"?r.closeReason=e.value:e.kind==="set_estimate"?r.estimatedMinutes=e.value:e.kind==="reparent"?r.parent=e.parent_id:r.unset=["parent"],!n.runUpdate)throw new y("Applying validate metadata/lifecycle fixes requires a runUpdate mutation service.",g.USAGE);await n.runUpdate(e.item_id,r,t);return}case"prune_file_link":throw new Error(`Unsupported non-batched fix kind: ${e.kind}`);case"prune_doc_link":throw new Error(`Unsupported non-batched fix kind: ${e.kind}`)}}function gc(e){return e.kind!=="prune_file_link"&&e.kind!=="prune_doc_link"?null:`${e.kind}:${e.item_id}`}async function ag(e,t,n){let r=[],i=[],o=new Map;for(let s of e.filter(a=>gc(a)===null))try{await sg(s,t,n),r.push(s)}catch(a){i.push({fix:s,error:a})}for(let s of e.filter(a=>gc(a)!==null)){let a=gc(s),c=o.get(a);c?c.push(s):o.set(a,[s])}for(let s of o.values()){let a=s[0];if(!a)continue;let c=s.map(l=>l.path).filter(l=>typeof l=="string"&&l.length>0);try{a.kind==="prune_file_link"?await h_(a.item_id,{remove:c,message:kc},t):await f_(a.item_id,{remove:c,message:kc},t),r.push(...s)}catch(l){i.push(...s.map(d=>({fix:d,error:l})))}}return{applied:r,failed:i}}var rW={applyValidateFix:sg,applyValidateFixes:ag,attachValidateFixHints:F_,buildCommandReferencesCheck:og,buildDependencyReferencesCheck:J_,buildCloseReasonBackfillRows:G_,buildFilesCheck:ig,buildLifecycleCheck:rg,buildLifecycleDependencyGraph:V_,buildLifecycleParentGraph:mc,buildEstimateBackfillRows:q_,buildMetadataCounts:H_,buildMissingFieldOccurrences:W_,buildOrphanedPathRows:eg,classifyOrphanedPath:Z_,collectDefaultProjectFileCandidates:bc,collectTrackedGitFileCandidates:j_,detectLifecycleDependencyCycles:X_,detectLifecycleParentCycles:fc,escapeRegExp:B_,extractItemIds:K_,findLifecycleDependencyCycleComponents:Y_,isMetadataFieldMissing:N_,linkedArtifactPathExceedsFilesystemLimits:ng,listFilesRecursive:Ec,resolveDependencyCycleSeverity:D_,resolveParentCycleSeverity:P_,resolveFileScanMode:L_,resolveLifecycleDependencyCycleSamplePath:Eo,resolveRequestedChecks:U_,resolveValidateMetadataProfile:O_,resolveWorkspaceRoot:M_,sharedDirectoryPrefixLength:Q_,summarizeOrphanedPathRows:tg,summarizeDuplicateIssueCodes:z_,toMeaningfulString:Be};function W0(e,t){t>0&&e.push(`merge_receipt_evidence_invalid:${t}`)}async function G0(e,t,n,r){let i=await Kh(e,new Set(t.map(h=>h.id)),n,{schema:r.schema,extensionFieldNames:rn(H())}),o=[];i.unreadable_item_files.length>0&&o.push(`validate_storage_unreadable_items:${i.unreadable_item_files.length}`),i.duplicate_item_ids.length>0&&o.push(`validate_storage_duplicate_item_ids:${i.duplicate_item_ids.length}`),i.history_conflict_marker_streams.length>0&&o.push(`validate_storage_history_conflict_markers:${i.history_conflict_marker_streams.length}`),i.history_unparseable_streams.length>0&&o.push(`validate_storage_unparseable_history:${i.history_unparseable_streams.length}`),i.resurrected_items.length>0&&o.push(`validate_storage_resurrected_items:${i.resurrected_items.length}`),i.unparseable_config_files.length>0&&o.push(`validate_storage_unparseable_config:${i.unparseable_config_files.length}`);let s=o.length,a=await io(e);a.tracked_path_count>0&&o.push(`validate_storage_tracked_runtime_cache_files:${a.tracked_path_count}`);let c=await An(e,At(r));c.status==="drift"&&o.push(`validate_merge_fence_drift:${c.missing_patterns.length+c.stale_patterns.length}`);let l=await tt(e),d=l===null?null:await Rn(l);d!==null&&d.status!=="ok"&&o.push(`validate_merge_driver_configuration:${d.missing_keys.length+d.drifted_keys.length}`);let u=await yt(l??e,{includeLossless:!0,pmRoot:e}),m=u.receipts,{pendingDecisions:f,lossless:p}=Nn(m);f.length>0&&o.push(`validate_merge_decisions_unreviewed:${f.length}`),W0(o,u.invalid_evidence_count);let _=s>0?"error":o.length>0?"warn":"ok";return{check:{name:"storage_integrity",status:_,ok:_==="ok",details:{...i,merge_fence:c,merge_driver_configuration:d,pending_merge_decision_count:f.length,pending_merge_decision_items:[...new Set(f.map(h=>h.item_id))].sort((h,w)=>h.localeCompare(w)),lossless_merge_receipt_count:p.length,invalid_merge_receipt_evidence_count:u.invalid_evidence_count,invalid_merge_receipt_evidence_details:u.invalid_evidence,invalid_merge_receipt_evidence_details_truncated:u.invalid_evidence_truncated,lossless_merge_receipt_items:[...new Set(p.map(h=>h.item_id))].sort((h,w)=>h.localeCompare(w)),tracked_runtime_cache:{tracker_relative_root:a.tracker_relative_root,tracked_paths:a.tracked_paths,tracked_path_count:a.tracked_path_count,remediation_command:a.remediation_command}}},warnings:o}}function st(e,t,n){n&&F_(t.check,t.warnings),e.checks.push(t.check),e.warnings.push(...t.warnings)}async function q0(e){let t={closureTimestampFixes:[],checks:[],warnings:[...e.initialWarnings],closeReasonBackfillRows:[],estimateBackfillRows:[],resolutionBackfillRows:[],terminalParentFixRows:[],staleLinkPruneRows:[]},n=e.options.fixHints===!0,r=e.options.verboseDiagnostics===!0||e.options.allAffectedIds===!0||e.global.json===!0;if(e.requestedChecks.has("completeness")){let i=await _u(e.pmRoot,e.items,r?1/0:Ve,e.sourceIncomplete);st(t,i,n)}if(e.requestedChecks.has("metadata")){let i=A0(e.items,e.metadataPolicy,e.statusRegistry,r,[e.settings.id_prefix]);t.closeReasonBackfillRows=i.closeReasonBackfillRows,t.estimateBackfillRows=i.estimateBackfillRows;let o=await Wh(e.pmRoot,e.items,e.statusRegistry,e.options.autoFix===!0||n,r?1/0:Ve);t.closureTimestampFixes=o.fixes,Object.assign(i.check.details,o.details),i.warnings.push(...o.warnings),i.check.ok=i.warnings.length===0,i.check.status=i.check.ok?"ok":"warn",st(t,i,n)}if(e.requestedChecks.has("resolution")){let i=R0(e.items,e.statusRegistry,r);t.resolutionBackfillRows=i.resolutionBackfillRows,st(t,i,n)}if(e.requestedChecks.has("lifecycle")){let i=rg(e.items,!!e.options.checkStaleBlockers,e.dependencyCycleSeverity,e.parentCycleSeverity,e.statusRegistry,e.lifecyclePatternPolicy,r,e.settings.id_prefix);t.terminalParentFixRows=i.terminalParentFixRows,st(t,i,n),st(t,J_(e.items,r,e.statusRegistry),n)}if(e.requestedChecks.has("files")){let i=await ig(e.items,e.workspaceRoot,e.pmRoot,e.fileScanMode,!!e.options.includePmInternals,!!e.options.verboseFileLists,e.statusRegistry);t.staleLinkPruneRows=i.staleLinkPruneRows,st(t,i,n)}return e.requestedChecks.has("command_references")&&st(t,await og(e.items,e.settings.id_prefix,r,e.pmRoot),n),e.requestedChecks.has("history_drift")&&st(t,await So(e.pmRoot,e.items,r),n),e.requestedChecks.has("format_version")&&st(t,H0(e.items,r),n),e.requestedChecks.has("storage_integrity")&&st(t,await G0(e.pmRoot,e.items,G(e.settings,H()).type_to_folder,e.settings),n),t}function B0(e,t,n){let r=[];return e.autoFix===!0&&(r.push(...t.closureTimestampFixes),r.push(...Zh(t.closeReasonBackfillRows)),r.push(...Xh(t.resolutionBackfillRows)),r.push(...Qh(t.estimateBackfillRows,n.validation.estimate_defaults_by_type)),r.push(...e_(t.terminalParentFixRows))),e.pruneMissing===!0&&r.push(...t_(t.staleLinkPruneRows)),r}async function V0(e,t,n,r,i,o){if(e.autoFix!==!0&&e.pruneMissing!==!0)return;let s=B0(e,t,n),{applicable:a,gated:c}=r_(s,r),l=e.dryRun===!0,d=[],u=[];if(!l){let m=await ag(a,i,o);d.push(...m.applied.map($r)),u.push(...m.failed.map(({fix:f,error:p})=>({...$r(f),error:p instanceof Error?p.message:String(p)})))}return{mode:l?"dry_run":"apply",auto_fix:e.autoFix===!0,prune_missing:e.pruneMissing===!0,granted_fix_scopes:[...r].sort((m,f)=>m.localeCompare(f)),planned_count:s.length,applied_count:d.length,gated_count:c.length,failed_count:u.length,planned_fixes:s.map($r),applied_fixes:d,gated_fixes:c.map(m=>({...$r(m),gate_hint:`Withheld: re-run with --fix-scope ${m.gate} to apply.`})),failed_fixes:u}}async function cg(e,t,n={}){Nl(e.counts===!0,e.full===!0,"--counts");let r=e.autoFix===!0||e.pruneMissing===!0;if(e.dryRun===!0&&!r)throw new y("--dry-run requires --auto-fix or --prune-missing (there is nothing to preview otherwise).",g.USAGE);if(e.fixScope!==void 0&&e.fixScope.length>0&&e.autoFix!==!0)throw new y("--fix-scope requires --auto-fix.",g.USAGE);let i=n_(e.fixScope),o=N(process.cwd(),t.path);await ne(o);let s=await $(o),a=_e(s.schema),c=G(s,H()),l=U_(e),d=[],u=await ko({includeBody:["history_drift","metadata","completeness"].some(I=>l.has(I)),pmRoot:o,settings:s,typeToFolder:c.type_to_folder,warnings:d}),m=d.length>0;if(l.has("history_drift")){let I=await sr(o);I.actionable_unknown_event_count>0&&d.push(`validate_history_unknown_author_events:${I.actionable_unknown_event_count}`)}let f=typeof e.metadataProfile=="string"?"option":"settings",p=O_(typeof e.metadataProfile=="string"?e.metadataProfile:s.validation.metadata_profile),_=h0(p,f,s.validation.metadata_required_fields),h=f0(s),w=D_(e.dependencyCycleSeverity),v=P_(e.parentCycleSeverity),k=L_(e.scanMode),S=M_(o),x=await q0({requestedChecks:l,options:e,global:t,pmRoot:o,workspaceRoot:S,settings:s,items:u,statusRegistry:a,metadataPolicy:_,lifecyclePatternPolicy:h,dependencyCycleSeverity:w,parentCycleSeverity:v,fileScanMode:k,initialWarnings:[...new Set(d)],sourceIncomplete:m}),R=r?await V0(e,x,s,i,t,n):void 0,E=[...new Set(x.warnings)].sort((I,F)=>I.localeCompare(F)),j={ok:!x.checks.some(I=>I.status==="error"),has_warnings:E.length>0,checks:x.checks,warnings:E,...R!==void 0?{fixes:R}:{},generated_at:T(),projection:{mode:"full",declared_field_groups:[{name:"diagnostic_rows",restore_with:"--full"}],included_field_groups:["diagnostic_rows"]}};return e.counts!==!0?j:{...m0(j),projection:{mode:"counts",declared_field_groups:[{name:"diagnostic_rows",restore_with:"--full"}],included_field_groups:[]}}}import{execFile as J0}from"node:child_process";import{promisify as K0}from"node:util";(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]="894154aa-88b8-5a3b-a03c-e3ef8a85f1c0")}catch{}})();var Y0=K0(J0),X0=16,Z0=3e4;function Q0(e,t,n){if(!(e.keys[t].value_type==="number"?typeof n.value=="number"&&Number.isFinite(n.value):Array.isArray(n.value)&&n.value.every(o=>typeof o=="string")))throw new TypeError(`assurance provider ${e.id} key ${t} returned the wrong value type`);if(!Number.isInteger(n.population_size)||n.population_size<0||!Number.isFinite(n.cost)||n.cost<0)throw new TypeError(`assurance provider ${e.id} returned an invalid population or cost`);return n}function eC(e,t){let n=e.keys[t.key];if(!n)throw new TypeError(`assurance provider ${e.id} does not declare key ${t.key}`);let r=t.parameters??{},i=n.parameters??{};for(let o of Object.entries(i).filter(([,s])=>s.required===!0).map(([s])=>s))if(!Object.hasOwn(r,o))throw new TypeError(`assurance provider ${e.id} key ${t.key} requires parameter ${o}`);for(let[o,s]of Object.entries(r)){let a=i[o];if(!a)throw new TypeError(`assurance provider ${e.id} key ${t.key} does not declare parameter ${o}`);if(s===null||typeof s!==a.type)throw new TypeError(`assurance provider ${e.id} parameter ${o} must be ${a.type}`)}return{...r}}async function tC(e,t,n,r){let i=eC(e,t),o=Promise.resolve().then(()=>e.resolve({provider:e.id,key:t.key,parameters:i,trigger:r,pm_root:n,...Ol(n)}));o.catch(()=>{});let s;try{let a=await Promise.race([o,new Promise((c,l)=>{s=setTimeout(()=>l(new TypeError(`assurance provider ${e.id} timed out`)),e.timeout_ms??Z0),s.unref?.()})]);return Q0(e,t.key,a)}finally{clearTimeout(s)}}function dg(e,t,n,r){let i=e;for(let o of t.split(".")){if(typeof i!="object"||i===null||Array.isArray(i))throw new Qe(`assurance field ${t} is not present`,{source_kind:n,field:t,...r?{check:r}:{}});i=i[o]}if(typeof i=="number"&&Number.isFinite(i)||Array.isArray(i)&&i.every(o=>typeof o=="string"))return i;throw new Qe(`assurance field ${t} must resolve to a finite number or string array`,{source_kind:n,field:t,...r?{check:r}:{}})}function lg(e,t,n,r){let i=e.checks.find(s=>s.name===t);if(!i)throw new Qe(`assurance check ${t} is not present`,{source_kind:r,field:n,check:t});return{value:n==="status"||n==="ok"?i.ok?0:1:dg(i.details,n,r,t),population_size:1,cost:e.checks.length}}async function nC(e,t){if(t?.trim())return t.trim();try{let{stdout:n}=await Y0("git",["rev-parse","HEAD^{commit}"],{cwd:e,encoding:"utf8",timeout:5e3,windowsHide:!0});return n.trim()}catch{return"working-copy"}}async function rC(e,t){let n=new Array(t.length),r=0,i=Array.from({length:Math.min(X0,t.length)},async()=>{for(;r<t.length;){let o=r;r+=1;let s=t[o],a=await Ut(Mt(e,s.id),s.id);n[o]=a.map(c=>({op:c.op,author:c.author,agent_harness:c.agent_harness,agent_model:c.agent_model}))}});return await Promise.all(i),n.flat()}async function Lr(e,t={}){let n=await $(e),r=G(n),i=_e(n.schema),s=(t.strict_read===!0?(await Jd(void 0,{status:"all",full:!0,noTruncate:!0,strictRead:!0},{path:e})).items:await _n(e,n.item_format,r.type_to_folder,void 0,n.schema)).map(f=>({...f,id:f.id,status:f.status,type:f.type})),a={path:e},c=H(),l=Object.fromEntries((c?.assurance_providers??[]).map(f=>[f.definition.id,{cost_class:f.runtime_definition.cost_class,network:f.runtime_definition.network}])),d=new Map,u,m;return{tree_id:t.resolve_tree===!1?t.tree_id??"working-copy":await nC(e,t.tree_id),items:s,history:t.include_history===!1?[]:await rC(e,s),terminal_statuses:[...i.terminal_statuses],provider_capabilities:{...l,...t.provider_capabilities},external:async f=>{if(f.kind==="graph"){let h=C({operation:f.operation,parameters:f.parameters??{}}),w=d.get(h);w===void 0&&(w=Xd(f.operation,void 0,void 0,{...f.parameters,full:!0},a),d.set(h,w));let v=await w;return{value:dg(v,f.field,f.kind),population_size:s.length,cost:s.length}}if(f.kind==="validate"){u??=cg({counts:!0},a);let h=await u;return lg(h,f.check,f.field,f.kind)}if(f.kind==="health"){m??=Uh(a,{checkOnly:!0,full:!0});let h=await m;return lg(h,f.check,f.field,f.kind)}let p=t.providers?.[f.provider];if(p)return p(f);let _=ld(c,f.provider);if(!_)throw new TypeError(`assurance provider ${f.provider} is not registered`);return tC(_.runtime_definition,f,e,t.trigger??"sdk")}}}import{createHash as iC}from"node:crypto";(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]="538168d9-116c-5e72-81a4-a23e021c48f5")}catch{}})();function ug(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("recurrence coverage request must be an object");let t=e;if(Object.hasOwn(t,"change"))throw new TypeError("recurrence coverage request does not accept change");if(t.uncoveredOnly!==void 0&&typeof t.uncoveredOnly!="boolean")throw new TypeError("recurrence coverage request.uncoveredOnly must be a boolean");let{policy:n,cursor:r,limit:i}=Zr({...t,change:{}});return{policy:n,...r===void 0?{}:{cursor:r},...i===void 0?{}:{limit:i},...t.uncoveredOnly===void 0?{}:{uncoveredOnly:t.uncoveredOnly}}}function oC(e,t){if(e===void 0)return 0;let n;try{n=JSON.parse(Buffer.from(e,"base64url").toString("utf8"))}catch{throw new TypeError("recurrence coverage cursor is invalid")}if(typeof n!="object"||n===null||Array.isArray(n))throw new TypeError("recurrence coverage cursor is invalid");let r=n;if(r.fingerprint!==t||typeof r.offset!="number"||!Number.isSafeInteger(r.offset)||r.offset<0)throw new TypeError("recurrence coverage cursor does not match this evidence and filter");return r.offset}function sC(e,t,n,r,i,o){let s=Object.fromEntries(Ko.map(f=>[f,0])),a=0,c=0,l=0,d=0,u=[],m=iC("sha256").update(i);for(let f of r){let p=e.membership.get(f),_=n.has(f),h=p.family_ids.length>0;h&&_&&(a+=1),h||(c+=1),_||(l+=1);let w=t.get(f)?.escape_class;w!==void 0&&Ko.includes(w)&&(s[w]+=1,d+=1),m.update(C([f,_,t.get(f)??null,p.id,p.family_ids])),(!o||!h||!_)&&u.push(f)}return{classCounts:s,coveredCount:a,uncoveredCount:c,missingCount:l,classifiedCount:d,selected:u,fingerprint:m.digest("hex")}}function mg(e,t,n={}){zl(e);let r=n.limit??25;if(!Number.isSafeInteger(r)||r<1||r>100)throw new TypeError("recurrence coverage limit must be an integer from 1 through 100");let i=new Set,o=new Map;for(let S of t){if(i.has(S.id))throw new TypeError(`Duplicate recurrence item ${S.id}`);i.add(S.id);let x=Xr(S);x!==void 0&&o.set(S.id,x)}let s=jl(e.families,o),a=[...s.membership.keys()].sort(),c=C({policy:e,uncoveredOnly:n.uncoveredOnly===!0}),{classCounts:l,coveredCount:d,uncoveredCount:u,missingCount:m,classifiedCount:f,selected:p,fingerprint:_}=sC(s,o,i,a,c,n.uncoveredOnly===!0),h=oC(n.cursor,_);if(h>p.length)throw new TypeError("recurrence coverage cursor offset exceeds the selected population");let w=p.slice(h,h+r).map(S=>{let x=s.membership.get(S),R=i.has(S);return{item_id:S,lineage_id:x.id,lineage_item_count:x.item_ids.length,family_ids:x.family_ids,present:R,...R?x.family_ids.length===0?{finding:"unregistered_recurrence_item"}:{}:{finding:"missing_recurrence_item"}}}),v=h+w.length,k=a.length===0?null:l.production_defect/a.length;return{ok:u===0&&m===0,fingerprint:_,items:w,total:p.length,has_more:v<p.length,...v<p.length?{next_cursor:Buffer.from(JSON.stringify({fingerprint:_,offset:v})).toString("base64url")}:{},population:{scope:"all_recorded_recurrence_items",item_count:a.length,lineage_count:s.lineages.length,edge_count:s.edge_count,covered_item_count:d,uncovered_item_count:u,missing_item_count:m,classified_item_count:f,unclassified_item_count:a.length-f,class_counts:l,escape_rate:f===a.length?k:null,escape_rate_lower_bound:k},budget_scope:"registered_families_only",cost:{items_scanned:t.length,edges_scanned:s.edge_count,row_limit:r},row_contract:{row_keys:["items"],jq_selector:".items[]"}}}import{createHash as aC}from"node:crypto";(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]="77425e45-ae19-569b-b196-e024f9e2729f")}catch{}})();var xc,fg=["list","show","put","remove","run","verdicts","presets","apply","derive","promote","risk","lineages"],Ic=["measurement","assertion","gate"];function cC(e){if(fg.includes(e))return e;throw ui({command_path:"assurance",token:e,allowed:fg,display_name:"assurance action"})}function zn(e,t,n){throw new y(t,g.USAGE,{code:"missing_required_argument",required:`Provide the missing assurance operand: ${e}.`,examples:[n],recovery:{missing:[e]}})}function lC(e){if(!e)return zn("kind",`Assurance declaration kind is required. Expected: ${Ic.join(", ")}`,"pm assurance list measurement");if(Ic.includes(e))return e;throw new y(`Assurance declaration kind is required. Expected: ${Ic.join(", ")}`,g.USAGE)}function pg(e){if(!e)return zn("preset",`Assurance preset is required. Expected: ${ar.join(", ")}`,"pm assurance apply software-delivery --owner <pm-item-id>");if(ar.includes(e))return e;throw new y(`Assurance preset is required. Expected: ${ar.join(", ")}`,g.USAGE)}function Ac(e){return e.owner?.trim()?e.owner.trim():zn("owner","assurance preset and derivation actions require --owner <pm-item-id>","pm assurance apply software-delivery --owner <pm-item-id>")}function dC(e,t){let n=t;if(typeof t=="string")if(!t.trim())n=void 0;else try{n=JSON.parse(t)}catch(r){throw new y("assurance definition must be valid JSON",g.USAGE,{reason:r instanceof Error?r.message:"invalid_json"})}if(typeof n!="object"||n===null||Array.isArray(n))throw new y("assurance put requires a JSON object definition",g.USAGE);return n}async function uC(e){let[t,n,r]=await Promise.all([nr(e,"measurement"),nr(e,"assertion"),nr(e,"gate")]);return{version:1,measurements:t.items,assertions:n.items,gates:r.items}}function hg(e,t){return t===!0?{id:e.id}:e}async function mC(e,t){let n=t.authorization_decision;if(!n)return[];let r=await Lr(e,{include_history:!1,resolve_tree:!1}),i=r.items.find(s=>s.id===n),o=new Set(r.terminal_statuses);if(!i||i.type.toLowerCase()!=="decision"||!o.has(i.status))throw new y(`Assurance authorization ${n} must name a terminal Decision item`,g.USAGE);return[i.id]}async function fC(e,t){let n=vs(e.limit,"assurance verdict limit");if(n!==void 0&&(n<1||n>vn))throw new y(`assurance verdict limit must be an integer from 1 through ${vn}`,g.USAGE);let r=await pu(t,{gate_id:e.id??e.gate,limit:n});return{items:r,count:r.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function pC(e,t,n){if(e==="presets"){if(t.preset??t.id)return Ti(pg(t.preset??t.id),Ac(t));let i=ar.map(o=>{let s=Ti(o,"pm-owner");return{id:o,title:s.title,description:s.description}});return{items:i,count:i.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}if(e==="apply")return wn(()=>Hu(n,pg(t.preset??t.id),Ac(t),{author:t.author,message:t.message}));if(e==="derive"){let i=await Wu(await Lr(n,{resolve_tree:!1,trigger:"derive"}),Ac(t)),o=t.apply?await wn(()=>Gu(n,i,{author:t.author,message:t.message??"Accept observation-derived assurance proposals"})):void 0;return{items:i,count:i.length,...o?{applied:o}:{}}}if(!t.id)return zn("assertion-id","assurance promote requires an assertion id","pm assurance promote <assertion-id> --enforcement warn");if(t.enforcement!=="warn"&&t.enforcement!=="block")throw new y("assurance promote requires --enforcement warn|block",g.USAGE);let r=await _s(n,"assertion",t.id);return wn(()=>qu(n,r,t.enforcement,{author:t.author,message:t.message}))}async function hC(e,t,n){if(!e.id)return zn("gate-id","assurance run requires a gate id","pm assurance run <gate-id> --trigger ci --dry-run");let r=e.id;if(!e.trigger)throw new y("assurance run requires a trigger",g.USAGE);if(!Gt.includes(e.trigger))throw new y(`Unknown assurance trigger ${e.trigger}. Expected: ${Gt.join(", ")}`,g.USAGE);let i=e.trigger,[o,s]=await Promise.all([uC(t),Lr(t,{...n.workspace,tree_id:e.tree,trigger:i})]),a=await Zd(()=>du(r,o,s,{trigger:i,dry_run:e.dry_run===!0}));return a.dry_run||await fu(t,a,{author:e.author,message:e.message}),a}function _g(e){throw e instanceof y?e:new y(e instanceof Error?e.message:"assurance risk request is invalid",g.USAGE)}function _C(e){if(e.limit!==void 0)throw new y(`assurance ${e.action} does not accept --limit; set limit inside the definition`,g.USAGE);let t=e.definition;if(typeof t=="string")try{t=JSON.parse(t)}catch(n){throw new y(`assurance ${e.action} definition must be valid JSON`,g.USAGE,{reason:n instanceof Error?n.message:"invalid_json"})}try{return e.action==="lineages"?ug(t):Zr(t)}catch(n){return _g(n)}}function gC(e,t){let n=new Set;for(let[r,i]of t)e.item_fingerprints.get(r)!==i&&n.add(r);for(let r of e.item_fingerprints.keys())t.has(r)||n.add(r);return n}function yC(e,t,n){let r=C(t.policy),i=xc?.pm_root===e?xc:void 0,o=new Map(n.map(l=>[l.id,aC("sha256").update(C([Ml(l),Xr(l)])).digest("hex")])),s=i?.policy_serialized===r?i:void 0,a=s?gC(s,o):new Set,c=Fl(t.policy,s?n.filter(l=>a.has(l.id)):n,s?{previous_index:s.index,changed_item_ids:[...a]}:{});return xc={pm_root:e,policy_serialized:r,item_fingerprints:o,index:c},c}async function wC(e,t){let n=_C(e),r=await Lr(t,{strict_read:!0,include_history:!1,resolve_tree:!1});try{return"change"in n?Ul(yC(t,n,r.items),n.change,{cursor:n.cursor,limit:n.limit}):mg(n.policy,r.items,n)}catch(i){return _g(i)}}async function vC(e,t={},n={}){let r=cC(e.action),i=N(process.cwd(),t.path);if(r==="presets"||r==="apply"||r==="derive"||r==="promote")return pC(r,e,i);if(r==="verdicts")return fC(e,i);if(r==="run")return hC(e,i,n);if(["risk","lineages"].includes(r))return wC(e,i);let o=lC(e.kind);if(r==="list")return nr(i,o);if(!e.id)return zn("id",`assurance ${r} requires an id`,`pm assurance ${r} ${o} <id>`);let s=e.id;if(r==="show")return _s(i,o,s);if(r==="remove"){let d=await wn(()=>mu(i,o,s,{author:e.author,message:e.message}));return hg(d,e.idOnly)}let a=dC(o,e.definition);if(a.id!==s)throw new y(`Assurance definition id ${a.id} does not match requested id ${s}`,g.USAGE);let c={author:e.author,message:e.message,...o==="assertion"?{authorized_decision_ids:await mC(i,a)}:{}},l=await wn(()=>Si(i,o,a,c));return hg(l,e.idOnly)}function jW(e,t,n){let r={...e,...t};return vC({action:D(r,"subcommand")??D(r,"assuranceAction")??D(r,"operation")??"",kind:D(r,"kind"),id:D(r,"id"),definition:r.definition,trigger:D(r,"trigger"),tree:D(r,"treeId")??D(r,"tree"),gate:D(r,"gate"),limit:vs(r.limit,"assurance verdict limit"),dry_run:r.dryRun===!0||r.dry_run===!0,fullChangedFields:r.fullChangedFields===!0,idOnly:r.idOnly===!0,author:D(r,"author"),message:D(r,"message"),preset:D(r,"preset"),owner:D(r,"owner"),apply:r.apply===!0,enforcement:D(r,"enforcement")},n)}import Hn from"node:fs/promises";import $o from"node:path";import To from"node:fs/promises";import Rc 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]="fe72275e-b195-5a7e-b963-a9f159f9c67c")}catch{}})();var bC=864e5;function kC(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null||Array.isArray(t))return null;let n=t.created_at;return typeof n=="string"?n:null}async function SC(e,t){let n;try{n=await To.readdir(e,{withFileTypes:!0})}catch(i){if(z(i))return[];throw i}let r=[];for(let i of n)if(i.isDirectory()){let o=Rc.join(e,i.name),s;try{s=await To.readdir(o)}catch(a){z(a)||t.push(`checkpoint_subdir_unreadable:${i.name}`);continue}for(let a of s)a.endsWith(".json")&&r.push(`${i.name}/${a}`)}else i.name.endsWith(".json")&&r.push(i.name);return r.sort()}async function gg(e,t){let{dryRun:n,hooks:r}=t,i=t.now??Date.now(),o=Math.max(0,t.retentionDays)*bC,s=Rc.join(e,"checkpoints"),a={scanned:0,removed:[],retained:[],warnings:[],entries:[]},c=await SC(s,a.warnings);for(let l of c){let d=Rc.join(s,l),u=`checkpoints/${l}`;a.scanned+=1,r?.onRead&&a.warnings.push(...await r.onRead(d));let m;try{m=await To.readFile(d,"utf8")}catch(w){if(z(w)){a.scanned-=1;continue}a.warnings.push(`checkpoint_unreadable:${l}`),a.retained.push(u),a.entries.push({file:u,created_at:null,age_seconds:null,stale:!1,reason:"unparseable"});continue}let f=kC(m),p=f===null?Number.NaN:Date.parse(f);if(!Number.isFinite(p)){a.warnings.push(`checkpoint_unparseable:${l}`),a.retained.push(u),a.entries.push({file:u,created_at:f,age_seconds:null,stale:!1,reason:"unparseable"});continue}let _=i-p,h={file:u,created_at:f,age_seconds:Math.floor(_/1e3),stale:_>o,reason:_>o?"expired":"active"};if(!h.stale){a.retained.push(u),a.entries.push(h);continue}if(!n){try{await To.unlink(d)}catch(w){if(!z(w)){a.warnings.push(`checkpoint_remove_failed:${l}`),a.retained.push(u),a.entries.push(h);continue}}r?.onWrite&&a.warnings.push(...await r.onWrite(d))}a.removed.push(u),a.entries.push(h)}return a}import Cc from"node:fs/promises";import yg 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]="9189cea6-950f-5594-9321-b7590171297c")}catch{}})();var EC=1440*60*1e3,xC=new Set(["committed","compensated"]);function IC(e){let t;try{t=JSON.parse(e)}catch{return{status:null,updatedAt:null}}if(typeof t!="object"||t===null||Array.isArray(t))return{status:null,updatedAt:null};let n=t;return{status:typeof n.status=="string"?n.status:null,updatedAt:typeof n.updatedAt=="string"?n.updatedAt:null}}function AC(e,t,n,r,i){let o=n===null?Number.NaN:Date.parse(n);if(t===null||!Number.isFinite(o))return{entry:{file:e,status:t,age_seconds:null,stale:!1,reason:"unparseable"},remove:!1};let s=r-o;return xC.has(t)?s>i?{entry:{file:e,status:t,age_seconds:Math.floor(s/1e3),stale:!0},remove:!0}:{entry:{file:e,status:t,age_seconds:Math.floor(s/1e3),stale:!1,reason:"fresh"},remove:!1}:{entry:{file:e,status:t,age_seconds:Math.floor(s/1e3),stale:!1,reason:"active"},remove:!1}}async function RC(e,t,n,r){let i=r.hooks?.onRead?await r.hooks.onRead(e):[],o=IC(await Cc.readFile(e,"utf8")),s=AC(t,o.status,o.updatedAt,r.nowMs,r.retentionMs);return s.entry.reason==="unparseable"&&i.push(`transaction_journal_unparseable:${n}`),s.remove&&!r.dryRun&&(await Cc.rm(e,{force:!0}),r.hooks?.onWrite&&i.push(...await r.hooks.onWrite(e))),{decision:s,warnings:i}}async function wg(e,t){let{dryRun:n,hooks:r}=t,i=t.now??Date.now(),o=Math.max(0,t.retentionDays)*EC,s=yg.join(e,"transactions","sdk"),a={scanned:0,removed:[],retained:[],warnings:[],entries:[]},c;try{c=(await Cc.readdir(s)).filter(l=>l.endsWith(".json")).sort((l,d)=>l.localeCompare(d))}catch(l){if(z(l))return a;throw l}for(let l of c){let d=yg.join(s,l),u=`transactions/sdk/${l}`,m=await RC(d,u,l,{dryRun:n,hooks:r,nowMs:i,retentionMs:o});a.warnings.push(...m.warnings),a.scanned+=1;let{decision:f}=m;if(!f.remove){a.retained.push(u),a.entries.push(f.entry);continue}a.removed.push(u),a.entries.push(f.entry)}return 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]="8e2e3b62-5eb1-5773-96bf-866b26a59345")}catch{}})();var Mr=["index","embeddings","runtime","locks","checkpoints","transactions"],CC=1440*60*1e3,TC=[{scope:"index",relativePath:"index/manifest.json",kind:"file"},{scope:"embeddings",relativePath:"search/embeddings.jsonl",kind:"file"},{scope:"embeddings",relativePath:"search/vectorization-status.json",kind:"file"},{scope:"embeddings",relativePath:"search/lancedb",kind:"directory"},{scope:"embeddings",relativePath:"search/pending-refresh.json",kind:"file"},{scope:"embeddings",relativePath:"search/pending-refresh.gate.lock",kind:"directory"},{scope:"runtime",relativePath:"runtime/test-runs",kind:"directory"},{scope:"runtime",relativePath:"runtime/history-drift-cache.json",kind:"file"}];async function $C(e,t,n){let r=t.relativePath,i=$o.join(e,r),o=await We({path:i,scope:"project"});try{let s=await Hn.stat(i);if(t.kind==="file"&&!s.isFile())return{removed:!1,warnings:[...o,`not_a_file:${r}`]};if(t.kind==="directory"&&!s.isDirectory())return{removed:!1,warnings:[...o,`not_a_directory:${r}`]};if(n)return{removed:!0,warnings:o};t.kind==="file"?await Hn.unlink(i):await Hn.rm(i,{recursive:!0,force:!0});let a=await X({path:i,scope:"project",op:"gc:remove"});return{removed:!0,warnings:[...o,...a]}}catch(s){if(z(s))return{removed:!1,warnings:o};throw s}}async function OC(e,t){let n=[{relativePath:"runtime/workspace-snapshots/objects",prefix:".create-"},{relativePath:"runtime/workspace-snapshots/refs",prefix:".ref-"}],r=[],i=[],o=[],s=Date.now()-CC;for(let a of n){let c=$o.join(e,a.relativePath);if(!await O(c))continue;let l=(await Hn.readdir(c)).filter(d=>d.startsWith(a.prefix)).sort();for(let d of l){let u=$o.posix.join(a.relativePath,d),m=$o.join(c,d);o.push(...await We({path:m,scope:"project"}));let f=await Hn.stat(m).catch(p=>{if(!z(p))throw p});if(f){if(f.mtimeMs>s){i.push(u);continue}r.push(u),!t&&(await Hn.rm(m,{recursive:!0,force:!0}),o.push(...await X({path:m,scope:"project",op:"gc:workspace_snapshot_temp_remove"})))}}}return{removed:r,retained:i,warnings:o}}function DC(e){if(!e||e.length===0)return[...Mr];let t=e.flatMap(r=>r.split(",")).map(r=>r.trim().toLowerCase()).filter(r=>r.length>0);if(t.length===0)throw new y(`--scope requires at least one value (${Mr.join(",")})`,g.USAGE);let n=new Set;for(let r of t){if(!Mr.includes(r))throw new y(`Invalid --scope value "${r}". Expected one or more of: ${Mr.join(", ")}`,g.USAGE);n.add(r)}return Mr.filter(r=>n.has(r))}function PC(e){let t=[];e.dryRun&&t.push("Dry-run preview only: no cache artifacts were deleted.");let n=e.scopes.includes("index")||e.scopes.includes("embeddings"),r=e.removed.some(i=>i==="index/manifest.json"||i==="search/embeddings.jsonl"||i==="search/vectorization-status.json"||i==="search/lancedb"||i==="search/pending-refresh.json"||i==="search/pending-refresh.gate.lock");return n&&r&&t.push('Search artifacts were removed; the semantic index (including any queued background refresh) is invalidated. Run "pm install search-advanced --project" if reindex is unavailable, then "pm reindex --mode keyword" (and "--mode semantic" when semantic search is enabled) before search-heavy workflows.'),e.removed.includes("runtime/history-drift-cache.json")&&t.push('History drift cache was removed; the next "pm health" run performs a full history-drift re-scan.'),!e.dryRun&&e.removed.some(i=>i.startsWith("checkpoints/"))&&t.push('Aged rollback checkpoints were removed; their "pm update-many"/"pm close-many --rollback" windows are no longer recoverable.'),!e.dryRun&&e.removed.some(i=>i.startsWith("transactions/"))&&t.push("Aged terminal workspace-transaction journals were removed; replaying those transactionIds re-executes their idempotent steps instead of short-circuiting."),t}async function aG(e,t={}){let n=N(process.cwd(),e.path);await ne(n);let r=await $(n),i=t.dryRun===!0,o=DC(t.scope),s=TC.filter(p=>o.includes(p.scope)),a=[],c=[],l=[];for(let p of s){let _=await $C(n,p,i);_.removed?a.push(p.relativePath):c.push(p.relativePath),l.push(..._.warnings)}if(o.includes("runtime")){let p=await OC(n,i);a.push(...p.removed),c.push(...p.retained),l.push(...p.warnings)}let d;if(o.includes("locks")){let p=await vm(n,{dryRun:i,hooks:{onRead:_=>We({path:_,scope:"project"}),onWrite:_=>X({path:_,scope:"project",op:"gc:lock_remove"})}});a.push(...p.removed),c.push(...p.retained),l.push(...p.warnings),d={scanned:p.scanned,removed:p.removed.length,retained:p.retained.length}}let u;if(o.includes("transactions")){let p=r.checkpoints.retention_days,_=await wg(n,{dryRun:i,retentionDays:p,hooks:{onRead:h=>We({path:h,scope:"project"}),onWrite:h=>X({path:h,scope:"project",op:"gc:transaction_journal_remove"})}});a.push(..._.removed),c.push(..._.retained),l.push(..._.warnings),u={scanned:_.scanned,removed:_.removed.length,retained:_.retained.length,retention_days:p}}let m;if(o.includes("checkpoints")){let p=r.checkpoints.retention_days,_=await gg(n,{dryRun:i,retentionDays:p,hooks:{onRead:h=>We({path:h,scope:"project"}),onWrite:h=>X({path:h,scope:"project",op:"gc:checkpoint_remove"})}});a.push(..._.removed),c.push(..._.retained),l.push(..._.warnings),m={scanned:_.scanned,removed:_.removed.length,retained:_.retained.length,retention_days:p}}l.push(...await Yr({mode:i?"gc:dry-run":"gc",total_items:s.length}));let f=PC({dryRun:i,scopes:o,removed:a});return{ok:l.length===0,dry_run:i,scope:o,removed:a,retained:c,warnings:l,...d?{locks:d}:{},...m?{checkpoints:m}:{},...u?{transactions:u}:{},guidance:f,generated_at:T()}}import{execFile as NC}from"node:child_process";import LC from"node:path";import{promisify as MC}from"node:util";(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]="4bc28901-e70b-5a76-80bb-762ed8227e5f")}catch{}})();var jC=MC(NC),bg="@unbrained/pm-cli",FC="latest",UC={global:["--global"],project:[]};function vg(e){let t=e.project===!0||e.local===!0||e.scope==="project",n=e.global===!0||e.scope==="global";if(t&&n)throw new y('Options "--project/--local" and "--global" are mutually exclusive.',g.USAGE);return n?"global":"project"}function Do(e){return e.trim().toLowerCase()}function kg(e,t){let n=Do(t);return[e.name,e.directory,e.source.input,e.source.location,e.source.package,e.source.repository,e.source.owner&&e.source.repo?`${e.source.owner}/${e.source.repo}`:void 0].some(i=>typeof i=="string"&&Do(i)===n)}function zC(e,t){let n=N(process.cwd(),t.path),r=on(n,process.cwd());return{selected_root:e==="global"?r.global:r.project}}async function HC(e,t,n){try{let r=await jC(e,t,{cwd:n?.cwd,encoding:"utf8"});return{stdout:r.stdout,stderr:r.stderr}}catch(r){let i=typeof r=="object"&&r!==null&&"stderr"in r?String(r.stderr??""):"",o=i.trim().length>0?i.trim():r instanceof Error?r.message:String(r);throw new y(`Command failed: ${e} ${t.join(" ")}
|
|
68
68
|
${o}`,g.GENERIC_FAILURE)}}function Po(e){return typeof e.tag=="string"&&e.tag.trim().length>0?e.tag.trim():FC}function Oo(e){return typeof e.packageName=="string"&&e.packageName.trim().length>0?e.packageName.trim():bg}async function WC(e,t){let n=e.commandRunner??HC,r=Oo(e),i=Po(e),o=`${r}@${i}`,s=["npm","install","-g",o];e.repair===!0&&s.push("--force");let a=Kc(import.meta.url,["../../.."]),c={requested:!0,status:"planned",package:r,target:o,command:s,before_version:a,...r===bg?{migration_guidance:["Calendar scheduling commands are package-owned. If calendar is absent, run pm package install calendar --project; use pm calendar meet, pm calendar event, or pm calendar remind."]}:{},repair:e.repair===!0};if(t)return c;try{await n(s[0],s.slice(1));let l=await n("pm",["--version"]);return{...c,status:"updated",after_version:l.stdout.trim()||void 0}}catch(l){return{...c,status:"failed",error:l instanceof Error?l.message:String(l)}}}function GC(e){return LC.isAbsolute(e)||e.startsWith(".")||e.startsWith("..")||e.startsWith("file:")}function qC(e,t){if(e.kind==="npm"){let n=e.input.startsWith("npm:")?e.input.slice(4).trim():e.input.trim();return!GC(n)&&e.package&&e.package.trim().length>0?`npm:${e.package.trim()}@${t}`:e.input.startsWith("npm:")?e.input:`npm:${e.input}`}return e.input}async function BC(e,t){let n=qC(e,t);return e.kind!=="local"||await O(n)?n:await O(e.location)?e.location:n}function VC(e,t,n,r){let i=["pm","package","install",t,n==="global"?"--global":"--project"];return e.kind==="github"&&r&&r.trim().length>0&&i.push("--ref",r.trim()),i}async function Sg(e,t){let n=zC(e,t);return(await we(n.selected_root)).state.entries.filter(i=>i.scope===e)}async function JC(e,t,n){let r=await Sg(e,t);return r.find(i=>kg(i,n.name))??r.find(i=>Do(i.directory)===Do(n.directory))}async function KC(e,t,n,r,i){let o=Po(t),s=await BC(e.source,o),a=VC(e.source,s,r,e.source.ref),c={name:e.name,directory:e.directory,scope:r,source:e.source,status:"planned",command:a,previous_version:e.manifest_version};if(i)return c;try{await va(s,{install:!0,project:r==="project",global:r==="global",ref:e.source.kind==="github"?e.source.ref:void 0},n);let l=await JC(r,n,e);return{...c,status:"updated",installed_version:l?.manifest_version}}catch(l){return{...c,status:"failed",error:l instanceof Error?l.message:String(l)}}}function YC(e,t,n,r){let i=[n?e.status:void 0,...t.map(o=>o.status)].filter(o=>typeof o=="string");return{requested_cli:n,requested_packages:r,planned:i.filter(o=>o==="planned").length,updated:i.filter(o=>o==="updated").length,skipped:i.filter(o=>o==="skipped").length,failed:i.filter(o=>o==="failed").length}}async function hG(e,t,n){let r=typeof e=="string"&&e.trim().length>0?e.trim():void 0;if(t.cliOnly===!0&&t.packagesOnly===!0){let m=["package","upgrade",...r?[r]:[],"--packages-only","--dry-run",...UC[vg(t)]];throw new y('Options "--cli-only" and "--packages-only" are mutually exclusive.',g.USAGE,{code:"package_upgrade_modes_mutually_exclusive",recovery:{suggested_retry:Ze(m),suggested_retry_args:m}})}let i=vg(t),o=t.dryRun===!0;if(t.cliOnly===!0&&r)throw new y('A package target cannot be used with "--cli-only".',g.USAGE);let s=!(t.packagesOnly===!0||r),a=t.cliOnly!==!0,c=s?await WC(t,o):{requested:!1,status:"skipped",package:Oo(t),target:`${Oo(t)}@${Po(t)}`,command:["npm","install","-g",`${Oo(t)}@${Po(t)}`],repair:t.repair===!0,reason:"not_requested"},l=a?await Sg(i,n):[];if(r&&(l=l.filter(m=>kg(m,r)),l.length===0))throw new y(`Managed package "${r}" was not found in ${i} scope.`,g.NOT_FOUND);let d=[];for(let m of l)d.push(await KC(m,t,n,i,o));let u=YC(c,d,s,a);return{ok:u.failed===0,action:"upgrade",dry_run:o,scope:i,target:r,cli:c,packages:d,summary:u}}import{createHash as XC}from"node:crypto";import{isUtf8 as ZC}from"node:buffer";import jr from"node:fs/promises";import Tc 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]="d0001f37-7941-5cad-8950-2c6925056d10")}catch{}})();async function Eg(e){try{return(await jr.readdir(e)).filter(t=>t.endsWith(".jsonl")).sort()}catch(t){if(z(t))return[];throw t}}function QC(e,t,n,r){let i=t.at(-1),o;for(let c=t.length-1;c>=0;c-=1)if(["history_compact","history_compact_baseline","history_redact","history_repair","history_salvage","merge_reconcile"].includes(t[c].op)){o=t[c];break}let s=t[0]?.context?.history_compaction,a=typeof s=="object"&&s!==null&&"pruned_stream_digest"in s&&typeof s.pruned_stream_digest=="string"?s.pruned_stream_digest:null;return{id:e,entries:t.length,bytes:n,stream_digest:r,latest_after_hash:i?.after_hash??null,latest_record_hash:i?.record_hash??null,latest_hash_algorithm:i?Ee(i.hash_algorithm):null,rewrite_count:t.reduce((c,l)=>c+(l.reanchor_evidence?.length??0),0),checkpoint_digest:a,last_maintenance:o?{op:o.op,ts:o.ts,record_hash:o.record_hash??null}:null}}function eT(e,t,n){try{if(!/^[A-Za-z0-9_-]+$/u.test(e)||!ZC(t))return null;let r=[];for(let i of t.toString("utf8").split(/\r?\n/u)){if(!i.trim())continue;let o=JSON.parse(i);if(typeof o!="object"||o===null||Array.isArray(o))return null;let s=o;if(![s.op,s.author,s.ts,s.before_hash,s.after_hash].every(a=>typeof a=="string")||!Array.isArray(s.patch))return null;r.push(s)}return Kn(r).ok?QC(e,r,t.length,n):null}catch{return null}}async function $c(e,t){if(!(await jr.stat(e)).isDirectory())throw new TypeError("attestation tracker root must be a directory");let n=Tc.join(e,"history"),r=await Eg(n),i=new Map,o=[];for(let s of r){let a=s.slice(0,-6),c={id:a,digest:null,stream:null};o.push(c);let l=Tc.join(n,s);try{let d=await jr.lstat(l);if(i.set(s,C([d.ino,d.size,d.mtimeMs,d.ctimeMs])),!d.isFile())continue;let u=await jr.readFile(l);c.digest=XC(t).update(u).digest("hex"),c.stream=eT(a,u,c.digest)}catch{}}if(C(r)!==C(await Eg(n)))throw new TypeError("attestation history inventory changed during read; retry");for(let[s,a]of i){let c=await jr.lstat(Tc.join(n,s));if(a!==C([c.ino,c.size,c.mtimeMs,c.ctimeMs]))throw new TypeError("attestation history stream changed during read; retry")}return 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]="0a4b3fc5-70bb-5ec0-82b5-a7cdd03c09ea")}catch{}})();function Oc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Dc(e,t){return Object.keys(e).length===t.length&&t.every(n=>Object.hasOwn(e,n))}function Wn(e,t){return typeof e=="string"&&(t==="sha256"?/^[a-f0-9]{64}$/u:/^[a-f0-9]{128}$/u).test(e)}function tT(e){return e.entries===0?[e.latest_hash_algorithm,e.latest_after_hash,e.latest_record_hash,e.checkpoint_digest,e.last_maintenance].every(t=>t===null)&&e.rewrite_count===0:e.latest_hash_algorithm!=="sha256"&&e.latest_hash_algorithm!=="sha512"?!1:Wn(e.latest_after_hash,e.latest_hash_algorithm)&&(e.latest_record_hash===null||Wn(e.latest_record_hash,e.latest_hash_algorithm))}function nT(e){return e===null?!0:!Oc(e)||!Dc(e,["op","ts","record_hash"])?!1:typeof e.op=="string"&&["history_compact","history_compact_baseline","history_redact","history_repair","history_salvage","merge_reconcile"].includes(e.op)&&typeof e.ts=="string"&&Et(e.ts)&&(e.record_hash===null||Wn(e.record_hash,"sha256")||Wn(e.record_hash,"sha512"))}function rT(e,t){return!Oc(e)||!Dc(e,["id","entries","bytes","stream_digest","latest_after_hash","latest_record_hash","latest_hash_algorithm","rewrite_count","checkpoint_digest","last_maintenance"])?!1:typeof e.id=="string"&&/^[A-Za-z0-9_-]+$/u.test(e.id)&&[e.entries,e.bytes,e.rewrite_count].every(n=>typeof n=="number"&&Number.isSafeInteger(n)&&n>=0)&&Wn(e.stream_digest,t)&&tT(e)&&(e.checkpoint_digest===null||Wn(e.checkpoint_digest,"sha256"))&&nT(e.last_maintenance)}function xg(e){if(!Oc(e)||!Dc(e,["format","version","hash_algorithm","generated_at","streams","workspace_digest"]))throw new TypeError("Invalid history attestation bundle");if(e.format!==Xo.format||e.version!==1||typeof e.generated_at!="string"||!Et(e.generated_at)||!Array.isArray(e.streams)||e.hash_algorithm!=="sha256"&&e.hash_algorithm!=="sha512")throw new TypeError("Invalid history attestation format");let t=e.hash_algorithm,n;for(let o of e.streams){if(!rT(o,t))throw new TypeError("Invalid history attestation stream");let s=o.id;if(n!==void 0&&s<=n)throw new TypeError("Invalid history attestation stream order");n=s}let{workspace_digest:r,...i}=e;if(Zo(C(i),t)!==r)throw new TypeError("History attestation rollup mismatch");return e}async function Ig(e={}){let t=Ee(e.hashAlgorithm),n=e.generatedAt??T();if(!Et(n))throw new TypeError("Invalid history attestation timestamp");let r=await $c(N(e.cwd??process.cwd(),e.pmRoot),t),i=r.filter(s=>s.stream===null);if(i.length>0)throw new TypeError(`Cannot export history attestation: invalid streams ${i.map(s=>s.id).join(", ")}`);let o={format:Xo.format,version:1,hash_algorithm:t,generated_at:n,streams:r.map(s=>s.stream)};return xg({...o,workspace_digest:Zo(C(o),t)})}async function Ag(e,t={}){let n=xg(e),r=await $c(N(t.cwd??process.cwd(),t.pmRoot),n.hash_algorithm),i=new Map(r.map(d=>[d.id,d])),o=new Map(n.streams.map(d=>[d.id,d])),s=n.streams.filter(d=>!i.has(d.id)).map(d=>d.id),a=r.filter(d=>!o.has(d.id)).map(d=>d.id),c=r.filter(d=>d.stream===null).map(d=>d.id),l=[];for(let d of n.streams){let u=i.get(d.id);u&&(u.digest!==d.stream_digest||C(u.stream)!==C(d))&&l.push({id:d.id,before_digest:d.stream_digest,after_digest:u.digest,last_maintenance:u.stream?.last_maintenance??null})}return{ok:s.length+a.length+c.length+l.length===0,workspace_digest:n.workspace_digest,streams_checked:r.length,changed_streams:l.map(d=>d.id),missing_streams:s,added_streams:a,invalid_streams:c,transitions:l}}import Rg 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]="825d7132-a49d-584a-b4ac-0801cfe6ad49")}catch{}})();async function FG(e,t){for(let r of["verify","output","hashAlgorithm"]){let i=e[r];if(!(r==="verify"&&typeof i=="object"&&i!==null)&&i!==void 0&&(typeof i!="string"||i.trim().length===0))throw new y(`history attest ${r} requires a nonempty string.`,g.USAGE)}if(e.verify!==void 0){if(e.output!==void 0||e.hashAlgorithm!==void 0)throw new y("history attest --verify cannot be combined with --output or --hash-algorithm",g.USAGE);let r;try{r=typeof e.verify=="string"?JSON.parse(await Rg.readFile(e.verify,"utf8")):e.verify}catch{throw new y("Cannot read history attestation proof. Provide --verify with a readable JSON proof file.",g.USAGE)}return Ag(r,{pmRoot:t.path})}let n=await Ig({pmRoot:t.path,hashAlgorithm:Ee(e.hashAlgorithm)});if(e.output===void 0)return n;try{await Rg.writeFile(e.output,`${JSON.stringify(n,null,2)}
|
|
69
69
|
`,{flag:"wx",mode:384})}catch{throw new y("Cannot create history attestation proof. Choose --output with a new filename in a writable directory; existing files are never overwritten.",g.USAGE)}return{output:e.output,workspace_digest:n.workspace_digest,streams:n.streams.length}}(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]="48abeea1-703c-57e9-9d99-787cb2829efb")}catch{}})();function Cg(e){return e.invalidEvidenceCount>0?"merge_evidence_invalid":e.historyEvidenceValid?e.pendingDecisionCount>0||e.losslessCount>0?"merge_reconciliation_required":e.driftedItemCount>0?"history_repair_required":e.fence.status!=="ok"||e.drivers===null||e.drivers.status!=="ok"?"merge_fence_unprepared":"ready":"history_evidence_invalid"}function Tg(e,t,n=process.platform){let r=["--pm-path",t];return e==="merge_evidence_invalid"?Ze([...r,"merge","report"],n):e==="history_evidence_invalid"?Ze([...r,"validate","--check-history-drift","--full"],n):e==="merge_reconciliation_required"?Ze([...r,"merge","reconcile"],n):e==="history_repair_required"?Ze([...r,"history-repair","--all"],n):e==="merge_fence_unprepared"?Ze([...r,"merge","install"],n):null}function $g(e){let t=Array.isArray(e.drifted_items)?e.drifted_items.filter(r=>typeof r=="string"):[];return{evidence_valid:Array.isArray(e.drifted_items)&&e.drifted_items.every(r=>typeof r=="string")&&typeof e.drifted_items_count=="number"&&Number.isInteger(e.drifted_items_count)&&e.drifted_items_count>=0&&typeof e.drifted_items_truncated=="boolean"&&typeof e.counts=="object"&&e.counts!==null&&!Array.isArray(e.counts),drifted_item_count:typeof e.drifted_items_count=="number"?e.drifted_items_count:t.length,drifted_item_ids:t,drifted_item_ids_truncated:e.drifted_items_truncated===!0,counts:typeof e.counts=="object"&&e.counts!==null?e.counts:{}}}async function ZG(e){let t=N(process.cwd(),e.path);await ne(t);let n=await $(t),r=G(n,H()),i=[],o=await ko({includeBody:!0,pmRoot:t,settings:n,typeToFolder:r.type_to_folder,warnings:i}),s=await tt(t),[a,c,l,d]=await Promise.all([An(t,At(n)),s===null?Promise.resolve(null):Rn(s),yt(s??t,{includeLossless:!0,pmRoot:t}),So(t,o,!1)]),{pendingDecisions:u,lossless:m}=Nn(l.receipts),f=[...new Set(u.map(w=>w.item_id))].sort((w,v)=>w.localeCompare(v)),p=d.check.details,_=$g(p),h=Cg({invalidEvidenceCount:l.invalid_evidence_count,pendingDecisionCount:u.length,losslessCount:m.length,historyEvidenceValid:_.evidence_valid,driftedItemCount:_.drifted_item_count,fence:a,drivers:c});return{ok:h==="ready",state:h,merge_fence:{committed:a,clone_local_drivers:c},merge_receipts:{pending_decision_count:u.length,pending_item_ids:f.slice(0,25),pending_item_ids_truncated:f.length>25,lossless_count:m.length,invalid_evidence_count:l.invalid_evidence_count},history_drift:_,next_action:{command:Tg(h,t),reason:h},warnings:[...new Set(i)].sort((w,v)=>w.localeCompare(v)),generated_at:T()}}function QG(e){let t=e.next_action.command??"none";return[`workspace_position: ${e.state}`,`merge_fence: ${e.merge_fence.committed.status}`,`clone_local_drivers: ${e.merge_fence.clone_local_drivers?.status??"unavailable"}`,`pending_merge_decisions: ${e.merge_receipts.pending_decision_count}`,`history_drifted_items: ${e.history_drift.drifted_item_count}`,`next_action: ${t}`].join(`
|
|
@@ -71,5 +71,5 @@ ${o}`,g.GENERIC_FAILURE)}}function Po(e){return typeof e.tag=="string"&&e.tag.tr
|
|
|
71
71
|
`)}catch{}}function aT(e){let t=(e??"keyword").trim().toLowerCase();if(t==="keyword")return"keyword";if(t==="semantic"||t==="hybrid")return t;throw new y("Reindex mode must be one of keyword|semantic|hybrid",g.USAGE)}async function cT(e,t,n,r){let i=[];return{candidates:await Ad(e,t,n,i,r),warnings:i}}async function Mc(e,t,n,r,i){let o=rn(H()),s=[];for(let a of t)if(!(i&&!i.has(a.metadata.id))){if(typeof a.body=="string"){s.push({metadata:a.metadata,body:a.body});continue}try{let c=await iT.readFile(a.item_path,"utf8"),l=xt(c,{format:a.item_format,schema:n,extensionFieldNames:o,onWarning:d=>r.push(d)});s.push({metadata:a.metadata,body:l.body})}catch{r.push(`item_list_item_read_failed:${Fr.relative(e,a.item_path)}`),s.push({metadata:a.metadata,body:""})}}return s}function lT(e,t,n){let r=e.metadata;return{id:r.id,mode:t,updated_at:r.updated_at,corpus:Td(e,{fields:n})}}var Gn=te;function dT(e){let t=H(),n=Gn(e.search?.provider);if(!n)return null;let r=dd(t,n);if(!r)return null;let i=r.runtime_definition??r.definition,o=Gn(i.name)??Gn(r.definition.name);if(!o)return null;let s=i.embedBatch,a=i.embed_batch,c=i.embed,l=typeof s=="function"?s:typeof a=="function"?a:void 0,d=typeof c=="function"?c:void 0;return!l&&!d?null:{name:o,embedBatch:l,embed:d}}function uT(e){let t=H(),n=Gn(e.vector_store?.adapter);if(!n)return null;let r=ud(t,n);if(!r)return null;let i=r.runtime_definition??r.definition,o=Gn(i.name)??Gn(r.definition.name);if(!o)return null;let s=i.upsert,a=i.delete;return{adapterName:o,...typeof s=="function"?{upsert:s}:{},...typeof a=="function"?{delete:a}:{}}}function Lc(e,t){if(!Array.isArray(e)||e.some(n=>typeof n!="number"||!Number.isFinite(n)))throw new y(`Invalid vector returned by ${t}`,g.GENERIC_FAILURE);return e}async function mT(e,t,n){let r=t.search?.embedding_model?.trim()||"text-embedding-3-small";if(e.embedBatch){let o=await Promise.resolve(e.embedBatch({inputs:n,settings:t,model:r}));if(!Array.isArray(o))throw new y(`Extension search provider "${e.name}" embedBatch must return an array of vectors`,g.GENERIC_FAILURE);return o.map((s,a)=>Lc(s,`extension search provider "${e.name}" embedBatch output at index ${a}`))}if(!e.embed)throw new y(`Extension search provider "${e.name}" does not implement embed/embedBatch`,g.GENERIC_FAILURE);let i=[];for(let[o,s]of n.entries()){let a=await Promise.resolve(e.embed({input:s,settings:t,model:r}));i.push(Lc(a,`extension search provider "${e.name}" embed output at index ${o}`))}return i}function Og(e){return e.search?.embedding_model?.trim()||"text-embedding-3-small"}function Dg(e,t,n){let r=n?Wt(n.name,Og(e)):t?Wt(t.name,t.model):null;if(!r)throw new y("No embedding identity available for semantic reindex mode",g.USAGE);return r}function fT(e,t){return Object.keys(e).filter(n=>!t.has(n)).sort((n,r)=>n.localeCompare(r))}async function Pg(e,t,n,r,i,o,s,a){let c=r?.name??n?.name,l=$d(c,e.search.embedding_corpus_max_characters).maxCharacters,d=is(e),u=i.map(p=>Od(p,{providerName:c,maxCharacters:l,fields:d})),m=[],f=null;if(r)try{m=await mT(r,e,u),f=Wt(r.name,Og(e))}catch(p){if(!n)throw new y(`Extension search provider "${r.name}" failed to generate embeddings: ${p instanceof Error?p.message:String(p)}`,g.GENERIC_FAILURE);o.push(`Extension search provider "${r.name}" failed; falling back to built-in provider (${p instanceof Error?p.message:String(p)})`)}if(m.length===0){if(!n)throw new y(`No embedding executor available for reindex mode '${t}'`,g.USAGE);let p=await Dd(n,e,u,{onProgress:_=>{_.phase==="complete"&&(s.batches_completed=_.batch_index),le(a,`embedding_batch_${_.phase} batch=${_.batch_index}/${_.batch_total} size=${_.batch_size} completed_inputs=${_.completed_inputs}/${_.total_inputs}`)}});o.push(...p.warnings),s.batching=p.receipt,m=p.vectors,f=Wt(n.name,n.model)}if(le(a,`embedding_complete vectors=${m.length}`),m.length!==i.length)throw new y(`Embedding output size mismatch (expected ${i.length}, received ${m.length})`,g.GENERIC_FAILURE);if(!f)throw new y(`No embedding identity available for reindex mode '${t}'`,g.USAGE);return{vectors:m,embeddingIdentity:f}}async function pT(e,t,n,r,i,o){let s=Object.keys(n);if(t){if(s.length>0&&t.delete)try{await Promise.resolve(t.delete({ids:s.sort((a,c)=>a.localeCompare(c)),settings:r}))}catch(a){throw new y(`Extension vector adapter "${t.adapterName}" failed to delete vectors during reindex reset: ${a instanceof Error?a.message:String(a)}`,g.GENERIC_FAILURE)}else s.length>0&&i.push(`search_semantic_reindex_reset_skipped:adapter=${t.adapterName}:known_ids=${s.length}`);if(!e)return}e&&await Ld(e,s,{},o)}async function Ng(e,t,n,r,i){if(n.length!==0){if(t){if(t.delete)try{await Promise.resolve(t.delete({ids:n,settings:r}))}catch(o){throw new y(`Extension vector adapter "${t.adapterName}" failed to delete orphan vectors during reindex: ${o instanceof Error?o.message:String(o)}`,g.GENERIC_FAILURE)}else i.push(`search_semantic_reindex_orphan_prune_skipped:adapter=${t.adapterName}:count=${n.length}`);if(!e)return}e&&await Nd(e,n)}}function hT(e){return{enabled:e!=="keyword",stale_items:0,unchanged_items:0,embedded_items:0,vector_upserted:0,batches_completed:0}}function _T(e,t,n){return{version:1,mode:e,generated_at:t,total_items:n.length,items:n.map(r=>({id:r.metadata.id,type:r.metadata.type,status:r.metadata.status,priority:r.metadata.priority,updated_at:r.metadata.updated_at}))}}function gT(e){if(e.requestedMode==="keyword")return{activeEmbeddingProvider:null,activeVectorStore:null};let t=Zn(e.settings);if(!t.active&&!e.extensionEmbedding)throw new y(`Reindex mode '${e.requestedMode}' requires a configured embedding provider in settings.providers.openai/settings.providers.ollama or an extension provider selected by settings.search.provider`,g.USAGE);let n=_i(e.settings,e.pmRoot);if(!n.active&&!e.extensionVectorAdapter)throw new y(`Reindex mode '${e.requestedMode}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`,g.USAGE);return{activeEmbeddingProvider:t.active,activeVectorStore:n.active}}async function yT(e){let t=G(e.settings,H()),n=await cT(e.pmRoot,e.settings.item_format,t.type_to_folder,e.settings.schema);return{documentCandidates:n.candidates,warnings:[...n.warnings],metadataDocuments:n.candidates.map(r=>({metadata:r.metadata,body:typeof r.body=="string"?r.body:""}))}}async function wT(e){let t=await yn(e.pmRoot);if(e.reindexWarnings.push(...t.warnings),e.forceFullSemantic&&e.reindexWarnings.push("search_semantic_reindex_full_ignored:mode_keyword"),!t.embedding)return;let n=(()=>{try{return Dg(e.settings,Zn(e.settings).active,e.extensionEmbedding)}catch{return null}})();n&&gn(t.embedding,n)&&(e.reindexWarnings.push("search_semantic_reindex_requires_rebuild:embedding_identity_changed"),e.reindexWarnings.push(oT))}async function vT(e){let t=await yn(e.pmRoot);e.semanticWarnings.push(...t.warnings);let n=Dg(e.settings,e.activeEmbeddingProvider,e.extensionEmbedding),r=new Set(e.metadataDocuments.map(l=>l.metadata.id)),i=fT(t.entries,r),o=gn(t.embedding,n);e.forceFullSemantic&&!o&&e.semanticWarnings.push("search_semantic_reindex_full_rebuild_forced");let s=e.forceFullSemantic||o?e.metadataDocuments:e.metadataDocuments.filter(l=>t.entries[l.metadata.id]!==l.metadata.updated_at),a=new Set(s.map(l=>l.metadata.id)),c=a.size>0?await Mc(e.pmRoot,e.documentCandidates,e.settings.schema,e.reindexWarnings,a):[];return{ledgerEntries:t.entries,ledgerEmbedding:t.embedding,orphanIds:i,resetRequired:o,staleDocuments:c,freshDocuments:e.metadataDocuments.length-c.length}}async function bT(e){let t=new Set(e.metadataDocuments.map(i=>i.metadata.id)),n=await Mc(e.pmRoot,e.documentCandidates,e.settings.schema,e.reindexWarnings,t);e.semanticSummary.stale_items=n.length,e.semanticSummary.unchanged_items=0,le(e.progressEnabled,`embedding_dimension_changed reset_items=${n.length}`);let r=await Pg(e.settings,e.requestedMode,e.activeEmbeddingProvider,e.extensionEmbedding,n,e.semanticWarnings,e.semanticSummary,e.progressEnabled);return{...r,staleDocuments:n,vectorDimension:os(r.vectors,"Reindex embeddings")}}async function kT(e){let t=await Pg(e.settings,e.requestedMode,e.activeEmbeddingProvider,e.extensionEmbedding,e.staleDocuments,e.semanticWarnings,e.semanticSummary,e.progressEnabled),n=t.vectors,r=t.embeddingIdentity,i=os(n,"Reindex embeddings");if(!(!e.resetRequired&&(gn(e.ledgerEmbedding,r)||jd(e.ledgerEmbedding,i))))return{vectors:n,embeddingIdentity:r,staleDocuments:e.staleDocuments,vectorDimension:i,resetRequired:e.resetRequired};let s=await bT(e);return n=s.vectors,r=s.embeddingIdentity,i=s.vectorDimension,{vectors:n,embeddingIdentity:r,staleDocuments:s.staleDocuments,vectorDimension:i,resetRequired:!0}}async function ST(e){if(e.extensionVectorAdapter)try{let t=e.extensionVectorAdapter.adapterName;if(le(e.progressEnabled,`vector_upsert_start adapter=${t} points=${e.points.length}`),typeof e.extensionVectorAdapter.upsert!="function")throw new y(`Extension vector adapter "${t}" does not support upserting vectors.`,g.USAGE);await Promise.resolve(e.extensionVectorAdapter.upsert({points:e.points,settings:e.settings})),e.semanticSummary.vector_upserted=e.points.length,le(e.progressEnabled,`vector_upsert_complete adapter=${t}`);return}catch(t){if(t instanceof y)throw t;if(!e.activeVectorStore)throw new y(`Extension vector adapter "${e.extensionVectorAdapter.adapterName}" failed to upsert vectors: ${t instanceof Error?t.message:String(t)}`,g.GENERIC_FAILURE);e.semanticWarnings.push(`Extension vector adapter "${e.extensionVectorAdapter.adapterName}" failed; falling back to built-in vector store (${t instanceof Error?t.message:String(t)})`),le(e.progressEnabled,"vector_upsert_fallback built_in_store")}if(e.activeVectorStore){le(e.progressEnabled,`vector_upsert_start adapter=${e.activeVectorStore.name} points=${e.points.length}`),await Pd(e.activeVectorStore,e.points),e.semanticSummary.vector_upserted=e.points.length,le(e.progressEnabled,`vector_upsert_complete adapter=${e.activeVectorStore.name}`);return}throw new y(`No vector upsert executor available for reindex mode '${e.requestedMode}'`,g.USAGE)}function ET(e,t){return e.map((n,r)=>({id:n.metadata.id,vector:Lc(t[r],`reindex embeddings output at index ${r}`),payload:{id:n.metadata.id,type:n.metadata.type,status:n.metadata.status,priority:n.metadata.priority,updated_at:n.metadata.updated_at}}))}async function xT(e){le(e.progressEnabled,`embedding_start items=${e.plan.staleDocuments.length} unchanged_items=${e.plan.freshDocuments}`);let t=await kT({pmRoot:e.pmRoot,settings:e.settings,requestedMode:e.requestedMode,activeEmbeddingProvider:e.activeEmbeddingProvider,extensionEmbedding:e.extensionEmbedding,documentCandidates:e.documentCandidates,metadataDocuments:e.metadataDocuments,staleDocuments:e.plan.staleDocuments,ledgerEmbedding:e.plan.ledgerEmbedding,resetRequired:e.plan.resetRequired,semanticWarnings:e.semanticWarnings,reindexWarnings:e.reindexWarnings,semanticSummary:e.semanticSummary,progressEnabled:e.progressEnabled});t.resetRequired?(le(e.progressEnabled,"vector_reset_start"),await pT(e.activeVectorStore,e.extensionVectorAdapter,e.plan.ledgerEntries,e.settings,e.semanticWarnings,e.plan.ledgerEmbedding?t.vectorDimension:void 0),le(e.progressEnabled,"vector_reset_complete")):await Ng(e.activeVectorStore,e.extensionVectorAdapter,e.plan.orphanIds,e.settings,e.semanticWarnings);let n=ET(t.staleDocuments,t.vectors);return e.semanticSummary.embedded_items=t.vectors.length,await ST({requestedMode:e.requestedMode,activeVectorStore:e.activeVectorStore,extensionVectorAdapter:e.extensionVectorAdapter,settings:e.settings,points:n,semanticWarnings:e.semanticWarnings,semanticSummary:e.semanticSummary,progressEnabled:e.progressEnabled}),{staleDocuments:t.staleDocuments,embeddingMetadata:Md(t.embeddingIdentity,t.vectorDimension)}}async function IT(e){let t=await vT(e);e.semanticSummary.stale_items=t.staleDocuments.length,e.semanticSummary.unchanged_items=t.freshDocuments;let n=Object.fromEntries(e.metadataDocuments.map(o=>[o.metadata.id,o.metadata.updated_at]));if(le(e.progressEnabled,`semantic_stale_items stale=${t.staleDocuments.length} total=${e.metadataDocuments.length} unchanged=${t.freshDocuments} full=${e.forceFullSemantic||t.resetRequired}`),t.staleDocuments.length===0)return le(e.progressEnabled,`embedding_skipped unchanged_items=${t.freshDocuments}`),e.semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${t.freshDocuments}`),await Ng(e.activeVectorStore,e.extensionVectorAdapter,t.orphanIds,e.settings,e.semanticWarnings),{documentsForKeywordArtifacts:e.documentsForKeywordArtifacts,vectorizationLedgerEntries:n,vectorizationEmbeddingMetadata:t.ledgerEmbedding};let r=await xT({...e,plan:t});t.freshDocuments>0&&e.semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${t.freshDocuments}`);let i=new Map(r.staleDocuments.map(o=>[o.metadata.id,o]));return{documentsForKeywordArtifacts:e.metadataDocuments.map(o=>i.get(o.metadata.id)??o),vectorizationLedgerEntries:n,vectorizationEmbeddingMetadata:r.embeddingMetadata}}async function AT(e){let t=Fr.join(e.pmRoot,Pc),n=Fr.join(e.pmRoot,Nc),r=is(e.settings),i=e.documentsForKeywordArtifacts.map(s=>JSON.stringify(lT(s,e.mode,r))).join(`
|
|
72
72
|
`);le(e.progressEnabled,"writing keyword artifacts"),await Q(t,`${JSON.stringify(e.manifest,null,2)}
|
|
73
73
|
`),await Q(n,`${i}
|
|
74
|
-
`);let o=[];if(e.mode!=="keyword")try{le(e.progressEnabled,"writing vectorization status ledger"),await Fd(e.pmRoot,e.vectorizationLedgerEntries,e.vectorizationEmbeddingMetadata)}catch(s){o.push(`search_vectorization_status_ledger_write_failed:${s instanceof Error?s.message:String(s)}`)}return o}async function s2(e,t){let n=aT(e.mode),r=sT(e),i=e.full===!0;le(r,`start mode=${n}`);let o=N(process.cwd(),t.path);await ne(o);let s=pi(await $(o)).settings,a=null;try{a=await ce(o,yd,s.locks.ttl_seconds,q(void 0,"pm-reindex"),!1,s.governance.force_required_for_stale_lock,s.locks.wait_ms)}catch(c){throw c instanceof y&&c.exitCode===g.CONFLICT?new y("Another pm reindex run is already active for this project. Wait for it to finish before starting a new keyword, semantic, or hybrid reindex.",g.CONFLICT,{code:"reindex_already_running",type:"urn:pm-cli:error:reindex_already_running",why:"Semantic reindex can be expensive and duplicate runs compete for the same local embedding model and vector store.",nextSteps:["Check active pm reindex processes before starting another reindex.","Rerun with --progress when you need non-interactive visibility."]}):c}try{let c=dT(s),l=uT(s),d=gT({requestedMode:n,pmRoot:o,settings:s,extensionEmbedding:c,extensionVectorAdapter:l}),u=n;le(r,"loading item corpus");let m=await yT({pmRoot:o,settings:s}),f=m.warnings,{documentCandidates:p,metadataDocuments:_}=m;le(r,`loaded_items=${_.length}`);let h=T(),w=_T(u,h,_),v=Fr.join(o,Pc),k=Fr.join(o,Nc),S=u==="keyword"?await Mc(o,p,s.schema,f):_,x=[],R={},E=null,b=hT(u);if(u==="keyword"&&await wT({pmRoot:o,settings:s,forceFullSemantic:i,extensionEmbedding:c,reindexWarnings:f}),u!=="keyword"){let F=await IT({pmRoot:o,settings:s,requestedMode:n,activeEmbeddingProvider:d.activeEmbeddingProvider,activeVectorStore:d.activeVectorStore,extensionEmbedding:c,extensionVectorAdapter:l,documentCandidates:p,metadataDocuments:_,documentsForKeywordArtifacts:S,forceFullSemantic:i,reindexWarnings:f,semanticWarnings:x,semanticSummary:b,progressEnabled:r});S=F.documentsForKeywordArtifacts,R=F.vectorizationLedgerEntries,E=F.vectorizationEmbeddingMetadata}let j=await AT({pmRoot:o,mode:u,manifest:w,documentsForKeywordArtifacts:S,settings:s,vectorizationLedgerEntries:R,vectorizationEmbeddingMetadata:E,progressEnabled:r}),I=[...await X({path:v,scope:"project",op:"reindex:manifest"}),...await X({path:k,scope:"project",op:"reindex:embeddings"}),...await Yr({mode:u,total_items:_.length})];return le(r,"done"),{ok:!0,mode:u,total_items:_.length,semantic:b,artifacts:{manifest:Pc,embeddings:Nc},warnings:[...f,...x,...j,...I],generated_at:h}}finally{await a?.()}}export{L as a,Ie as b,Qe as c,wn as d,Zd as e,eu as f,Gt as g,ls as h,Bg as i,ms as j,fs as k,iu as l,bn as m,tr as n,hs as o,uy as p,du as q,nr as r,_s as s,Si as t,gs as u,mu as v,fu as w,pu as x,Ym as y,AD as z,rv as A,iv as B,tt as C,sP as D,Ev as E,py as F,HT as G,gu as H,gy as I,c$ as J,ub as K,dN as L,fN as M,pN as N,hr as O,hN as P,_N as Q,gN as R,yN as S,wN as T,vN as U,bN as V,kN as W,SN as X,EN as Y,xN as Z,pp as _,va as $,nD as aa,mm as ba,U$ as
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
`);let o=[];if(e.mode!=="keyword")try{le(e.progressEnabled,"writing vectorization status ledger"),await Fd(e.pmRoot,e.vectorizationLedgerEntries,e.vectorizationEmbeddingMetadata)}catch(s){o.push(`search_vectorization_status_ledger_write_failed:${s instanceof Error?s.message:String(s)}`)}return o}async function s2(e,t){let n=aT(e.mode),r=sT(e),i=e.full===!0;le(r,`start mode=${n}`);let o=N(process.cwd(),t.path);await ne(o);let s=pi(await $(o)).settings,a=null;try{a=await ce(o,yd,s.locks.ttl_seconds,q(void 0,"pm-reindex"),!1,s.governance.force_required_for_stale_lock,s.locks.wait_ms)}catch(c){throw c instanceof y&&c.exitCode===g.CONFLICT?new y("Another pm reindex run is already active for this project. Wait for it to finish before starting a new keyword, semantic, or hybrid reindex.",g.CONFLICT,{code:"reindex_already_running",type:"urn:pm-cli:error:reindex_already_running",why:"Semantic reindex can be expensive and duplicate runs compete for the same local embedding model and vector store.",nextSteps:["Check active pm reindex processes before starting another reindex.","Rerun with --progress when you need non-interactive visibility."]}):c}try{let c=dT(s),l=uT(s),d=gT({requestedMode:n,pmRoot:o,settings:s,extensionEmbedding:c,extensionVectorAdapter:l}),u=n;le(r,"loading item corpus");let m=await yT({pmRoot:o,settings:s}),f=m.warnings,{documentCandidates:p,metadataDocuments:_}=m;le(r,`loaded_items=${_.length}`);let h=T(),w=_T(u,h,_),v=Fr.join(o,Pc),k=Fr.join(o,Nc),S=u==="keyword"?await Mc(o,p,s.schema,f):_,x=[],R={},E=null,b=hT(u);if(u==="keyword"&&await wT({pmRoot:o,settings:s,forceFullSemantic:i,extensionEmbedding:c,reindexWarnings:f}),u!=="keyword"){let F=await IT({pmRoot:o,settings:s,requestedMode:n,activeEmbeddingProvider:d.activeEmbeddingProvider,activeVectorStore:d.activeVectorStore,extensionEmbedding:c,extensionVectorAdapter:l,documentCandidates:p,metadataDocuments:_,documentsForKeywordArtifacts:S,forceFullSemantic:i,reindexWarnings:f,semanticWarnings:x,semanticSummary:b,progressEnabled:r});S=F.documentsForKeywordArtifacts,R=F.vectorizationLedgerEntries,E=F.vectorizationEmbeddingMetadata}let j=await AT({pmRoot:o,mode:u,manifest:w,documentsForKeywordArtifacts:S,settings:s,vectorizationLedgerEntries:R,vectorizationEmbeddingMetadata:E,progressEnabled:r}),I=[...await X({path:v,scope:"project",op:"reindex:manifest"}),...await X({path:k,scope:"project",op:"reindex:embeddings"}),...await Yr({mode:u,total_items:_.length})];return le(r,"done"),{ok:!0,mode:u,total_items:_.length,semantic:b,artifacts:{manifest:Pc,embeddings:Nc},warnings:[...f,...x,...j,...I],generated_at:h}}finally{await a?.()}}export{L as a,Ie as b,Qe as c,wn as d,Zd as e,eu as f,Gt as g,ls as h,Bg as i,ms as j,fs as k,iu as l,bn as m,tr as n,hs as o,uy as p,du as q,nr as r,_s as s,Si as t,gs as u,mu as v,fu as w,pu as x,Ym as y,AD as z,rv as A,iv as B,tt as C,sP as D,Ev as E,py as F,HT as G,gu as H,gy as I,c$ as J,ub as K,dN as L,fN as M,pN as N,hr as O,hN as P,_N as Q,gN as R,yN as S,wN as T,vN as U,bN as V,kN as W,SN as X,EN as Y,xN as Z,pp as _,va as $,nD as aa,mm as ba,Ai as ca,U$ as da,D as ea,se as fa,z$ as ga,vs as ha,H$ as ia,W$ as ja,Ru as ka,G$ as la,q$ as ma,B$ as na,Py as oa,V$ as pa,J$ as qa,bs as ra,K$ as sa,Y$ as ta,ws as ua,X$ as va,Z$ as wa,Tu as xa,Q$ as ya,Ly as za,Du as Aa,lO as Ba,sr as Ca,dO as Da,Wy as Ea,Gy as Fa,uO as Ga,qy as Ha,f_ as Ia,_O as Ja,Uu as Ka,h_ as La,Dz as Ma,Pz as Na,ar as Oa,Ti as Pa,Hu as Qa,Wu as Ra,Gu as Sa,qu as Ta,Ku as Ua,Xu as Va,Zu as Wa,tm as Xa,Dt as Ya,qj as Za,Bj as _a,Vj as $a,Jj as ab,oF as bb,th as cb,La as db,xF as eb,yt as fb,IF as gb,AF as hb,Qx as ib,rI as jb,hh as kb,uw as lb,rm as mb,Ua as nb,v1 as ob,b1 as pb,Oi as qb,Di as rb,Uh as sb,wU as tb,zh as ub,Wh as vb,Gh as wb,Vh as xb,Kh as yb,IR as zb,AR as Ab,jz as Bb,Fz as Cb,Uz as Db,zz as Eb,CR as Fb,TR as Gb,$R as Hb,Hz as Ib,y_ as Jb,DR as Kb,w_ as Lb,sc as Mb,b_ as Nb,PR as Ob,NR as Pb,LR as Qb,dc as Rb,uc as Sb,Zz as Tb,Qz as Ub,eH as Vb,m0 as Wb,rW as Xb,cg as Yb,Lr as Zb,ug as _b,mg as $b,fg as ac,Ic as bc,vC as cc,jW as dc,aG as ec,hG as fc,xg as gc,Ig as hc,Ag as ic,FG as jc,ZG as kc,QG as lc,e2 as mc,s2 as nc};
|
|
75
|
+
//# sourceMappingURL=chunk-FBIRNSYP.js.map
|