@unbrained/pm-cli 2026.10.13 → 2026.10.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +19 -0
- package/dist/cli/extension-command-help.js +2 -2
- package/dist/cli/extension-command-options.js +1 -1
- package/dist/cli/main.js +2 -2
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/{chunk-AM2XOZKE.js → chunk-2UKKO45F.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-3S5SEMEB.js +8 -0
- package/dist/cli-bundle/chunks/{chunk-LBDWFWPK.js → chunk-5LU6PWA4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RL45OYTL.js → chunk-66BZVFIK.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-IDEHMKYZ.js +235 -0
- package/dist/cli-bundle/chunks/{chunk-UBTYYZIE.js → chunk-JTF6VMXH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YH6H3UVE.js → chunk-LE4IEHDG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-APWPC4ZZ.js → chunk-LKESCZEN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HXHFKXLV.js → chunk-LOSRTNNP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-N5EXRYCZ.js → chunk-MAT4AP7P.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PSNS537F.js → chunk-PP3BVMFL.js} +28 -28
- package/dist/cli-bundle/chunks/{chunk-IFPJDJUM.js → chunk-UNQZGMJL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WYZGZV2M.js → chunk-YXRAYL7H.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-BJ742QOR.js → register-list-query-GBLTOQQL.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-GGGBRIH2.js → register-mutation-TNRHNK4N.js} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-E6HXYHNM.js → register-operations-J3WXP3MA.js} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-4ZVTVEPY.js → register-setup-HLSKKU4V.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-73UNAJHD.js → chunk-23ACMPGB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-NNW5BS5L.js → chunk-4UA7KY4V.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-KGFRQ34R.js → chunk-AULVKHYX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-3LQEBXU5.js → chunk-BUAGNTLG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-DVK7VKZL.js → chunk-ELQNEJDA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-SOB7X4FJ.js → chunk-ESOW6PH4.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-HNRI2KBT.js +3 -0
- package/dist/cli-bundle/focused-chunks/{chunk-IIKFTJVC.js → chunk-IGBSAHCA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-F5J3ATMV.js → chunk-JDVZF75H.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-RU6GCFN3.js → chunk-KSMQEB3V.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-LKWDWER4.js +20 -0
- package/dist/cli-bundle/focused-chunks/{chunk-RAA7SVRA.js → chunk-QIU4Y3AB.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-R23T7GFZ.js → chunk-RHQCQTZA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-UPJA45K7.js → chunk-WIXZF5SS.js} +18 -18
- package/dist/cli-bundle/focused-chunks/{chunk-6BTUISKV.js → chunk-Y5A4XOSK.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-QMNAY25P.js → chunk-YJNKISEI.js} +6 -6
- 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 -22
- 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 +46 -46
- 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 +7 -7
- package/dist/core/extensions/flag-definition-validation.d.ts +13 -0
- package/dist/core/extensions/flag-definition-validation.js +1 -1
- package/dist/core/extensions/flag-value-types.js +1 -1
- package/dist/core/sentry/helpers.d.ts +2 -0
- package/dist/core/sentry/helpers.js +1 -1
- package/dist/core/sentry/instrument.d.ts +2 -0
- package/dist/core/sentry/instrument.js +1 -1
- package/dist/core/telemetry/runtime.d.ts +1 -1
- package/dist/core/telemetry/runtime.js +2 -2
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
- package/dist/sdk/governance/defect-recurrence.js +2 -1
- package/dist/sdk/merge/install.js +1 -1
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/runtime-primitives.d.ts +4 -2
- package/dist/sdk/runtime-primitives.js +1 -1
- package/dist/sdk/testing.d.ts +4 -0
- package/dist/sdk/testing.js +2 -2
- package/docs/CONFIGURATION.md +43 -0
- package/docs/DEFECT_RECURRENCE.md +8 -0
- package/docs/EXTENSIONS.md +1 -1
- package/docs/EXTENSION_AUTHOR_CONTRACTS.md +19 -0
- package/docs/MERGE_SAFETY.md +8 -0
- package/docs/SDK.md +19 -0
- package/marketplace.json +1 -1
- 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 +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +1 -1
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +1 -1
- package/dist/cli-bundle/chunks/chunk-DJDRHJBP.js +0 -234
- package/dist/cli-bundle/chunks/chunk-DUK5DHI6.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-IOTNG6CN.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-S6ITXQ5T.js +0 -20
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Xa,c as Jr,d as Kr,e as Od,g as Dd,h as Qa,i as Pd,j as ln,k as un,l as Nd,m as Ld,n as eo,o as Fd,p as mn,q as pn,r as Ud,s as Hd,t as to}from"./chunk-R23T7GFZ.js";import{e as ri,f as ro,h as io}from"./chunk-DVK7VKZL.js";import{B as Yd,C as ei,D as Xd,E as no,G as Zd,H as Qd,J as el,K as tl,L as ti,O as ni,a as Ad,g as Ya,i as Id}from"./chunk-IOTNG6CN.js";import{K as du}from"./chunk-RU6GCFN3.js";import{D as uo,E as wi,Ha as eu,Ia as tu,Ma as nu,Na as ru,T as vi,U as Tl,V as mo,W as Zn,Y as po,aa as zl,ba as Gl,ca as Wl,da as ql,ea as Ei,f as vl,g as bl,ga as Bl,h as kl,ha as Vl,i as El,ia as Jl,ja as Vt,k as yi,ka as Kl,kb as ou,la as yn,ma as Yl,mb as _o,na as fo,nb as su,o as Yn,oa as wn,ob as cu,p as Sl,pa as Xl,q as xl,qa as Zl,r as Xn,ra as Ql,s as Al,sa as ho,u as lo,v as Il,wb as go,z as Rl}from"./chunk-S6ITXQ5T.js";import{a as Rd,b as dn,c as Za,d as Cd,e as Td,f as ct,g as Yr,h as $d,i as It}from"./chunk-6BTUISKV.js";import{$ as ol,$b as Si,Ba as li,Bb as ne,Ca as ui,Cb as ve,D as W,Da as so,Db as be,E as nl,Ea as Tt,Eb as Ul,Fa as Kn,Fb as ki,Ga as _l,Gb as lt,H as Ce,Ha as mi,Hb as ut,I as ao,Ia as Bt,Ja as ce,Ka as pi,Kb as Hl,La as gl,Lb as mt,Ma as co,Na as fi,O as rl,Oa as gn,P as ii,Pa as hi,Qa as yl,S as ai,T as oi,Ua as Te,V as il,W as je,Xa as wl,Ya as T,Z as Ct,Za as _i,Zb as Qn,_ as al,_a as gi,aa as sl,ab as Cl,ba as dt,ca as cl,gc as iu,ha as dl,hb as $l,ia as oo,ib as Ol,ja as si,jc as au,ka as hn,kb as Dl,lb as Pl,ma as ci,mb as $t,na as ll,nb as Nl,oa as ul,ob as Ll,qa as ml,rb as Ml,sa as pl,sb as jl,ua as fl,wa as di,xb as bi,ya as _n,za as hl,zb as Fl}from"./chunk-F5J3ATMV.js";import{b as sn,e as le,g as Le,i as Re,j as Ze,n as ge,o as Md,p as Xr,r as jd}from"./chunk-NNW5BS5L.js";import{$ as g,$a as L,$d as Rt,Ba as fe,Bc as Zr,Ca as Ne,Cc as Gd,Da as cd,Dc as Wd,Fa as ee,Fc as qd,Gb as vd,Ia as dd,Na as ld,Nc as H,Pb as bd,Qc as X,S as td,Sc as Ge,T as nd,Ta as ud,Tc as Bd,Ua as md,Uc as Qr,V as rd,Va as G,X as id,Y as qr,Yd as $,Z as ad,Zc as Vd,Zd as Kd,_a as Jn,_d as fn,a as Gr,aa as y,ab as Ke,ae as qt,bb as Br,cb as zt,d as Wr,dd as Jd,eb as pd,ec as kd,ed as Me,fb as Gt,fc as Ed,fe as te,ha as od,hb as fd,i as Zc,ib as C,jb as hd,ka as sd,kb as Ie,l as Qc,m as ed,ma as qa,mb as Vr,nb as _d,nc as Sd,ob as Ba,oc as Wt,pb as Va,pc as Ka,qb as Ja,qc as xd,ra as Vn,rc as cn,sa as O,sb as gd,ta as At,tb as yd,tc as Ye,ua as F,va as V,vc as Xe,w as Wa,wb as wd,ya as Z,zc as zd}from"./chunk-UPJA45K7.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]="081bf1eb-4b9a-5fa9-a272-34ae781d250c")}catch{}})();var M=class extends TypeError{constructor(t){super(t),this.name="AssuranceMutationRefusalError"}},$e=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 vn(e){try{return await e()}catch(t){throw t instanceof M?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_mutation_refused"}):t}}async function lu(e){try{return await e()}catch(t){throw t instanceof $e?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_evaluation_refused",...t.context}):t}}import{createHash as ly}from"node:crypto";import uy 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 bn=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]="416aaf09-e4f6-5d10-aee0-eba374f1cd83")}catch{}})();var mu=1,Jt=["pre-commit","pre-push","pre-merge","ci","pre-release","post-release","scheduled","on-claim","on-close"],yo=["items","dependency_kind","prose_edge_gap","graph","validate","health","history","links","provider","derived"],my=["ceiling","floor","equals","zero","monotone_nondecreasing","monotone_nonincreasing","subset_of"],py=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,xi=30,Ai=5e3,pu=4,fy=50;function pt(e,t){if(!py.test(e))throw new M(`${t} must be a stable lowercase id`)}function hy(e,t){if(!Number.isFinite(e)||e<0)throw new M(`${t} must be a finite non-negative number`)}function er(e){let t=my.filter(i=>e[i]!==void 0);if(t.length!==1)throw new M(`assertion ${e.id} must declare exactly one polarity`);let n=t[0],r=e[n];return{polarity:n,value:n==="zero"?0:r}}function vo(e,t){return C(e)===C(t)}function fu(e,t){if(t.polarity==="equals")return vo(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 hu(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=>fu(r.observed,t)===(r.expected==="pass"))}function _y(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!vo(e.value,t.value)}function gy(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 _y(er(e),er(t))||n[t.enforcement]<n[e.enforcement]||r}function yy(e){if(e.state!==void 0&&!(e.state==="present"||e.state==="missing"))throw new M("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 M("items source with field requires exactly one of equals or state");if(e.field===void 0&&r!==0)throw new M("items source equals/state requires field")}function wy(e){if(typeof e.dependency_kind!="string"||e.dependency_kind.trim().length===0)throw new M("dependency_kind source requires dependency_kind");if([e.source_kind,e.source_kind_prefix,e.source_kind_state].filter(t=>t!==void 0).length>1)throw new M("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 M("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 M("dependency_kind source source_kind_state must be present or missing")}function vy(e){if(e.sample_limit!==void 0&&(!Number.isInteger(e.sample_limit)||e.sample_limit<1))throw new M("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 M("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 M("prose_edge_gap exemption selectors must not be empty")}}function bo(e){pt(e.id,"measurement.id"),e.max_cost!==void 0&&hy(e.max_cost,"measurement.max_cost");let t=e.source;if(Object.prototype.toString.call(t)!=="[object Object]")throw new M(`measurement.source.kind must be one of ${yo.join(", ")}`);let n=Reflect.get(t,"kind");if(!yo.includes(n))throw new M(`measurement.source.kind must be one of ${yo.join(", ")}`);let r=t;if(r.kind==="items"&&yy(r),r.kind==="dependency_kind"&&wy(r),r.kind==="prose_edge_gap"&&vy(r),(r.kind==="graph"||r.kind==="validate"||r.kind==="health")&&(typeof r.field!="string"||r.field.trim().length===0))throw new M(`${r.kind} source requires field`);return r.kind==="provider"&&(pt(r.provider,"provider source provider"),pt(r.key,"provider source key")),e}function ko(e){if(pt(e.id,"assertion.id"),pt(e.measurement_id,"assertion.measurement_id"),typeof e.owner_item_id!="string"||e.owner_item_id.trim().length===0)throw new M("assertion.owner_item_id is required");let t=er(e);if(typeof t.value=="number"&&!Number.isFinite(t.value))throw new M(`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 M("retired assertion requires retire_reason");e.scope.kind==="filter"&&pt(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 M("assertion negative control requires pass and fail cases");if(!hu(e))throw new M(`assertion ${e.id} negative control does not prove its bound`);return e}function by(e){if(!Array.isArray(e.allowed_providers))throw new M("gate provider_policy.allowed_providers must be an array");for(let t of e.allowed_providers)pt(t,"gate.provider_policy.allowed_provider");if(typeof e.triggers!="object"||e.triggers===null||Array.isArray(e.triggers))throw new M("gate provider_policy.triggers must be an object");for(let[t,n]of Object.entries(e.triggers)){if(!Jt.includes(t))throw new M(`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 M(`gate provider policy trigger ${t} is invalid`)}}function _u(e){if(pt(e.id,"gate.id"),!Array.isArray(e.assertion_ids))throw new M("gate.assertion_ids is required and must be an array");if(e.assertion_ids.length===0)throw new M("gate requires at least one assertion");for(let t of e.assertion_ids)pt(t,"gate.assertion_id");if(!Array.isArray(e.triggers))throw new M(`gate.triggers is required and must be an array of ${Jt.join(", ")}`);if(e.triggers.length===0)throw new M("gate requires at least one trigger");for(let t of e.triggers)if(!Jt.includes(t))throw new M(`gate trigger must be one of ${Jt.join(", ")}`);return e.provider_policy&&by(e.provider_policy),e}function kn(e){if(e.version!==mu)throw new M(`unsupported assurance document version ${String(e.version)}`);let t=new Set;for(let r of e.measurements){if(bo(r),t.has(`measurement:${r.id}`))throw new M(`duplicate measurement ${r.id}`);t.add(`measurement:${r.id}`)}for(let r of e.assertions){if(ko(r),t.has(`assertion:${r.id}`))throw new M(`duplicate assertion ${r.id}`);t.add(`assertion:${r.id}`)}for(let r of e.gates){_u(r);let i=r.assertion_ids.filter(a=>!e.assertions.some(o=>o.id===a));if(i.length>0)throw new M(`gate ${r.id} references missing assertions: ${i.join(", ")}`);if(t.has(`gate:${r.id}`))throw new M(`duplicate gate ${r.id}`);t.add(`gate:${r.id}`)}let n=new Set(e.measurements.map(r=>r.id));for(let[r,i]of gu(e))if(!n.has(r))throw new M(`${i.join(", ")} references missing measurement ${r}`);return e}function Eo(e,t){if("measurement"in e){t.push(e.measurement);return}if("operator"in e)for(let n of e.operands)Eo(n,t)}function gu(e){let t=new Map,n=(r,i)=>{let a=t.get(r)??[];a.push(i),t.set(r,a)};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=[];Eo(r.source.expression,i);for(let a of i)n(a,`derived measurement ${r.id}`)}return t}function ky(e,t){let n=e.assertion_ids.flatMap(a=>{let o=t.assertions.find(s=>s.id===a);return[o.measurement_id,...o.scope.kind==="filter"?[o.scope.measurement_id]:[]]}),r=new Set,i=new Set;for(;n.length>0;){let a=n.pop();if(r.has(a))continue;r.add(a);let o=t.measurements.find(s=>s.id===a);o.source.kind==="provider"?i.add(o.source.provider):o.source.kind==="derived"&&Eo(o.source.expression,n)}return i}function tr(){return{version:mu,measurements:[],assertions:[],gates:[]}}function Ey(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 a=i==null||i===""||Array.isArray(i)&&i.length===0;return e.state==="missing"?a:!a}return vo(i,e.equals)})()));return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function Sy(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 xy(e,t){let n=[],r=qa(e.dependency_kind)??e.dependency_kind.trim().toLowerCase();for(let i of t.items)for(let a of i.dependencies??[]){let o=qa(a.kind)??a.kind.trim().toLowerCase(),s=a.source_kind?.trim();o===r&&Sy(e,s)&&n.push(`${i.id}->${a.id}${s?`@${s}`:""}`)}return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n}}function Ay(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 a=Reflect.get(i,"text");typeof a=="string"&&t.push(a)}}}return t}function Iy(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 wo(e,t){return[e.toLowerCase(),t.toLowerCase()].sort().join("\0")}function Ry(e){let t=new Map,n=new Set,r=[],i=/(?<![\w-])[a-z0-9]+(?:-+[a-z0-9]+)+(?![\w-])/giu,a=0;for(let o of e){t.set(o.id.toLowerCase(),o.id);for(let s of o.dependencies??[])n.add(wo(o.id,s.id));for(let s of[o.parent,o.blocked_by])typeof s=="string"&&n.add(wo(o.id,s));for(let s of Ay(o)){let c=[...s.matchAll(i)].map(d=>d[0]);a+=c.length,r.push({holder_id:o.id,segment:s,mentioned_ids:c})}}return{canonical_ids:t,linked_pairs:n,prose_mentions:r,mention_count:a}}function Cy(e,t){let n=Ry(t.items),r=new Map;for(let o of n.prose_mentions){let s=o.mentioned_ids.map(d=>n.canonical_ids.get(d.toLowerCase())).filter(d=>d!==void 0&&d!==o.holder_id),c=[...new Set(s)];for(let d of c){let l=wo(o.holder_id,d);if(n.linked_pairs.has(l)||Iy(e.exemptions??[],o.holder_id,d,o.segment))continue;let u=c.some(m=>m!==d);r.get(l)?.explicit===!0&&!u||r.set(l,{contributor:`${o.holder_id}->${d}|subject=${u?"explicit":"implicit"}`,explicit:u})}}let i=[...r.values()],a=i.map(o=>o.contributor).sort();return{value:a.length,population_size:n.canonical_ids.size,cost:t.items.length+n.linked_pairs.size+n.mention_count,contributors:a.slice(0,e.sample_limit??25),partitions:{explicit_subject:i.filter(o=>o.explicit).length,implicit_subject:i.filter(o=>!o.explicit).length}}}function Ty(e,t){return{value:t.history.filter(n=>(e.op===void 0||n.op===e.op)&&(e.author===void 0||n.author===e.author)&&(e.harness===void 0||n.agent_harness===e.harness)&&(e.model===void 0||n.agent_model===e.model)).length,population_size:t.history.length,cost:t.history.length}}function $y(e,t){let n=t.items.filter(r=>{let i=r[e.link],a=Array.isArray(i)&&i.length>0;return e.state==="present"?a:!a});return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function Oy(e,t){let n=e.source;return n.kind==="items"?Ey(n,t):n.kind==="dependency_kind"?xy(n,t):n.kind==="prose_edge_gap"?Cy(n,t):n.kind==="history"?Ty(n,t):n.kind==="links"?$y(n,t):null}function yu(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 Dy(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 wu(e,t,n){let r=new Array(e.length),i=0,a=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let o=i;i+=1,r[o]=await n(e[o],o)}});return await Promise.all(a),r}async function vu(e,t,n,r,i){if("literal"in e)return{value:e.literal,costs:[],population_size:0,contributors:[]};if("measurement"in e){let o=n.find(d=>d.id===e.measurement);if(!o)throw new TypeError(`derived measurement references missing ${e.measurement}`);let s=await bu(o,t,n,r,i);if(typeof s.value!="number")throw new TypeError(`derived measurement ${o.id} is not numeric`);let c=i.charged.has(o.id)?[]:[s.cost];return i.charged.add(o.id),{value:s.value,costs:c,population_size:s.population_size,contributors:s.contributors}}let a=await wu(e.operands,pu,o=>vu(o,t,n,r,i));return{value:Dy(e.operator,a.map(o=>o.value)),costs:a.flatMap(o=>o.costs),population_size:Math.max(0,...a.map(o=>o.population_size)),contributors:[...new Set(a.flatMap(o=>o.contributors))]}}async function Py(e,t,n,r,i){bo(e);let a=Date.now(),o,s=[],c=0;if(e.source.kind==="derived"){let u=await vu(e.source.expression,t,n,[...r,e.id],i);o={value:u.value,population_size:u.population_size,cost:0,contributors:u.contributors},s=u.costs}else{let u=Oy(e,t);u!==null?o=u:(o=await t.external(e.source),c=1)}let d={units:o.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()-a},l=yu([...s,d],Date.now()-a);if(e.max_cost!==void 0&&l.units>e.max_cost)throw new $e(`measurement ${e.id} exceeded cost ceiling ${e.max_cost} with ${l.units}`);return{id:e.id,definition_fingerprint:`sha256:${ly("sha256").update(C(e)).digest("hex")}`,value:o.value,population_size:o.population_size,cost:l,contributors:o.contributors??[],...o.partitions?{partitions:o.partitions}:{}}}function bu(e,t,n,r,i){if(r.includes(e.id))throw new TypeError(`derived measurement cycle: ${[...r,e.id].join(" -> ")}`);let a=i.cache.get(e.id);if(a)return a;let o=Py(e,t,n,r,i).catch(s=>{if(s instanceof Qe&&s.measurement_id===void 0){let c={measurement_id:e.id,source_kind:s.source_kind,field:s.field,...s.check?{check:s.check}:{}},d=new Qe(s.message,c);throw d.cause=s,d}throw s});return i.cache.set(e.id,o),o}async function So(e,t,n=[e]){return bu(e,t,n,[],{cache:new Map,charged:new Set})}function Ny(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,e-t.value)}function Ly(e,t,n={}){ko(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:Ny(t.value,r),verdict:i?"retired":fu(t.value,r)?"pass":"fail",enforcement:e.enforcement,negative_control_proven:hu(e),cost:t.cost,contributors:t.contributors,...t.partitions?{partitions:t.partitions}:{}}}function My(e,t,n,r){let i=ky(e,t);if(i.size===0)return;let a=e.provider_policy,o=a?.triggers[r];if(!a||!o)throw new $e(`assurance gate ${e.id} refuses provider execution at trigger ${r} without an explicit provider policy`);let s=new Set(a.allowed_providers),c={low:0,medium:1,high:2};for(let d of i){if(!s.has(d))throw new $e(`assurance gate ${e.id} refuses provider ${d}`);let l=n.provider_capabilities?.[d];if(!l)throw new $e(`assurance provider ${d} has no declared capabilities`);if(c[l.cost_class]>c[o.max_cost_class])throw new $e(`assurance gate ${e.id} refuses ${l.cost_class}-cost provider ${d} at trigger ${r}`);if(l.network&&!o.allow_network)throw new $e(`assurance gate ${e.id} refuses network provider ${d} at trigger ${r}`)}}async function uu(e,t,n,r,i){try{return await So(n,r,i)}catch(a){if(a instanceof Qe){let o=a.check?` check ${a.check}`:"",s=a.measurement_id??n.id,c=new $e(`assurance gate ${e} assertion ${t} measurement ${s} source ${a.source_kind}${o} field ${a.field} could not resolve: ${a.message}`,{gate_id:e,assertion_id:t,measurement_id:s,source_kind:a.source_kind,field:a.field,...a.check?{check:a.check}:{}});throw c.cause=a,c}throw a}}async function ku(e,t,n,r){kn(t);let i=t.gates.find(c=>c.id===e);if(!i)throw new $e(`assurance gate ${e} not found`);if(!i.triggers.includes(r.trigger))throw new $e(`assurance gate ${e} does not declare trigger ${r.trigger}`);My(i,t,n,r.trigger);let a=await wu(i.assertion_ids,pu,async c=>{let d=t.assertions.find(p=>p.id===c),l=t.measurements.find(p=>p.id===d.measurement_id),u=n;if(d.scope.kind==="active"){let p=new Set(n.terminal_statuses??["closed","canceled"]);u={...n,items:n.items.filter(h=>!p.has(h.status))}}else if(d.scope.kind==="filter"){let p=d.scope.measurement_id,h=t.measurements.find(v=>v.id===p),_=await uu(i.id,d.id,h,n,t.measurements),w=new Set(_.contributors);u={...n,items:n.items.filter(v=>w.has(v.id))}}let m=n.items.find(p=>p.id===d.owner_item_id),f=m!==void 0&&new Set(n.terminal_statuses??["closed","canceled"]).has(m.status);return Ly(d,await uu(i.id,d.id,l,u,t.measurements),{owner_terminal:f})}),o=a.some(c=>c.verdict==="fail"&&c.enforcement==="block"),s=a.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:o?"block":s?"warn":"pass",exit_code:o?1:0,assertions:a,assertions_total:a.length,row_contract:{row_keys:["assertions"],jq_selector:".assertions[]"},cost:yu(a.map(c=>c.cost),Math.max(0,...a.map(c=>c.cost.duration_ms)))}}function Ii(e){return uy.join(e,"assurance.json")}async function Eu(e){let t=await V(Ii(e));return t===null?tr():Ri(t)}function Ri(e){try{return kn(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 Ci(e,t){return t==="measurement"?e.measurements:t==="assertion"?e.assertions:e.gates}function jy(e,t){e==="measurement"?bo(t):e==="assertion"?ko(t):_u(t)}async function nr(e,t){let n=structuredClone(Ci(await Eu(e),t));return{items:n,count:n.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function xo(e,t,n){let r=Ci(await Eu(e),t).find(i=>i.id===n);if(!r)throw new TypeError(`assurance ${t} ${n} not found`);return structuredClone(r)}async function Ti(e,t,n,r={}){jy(t,n);let i=await T(e),a=W(r.author,i.author_default),o=await gn({pmRoot:e,filePath:Ii(e),op:`assurance:${t}:put`,author:a,message:r.message,lockTtlSeconds:xi,lockWaitMs:Ai,mutate:s=>{let c=s===null?tr():Ri(s),d=Ci(c,t),l=d.findIndex(m=>m.id===n.id),u=l<0?"created":"updated";if(t==="assertion"&&l>=0&&gy(d[l],n)){let m=n.authorization_decision;if(!m||!r.authorized_decision_ids?.includes(m))throw new M(`loosening assertion ${n.id} requires a verified authorization_decision`)}return l<0?d.push(structuredClone(n)):d[l]=structuredClone(n),kn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
1
|
+
import{a as Xa,c as Jr,d as Kr,e as Od,g as Dd,h as Qa,i as Pd,j as ln,k as un,l as Nd,m as Ld,n as eo,o as Fd,p as mn,q as pn,r as Ud,s as Hd,t as to}from"./chunk-RHQCQTZA.js";import{e as ri,f as ro,h as io}from"./chunk-ELQNEJDA.js";import{B as Yd,C as ei,D as Xd,E as no,G as Zd,H as Qd,J as el,K as tl,L as ti,O as ni,a as Ad,g as Ya,i as Id}from"./chunk-HNRI2KBT.js";import{K as du}from"./chunk-KSMQEB3V.js";import{D as uo,E as wi,Ha as eu,Ia as tu,Ma as nu,Na as ru,T as vi,U as Tl,V as mo,W as Zn,Y as po,aa as zl,ba as Gl,ca as Wl,da as ql,ea as Ei,f as vl,g as bl,ga as Bl,h as kl,ha as Vl,i as El,ia as Jl,ja as Vt,k as yi,ka as Kl,kb as ou,la as yn,ma as Yl,mb as _o,na as fo,nb as su,o as Yn,oa as wn,ob as cu,p as Sl,pa as Xl,q as xl,qa as Zl,r as Xn,ra as Ql,s as Al,sa as ho,u as lo,v as Il,wb as go,z as Rl}from"./chunk-LKWDWER4.js";import{a as Rd,b as dn,c as Za,d as Cd,e as Td,f as ct,g as Yr,h as $d,i as It}from"./chunk-Y5A4XOSK.js";import{$ as ol,$b as Si,Ba as li,Bb as ne,Ca as ui,Cb as ve,D as W,Da as so,Db as be,E as nl,Ea as Tt,Eb as Ul,Fa as Kn,Fb as ki,Ga as _l,Gb as lt,H as Ce,Ha as mi,Hb as ut,I as ao,Ia as Bt,Ja as ce,Ka as pi,Kb as Hl,La as gl,Lb as mt,Ma as co,Na as fi,O as rl,Oa as gn,P as ii,Pa as hi,Qa as yl,S as ai,T as oi,Ua as Te,V as il,W as je,Xa as wl,Ya as T,Z as Ct,Za as _i,Zb as Qn,_ as al,_a as gi,aa as sl,ab as Cl,ba as dt,ca as cl,gc as iu,ha as dl,hb as $l,ia as oo,ib as Ol,ja as si,jc as au,ka as hn,kb as Dl,lb as Pl,ma as ci,mb as $t,na as ll,nb as Nl,oa as ul,ob as Ll,qa as ml,rb as Ml,sa as pl,sb as jl,ua as fl,wa as di,xb as bi,ya as _n,za as hl,zb as Fl}from"./chunk-JDVZF75H.js";import{b as sn,e as le,g as Le,i as Re,j as Ze,n as ge,o as Md,p as Xr,r as jd}from"./chunk-4UA7KY4V.js";import{$ as g,$d as $,Aa as Z,Cc as zd,Da as fe,Ea as Ne,Ec as Zr,Fa as cd,Fc as Gd,Gc as Wd,Ha as ee,Ib as vd,Ic as qd,Ka as dd,Pa as ld,Qc as H,Rb as bd,S as td,T as nd,Tc as X,V as rd,Va as ud,Vc as Ge,Wa as md,Wc as Bd,X as id,Xa as G,Xc as Qr,Y as qr,Z as ad,a as Gr,aa as y,ab as Jn,ad as Vd,ae as Kd,bb as L,be as fn,cb as Ke,ce as Rt,d as Wr,db as Br,de as qt,eb as zt,gb as pd,gc as kd,gd as Jd,hb as Gt,hc as Ed,hd as Me,i as Zc,ie as te,ja as od,jb as fd,kb as C,l as Qc,lb as hd,m as ed,ma as sd,mb as Ie,oa as qa,ob as Vr,pb as _d,pc as Sd,qb as Ba,qc as Wt,rb as Va,sb as Ja,sc as Ka,ta as Vn,tc as xd,ua as O,ub as gd,uc as cn,va as At,vb as yd,w as Wa,wa as F,wc as Ye,xa as V,yb as wd,yc as Xe}from"./chunk-WIXZF5SS.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]="081bf1eb-4b9a-5fa9-a272-34ae781d250c")}catch{}})();var M=class extends TypeError{constructor(t){super(t),this.name="AssuranceMutationRefusalError"}},$e=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 vn(e){try{return await e()}catch(t){throw t instanceof M?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_mutation_refused"}):t}}async function lu(e){try{return await e()}catch(t){throw t instanceof $e?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_evaluation_refused",...t.context}):t}}import{createHash as ly}from"node:crypto";import uy 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 bn=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]="416aaf09-e4f6-5d10-aee0-eba374f1cd83")}catch{}})();var mu=1,Jt=["pre-commit","pre-push","pre-merge","ci","pre-release","post-release","scheduled","on-claim","on-close"],yo=["items","dependency_kind","prose_edge_gap","graph","validate","health","history","links","provider","derived"],my=["ceiling","floor","equals","zero","monotone_nondecreasing","monotone_nonincreasing","subset_of"],py=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,xi=30,Ai=5e3,pu=4,fy=50;function pt(e,t){if(!py.test(e))throw new M(`${t} must be a stable lowercase id`)}function hy(e,t){if(!Number.isFinite(e)||e<0)throw new M(`${t} must be a finite non-negative number`)}function er(e){let t=my.filter(i=>e[i]!==void 0);if(t.length!==1)throw new M(`assertion ${e.id} must declare exactly one polarity`);let n=t[0],r=e[n];return{polarity:n,value:n==="zero"?0:r}}function vo(e,t){return C(e)===C(t)}function fu(e,t){if(t.polarity==="equals")return vo(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 hu(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=>fu(r.observed,t)===(r.expected==="pass"))}function _y(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!vo(e.value,t.value)}function gy(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 _y(er(e),er(t))||n[t.enforcement]<n[e.enforcement]||r}function yy(e){if(e.state!==void 0&&!(e.state==="present"||e.state==="missing"))throw new M("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 M("items source with field requires exactly one of equals or state");if(e.field===void 0&&r!==0)throw new M("items source equals/state requires field")}function wy(e){if(typeof e.dependency_kind!="string"||e.dependency_kind.trim().length===0)throw new M("dependency_kind source requires dependency_kind");if([e.source_kind,e.source_kind_prefix,e.source_kind_state].filter(t=>t!==void 0).length>1)throw new M("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 M("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 M("dependency_kind source source_kind_state must be present or missing")}function vy(e){if(e.sample_limit!==void 0&&(!Number.isInteger(e.sample_limit)||e.sample_limit<1))throw new M("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 M("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 M("prose_edge_gap exemption selectors must not be empty")}}function bo(e){pt(e.id,"measurement.id"),e.max_cost!==void 0&&hy(e.max_cost,"measurement.max_cost");let t=e.source;if(Object.prototype.toString.call(t)!=="[object Object]")throw new M(`measurement.source.kind must be one of ${yo.join(", ")}`);let n=Reflect.get(t,"kind");if(!yo.includes(n))throw new M(`measurement.source.kind must be one of ${yo.join(", ")}`);let r=t;if(r.kind==="items"&&yy(r),r.kind==="dependency_kind"&&wy(r),r.kind==="prose_edge_gap"&&vy(r),(r.kind==="graph"||r.kind==="validate"||r.kind==="health")&&(typeof r.field!="string"||r.field.trim().length===0))throw new M(`${r.kind} source requires field`);return r.kind==="provider"&&(pt(r.provider,"provider source provider"),pt(r.key,"provider source key")),e}function ko(e){if(pt(e.id,"assertion.id"),pt(e.measurement_id,"assertion.measurement_id"),typeof e.owner_item_id!="string"||e.owner_item_id.trim().length===0)throw new M("assertion.owner_item_id is required");let t=er(e);if(typeof t.value=="number"&&!Number.isFinite(t.value))throw new M(`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 M("retired assertion requires retire_reason");e.scope.kind==="filter"&&pt(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 M("assertion negative control requires pass and fail cases");if(!hu(e))throw new M(`assertion ${e.id} negative control does not prove its bound`);return e}function by(e){if(!Array.isArray(e.allowed_providers))throw new M("gate provider_policy.allowed_providers must be an array");for(let t of e.allowed_providers)pt(t,"gate.provider_policy.allowed_provider");if(typeof e.triggers!="object"||e.triggers===null||Array.isArray(e.triggers))throw new M("gate provider_policy.triggers must be an object");for(let[t,n]of Object.entries(e.triggers)){if(!Jt.includes(t))throw new M(`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 M(`gate provider policy trigger ${t} is invalid`)}}function _u(e){if(pt(e.id,"gate.id"),!Array.isArray(e.assertion_ids))throw new M("gate.assertion_ids is required and must be an array");if(e.assertion_ids.length===0)throw new M("gate requires at least one assertion");for(let t of e.assertion_ids)pt(t,"gate.assertion_id");if(!Array.isArray(e.triggers))throw new M(`gate.triggers is required and must be an array of ${Jt.join(", ")}`);if(e.triggers.length===0)throw new M("gate requires at least one trigger");for(let t of e.triggers)if(!Jt.includes(t))throw new M(`gate trigger must be one of ${Jt.join(", ")}`);return e.provider_policy&&by(e.provider_policy),e}function kn(e){if(e.version!==mu)throw new M(`unsupported assurance document version ${String(e.version)}`);let t=new Set;for(let r of e.measurements){if(bo(r),t.has(`measurement:${r.id}`))throw new M(`duplicate measurement ${r.id}`);t.add(`measurement:${r.id}`)}for(let r of e.assertions){if(ko(r),t.has(`assertion:${r.id}`))throw new M(`duplicate assertion ${r.id}`);t.add(`assertion:${r.id}`)}for(let r of e.gates){_u(r);let i=r.assertion_ids.filter(a=>!e.assertions.some(o=>o.id===a));if(i.length>0)throw new M(`gate ${r.id} references missing assertions: ${i.join(", ")}`);if(t.has(`gate:${r.id}`))throw new M(`duplicate gate ${r.id}`);t.add(`gate:${r.id}`)}let n=new Set(e.measurements.map(r=>r.id));for(let[r,i]of gu(e))if(!n.has(r))throw new M(`${i.join(", ")} references missing measurement ${r}`);return e}function Eo(e,t){if("measurement"in e){t.push(e.measurement);return}if("operator"in e)for(let n of e.operands)Eo(n,t)}function gu(e){let t=new Map,n=(r,i)=>{let a=t.get(r)??[];a.push(i),t.set(r,a)};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=[];Eo(r.source.expression,i);for(let a of i)n(a,`derived measurement ${r.id}`)}return t}function ky(e,t){let n=e.assertion_ids.flatMap(a=>{let o=t.assertions.find(s=>s.id===a);return[o.measurement_id,...o.scope.kind==="filter"?[o.scope.measurement_id]:[]]}),r=new Set,i=new Set;for(;n.length>0;){let a=n.pop();if(r.has(a))continue;r.add(a);let o=t.measurements.find(s=>s.id===a);o.source.kind==="provider"?i.add(o.source.provider):o.source.kind==="derived"&&Eo(o.source.expression,n)}return i}function tr(){return{version:mu,measurements:[],assertions:[],gates:[]}}function Ey(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 a=i==null||i===""||Array.isArray(i)&&i.length===0;return e.state==="missing"?a:!a}return vo(i,e.equals)})()));return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function Sy(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 xy(e,t){let n=[],r=qa(e.dependency_kind)??e.dependency_kind.trim().toLowerCase();for(let i of t.items)for(let a of i.dependencies??[]){let o=qa(a.kind)??a.kind.trim().toLowerCase(),s=a.source_kind?.trim();o===r&&Sy(e,s)&&n.push(`${i.id}->${a.id}${s?`@${s}`:""}`)}return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n}}function Ay(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 a=Reflect.get(i,"text");typeof a=="string"&&t.push(a)}}}return t}function Iy(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 wo(e,t){return[e.toLowerCase(),t.toLowerCase()].sort().join("\0")}function Ry(e){let t=new Map,n=new Set,r=[],i=/(?<![\w-])[a-z0-9]+(?:-+[a-z0-9]+)+(?![\w-])/giu,a=0;for(let o of e){t.set(o.id.toLowerCase(),o.id);for(let s of o.dependencies??[])n.add(wo(o.id,s.id));for(let s of[o.parent,o.blocked_by])typeof s=="string"&&n.add(wo(o.id,s));for(let s of Ay(o)){let c=[...s.matchAll(i)].map(d=>d[0]);a+=c.length,r.push({holder_id:o.id,segment:s,mentioned_ids:c})}}return{canonical_ids:t,linked_pairs:n,prose_mentions:r,mention_count:a}}function Cy(e,t){let n=Ry(t.items),r=new Map;for(let o of n.prose_mentions){let s=o.mentioned_ids.map(d=>n.canonical_ids.get(d.toLowerCase())).filter(d=>d!==void 0&&d!==o.holder_id),c=[...new Set(s)];for(let d of c){let l=wo(o.holder_id,d);if(n.linked_pairs.has(l)||Iy(e.exemptions??[],o.holder_id,d,o.segment))continue;let u=c.some(m=>m!==d);r.get(l)?.explicit===!0&&!u||r.set(l,{contributor:`${o.holder_id}->${d}|subject=${u?"explicit":"implicit"}`,explicit:u})}}let i=[...r.values()],a=i.map(o=>o.contributor).sort();return{value:a.length,population_size:n.canonical_ids.size,cost:t.items.length+n.linked_pairs.size+n.mention_count,contributors:a.slice(0,e.sample_limit??25),partitions:{explicit_subject:i.filter(o=>o.explicit).length,implicit_subject:i.filter(o=>!o.explicit).length}}}function Ty(e,t){return{value:t.history.filter(n=>(e.op===void 0||n.op===e.op)&&(e.author===void 0||n.author===e.author)&&(e.harness===void 0||n.agent_harness===e.harness)&&(e.model===void 0||n.agent_model===e.model)).length,population_size:t.history.length,cost:t.history.length}}function $y(e,t){let n=t.items.filter(r=>{let i=r[e.link],a=Array.isArray(i)&&i.length>0;return e.state==="present"?a:!a});return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function Oy(e,t){let n=e.source;return n.kind==="items"?Ey(n,t):n.kind==="dependency_kind"?xy(n,t):n.kind==="prose_edge_gap"?Cy(n,t):n.kind==="history"?Ty(n,t):n.kind==="links"?$y(n,t):null}function yu(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 Dy(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 wu(e,t,n){let r=new Array(e.length),i=0,a=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let o=i;i+=1,r[o]=await n(e[o],o)}});return await Promise.all(a),r}async function vu(e,t,n,r,i){if("literal"in e)return{value:e.literal,costs:[],population_size:0,contributors:[]};if("measurement"in e){let o=n.find(d=>d.id===e.measurement);if(!o)throw new TypeError(`derived measurement references missing ${e.measurement}`);let s=await bu(o,t,n,r,i);if(typeof s.value!="number")throw new TypeError(`derived measurement ${o.id} is not numeric`);let c=i.charged.has(o.id)?[]:[s.cost];return i.charged.add(o.id),{value:s.value,costs:c,population_size:s.population_size,contributors:s.contributors}}let a=await wu(e.operands,pu,o=>vu(o,t,n,r,i));return{value:Dy(e.operator,a.map(o=>o.value)),costs:a.flatMap(o=>o.costs),population_size:Math.max(0,...a.map(o=>o.population_size)),contributors:[...new Set(a.flatMap(o=>o.contributors))]}}async function Py(e,t,n,r,i){bo(e);let a=Date.now(),o,s=[],c=0;if(e.source.kind==="derived"){let u=await vu(e.source.expression,t,n,[...r,e.id],i);o={value:u.value,population_size:u.population_size,cost:0,contributors:u.contributors},s=u.costs}else{let u=Oy(e,t);u!==null?o=u:(o=await t.external(e.source),c=1)}let d={units:o.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()-a},l=yu([...s,d],Date.now()-a);if(e.max_cost!==void 0&&l.units>e.max_cost)throw new $e(`measurement ${e.id} exceeded cost ceiling ${e.max_cost} with ${l.units}`);return{id:e.id,definition_fingerprint:`sha256:${ly("sha256").update(C(e)).digest("hex")}`,value:o.value,population_size:o.population_size,cost:l,contributors:o.contributors??[],...o.partitions?{partitions:o.partitions}:{}}}function bu(e,t,n,r,i){if(r.includes(e.id))throw new TypeError(`derived measurement cycle: ${[...r,e.id].join(" -> ")}`);let a=i.cache.get(e.id);if(a)return a;let o=Py(e,t,n,r,i).catch(s=>{if(s instanceof Qe&&s.measurement_id===void 0){let c={measurement_id:e.id,source_kind:s.source_kind,field:s.field,...s.check?{check:s.check}:{}},d=new Qe(s.message,c);throw d.cause=s,d}throw s});return i.cache.set(e.id,o),o}async function So(e,t,n=[e]){return bu(e,t,n,[],{cache:new Map,charged:new Set})}function Ny(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,e-t.value)}function Ly(e,t,n={}){ko(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:Ny(t.value,r),verdict:i?"retired":fu(t.value,r)?"pass":"fail",enforcement:e.enforcement,negative_control_proven:hu(e),cost:t.cost,contributors:t.contributors,...t.partitions?{partitions:t.partitions}:{}}}function My(e,t,n,r){let i=ky(e,t);if(i.size===0)return;let a=e.provider_policy,o=a?.triggers[r];if(!a||!o)throw new $e(`assurance gate ${e.id} refuses provider execution at trigger ${r} without an explicit provider policy`);let s=new Set(a.allowed_providers),c={low:0,medium:1,high:2};for(let d of i){if(!s.has(d))throw new $e(`assurance gate ${e.id} refuses provider ${d}`);let l=n.provider_capabilities?.[d];if(!l)throw new $e(`assurance provider ${d} has no declared capabilities`);if(c[l.cost_class]>c[o.max_cost_class])throw new $e(`assurance gate ${e.id} refuses ${l.cost_class}-cost provider ${d} at trigger ${r}`);if(l.network&&!o.allow_network)throw new $e(`assurance gate ${e.id} refuses network provider ${d} at trigger ${r}`)}}async function uu(e,t,n,r,i){try{return await So(n,r,i)}catch(a){if(a instanceof Qe){let o=a.check?` check ${a.check}`:"",s=a.measurement_id??n.id,c=new $e(`assurance gate ${e} assertion ${t} measurement ${s} source ${a.source_kind}${o} field ${a.field} could not resolve: ${a.message}`,{gate_id:e,assertion_id:t,measurement_id:s,source_kind:a.source_kind,field:a.field,...a.check?{check:a.check}:{}});throw c.cause=a,c}throw a}}async function ku(e,t,n,r){kn(t);let i=t.gates.find(c=>c.id===e);if(!i)throw new $e(`assurance gate ${e} not found`);if(!i.triggers.includes(r.trigger))throw new $e(`assurance gate ${e} does not declare trigger ${r.trigger}`);My(i,t,n,r.trigger);let a=await wu(i.assertion_ids,pu,async c=>{let d=t.assertions.find(p=>p.id===c),l=t.measurements.find(p=>p.id===d.measurement_id),u=n;if(d.scope.kind==="active"){let p=new Set(n.terminal_statuses??["closed","canceled"]);u={...n,items:n.items.filter(h=>!p.has(h.status))}}else if(d.scope.kind==="filter"){let p=d.scope.measurement_id,h=t.measurements.find(v=>v.id===p),_=await uu(i.id,d.id,h,n,t.measurements),w=new Set(_.contributors);u={...n,items:n.items.filter(v=>w.has(v.id))}}let m=n.items.find(p=>p.id===d.owner_item_id),f=m!==void 0&&new Set(n.terminal_statuses??["closed","canceled"]).has(m.status);return Ly(d,await uu(i.id,d.id,l,u,t.measurements),{owner_terminal:f})}),o=a.some(c=>c.verdict==="fail"&&c.enforcement==="block"),s=a.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:o?"block":s?"warn":"pass",exit_code:o?1:0,assertions:a,assertions_total:a.length,row_contract:{row_keys:["assertions"],jq_selector:".assertions[]"},cost:yu(a.map(c=>c.cost),Math.max(0,...a.map(c=>c.cost.duration_ms)))}}function Ii(e){return uy.join(e,"assurance.json")}async function Eu(e){let t=await V(Ii(e));return t===null?tr():Ri(t)}function Ri(e){try{return kn(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 Ci(e,t){return t==="measurement"?e.measurements:t==="assertion"?e.assertions:e.gates}function jy(e,t){e==="measurement"?bo(t):e==="assertion"?ko(t):_u(t)}async function nr(e,t){let n=structuredClone(Ci(await Eu(e),t));return{items:n,count:n.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function xo(e,t,n){let r=Ci(await Eu(e),t).find(i=>i.id===n);if(!r)throw new TypeError(`assurance ${t} ${n} not found`);return structuredClone(r)}async function Ti(e,t,n,r={}){jy(t,n);let i=await T(e),a=W(r.author,i.author_default),o=await gn({pmRoot:e,filePath:Ii(e),op:`assurance:${t}:put`,author:a,message:r.message,lockTtlSeconds:xi,lockWaitMs:Ai,mutate:s=>{let c=s===null?tr():Ri(s),d=Ci(c,t),l=d.findIndex(m=>m.id===n.id),u=l<0?"created":"updated";if(t==="assertion"&&l>=0&&gy(d[l],n)){let m=n.authorization_decision;if(!m||!r.authorized_decision_ids?.includes(m))throw new M(`loosening assertion ${n.id} requires a verified authorization_decision`)}return l<0?d.push(structuredClone(n)):d[l]=structuredClone(n),kn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
2
2
|
`,result:{changed:!0,action:u,kind:t,id:n.id}}}});return{...o.result,changed:o.changed}}async function Ao(e,t,n={}){let r=tr();r.measurements=structuredClone(t.measurements),r.assertions=structuredClone(t.assertions),r.gates=structuredClone(t.gates),kn(r);let i=await T(e),a=W(n.author,i.author_default),o=await gn({pmRoot:e,filePath:Ii(e),op:"assurance:bundle:apply",author:a,message:n.message,lockTtlSeconds:xi,lockWaitMs:Ai,mutate:s=>{let c=s===null?tr():Ri(s),d=[],l=[],u=(m,f,p)=>{for(let h of f){let _=m.find(w=>w.id===h.id);if(!_){m.push(structuredClone(h)),d.push(`${p}:${h.id}`);continue}if(C(_)!==C(h))throw new M(`assurance bundle refuses to replace divergent ${p} ${h.id}`);l.push(`${p}:${h.id}`)}};return u(c.measurements,r.measurements,"measurement"),u(c.assertions,r.assertions,"assertion"),u(c.gates,r.gates,"gate"),kn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
3
3
|
`,result:{changed:d.length>0,created_ids:d,unchanged_ids:l}}}});return{...o.result,changed:o.changed}}async function Su(e,t,n,r={}){let i=await T(e),a=W(r.author,i.author_default),o=await gn({pmRoot:e,filePath:Ii(e),op:`assurance:${t}:remove`,author:a,message:r.message,lockTtlSeconds:xi,lockWaitMs:Ai,mutate:s=>{let c=s===null?tr():Ri(s);if(t==="measurement"){let u=gu(c).get(n);if(u&&u.length>0)throw new M(`assurance measurement ${n} is referenced by ${u.join(", ")}`)}if(t==="assertion"&&c.gates.some(u=>u.assertion_ids.includes(n)))throw new M(`assurance assertion ${n} is referenced by gate`);let d=Ci(c,t),l=d.findIndex(u=>u.id===n);if(l<0)throw new M(`assurance ${t} ${n} not found`);return d.splice(l,1),kn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
4
4
|
`,result:{changed:!0,action:"removed",kind:t,id:n}}}});return{...o.result,changed:o.changed}}async function xu(e,t,n={}){if(t.dry_run)throw new TypeError("dry-run assurance verdicts are not persisted");let r=await T(e);await fi({pmRoot:e,op:"assurance:gate:verdict",author:W(n.author,r.author_default),context:{assurance_verdict:t},message:n.message??`Assurance gate ${t.gate_id} returned ${t.verdict}`,lockTtlSeconds:xi,lockWaitMs:Ai})}async function Au(e,t={}){let n=t.limit??fy;if(!Number.isInteger(n)||n<1||n>bn)throw new TypeError(`assurance verdict limit must be an integer from 1 through ${bn}`);return(await dt(pi(e),ce)).reverse().filter(r=>r.op==="assurance:gate:verdict").map(r=>r.context?.assurance_verdict).filter(r=>typeof r=="object"&&r!==null&&"gate_id"in r).filter(r=>t.gate_id===void 0||r.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]="caa9f916-c7ce-5e74-a00b-dd0fc6a41b5d")}catch{}})();var rr={type:"string",minLength:1,maxLength:128,pattern:"\\S"},$i={type:"array",minItems:1,maxItems:Ba,items:rr},Iu={...$i,items:{...rr,pattern:"^(?!(?:.*\\.)?(?:__proto__|constructor|prototype)(?:\\.|$))[a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*){0,7}$"}},Fy={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,$i])),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:Iu}},{type:"object",additionalProperties:!1,required:["kind","authors"],properties:{kind:{const:"authors"},authors:$i}},...["field_writers","approval"].map(e=>({type:"object",additionalProperties:!1,required:["kind","fields","authors"],properties:{kind:{const:e},fields:Iu,authors:$i}})),{type:"object",additionalProperties:!1,required:["kind","allowed"],properties:{kind:{const:"transition"},allowed:{type:"array",maxItems:Ba,items:{type:"array",minItems:2,maxItems:2,items:rr}}}}]}}},A$={$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:_d,items:Fy}}};(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]="808f3bb5-cca5-5f9c-b557-7923c79ae6ce")}catch{}})();async function Ru(e,t,n,r){let i=await $t(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"]}:Cu(i,t,n,r)}function Uy(e,t,n){return e===0?"undeclared":t===0?"empty":n===0?"inapplicable":n===t?"covered":"partial"}function Cu(e,t,n=5,r=!1){let i=[],a=new Map,o=e.policies.filter(_=>_.rule.kind==="require_fields"),s=o.filter(_=>_.subject?.operations===void 0),c=new Set,d=0,l=0,u=0,m=0,f=0,p=wd(e);for(let _ of t){let w=p({operation:"",author:"",before:_,after:_,completeness_only:!0});d+=+(w.decisions.length>0),l+=w.decisions.length,w.decisions.forEach(k=>c.add(k.policy_id));let v=w.decisions.filter(k=>!k.satisfied);if(v.length===0)continue;m+=1;let E=a.get(_.type)??{items:0,violations:0,missing_fields:0};E.items+=1;for(let k of v)u+=1,E.violations+=1,E.missing_fields+=k.missing_fields.length,k.effect==="refuse"&&(f+=1),i.length<n&&i.push({id:_.id,type:_.type,status:_.status,decision:k});a.set(_.type,E)}let h=r||f>0?"error":u>0?"warn":"ok";return{check:{name:"completeness",status:h,ok:h==="ok",details:{scope:"operation_independent_require_fields",declared_requirement_count:o.length,state_requirement_count:s.length,applicable_requirement_count:c.size,requirement_application_count:l,governed_items:d,ungoverned_items:t.length-d,contract_status:Uy(o.length,t.length,d),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(a),violations:i,violations_truncated:i.length<u,enforcement:e.enforcement}},warnings:[...u>0?[`validate_completeness_missing_fields:${u}`]:[],...r?["validate_completeness_source_incomplete"]:[]]}}import Hy 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]="0c3bed4d-4a17-5004-a1c5-65f6acec2a9b")}catch{}})();function zy(){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(([e,t])=>({id:`completeness-${e.toLowerCase()}`,effect:"advise",description:`Evidence expected when ${e} work reaches completion.`,subject:{types:[e],statuses:["closed"]},rule:{kind:"require_fields",fields:[...t]}})),{id:"completeness-resolution",effect:"advise",subject:{statuses:["closed"]},rule:{kind:"require_fields",fields:["resolution","expected_result","actual_result"]}}]}}function Ou(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 Gy(e,t){let n=L(process.cwd(),e.path);await ne(n);let r=await T(n);return{pmRoot:n,settings:r,author:W(t,r.author_default)}}function Tu(e,t,n,r){if(e==="policy-mode")return Ja({...n,enforcement:t});let i=n.policies.filter(s=>s.id!==t);if(e==="policy-remove")return{...n,policies:i};let a=Va(r.definition),o=Ja({...n,policies:[...i,a].sort((s,c)=>s.id.localeCompare(c.id))});if(Buffer.byteLength(`${JSON.stringify(o,null,2)}
|
|
@@ -27,7 +27,7 @@ Agent guidance check
|
|
|
27
27
|
|
|
28
28
|
`:""}${Iv(r)}
|
|
29
29
|
`;return c===i?{path:n,changed:!1}:(await Fm(()=>xv(n,c,"utf8")),{path:n,changed:!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]="6d1f8e03-97b4-5d83-b85c-e47f39c07d48")}catch{}})();var Rv="PM_SOURCE_CONTEXT_ACCESS",Cv="PM_ALLOW_SOURCE_CONTEXT_WRITES";function Gm(e){let t=e[Rv],n=t===void 0||t.trim().toLowerCase()==="write"?"write":"read_only",r=n==="read_only"&&e[Cv]?.trim()==="1";return{access:n,write_override_applied:r,source_writes_allowed:n==="write"||r}}import{execFile as Tv}from"node:child_process";import $v from"node:path";import{promisify as Ov}from"node:util";import{setTimeout as Dv}from"node:timers/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]="f8f33f3d-854e-5cb4-b0bf-8d2d89da27e8")}catch{}})();var Bo=Ov(Tv);async function An(e,t){let n=performance.now()+5e3,r=25;for(;;)try{await Bo("git",["config",...t],{cwd:e,env:{...tt(),LC_ALL:"C"},timeout:1e4});return}catch(i){let a=n-performance.now();if(typeof i!="object"||i===null||!("stderr"in i)||typeof i.stderr!="string"||!/could not lock config file [^\r\n]+: File exists/u.test(i.stderr)||a<=0)throw i;await Dv(Math.min(r,a)),r=Math.min(r*2,200)}}function tt(){let e={...process.env};for(let t of["GIT_DIR","GIT_WORK_TREE","GIT_COMMON_DIR","GIT_INDEX_FILE","GIT_OBJECT_DIRECTORY","GIT_ALTERNATE_OBJECT_DIRECTORIES","GIT_NAMESPACE","GIT_CEILING_DIRECTORIES","GIT_DISCOVERY_ACROSS_FILESYSTEM"])delete e[t];return e}async function qo(e,t){try{return(await Bo("git",["config","--local",...t==="core.bare"||t==="extensions.worktreeConfig"?["--type=bool"]:[],"--get",t],{cwd:e,env:tt(),timeout:1e4})).stdout.trim()}catch(n){if(typeof n=="object"&&n!==null&&"code"in n&&n.code===1)return;throw n}}async function Wm(e){if(await qo(e,"extensions.worktreeConfig")==="true")return"--worktree";let{stdout:t}=await Bo("git",["rev-parse","--path-format=absolute","--git-dir","--git-common-dir"],{cwd:e,env:tt(),timeout:1e4}),[n,r]=t.trim().split(/\r?\n/);if(n===r)return"--local";let i=$v.join(r,"config.worktree");for(let a of["core.bare","core.worktree"]){let o=await qo(e,a);o===void 0||a==="core.bare"&&o!=="true"||(await An(e,["--file",i,a,o]),await An(e,["--local","--unset-all",a]))}for(let a of["pm-item-toon","pm-item-markdown","pm-history","pm-relationship","pm-json"])for(let o of["name","driver"]){let s=`merge.${a}.${o}`,c=await qo(e,s);c!==void 0&&await An(e,["--file",i,s,c])}return await An(e,["--local","extensions.worktreeConfig","true"]),"--worktree"}import qm from"node:fs";import Gi 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]="2d40ac36-0627-5636-9679-5669dbacf06b")}catch{}})();var Bm="@unbrained/pm-cli";var Ko=/\b(\d{4})\.(\d{1,2})\.(\d{1,2})(?:-(\d+))?\b/u,Yo="2026.8.31";function Wi(e){let t=e.match(Ko);return t?[Number(t[1]),Number(t[2]),Number(t[3]),Number(t[4]??0)]:null}function Xo(e,t){let n=Wi(e),r=Wi(t);if(!n||!r)return null;for(let i=0;i<n.length;i+=1){let a=n[i]-r[i];if(a!==0)return Math.sign(a)}return 0}function Vo(e){return Xo(e,Yo)!==-1?3:2}function Jo(e){try{let t=JSON.parse(qm.readFileSync(e,"utf8"));return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:null}catch{return null}}function Pv(e){let t=[...e.matchAll(/(<=|<)\s*v?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/gu)].map(r=>({inclusive:r[1]==="<=",version:r[2]})),n=e.match(/\b\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?\s+-\s+v?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/u);return n?[...t,{inclusive:!0,version:n[1]}]:t}function Nv(e){let t=e.split("||").map(n=>Pv(n));return{bounded:t.some(n=>n.length>0),compatible:t.some(n=>n.every(r=>{let i=Xo(Yo,r.version);return i!==null&&(r.inclusive?i!==1:i===-1)}))}}function Lv(e){return["dependencies","devDependencies","optionalDependencies","peerDependencies"].flatMap(t=>{let n=e[t];if(typeof n!="object"||n===null)return[];let r=n[Bm],i=typeof r=="string"?r.trim():"",a=/^[<!]/u.test(i)?void 0:i.match(Ko)?.[0];if(!a)return[];let o=/^(?:=|v)?\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?$/u.test(i),s=Nv(i);return[{version:a,constraint:o?"exact":s.bounded?"range":"minimum",...o?{}:{declaration:i},history_epoch_compatible:o?Xo(a,Yo)!==-1:s.compatible}]})}function Mv(e){let t=Jo(Gi.join(e,"package-lock.json"))?.packages;if(typeof t!="object"||t===null)return;let n=t["node_modules/@unbrained/pm-cli"];if(typeof n!="object"||n===null)return;let r=n.version;return typeof r=="string"?r:void 0}function jv(e,t){try{let n=qm.readFileSync(Gi.join(e,t),"utf8").split(/\r?\n/u),r=n.findIndex(o=>o.includes(Bm));if(r<0)return;let i=n[r].match(/^\s*/u)[0].length,a=[n[r]];for(let o=r+1;o<n.length;o+=1){let s=n[o],c=s.trim(),d=s.match(/^\s*/u)[0].length;if(c.length>0&&d<=i)break;a.push(s)}return a.join(`
|
|
30
|
-
`).match(/^\s*version(?::\s*|\s+)["']?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/mu)?.[1]??a[0].match(Ko)?.[0]}catch{return}}function Vm(e){let t=[],n=Jo(Gi.join(e,"package.json"));n&&t.push(...Lv(n).map(a=>({...a,source:"package.json"})));let r=Jo(Gi.join(e,"node_modules","@unbrained","pm-cli","package.json"))?.version;typeof r=="string"&&Wi(r)&&t.push({version:r,source:"installed-package",constraint:"exact",history_epoch_compatible:Vo(r)===3});let i=Mv(e);i&&Wi(i)&&t.push({version:i,source:"package-lock.json",constraint:"exact",history_epoch_compatible:Vo(i)===3});for(let a of["pnpm-lock.yaml","yarn.lock"]){let o=jv(e,a);o&&t.push({version:o,source:a,constraint:"exact",history_epoch_compatible:Vo(o)===3})}return 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]="
|
|
30
|
+
`).match(/^\s*version(?::\s*|\s+)["']?(\d{4}\.\d{1,2}\.\d{1,2}(?:-\d+)?)/mu)?.[1]??a[0].match(Ko)?.[0]}catch{return}}function Vm(e){let t=[],n=Jo(Gi.join(e,"package.json"));n&&t.push(...Lv(n).map(a=>({...a,source:"package.json"})));let r=Jo(Gi.join(e,"node_modules","@unbrained","pm-cli","package.json"))?.version;typeof r=="string"&&Wi(r)&&t.push({version:r,source:"installed-package",constraint:"exact",history_epoch_compatible:Vo(r)===3});let i=Mv(e);i&&Wi(i)&&t.push({version:i,source:"package-lock.json",constraint:"exact",history_epoch_compatible:Vo(i)===3});for(let a of["pnpm-lock.yaml","yarn.lock"]){let o=jv(e,a);o&&t.push({version:o,source:a,constraint:"exact",history_epoch_compatible:Vo(o)===3})}return 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]="98a35fdb-bff9-5556-9c1d-1c345cb39171")}catch{}})();var Zt=zv(Hv),qi="# pm-cli:merge-drivers:start",Gv="# pm-cli:merge-drivers:end",pr="# pm-cli:merge-drivers:v2:start",Ym="# pm-cli:merge-drivers:v2:end",Wv="merge-fence",qv="merge-attributes";function Jm(e){return`'${e.replaceAll("'",`'"'"'`)}'`}async function Bv(e,t){let n=await Ot(e);if(/(?:^|[\\/])bun-node-[^\\/]+[\\/]bun(?:\.exe)?$/iu.test(n))return;let{stdout:r}=await Zt(e,["--version"],{encoding:"utf8",windowsHide:!0,timeout:1e4});return r.trim()===t?n:void 0}async function Vv(){let e=Ne(import.meta.url,["../../.."]),t=process.execPath,n=!1,r=await Ot(process.execPath),i=process.versions.bun,a=(process.env.PATH??"").split(J.delimiter).filter(s=>J.isAbsolute(s)).map(s=>J.join(s,i===void 0?J.basename(process.execPath):process.platform==="win32"?"bun.exe":"bun")),o=i===void 0?a:[process.env.npm_execpath??"",...a,r].filter(s=>J.isAbsolute(s)&&/^(?:bun|bun\.exe)$/iu.test(J.basename(s)));for(let s of o)try{if(await Fv(s,Uv.X_OK),i!==void 0){let c=await Bv(s,i);if(c!==void 0){t=c,n=!0;break}continue}if(s!==r&&await Ot(s)===r){t=s;break}}catch{}if(i!==void 0&&!n)throw new y("Cannot install Bun merge drivers without a durable executable matching the current Bun version.",g.DEPENDENCY_FAILED,{code:"merge_bun_launcher_unavailable",why:"The current Bun process may be a temporary bunx launcher that Git cannot reuse after this command exits.",nextSteps:["Run with a durable version-matched Bun executable, expose one on an absolute PATH entry, or invoke pm through a Bun runner that publishes an absolute npm_execpath.","Retry pm merge install, then check pm health --strict-exit before merging branches."]});return`${Jm(t)} ${Jm(J.join(e,"dist","cli.js"))}`}var Xm=[{key:"pm-item-toon",name:"pm field-aware TOON item document merge",artifact:"item",itemPath:"%P"},{key:"pm-item-markdown",name:"pm field-aware JSON-markdown item document merge",artifact:"item",itemPath:"%P"},{key:"pm-history",name:"pm append-only history stream merge",artifact:"history",itemPath:void 0},{key:"pm-relationship",name:"pm append-only relationship event store merge",artifact:"relationship",itemPath:void 0},{key:"pm-json",name:"pm key-level JSON config merge",artifact:"json",itemPath:void 0}];function Jv(e){let t=e.explicitPath?.trim(),n=e.environment.PM_SOURCE_WORKSPACE_ROOT?.trim(),r=e.environment.PM_SOURCE_PM_PATH?.trim(),i=Gm(e.environment),a=!!(n&&r),o=t===void 0&&a&&(e.dryRun||i.source_writes_allowed);if(t!==void 0){let s=L(e.cwd,t);return{pm_root:s,workspace_start:s,source_coordinates_available:a,source_context_selected:!1,source_policy:i}}return o?{pm_root:J.resolve(r),workspace_start:J.resolve(n),source_coordinates_available:!0,source_context_selected:!0,source_policy:i}:{pm_root:a?L(e.cwd,".agents/pm"):L(e.cwd),workspace_start:e.cwd,source_coordinates_available:a,source_context_selected:!1,source_policy:i}}async function nt(e){try{let{stdout:t}=await Zt("git",["rev-parse","--show-toplevel"],{cwd:e,env:tt(),encoding:"utf8",windowsHide:!0,timeout:1e4});return await Ot(t.trim())}catch{return null}}async function Zm(e){let t=await nt(e);if(t===null)throw new y("pm merge install requires a git repository (merge drivers are git configuration).",g.USAGE);return t}function Qo(e,t){return J.relative(e,t).replaceAll("\\","/")}function We(e){return`"${e.replaceAll("\\","\\\\").replaceAll('"','\\"')}"`}function Km(e,t){if(e[t]!=="'")return null;let n="";for(let r=t+1;r<e.length;r+=1){if(e.startsWith(`'"'"'`,r)){n+="'",r+=4;continue}if(e[r]==="'")return{value:n,nextOffset:r+1};n+=e[r]}return null}async function Kv(e,t,n){if(Vm(t).filter(i=>i.constraint==="exact").some(i=>i.version!==n))return!1;let r=await nt(e);if(r!==null&&r!==await Ot(t)){let i=await Promise.all([r,t].map(async a=>{let o=await Zt("git",["rev-parse","--path-format=absolute","--git-common-dir"],{cwd:a,env:tt(),timeout:1e4});return Ot(o.stdout.trim())}));if(i[0]===i[1])return!1}return!0}async function Yv(e,t,n){let r=Km(e,0);if(r===null||e[r.nextOffset]!==" ")return!1;let i=Km(e,r.nextOffset+1);if(i===null||e.slice(i.nextOffset)!==t||!/^(?:node|bun)(?:\.exe)?$/iu.test(J.basename(r.value))||J.basename(i.value)!=="cli.js"||J.basename(J.dirname(i.value))!=="dist"||!await O(r.value)||!await O(i.value))return!1;try{let a=J.dirname(J.dirname(i.value)),o=JSON.parse(await Zo(J.join(a,"package.json"),"utf8")),s=typeof o.bin=="string"?o.bin:o.bin?.pm;return await Kv(a,n,o.version)?o.name==="@unbrained/pm-cli"&&s==="dist/cli.js":!1}catch{return!1}}function es(e,t){let n=e.length>0?`${e}/`:"",r=[`${We(`${n}**/*.toon`)} merge=pm-item-toon`,`${We(`${n}**/*.md`)} merge=pm-item-markdown`];for(let i of t)r.push(`${We(`${n}${i}/*.toon`)} merge=pm-item-toon`),r.push(`${We(`${n}${i}/*.md`)} merge=pm-item-markdown`);return r.push(`${We(`${n}**/*.jsonl`)} merge=pm-relationship`),r.push(`${We(`${n}history/*.jsonl`)} merge=pm-history`),r.push(`${We(`${n}settings.json`)} merge=pm-json`),r.push(`${We(`${n}**/*.json`)} merge=pm-json`),r.push(`${We(`${n}extensions/**`)} merge=text`),r.push(`${We(`${n}extensions/.managed-extensions.json`)} merge=pm-json`),r}function Qm(e){let t=[],n=0;for(;n<e.length;){let r=e.indexOf(qi,n),i=e.indexOf(pr,n),a=r===-1?i:i===-1?r:Math.min(r,i);if(a===-1)break;let o=a===i,s=o?pr:qi,c=o?Ym:Gv,d=e.indexOf(c,a+s.length),l=d===-1?e.length:d+c.length;t.push({start:a,end:l,closed:d!==-1,lines:e.slice(a+s.length,d===-1?l:d).split(`
|
|
31
31
|
`).map(u=>u.trim()).filter(Boolean)}),n=l}return t}function ep(e,t,n){let r=new Set(t),i=We(n.length>0?`${n}/`:"").slice(0,-1);return e.some(a=>r.has(a)||a.startsWith(i)&&/^[^/]+\/\*\.(?:toon|md)" merge=pm-item-(?:toon|markdown)$/u.test(a.slice(i.length)))}async function tp(e,t,n,r){let i=J.join(e,".gitattributes"),a=r?null:(await Zt("git",["rev-parse","--absolute-git-dir"],{cwd:e,env:tt(),encoding:"utf8",windowsHide:!0,timeout:1e4})).stdout.trim(),o=a===null?null:await te(a,qv,120,"merge-fence",!1,!0,5e3);try{let s=await V(i)??"",c=[pr,...n,Ym].join(`
|
|
32
32
|
`),d=Qm(s),l=d.filter(m=>ep(m.lines,n,t));l.length===0&&t===".agents/pm"&&d.length===1&&d[0].lines.every(m=>!m.includes(".agents/pm/"))&&l.push(d[0]);let u;if(l.length>0){let m=l[0];u=s;for(let f of l.slice(1).reverse())u=`${u.slice(0,f.start)}${u.slice(f.end)}`;u=`${u.slice(0,m.start)}${c}${u.slice(m.end)}`}else{let m=s.trimEnd();u=`${m.length>0?`${m}
|
|
33
33
|
|
|
@@ -54,9 +54,9 @@ ${d}`,g.GENERIC_FAILURE)}}function zp(e){let t=e.trim(),n=t.includes("@file:")?t
|
|
|
54
54
|
`);return{"package.json":f,"manifest.json":c,"index.ts":i?yE(e,t,r):d,"index.test.ts":i?wE(e,t,r):p,"tsconfig.json":l,".gitignore":_,"README.md":i?vE(a,t,r):E}}async function af(e,t="extension",n="commands",r=!1){let i=n.trim().toLowerCase();if(!Kp.includes(i))throw new y(`Unknown scaffold capability "${n}". Supported capabilities: ${Kp.join(", ")}.`,g.USAGE);let a=i;if(r&&t!=="package")throw new y("--declarative scaffolds a package-mode blueprint starter (composeExtension is a runtime SDK import). Use `pm package init`, not `pm extension init`.",g.USAGE);let o=r?"declarative":"imperative",s=e.trim(),c=kr.resolve(process.cwd(),s),d=Ki(kr.basename(c)).replace(/^(?:pm-)+/u,""),l=lE(d),u=xE(d,l,t,a,r),m=!1;if(await O(c)){if(!(await br.stat(c)).isDirectory())throw new y(`Scaffold target "${c}" exists and is not a directory.`,g.CONFLICT)}else await br.mkdir(c,{recursive:!0}),m=!0;for(let[p,h]of Object.entries(u)){let _=kr.join(c,p);if(await O(_)&&await br.readFile(_,"utf8")!==h)throw new y(`Scaffold file "${p}" already exists with different content in "${c}". Choose a new target path or remove conflicting files.`,g.CONFLICT)}let f=[];for(let[p,h]of Object.entries(u)){let _=kr.join(c,p);if(await O(_)){f.push({path:p,status:"unchanged"});continue}await br.mkdir(kr.dirname(_),{recursive:!0}),await br.writeFile(_,h,"utf8"),f.push({path:p,status:"created"})}return{extension_name:d,package_name:`pm-${d}`,command_name:l,invocation_command:`pm ${l}`,capability:a,style:o,target_path:c,created_directory:m,files:f}}(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]="6d50733c-ced5-5ec8-b82e-2391a974ad0f")}catch{}})();function of(e,t){return`${e}:${I(t)}`}function AE(e,t){let n=[];for(let[r,i]of[["handler",e.commands.handlers],["override",e.commands.overrides]]){let a=new Map;for(let o of i){let s=a.get(o.command)??[];a.set(o.command,[...s,o])}for(let[o,s]of a){if(t!==null&&!s.some(d=>t.has(I(d.name))))continue;let c=s.at(-1);n.push({command:o,surface:r,policy:"last_activated_wins",collision:s.length>1,claimants:s.map(d=>({name:d.name,layer:d.layer,winner:d===c}))})}}return n.sort((r,i)=>r.command.localeCompare(i.command)||r.surface.localeCompare(i.surface))}function sf(e,t,n){let r=new Set(n.failed.map(d=>of(d.layer,d.name))),i=[...t.loaded.map(d=>({name:d.name,layer:d.layer,version:d.version,activation_status:r.has(of(d.layer,d.name))?"failed":"ok",surfaces:xn(n,{extensionName:d.name})})),...t.failed.map(d=>({name:d.name,layer:d.layer,version:"unknown",activation_status:"not_loaded",surfaces:xn(n,{extensionName:d.name})}))].sort((d,l)=>d.name.localeCompare(l.name)||d.layer.localeCompare(l.layer)),a=typeof e=="string"?I(e):null,o=a===null?null:new Set(t.loaded.filter(d=>I(d.name)===a||typeof d.source_package=="string"&&I(d.source_package)===a||(d.source_aliases??[]).some(l=>I(l)===a)).map(d=>I(d.name)).concat(a)),s=o===null?i:i.filter(d=>o.has(I(d.name))),c=o===null?{}:{extensionNames:[...o]};return{target:typeof e=="string"?e.trim():null,total:s.length,extensions:s,union:xn(n,c),command_ownership:AE(n,o)}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="1e6087f2-01b5-59c3-a471-433c722316b0")}catch{}})();function ks(e){return e.map(({layer:t,name:n,error:r})=>({layer:t,name:n,error:r}))}function na(e,t,n){let r=I(t),i=n.trim();if(r.length===0||i.length===0)return;let a=e.get(r)??new Set;a.add(i),e.set(r,a)}function IE(e){let t=new Map,n=new Map;for(let r of e.registrations.commands)na(t,r.name,r.command),na(n,r.name,r.action);for(let r of e.commands.handlers)na(t,r.name,r.command);for(let r of e.commands.overrides)na(t,r.name,r.command);return{commandPathsByExtension:t,actionPathsByExtension:n}}function cf(e){if(!(!e||e.size===0))return[...e].sort((t,n)=>t.localeCompare(n))}function RE(e){let{enabled:t,normalizedName:n,loadedNames:r,loadFailedNames:i,activationFailedNames:a}=e;return t?i.has(n)||a.has(n)?{runtime_active:!1,activation_status:"failed"}:r.has(n)?{runtime_active:!0,activation_status:"ok"}:{runtime_active:!1,activation_status:"not_loaded"}:{runtime_active:!1,activation_status:"not_loaded"}}function ra(e,t,n){let r=new Set(t.loaded.map(c=>I(c.name))),i=new Set(t.failed.map(c=>I(c.name))),a=new Set(n.failed.map(c=>I(c.name))),{commandPathsByExtension:o,actionPathsByExtension:s}=IE(n);return e.map(c=>{let d=I(c.name),l=cf(o.get(d)),u=cf(s.get(d)),m={...l?{command_paths:l}:{},...u?{action_paths:u}:{}},f=RE({enabled:c.enabled,normalizedName:d,loadedNames:r,loadFailedNames:i,activationFailedNames:a});return{...c,...f,...m}})}function CE(e){let t=0,n=0,r=0;for(let i of e)if(i.startsWith("extension_policy_")){if(t+=1,i.startsWith("extension_policy_violation_")){n+=1;continue}i.startsWith("extension_policy_blocked_")&&(r+=1)}return{warning_count:t,violation_count:n,blocked_count:r}}function me(e,t){return e.vocabulary==="package"?`pm package --${t}`:`pm extension --${t}`}var uf=new Set(["extension_command_handler_collision","extension_command_override_collision","extension_command_override_handler_overlap","extension_parser_override_collision","extension_preflight_override_collision","extension_renderer_collision","extension_service_override_collision"]);function TE(e){return uf.has(gf(e))}function df(e){return e==="project"||e==="global"}function mf(e){let t=e.split(":"),n=t[0];if(!n||!uf.has(n))return null;let r=t.at(-4),i=t.at(-3)?.trim(),a=t.at(-2),o=t.at(-1)?.trim();return!df(r)||!df(a)||!i||!o?null:{code:n,surface:t.slice(1,-4).join(":")||"global",winner:{layer:r,name:i},displaced:{layer:a,name:o}}}function $E(e){let t=new Set;for(let n of e){let r=mf(n);r&&(t.add(r.winner.name),t.add(r.displaced.name))}return[...t].sort((n,r)=>n.localeCompare(r))}function Es(e,t){let n=e.filter(TE);if(n.length===0)return null;let r=$E(n);return`Extension registration collisions or handler/override overlaps detected.${r.length>0?` Conflicting extensions: ${r.join(", ")}.`:""} Single-winner surfaces can hide earlier package behavior. Deactivate one conflicting package with ${t.deactivate}, or scope registration surfaces in extensions.policy.extension_overrides, then rerun ${t.doctor}.`}function OE(e,t,n,r){let i=t.map(u=>mf(u)).filter(u=>u!==null).sort((u,m)=>`${u.code}:${u.surface}:${u.winner.name}:${u.displaced.name}`.localeCompare(`${m.code}:${m.surface}:${m.winner.name}:${m.displaced.name}`));if(i.length===0)return;let a=e==="global"?"--global":"--project",o=me(r,"deactivate"),s=`${me(r,"doctor")} ${a} --detail deep --trace`,c=new Map(n.map(u=>[I(u.name),u])),d=new Map;for(let u of i)for(let m of[u.winner.name,u.displaced.name]){let f=I(m);d.set(f,(d.get(f)??0)+1)}let l=[...d.entries()].map(([u,m])=>{let f=c.get(u),p=f?.name??u,h=f?.command_paths??[],_=f?.action_paths??[];return{action:"deactivate",extension:p,command:`${o} ${p} ${a}`,affected_collisions:m,feature_loss:{command_paths:[...h].sort((w,v)=>w.localeCompare(v)),action_paths:[..._].sort((w,v)=>w.localeCompare(v))}}}).sort((u,m)=>{let f=m.affected_collisions-u.affected_collisions;if(f!==0)return f;let p=u.feature_loss.command_paths.length+u.feature_loss.action_paths.length,h=m.feature_loss.command_paths.length+m.feature_loss.action_paths.length;return p!==h?p-h:u.extension.localeCompare(m.extension)});return{status:"conflicts_detected",collision_count:i.length,extension_count:d.size,next_best_command:s,collisions:i,remediation_candidates:l}}function pf(e){let t=[];for(let n of e){let r=n.error.toLowerCase();(r.includes("cannot find package '@unbrained/pm-cli'")||r.includes('cannot find module "@unbrained/pm-cli"')||r.includes("cannot find module '@unbrained/pm-cli'"))&&t.push(`extension_load_failed_sdk_dependency_missing:${n.name}`),(r.includes("cannot use import statement outside a module")||r.includes("to load an es module")||r.includes("must use import to load es module"))&&t.push(`extension_load_failed_module_mode_mismatch:${n.name}`)}return[...new Set(t)].sort((n,r)=>n.localeCompare(r))}function ff(e=[]){let t=Array.isArray(e)?e:[],n=[];for(let r of t){if(!r||typeof r.name!="string")continue;let i=r.trace?.missing_capability??r.trace?.capability;typeof i=="string"&&i.trim().length>0&&n.push(`extension_capability_missing:${r.name}:${i.trim().toLowerCase()}`)}return[...new Set(n)].sort((r,i)=>r.localeCompare(i))}function hf(e,t){let n=[];for(let r of Wd(e.loaded,t))for(let i of r.unused)n.push(`extension_capability_unused:${r.layer}:${r.name}:${i}`);return[...new Set(n)].sort((r,i)=>r.localeCompare(i))}var DE=[{matches:e=>e.some(t=>t.startsWith("extension_manifest_")),build:e=>`Run ${me(e.options,"explore")} ${e.scopeFlag} to inspect discovered manifests and directories.`},{matches:e=>e.some(t=>t.startsWith("extension_capability_unknown:")),build:()=>`Unknown extension capabilities detected. Allowed capabilities: ${Gr.join(", ")}. Review extension_capability_unknown warning details for suggested replacements.`},{matches:e=>e.some(t=>t.startsWith("extension_capability_legacy_alias:")),build:()=>"Legacy extension capability aliases were auto-remapped to canonical capabilities. Update manifests to canonical names (migration/validation -> schema)."},{matches:e=>e.some(t=>t.startsWith("extension_capability_missing:")),build:e=>`Extension activation failed because code registered a surface missing from manifest capabilities. Run ${me(e.options,"doctor")} ${e.scopeFlag} --detail deep --trace and add the reported missing_capability to manifest.json before publishing.`},{matches:e=>e.some(t=>t.startsWith("extension_capability_unused:")),build:e=>`Extension manifests declare capabilities that are never registered against. Remove each reported unused capability from manifest.json to keep least privilege, or add the matching registration. Run ${me(e.options,"doctor")} ${e.scopeFlag} --detail deep --trace for per-extension registration counts.`},{matches:e=>e.some(t=>t.startsWith("extension_command_definition_legacy_handler_alias:")),build:()=>"Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility."},{matches:e=>e.some(t=>t.startsWith("extension_output_service_override_global:")||t.startsWith("extension_output_renderer_override_global:")),build:()=>"Global output service/renderer overrides are active. For output_format, return context.payload/null/undefined unless the extension owns the command. For renderers, return null for unrelated payloads so pm falls back to native rendering."},{matches:e=>e.some(t=>t.startsWith("extension_schema_narrow_activation:")),build:()=>"A package registers custom item types/fields (a GLOBAL schema contribution) but also declares narrow activation.commands, so it never activates for built-in commands like pm create <type> and the custom type silently fails to register. Remove activation.commands from manifest.json so pm activates the package for every command, or \u2014 if the schema is intentionally command-scoped \u2014 knowingly ignore this advisory."},{matches:e=>e.some(t=>t.startsWith("extension_load_failed_sdk_dependency_missing:")),build:e=>`Detected extension load failures caused by missing SDK dependency resolution. Ensure extension package dependencies include "@unbrained/pm-cli" and reinstall dependencies before running ${me(e.options,"doctor")} ${e.scopeFlag}.`},{matches:e=>e.some(t=>t.startsWith("extension_load_failed_module_mode_mismatch:")),build:e=>`Detected extension module-mode mismatches. For ESM-based extension entries/imports, set package.json "type": "module" or use an explicit .mjs entry and rerun ${me(e.options,"doctor")} ${e.scopeFlag}.`},{matches:e=>e.some(t=>t.startsWith("extension_pm_min_version_")||t.startsWith("extension_pm_max_version_")),build:e=>`Extension pm version-bound warnings detected. Align each package manifest's pm_min_version/pm_max_version with the installed pm CLI version (see the warning's required/allowed=...:current=... details), or upgrade/downgrade the pm CLI to satisfy the declared bounds, then rerun ${me(e.options,"doctor")} ${e.scopeFlag}.`},{matches:(e,t)=>t.updateCheckFailedTotal>0,build:e=>`Run ${me(e.options,"manage")} ${e.scopeFlag} after validating network and repository access.`},{matches:e=>e.some(t=>t.startsWith("extension_manager_state_")),build:e=>`Review and repair ${e.scope} managed extension state file if schema/read warnings persist.`},{matches:(e,t)=>t.policyWarningCount>0,build:()=>"Extension governance policy warnings detected. Review settings.extensions.policy mode and allow/block lists to confirm intended capabilities and registration surfaces."}];function PE(e){let{normalizedWarnings:t,options:n,scope:r,scopeFlag:i,updateCheckFailedTotal:a,policyWarningCount:o,unmanagedActionRequiredTotal:s,notCheckedTotal:c,skippedNonGithubTotal:d,updateAvailableTotal:l}=e,u=[],m={options:n,scope:r,scopeFlag:i,updateCheckFailedTotal:a,policyWarningCount:o};if(t.length>0){let f=Es(t,{deactivate:`${me(n,"deactivate")} <name> ${i}`,doctor:`${me(n,"doctor")} ${i} --detail deep --trace`});f&&u.push(f);for(let p of DE)p.matches(t,m)&&u.push(p.build(m))}return s>0&&u.push(`Update-check coverage is partial because unmanaged extensions need adoption. Adopt existing installs via ${me(n,"manage")} ${i} --fix-managed-state (or ${me(n,"adopt-all")} ${i}, ${me(n,"adopt")} <name> ${i}, or reinstall via ${me(n,"install")} ${i} <source>).`),d>0&&u.push("Update-check coverage is partial: non-GitHub managed sources were not checked. Inspect their registry or source directly; zero detected updates does not mean these packages are current. Runtime activation health is independent."),c>0&&u.push(`Update-check coverage is partial: some sources have no completed check. Run ${me(n,"manage")} ${i} to request update checks.`),l>0&&u.push(`Update available managed extensions via ${me(n,"install")} ${i} <source>.`),u.length===0&&u.push(`No immediate action required. Re-run ${me(n,"manage")} ${i} after extension changes.`),u}function ia(e,t,n,r={}){let i=[...new Set(t)].sort((b,N)=>b.localeCompare(N)),a=n.filter(b=>b.managed).length,o=n.filter(b=>b.enabled).length,s=n.filter(b=>b.active).length,c=n.filter(b=>b.update_check_status==="checked"&&b.update_available===!0).length,d=n.filter(b=>b.managed===!1),l=d.filter(b=>lf(b)).map(b=>b.name).sort((b,N)=>b.localeCompare(N)),u=d.filter(b=>!lf(b)).map(b=>b.name).sort((b,N)=>b.localeCompare(N)),m={checked:0,skipped_unmanaged:0,skipped_non_github:0,failed:0,not_checked:0};for(let b of n)m[b.update_check_status]+=1;let f=m.failed,p=n.filter(b=>b.update_check_status==="skipped_non_github"&&b.source?.kind!=="builtin").length,h=Object.entries({skipped_unmanaged:u.length,skipped_non_github:p,failed:f,not_checked:m.not_checked}).filter(([,b])=>b>0).map(([b,N])=>`extension_update_health_partial_coverage:${b}:${N}`),_=h.length>0,w=_?"partial":"full",v=[...new Set([...i,...h])].sort((b,N)=>b.localeCompare(N)),E=[...new Set(v.map(b=>gf(b)))].sort((b,N)=>b.localeCompare(N)),k=CE(v),x=e==="global"?"--global":"--project",D=OE(e,i,n,r),S=PE({normalizedWarnings:v,options:r,scope:e,scopeFlag:x,updateCheckFailedTotal:f,policyWarningCount:k.warning_count,unmanagedActionRequiredTotal:u.length,notCheckedTotal:m.not_checked,skippedNonGithubTotal:p,updateAvailableTotal:c});return{status:v.length===0?"ok":"warn",warning_count:v.length,warning_codes:E,warnings:v,policy_warning_count:k.warning_count,policy_violation_count:k.violation_count,policy_blocked_count:k.blocked_count,total_extensions:n.length,managed_total:a,enabled_total:o,active_total:s,update_available_total:c,update_health_coverage:w,update_health_partial:_,unmanaged_loaded_extension_count:d.length,unmanaged_loaded_extensions:d.map(b=>b.name).sort((b,N)=>b.localeCompare(N)),unmanaged_expected_extension_count:l.length,unmanaged_expected_extensions:l,unmanaged_action_required_extension_count:u.length,unmanaged_action_required_extensions:u,update_check_status_totals:m,update_check_failed_total:f,top_warnings:v.slice(0,8),remediation:S,...D?{collision_plan:D}:{}}}function _f(e){if(!e||e.trim().length===0)return"summary";let t=e.trim().toLowerCase();if(t==="summary"||t==="deep")return t;throw new y(`Invalid --detail value "${e}". Expected summary or deep.`,g.USAGE)}function gf(e){let t=e.trim(),n=t.indexOf(":");return n===-1?t:t.slice(0,n)}function Er(e){let t=new Set,n=[];for(let r of e){let i=(()=>{let a=Qc(r);return a?[a]:ed(r)})();for(let a of i){let o=`${a.layer}:${a.name}:${a.capability}`;t.has(o)||(t.add(o),n.push(a))}}return n}function Sr(){return{version:Wr.version,capabilities:[...Wr.capabilities],legacy_aliases:{...Wr.legacy_aliases}}}function lf(e){let t=I(e.name),n=I(e.directory);return t.startsWith("builtin-")?!0:n==="beads"||n==="todos"}function yf(e,t,n,r,i){if(e!=="project"||i)return{warnings:[],summary:{active_project_count:0,loaded_project_count:0,active_project_names:[],loaded_project_names:[],missing_active_project_names:[]}};let a=[...new Set(t.filter(d=>d.active).map(d=>I(d.name)))].sort((d,l)=>d.localeCompare(l)),o=[...new Set(n.filter(d=>d.layer==="project").map(d=>I(d.name)))].sort((d,l)=>d.localeCompare(l)),s=new Set(r.map(d=>I(d.name))),c=a.filter(d=>!o.includes(d)&&!s.has(d)).sort((d,l)=>d.localeCompare(l));return{warnings:c.length>0?[`extension_doctor_consistency_active_not_loaded:${c.join(",")}`]:[],summary:{active_project_count:a.length,loaded_project_count:o.length,active_project_names:a,loaded_project_names:o,missing_active_project_names:c}}}import wf 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]="147fb29e-ad06-5850-b0b1-f643e32e9b1f")}catch{}})();function xr(e,t,n,r){let i=wf.relative(e,n);if(i!==""&&!fe(e,n)||n===t||fe(t,n))return!1;let a=i.split(wf.sep);return a.includes(".git")?!1:r?!a.some(o=>o===".agents"||o==="node_modules"||o.startsWith(".pm-extension-install-backup-")):!0}import{randomUUID as NE}from"node:crypto";import se from"node:fs/promises";import LE from"node:os";import re 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]="cefb224d-a18f-599a-9cf9-3d3a22616440")}catch{}})();var vf=3,ME=120,bf=250,jE=12e4,FE=new Set(["EEXIST","ENOTEMPTY","ENOENT"]),kf=e=>typeof e=="object"&&e!==null&&"code"in e?e.code:void 0,Ef=e=>FE.has(String(kf(e))),aa=(e,t)=>kf(e)===t,Sf=e=>new Promise(t=>{setTimeout(t,e)}),xf=async e=>{let t=re.join(e,"package.json");await O(t)||await se.writeFile(t,`${JSON.stringify({type:"module"},null,2)}
|
|
55
55
|
`,"utf8")},Af=async e=>{let t=Ne(import.meta.url,["../../.."]),n=re.join(e,"node_modules","@unbrained"),r=re.join(n,"pm-cli");await se.mkdir(n,{recursive:!0}),await se.rm(r,{recursive:!0,force:!0}),await se.symlink(t,r,process.platform==="win32"?"junction":"dir")},Ar=async e=>{let t=re.resolve(e),n=re.dirname(t),r=re.parse(n).root,i=await se.realpath(r).catch(()=>r),a=re.relative(r,n),o=a===""?[]:a.split(re.sep);for(let[s,c]of o.entries()){let d=re.join(i,c);try{i=await se.realpath(d)}catch{i=re.join(i,...o.slice(s));break}}return re.join(i,re.basename(t))},If=async(e,t,n,r=LE.tmpdir())=>Wt("extension_install_copy",async()=>{let i=re.resolve(e),a=await se.realpath(i).catch(()=>i),o=await Ar(t);if(a===o)return;if(!fe(a,o)){await n(a,t,{recursive:!0,force:!0,filter:u=>xr(a,o,re.resolve(u),!1)});return}let s=await se.realpath(re.resolve(r)).catch(()=>Ar(r)),c=fe(a,s)?re.dirname(a):s;if(fe(a,c))throw new y(`Extension source "${e}" contains its install destination and no external staging directory is available. Install a narrower package directory instead.`,g.USAGE,{code:"extension_install_source_contains_destination"});let d=await se.mkdtemp(re.join(c,"pm-extension-copy-")),l=re.join(d,"extension");try{await n(a,l,{recursive:!0,force:!0,filter:u=>xr(a,o,re.resolve(u),!0)}),await n(l,t,{recursive:!0,force:!0})}finally{await se.rm(d,{recursive:!0,force:!0})}}),Rf=async(e,t,n=se.cp)=>{for(let r=1;r<=vf;r+=1)try{await Wt("extension_install_copy",async()=>{await se.rm(t,{recursive:!0,force:!0}),await If(e,t,n)});return}catch(i){if(!Ef(i)||r===vf)throw i;await Sf(bf)}},Ss=async e=>{let t;try{t=await se.readFile(re.join(e,"owner.json"),"utf8")}catch(i){if(!At(i))throw i;return null}let n;try{n=JSON.parse(t)}catch{return null}if(typeof n!="object"||n===null||!("token"in n))return null;let r=n.token;return typeof r=="string"&&r.length>0?r:null},Cf=async(e,t)=>await Ss(e)!==t?!1:(await se.rm(e,{recursive:!0,force:!0}),!0),UE=async(e,t)=>{let n;try{n=await se.stat(e)}catch{return!1}if(Date.now()-n.mtimeMs<=t)return!1;let r=await Ss(e);return r===null?(await se.rm(e,{recursive:!0,force:!0}),!0):Cf(e,r)},HE=(e,t,n)=>{let r=Promise.resolve(),i=setInterval(()=>{r=r.then(async()=>{if(await Ss(e)!==t)return;let a=new Date;await se.utimes(e,a,a)}).catch(()=>{})},n);return i.unref(),async()=>{clearInterval(i),await r}},zE=async(e,t)=>{await se.mkdir(e);try{await se.writeFile(re.join(e,"owner.json"),`${JSON.stringify(t,null,2)}
|
|
56
56
|
`,"utf8")}catch(n){throw await se.rm(e,{recursive:!0,force:!0}).catch(()=>{}),n}},GE=async(e,t,n,r,i)=>{for(let a=1;a<=n;a+=1)try{return await zE(e,t),!0}catch(o){if(!aa(o,"EEXIST"))throw o;await UE(e,i)?a-=1:await Sf(r)}return!1},xs=async(e,t,n,r)=>Wt("extension_install",async()=>{let i=re.join(e,"runtime","extension-install-locks"),a=re.join(i,"scope.lock");await se.mkdir(i,{recursive:!0});let{attempts:o=ME,delay_ms:s=bf,stale_ms:c=jE,heartbeat_ms:d}=r??{};if(![o,s,c,d].filter(w=>w!==void 0).every(Number.isFinite))throw new y("Extension install lock timings must be finite numbers.",g.USAGE);let l=Math.max(1,Math.floor(o)),u=Math.max(0,Math.floor(s)),m=Math.floor(c),f=Math.floor(d??m/3);if(m<=0||f<=0||f>=m)throw new y("Extension install lock timings require stale_ms > 0 and 0 < heartbeat_ms < stale_ms.",g.USAGE);let p={pid:process.pid,token:NE(),created_at:$(),destination:t};if(!await GE(a,p,l,u,m))throw new y(`Timed out waiting for extension install lock for "${t}".`,g.CONFLICT);let h=HE(a,p.token,f),_=!1;try{let w=await n();return _=!0,w}finally{await h(),await Cf(a,p.token).catch(w=>{if(_)throw w})}});(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="eb830963-f036-5f98-ab26-786240b3e0fd")}catch{}})();var As=async(e,t,n)=>{if(!Number.isInteger(t)||t<1)throw new RangeError("concurrency must be a positive integer");let r=new Array(e.length),i=0,a=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let o=i;i+=1,r[o]=await n(e[o])}});return await Promise.all(a),r};(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]="accde468-de04-51b6-81ad-5c5ea218a87b")}catch{}})();function Tf(e,t){let n=I(e),r=t.find(i=>I(i.name)===n);return{command_paths:[...r?.command_paths??[]].sort((i,a)=>i.localeCompare(a)),action_paths:[...r?.action_paths??[]].sort((i,a)=>i.localeCompare(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]="f2cac210-bba0-5c7f-867b-8b59f8d36e11")}catch{}})();function $f(e,t){let n=new Set((t?.loaded??[]).flatMap(a=>(a.activation?.commands?.length??0)>0?[`${a.layer}:${I(a.name)}`]:[])),r=e.services.overrides.filter(a=>a.service==="output_format").filter(a=>a.passThrough!==!0).filter(a=>!n.has(`${a.layer}:${I(a.name)}`)).map(a=>`extension_output_service_override_global:${a.service}:${a.layer}:${a.name}`),i=e.renderers.overrides.filter(a=>(a.commands?.length??0)===0&&a.resultDiscriminator===void 0).map(a=>`extension_output_renderer_override_global:${a.format}:${a.layer}:${a.name}`);return[...new Set([...r,...i])].sort((a,o)=>a.localeCompare(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]="a1803149-25ca-5bb0-a178-afa2d85d2ec9")}catch{}})();var Of=e=>[...e.registrations.item_fields.flatMap(t=>t.fields.map(n=>({layer:t.layer,extension:t.name,field:n.name}))),...e.registrations.profiles.flatMap(t=>t.profile.fields.map(n=>({layer:t.layer,extension:t.name,field:n.key??""})))].flatMap(t=>{let n=ni(t.field);return n?[`extension_custom_field_mcp_input_collision:${t.layer}:${t.extension}:${n.field}:${n.property}:${n.owner}:use=${n.nested_path}`]:[]}).filter((t,n,r)=>r.indexOf(t)===n).sort((t,n)=>t.localeCompare(n));import{execFile as WE}from"node:child_process";import{promisify as qE}from"node:util";import BE from"npm-package-arg";(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]="b67e46f9-51ff-501b-98da-74353b4c66d9")}catch{}})();var VE=qE(WE),Pf=1e4;function Df(e,t,n){if(typeof t=="string")try{let r=BE.resolve(e,t);if(r.type==="version")return r.fetchSpec}catch{}throw new Error(n)}async function JE(e,t){try{return(await VE(ys(),e,{encoding:"utf8",timeout:t,maxBuffer:65536,shell:ws(),env:{...process.env,npm_config_ignore_scripts:"true"}})).stdout.trim()}catch{throw new Error("npm_registry_lookup_failed")}}async function Nf(e,t=JE){let n=$();try{if(e.kind!=="npm"||!e.package||!/^(?:@[a-zA-Z0-9._-]+\/)?[a-zA-Z0-9._-]+$/u.test(e.package))throw new Error("missing_or_invalid_npm_package_identity");let r=Df(e.package,e.version,"missing_or_invalid_installed_npm_version"),i=await t(["view",e.package,"dist-tags.latest","--json","--ignore-scripts"],Pf),a;try{a=JSON.parse(i)}catch{throw new Error("invalid_npm_registry_metadata")}let o=Array.isArray(a)&&a.length===1?a[0]:a,s=Df(e.package,o,"invalid_npm_registry_version");return{checked_at:n,available:s!==r,remote_version:s}}catch(r){return{checked_at:n,available:null,error:r instanceof Error?r.message:String(r)}}}var KE=(e,t,n)=>{let r=e.split(/\r?\n/).map(o=>o.trim()).filter(Boolean).map(o=>{let[s,c=""]=o.split(/\s+/);return{commit:s,ref:c}}),i=r.find(o=>o.ref.endsWith("^{}"))??r[0];if(!i)return{checked_at:n,available:null,error:"no_remote_reference_found"};let a=t?.trim();return a?{checked_at:n,remote_commit:i.commit,available:i.commit!==a}:{checked_at:n,remote_commit:i.commit,available:null,error:"missing_installed_commit"}},Is=async(e,t=Zi)=>{let n=$();if(e.kind!=="github"||!e.repository)return{checked_at:n,available:null,error:"not_a_github_managed_source"};try{let r=[e.ref?.trim(),"HEAD"].find(Boolean),i=await t(["ls-remote",e.repository,r,`${r}^{}`],void 0,Pf);return KE(i,e.commit,n)}catch(r){return{checked_at:n,available:null,error:r instanceof Error?r.message:String(r)}}};(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]="d34e2cc0-5e58-5534-8480-a9ab47ec4a88")}catch{}})();var YE=4;async function Lf(e,t=!1){let n=await As(e.entries,YE,async r=>{if(!["github","npm"].includes(r.source.kind))return r;if(t)return{...r,last_update_check_at:void 0,last_update_remote_commit:void 0,last_update_remote_version:void 0,update_available:null,update_error:void 0};let i=r.source.kind==="github"?await Is(r.source):await Nf(r.source);return{...r,last_update_check_at:i.checked_at,last_update_remote_commit:"remote_commit"in i?i.remote_commit:void 0,last_update_remote_version:"remote_version"in i?i.remote_version:void 0,update_available:i.available,update_error:i.error}});return{...e,entries:gr(n)}}import XE from"node:fs/promises";import ZE 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]="7be00b26-4a56-5399-94f6-f2f67cc5c1e6")}catch{}})();function Rs(e){return ZE.join(e,"extension-migrations.json")}function Mf(e,t){let n=e.definition.id;return typeof n=="string"&&n.trim().length>0?n.trim():`migration-${String(t+1).padStart(3,"0")}`}function jf(e,t){return`${e.layer}:${e.name}:${t}`}async function QE(e){let t=Rs(e);if(!await O(t))return{version:1,updated_at:"",entries:[]};let n=JSON.parse(await XE.readFile(t,"utf8"));return{version:1,updated_at:typeof n.updated_at=="string"?n.updated_at:"",entries:Array.isArray(n.entries)?n.entries.filter(r=>typeof r?.key=="string"&&(r.status==="applied"||r.status==="failed")):[]}}async function Cs(e,t){let n=await QE(e),r=new Map(n.entries.map(i=>[i.key,i]));return t.forEach((i,a)=>{let o=Mf(i,a),s=r.get(jf(i,o));s&&(i.definition.status=s.status,s.status==="failed"?i.definition.reason=s.error:(delete i.definition.reason,delete i.definition.error,delete i.definition.message))}),n}async function eS(e){let t=await Cs(e.pmRoot,e.migrations),n=new Map(t.entries.map(l=>[l.key,l])),r=[],i=!1,a=e.migrations.map((l,u)=>({migration:l,index:u})).filter(({migration:l})=>e.scope===void 0||l.layer===e.scope);for(let{migration:l,index:u}of a){let m=Mf(l,u),f=jf(l,m),p=n.get(f),h=String(l.definition.status??"pending").toLowerCase(),_=p?.status??(h==="applied"||h==="failed"?h:"pending");if(_==="applied"){r.push({key:f,layer:l.layer,extension:l.name,id:m,before:_,outcome:"skipped"});continue}if(e.dryRun===!0){r.push({key:f,layer:l.layer,extension:l.name,id:m,before:_,outcome:"pending"});continue}let w=l.runtime_definition?.run??l.definition.run;if(typeof w!="function"){r.push({key:f,layer:l.layer,extension:l.name,id:m,before:_,outcome:"pending"});continue}let v=new Date().toISOString();try{await Promise.resolve(w({id:m,command:"migration",layer:l.layer,extension:l.name,pm_root:e.pmRoot,status:_}));let E={key:f,layer:l.layer,extension:l.name,id:m,status:"applied",attempted_at:v};n.set(f,E),l.definition.status="applied",delete l.definition.reason,delete l.definition.error,delete l.definition.message,r.push({key:f,layer:l.layer,extension:l.name,id:m,before:_,outcome:"applied"}),i=!0}catch(E){let k=E instanceof Error?E.message:String(E),x={key:f,layer:l.layer,extension:l.name,id:m,status:"failed",attempted_at:v,error:k};n.set(f,x),l.definition.status="failed",l.definition.reason=k,r.push({key:f,layer:l.layer,extension:l.name,id:m,before:_,outcome:"failed",error:k}),i=!0}}if(i){let l=await T(e.pmRoot),u={version:1,updated_at:new Date().toISOString(),entries:[...n.values()].sort((m,f)=>m.key.localeCompare(f.key))};await hi({pmRoot:e.pmRoot,filePath:Rs(e.pmRoot),raw:`${JSON.stringify(u,null,2)}
|
|
57
|
-
`,op:"extension_migrations_apply",author:e.author,lockTtlSeconds:l.locks.ttl_seconds,lockWaitMs:l.locks.wait_ms})}let o=r.filter(l=>l.outcome==="pending").length,s=r.filter(l=>l.outcome==="applied").length,c=r.filter(l=>l.outcome==="skipped").length,d=r.filter(l=>l.outcome==="failed").length;return{ok:d===0,dry_run:e.dryRun===!0,state_path:Rs(e.pmRoot),total:r.length,pending_count:o,applied_count:s,skipped_count:c,failed_count:d,migrations:r}}async function Ff(e){let t=await T(e.resolvedRoots.settings_root),n=await Ye({pmRoot:e.resolvedRoots.pm_root,settings:t,cwd:process.cwd(),noExtensions:e.global.noExtensions===!0}),r=await Xe(n);e.warnings.push(...n.warnings,...r.warnings);let i=await eS({pmRoot:e.resolvedRoots.pm_root,migrations:r.registrations.migrations,author:typeof e.global.author=="string"&&e.global.author.trim().length>0?e.global.author.trim():"pm-extension-migration",dryRun:e.options.dryRun===!0,...e.scope==="global"?{scope:"global"}:{}});return e.withResult({migration:i,load_failure_count:n.failed.length,activation_failure_count:r.failed.length},i.ok)}(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]="fcf7df06-e3b8-5476-a76a-cd391839c13d")}catch{}})();function Uf(e,t){let n=e.filter(r=>r.result.ok).length;return{installed_all:!t&&n===e.length,installed_count:t?0:n,...t?{dry_run:!0,planned_count:n}:{},failed_count:e.length-n,packages:e.map(({alias:r,result:i})=>{let a=i.details;return{alias:r,ok:i.ok,extension:a.extension,source:a.source,source_resolution:a.source_resolution,install_plan:a.install_plan,dry_run:a.dry_run,destination_path:a.destination_path,activated:a.activated,settings_changed:a.settings_changed,command_paths:a.command_paths,action_paths:a.action_paths,command_discovery:a.command_discovery,verification:a.verification,runtime_activation_status:a.runtime_activation_status,activation_diagnostics:a.activation_diagnostics,warnings:i.warnings}})}}import sa from"node:fs/promises";import oa 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]="18bf1015-c2c8-5530-a3ce-1531a8a1d0e2")}catch{}})();var tS=new Set(["node_modules",".git","dist","build","coverage"]);async function Hf(e,t,n,r){let i=e.source.kind==="local"?await sa.stat(e.source.absolute_path):void 0,a=e.source.kind==="local"?i.isDirectory()?"directory":"archive":e.source.kind,o=await nS(e.directory,t,r),s={source_mode:a,...a==="archive"?{archive_bytes:i.size}:{},copy:o},c=e.source_root??e.directory;if(a==="directory"&&(!o.complete||o.development_entries>0||o.bytes>=16*1024*1024)&&await O(oa.join(c,"package.json"))&&(s.packed_alternative={cwd:c,pack:{command:"npm",args:["pack","--ignore-scripts","--json"]},install:{command:"pm",args:["package","install","<archive-filename>",`--${n}`]},archive_argument:"pack_result[0].filename"}),a==="directory"&&!o.complete){let d=o.stop_reason==="entry_limit"?`${o.max_entries} entries`:`${o.max_depth} directory levels`;throw new y(`Local extension source scan stopped at ${d}; the directory snapshot is incomplete and installation was refused. ${s.packed_alternative?"Pack the package with npm pack --ignore-scripts --json, then install its archive.":"Install a smaller source directory or a packed archive."}`,g.USAGE,{code:"extension_install_incomplete_source_scan",reason:o.stop_reason,nextSteps:s.packed_alternative?[`Run npm pack --ignore-scripts --json from the package root, then pm package install <archive-filename> --${n}.`]:["Choose a smaller source directory or install a packed archive."]})}return s}async function nS(e,t,n={}){let{maxEntries:r=1e4,maxDepth:i=64,signal:a}=n;if(![r,i].every(u=>Number.isSafeInteger(u)&&u>0))throw new y("maxEntries and maxDepth must be positive safe integers.",g.USAGE);a?.throwIfAborted();let o=await sa.realpath(e),s=await Ar(t),c=await ta(o,s);a?.throwIfAborted();let d=c?"in_place":fe(o,s)?"nested_filtered_snapshot":"directory_snapshot",l={copy_scope:d,source_directory:o,destination_directory:s,files:0,bytes:0,directories:0,symlinks:0,other_entries:0,scanned_entries:0,excluded_entries:0,development_entries:0,complete:!0,stop_reason:"complete",max_entries:r,max_depth:i};return d==="in_place"||await zf(o,0,l,a),l}async function zf(e,t,n,r){r?.throwIfAborted();let i=await sa.opendir(e);for await(let a of i){if(r?.throwIfAborted(),n.scanned_entries>=n.max_entries){n.complete=!1,n.stop_reason="entry_limit";return}n.scanned_entries+=1;let o=oa.join(e,a.name);if(!xr(n.source_directory,n.destination_directory,o,n.copy_scope==="nested_filtered_snapshot")){n.excluded_entries+=1;continue}if(oa.relative(n.source_directory,o).split(oa.sep).some(s=>tS.has(s))&&(n.development_entries+=1),await rS(o,t,n,r),!n.complete)return}}async function rS(e,t,n,r){let i=await sa.lstat(e);if(r?.throwIfAborted(),i.isDirectory()){if(n.directories+=1,t+1>=n.max_depth){n.complete=!1,n.stop_reason="depth_limit";return}await zf(e,t+1,n,r)}else i.isFile()?(n.files+=1,n.bytes+=i.size):i.isSymbolicLink()?n.symlinks+=1:n.other_entries+=1}import iS from"node:fs/promises";import aS 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]="955d33c5-8c96-5ed6-bbd1-fc8a26801df4")}catch{}})();function oS(e){return typeof e.name=="string"&&e.name.trim().length>0?e.name.trim():"workspace-manifest"}function sS(e,t){return t.code==="manifest_unknown_key"?`extension_manifest_unknown_key:author:${e}:key=${t.path}${t.suggested_key?`:suggested=${t.suggested_key}`:""}`:`extension_manifest_no_version_bounds:author:${e}:suggested=pm_min_version`}async function Ts(e){let t=aS.join(e,"manifest.json"),n;try{n=await iS.readFile(t,"utf8")}catch(s){if(At(s))return{path:t,present:!1,parse_status:"absent",package_metadata_location:"package.json#pm",schema_findings:[],warnings:[],remediation:[]};throw s}let r;try{r=JSON.parse(n)}catch{return{path:t,present:!0,parse_status:"invalid_json",package_metadata_location:"package.json#pm",schema_findings:[],warnings:["extension_author_manifest_invalid_json:manifest.json"],remediation:["Repair manifest.json so it contains one valid JSON object, then rerun pm package doctor --project."]}}if(typeof r!="object"||r===null||Array.isArray(r))return{path:t,present:!0,parse_status:"invalid_shape",package_metadata_location:"package.json#pm",schema_findings:[],warnings:["extension_author_manifest_invalid_shape:manifest.json"],remediation:["Replace manifest.json with one JSON object, then rerun pm package doctor --project."]};let i=r,a=od(i),o=oS(i);return{path:t,present:!0,parse_status:"valid",package_metadata_location:"package.json#pm",schema_findings:a.findings,warnings:a.findings.map(s=>sS(o,s)),remediation:a.findings.map(s=>s.message)}}function Gf(e){return Ts(Ke(e))}import cS from"node:fs/promises";import dS from"npm-package-arg";(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]="2bef4424-f5b8-511b-91f7-0b39cf11f515")}catch{}})();async function lS(e,t){if(e.kind!=="local"||e.input.startsWith(".")||e.input.includes("\\")||e.input.includes("/")&&!/^@[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/u.test(e.input))return e;try{return await cS.lstat(e.absolute_path),e}catch(a){if(!F(a))throw a}let n=e.input.trim(),r=t.filter(a=>a.source.kind==="npm"),i=(r.find(a=>a.name===n)??r.find(a=>a.directory===n)??r.find(a=>a.source.package===n))?.source.package;if(i===void 0)return e;try{let a=dS(i);if(!a.registry||a.name!==i)return e}catch{return e}return vr(`npm:${i}`,{})}async function Wf(e,t,n,r=[]){let i=typeof t=="string"?null:await wr(e),a=i===null?null:e.trim().toLowerCase(),o=a===null?null:await Np(a),s=await lS(vr(i??e,{forceGithub:typeof t=="string",ref:n}),r),c=a===null?null:await Up(e);return{bundledAliasName:a,bundledPackageName:o,installSource:s,sourceResolution:{requested:e,selected:{kind:a===null?s.kind:"builtin",input:a??s.input,...o===null?{}:{package:o}},ambiguous:c!==null,precedence:"bundled_alias_before_installed_npm",candidates:[...a===null?[]:[{kind:"builtin",input:a,...o===null?{}:{package:o},command:`pm install ${a}`}],...c===null?[]:[{kind:"npm",input:`npm:${c.package}`,package:c.package,...c.version===void 0?{}:{version:c.version},directory:c.directory,command:`pm install npm:${c.package}`}]]}}}import nn from"node:fs/promises";import uS 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]="776854e4-6df4-507e-b21b-a4d320946642")}catch{}})();var $s=async e=>nn.readFile(e).catch(t=>{if(aa(t,"ENOENT"))return null;throw t}),qf=async(e,t,n,r,i)=>Wt("extension_install_backup",async()=>{let a=_r(e),o=zt(t),[s,c]=await Promise.all([$s(a),$s(o)]);return r&&await nn.cp(n,i,{recursive:!0,force:!0}),{backupDirectory:i,destinationDirectory:n,destinationExists:r,managedStatePath:a,managedStateContents:s,settingsPath:o,settingsContents:c}}),Bf=async e=>Wt("extension_install_rollback",async()=>{await nn.rm(e.destinationDirectory,{recursive:!0,force:!0}),e.destinationExists&&await nn.cp(e.backupDirectory,e.destinationDirectory,{recursive:!0,force:!0});for(let[t,n]of[[e.managedStatePath,e.managedStateContents],[e.settingsPath,e.settingsContents]])n===null?await nn.rm(t,{force:!0}):(await nn.mkdir(uS.dirname(t),{recursive:!0}),await nn.writeFile(t,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]="549164da-d760-52bc-9950-25dacf286775")}catch{}})();var Yf=[["install","install","--install"],["uninstall","uninstall","--uninstall"],["explore","explore","--explore"],["list","explore","--explore"],["manage","manage","--manage"],["describe","describe","--describe"],["reload","reload","--reload"],["doctor","doctor","--doctor"],["catalog","catalog","--catalog"],["init","init","--init"],["scaffold","init","--scaffold"],["adopt","adopt","--adopt"],["adopt-all","adopt-all","--adopt-all"],["activate","activate","--activate"],["deactivate","deactivate","--deactivate"],["migrate","migrate","--migrate"]],mS=Yf.map(([,,e])=>e).filter((e,t,n)=>n.indexOf(e)===t).join(", "),pS={install:"--install",uninstall:"--uninstall",explore:"--explore",manage:"--manage",describe:"--describe",reload:"--reload",doctor:"--doctor",catalog:"--catalog",adopt:"--adopt","adopt-all":"--adopt-all",activate:"--activate",deactivate:"--deactivate",migrate:"--migrate",init:"--init"},fS="__pm_native_output",hS=["trusted_extensions","allowed_extensions","blocked_extensions","allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services"],Xf=["allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services"],_S=["disabled","require_trusted","require_provenance"],Zf={mode:"off",trust_mode:"off",require_provenance:!1,trusted_extensions:[],default_sandbox_profile:"none",allowed_extensions:[],blocked_extensions:[],allowed_capabilities:[],blocked_capabilities:[],allowed_surfaces:[],blocked_surfaces:[],allowed_commands:[],blocked_commands:[],allowed_actions:[],blocked_actions:[],allowed_services:[],blocked_services:[],extension_overrides:[]},gS=e=>{let t=e??Zf,n={};for(let r of hS)n[r]=De(t[r]??[]);return n},yS=(e,t)=>{for(let n of Xf)t[n].length>0&&(e[n]=t[n]);return e},wS=(e,t)=>{for(let n of _S)t[n]===!0&&(e[n]=!0);return t.sandbox_profile&&(e.sandbox_profile=t.sandbox_profile),e},vS=e=>{let t={};for(let n of Xf)t[n]=De(e[n]??[]);return t},bS=e=>{let t=typeof e.name=="string"?e.name.trim():"";return t.length===0?null:yS(wS({name:t},e),vS(e))},kS=e=>(e??[]).map(t=>bS(t)).filter(t=>t!==null).sort((t,n)=>t.name.localeCompare(n.name)),ES=e=>{let t=Object.assign({},Zf,e??{}),n=gS(e),r=kS(t.extension_overrides);return{mode:t.mode,trust_mode:t.trust_mode,require_provenance:t.require_provenance===!0,trusted_extensions:n.trusted_extensions,default_sandbox_profile:t.default_sandbox_profile,allowed_extensions:n.allowed_extensions,blocked_extensions:n.blocked_extensions,allowed_capabilities:n.allowed_capabilities,blocked_capabilities:n.blocked_capabilities,allowed_surfaces:n.allowed_surfaces,blocked_surfaces:n.blocked_surfaces,allowed_commands:n.allowed_commands,blocked_commands:n.blocked_commands,allowed_actions:n.allowed_actions,blocked_actions:n.blocked_actions,allowed_services:n.allowed_services,blocked_services:n.blocked_services,extension_overrides:r}},Qf=async(e,t)=>{let n=[t],r=await Lp(t);r&&n.push(r);let i=[...new Set(n.map(a=>I(a)).filter(a=>a.length>0))];for(let a of i){let o=e.find(c=>I(c.name)===a);if(o)return o;let s=e.find(c=>I(c.directory)===a);if(s)return s}},eh=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled));return new Set(De(e.extensions.disabled)).has(n)?!1:r.size===0?!0:r.has(n)},th=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled)),i=new Set(De(e.extensions.disabled)),a=[...r],o=[...i];return i.delete(n),r.size>0&&r.add(n),e.extensions.enabled=[...r].sort((s,c)=>s.localeCompare(c)),e.extensions.disabled=[...i].sort((s,c)=>s.localeCompare(c)),e.extensions.enabled.join("\0")!==a.join("\0")||e.extensions.disabled.join("\0")!==o.join("\0")},SS=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled)),i=new Set(De(e.extensions.disabled)),a=[...r],o=[...i];return r.delete(n),i.add(n),e.extensions.enabled=[...r].sort((s,c)=>s.localeCompare(c)),e.extensions.disabled=[...i].sort((s,c)=>s.localeCompare(c)),e.extensions.enabled.join("\0")!==a.join("\0")||e.extensions.disabled.join("\0")!==o.join("\0")},xS=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled)),i=new Set(De(e.extensions.disabled)),a=[...r],o=[...i];return r.delete(n),i.delete(n),e.extensions.enabled=[...r].sort((s,c)=>s.localeCompare(c)),e.extensions.disabled=[...i].sort((s,c)=>s.localeCompare(c)),e.extensions.enabled.join("\0")!==a.join("\0")||e.extensions.disabled.join("\0")!==o.join("\0")},AS=e=>{let t=e.trim().toLowerCase(),n=Math.min(2,Math.max(1,Math.ceil(t.length/4))),r=Yf.map(([i,a,o])=>({action:a,flag:o,distance:Zc(t,i,n)})).filter(i=>i.distance!==null).sort((i,a)=>i.distance-a.distance)[0];return r?{action:r.action,flag:r.flag}:null},IS=(e,t)=>{let n=t.vocabulary==="package"?"package":"extension",r=AS(e);if(!r)return new y(`One action flag is required. Use one of: ${mS}. Bare \`pm package\` and \`pm extension\` default to --explore.`,g.USAGE);let i=`pm ${n} ${r.flag}`;return gi({command_path:n,display_name:`${n} lifecycle`,token_kind:"action",token:e,allowed:Object.keys(nh),retry_command:i,message_suffix:`. Did you mean "${r.flag}"?`,fallback_candidates:[{source:"lifecycle_action",command:i,reason:`nearest lifecycle action for "${e}"`}]})},RS=[["install","install"],["uninstall","uninstall"],["explore","explore"],["manage","manage"],["describe","describe"],["reload","reload"],["doctor","doctor"],["catalog","catalog"],["init","init"],["scaffold","init"],["adopt","adopt"],["adoptAll","adopt-all"],["activate","activate"],["deactivate","deactivate"],["migrate","migrate"]],nh={doctor:"doctor",reload:"reload",catalog:"catalog",init:"init",scaffold:"init",explore:"explore",manage:"manage",migrate:"migrate",list:"explore","":"explore"},CS=e=>nh[e]??null,TS=(e,t)=>{let n=[...new Set(RS.filter(([r])=>t[r]===!0).map(([,r])=>r))];if(n.length===0){if(e===void 0)return"explore";let r=CS(e.trim().toLowerCase());if(r)return r;throw IS(e,t)}if(n.length>1)throw new y("Extension action flags are mutually exclusive.",g.USAGE);return n[0]},$S=e=>{let t=e.project===!0||e.local===!0,n=e.global===!0;if(t&&n)throw new y('Options "--project/--local" and "--global" are mutually exclusive.',g.USAGE);return n?"global":"project"},OS=[e=>e?null:{status:"skipped_unmanaged",reason:"extension_not_managed"},e=>e&&!["github","npm"].includes(e.source.kind)?{status:"skipped_non_github",reason:`managed_source_kind_${e.source.kind}`}:null,e=>{let t=typeof e?.update_error=="string"?e.update_error.trim():"";return t.length>0?{status:"failed",reason:t}:null},e=>{let t=e;return(typeof t.last_update_check_at=="string"?t.last_update_check_at.trim():"").length===0?null:{status:"checked",reason:{true:"update_available",false:"up_to_date"}[String(t.update_available)]??"checked_without_commit_baseline"}}],rh=e=>{for(let t of OS){let n=t(e);if(n)return n}return{status:"not_checked",reason:"no_update_check_recorded"}},ih=(e,t,n,r)=>{let i=n??{};return{name:e.name,directory:e.directory,version:e.version,entry:e.entry,scope:t,active:e.enabled,enabled:e.enabled,runtime_active:null,activation_status:"unknown",contributions:i.contributions,managed:!!n,source:i.source,update_available:i.update_available,last_update_check_at:i.last_update_check_at,last_update_remote_commit:i.last_update_remote_commit,last_update_remote_version:i.last_update_remote_version,update_error:i.update_error,update_check_status:r.status,update_check_reason:r.reason}},DS=(e,t,n,r)=>{let i=Object.assign({name:e,manifest_version:"unknown",manifest_entry:"unknown"},r),a=r?eh(n,r.name):!1;return{warning:`extension_manifest_missing:${t}:${e}`,summary:ih({name:i.name,directory:e,version:i.manifest_version,entry:i.manifest_entry,enabled:a},t,r,rh(r))}},PS=async(e,t,n,r,i,a)=>{let o=Pe.join(e,t),s=Pe.join(o,"manifest.json"),c=a.get(I(t));if(!await O(s))return DS(t,n,r,c);let d=Symbol("invalid-extension-manifest-json"),l=await jt.readFile(s,"utf8").then(f=>JSON.parse(f)).catch(()=>d);if(l===d)return{warning:`extension_manifest_invalid_json:${n}:${t}`};let u=ls(l);if(!u)return{warning:`extension_manifest_invalid:${n}:${t}`};let m=i.get(I(u.name))??a.get(I(t));return{summary:ih({name:u.name,directory:t,version:u.version,entry:u.entry,enabled:eh(r,u.name)},n,m,rh(m))}},it=async(e,t,n,r)=>{if(!await O(e))return{extensions:[],warnings:[]};let i=(await jt.readdir(e,{withFileTypes:!0})).filter(d=>d.isDirectory()).map(d=>d.name).sort((d,l)=>d.localeCompare(l)),a=new Map(r.entries.map(d=>[I(d.name),d])),o=new Map(r.entries.map(d=>[I(d.directory),d])),s=[],c=[];for(let d of i){let l=await PS(e,d,t,n,a,o);l.warning&&s.push(l.warning),l.summary&&c.push(l.summary)}return{extensions:c.sort((d,l)=>d.name.localeCompare(l.name)),warnings:s.sort((d,l)=>d.localeCompare(l))}},NS=zd(),LS=(e,t)=>[t.package,t.kind==="builtin"?t.name:void 0].find(n=>n?.trim())?.trim()??e,MS=(e,t,n,r)=>{let i=n.command_paths.map(s=>`pm ${s} --help`),a=r?.error.toLowerCase().includes("@unbrained/pm-cli")===!0,o=n.command_paths.length>0?[...i]:["Run pm package doctor --project --detail deep if expected package commands are missing."];return a&&o.unshift("Install @unbrained/pm-cli in the target workspace so declarative package runtime imports resolve, then reinstall the package."),{package_name:LS(e,t),extension_name:e,command_paths:n.command_paths,action_paths:n.action_paths,help_commands:i,next_steps:o,...a?{sdk_dependency_status:"missing"}:{}}},jS=e=>{let t=e.trace,n={layer:e.layer,name:e.name,entry_path:e.entry_path,error:e.error};return t&&(n.trace=Object.fromEntries(Object.entries(t).filter(([,r])=>r!==void 0)),t.missing_capability&&(n.missing_capability=t.missing_capability),t.hint&&(n.hint=t.hint)),n},ah=e=>e.map(t=>jS(t)).sort((t,n)=>`${t.layer}:${t.name}`.localeCompare(`${n.layer}:${n.name}`)),oh=(e,t,n)=>{let r=I(e);return t.find(i=>(n===void 0||i.layer===n)&&I(i.name)===r)},FS=(e,t,n,r)=>n.find(i=>i.scope===t&&I(i.name)===I(e))?.activation_status??(r?"failed":"unknown"),sh=(e,t,n,r,i)=>NS.enqueue(async()=>{let a=process.env.PM_CLI_PACKAGE_ROOT,o=await jt.mkdtemp(Pe.join(t,".pm-module-graph-"));process.env.PM_CLI_PACKAGE_ROOT=Ne(import.meta.url,["../.."]);try{let s=await Ye({pmRoot:e,settings:n,cwd:process.cwd(),noExtensions:i.noExtensions===!0,reload_token:Ka(),cache_bust:!0,module_graph_snapshot_root:o}),c=await Xe({...s}),d=[...s.failed.map(u=>({layer:u.layer,name:u.name,entry_path:u.entry_path,error:u.error})),...ah(c.failed)],l=Object.fromEntries(s.loaded.map(u=>[I(u.name),Ed(xn(c,{extensionName:u.name}))]));return{installed:ra(r,s,c),warnings:[...s.warnings,...c.warnings],activation_failures:d,extensions_disabled:s.disabled_by_flag,item_type_registrations:c.registrations.item_types,contribution_inventories:l}}finally{await jt.rm(o,{recursive:!0,force:!0}),a===void 0?delete process.env.PM_CLI_PACKAGE_ROOT:process.env.PM_CLI_PACKAGE_ROOT=a}}),Ds=async(e,t,n,r)=>{let i=n.filter(c=>!c.managed),a=[...i].sort((c,d)=>{let l=c.name.localeCompare(d.name);return l!==0?l:c.directory.localeCompare(d.directory)}),o=r,s=[];for(let c of a){let d=Pe.join(e,c.directory),l=await On(d),u=$(),m={kind:"local",input:c.name,location:d};o=yr(o,{name:l.manifest.name,directory:c.directory,scope:t,manifest_version:l.manifest.version,manifest_entry:l.manifest.entry,capabilities:[...l.manifest.capabilities],contributions:l.manifest.contributions,installed_at:u,updated_at:u,source:m}),s.push({name:l.manifest.name,directory:c.directory,version:l.manifest.version,entry:l.manifest.entry,source:m})}return s.length>0&&await Dn(e,o),{state:o,adopted_entries:s,unmanaged_candidates:a,already_managed_count:n.length-i.length}},US=(e,t)=>{let n=L(process.cwd(),t.path),r=cn(n,process.cwd()),i=e==="global"?Br(process.cwd()):n,a=e==="global"?r.global:r.project;return{pm_root:n,scope:e,settings_root:i,selected_root:a,roots:r}},ca=e=>{let t=[e.gh,e.github].filter(r=>typeof r=="string").map(r=>r.trim()).filter(Boolean),n=[...new Set(t)];if(n.length>1)throw new y('Options "--gh" and "--github" must match when both are provided.',g.USAGE);return n[0]},HS=e=>pS[e],zS=(e,t)=>{let n=t.vocabulary==="package"?"package":"extension",r=e==="install"?"source":"name",i=`${n} ${r}`,a=HS(e),o=`<${r}>`,s=`pm ${n} ${a} ${o}`;throw new y(`Action "${e}" requires ${i} input.`,g.USAGE,{code:"missing_lifecycle_target",required:`Provide a ${r} target for ${e}.`,examples:[`pm ${n} ${e} ${o}`,s,`pm ${n} --help`],recovery:{attempted_command:`pm ${n} ${e}`,suggested_retry:s,fallback_candidates:[{source:"lifecycle_action",command:s,reason:`flag-form ${e} command with required ${r} target`}]}})},da=(e,t,n={})=>{let r=e?.trim();if(r)return r;if(t==="init")throw new y('Action "init" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',g.USAGE);return zS(t,n)},GS=(e,t)=>{let n=new Set([...t.registrations.item_types.map(r=>({entry:r,count:r.types.length})),...t.registrations.item_fields.map(r=>({entry:r,count:r.fields.length}))].filter(({count:r})=>r>0).map(({entry:r})=>`${r.layer}:${I(r.name)}`));return e.loaded.filter(r=>(r.activation?.commands??[]).length>0).filter(r=>n.has(`${r.layer}:${I(r.name)}`)).map(r=>`extension_schema_narrow_activation:${r.layer}:${r.name}`).filter((r,i,a)=>a.indexOf(r)===i).sort((r,i)=>r.localeCompare(i))},WS=(e,t)=>{let n=[{triggered:t.strictExit===!0||t.failOnWarn===!0,allowed:e==="doctor",message:"--strict-exit and --fail-on-warn are only valid with --doctor."},{triggered:t.trace===!0,allowed:e==="doctor",message:"--trace is only valid with --doctor."},{triggered:t.watch===!0,allowed:e==="reload",message:"--watch is only valid with --reload."},{triggered:t.runtimeProbe===!0,allowed:e==="manage",message:"--runtime-probe is only valid with --manage."},{triggered:t.fixManagedState===!0,allowed:e==="manage"||e==="doctor",message:"--fix-managed-state is only valid with --manage or --doctor."},{triggered:t.isolated===!0||t.ignoreGlobal===!0,allowed:e==="doctor",message:"--isolated and --ignore-global are only valid with --doctor."},{triggered:t.capability!==void 0,allowed:e==="init",message:"--capability is only valid with --init/--scaffold."},{triggered:t.declarative===!0,allowed:e==="init",message:"--declarative is only valid with --init/--scaffold."},{triggered:t.dryRun===!0,allowed:e==="migrate"||e==="install",message:"--dry-run is only valid with --migrate or --install."}].find(r=>r.triggered&&!r.allowed);if(n)throw new y(n.message,g.USAGE)},qS=(e,t,n)=>{let r=String(e??"").trim().toLowerCase(),i=[n.init,n.scaffold].includes(!0);return({doctor:["doctor"],reload:["reload"],catalog:["catalog"],init:i?[]:["init","scaffold"]}[t]??[]).includes(r)?void 0:e},BS=e=>[e.action==="catalog",typeof e.options.fields=="string",String(e.options.fields).trim().length>0].every(Boolean)?{project:"project",global:"global",selected:e.scope,settings_root:"project"}:{project:e.resolvedRoots.roots.project,global:e.resolvedRoots.roots.global,selected:e.resolvedRoots.selected_root,settings_root:e.resolvedRoots.settings_root},VS=(e,t,n)=>{let r={ok:n,action:e.action,scope:e.scope,roots:BS(e),warnings:[...new Set(e.warnings)].sort((i,a)=>i.localeCompare(a)),details:t};return e.action==="doctor"&&Object.defineProperty(r,fS,{value:!0,enumerable:!1,configurable:!1}),r},Ps=async(e,t,n)=>{let r=TS(e,t);WS(r,t);let i=qS(e,r,t),a=$S(t),o=US(a,n),s={action:r,normalizedTarget:i,scope:a,resolvedRoots:o,warnings:[],options:t,global:n},c={...s,withResult:(d,l=!0)=>VS(s,d,l)};return await A0(c)},JS=(e,t)=>{let n=t.vocabulary??"extension",r=e.target_path.replace(/\\/g,"/"),i=Jd(r),a={package:`Install dependencies: cd ${i}, then run "npm install"`,extension:`Install type-check dependencies: cd ${i}, then run "npm install -D typescript @types/node @unbrained/pm-cli"`},o={package:`Validate the package: cd ${i}, then run "npm run typecheck" and "npm test"`,extension:`Type-check the source (optional): cd ${i}, then run "npx tsc --noEmit"`},s=[];return[n==="package",t.declarative===!0].every(Boolean)&&s.push("Ensure the target workspace can resolve @unbrained/pm-cli before installing this declarative package."),[a[n],...s,`Install the scaffold: ${Me(n==="package"?["install","--project",r]:["extension","--install","--project",r])}`,`Smoke-test command path: pm ${e.command_name}`,o[n],`Run diagnostics: ${n==="package"?"pm package doctor":"pm extension --doctor"} --project --detail summary`]},KS=async e=>{let{action:t,normalizedTarget:n,options:r,withResult:i}=e;if([ca(r),r.ref].filter(s=>typeof s=="string").map(s=>s.trim()).filter(Boolean).length>0)throw new y('Action "init" does not accept --gh/--github/--ref options.',g.USAGE);let a=da(n,t,r),o=await af(a,r.vocabulary??"extension",r.capability,r.declarative===!0);return i({scaffolded:o.created_directory||o.files.some(s=>s.status==="created"),extension:{name:o.extension_name,command:o.command_name},capability:o.capability,style:o.style,target_path:o.target_path,created_directory:o.created_directory,files:o.files,next_steps:JS(o,r)})},YS=async e=>{let{normalizedTarget:t,resolvedRoots:n,warnings:r,options:i,global:a,withResult:o}=e;if(t!==void 0)throw new y('Action "reload" does not accept a target argument.',g.USAGE);let s=await T(n.settings_root),c=Ka(),d=await Ye({pmRoot:n.settings_root,settings:s,cwd:process.cwd(),noExtensions:a.noExtensions,reload_token:c,cache_bust:!0});r.push(...d.warnings);let l=await Xe(d);r.push(...l.warnings);let u={reload:{token:c,cache_bust:!0,watch:i.watch===!0},loaded_count:d.loaded.length,failed_count:d.failed.length,activated_count:Math.max(0,d.loaded.length-l.failed.length),activation_failed_count:l.failed.length,loaded_extensions:d.loaded.map(m=>({name:m.name,layer:m.layer,version:m.version})),failed_extensions:d.failed.map(m=>({name:m.name,layer:m.layer,error:m.error})),activation_failures:l.failed.map(m=>({name:m.name,layer:m.layer,error:m.error}))};return i.watch===!0&&r.push("extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only"),o(u)},XS=async e=>{let{normalizedTarget:t,scope:n,options:r,global:i,withResult:a}=e;if(typeof t=="string"&&t.length>0&&t!=="catalog")throw new y('Action "catalog" does not accept a package target.',g.USAGE);return a(await Mp(n,i,r))},ZS=(e,t)=>({kind:"builtin",input:e,location:e,name:e,...t===null?{}:{package:t}}),QS=e=>({kind:"local",input:e.input,location:e.absolute_path}),e0=(e,t)=>({kind:"npm",input:e.input,location:t.resolved_subpath??".",package:t.npm_package,version:t.npm_version}),t0=(e,t)=>({kind:"github",input:e.input,location:t.resolved_subpath??e.subpath??".",repository:e.repository,owner:e.owner,repo:e.repo,ref:e.ref,subpath:t.resolved_subpath??e.subpath,commit:t.commit}),n0=(e,t,n,r)=>e?ZS(e,t):n.kind==="local"?QS(n):n.kind==="npm"?e0(n,r):t0(n,r),r0=(e,t,n,r)=>e?e.manifest_version!==t?{installed_at:e.installed_at,updated_at:r}:Tp(e.source,n)?{installed_at:e.installed_at,updated_at:e.updated_at}:{installed_at:e.installed_at,updated_at:r}:{installed_at:r,updated_at:r},i0=async(e,t)=>{let{scope:n,resolvedRoots:r,warnings:i}=e,{validated:a,destinationDirectoryName:o}=t,s=await T(r.settings_root),c=await ye(r.selected_root);i.push(...c.warnings);let d=Pe.join(r.selected_root,o),l=await O(d),u=await ta(a.directory,d);await jt.mkdir(r.selected_root,{recursive:!0});let m=await jt.mkdtemp(Pe.join(r.selected_root,".pm-extension-install-backup-")),f=Pe.join(m,"destination");try{let p=await qf(r.selected_root,r.settings_root,d,l,f),h=n0(t.bundledAliasName,t.bundledPackageName,t.installSource,t.resolvedSource),_=c.state.entries.find(k=>I(k.name)===I(a.manifest.name)),w=r0(_,a.manifest.version,h,$()),v=yr(c.state,{name:a.manifest.name,directory:o,scope:n,manifest_version:a.manifest.version,manifest_entry:a.manifest.entry,capabilities:[...a.manifest.capabilities],contributions:a.manifest.contributions,...w,source:h}),E=th(s,a.manifest.name);try{u||await Rf(a.directory,d),await xf(d),await Af(d),await Dn(r.selected_root,v),E&&await _i(r.settings_root,s,"settings:write")}catch(k){try{await Bf(p)}catch(x){throw new AggregateError([k,x],`Extension install failed: ${String(k)}; rollback failed: ${String(x)}`,{cause:x})}throw k}return{settings:s,managedState:v,sourceRecord:h,destinationDirectory:d,destinationExists:l,installInPlace:u,activationChanged:E}}finally{await jt.rm(m,{recursive:!0,force:!0}).catch(()=>{})}},a0=async(e,t,n)=>{let r=n.filter(i=>I(i.name)===I(t)).flatMap(i=>i.types.map(a=>({name:a.name,folder:a.folder})));return e.scope==="project"&&r.length>0&&await fr(e.resolvedRoots.pm_root,r,e.warnings,"install:type-folder"),r},o0=(e,t,n,r,i)=>{let a=oh(t,n.activation_failures,e.scope),o=FS(t,e.scope,n.installed,a),s=[!n.extensions_disabled,o==="ok"].every(Boolean);s||e.warnings.push(`extension_install_activation_failed:${e.scope}:${t}:${o}`);let c={true:{status:"ok",blocking_failure_count:0},false:{status:"degraded",blocking_failure_count:1}};return{activated:s,status:o,failure:a,verification:{status:c[String(s)].status,target_pm_root:e.resolvedRoots.pm_root,activation_status:o,activated:s,registered_commands:r.command_paths,registered_actions:r.action_paths,registered_item_types:i,module_graph_verification:"fresh_in_topology_snapshot",health:c[String(s)]}}},s0=async(e,t)=>{let{scope:n,resolvedRoots:r,warnings:i,global:a,withResult:o}=e,{validated:s,destinationDirectoryName:c}=t,d=await i0(e,t),l=await it(r.selected_root,n,d.settings,d.managedState);i.push(...l.warnings);let u=await sh(r.pm_root,Pe.dirname(r.selected_root),d.settings,l.extensions,a);i.push(...u.warnings);let m=await a0(e,s.manifest.name,u.item_type_registrations),f=Tf(s.manifest.name,u.installed),p=o0(e,s.manifest.name,u,f,m),h=u.contribution_inventories[I(s.manifest.name)];return h&&(d.managedState=await $p(r.selected_root,d.managedState,s.manifest.name,h)),o({extension:{name:s.manifest.name,version:s.manifest.version,entry:s.manifest.entry,capabilities:s.manifest.capabilities,directory:c},source:d.sourceRecord,source_resolution:t.sourceResolution,...t.installPlan?{install_plan:t.installPlan}:{},destination_path:d.destinationDirectory,overwritten:[d.destinationExists,!d.installInPlace].every(Boolean),installed_in_place:d.installInPlace,activated:p.activated,settings_changed:d.activationChanged,runtime_activation_status:p.status,command_paths:f.command_paths,action_paths:f.action_paths,contributions:h,command_discovery:MS(s.manifest.name,d.sourceRecord,f,p.failure),verification:p.verification,activation_diagnostics:{failed_count:u.activation_failures.length,failed:u.activation_failures,installed_extension_failed:p.failure??null}},p.activated)},c0=async e=>{let{options:t,global:n,warnings:r,withResult:i}=e;if(typeof t.ref=="string"&&t.ref.trim().length>0)throw new y('Action "install all" does not accept --ref.',g.USAGE);let a=[],o=new Map;for(let s of await Xi()){let c=await wr(s),d=Pe.resolve(c),l=o.get(d);l===void 0&&(l=await Ps(s,{...t,install:!0},n),o.set(d,l)),a.push({alias:s,result:l})}return r.push(...a.flatMap(s=>s.result.warnings)),i(Uf(a,t.dryRun===!0),a.every(s=>s.result.ok))},d0=async(e,t,n)=>{let{resolvedRoots:r}=e,{bundledAliasName:i,bundledPackageName:a,installSource:o,sourceResolution:s}=await Wf(t,n,e.options.ref,(await ye(r.selected_root)).state.entries);if(s.ambiguous){let d=s.candidates.find(l=>l.kind==="npm");e.warnings.push(`extension_install_source_ambiguous:${t}:builtin:${i}:npm:${d.package}`)}let c=await Bp(o);try{let d=await On(c.directory,{source_kind:o.kind,source_input:o.input,source_root:c.source_root}),l=Ki(d.manifest.name),u=e.options.dryRun===!0||o.kind==="local"&&i===null?await Hf(c,Pe.join(r.selected_root,l),e.scope,e.options.copyPlan):void 0;return e.options.dryRun===!0?e.withResult({dry_run:!0,installed:!1,activated:!1,extension:{name:d.manifest.name,version:d.manifest.version},source_resolution:s,install_plan:u}):await xs(r.settings_root,l,()=>s0(e,{validated:d,destinationDirectoryName:l,bundledAliasName:i,bundledPackageName:a,sourceResolution:s,installSource:o,resolvedSource:c,installPlan:u}))}finally{c.cleanup&&await c.cleanup()}},l0=async e=>{let t=ca(e.options),n=t??da(e.normalizedTarget,e.action,e.options);return[t===void 0,Dp(n)].every(Boolean)?c0(e):d0(e,n,t)},u0=async e=>{let{normalizedTarget:t,scope:n,resolvedRoots:r,warnings:i,options:a,withResult:o}=e;if(t!==void 0)throw new y('Action "adopt-all" does not accept a target argument.',g.USAGE);if(ca(a)!==void 0||typeof a.ref=="string"&&a.ref.trim().length>0)throw new y('Action "adopt-all" does not accept --gh/--github/--ref options.',g.USAGE);let s=await T(r.settings_root),c=await ye(r.selected_root);i.push(...c.warnings);let d=await it(r.selected_root,n,s,c.state);i.push(...d.warnings);let l=await Ds(r.selected_root,n,d.extensions,c.state),u=await it(r.selected_root,n,s,l.state);i.push(...u.warnings);let m=ia(n,i,u.extensions,a);i.push(...m.warnings);let f=new Map(u.extensions.map(_=>[`${I(_.name)}:${I(_.directory)}`,_])),p=new Map(u.extensions.map(_=>[I(_.directory),_])),h=l.adopted_entries.map(_=>{let w=I(_.directory),v=f.get(`${I(_.name)}:${w}`)??p.get(w);return{..._,...ch(v)}});return o({adopted_all:h.length>0,adopted_count:h.length,already_managed_count:l.already_managed_count,extensions:h,triage:m,warning_codes:m.warning_codes,update_health_partial:m.update_health_partial,update_health_coverage:m.update_health_coverage})},ch=e=>({update_check_status:e?.update_check_status??null,update_check_reason:e?.update_check_reason??null}),m0=(e,t,n,r)=>{if(e===void 0)return{kind:"local",input:t,location:n};let i=vr(e,{forceGithub:!0,ref:r});if(i.kind!=="github")throw new y(`Invalid GitHub shorthand "${e}".`,g.USAGE);return{kind:"github",input:i.input,location:i.subpath??".",repository:i.repository,owner:i.owner,repo:i.repo,ref:i.ref,subpath:i.subpath}},p0=async e=>{let{action:t,normalizedTarget:n,scope:r,resolvedRoots:i,warnings:a,options:o,withResult:s}=e,c=da(n,t,o),d=ca(o),l=await T(i.settings_root),u=await ye(i.selected_root);a.push(...u.warnings);let m=await it(i.selected_root,r,l,u.state);a.push(...m.warnings);let f=await Qf(m.extensions,c);if(!f)throw new y(`Installed extension "${c}" was not found in ${r} scope.`,g.NOT_FOUND);if(f.managed)return s({adopted:!1,already_managed:!0,extension:{name:f.name,directory:f.directory}});let p=Pe.join(i.selected_root,f.directory),h=await On(p),_=$(),w=m0(d,c,p,o.ref),v=yr(u.state,{name:h.manifest.name,directory:f.directory,scope:r,manifest_version:h.manifest.version,manifest_entry:h.manifest.entry,capabilities:[...h.manifest.capabilities],contributions:h.manifest.contributions,installed_at:_,updated_at:_,source:w});await Dn(i.selected_root,v);let E=await it(i.selected_root,r,l,v);a.push(...E.warnings);let k=E.extensions.find(x=>I(x.name)===I(h.manifest.name))??E.extensions.find(x=>I(x.directory)===I(f.directory));return s({adopted:!0,extension:{name:h.manifest.name,directory:f.directory,version:h.manifest.version,entry:h.manifest.entry},source:w,...ch(k)})},dh=async e=>{let{action:t,normalizedTarget:n,scope:r,resolvedRoots:i,warnings:a,options:o}=e,s=da(n,t,o),c=await T(i.settings_root),d=await ye(i.selected_root);a.push(...d.warnings);let l=await it(i.selected_root,r,c,d.state);a.push(...l.warnings);let u=await Qf(l.extensions,s);if(!u)throw new y(`Installed extension "${s}" was not found in ${r} scope.`,g.NOT_FOUND);return{settings:c,managedStateRead:d,candidate:u}},f0=async e=>{let{resolvedRoots:t,withResult:n}=e,{settings:r,managedStateRead:i,candidate:a}=await dh(e),o=Pe.join(t.selected_root,a.directory);await jt.rm(o,{recursive:!0,force:!0});let s={...i.state,updated_at:$(),entries:i.state.entries.filter(d=>I(d.name)!==I(a.name)&&I(d.directory)!==I(a.directory))};await Dn(t.selected_root,s);let c=xS(r,a.name);return c&&await _i(t.settings_root,r,"settings:write"),n({removed:!0,extension:{name:a.name,directory:a.directory},destination_path:o,settings_changed:c})},Vf=async e=>{let{action:t,resolvedRoots:n,warnings:r,global:i,withResult:a}=e,{settings:o,candidate:s}=await dh(e),c=t==="activate"?th(o,s.name):SS(o,s.name);c&&await _i(n.settings_root,o,"settings:write");let d=t==="activate"?await sh(n.pm_root,Pe.dirname(n.selected_root),o,[s],i).then(l=>(r.push(...l.warnings),oh(s.name,l.activation_failures,e.scope))):void 0;return d&&r.push(`extension_activate_failed:${e.scope}:${s.name}`),a({extension:{name:s.name,directory:s.directory},active:t==="activate"&&d===void 0,runtime_active:t==="activate"&&d===void 0,activation_failure:d??null,settings_changed:c,settings:{enabled:[...o.extensions.enabled],disabled:[...o.extensions.disabled]}},d===void 0)},h0=(e,t,n,r,i,a)=>{let o=r==="package"?"package":"extension",s={package:"doctor",extension:"--doctor"}[o],c=i?.adopted_entries.length??0,d=[[a!==null,a??""],[t>0,`Run pm ${o} explore --project and pm ${o} explore --global to inspect load failures.`],[n>0,`Review activation failures in pm ${o} ${s} --detail deep output.`],[c>0,`Managed-state fix adopted ${c} extension(s).`]];return[...new Set([...e,...d.filter(([l])=>l).map(([,l])=>l)].map(l=>l.trim()).filter(l=>l.length>0))]},Os=e=>e.loaded.some(t=>t.layer==="global")||e.failed.some(t=>t.layer==="global")||e.warnings.some(t=>t.includes(":global:")),_0=(e,t,n,r)=>{if(e!=="project"||t||!Os(r))return null;let i=n==="package"?"package":"extension";return`Global ${i} registrations are included in project diagnostics. For hermetic ${i} smoke tests, rerun pm ${i} doctor --project --isolated --detail deep --trace, or set PM_GLOBAL_PATH to a temporary directory for the whole test process.`},g0=(e,t,n)=>{if(String(e??"").trim().length>0)throw new y('Action "doctor" does not accept a target argument.',g.USAGE);let r=[n.isolated,n.ignoreGlobal].includes(!0);if([r,t==="global"].every(Boolean))throw new y("--isolated and --ignore-global are only valid with project-scope doctor diagnostics.",g.USAGE);let i=_f(n.detail),a=n.trace===!0;if([a,i!=="deep"].every(Boolean))throw new y("--trace requires --detail deep with --doctor.",g.USAGE);return{isolated:r,detailMode:i,includeTrace:a}},y0=async(e,t,n)=>{if(e.options.fixManagedState!==!0)return{state:n,fix:null};let r=await Ds(e.resolvedRoots.selected_root,e.scope,t,n);return{state:r.state,fix:r}},w0=(e,t,n,r)=>{let i=n==="package"?"package":"extension";if(e!=="project")return{isolated:t,global_extensions_included:!1,global_diagnostics_present:Os(r),rerun_command:null,pm_global_path_recipe:null};let a=`pm ${i} doctor --project --isolated --detail deep --trace`;return{isolated:t,global_extensions_included:!t,global_diagnostics_present:Os(r),rerun_command:t?null:a,pm_global_path_recipe:`PM_GLOBAL_PATH=$(mktemp -d) pm ${i} doctor --project --detail deep --trace`}},v0=async e=>{let{normalizedTarget:t,scope:n,resolvedRoots:r,warnings:i,options:a,global:o,withResult:s}=e,{isolated:c,detailMode:d,includeTrace:l}=g0(t,n,a),u=await T(r.settings_root),m=await ye(r.selected_root);i.push(...m.warnings);let f=await it(r.selected_root,n,u,m.state);i.push(...f.warnings);let{state:p,fix:h}=await y0(e,f.extensions,m.state),_=await it(r.selected_root,n,u,p);i.push(..._.warnings);let w=await Ye({pmRoot:r.pm_root,settings:u,cwd:process.cwd(),noExtensions:o.noExtensions===!0,ignoreGlobalExtensions:c}),v=await Xe({...w,loaded:w.loaded}),E=await Gf(r.pm_root);i.push(...E.warnings,...w.warnings),i.push(...pf(w.failed)),i.push(...v.warnings),i.push(...ff(v.failed)),i.push(...hf(w,v)),i.push(...$f(v,w)),i.push(...GS(w,v)),i.push(...Of(v));let k=ra(_.extensions,w,v),x=yf(n,k,w.loaded.map(z=>({layer:z.layer,name:z.name})),w.failed.map(z=>({name:z.name})),w.disabled_by_flag);i.push(...x.warnings);let D=k.filter(z=>z.update_check_status==="failed").map(z=>`extension_update_check_failed:${z.name}`);i.push(...D);let S=ia(n,i,k,a);i.push(...S.warnings);let b=[...S.warnings],N={mode:w.policy.mode,trust_mode:w.policy.trust_mode,require_provenance:w.policy.require_provenance,default_sandbox_profile:w.policy.default_sandbox_profile,sandbox_enforcement:"advisory: sandbox_profile/permissions are declaration-based load gates, not runtime isolation (ADR pm-6ef3)",trusted_extensions_count:w.policy.trusted_extensions.length,allowed_extensions_count:w.policy.allowed_extensions.length,blocked_extensions_count:w.policy.blocked_extensions.length,allowed_capabilities_count:w.policy.allowed_capabilities.length,blocked_capabilities_count:w.policy.blocked_capabilities.length,allowed_surfaces_count:w.policy.allowed_surfaces.length,blocked_surfaces_count:w.policy.blocked_surfaces.length,allowed_commands_count:w.policy.allowed_commands.length,blocked_commands_count:w.policy.blocked_commands.length,allowed_actions_count:w.policy.allowed_actions.length,blocked_actions_count:w.policy.blocked_actions.length,allowed_services_count:w.policy.allowed_services.length,blocked_services_count:w.policy.blocked_services.length,extension_override_count:w.policy.extension_overrides.length},A=Er(b),R=Sr(),Q=S.warning_codes,Ae=_0(n,c,a.vocabulary,w),we=h0(S.remediation,w.failed.length,v.failed.length,a.vocabulary,h,Ae),_e=w0(n,c,a.vocabulary,w),ze={status:S.status,scope:n,warning_count:S.warning_count,warning_codes:Q,total_extensions:k.length,managed_total:k.filter(z=>z.managed).length,enabled_total:k.filter(z=>z.enabled).length,active_total:k.filter(z=>z.active).length,unmanaged_loaded_extension_count:S.unmanaged_loaded_extension_count,unmanaged_action_required_extension_count:S.unmanaged_action_required_extension_count,unmanaged_expected_extension_count:S.unmanaged_expected_extension_count,runtime_active_total:k.filter(z=>z.runtime_active===!0).length,activation_status_totals:{ok:k.filter(z=>z.activation_status==="ok").length,failed:k.filter(z=>z.activation_status==="failed").length,not_loaded:k.filter(z=>z.activation_status==="not_loaded").length,unknown:k.filter(z=>z.activation_status==="unknown").length},unknown_capability_count:A.length,capability_contract_version:R.version,update_available_total:S.update_available_total,update_check_status_totals:S.update_check_status_totals,update_health_coverage:S.update_health_coverage,update_health_partial:S.update_health_partial,update_check_failed_total:k.filter(z=>z.update_check_status==="failed").length,load_failure_count:w.failed.length,activation_failure_count:v.failed.length,load_failures:ks(w.failed),activation_failures:ks(v.failed),blocking_failure_count:w.failed.length+v.failed.length,has_blocking_failures:w.failed.length+v.failed.length>0,consistency_warning_count:x.warnings.length,trace_enabled:l,isolation:_e,policy:N,remediation:we},Ur=h?{requested:!0,applied:h.adopted_entries.length>0,adopted_count:h.adopted_entries.length,already_managed_count:h.already_managed_count,adopted_extensions:h.adopted_entries.map(z=>z.name)}:{requested:!1,applied:!1,adopted_count:0,already_managed_count:_.extensions.filter(z=>z.managed).length,adopted_extensions:[]},Bn={mode:d,summary:ze,triage:S,trace_enabled:l,capability_contract:R,capability_guidance:A,managed_state_fix:Ur,author_manifest:E,isolation:_e,policy:w.policy};if(d==="deep"){let z=l?v.failed:v.failed.map(B=>{let{trace:Hr,...zr}=B;return zr});Bn.deep={warnings:b,warning_codes:Q,capability_contract:R,capability_guidance:A,trace_enabled:l,managed_state:{path:m.path,count:p.entries.length,entries:p.entries},installed_extensions:k,load:{roots:w.roots,policy:w.policy,warnings:w.warnings,failed:w.failed,loaded:w.loaded.map(B=>({layer:B.layer,directory:B.directory,name:B.name,version:B.version,entry:B.entry,priority:B.priority}))},activation:{failed:z,warnings:v.warnings,hook_counts:v.hook_counts,registration_counts:v.registration_counts,parser_override_count:v.parser_override_count,preflight_override_count:v.preflight_override_count,service_override_count:v.service_override_count,renderer_override_count:v.renderer_override_count},consistency:x.summary},l&&(Bn.deep.trace={activation_failures:v.failed.filter(B=>B.trace!==void 0).map(B=>({layer:B.layer,name:B.name,entry_path:B.entry_path,error:B.error,method:B.trace.method,command:B.trace.command,capability:B.trace.capability,missing_capability:B.trace.missing_capability,registration_index:B.trace.registration_index,expected_schema:B.trace.expected_schema,hint:B.trace.hint,received:B.trace.received}))})}return s(Bn)},b0=async e=>{let{normalizedTarget:t,scope:n,resolvedRoots:r,warnings:i,options:a,global:o,withResult:s}=e,c=await T(r.settings_root),d=await Ye({pmRoot:r.pm_root,settings:c,cwd:process.cwd(),noExtensions:o.noExtensions===!0}),l=await Xe(d);i.push(...d.warnings),i.push(...l.warnings);let u=sf(t,d,l);if(t!==void 0&&u.extensions.length===0){let m=a.vocabulary==="package"?"package":"extension",f=[...new Set(d.loaded.map(h=>a.vocabulary==="package"&&typeof h.source_package=="string"&&h.source_package.trim().length>0?h.source_package.trim():h.name))].sort((h,_)=>h.localeCompare(_)),p=f.length>0?` Loaded ${m} names: ${f.join(", ")}.`:"";throw new y(`No loaded ${m} named "${t}" was found in ${n} scope.${p} Run pm ${m} explore to list discovered ${m}s.`,g.NOT_FOUND)}return s({target:u.target,total:u.total,extensions:u.extensions,union:u.union,command_ownership:u.command_ownership})},k0=async(e,t,n)=>{let r=n,i=null;return[e.action==="manage",e.options.fixManagedState===!0].every(Boolean)&&(i=await Ds(e.resolvedRoots.selected_root,e.scope,t,n),r=i.state),e.action==="manage"&&(r=await Lf(r,e.options.offline)),{state:r,fix:i}},E0=async(e,t,n)=>{let r=await Ye({pmRoot:e.resolvedRoots.pm_root,settings:t,cwd:process.cwd(),noExtensions:e.global.noExtensions===!0}),i=await Xe({...r,loaded:r.loaded});return e.warnings.push(...r.warnings,...i.warnings),{installed:ra(n,r,i),failures:ah(i.failed),summary:{requested:!0,executed:!0,reason:e.action==="explore"?"explore_defaults_to_runtime_probe":e.options.runtimeProbe===!0?"runtime_probe_requested":"manage_defaults_to_runtime_probe",load_failure_count:r.failed.length,activation_failure_count:i.failed.length,warning_count:[...new Set([...r.warnings,...i.warnings])].length,policy:r.policy}}},S0=(e,t)=>e?{requested:!0,applied:e.adopted_entries.length>0,adopted_count:e.adopted_entries.length,adopted_extensions:e.adopted_entries.map(n=>n.name),already_managed_count:e.already_managed_count}:{requested:!1,applied:!1,adopted_count:0,adopted_extensions:[],already_managed_count:t.filter(n=>n.managed).length},Jf=async e=>{let{action:t,scope:n,resolvedRoots:r,warnings:i,options:a,withResult:o}=e,s=await T(r.settings_root),c=ES(s.extensions.policy),d=await ye(r.selected_root);i.push(...d.warnings);let l=await it(r.selected_root,n,s,d.state);i.push(...l.warnings);let{state:u,fix:m}=await k0(e,l.extensions,d.state),f=await it(r.selected_root,n,s,u);if(i.push(...f.warnings),t==="manage"&&a.offline===!0)for(let v of f.extensions)v.managed&&["npm","github"].includes(v.source.kind)&&(v.update_check_reason="offline_requested");if(t==="manage"){let v=f.extensions.filter(E=>E.update_check_status==="failed").map(E=>`extension_update_check_failed:${E.name}`);i.push(...v)}let p=await E0(e,s,f.extensions),h=p.installed,_=ia(n,i,h,a);i.push(..._.warnings);let w={total:h.length,managed_total:h.filter(v=>v.managed).length,enabled_total:h.filter(v=>v.enabled).length,active_total:h.filter(v=>v.active).length,extensions:h,triage:_,policy:c};return p.failures!==void 0&&(w.activation_diagnostics={failed_count:p.failures.length,failed:p.failures}),t==="explore"&&(w.runtime_probe=p.summary),t==="manage"&&(w.runtime_probe=p.summary,w.managed_state_fix=S0(m,h)),o(w)},Kf={init:KS,install:l0,uninstall:f0,explore:Jf,manage:Jf,describe:b0,reload:YS,doctor:v0,catalog:XS,adopt:p0,"adopt-all":u0,activate:Vf,deactivate:Vf,migrate:Ff},x0=e=>[e.action==="uninstall",e.action==="adopt",e.action==="adopt-all",e.action==="activate",e.action==="deactivate",e.action==="migrate",[["doctor","manage"].includes(e.action),e.options.fixManagedState===!0].every(Boolean)].some(Boolean),A0=e=>x0(e)?xs(e.resolvedRoots.settings_root,`${e.action}-state`,()=>Kf[e.action](e)):Kf[e.action](e);import{execFile as I0}from"node:child_process";import{realpath as R0}from"node:fs/promises";import lh from"node:path";import{promisify as C0}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]="9af87d55-dbe2-561b-9f3f-6f12c0416147")}catch{}})();var T0=C0(I0),$0=32*1024*1024,O0=1e4,D0=["search/eval-queries.json"];function Ns(e){return e.replaceAll("\\","/").replace(/\/+$/,"")}function P0(e){return`'${e.replaceAll("'","'\\''")}'`}async function N0(e,t=R0){return t(e).catch(()=>lh.resolve(e))}async function la(e){let t=await nt(e);if(t===null)return{git_workspace_root:null,tracker_relative_root:null,tracked_paths:[],tracked_path_count:0,remediation_command:null};let n=await N0(e),r=Ns(lh.relative(t,n));if(r.length===0)return{git_workspace_root:t,tracker_relative_root:null,tracked_paths:[],tracked_path_count:0,remediation_command:null};let i=Go.map(a=>`${r}/${Ns(a)}`);try{let{stdout:a}=await T0("git",["ls-files","-z","--",...i.map(d=>`:(literal)${d}`)],{cwd:t,encoding:"utf8",maxBuffer:$0,windowsHide:!0,timeout:O0}),o=new Set(D0.map(d=>`${r}/${d}`)),s=[...new Set(a.split("\0").filter(d=>d.length>0&&!o.has(Ns(d))))].sort((d,l)=>d.localeCompare(l)),c=i.filter(d=>s.some(l=>l===d||l.startsWith(`${d}/`)));return{git_workspace_root:t,tracker_relative_root:r,tracked_paths:s,tracked_path_count:s.length,remediation_command:s.length===0?null:`git rm --cached -r -- ${c.map(d=>P0(`:(literal)${d}`)).join(" ")}`}}catch{return{git_workspace_root:t,tracker_relative_root:r,tracked_paths:[],tracked_path_count:0,remediation_command:null}}}(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]="2e510b32-f27f-5ba5-94b2-8268343359dc")}catch{}})();async function uh(e,t,n,r){if(t===null)return{audit:null,count:0,warnings:[]};let i=await In(e,Dt(n));if(i.status==="ok")return{audit:i,count:0,warnings:[]};let a=Math.max(1,i.missing_patterns.length+i.stale_patterns.length);return{audit:i,count:a,warnings:r?[`merge_fence_${i.status==="not_installed"?"missing":"drift"}:${a}`]:[]}}function mh(e){let t=[];return e.invalidEvidenceCount>0&&t.push(`merge_receipt_evidence_invalid:${e.invalidEvidenceCount}`),e.missingHistoryReferenceCount>0&&t.push(`merge_receipt_history_reference_missing:${e.missingHistoryReferenceCount}`),t}import{execFile as kx}from"node:child_process";import{randomUUID as Ex}from"node:crypto";import{readdir as Sx,stat as xx}from"node:fs/promises";import he from"node:path";import{promisify as Ax}from"node:util";import L0 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]="c7589997-de92-502d-8e61-ac61b67fe6cd")}catch{}})();var M0=Object.freeze({pm_item_scalar_missing:!0});function Pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1&&e.pm_item_scalar_missing===!0}function Y(e){return e===void 0?M0:e}function Ft(e){return Ie(C(e===void 0?{pm_item_scalar_presence:"missing"}:{pm_item_scalar_presence:"present",value:e}))}function Ls(e,t){let n=je(e);if(n)throw new y(`History merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,g.GENERIC_FAILURE);let r=[];for(let[i,a]of e.split(/\r?\n/).entries()){let o=a.trim();if(o)try{let s=JSON.parse(o);if(typeof s!="object"||s===null||Array.isArray(s))throw new TypeError("history entry must be an object");r.push(s)}catch{throw new y(`History merge input (${t}) contains invalid JSON at line ${i+1}.`,g.GENERIC_FAILURE)}}return r}function Be(e){return C({ts:e.ts,author:e.author,op:e.op,patch:e.patch,message:e.message??null})}function j0(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&Be(e[r])===Be(t[r]);)r+=1;return r}function F0(e,t,n,r){let i=[...e,...n],a=new Map(i.map((u,m)=>[u,m])),o=new Map(i.map((u,m)=>[Be(u),m])),s=i.map(()=>new Set);for(let u of[e,t]){let m=u.map(f=>a.get(f)??o.get(Be(f)));for(let f=1;f<m.length;f+=1)m[f-1]!==m[f]&&s[m[f-1]].add(m[f])}let c=i.map(()=>0);for(let u of s)for(let m of u)c[m]+=1;let d=i.map((u,m)=>m).filter(u=>c[u]===0),l=[];for(;d.length>0;){d.sort((m,f)=>{let p=i[m],h=i[f],_=qt(p.ts,h.ts),w=Be(p),v=Be(h);return _||Number(r.has(v))-Number(r.has(w))});let u=d.shift();l.push(i[u]);for(let m of s[u])c[m]-=1,c[m]===0&&d.push(m)}if(l.length!==i.length)throw new y("History union cannot preserve contradictory original branch event orders; leave the file unresolved for manual recovery.",g.GENERIC_FAILURE);return l}function ph(e){return{entries:e,positions:new Map(e.map((t,n)=>[Be(t),n])),index:-1,document:di()}}function zs(e,t){let n=t??e.index;for(;e.index<n;){let r=so(e.document,e.entries[e.index+1].patch);if(!r.ok)throw new y("History union cannot preserve a patch that does not apply in its original branch.",g.GENERIC_FAILURE);e.document=r.document,e.index+=1}return e.document}function fh(e,t){if(t!==void 0&&t>e.index+1)throw new y("History union cannot attribute multiple original branch events to one semantic identity; preserve the source histories for manual recovery.",g.GENERIC_FAILURE);return zs(e,t)}function U0(e,t,n){if(n===0)return;let r=ph(e),i=ph(t),a=zs(r,n-1);zs(i,n-1);let o=0,s=new Set([..._h,...gh]);return(c,d)=>{if(o++<n)return c.patch;let l=Be(c),u=fh(r,r.positions.get(l)),m=fh(i,i.positions.get(l)),f=ui(c.patch).filter(v=>{let[E,k]=v.path.slice(1).split("/");return E!=="metadata"||!s.has(k)}),p=so(d,f);if(!p.ok)throw new y("History union cannot rebase a scalar patch onto the merged replay position; leave the file unresolved for manual recovery.",g.GENERIC_FAILURE);let h=vh(a.metadata,u.metadata,m.metadata,"ours","latest_document_update",String(u.metadata.updated_at),String(m.metadata.updated_at)),_=p.document;for(let v of s)Object.hasOwn(h.merged,v)?_.metadata[v]=h.merged[v]:delete _.metadata[v];let w=li({metadata:_.metadata,body:_.body});return L0.compare(d,w)}}function q1(e,t,n){let r=Ls(e,"base"),i=Ls(t,"ours"),a=Ls(n,"theirs"),o=[r,i,a].map(f=>f.filter(p=>p.op==="create"));if(o[0].length===0&&o.slice(1).every(f=>f.length>0)||o.some(f=>f.length>1)||new Set(o.flat().map(Be)).size>1)throw new y("Duplicate item identity: history contains independent or unproven create events. Preserve both branches and assign distinct item ids before merging.",g.CONFLICT,{code:"item_identity_conflict"});let s=j0(i,a);if(s===i.length&&s===a.length)return{merged:Bt(i),strategy:"identical",common_entries:s,entries_from_ours:0,entries_from_theirs:0,entries_total:i.length,reanchored:!1};if(s===a.length)return{merged:Bt(i),strategy:"fast_forward_ours",common_entries:s,entries_from_ours:i.length-s,entries_from_theirs:0,entries_total:i.length,reanchored:!1};if(s===i.length)return{merged:Bt(a),strategy:"fast_forward_theirs",common_entries:s,entries_from_ours:0,entries_from_theirs:a.length-s,entries_total:a.length,reanchored:!1};let c=i.slice(s),d=new Set(c.map(Be)),l=a.slice(s).filter(f=>!d.has(Be(f))),u=F0(c,a.slice(s),l,d),m=mi([...i.slice(0,s),...u],void 0,{continuousHashSurface:!0,projectPatch:U0(i,a,s)});if(m.skippedOps>0)throw new y(`History union cannot preserve ${m.skippedOps} patch operation(s) after deterministic suffix ordering; leave the file unresolved for manual recovery.`,g.GENERIC_FAILURE);return{merged:Bt(m.entries),strategy:"union_reanchor",common_entries:s,entries_from_ours:c.length,entries_from_theirs:l.length,entries_total:m.entries.length,reanchored:!0}}function Ms(e,t){let n=je(e);if(n)throw new y(`Relationship merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,g.GENERIC_FAILURE);let r=[];for(let[i,a]of e.split(/\r?\n/).entries()){let o=a.trim();if(!o)continue;let s;try{s=JSON.parse(o)}catch{throw new y(`Relationship merge input (${t}) contains invalid JSON at line ${i+1}.`,g.GENERIC_FAILURE)}if(typeof s!="object"||s===null||Array.isArray(s)||typeof s.eventId!="string"||typeof s.sequence!="number")throw new y(`Relationship merge input (${t}) line ${i+1} is not a relationship event (eventId + sequence required).`,g.GENERIC_FAILURE);r.push(s)}return r}function ua(e){return e.length===0?"":`${e.map(t=>JSON.stringify(t)).join(`
|
|
57
|
+
`,op:"extension_migrations_apply",author:e.author,lockTtlSeconds:l.locks.ttl_seconds,lockWaitMs:l.locks.wait_ms})}let o=r.filter(l=>l.outcome==="pending").length,s=r.filter(l=>l.outcome==="applied").length,c=r.filter(l=>l.outcome==="skipped").length,d=r.filter(l=>l.outcome==="failed").length;return{ok:d===0,dry_run:e.dryRun===!0,state_path:Rs(e.pmRoot),total:r.length,pending_count:o,applied_count:s,skipped_count:c,failed_count:d,migrations:r}}async function Ff(e){let t=await T(e.resolvedRoots.settings_root),n=await Ye({pmRoot:e.resolvedRoots.pm_root,settings:t,cwd:process.cwd(),noExtensions:e.global.noExtensions===!0}),r=await Xe(n);e.warnings.push(...n.warnings,...r.warnings);let i=await eS({pmRoot:e.resolvedRoots.pm_root,migrations:r.registrations.migrations,author:typeof e.global.author=="string"&&e.global.author.trim().length>0?e.global.author.trim():"pm-extension-migration",dryRun:e.options.dryRun===!0,...e.scope==="global"?{scope:"global"}:{}});return e.withResult({migration:i,load_failure_count:n.failed.length,activation_failure_count:r.failed.length},i.ok)}(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]="fcf7df06-e3b8-5476-a76a-cd391839c13d")}catch{}})();function Uf(e,t){let n=e.filter(r=>r.result.ok).length;return{installed_all:!t&&n===e.length,installed_count:t?0:n,...t?{dry_run:!0,planned_count:n}:{},failed_count:e.length-n,packages:e.map(({alias:r,result:i})=>{let a=i.details;return{alias:r,ok:i.ok,extension:a.extension,source:a.source,source_resolution:a.source_resolution,install_plan:a.install_plan,dry_run:a.dry_run,destination_path:a.destination_path,activated:a.activated,settings_changed:a.settings_changed,command_paths:a.command_paths,action_paths:a.action_paths,command_discovery:a.command_discovery,verification:a.verification,runtime_activation_status:a.runtime_activation_status,activation_diagnostics:a.activation_diagnostics,warnings:i.warnings}})}}import sa from"node:fs/promises";import oa 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]="18bf1015-c2c8-5530-a3ce-1531a8a1d0e2")}catch{}})();var tS=new Set(["node_modules",".git","dist","build","coverage"]);async function Hf(e,t,n,r){let i=e.source.kind==="local"?await sa.stat(e.source.absolute_path):void 0,a=e.source.kind==="local"?i.isDirectory()?"directory":"archive":e.source.kind,o=await nS(e.directory,t,r),s={source_mode:a,...a==="archive"?{archive_bytes:i.size}:{},copy:o},c=e.source_root??e.directory;if(a==="directory"&&(!o.complete||o.development_entries>0||o.bytes>=16*1024*1024)&&await O(oa.join(c,"package.json"))&&(s.packed_alternative={cwd:c,pack:{command:"npm",args:["pack","--ignore-scripts","--json"]},install:{command:"pm",args:["package","install","<archive-filename>",`--${n}`]},archive_argument:"pack_result[0].filename"}),a==="directory"&&!o.complete){let d=o.stop_reason==="entry_limit"?`${o.max_entries} entries`:`${o.max_depth} directory levels`;throw new y(`Local extension source scan stopped at ${d}; the directory snapshot is incomplete and installation was refused. ${s.packed_alternative?"Pack the package with npm pack --ignore-scripts --json, then install its archive.":"Install a smaller source directory or a packed archive."}`,g.USAGE,{code:"extension_install_incomplete_source_scan",reason:o.stop_reason,nextSteps:s.packed_alternative?[`Run npm pack --ignore-scripts --json from the package root, then pm package install <archive-filename> --${n}.`]:["Choose a smaller source directory or install a packed archive."]})}return s}async function nS(e,t,n={}){let{maxEntries:r=1e4,maxDepth:i=64,signal:a}=n;if(![r,i].every(u=>Number.isSafeInteger(u)&&u>0))throw new y("maxEntries and maxDepth must be positive safe integers.",g.USAGE);a?.throwIfAborted();let o=await sa.realpath(e),s=await Ar(t),c=await ta(o,s);a?.throwIfAborted();let d=c?"in_place":fe(o,s)?"nested_filtered_snapshot":"directory_snapshot",l={copy_scope:d,source_directory:o,destination_directory:s,files:0,bytes:0,directories:0,symlinks:0,other_entries:0,scanned_entries:0,excluded_entries:0,development_entries:0,complete:!0,stop_reason:"complete",max_entries:r,max_depth:i};return d==="in_place"||await zf(o,0,l,a),l}async function zf(e,t,n,r){r?.throwIfAborted();let i=await sa.opendir(e);for await(let a of i){if(r?.throwIfAborted(),n.scanned_entries>=n.max_entries){n.complete=!1,n.stop_reason="entry_limit";return}n.scanned_entries+=1;let o=oa.join(e,a.name);if(!xr(n.source_directory,n.destination_directory,o,n.copy_scope==="nested_filtered_snapshot")){n.excluded_entries+=1;continue}if(oa.relative(n.source_directory,o).split(oa.sep).some(s=>tS.has(s))&&(n.development_entries+=1),await rS(o,t,n,r),!n.complete)return}}async function rS(e,t,n,r){let i=await sa.lstat(e);if(r?.throwIfAborted(),i.isDirectory()){if(n.directories+=1,t+1>=n.max_depth){n.complete=!1,n.stop_reason="depth_limit";return}await zf(e,t+1,n,r)}else i.isFile()?(n.files+=1,n.bytes+=i.size):i.isSymbolicLink()?n.symlinks+=1:n.other_entries+=1}import iS from"node:fs/promises";import aS 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]="955d33c5-8c96-5ed6-bbd1-fc8a26801df4")}catch{}})();function oS(e){return typeof e.name=="string"&&e.name.trim().length>0?e.name.trim():"workspace-manifest"}function sS(e,t){return t.code==="manifest_unknown_key"?`extension_manifest_unknown_key:author:${e}:key=${t.path}${t.suggested_key?`:suggested=${t.suggested_key}`:""}`:`extension_manifest_no_version_bounds:author:${e}:suggested=pm_min_version`}async function Ts(e){let t=aS.join(e,"manifest.json"),n;try{n=await iS.readFile(t,"utf8")}catch(s){if(At(s))return{path:t,present:!1,parse_status:"absent",package_metadata_location:"package.json#pm",schema_findings:[],warnings:[],remediation:[]};throw s}let r;try{r=JSON.parse(n)}catch{return{path:t,present:!0,parse_status:"invalid_json",package_metadata_location:"package.json#pm",schema_findings:[],warnings:["extension_author_manifest_invalid_json:manifest.json"],remediation:["Repair manifest.json so it contains one valid JSON object, then rerun pm package doctor --project."]}}if(typeof r!="object"||r===null||Array.isArray(r))return{path:t,present:!0,parse_status:"invalid_shape",package_metadata_location:"package.json#pm",schema_findings:[],warnings:["extension_author_manifest_invalid_shape:manifest.json"],remediation:["Replace manifest.json with one JSON object, then rerun pm package doctor --project."]};let i=r,a=od(i),o=oS(i);return{path:t,present:!0,parse_status:"valid",package_metadata_location:"package.json#pm",schema_findings:a.findings,warnings:a.findings.map(s=>sS(o,s)),remediation:a.findings.map(s=>s.message)}}function Gf(e){return Ts(Ke(e))}import cS from"node:fs/promises";import dS from"npm-package-arg";(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]="2bef4424-f5b8-511b-91f7-0b39cf11f515")}catch{}})();async function lS(e,t){if(e.kind!=="local"||e.input.startsWith(".")||e.input.includes("\\")||e.input.includes("/")&&!/^@[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/u.test(e.input))return e;try{return await cS.lstat(e.absolute_path),e}catch(a){if(!F(a))throw a}let n=e.input.trim(),r=t.filter(a=>a.source.kind==="npm"),i=(r.find(a=>a.name===n)??r.find(a=>a.directory===n)??r.find(a=>a.source.package===n))?.source.package;if(i===void 0)return e;try{let a=dS(i);if(!a.registry||a.name!==i)return e}catch{return e}return vr(`npm:${i}`,{})}async function Wf(e,t,n,r=[]){let i=typeof t=="string"?null:await wr(e),a=i===null?null:e.trim().toLowerCase(),o=a===null?null:await Np(a),s=await lS(vr(i??e,{forceGithub:typeof t=="string",ref:n}),r),c=a===null?null:await Up(e);return{bundledAliasName:a,bundledPackageName:o,installSource:s,sourceResolution:{requested:e,selected:{kind:a===null?s.kind:"builtin",input:a??s.input,...o===null?{}:{package:o}},ambiguous:c!==null,precedence:"bundled_alias_before_installed_npm",candidates:[...a===null?[]:[{kind:"builtin",input:a,...o===null?{}:{package:o},command:`pm install ${a}`}],...c===null?[]:[{kind:"npm",input:`npm:${c.package}`,package:c.package,...c.version===void 0?{}:{version:c.version},directory:c.directory,command:`pm install npm:${c.package}`}]]}}}import nn from"node:fs/promises";import uS 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]="776854e4-6df4-507e-b21b-a4d320946642")}catch{}})();var $s=async e=>nn.readFile(e).catch(t=>{if(aa(t,"ENOENT"))return null;throw t}),qf=async(e,t,n,r,i)=>Wt("extension_install_backup",async()=>{let a=_r(e),o=zt(t),[s,c]=await Promise.all([$s(a),$s(o)]);return r&&await nn.cp(n,i,{recursive:!0,force:!0}),{backupDirectory:i,destinationDirectory:n,destinationExists:r,managedStatePath:a,managedStateContents:s,settingsPath:o,settingsContents:c}}),Bf=async e=>Wt("extension_install_rollback",async()=>{await nn.rm(e.destinationDirectory,{recursive:!0,force:!0}),e.destinationExists&&await nn.cp(e.backupDirectory,e.destinationDirectory,{recursive:!0,force:!0});for(let[t,n]of[[e.managedStatePath,e.managedStateContents],[e.settingsPath,e.settingsContents]])n===null?await nn.rm(t,{force:!0}):(await nn.mkdir(uS.dirname(t),{recursive:!0}),await nn.writeFile(t,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]="549164da-d760-52bc-9950-25dacf286775")}catch{}})();var Yf=[["install","install","--install"],["uninstall","uninstall","--uninstall"],["explore","explore","--explore"],["list","explore","--explore"],["manage","manage","--manage"],["describe","describe","--describe"],["reload","reload","--reload"],["doctor","doctor","--doctor"],["catalog","catalog","--catalog"],["init","init","--init"],["scaffold","init","--scaffold"],["adopt","adopt","--adopt"],["adopt-all","adopt-all","--adopt-all"],["activate","activate","--activate"],["deactivate","deactivate","--deactivate"],["migrate","migrate","--migrate"]],mS=Yf.map(([,,e])=>e).filter((e,t,n)=>n.indexOf(e)===t).join(", "),pS={install:"--install",uninstall:"--uninstall",explore:"--explore",manage:"--manage",describe:"--describe",reload:"--reload",doctor:"--doctor",catalog:"--catalog",adopt:"--adopt","adopt-all":"--adopt-all",activate:"--activate",deactivate:"--deactivate",migrate:"--migrate",init:"--init"},fS="__pm_native_output",hS=["trusted_extensions","allowed_extensions","blocked_extensions","allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services"],Xf=["allowed_capabilities","blocked_capabilities","allowed_surfaces","blocked_surfaces","allowed_commands","blocked_commands","allowed_actions","blocked_actions","allowed_services","blocked_services"],_S=["disabled","require_trusted","require_provenance"],Zf={mode:"off",trust_mode:"off",require_provenance:!1,trusted_extensions:[],default_sandbox_profile:"none",allowed_extensions:[],blocked_extensions:[],allowed_capabilities:[],blocked_capabilities:[],allowed_surfaces:[],blocked_surfaces:[],allowed_commands:[],blocked_commands:[],allowed_actions:[],blocked_actions:[],allowed_services:[],blocked_services:[],extension_overrides:[]},gS=e=>{let t=e??Zf,n={};for(let r of hS)n[r]=De(t[r]??[]);return n},yS=(e,t)=>{for(let n of Xf)t[n].length>0&&(e[n]=t[n]);return e},wS=(e,t)=>{for(let n of _S)t[n]===!0&&(e[n]=!0);return t.sandbox_profile&&(e.sandbox_profile=t.sandbox_profile),e},vS=e=>{let t={};for(let n of Xf)t[n]=De(e[n]??[]);return t},bS=e=>{let t=typeof e.name=="string"?e.name.trim():"";return t.length===0?null:yS(wS({name:t},e),vS(e))},kS=e=>(e??[]).map(t=>bS(t)).filter(t=>t!==null).sort((t,n)=>t.name.localeCompare(n.name)),ES=e=>{let t=Object.assign({},Zf,e??{}),n=gS(e),r=kS(t.extension_overrides);return{mode:t.mode,trust_mode:t.trust_mode,require_provenance:t.require_provenance===!0,trusted_extensions:n.trusted_extensions,default_sandbox_profile:t.default_sandbox_profile,allowed_extensions:n.allowed_extensions,blocked_extensions:n.blocked_extensions,allowed_capabilities:n.allowed_capabilities,blocked_capabilities:n.blocked_capabilities,allowed_surfaces:n.allowed_surfaces,blocked_surfaces:n.blocked_surfaces,allowed_commands:n.allowed_commands,blocked_commands:n.blocked_commands,allowed_actions:n.allowed_actions,blocked_actions:n.blocked_actions,allowed_services:n.allowed_services,blocked_services:n.blocked_services,extension_overrides:r}},Qf=async(e,t)=>{let n=[t],r=await Lp(t);r&&n.push(r);let i=[...new Set(n.map(a=>I(a)).filter(a=>a.length>0))];for(let a of i){let o=e.find(c=>I(c.name)===a);if(o)return o;let s=e.find(c=>I(c.directory)===a);if(s)return s}},eh=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled));return new Set(De(e.extensions.disabled)).has(n)?!1:r.size===0?!0:r.has(n)},th=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled)),i=new Set(De(e.extensions.disabled)),a=[...r],o=[...i];return i.delete(n),r.size>0&&r.add(n),e.extensions.enabled=[...r].sort((s,c)=>s.localeCompare(c)),e.extensions.disabled=[...i].sort((s,c)=>s.localeCompare(c)),e.extensions.enabled.join("\0")!==a.join("\0")||e.extensions.disabled.join("\0")!==o.join("\0")},SS=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled)),i=new Set(De(e.extensions.disabled)),a=[...r],o=[...i];return r.delete(n),i.add(n),e.extensions.enabled=[...r].sort((s,c)=>s.localeCompare(c)),e.extensions.disabled=[...i].sort((s,c)=>s.localeCompare(c)),e.extensions.enabled.join("\0")!==a.join("\0")||e.extensions.disabled.join("\0")!==o.join("\0")},xS=(e,t)=>{let n=t.trim(),r=new Set(De(e.extensions.enabled)),i=new Set(De(e.extensions.disabled)),a=[...r],o=[...i];return r.delete(n),i.delete(n),e.extensions.enabled=[...r].sort((s,c)=>s.localeCompare(c)),e.extensions.disabled=[...i].sort((s,c)=>s.localeCompare(c)),e.extensions.enabled.join("\0")!==a.join("\0")||e.extensions.disabled.join("\0")!==o.join("\0")},AS=e=>{let t=e.trim().toLowerCase(),n=Math.min(2,Math.max(1,Math.ceil(t.length/4))),r=Yf.map(([i,a,o])=>({action:a,flag:o,distance:Zc(t,i,n)})).filter(i=>i.distance!==null).sort((i,a)=>i.distance-a.distance)[0];return r?{action:r.action,flag:r.flag}:null},IS=(e,t)=>{let n=t.vocabulary==="package"?"package":"extension",r=AS(e);if(!r)return new y(`One action flag is required. Use one of: ${mS}. Bare \`pm package\` and \`pm extension\` default to --explore.`,g.USAGE);let i=`pm ${n} ${r.flag}`;return gi({command_path:n,display_name:`${n} lifecycle`,token_kind:"action",token:e,allowed:Object.keys(nh),retry_command:i,message_suffix:`. Did you mean "${r.flag}"?`,fallback_candidates:[{source:"lifecycle_action",command:i,reason:`nearest lifecycle action for "${e}"`}]})},RS=[["install","install"],["uninstall","uninstall"],["explore","explore"],["manage","manage"],["describe","describe"],["reload","reload"],["doctor","doctor"],["catalog","catalog"],["init","init"],["scaffold","init"],["adopt","adopt"],["adoptAll","adopt-all"],["activate","activate"],["deactivate","deactivate"],["migrate","migrate"]],nh={doctor:"doctor",reload:"reload",catalog:"catalog",init:"init",scaffold:"init",explore:"explore",manage:"manage",migrate:"migrate",list:"explore","":"explore"},CS=e=>nh[e]??null,TS=(e,t)=>{let n=[...new Set(RS.filter(([r])=>t[r]===!0).map(([,r])=>r))];if(n.length===0){if(e===void 0)return"explore";let r=CS(e.trim().toLowerCase());if(r)return r;throw IS(e,t)}if(n.length>1)throw new y("Extension action flags are mutually exclusive.",g.USAGE);return n[0]},$S=e=>{let t=e.project===!0||e.local===!0,n=e.global===!0;if(t&&n)throw new y('Options "--project/--local" and "--global" are mutually exclusive.',g.USAGE);return n?"global":"project"},OS=[e=>e?null:{status:"skipped_unmanaged",reason:"extension_not_managed"},e=>e&&!["github","npm"].includes(e.source.kind)?{status:"skipped_non_github",reason:`managed_source_kind_${e.source.kind}`}:null,e=>{let t=typeof e?.update_error=="string"?e.update_error.trim():"";return t.length>0?{status:"failed",reason:t}:null},e=>{let t=e;return(typeof t.last_update_check_at=="string"?t.last_update_check_at.trim():"").length===0?null:{status:"checked",reason:{true:"update_available",false:"up_to_date"}[String(t.update_available)]??"checked_without_commit_baseline"}}],rh=e=>{for(let t of OS){let n=t(e);if(n)return n}return{status:"not_checked",reason:"no_update_check_recorded"}},ih=(e,t,n,r)=>{let i=n??{};return{name:e.name,directory:e.directory,version:e.version,entry:e.entry,scope:t,active:e.enabled,enabled:e.enabled,runtime_active:null,activation_status:"unknown",contributions:i.contributions,managed:!!n,source:i.source,update_available:i.update_available,last_update_check_at:i.last_update_check_at,last_update_remote_commit:i.last_update_remote_commit,last_update_remote_version:i.last_update_remote_version,update_error:i.update_error,update_check_status:r.status,update_check_reason:r.reason}},DS=(e,t,n,r)=>{let i=Object.assign({name:e,manifest_version:"unknown",manifest_entry:"unknown"},r),a=r?eh(n,r.name):!1;return{warning:`extension_manifest_missing:${t}:${e}`,summary:ih({name:i.name,directory:e,version:i.manifest_version,entry:i.manifest_entry,enabled:a},t,r,rh(r))}},PS=async(e,t,n,r,i,a)=>{let o=Pe.join(e,t),s=Pe.join(o,"manifest.json"),c=a.get(I(t));if(!await O(s))return DS(t,n,r,c);let d=Symbol("invalid-extension-manifest-json"),l=await jt.readFile(s,"utf8").then(f=>JSON.parse(f)).catch(()=>d);if(l===d)return{warning:`extension_manifest_invalid_json:${n}:${t}`};let u=ls(l);if(!u)return{warning:`extension_manifest_invalid:${n}:${t}`};let m=i.get(I(u.name))??a.get(I(t));return{summary:ih({name:u.name,directory:t,version:u.version,entry:u.entry,enabled:eh(r,u.name)},n,m,rh(m))}},it=async(e,t,n,r)=>{if(!await O(e))return{extensions:[],warnings:[]};let i=(await jt.readdir(e,{withFileTypes:!0})).filter(d=>d.isDirectory()).map(d=>d.name).sort((d,l)=>d.localeCompare(l)),a=new Map(r.entries.map(d=>[I(d.name),d])),o=new Map(r.entries.map(d=>[I(d.directory),d])),s=[],c=[];for(let d of i){let l=await PS(e,d,t,n,a,o);l.warning&&s.push(l.warning),l.summary&&c.push(l.summary)}return{extensions:c.sort((d,l)=>d.name.localeCompare(l.name)),warnings:s.sort((d,l)=>d.localeCompare(l))}},NS=zd(),LS=(e,t)=>[t.package,t.kind==="builtin"?t.name:void 0].find(n=>n?.trim())?.trim()??e,MS=(e,t,n,r)=>{let i=n.command_paths.map(s=>`pm ${s} --help`),a=r?.error.toLowerCase().includes("@unbrained/pm-cli")===!0,o=n.command_paths.length>0?[...i]:["Run pm package doctor --project --detail deep if expected package commands are missing."];return a&&o.unshift("Install @unbrained/pm-cli in the target workspace so declarative package runtime imports resolve, then reinstall the package."),{package_name:LS(e,t),extension_name:e,command_paths:n.command_paths,action_paths:n.action_paths,help_commands:i,next_steps:o,...a?{sdk_dependency_status:"missing"}:{}}},jS=e=>{let t=e.trace,n={layer:e.layer,name:e.name,entry_path:e.entry_path,error:e.error};return t&&(n.trace=Object.fromEntries(Object.entries(t).filter(([,r])=>r!==void 0)),t.missing_capability&&(n.missing_capability=t.missing_capability),t.hint&&(n.hint=t.hint)),n},ah=e=>e.map(t=>jS(t)).sort((t,n)=>`${t.layer}:${t.name}`.localeCompare(`${n.layer}:${n.name}`)),oh=(e,t,n)=>{let r=I(e);return t.find(i=>(n===void 0||i.layer===n)&&I(i.name)===r)},FS=(e,t,n,r)=>n.find(i=>i.scope===t&&I(i.name)===I(e))?.activation_status??(r?"failed":"unknown"),sh=(e,t,n,r,i)=>NS.enqueue(async()=>{let a=process.env.PM_CLI_PACKAGE_ROOT,o=await jt.mkdtemp(Pe.join(t,".pm-module-graph-"));process.env.PM_CLI_PACKAGE_ROOT=Ne(import.meta.url,["../.."]);try{let s=await Ye({pmRoot:e,settings:n,cwd:process.cwd(),noExtensions:i.noExtensions===!0,reload_token:Ka(),cache_bust:!0,module_graph_snapshot_root:o}),c=await Xe({...s}),d=[...s.failed.map(u=>({layer:u.layer,name:u.name,entry_path:u.entry_path,error:u.error})),...ah(c.failed)],l=Object.fromEntries(s.loaded.map(u=>[I(u.name),Ed(xn(c,{extensionName:u.name}))]));return{installed:ra(r,s,c),warnings:[...s.warnings,...c.warnings],activation_failures:d,extensions_disabled:s.disabled_by_flag,item_type_registrations:c.registrations.item_types,contribution_inventories:l}}finally{await jt.rm(o,{recursive:!0,force:!0}),a===void 0?delete process.env.PM_CLI_PACKAGE_ROOT:process.env.PM_CLI_PACKAGE_ROOT=a}}),Ds=async(e,t,n,r)=>{let i=n.filter(c=>!c.managed),a=[...i].sort((c,d)=>{let l=c.name.localeCompare(d.name);return l!==0?l:c.directory.localeCompare(d.directory)}),o=r,s=[];for(let c of a){let d=Pe.join(e,c.directory),l=await On(d),u=$(),m={kind:"local",input:c.name,location:d};o=yr(o,{name:l.manifest.name,directory:c.directory,scope:t,manifest_version:l.manifest.version,manifest_entry:l.manifest.entry,capabilities:[...l.manifest.capabilities],contributions:l.manifest.contributions,installed_at:u,updated_at:u,source:m}),s.push({name:l.manifest.name,directory:c.directory,version:l.manifest.version,entry:l.manifest.entry,source:m})}return s.length>0&&await Dn(e,o),{state:o,adopted_entries:s,unmanaged_candidates:a,already_managed_count:n.length-i.length}},US=(e,t)=>{let n=L(process.cwd(),t.path),r=cn(n,process.cwd()),i=e==="global"?Br(process.cwd()):n,a=e==="global"?r.global:r.project;return{pm_root:n,scope:e,settings_root:i,selected_root:a,roots:r}},ca=e=>{let t=[e.gh,e.github].filter(r=>typeof r=="string").map(r=>r.trim()).filter(Boolean),n=[...new Set(t)];if(n.length>1)throw new y('Options "--gh" and "--github" must match when both are provided.',g.USAGE);return n[0]},HS=e=>pS[e],zS=(e,t)=>{let n=t.vocabulary==="package"?"package":"extension",r=e==="install"?"source":"name",i=`${n} ${r}`,a=HS(e),o=`<${r}>`,s=`pm ${n} ${a} ${o}`;throw new y(`Action "${e}" requires ${i} input.`,g.USAGE,{code:"missing_lifecycle_target",required:`Provide a ${r} target for ${e}.`,examples:[`pm ${n} ${e} ${o}`,s,`pm ${n} --help`],recovery:{attempted_command:`pm ${n} ${e}`,suggested_retry:s,fallback_candidates:[{source:"lifecycle_action",command:s,reason:`flag-form ${e} command with required ${r} target`}]}})},da=(e,t,n={})=>{let r=e?.trim();if(r)return r;if(t==="init")throw new y('Action "init" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',g.USAGE);return zS(t,n)},GS=(e,t)=>{let n=new Set([...t.registrations.item_types.map(r=>({entry:r,count:r.types.length})),...t.registrations.item_fields.map(r=>({entry:r,count:r.fields.length}))].filter(({count:r})=>r>0).map(({entry:r})=>`${r.layer}:${I(r.name)}`));return e.loaded.filter(r=>(r.activation?.commands??[]).length>0).filter(r=>n.has(`${r.layer}:${I(r.name)}`)).map(r=>`extension_schema_narrow_activation:${r.layer}:${r.name}`).filter((r,i,a)=>a.indexOf(r)===i).sort((r,i)=>r.localeCompare(i))},WS=(e,t)=>{let n=[{triggered:t.strictExit===!0||t.failOnWarn===!0,allowed:e==="doctor",message:"--strict-exit and --fail-on-warn are only valid with --doctor."},{triggered:t.trace===!0,allowed:e==="doctor",message:"--trace is only valid with --doctor."},{triggered:t.watch===!0,allowed:e==="reload",message:"--watch is only valid with --reload."},{triggered:t.runtimeProbe===!0,allowed:e==="manage",message:"--runtime-probe is only valid with --manage."},{triggered:t.fixManagedState===!0,allowed:e==="manage"||e==="doctor",message:"--fix-managed-state is only valid with --manage or --doctor."},{triggered:t.isolated===!0||t.ignoreGlobal===!0,allowed:e==="doctor",message:"--isolated and --ignore-global are only valid with --doctor."},{triggered:t.capability!==void 0,allowed:e==="init",message:"--capability is only valid with --init/--scaffold."},{triggered:t.declarative===!0,allowed:e==="init",message:"--declarative is only valid with --init/--scaffold."},{triggered:t.dryRun===!0,allowed:e==="migrate"||e==="install",message:"--dry-run is only valid with --migrate or --install."}].find(r=>r.triggered&&!r.allowed);if(n)throw new y(n.message,g.USAGE)},qS=(e,t,n)=>{let r=String(e??"").trim().toLowerCase(),i=[n.init,n.scaffold].includes(!0);return({doctor:["doctor"],reload:["reload"],catalog:["catalog"],init:i?[]:["init","scaffold"]}[t]??[]).includes(r)?void 0:e},BS=e=>[e.action==="catalog",typeof e.options.fields=="string",String(e.options.fields).trim().length>0].every(Boolean)?{project:"project",global:"global",selected:e.scope,settings_root:"project"}:{project:e.resolvedRoots.roots.project,global:e.resolvedRoots.roots.global,selected:e.resolvedRoots.selected_root,settings_root:e.resolvedRoots.settings_root},VS=(e,t,n)=>{let r={ok:n,action:e.action,scope:e.scope,roots:BS(e),warnings:[...new Set(e.warnings)].sort((i,a)=>i.localeCompare(a)),details:t};return e.action==="doctor"&&Object.defineProperty(r,fS,{value:!0,enumerable:!1,configurable:!1}),r},Ps=async(e,t,n)=>{let r=TS(e,t);WS(r,t);let i=qS(e,r,t),a=$S(t),o=US(a,n),s={action:r,normalizedTarget:i,scope:a,resolvedRoots:o,warnings:[],options:t,global:n},c={...s,withResult:(d,l=!0)=>VS(s,d,l)};return await A0(c)},JS=(e,t)=>{let n=t.vocabulary??"extension",r=e.target_path.replace(/\\/g,"/"),i=Jd(r),a={package:`Install dependencies: cd ${i}, then run "npm install"`,extension:`Install type-check dependencies: cd ${i}, then run "npm install -D typescript @types/node @unbrained/pm-cli"`},o={package:`Validate the package: cd ${i}, then run "npm run typecheck" and "npm test"`,extension:`Type-check the source (optional): cd ${i}, then run "npx tsc --noEmit"`},s=[];return[n==="package",t.declarative===!0].every(Boolean)&&s.push("Ensure the target workspace can resolve @unbrained/pm-cli before installing this declarative package."),[a[n],...s,`Install the scaffold: ${Me(n==="package"?["install","--project",r]:["extension","--install","--project",r])}`,`Smoke-test command path: pm ${e.command_name}`,o[n],`Run diagnostics: ${n==="package"?"pm package doctor":"pm extension --doctor"} --project --detail summary`]},KS=async e=>{let{action:t,normalizedTarget:n,options:r,withResult:i}=e;if([ca(r),r.ref].filter(s=>typeof s=="string").map(s=>s.trim()).filter(Boolean).length>0)throw new y('Action "init" does not accept --gh/--github/--ref options.',g.USAGE);let a=da(n,t,r),o=await af(a,r.vocabulary??"extension",r.capability,r.declarative===!0);return i({scaffolded:o.created_directory||o.files.some(s=>s.status==="created"),extension:{name:o.extension_name,command:o.command_name},capability:o.capability,style:o.style,target_path:o.target_path,created_directory:o.created_directory,files:o.files,next_steps:JS(o,r)})},YS=async e=>{let{normalizedTarget:t,resolvedRoots:n,warnings:r,options:i,global:a,withResult:o}=e;if(t!==void 0)throw new y('Action "reload" does not accept a target argument.',g.USAGE);let s=await T(n.settings_root),c=Ka(),d=await Ye({pmRoot:n.settings_root,settings:s,cwd:process.cwd(),noExtensions:a.noExtensions,reload_token:c,cache_bust:!0});r.push(...d.warnings);let l=await Xe(d);r.push(...l.warnings);let u={reload:{token:c,cache_bust:!0,watch:i.watch===!0},loaded_count:d.loaded.length,failed_count:d.failed.length,activated_count:Math.max(0,d.loaded.length-l.failed.length),activation_failed_count:l.failed.length,loaded_extensions:d.loaded.map(m=>({name:m.name,layer:m.layer,version:m.version})),failed_extensions:d.failed.map(m=>({name:m.name,layer:m.layer,error:m.error})),activation_failures:l.failed.map(m=>({name:m.name,layer:m.layer,error:m.error}))};return i.watch===!0&&r.push("extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only"),o(u)},XS=async e=>{let{normalizedTarget:t,scope:n,options:r,global:i,withResult:a}=e;if(typeof t=="string"&&t.length>0&&t!=="catalog")throw new y('Action "catalog" does not accept a package target.',g.USAGE);return a(await Mp(n,i,r))},ZS=(e,t)=>({kind:"builtin",input:e,location:e,name:e,...t===null?{}:{package:t}}),QS=e=>({kind:"local",input:e.input,location:e.absolute_path}),e0=(e,t)=>({kind:"npm",input:e.input,location:t.resolved_subpath??".",package:t.npm_package,version:t.npm_version}),t0=(e,t)=>({kind:"github",input:e.input,location:t.resolved_subpath??e.subpath??".",repository:e.repository,owner:e.owner,repo:e.repo,ref:e.ref,subpath:t.resolved_subpath??e.subpath,commit:t.commit}),n0=(e,t,n,r)=>e?ZS(e,t):n.kind==="local"?QS(n):n.kind==="npm"?e0(n,r):t0(n,r),r0=(e,t,n,r)=>e?e.manifest_version!==t?{installed_at:e.installed_at,updated_at:r}:Tp(e.source,n)?{installed_at:e.installed_at,updated_at:e.updated_at}:{installed_at:e.installed_at,updated_at:r}:{installed_at:r,updated_at:r},i0=async(e,t)=>{let{scope:n,resolvedRoots:r,warnings:i}=e,{validated:a,destinationDirectoryName:o}=t,s=await T(r.settings_root),c=await ye(r.selected_root);i.push(...c.warnings);let d=Pe.join(r.selected_root,o),l=await O(d),u=await ta(a.directory,d);await jt.mkdir(r.selected_root,{recursive:!0});let m=await jt.mkdtemp(Pe.join(r.selected_root,".pm-extension-install-backup-")),f=Pe.join(m,"destination");try{let p=await qf(r.selected_root,r.settings_root,d,l,f),h=n0(t.bundledAliasName,t.bundledPackageName,t.installSource,t.resolvedSource),_=c.state.entries.find(k=>I(k.name)===I(a.manifest.name)),w=r0(_,a.manifest.version,h,$()),v=yr(c.state,{name:a.manifest.name,directory:o,scope:n,manifest_version:a.manifest.version,manifest_entry:a.manifest.entry,capabilities:[...a.manifest.capabilities],contributions:a.manifest.contributions,...w,source:h}),E=th(s,a.manifest.name);try{u||await Rf(a.directory,d),await xf(d),await Af(d),await Dn(r.selected_root,v),E&&await _i(r.settings_root,s,"settings:write")}catch(k){try{await Bf(p)}catch(x){throw new AggregateError([k,x],`Extension install failed: ${String(k)}; rollback failed: ${String(x)}`,{cause:x})}throw k}return{settings:s,managedState:v,sourceRecord:h,destinationDirectory:d,destinationExists:l,installInPlace:u,activationChanged:E}}finally{await jt.rm(m,{recursive:!0,force:!0}).catch(()=>{})}},a0=async(e,t,n)=>{let r=n.filter(i=>I(i.name)===I(t)).flatMap(i=>i.types.map(a=>({name:a.name,folder:a.folder})));return e.scope==="project"&&r.length>0&&await fr(e.resolvedRoots.pm_root,r,e.warnings,"install:type-folder"),r},o0=(e,t,n,r,i)=>{let a=oh(t,n.activation_failures,e.scope),o=FS(t,e.scope,n.installed,a),s=[!n.extensions_disabled,o==="ok"].every(Boolean);s||e.warnings.push(`extension_install_activation_failed:${e.scope}:${t}:${o}`);let c={true:{status:"ok",blocking_failure_count:0},false:{status:"degraded",blocking_failure_count:1}};return{activated:s,status:o,failure:a,verification:{status:c[String(s)].status,target_pm_root:e.resolvedRoots.pm_root,activation_status:o,activated:s,registered_commands:r.command_paths,registered_actions:r.action_paths,registered_item_types:i,module_graph_verification:"fresh_in_topology_snapshot",health:c[String(s)]}}},s0=async(e,t)=>{let{scope:n,resolvedRoots:r,warnings:i,global:a,withResult:o}=e,{validated:s,destinationDirectoryName:c}=t,d=await i0(e,t),l=await it(r.selected_root,n,d.settings,d.managedState);i.push(...l.warnings);let u=await sh(r.pm_root,Pe.dirname(r.selected_root),d.settings,l.extensions,a);i.push(...u.warnings);let m=await a0(e,s.manifest.name,u.item_type_registrations),f=Tf(s.manifest.name,u.installed),p=o0(e,s.manifest.name,u,f,m),h=u.contribution_inventories[I(s.manifest.name)];return h&&(d.managedState=await $p(r.selected_root,d.managedState,s.manifest.name,h)),o({extension:{name:s.manifest.name,version:s.manifest.version,entry:s.manifest.entry,capabilities:s.manifest.capabilities,directory:c},source:d.sourceRecord,source_resolution:t.sourceResolution,...t.installPlan?{install_plan:t.installPlan}:{},destination_path:d.destinationDirectory,overwritten:[d.destinationExists,!d.installInPlace].every(Boolean),installed_in_place:d.installInPlace,activated:p.activated,settings_changed:d.activationChanged,runtime_activation_status:p.status,command_paths:f.command_paths,action_paths:f.action_paths,contributions:h,command_discovery:MS(s.manifest.name,d.sourceRecord,f,p.failure),verification:p.verification,activation_diagnostics:{failed_count:u.activation_failures.length,failed:u.activation_failures,installed_extension_failed:p.failure??null}},p.activated)},c0=async e=>{let{options:t,global:n,warnings:r,withResult:i}=e;if(typeof t.ref=="string"&&t.ref.trim().length>0)throw new y('Action "install all" does not accept --ref.',g.USAGE);let a=[],o=new Map;for(let s of await Xi()){let c=await wr(s),d=Pe.resolve(c),l=o.get(d);l===void 0&&(l=await Ps(s,{...t,install:!0},n),o.set(d,l)),a.push({alias:s,result:l})}return r.push(...a.flatMap(s=>s.result.warnings)),i(Uf(a,t.dryRun===!0),a.every(s=>s.result.ok))},d0=async(e,t,n)=>{let{resolvedRoots:r}=e,{bundledAliasName:i,bundledPackageName:a,installSource:o,sourceResolution:s}=await Wf(t,n,e.options.ref,(await ye(r.selected_root)).state.entries);if(s.ambiguous){let d=s.candidates.find(l=>l.kind==="npm");e.warnings.push(`extension_install_source_ambiguous:${t}:builtin:${i}:npm:${d.package}`)}let c=await Bp(o);try{let d=await On(c.directory,{source_kind:o.kind,source_input:o.input,source_root:c.source_root}),l=Ki(d.manifest.name),u=e.options.dryRun===!0||o.kind==="local"&&i===null?await Hf(c,Pe.join(r.selected_root,l),e.scope,e.options.copyPlan):void 0;return e.options.dryRun===!0?e.withResult({dry_run:!0,installed:!1,activated:!1,extension:{name:d.manifest.name,version:d.manifest.version},source_resolution:s,install_plan:u}):await xs(r.settings_root,l,()=>s0(e,{validated:d,destinationDirectoryName:l,bundledAliasName:i,bundledPackageName:a,sourceResolution:s,installSource:o,resolvedSource:c,installPlan:u}))}finally{c.cleanup&&await c.cleanup()}},l0=async e=>{let t=ca(e.options),n=t??da(e.normalizedTarget,e.action,e.options);return[t===void 0,Dp(n)].every(Boolean)?c0(e):d0(e,n,t)},u0=async e=>{let{normalizedTarget:t,scope:n,resolvedRoots:r,warnings:i,options:a,withResult:o}=e;if(t!==void 0)throw new y('Action "adopt-all" does not accept a target argument.',g.USAGE);if(ca(a)!==void 0||typeof a.ref=="string"&&a.ref.trim().length>0)throw new y('Action "adopt-all" does not accept --gh/--github/--ref options.',g.USAGE);let s=await T(r.settings_root),c=await ye(r.selected_root);i.push(...c.warnings);let d=await it(r.selected_root,n,s,c.state);i.push(...d.warnings);let l=await Ds(r.selected_root,n,d.extensions,c.state),u=await it(r.selected_root,n,s,l.state);i.push(...u.warnings);let m=ia(n,i,u.extensions,a);i.push(...m.warnings);let f=new Map(u.extensions.map(_=>[`${I(_.name)}:${I(_.directory)}`,_])),p=new Map(u.extensions.map(_=>[I(_.directory),_])),h=l.adopted_entries.map(_=>{let w=I(_.directory),v=f.get(`${I(_.name)}:${w}`)??p.get(w);return{..._,...ch(v)}});return o({adopted_all:h.length>0,adopted_count:h.length,already_managed_count:l.already_managed_count,extensions:h,triage:m,warning_codes:m.warning_codes,update_health_partial:m.update_health_partial,update_health_coverage:m.update_health_coverage})},ch=e=>({update_check_status:e?.update_check_status??null,update_check_reason:e?.update_check_reason??null}),m0=(e,t,n,r)=>{if(e===void 0)return{kind:"local",input:t,location:n};let i=vr(e,{forceGithub:!0,ref:r});if(i.kind!=="github")throw new y(`Invalid GitHub shorthand "${e}".`,g.USAGE);return{kind:"github",input:i.input,location:i.subpath??".",repository:i.repository,owner:i.owner,repo:i.repo,ref:i.ref,subpath:i.subpath}},p0=async e=>{let{action:t,normalizedTarget:n,scope:r,resolvedRoots:i,warnings:a,options:o,withResult:s}=e,c=da(n,t,o),d=ca(o),l=await T(i.settings_root),u=await ye(i.selected_root);a.push(...u.warnings);let m=await it(i.selected_root,r,l,u.state);a.push(...m.warnings);let f=await Qf(m.extensions,c);if(!f)throw new y(`Installed extension "${c}" was not found in ${r} scope.`,g.NOT_FOUND);if(f.managed)return s({adopted:!1,already_managed:!0,extension:{name:f.name,directory:f.directory}});let p=Pe.join(i.selected_root,f.directory),h=await On(p),_=$(),w=m0(d,c,p,o.ref),v=yr(u.state,{name:h.manifest.name,directory:f.directory,scope:r,manifest_version:h.manifest.version,manifest_entry:h.manifest.entry,capabilities:[...h.manifest.capabilities],contributions:h.manifest.contributions,installed_at:_,updated_at:_,source:w});await Dn(i.selected_root,v);let E=await it(i.selected_root,r,l,v);a.push(...E.warnings);let k=E.extensions.find(x=>I(x.name)===I(h.manifest.name))??E.extensions.find(x=>I(x.directory)===I(f.directory));return s({adopted:!0,extension:{name:h.manifest.name,directory:f.directory,version:h.manifest.version,entry:h.manifest.entry},source:w,...ch(k)})},dh=async e=>{let{action:t,normalizedTarget:n,scope:r,resolvedRoots:i,warnings:a,options:o}=e,s=da(n,t,o),c=await T(i.settings_root),d=await ye(i.selected_root);a.push(...d.warnings);let l=await it(i.selected_root,r,c,d.state);a.push(...l.warnings);let u=await Qf(l.extensions,s);if(!u)throw new y(`Installed extension "${s}" was not found in ${r} scope.`,g.NOT_FOUND);return{settings:c,managedStateRead:d,candidate:u}},f0=async e=>{let{resolvedRoots:t,withResult:n}=e,{settings:r,managedStateRead:i,candidate:a}=await dh(e),o=Pe.join(t.selected_root,a.directory);await jt.rm(o,{recursive:!0,force:!0});let s={...i.state,updated_at:$(),entries:i.state.entries.filter(d=>I(d.name)!==I(a.name)&&I(d.directory)!==I(a.directory))};await Dn(t.selected_root,s);let c=xS(r,a.name);return c&&await _i(t.settings_root,r,"settings:write"),n({removed:!0,extension:{name:a.name,directory:a.directory},destination_path:o,settings_changed:c})},Vf=async e=>{let{action:t,resolvedRoots:n,warnings:r,global:i,withResult:a}=e,{settings:o,candidate:s}=await dh(e),c=t==="activate"?th(o,s.name):SS(o,s.name);c&&await _i(n.settings_root,o,"settings:write");let d=t==="activate"?await sh(n.pm_root,Pe.dirname(n.selected_root),o,[s],i).then(l=>(r.push(...l.warnings),oh(s.name,l.activation_failures,e.scope))):void 0;return d&&r.push(`extension_activate_failed:${e.scope}:${s.name}`),a({extension:{name:s.name,directory:s.directory},active:t==="activate"&&d===void 0,runtime_active:t==="activate"&&d===void 0,activation_failure:d??null,settings_changed:c,settings:{enabled:[...o.extensions.enabled],disabled:[...o.extensions.disabled]}},d===void 0)},h0=(e,t,n,r,i,a)=>{let o=r==="package"?"package":"extension",s={package:"doctor",extension:"--doctor"}[o],c=i?.adopted_entries.length??0,d=[[a!==null,a??""],[t>0,`Run pm ${o} explore --project and pm ${o} explore --global to inspect load failures.`],[n>0,`Review activation failures in pm ${o} ${s} --detail deep output.`],[c>0,`Managed-state fix adopted ${c} extension(s).`]];return[...new Set([...e,...d.filter(([l])=>l).map(([,l])=>l)].map(l=>l.trim()).filter(l=>l.length>0))]},Os=e=>e.loaded.some(t=>t.layer==="global")||e.failed.some(t=>t.layer==="global")||e.warnings.some(t=>t.includes(":global:")),_0=(e,t,n,r)=>{if(e!=="project"||t||!Os(r))return null;let i=n==="package"?"package":"extension";return`Global ${i} registrations are included in project diagnostics. For hermetic ${i} smoke tests, rerun pm ${i} doctor --project --isolated --detail deep --trace, or set PM_GLOBAL_PATH to a temporary directory for the whole test process.`},g0=(e,t,n)=>{if(String(e??"").trim().length>0)throw new y('Action "doctor" does not accept a target argument.',g.USAGE);let r=[n.isolated,n.ignoreGlobal].includes(!0);if([r,t==="global"].every(Boolean))throw new y("--isolated and --ignore-global are only valid with project-scope doctor diagnostics.",g.USAGE);let i=_f(n.detail),a=n.trace===!0;if([a,i!=="deep"].every(Boolean))throw new y("--trace requires --detail deep with --doctor.",g.USAGE);return{isolated:r,detailMode:i,includeTrace:a}},y0=async(e,t,n)=>{if(e.options.fixManagedState!==!0)return{state:n,fix:null};let r=await Ds(e.resolvedRoots.selected_root,e.scope,t,n);return{state:r.state,fix:r}},w0=(e,t,n,r)=>{let i=n==="package"?"package":"extension";if(e!=="project")return{isolated:t,global_extensions_included:!1,global_diagnostics_present:Os(r),rerun_command:null,pm_global_path_recipe:null};let a=`pm ${i} doctor --project --isolated --detail deep --trace`;return{isolated:t,global_extensions_included:!t,global_diagnostics_present:Os(r),rerun_command:t?null:a,pm_global_path_recipe:`PM_GLOBAL_PATH=$(mktemp -d) pm ${i} doctor --project --detail deep --trace`}},v0=async e=>{let{normalizedTarget:t,scope:n,resolvedRoots:r,warnings:i,options:a,global:o,withResult:s}=e,{isolated:c,detailMode:d,includeTrace:l}=g0(t,n,a),u=await T(r.settings_root),m=await ye(r.selected_root);i.push(...m.warnings);let f=await it(r.selected_root,n,u,m.state);i.push(...f.warnings);let{state:p,fix:h}=await y0(e,f.extensions,m.state),_=await it(r.selected_root,n,u,p);i.push(..._.warnings);let w=await Ye({pmRoot:r.pm_root,settings:u,cwd:process.cwd(),noExtensions:o.noExtensions===!0,ignoreGlobalExtensions:c}),v=await Xe({...w,loaded:w.loaded}),E=await Gf(r.pm_root);i.push(...E.warnings,...w.warnings),i.push(...pf(w.failed)),i.push(...v.warnings),i.push(...ff(v.failed)),i.push(...hf(w,v)),i.push(...$f(v,w)),i.push(...GS(w,v)),i.push(...Of(v));let k=ra(_.extensions,w,v),x=yf(n,k,w.loaded.map(z=>({layer:z.layer,name:z.name})),w.failed.map(z=>({name:z.name})),w.disabled_by_flag);i.push(...x.warnings);let D=k.filter(z=>z.update_check_status==="failed").map(z=>`extension_update_check_failed:${z.name}`);i.push(...D);let S=ia(n,i,k,a);i.push(...S.warnings);let b=[...S.warnings],N={mode:w.policy.mode,trust_mode:w.policy.trust_mode,require_provenance:w.policy.require_provenance,default_sandbox_profile:w.policy.default_sandbox_profile,sandbox_enforcement:"advisory: sandbox_profile/permissions are declaration-based load gates, not runtime isolation (ADR pm-6ef3)",trusted_extensions_count:w.policy.trusted_extensions.length,allowed_extensions_count:w.policy.allowed_extensions.length,blocked_extensions_count:w.policy.blocked_extensions.length,allowed_capabilities_count:w.policy.allowed_capabilities.length,blocked_capabilities_count:w.policy.blocked_capabilities.length,allowed_surfaces_count:w.policy.allowed_surfaces.length,blocked_surfaces_count:w.policy.blocked_surfaces.length,allowed_commands_count:w.policy.allowed_commands.length,blocked_commands_count:w.policy.blocked_commands.length,allowed_actions_count:w.policy.allowed_actions.length,blocked_actions_count:w.policy.blocked_actions.length,allowed_services_count:w.policy.allowed_services.length,blocked_services_count:w.policy.blocked_services.length,extension_override_count:w.policy.extension_overrides.length},A=Er(b),R=Sr(),Q=S.warning_codes,Ae=_0(n,c,a.vocabulary,w),we=h0(S.remediation,w.failed.length,v.failed.length,a.vocabulary,h,Ae),_e=w0(n,c,a.vocabulary,w),ze={status:S.status,scope:n,warning_count:S.warning_count,warning_codes:Q,total_extensions:k.length,managed_total:k.filter(z=>z.managed).length,enabled_total:k.filter(z=>z.enabled).length,active_total:k.filter(z=>z.active).length,unmanaged_loaded_extension_count:S.unmanaged_loaded_extension_count,unmanaged_action_required_extension_count:S.unmanaged_action_required_extension_count,unmanaged_expected_extension_count:S.unmanaged_expected_extension_count,runtime_active_total:k.filter(z=>z.runtime_active===!0).length,activation_status_totals:{ok:k.filter(z=>z.activation_status==="ok").length,failed:k.filter(z=>z.activation_status==="failed").length,not_loaded:k.filter(z=>z.activation_status==="not_loaded").length,unknown:k.filter(z=>z.activation_status==="unknown").length},unknown_capability_count:A.length,capability_contract_version:R.version,update_available_total:S.update_available_total,update_check_status_totals:S.update_check_status_totals,update_health_coverage:S.update_health_coverage,update_health_partial:S.update_health_partial,update_check_failed_total:k.filter(z=>z.update_check_status==="failed").length,load_failure_count:w.failed.length,activation_failure_count:v.failed.length,load_failures:ks(w.failed),activation_failures:ks(v.failed),blocking_failure_count:w.failed.length+v.failed.length,has_blocking_failures:w.failed.length+v.failed.length>0,consistency_warning_count:x.warnings.length,trace_enabled:l,isolation:_e,policy:N,remediation:we},Ur=h?{requested:!0,applied:h.adopted_entries.length>0,adopted_count:h.adopted_entries.length,already_managed_count:h.already_managed_count,adopted_extensions:h.adopted_entries.map(z=>z.name)}:{requested:!1,applied:!1,adopted_count:0,already_managed_count:_.extensions.filter(z=>z.managed).length,adopted_extensions:[]},Bn={mode:d,summary:ze,triage:S,trace_enabled:l,capability_contract:R,capability_guidance:A,managed_state_fix:Ur,author_manifest:E,isolation:_e,policy:w.policy};if(d==="deep"){let z=l?v.failed:v.failed.map(B=>{let{trace:Hr,...zr}=B;return zr});Bn.deep={warnings:b,warning_codes:Q,capability_contract:R,capability_guidance:A,trace_enabled:l,managed_state:{path:m.path,count:p.entries.length,entries:p.entries},installed_extensions:k,load:{roots:w.roots,policy:w.policy,warnings:w.warnings,failed:w.failed,loaded:w.loaded.map(B=>({layer:B.layer,directory:B.directory,name:B.name,version:B.version,entry:B.entry,priority:B.priority}))},activation:{failed:z,warnings:v.warnings,hook_counts:v.hook_counts,registration_counts:v.registration_counts,parser_override_count:v.parser_override_count,preflight_override_count:v.preflight_override_count,service_override_count:v.service_override_count,renderer_override_count:v.renderer_override_count},consistency:x.summary},l&&(Bn.deep.trace={activation_failures:v.failed.filter(B=>B.trace!==void 0).map(B=>({layer:B.layer,name:B.name,entry_path:B.entry_path,error:B.error,method:B.trace.method,command:B.trace.command,capability:B.trace.capability,missing_capability:B.trace.missing_capability,registration_index:B.trace.registration_index,expected_schema:B.trace.expected_schema,hint:B.trace.hint,received:B.trace.received}))})}return s(Bn)},b0=async e=>{let{normalizedTarget:t,scope:n,resolvedRoots:r,warnings:i,options:a,global:o,withResult:s}=e,c=await T(r.settings_root),d=await Ye({pmRoot:r.pm_root,settings:c,cwd:process.cwd(),noExtensions:o.noExtensions===!0}),l=await Xe(d);i.push(...d.warnings),i.push(...l.warnings);let u=sf(t,d,l);if(t!==void 0&&u.extensions.length===0){let m=a.vocabulary==="package"?"package":"extension",f=[...new Set(d.loaded.map(h=>a.vocabulary==="package"&&typeof h.source_package=="string"&&h.source_package.trim().length>0?h.source_package.trim():h.name))].sort((h,_)=>h.localeCompare(_)),p=f.length>0?` Loaded ${m} names: ${f.join(", ")}.`:"";throw new y(`No loaded ${m} named "${t}" was found in ${n} scope.${p} Run pm ${m} explore to list discovered ${m}s.`,g.NOT_FOUND)}return s({target:u.target,total:u.total,extensions:u.extensions,union:u.union,command_ownership:u.command_ownership})},k0=async(e,t,n)=>{let r=n,i=null;return[e.action==="manage",e.options.fixManagedState===!0].every(Boolean)&&(i=await Ds(e.resolvedRoots.selected_root,e.scope,t,n),r=i.state),e.action==="manage"&&(r=await Lf(r,e.options.offline)),{state:r,fix:i}},E0=async(e,t,n)=>{let r=await Ye({pmRoot:e.resolvedRoots.pm_root,settings:t,cwd:process.cwd(),noExtensions:e.global.noExtensions===!0}),i=await Xe({...r,loaded:r.loaded});return e.warnings.push(...r.warnings,...i.warnings),{installed:ra(n,r,i),failures:ah(i.failed),summary:{requested:!0,executed:!0,reason:e.action==="explore"?"explore_defaults_to_runtime_probe":e.options.runtimeProbe===!0?"runtime_probe_requested":"manage_defaults_to_runtime_probe",load_failure_count:r.failed.length,activation_failure_count:i.failed.length,warning_count:[...new Set([...r.warnings,...i.warnings])].length,policy:r.policy}}},S0=(e,t)=>e?{requested:!0,applied:e.adopted_entries.length>0,adopted_count:e.adopted_entries.length,adopted_extensions:e.adopted_entries.map(n=>n.name),already_managed_count:e.already_managed_count}:{requested:!1,applied:!1,adopted_count:0,adopted_extensions:[],already_managed_count:t.filter(n=>n.managed).length},Jf=async e=>{let{action:t,scope:n,resolvedRoots:r,warnings:i,options:a,withResult:o}=e,s=await T(r.settings_root),c=ES(s.extensions.policy),d=await ye(r.selected_root);i.push(...d.warnings);let l=await it(r.selected_root,n,s,d.state);i.push(...l.warnings);let{state:u,fix:m}=await k0(e,l.extensions,d.state),f=await it(r.selected_root,n,s,u);if(i.push(...f.warnings),t==="manage"&&a.offline===!0)for(let v of f.extensions)v.managed&&["npm","github"].includes(v.source.kind)&&(v.update_check_reason="offline_requested");if(t==="manage"){let v=f.extensions.filter(E=>E.update_check_status==="failed").map(E=>`extension_update_check_failed:${E.name}`);i.push(...v)}let p=await E0(e,s,f.extensions),h=p.installed,_=ia(n,i,h,a);i.push(..._.warnings);let w={total:h.length,managed_total:h.filter(v=>v.managed).length,enabled_total:h.filter(v=>v.enabled).length,active_total:h.filter(v=>v.active).length,extensions:h,triage:_,policy:c};return p.failures!==void 0&&(w.activation_diagnostics={failed_count:p.failures.length,failed:p.failures}),t==="explore"&&(w.runtime_probe=p.summary),t==="manage"&&(w.runtime_probe=p.summary,w.managed_state_fix=S0(m,h)),o(w)},Kf={init:KS,install:l0,uninstall:f0,explore:Jf,manage:Jf,describe:b0,reload:YS,doctor:v0,catalog:XS,adopt:p0,"adopt-all":u0,activate:Vf,deactivate:Vf,migrate:Ff},x0=e=>[e.action==="uninstall",e.action==="adopt",e.action==="adopt-all",e.action==="activate",e.action==="deactivate",e.action==="migrate",[["doctor","manage"].includes(e.action),e.options.fixManagedState===!0].every(Boolean)].some(Boolean),A0=e=>x0(e)?xs(e.resolvedRoots.settings_root,`${e.action}-state`,()=>Kf[e.action](e)):Kf[e.action](e);import{execFile as I0}from"node:child_process";import{realpath as R0}from"node:fs/promises";import lh from"node:path";import{promisify as C0}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]="9af87d55-dbe2-561b-9f3f-6f12c0416147")}catch{}})();var T0=C0(I0),$0=32*1024*1024,O0=1e4,D0=["search/eval-queries.json"];function Ns(e){return e.replaceAll("\\","/").replace(/\/+$/,"")}function P0(e){return`'${e.replaceAll("'","'\\''")}'`}async function N0(e,t=R0){return t(e).catch(()=>lh.resolve(e))}async function la(e){let t=await nt(e);if(t===null)return{git_workspace_root:null,tracker_relative_root:null,tracked_paths:[],tracked_path_count:0,remediation_command:null};let n=await N0(e),r=Ns(lh.relative(t,n));if(r.length===0)return{git_workspace_root:t,tracker_relative_root:null,tracked_paths:[],tracked_path_count:0,remediation_command:null};let i=Go.map(a=>`${r}/${Ns(a)}`);try{let{stdout:a}=await T0("git",["ls-files","-z","--",...i.map(d=>`:(literal)${d}`)],{cwd:t,encoding:"utf8",maxBuffer:$0,windowsHide:!0,timeout:O0}),o=new Set(D0.map(d=>`${r}/${d}`)),s=[...new Set(a.split("\0").filter(d=>d.length>0&&!o.has(Ns(d))))].sort((d,l)=>d.localeCompare(l)),c=i.filter(d=>s.some(l=>l===d||l.startsWith(`${d}/`)));return{git_workspace_root:t,tracker_relative_root:r,tracked_paths:s,tracked_path_count:s.length,remediation_command:s.length===0?null:`git rm --cached -r -- ${c.map(d=>P0(`:(literal)${d}`)).join(" ")}`}}catch{return{git_workspace_root:t,tracker_relative_root:r,tracked_paths:[],tracked_path_count:0,remediation_command:null}}}(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]="2e510b32-f27f-5ba5-94b2-8268343359dc")}catch{}})();async function uh(e,t,n,r){if(t===null)return{audit:null,count:0,warnings:[]};let i=await In(e,Dt(n));if(i.status==="ok")return{audit:i,count:0,warnings:[]};let a=Math.max(1,i.missing_patterns.length+i.stale_patterns.length);return{audit:i,count:a,warnings:r?[`merge_fence_${i.status==="not_installed"?"missing":"drift"}:${a}`]:[]}}function mh(e){let t=[];return e.invalidEvidenceCount>0&&t.push(`merge_receipt_evidence_invalid:${e.invalidEvidenceCount}`),e.missingHistoryReferenceCount>0&&t.push(`merge_receipt_history_reference_missing:${e.missingHistoryReferenceCount}`),t}import{execFile as kx}from"node:child_process";import{randomUUID as Ex}from"node:crypto";import{readdir as Sx,stat as xx}from"node:fs/promises";import he from"node:path";import{promisify as Ax}from"node:util";import L0 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]="c7589997-de92-502d-8e61-ac61b67fe6cd")}catch{}})();var M0=Object.freeze({pm_item_scalar_missing:!0});function Pn(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===1&&e.pm_item_scalar_missing===!0}function Y(e){return e===void 0?M0:e}function Ft(e){return Ie(C(e===void 0?{pm_item_scalar_presence:"missing"}:{pm_item_scalar_presence:"present",value:e}))}function Ls(e,t){let n=je(e);if(n)throw new y(`History merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,g.GENERIC_FAILURE);let r=[];for(let[i,a]of e.split(/\r?\n/).entries()){let o=a.trim();if(o)try{let s=JSON.parse(o);if(typeof s!="object"||s===null||Array.isArray(s))throw new TypeError("history entry must be an object");r.push(s)}catch{throw new y(`History merge input (${t}) contains invalid JSON at line ${i+1}.`,g.GENERIC_FAILURE)}}return r}function Be(e){return C({ts:e.ts,author:e.author,op:e.op,patch:e.patch,message:e.message??null})}function j0(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&Be(e[r])===Be(t[r]);)r+=1;return r}function F0(e,t,n,r){let i=[...e,...n],a=new Map(i.map((u,m)=>[u,m])),o=new Map(i.map((u,m)=>[Be(u),m])),s=i.map(()=>new Set);for(let u of[e,t]){let m=u.map(f=>a.get(f)??o.get(Be(f)));for(let f=1;f<m.length;f+=1)m[f-1]!==m[f]&&s[m[f-1]].add(m[f])}let c=i.map(()=>0);for(let u of s)for(let m of u)c[m]+=1;let d=i.map((u,m)=>m).filter(u=>c[u]===0),l=[];for(;d.length>0;){d.sort((m,f)=>{let p=i[m],h=i[f],_=qt(p.ts,h.ts),w=Be(p),v=Be(h);return _||Number(r.has(v))-Number(r.has(w))});let u=d.shift();l.push(i[u]);for(let m of s[u])c[m]-=1,c[m]===0&&d.push(m)}if(l.length!==i.length)throw new y("History union cannot preserve contradictory original branch event orders; leave the file unresolved for manual recovery.",g.GENERIC_FAILURE);return l}function ph(e){return{entries:e,positions:new Map(e.map((t,n)=>[Be(t),n])),index:-1,document:di()}}function zs(e,t){let n=t??e.index;for(;e.index<n;){let r=so(e.document,e.entries[e.index+1].patch);if(!r.ok)throw new y("History union cannot preserve a patch that does not apply in its original branch.",g.GENERIC_FAILURE);e.document=r.document,e.index+=1}return e.document}function fh(e,t){if(t!==void 0&&t>e.index+1)throw new y("History union cannot attribute multiple original branch events to one semantic identity; preserve the source histories for manual recovery.",g.GENERIC_FAILURE);return zs(e,t)}function U0(e,t,n){if(n===0)return;let r=ph(e),i=ph(t),a=zs(r,n-1);zs(i,n-1);let o=0,s=new Set([..._h,...gh]);return(c,d)=>{if(o++<n)return c.patch;let l=Be(c),u=fh(r,r.positions.get(l)),m=fh(i,i.positions.get(l)),f=ui(c.patch).filter(v=>{let[E,k]=v.path.slice(1).split("/");return E!=="metadata"||!s.has(k)}),p=so(d,f);if(!p.ok)throw new y("History union cannot rebase a scalar patch onto the merged replay position; leave the file unresolved for manual recovery.",g.GENERIC_FAILURE);let h=vh(a.metadata,u.metadata,m.metadata,"ours","latest_document_update",String(u.metadata.updated_at),String(m.metadata.updated_at)),_=p.document;for(let v of s)Object.hasOwn(h.merged,v)?_.metadata[v]=h.merged[v]:delete _.metadata[v];let w=li({metadata:_.metadata,body:_.body});return L0.compare(d,w)}}function qj(e,t,n){let r=Ls(e,"base"),i=Ls(t,"ours"),a=Ls(n,"theirs"),o=[r,i,a].map(f=>f.filter(p=>p.op==="create"));if(o[0].length===0&&o.slice(1).every(f=>f.length>0)||o.some(f=>f.length>1)||new Set(o.flat().map(Be)).size>1)throw new y("Duplicate item identity: history contains independent or unproven create events. Preserve both branches and assign distinct item ids before merging.",g.CONFLICT,{code:"item_identity_conflict"});let s=j0(i,a);if(s===i.length&&s===a.length)return{merged:Bt(i),strategy:"identical",common_entries:s,entries_from_ours:0,entries_from_theirs:0,entries_total:i.length,reanchored:!1};if(s===a.length)return{merged:Bt(i),strategy:"fast_forward_ours",common_entries:s,entries_from_ours:i.length-s,entries_from_theirs:0,entries_total:i.length,reanchored:!1};if(s===i.length)return{merged:Bt(a),strategy:"fast_forward_theirs",common_entries:s,entries_from_ours:0,entries_from_theirs:a.length-s,entries_total:a.length,reanchored:!1};let c=i.slice(s),d=new Set(c.map(Be)),l=a.slice(s).filter(f=>!d.has(Be(f))),u=F0(c,a.slice(s),l,d),m=mi([...i.slice(0,s),...u],void 0,{continuousHashSurface:!0,projectPatch:U0(i,a,s)});if(m.skippedOps>0)throw new y(`History union cannot preserve ${m.skippedOps} patch operation(s) after deterministic suffix ordering; leave the file unresolved for manual recovery.`,g.GENERIC_FAILURE);return{merged:Bt(m.entries),strategy:"union_reanchor",common_entries:s,entries_from_ours:c.length,entries_from_theirs:l.length,entries_total:m.entries.length,reanchored:!0}}function Ms(e,t){let n=je(e);if(n)throw new y(`Relationship merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,g.GENERIC_FAILURE);let r=[];for(let[i,a]of e.split(/\r?\n/).entries()){let o=a.trim();if(!o)continue;let s;try{s=JSON.parse(o)}catch{throw new y(`Relationship merge input (${t}) contains invalid JSON at line ${i+1}.`,g.GENERIC_FAILURE)}if(typeof s!="object"||s===null||Array.isArray(s)||typeof s.eventId!="string"||typeof s.sequence!="number")throw new y(`Relationship merge input (${t}) line ${i+1} is not a relationship event (eventId + sequence required).`,g.GENERIC_FAILURE);r.push(s)}return r}function ua(e){return e.length===0?"":`${e.map(t=>JSON.stringify(t)).join(`
|
|
58
58
|
`)}
|
|
59
|
-
`}function H0(e){return e.map((t,n)=>({...t,sequence:n+1}))}function
|
|
59
|
+
`}function H0(e){return e.map((t,n)=>({...t,sequence:n+1}))}function Bj(e,t,n){Ms(e,"base");let r=Ms(t,"ours"),i=Ms(n,"theirs"),a=Math.min(r.length,i.length),o=0;for(;o<a&&r[o].eventId===i[o].eventId;)o+=1;if(o===r.length&&o===i.length)return{merged:ua(r),strategy:"identical",common_entries:o,entries_from_ours:0,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(o===i.length)return{merged:ua(r),strategy:"fast_forward_ours",common_entries:o,entries_from_ours:r.length-o,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(o===r.length)return{merged:ua(i),strategy:"fast_forward_theirs",common_entries:o,entries_from_ours:0,entries_from_theirs:i.length-o,entries_total:i.length,reanchored:!1};let s=r.slice(o),c=new Set(s.map(m=>m.eventId)),d=i.slice(o).filter(m=>!c.has(m.eventId)),l=[...s,...d].sort((m,f)=>{if(m.timestamp!==void 0&&f.timestamp!==void 0){let _=qt(m.timestamp,f.timestamp);if(_!==0)return _}else{if(m.timestamp===void 0&&f.timestamp!==void 0)return 1;if(m.timestamp!==void 0)return-1}let p=c.has(m.eventId),h=c.has(f.eventId);return p!==h?Number(h)-Number(p):0}),u=H0([...r.slice(0,o),...l]);return{merged:ua(u),strategy:"union_reanchor",common_entries:o,entries_from_ours:s.length,entries_from_theirs:d.length,entries_total:u.length,reanchored:!0}}var _h=["tags","dependencies","comments","notes","learnings","files","tests","test_runs","docs","reminders","events"],gh=["acceptance_criteria"],z0=["updated_at"];function rn(e,t){return e===void 0||t===void 0?e===void 0&&t===void 0:C(e)===C(t)}function hh(e,t,n){let r=l=>Array.isArray(l)?l:[],i=new Set(r(e).map(l=>C(l))),a=r(t),o=new Set(a.map(l=>C(l))),s=r(n),c=new Set(s.map(l=>C(l))),d=a.filter(l=>{let u=C(l);return!i.has(u)||c.has(u)});for(let l of s){let u=C(l);!o.has(u)&&!i.has(u)&&d.push(l)}return d}function Ir(e){if(typeof e!="object"||e===null||Array.isArray(e))return C(e);let{provenance:t,...n}=e;return C(n)}function G0(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let t=e;return t.provenance?{...t,provenance:{...t.provenance,source_kind:"merge_union"}}:{...t,provenance:{source_kind:"merge_union"}}}function W0(e,t,n){let r=l=>Array.isArray(l)?l:[],i=new Set(r(e).map(Ir)),a=r(t),o=new Set(a.map(Ir)),s=r(n),c=new Set(s.map(Ir)),d=a.filter(l=>{let u=Ir(l);return!i.has(u)||c.has(u)});for(let l of s){let u=Ir(l);!o.has(u)&&!i.has(u)&&d.push(G0(l))}return d}function q0(e,t){return qt(String(e),String(t))>=0?e:t}function yh(e,t,n,r){return rn(t,n)?{value:t,from_theirs:!1,conflict:!1}:rn(e,t)?{value:n,from_theirs:!0,conflict:!1}:rn(e,n)?{value:t,from_theirs:!1,conflict:!1}:{value:r==="theirs"?n:t,from_theirs:r==="theirs",conflict:!0}}function wh(e,t,n,r,i,a,o){let s=yh(e,t,n,r);if(!s.conflict)return{...s,conflict:!1};if(i==="preferred_side")return{...s,resolution_basis:"requested_preference",retained_side:s.from_theirs?"theirs":"ours"};let c=qt(a,o);if(i==="latest_document_update"&&c!==0){let l=c<0;return{value:l?n:t,from_theirs:l,conflict:!0,resolution_basis:"document_updated_at",retained_side:l?"theirs":"ours"}}let d=C(Y(n)).localeCompare(C(Y(t)))<0;return{value:d?n:t,from_theirs:d,conflict:!0,resolution_basis:"stable_value_tiebreak",retained_side:d?"theirs":"ours"}}function js(e){return{...e.metadata}}function Fs(e,t,n){try{let r=ol(Ct(e,n),n),i=Object.entries(r.metadata).find(([,a])=>Pn(a))?.[0];if(i!==void 0)throw new TypeError(`metadata field ${i} uses the reserved missing-scalar evidence marker`);return r}catch(r){throw new y(`Item merge input (${t}) is not a readable item document: ${String(r)}`,g.GENERIC_FAILURE)}}function B0(e){if(!e.unionFieldSet.has(e.field))return!1;let t=e.field==="tests"?W0(e.baseValue,e.oursValue,e.theirsValue):e.field==="acceptance_criteria"?hh(yi(e.baseValue),yi(e.oursValue),yi(e.theirsValue)).join("; "):hh(e.baseValue,e.oursValue,e.theirsValue);return e.accumulator.merged[e.field]=t,rn(t,e.oursValue)||e.accumulator.unionFields.push(e.field),!0}function V0(e){let t=wh(e.baseValue,e.oursValue,e.theirsValue,e.preferred,e.conflictResolution,e.oursUpdatedAt,e.theirsUpdatedAt);t.value!==void 0&&(e.accumulator.merged[e.field]=t.value),t.conflict?(e.accumulator.conflictFields.push(e.field),e.accumulator.conflictDecisions.push({field:e.field,base:Y(e.baseValue),ours:Y(e.oursValue),theirs:Y(e.theirsValue),retained:Y(t.value),discarded:Y(t.from_theirs?e.oursValue:e.theirsValue),retained_side:t.retained_side,resolution_basis:t.resolution_basis})):t.from_theirs&&e.accumulator.fieldsFromTheirs.push(e.field)}function vh(e,t,n,r,i,a,o){let s=new Set([..._h,...gh]),c=new Set(z0),d=[...new Set([...Object.keys(t),...Object.keys(n)])].sort((u,m)=>u.localeCompare(m)),l={merged:{},conflictFields:[],fieldsFromTheirs:[],unionFields:[],conflictDecisions:[]};for(let u of d){let m=e[u],f=t[u],p=n[u];if(!B0({field:u,baseValue:m,oursValue:f,theirsValue:p,unionFieldSet:s,accumulator:l})){if(c.has(u)){l.merged[u]=q0(f,p);continue}V0({field:u,baseValue:m,oursValue:f,theirsValue:p,preferred:r,conflictResolution:i,oursUpdatedAt:a,theirsUpdatedAt:o,accumulator:l})}}return l}function Vj(e,t,n,r={}){let i=r.preferred??"ours",a=r.conflictResolution??"preferred_side",o=Fs(t,"ours",r),s=Fs(n,"theirs",r);if(e.trim().length===0)throw new y("Duplicate item identity: add/add item documents have no common ancestor. Preserve both branches and assign distinct item ids before merging.",g.CONFLICT,{code:"item_identity_conflict",item_id:o.metadata.id});let c=Fs(e,"base",r);if(c.metadata.id!==o.metadata.id||c.metadata.id!==s.metadata.id)throw new y("Duplicate or mismatched item identity: all merge sides must address the common ancestor's item id.",g.CONFLICT,{code:"item_identity_conflict",item_id:c.metadata.id});let d=js(c),l=js(o),u=js(s),{merged:m,conflictFields:f,fieldsFromTheirs:p,unionFields:h,conflictDecisions:_}=vh(d,l,u,i,a,o.metadata.updated_at,s.metadata.updated_at),w=wh(c.body,o.body,s.body,i,a,o.metadata.updated_at,s.metadata.updated_at);return w.conflict?(f.push("body"),_.push({field:"body",base:Y(c.body),ours:Y(o.body),theirs:Y(s.body),retained:Y(w.value),discarded:Y(w.from_theirs?o.body:s.body),retained_side:w.retained_side,resolution_basis:w.resolution_basis})):w.from_theirs&&p.push("body"),{merged:al({metadata:m,body:w.value},r),conflict_fields:f,fields_from_theirs:p,union_fields:h,conflict_decisions:_,requested_preference:i,requested_preference_applied:a==="preferred_side",conflict_resolution:a}}function Us(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hs(e,t){let n=je(e);if(n)throw new y(`JSON merge input (${t}) contains unresolved conflict markers at line ${n.line}.`,g.GENERIC_FAILURE);if(e.trim().length!==0)try{return JSON.parse(e)}catch{throw new y(`JSON merge input (${t}) is not valid JSON.`,g.GENERIC_FAILURE)}}function J0(e,t,n){if(!Array.isArray(e)||!Array.isArray(t)||!Array.isArray(n))return null;let r=d=>{let l=new Map;for(let u of d){let m=C(u);l.set(m,(l.get(m)??0)+1)}return l},i=r(e),a=r(t),o=r(n);for(let[d,l]of i)if((a.get(d)??0)<l||(o.get(d)??0)<l)return null;let s=new Map(a),c=[];for(let d of n){let l=C(d),u=s.get(l)??0;u>0?s.set(l,u-1):c.push(d)}return{merged:[...t,...c],acceptedTheirs:c.length>0}}function K0(e,t,n,r,i,a,o){if(!Us(t)||!Us(n))return null;let s=Us(e)?e:{},c={},d=[...new Set([...Object.keys(t),...Object.keys(n)])].sort((l,u)=>l.localeCompare(u));for(let l of d){let u=i.length>0?`${i}.${l}`:l,m=Y0(s,t,n,l,r,u,a,o);m!==void 0&&(c[l]=m)}return c}function bh(e,t,n,r,i,a,o){if(rn(t,n))return t;let s=J0(e,t,n);if(s!==null)return s.acceptedTheirs&&o.push(i),s.merged;let c=K0(e,t,n,r,i,a,o);if(c!==null)return c;let d=yh(e,t,n,r);return d.conflict?a.push(i):d.from_theirs&&o.push(i),d.value}function Y0(e,t,n,r,i,a,o,s){let c=Object.prototype.hasOwnProperty.call(t,r),d=Object.prototype.hasOwnProperty.call(n,r),l=Object.prototype.hasOwnProperty.call(e,r);if(c&&d)return bh(e[r],t[r],n[r],i,a,o,s);if(c){if(l&&rn(e[r],t[r])){s.push(a);return}return l?(o.push(a),i==="theirs"?void 0:t[r]):t[r]}if(!(l&&rn(e[r],n[r])))return l?(o.push(a),i==="theirs"?n[r]:void 0):(s.push(a),n[r])}function Jj(e,t,n,r={}){let i=r.preferred??"ours",a=Hs(e,"base"),o=Hs(t,"ours"),s=Hs(n,"theirs"),c=[],d=[],l=bh(a,o,s,i,"",c,d);return{merged:`${JSON.stringify(l??null,null,2)}
|
|
60
60
|
`,conflict_paths:c,paths_from_theirs:d,preferred:i}}import{constants as kh}from"node:fs";import{lstat as X0,open as Z0}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]="b063a672-991a-5251-a2f3-6a1c7bcafd2f")}catch{}})();var Q0={lstat:X0,open:Z0};function ex(e){return e.O_NOFOLLOW??0}async function Rr(e,t,n=Q0){let r=await n.lstat(e);if(r.isSymbolicLink()||!r.isFile()||r.size>t)return null;let i=await n.open(e,kh.O_RDONLY|ex(kh));try{let a=await i.stat();if(!a.isFile()||a.size>t)return null;let o=Buffer.alloc(a.size),s=0;for(;s<o.length;){let{bytesRead:c}=await i.read(o,s,o.length-s,s);if(c===0)break;s+=c}return(await i.stat()).size===a.size&&s===a.size?o.toString("utf8",0,s):null}finally{await i.close()}}import pa from"node:path";import{execFile as tx}from"node:child_process";import{createHash as Eh}from"node:crypto";import{readdir as nx}from"node:fs/promises";import rx from"node:path";import{promisify as ix}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]="af5442e7-c8af-5d81-8c89-7f1a98159cec")}catch{}})();var vt=ix(tx),ma=/^[a-f0-9]{40}(?:[a-f0-9]{24})?$/u;async function aF(e,t,n){let r=t.trim(),i=/^(['"])(.*)\1$/su.exec(r)?.[2]??r;for(let a of["rebase-merge","rebase-apply"])try{let{stdout:o}=await vt("git",["rev-parse","--path-format=absolute","--git-path",`${a}/orig-head`],{cwd:e,timeout:1e4}),s=(await Rr(o.trim(),128))?.trim();if(s===void 0||!ma.test(s))continue;let{stdout:c}=await vt("git",["rev-parse","--verify",`${s}:${i}`],{cwd:e,timeout:1e4}),d=c.trim();return{kind:"rebase",original_head:s,original_blob:d}}catch{}if(n!==void 0&&Object.keys(process.env).some(a=>/^GITHEAD_[a-f0-9]{40}(?:[a-f0-9]{24})?$/u.test(a)))try{let{stdout:a}=await vt("git",["rev-parse","HEAD","ORIG_HEAD"],{cwd:e,timeout:1e4}),[o,s]=a.trim().split(/\r?\n/u);if(o!==s||!ma.test(o))return;let{stdout:c}=await vt("git",["rev-parse","--verify",`${o}:${i}`],{cwd:e,timeout:1e4}),d=c.trim(),l=Eh(d.length===40?"sha1":"sha256").update(`blob ${Buffer.byteLength(n)}\0`).update(n).digest("hex");return d!==l?void 0:{kind:"merge",original_head:o,original_blob:d}}catch{}}function Sh(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;return Object.keys(t).length===3&&(t.kind==="rebase"||t.kind==="merge")&&typeof t.original_head=="string"&&ma.test(t.original_head)&&typeof t.original_blob=="string"&&ma.test(t.original_blob)}async function xh(e,t,n,r){if(r!==void 0&&Eh(n.original_blob.length===40?"sha1":"sha256").update(`blob ${Buffer.byteLength(r)}\0`).update(r).digest("hex")!==n.original_blob)return!1;try{let{stdout:i}=await vt("git",["rev-parse","--absolute-git-dir"],{cwd:e,timeout:1e4}),a=new Set(["rebase-merge","rebase-apply","MERGE_HEAD","CHERRY_PICK_HEAD","REVERT_HEAD"]);if((await nx(i.trim())).some(d=>a.has(d)))return!1;let{stdout:o}=await vt("git",["rev-parse","HEAD"],{cwd:e,timeout:1e4});if(o.trim()!==n.original_head)return!1;let{stdout:s}=await vt("git",["rev-parse","--verify",`HEAD:${t}`],{cwd:e,timeout:1e4});if(s.trim()!==n.original_blob)return!1;let{stdout:c}=await vt("git",["hash-object","--",rx.resolve(e,t)],{cwd:e,timeout:1e4});return c.trim()!==n.original_blob?!1:(await vt("git",["diff","--cached","--quiet","HEAD","--",t],{cwd:e,timeout:1e4}),!0)}catch{return!1}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="35c5d9a8-5ae0-5e97-9ea3-f8a70a5fd7d0")}catch{}})();var ax=/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/u,ox=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/u,ha=2048,sx=64,cx=1e5,dx=new Set(["version","id","item_path","item_id","requested_preference","requested_preference_applied","preferred","conflict_resolution","fields_from_theirs","union_fields","merged_field_hashes","decisions","state","created_at","reconciled_at","value_availability","value_policy","evidence_source","operation","settlement"]);function bt(e){return ax.test(e)}var lx=new Set(["field","base","ours","theirs","retained","discarded","retained_side","resolution_basis"]),_a="bounded_non_sensitive_scalars_v1",ux=new Set(["open","in_progress","blocked","closed","canceled"]),mx=new Set(["risk","confidence","severity"]),px=new Set(["low","medium","high","critical"]),Ih=new Map([["priority",new Set([0,1,2,3,4].map(C))],["status",new Set([...ux].map(C))],...[...mx].map(e=>[e,new Set([...px].map(C))])]);function at(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Rh(e,t){return Object.keys(e).every(n=>t.has(n))}function fa(e){return Array.isArray(e)&&e.length<=ha&&e.every(t=>typeof t=="string"&&t.length>0&&t.length<=256)}function Cr(e){let t=[{value:e,depth:0}],n=0;for(;t.length>0;){let r=t.pop();if(n+=1,n>cx||r.depth>sx)return!1;if(Array.isArray(r.value))for(let i of r.value)t.push({value:i,depth:r.depth+1});else if(at(r.value))for(let i of Object.values(r.value))t.push({value:i,depth:r.depth+1})}return!0}function Ch(e){if(!at(e))return!1;let t=[void 0,"ours","theirs"],n=[void 0,"requested_preference","document_updated_at","stable_value_tiebreak"];return[Rh(e,lx),typeof e.field=="string",typeof e.field=="string"&&e.field.length>0,typeof e.field=="string"&&e.field.length<=256,Object.hasOwn(e,"base"),Object.hasOwn(e,"ours"),Object.hasOwn(e,"theirs"),Object.hasOwn(e,"retained"),Object.hasOwn(e,"discarded"),Cr(e.base),Cr(e.ours),Cr(e.theirs),Cr(e.retained),Cr(e.discarded),t.includes(e.retained_side),n.includes(e.resolution_basis)].every(Boolean)}function fx(e){if(!at(e))return!1;let t=Object.entries(e);return t.length<=ha&&t.every(([n,r])=>n.length>0&&n.length<=256&&typeof r=="string"&&/^[a-f0-9]{64}$/u.test(r))}function hx(e,t){if(typeof e!="string"||e.length===0||e.length>4096||e.includes("\0")||e.includes("\\")||pa.posix.isAbsolute(e))return!1;let n=pa.posix.normalize(e);return n!==".."&&!n.startsWith("../")&&pa.posix.basename(n,pa.posix.extname(n))===t}function _x(e){return!fa(e.fields_from_theirs)||!fa(e.union_fields)||!Array.isArray(e.decisions)||e.decisions.length>ha||!e.decisions.every(Ch)?!1:e.merged_field_hashes===void 0||fx(e.merged_field_hashes)}function gx(e){let t=[void 0,"ours","theirs"],n=[void 0,"preferred_side","stable_value_order","latest_document_update"],r=[void 0,"clone_local","hash_only","bounded_inline","mixed"],i=[void 0,"clone_local","durable"];return t.includes(e.requested_preference)&&t.includes(e.preferred)&&(e.requested_preference_applied===void 0||typeof e.requested_preference_applied=="boolean")&&n.includes(e.conflict_resolution)&&(e.state==="pending"||e.state==="reconciled")&&r.includes(e.value_availability)&&(e.value_policy===void 0||e.value_policy===_a)&&i.includes(e.evidence_source)}function yx(e){return typeof e.created_at=="string"&&fn(e.created_at)&&(e.reconciled_at===void 0||typeof e.reconciled_at=="string"&&fn(e.reconciled_at))}function Ah(e,t){if(!at(t)||ga(t)===void 0)return!1;let n=Object.keys(t);if(!n.every(i=>i==="pm_value_hash"||i==="pm_value"))return!1;if(!Object.hasOwn(t,"pm_value"))return n.length===1;let r=t.pm_value;return(r===null||Ih.get(e)?.has(C(r))===!0)&&Ft(r)===t.pm_value_hash}function wx(e){if(!e.decisions.every(r=>r.base===null&&r.ours===null&&r.theirs===null&&Ah(r.field,r.retained)&&Ah(r.field,r.discarded)))return!1;let t=e.decisions.reduce((r,i)=>r+(at(i.retained)&&Object.hasOwn(i.retained,"pm_value")?1:0)+(at(i.discarded)&&Object.hasOwn(i.discarded,"pm_value")?1:0),0),n=t===0?"hash_only":t===e.decisions.length*2?"bounded_inline":"mixed";return e.value_availability===n&&(t===0||e.value_policy===_a)}function vx(e){return e.operation!==void 0&&!Sh(e.operation)?!1:e.settlement===void 0||e.settlement==="original_git_state_restored"&&e.state==="reconciled"&&e.operation!==void 0}function bx(e){for(let t of["version","id","item_path","item_id","fields_from_theirs","union_fields","decisions","state","created_at"])if(!Object.hasOwn(e,t))return"required_fields";return e.version!==1||!Rh(e,dx)?"required_fields":typeof e.id!="string"||!bt(e.id)?"receipt_id":typeof e.item_id!="string"||!ox.test(e.item_id)?"item_id":hx(e.item_path,e.item_id)?null:"item_path"}function Gs(e,t){if(!at(e))return"required_fields";let n=bx(e);return n!==null?n:vx(e)?_x(e)?gx(e)?yx(e)?t==="durable"&&!wx(e)?"durable_decisions":null:"timestamps":"enums":"collections":"operation"}function Ws(e){if(!at(e)||e.version!==1||e.value_policy!==void 0||!Array.isArray(e.decisions))return e;let t=(e.preferred==="ours"||e.preferred==="theirs")&&e.requested_preference===void 0,n=(e.requested_preference==="ours"||e.requested_preference==="theirs")&&e.value_availability==="clone_local";return!t&&!n?e:{...e,decisions:e.decisions.map(r=>!at(r)||!Object.hasOwn(r,"retained")||!Object.hasOwn(r,"discarded")?r:{base:Y(void 0),ours:Y(void 0),theirs:Y(void 0),...r})}}function Th(e){if(!at(e))return;if(!fa(e.fields_from_theirs))return"fields_from_theirs";if(!fa(e.union_fields))return"union_fields";if(!Array.isArray(e.decisions)||e.decisions.length>ha)return"decisions";let t=e.decisions.findIndex(n=>!Ch(n));return t>=0?`decisions[${t}]`:"merged_field_hashes"}function qs(e,t){return Gs(e,t)===null}function ga(e){if(typeof e!="object"||e===null||Array.isArray(e)||!("pm_value_hash"in e))return;let t=e.pm_value_hash;return typeof t=="string"&&/^[a-f0-9]{64}$/u.test(t)?t:void 0}function Bs(e,t){let n=Pn(t),r=Ft(n?void 0:t);return!n&&(t===null||Ih.get(e)?.has(C(t))===!0)?{pm_value_hash:r,pm_value:t}:{pm_value_hash:r}}(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]="6e5e4691-4858-5a54-82b0-65b97d929b57")}catch{}})();var Ix=Ax(kx),Dh=16*1024*1024,ya=100;async function Vs(e){try{let{stdout:t}=await Ix("git",["rev-parse","--path-format=absolute","--git-path","pm-merge-receipts"],{cwd:e,encoding:"utf8",windowsHide:!0,timeout:1e4});return t.trim()}catch{return null}}async function Ph(e,t){let n=he.dirname(he.resolve(e,t));for(let r=0;r<12;r+=1){if(await O(he.join(n,"settings.json")))return n;let i=he.dirname(n);if(i===n)break;n=i}return null}function Js(e){return he.join(e,"merge-receipts")}function Nn(e){return`${e}.json`}async function $h(e){let t;try{t=e.readReceipt?await e.readReceipt(e.receiptPath):await Rr(e.receiptPath,Dh)}catch(a){if(At(a))return null;throw a}if(t===null)throw new Error(`Receipt ${e.receiptId} settlement source is not a bounded regular file.`);let n;try{n=Ws(JSON.parse(t))}catch{throw new Error(`Receipt ${e.receiptId} settlement source is not valid JSON.`)}if(!qs(n,e.evidenceSource)||n.id!==e.receiptId||e.settlement!==void 0&&n.operation===void 0||he.basename(e.receiptPath)!==Nn(n.id))throw new Error(`Receipt ${e.receiptId} settlement source failed schema or identity validation.`);let{evidence_source:r,...i}=n;return{path:e.receiptPath,fingerprints:Ks(n),modern:n.value_policy!==void 0,content:`${JSON.stringify({...i,state:"reconciled",reconciled_at:e.reconciledAt,...e.settlement?{settlement:e.settlement}:{}},null,2)}
|
|
61
61
|
`}}function Tr(e,t=!1){return Ie(C({id:e.id,item_id:e.item_id,item_path:e.item_path,created_at:e.created_at,requested_preference:e.requested_preference??e.preferred??"ours",requested_preference_applied:e.requested_preference_applied??(e.conflict_resolution??"preferred_side")==="preferred_side",conflict_resolution:e.conflict_resolution??"preferred_side",fields_from_theirs:e.fields_from_theirs,union_fields:e.union_fields,merged_field_hashes:e.merged_field_hashes??null,operation:e.operation??null,decisions:t?e.decisions.map(n=>({field:n.field,retained_hash:Ie(C(Y(n.retained))),discarded_hash:Ie(C(Y(n.discarded)))})):wa(e).decisions}))}function Ks(e){let t=[Tr(e)];return e.value_policy===void 0&&(e.value_availability===void 0||e.value_availability==="clone_local")&&t.push(Tr(e,!0)),t}function Rx(e,t){let{reconciled_at:n,settlement:r,...i}=e;return t.state==="reconciled"?{...i,state:"reconciled",reconciled_at:t.reconciled_at,...t.settlement===void 0?{}:{settlement:t.settlement}}:{...i,state:"pending"}}async function Cx(e,t,n){let r=new Map;for(let i of t){let a=e.get(i.id);if(i.state!=="reconciled"||a===void 0)continue;let o=r.get(a.item_id);if(o===void 0){try{o=await dt(he.join(n,"history",`${a.item_id}.jsonl`),a.item_id),Tt(o).ok||(o=[])}catch{o=[]}r.set(a.item_id,o)}let s=a.settlement==="original_git_state_restored",c=C({...wa(a),...s?{reason:a.settlement,operation:a.operation}:{}});if(!o.some(d=>{if(d.op!=="merge_reconcile"||d.record_hash_version===void 0)return!1;let l=d.context?.merge;if(typeof l!="object"||l===null||Array.isArray(l))return!1;let u=l[s?"abandoned_receipts":"receipts"];return Array.isArray(u)&&u.some(m=>C(m)===c)})){let{reconciled_at:d,settlement:l,...u}=a;e.set(a.id,{...u,state:"pending"})}}}function wa(e){return{receipt_id:e.id,item_id:e.item_id,item_path:e.item_path,conflict_fields:e.decisions.map(t=>t.field),fields_from_theirs:e.fields_from_theirs,union_fields:e.union_fields,requested_preference:e.requested_preference??e.preferred??"ours",requested_preference_applied:e.requested_preference_applied??(e.conflict_resolution??"preferred_side")==="preferred_side",conflict_resolution:e.conflict_resolution,decisions:e.decisions.map(t=>({field:t.field,retained_hash:ga(t.retained)??Ft(Pn(t.retained)?void 0:t.retained),discarded_hash:ga(t.discarded)??Ft(Pn(t.discarded)?void 0:t.discarded)}))}}async function IF(e){let t=await Vs(e.cwd);if(t===null)return null;let n=e.itemPath.trim(),r=/^(['"])(.*)\1$/su.exec(n)?.[2]??n,i=he.basename(r,he.extname(r)),a={version:1,id:Ex(),item_path:r.replaceAll("\\","/"),item_id:i,requested_preference:e.preferred,requested_preference_applied:(e.conflictResolution??"preferred_side")==="preferred_side",conflict_resolution:e.conflictResolution??"preferred_side",fields_from_theirs:[...e.fieldsFromTheirs],union_fields:[...e.unionFields],...e.mergedFieldHashes?{merged_field_hashes:{...e.mergedFieldHashes}}:{},decisions:structuredClone(e.decisions).map(s=>({...s,base:Y(s.base),ours:Y(s.ours),theirs:Y(s.theirs),retained:Y(s.retained),discarded:Y(s.discarded)})),...e.operation?{operation:e.operation}:{},state:"pending",created_at:$(),value_availability:"clone_local"};await Vn(t),await Z(he.join(t,Nn(a.id)),`${JSON.stringify(a,null,2)}
|
|
62
62
|
`);let o=await Ph(e.cwd,a.item_path);if(o!==null){let s=Js(o),c=a.decisions.map(u=>({field:u.field,base:null,ours:null,theirs:null,retained:Bs(u.field,u.retained),discarded:Bs(u.field,u.discarded),retained_side:u.retained_side,resolution_basis:u.resolution_basis})),d=c.reduce((u,m)=>u+(Object.hasOwn(m.retained,"pm_value")?1:0)+(Object.hasOwn(m.discarded,"pm_value")?1:0),0),l={...a,decisions:c,value_availability:d===0?"hash_only":d===c.length*2?"bounded_inline":"mixed",value_policy:_a};await Vn(s),await Z(he.join(s,Nn(a.id)),`${JSON.stringify(l,null,2)}
|
|
@@ -72,5 +72,5 @@ ${a}`,g.GENERIC_FAILURE)}}function Ha(e){return typeof e.tag=="string"&&e.tag.tr
|
|
|
72
72
|
`)}catch{}}function qT(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 BT(e,t,n,r){let i=[];return{candidates:await Fl(e,t,n,i,r),warnings:i}}async function Xc(e,t,n,r,i){let a=sn(H()),o=[];for(let s of t)if(!(i&&!i.has(s.metadata.id))){if(typeof s.body=="string"){o.push({metadata:s.metadata,body:s.body});continue}try{let c=await zT.readFile(s.item_path,"utf8"),d=Ct(c,{format:s.item_format,schema:n,extensionFieldNames:a,onWarning:l=>r.push(l)});o.push({metadata:s.metadata,body:d.body})}catch{r.push(`item_list_item_read_failed:${Fr.relative(e,s.item_path)}`),o.push({metadata:s.metadata,body:""})}}return o}function VT(e,t,n){let r=e.metadata;return{id:r.id,mode:t,updated_at:r.updated_at,corpus:zl(e,{fields:n})}}var qn=ee;function JT(e){let t=H(),n=qn(e.search?.provider);if(!n)return null;let r=bl(t,n);if(!r)return null;let i=r.runtime_definition??r.definition,a=qn(i.name)??qn(r.definition.name);if(!a)return null;let o=i.embedBatch,s=i.embed_batch,c=i.embed,d=typeof o=="function"?o:typeof s=="function"?s:void 0,l=typeof c=="function"?c:void 0;return!d&&!l?null:{name:a,embedBatch:d,embed:l}}function KT(e){let t=H(),n=qn(e.vector_store?.adapter);if(!n)return null;let r=kl(t,n);if(!r)return null;let i=r.runtime_definition??r.definition,a=qn(i.name)??qn(r.definition.name);if(!a)return null;let o=i.upsert,s=i.delete;return{adapterName:a,...typeof o=="function"?{upsert:o}:{},...typeof s=="function"?{delete:s}:{}}}function Yc(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 YT(e,t,n){let r=t.search?.embedding_model?.trim()||"text-embedding-3-small";if(e.embedBatch){let a=await Promise.resolve(e.embedBatch({inputs:n,settings:t,model:r}));if(!Array.isArray(a))throw new y(`Extension search provider "${e.name}" embedBatch must return an array of vectors`,g.GENERIC_FAILURE);return a.map((o,s)=>Yc(o,`extension search provider "${e.name}" embedBatch output at index ${s}`))}if(!e.embed)throw new y(`Extension search provider "${e.name}" does not implement embed/embedBatch`,g.GENERIC_FAILURE);let i=[];for(let[a,o]of n.entries()){let s=await Promise.resolve(e.embed({input:o,settings:t,model:r}));i.push(Yc(s,`extension search provider "${e.name}" embed output at index ${a}`))}return i}function ry(e){return e.search?.embedding_model?.trim()||"text-embedding-3-small"}function iy(e,t,n){let r=n?Vt(n.name,ry(e)):t?Vt(t.name,t.model):null;if(!r)throw new y("No embedding identity available for semantic reindex mode",g.USAGE);return r}function XT(e,t){return Object.keys(e).filter(n=>!t.has(n)).sort((n,r)=>n.localeCompare(r))}async function ay(e,t,n,r,i,a,o,s){let c=r?.name??n?.name,d=Gl(c,e.search.embedding_corpus_max_characters).maxCharacters,l=po(e),u=i.map(p=>Wl(p,{providerName:c,maxCharacters:d,fields:l})),m=[],f=null;if(r)try{m=await YT(r,e,u),f=Vt(r.name,ry(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);a.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 ql(n,e,u,{onProgress:h=>{h.phase==="complete"&&(o.batches_completed=h.batch_index),de(s,`embedding_batch_${h.phase} batch=${h.batch_index}/${h.batch_total} size=${h.batch_size} completed_inputs=${h.completed_inputs}/${h.total_inputs}`)}});a.push(...p.warnings),o.batching=p.receipt,m=p.vectors,f=Vt(n.name,n.model)}if(de(s,`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 ZT(e,t,n,r,i,a){let o=Object.keys(n);if(t){if(o.length>0&&t.delete)try{await Promise.resolve(t.delete({ids:o.sort((s,c)=>s.localeCompare(c)),settings:r}))}catch(s){throw new y(`Extension vector adapter "${t.adapterName}" failed to delete vectors during reindex reset: ${s instanceof Error?s.message:String(s)}`,g.GENERIC_FAILURE)}else o.length>0&&i.push(`search_semantic_reindex_reset_skipped:adapter=${t.adapterName}:known_ids=${o.length}`);if(!e)return}e&&await Jl(e,o,{},a)}async function oy(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(a){throw new y(`Extension vector adapter "${t.adapterName}" failed to delete orphan vectors during reindex: ${a instanceof Error?a.message:String(a)}`,g.GENERIC_FAILURE)}else i.push(`search_semantic_reindex_orphan_prune_skipped:adapter=${t.adapterName}:count=${n.length}`);if(!e)return}e&&await Vl(e,n)}}function QT(e){return{enabled:e!=="keyword",stale_items:0,unchanged_items:0,embedded_items:0,vector_upserted:0,batches_completed:0}}function e$(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 t$(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=Ei(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 n$(e){let t=G(e.settings,H()),n=await BT(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 r$(e){let t=await wn(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 iy(e.settings,Zn(e.settings).active,e.extensionEmbedding)}catch{return null}})();n&&yn(t.embedding,n)&&(e.reindexWarnings.push("search_semantic_reindex_requires_rebuild:embedding_identity_changed"),e.reindexWarnings.push(GT))}async function i$(e){let t=await wn(e.pmRoot);e.semanticWarnings.push(...t.warnings);let n=iy(e.settings,e.activeEmbeddingProvider,e.extensionEmbedding),r=new Set(e.metadataDocuments.map(d=>d.metadata.id)),i=XT(t.entries,r),a=yn(t.embedding,n);e.forceFullSemantic&&!a&&e.semanticWarnings.push("search_semantic_reindex_full_rebuild_forced");let o=e.forceFullSemantic||a?e.metadataDocuments:e.metadataDocuments.filter(d=>t.entries[d.metadata.id]!==d.metadata.updated_at),s=new Set(o.map(d=>d.metadata.id)),c=s.size>0?await Xc(e.pmRoot,e.documentCandidates,e.settings.schema,e.reindexWarnings,s):[];return{ledgerEntries:t.entries,ledgerEmbedding:t.embedding,orphanIds:i,resetRequired:a,staleDocuments:c,freshDocuments:e.metadataDocuments.length-c.length}}async function a$(e){let t=new Set(e.metadataDocuments.map(i=>i.metadata.id)),n=await Xc(e.pmRoot,e.documentCandidates,e.settings.schema,e.reindexWarnings,t);e.semanticSummary.stale_items=n.length,e.semanticSummary.unchanged_items=0,de(e.progressEnabled,`embedding_dimension_changed reset_items=${n.length}`);let r=await ay(e.settings,e.requestedMode,e.activeEmbeddingProvider,e.extensionEmbedding,n,e.semanticWarnings,e.semanticSummary,e.progressEnabled);return{...r,staleDocuments:n,vectorDimension:fo(r.vectors,"Reindex embeddings")}}async function o$(e){let t=await ay(e.settings,e.requestedMode,e.activeEmbeddingProvider,e.extensionEmbedding,e.staleDocuments,e.semanticWarnings,e.semanticSummary,e.progressEnabled),n=t.vectors,r=t.embeddingIdentity,i=fo(n,"Reindex embeddings");if(!(!e.resetRequired&&(yn(e.ledgerEmbedding,r)||Yl(e.ledgerEmbedding,i))))return{vectors:n,embeddingIdentity:r,staleDocuments:e.staleDocuments,vectorDimension:i,resetRequired:e.resetRequired};let a=await a$(e);return n=a.vectors,r=a.embeddingIdentity,i=a.vectorDimension,{vectors:n,embeddingIdentity:r,staleDocuments:a.staleDocuments,vectorDimension:i,resetRequired:!0}}async function s$(e){if(e.extensionVectorAdapter)try{let t=e.extensionVectorAdapter.adapterName;if(de(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,de(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)})`),de(e.progressEnabled,"vector_upsert_fallback built_in_store")}if(e.activeVectorStore){de(e.progressEnabled,`vector_upsert_start adapter=${e.activeVectorStore.name} points=${e.points.length}`),await Bl(e.activeVectorStore,e.points),e.semanticSummary.vector_upserted=e.points.length,de(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 c$(e,t){return e.map((n,r)=>({id:n.metadata.id,vector:Yc(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 d$(e){de(e.progressEnabled,`embedding_start items=${e.plan.staleDocuments.length} unchanged_items=${e.plan.freshDocuments}`);let t=await o$({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?(de(e.progressEnabled,"vector_reset_start"),await ZT(e.activeVectorStore,e.extensionVectorAdapter,e.plan.ledgerEntries,e.settings,e.semanticWarnings,e.plan.ledgerEmbedding?t.vectorDimension:void 0),de(e.progressEnabled,"vector_reset_complete")):await oy(e.activeVectorStore,e.extensionVectorAdapter,e.plan.orphanIds,e.settings,e.semanticWarnings);let n=c$(t.staleDocuments,t.vectors);return e.semanticSummary.embedded_items=t.vectors.length,await s$({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:Kl(t.embeddingIdentity,t.vectorDimension)}}async function l$(e){let t=await i$(e);e.semanticSummary.stale_items=t.staleDocuments.length,e.semanticSummary.unchanged_items=t.freshDocuments;let n=Object.fromEntries(e.metadataDocuments.map(a=>[a.metadata.id,a.metadata.updated_at]));if(de(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 de(e.progressEnabled,`embedding_skipped unchanged_items=${t.freshDocuments}`),e.semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${t.freshDocuments}`),await oy(e.activeVectorStore,e.extensionVectorAdapter,t.orphanIds,e.settings,e.semanticWarnings),{documentsForKeywordArtifacts:e.documentsForKeywordArtifacts,vectorizationLedgerEntries:n,vectorizationEmbeddingMetadata:t.ledgerEmbedding};let r=await d$({...e,plan:t});t.freshDocuments>0&&e.semanticWarnings.push(`search_semantic_reindex_skipped_unchanged:count=${t.freshDocuments}`);let i=new Map(r.staleDocuments.map(a=>[a.metadata.id,a]));return{documentsForKeywordArtifacts:e.metadataDocuments.map(a=>i.get(a.metadata.id)??a),vectorizationLedgerEntries:n,vectorizationEmbeddingMetadata:r.embeddingMetadata}}async function u$(e){let t=Fr.join(e.pmRoot,Jc),n=Fr.join(e.pmRoot,Kc),r=po(e.settings),i=e.documentsForKeywordArtifacts.map(o=>JSON.stringify(VT(o,e.mode,r))).join(`
|
|
73
73
|
`);de(e.progressEnabled,"writing keyword artifacts"),await Z(t,`${JSON.stringify(e.manifest,null,2)}
|
|
74
74
|
`),await Z(n,`${i}
|
|
75
|
-
`);let a=[];if(e.mode!=="keyword")try{de(e.progressEnabled,"writing vectorization status ledger"),await Xl(e.pmRoot,e.vectorizationLedgerEntries,e.vectorizationEmbeddingMetadata)}catch(o){a.push(`search_vectorization_status_ledger_write_failed:${o instanceof Error?o.message:String(o)}`)}return a}async function x2(e,t){let n=qT(e.mode),r=WT(e),i=e.full===!0;de(r,`start mode=${n}`);let a=L(process.cwd(),t.path);await ne(a);let o=vi(await T(a)).settings,s=null;try{s=await te(a,Tl,o.locks.ttl_seconds,W(void 0,"pm-reindex"),!1,o.governance.force_required_for_stale_lock,o.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=JT(o),d=KT(o),l=t$({requestedMode:n,pmRoot:a,settings:o,extensionEmbedding:c,extensionVectorAdapter:d}),u=n;de(r,"loading item corpus");let m=await n$({pmRoot:a,settings:o}),f=m.warnings,{documentCandidates:p,metadataDocuments:h}=m;de(r,`loaded_items=${h.length}`);let _=$(),w=e$(u,_,h),v=Fr.join(a,Jc),E=Fr.join(a,Kc),k=u==="keyword"?await Xc(a,p,o.schema,f):h,x=[],D={},S=null,b=QT(u);if(u==="keyword"&&await r$({pmRoot:a,settings:o,forceFullSemantic:i,extensionEmbedding:c,reindexWarnings:f}),u!=="keyword"){let R=await l$({pmRoot:a,settings:o,requestedMode:n,activeEmbeddingProvider:l.activeEmbeddingProvider,activeVectorStore:l.activeVectorStore,extensionEmbedding:c,extensionVectorAdapter:d,documentCandidates:p,metadataDocuments:h,documentsForKeywordArtifacts:k,forceFullSemantic:i,reindexWarnings:f,semanticWarnings:x,semanticSummary:b,progressEnabled:r});k=R.documentsForKeywordArtifacts,D=R.vectorizationLedgerEntries,S=R.vectorizationEmbeddingMetadata}let N=await u$({pmRoot:a,mode:u,manifest:w,documentsForKeywordArtifacts:k,settings:o,vectorizationLedgerEntries:D,vectorizationEmbeddingMetadata:S,progressEnabled:r}),A=[...await X({path:v,scope:"project",op:"reindex:manifest"}),...await X({path:E,scope:"project",op:"reindex:embeddings"}),...await Qr({mode:u,total_items:h.length})];return de(r,"done"),{ok:!0,mode:u,total_items:h.length,semantic:b,artifacts:{manifest:Jc,embeddings:Kc},warnings:[...f,...x,...N,...A],generated_at:_}}finally{await s?.()}}export{M as a,$e as b,Qe as c,vn as d,lu as e,mu as f,Jt as g,yo as h,gy as i,bo as j,ko as k,_u as l,kn as m,tr as n,So as o,Ly as p,ku as q,nr as r,xo as s,Ti as t,Ao as u,Su as v,xu as w,Au as x,mp as y,fP as z,Rv as A,Cv as B,nt as C,JP as D,Zv as E,Fy as F,A$ as G,Cu as H,zy as I,B$ as J,Ub as K,ZN as L,tL as M,nL as N,fr as O,rL as P,iL as Q,aL as R,oL as S,sL as T,cL as U,dL as V,lL as W,uL as X,mL as Y,pL as Z,As as _,Ps as $,GD as aa,Sm as ba,By as ca,Pi as da,IO as ea,P as fa,oe as ga,RO as ha,Co as ia,CO as ja,TO as ka,Uu as la,$O as ma,OO as na,DO as oa,sw as pa,PO as qa,NO as ra,To as sa,LO as ta,MO as ua,Ro as va,jO as wa,FO as xa,zu as ya,UO as za,dw as Aa,qu as Ba,YO as Ca,or as Da,XO as Ea,_w as Fa,gw as Ga,ZO as Ha,yw as Ia,M_ as Ja,rD as Ka,Zu as La,F_ as Ma,Nz as Na,Lz as Oa,sr as Pa,Mi as Qa,em as Ra,tm as Sa,nm as Ta,rm as Ua,sm as Va,dm as Wa,lm as Xa,pm as Ya,Ft as Za,
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
`);let a=[];if(e.mode!=="keyword")try{de(e.progressEnabled,"writing vectorization status ledger"),await Xl(e.pmRoot,e.vectorizationLedgerEntries,e.vectorizationEmbeddingMetadata)}catch(o){a.push(`search_vectorization_status_ledger_write_failed:${o instanceof Error?o.message:String(o)}`)}return a}async function x2(e,t){let n=qT(e.mode),r=WT(e),i=e.full===!0;de(r,`start mode=${n}`);let a=L(process.cwd(),t.path);await ne(a);let o=vi(await T(a)).settings,s=null;try{s=await te(a,Tl,o.locks.ttl_seconds,W(void 0,"pm-reindex"),!1,o.governance.force_required_for_stale_lock,o.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=JT(o),d=KT(o),l=t$({requestedMode:n,pmRoot:a,settings:o,extensionEmbedding:c,extensionVectorAdapter:d}),u=n;de(r,"loading item corpus");let m=await n$({pmRoot:a,settings:o}),f=m.warnings,{documentCandidates:p,metadataDocuments:h}=m;de(r,`loaded_items=${h.length}`);let _=$(),w=e$(u,_,h),v=Fr.join(a,Jc),E=Fr.join(a,Kc),k=u==="keyword"?await Xc(a,p,o.schema,f):h,x=[],D={},S=null,b=QT(u);if(u==="keyword"&&await r$({pmRoot:a,settings:o,forceFullSemantic:i,extensionEmbedding:c,reindexWarnings:f}),u!=="keyword"){let R=await l$({pmRoot:a,settings:o,requestedMode:n,activeEmbeddingProvider:l.activeEmbeddingProvider,activeVectorStore:l.activeVectorStore,extensionEmbedding:c,extensionVectorAdapter:d,documentCandidates:p,metadataDocuments:h,documentsForKeywordArtifacts:k,forceFullSemantic:i,reindexWarnings:f,semanticWarnings:x,semanticSummary:b,progressEnabled:r});k=R.documentsForKeywordArtifacts,D=R.vectorizationLedgerEntries,S=R.vectorizationEmbeddingMetadata}let N=await u$({pmRoot:a,mode:u,manifest:w,documentsForKeywordArtifacts:k,settings:o,vectorizationLedgerEntries:D,vectorizationEmbeddingMetadata:S,progressEnabled:r}),A=[...await X({path:v,scope:"project",op:"reindex:manifest"}),...await X({path:E,scope:"project",op:"reindex:embeddings"}),...await Qr({mode:u,total_items:h.length})];return de(r,"done"),{ok:!0,mode:u,total_items:h.length,semantic:b,artifacts:{manifest:Jc,embeddings:Kc},warnings:[...f,...x,...N,...A],generated_at:_}}finally{await s?.()}}export{M as a,$e as b,Qe as c,vn as d,lu as e,mu as f,Jt as g,yo as h,gy as i,bo as j,ko as k,_u as l,kn as m,tr as n,So as o,Ly as p,ku as q,nr as r,xo as s,Ti as t,Ao as u,Su as v,xu as w,Au as x,mp as y,fP as z,Rv as A,Cv as B,nt as C,JP as D,Zv as E,Fy as F,A$ as G,Cu as H,zy as I,B$ as J,Ub as K,ZN as L,tL as M,nL as N,fr as O,rL as P,iL as Q,aL as R,oL as S,sL as T,cL as U,dL as V,lL as W,uL as X,mL as Y,pL as Z,As as _,Ps as $,GD as aa,Sm as ba,By as ca,Pi as da,IO as ea,P as fa,oe as ga,RO as ha,Co as ia,CO as ja,TO as ka,Uu as la,$O as ma,OO as na,DO as oa,sw as pa,PO as qa,NO as ra,To as sa,LO as ta,MO as ua,Ro as va,jO as wa,FO as xa,zu as ya,UO as za,dw as Aa,qu as Ba,YO as Ca,or as Da,XO as Ea,_w as Fa,gw as Ga,ZO as Ha,yw as Ia,M_ as Ja,rD as Ka,Zu as La,F_ as Ma,Nz as Na,Lz as Oa,sr as Pa,Mi as Qa,em as Ra,tm as Sa,nm as Ta,rm as Ua,sm as Va,dm as Wa,lm as Xa,pm as Ya,Ft as Za,qj as _a,Bj as $a,Vj as ab,Jj as bb,aF as cb,xh as db,wa as eb,IF as fb,kt as gb,RF as hb,CF as ib,Dx as jb,Mx as kb,Fh as lb,jw as mb,hm as nb,Qs as ob,kU as pb,EU as qb,Fi as rb,Ui as sb,u_ as tb,bH as ub,m_ as vb,f_ as wb,h_ as xb,y_ as yb,v_ as zb,cR as Ab,dR as Bb,Uz as Cb,Hz as Db,zz as Eb,Gz as Fb,uR as Gb,mR as Hb,pR as Ib,Wz as Jb,z_ as Kb,hR as Lb,G_ as Mb,wc as Nb,q_ as Ob,_R as Pb,gR as Qb,yR as Rb,B_ as Sb,vc as Tb,Yz as Ub,Xz as Vb,Sc as Wb,xc as Xb,cG as Yb,dG as Zb,lG as _b,YR as $b,bW as ac,Dg as bc,Lr as cc,Lg as dc,Mg as ec,jg as fc,Uc as gc,iT as hc,rq as ic,Aq as jc,Pq as kc,Yg as lc,Xg as mc,Zg as nc,i2 as oc,g2 as pc,y2 as qc,w2 as rc,x2 as sc};
|
|
76
|
+
//# sourceMappingURL=chunk-YJNKISEI.js.map
|