@unbrained/pm-cli 2026.10.9 → 2026.10.11

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.
Files changed (130) hide show
  1. package/.claude-plugin/marketplace.json +1 -36
  2. package/CHANGELOG.md +32 -4
  3. package/dist/cli/register-mutation.js +2 -2
  4. package/dist/cli-bundle/bundle-manifest.json +1 -382
  5. package/dist/cli-bundle/chunks/{chunk-P5NS7EFC.js → chunk-2JYTSTQP.js} +2 -2
  6. package/dist/cli-bundle/chunks/{chunk-ZNXRGATT.js → chunk-BXSXT5Z6.js} +2 -2
  7. package/dist/cli-bundle/chunks/{chunk-QQHNXCO3.js → chunk-ESRACL6K.js} +2 -2
  8. package/dist/cli-bundle/chunks/{chunk-5MOFELIF.js → chunk-K2UTE75T.js} +2 -2
  9. package/dist/cli-bundle/chunks/{chunk-55MK3QQM.js → chunk-KNW3RSLS.js} +3 -3
  10. package/dist/cli-bundle/chunks/chunk-MEWBSWE3.js +2 -0
  11. package/dist/cli-bundle/chunks/{chunk-KOGF6O6W.js → chunk-OBLO45UM.js} +2 -2
  12. package/dist/cli-bundle/chunks/{chunk-XW3BLWFF.js → chunk-RBPOO46D.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-E4XR5LKU.js → chunk-RUT3CCAG.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-CPZOW6L2.js → chunk-S445XEYT.js} +2 -2
  15. package/dist/cli-bundle/chunks/{chunk-5NR6TDYB.js → chunk-SSY4OSJR.js} +2 -2
  16. package/dist/cli-bundle/chunks/{chunk-5TCQ5J3V.js → chunk-YMLF6QT7.js} +75 -75
  17. package/dist/cli-bundle/chunks/{chunk-NIF7JOPW.js → chunk-ZWRLAOA4.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-list-query-2YOWMNWY.js → register-list-query-T6BOR67M.js} +2 -2
  19. package/dist/cli-bundle/chunks/register-mutation-6NXR7SAJ.js +20 -0
  20. package/dist/cli-bundle/chunks/{register-operations-BMK65YM3.js → register-operations-PDOBQZUJ.js} +2 -2
  21. package/dist/cli-bundle/chunks/{register-setup-24TFFK6N.js → register-setup-MAYFPKBX.js} +2 -2
  22. package/dist/cli-bundle/focused-chunks/{chunk-362645PL.js → chunk-52UJEHEV.js} +2 -2
  23. package/dist/cli-bundle/focused-chunks/{chunk-EZ4367G4.js → chunk-EIOQNLBQ.js} +2 -2
  24. package/dist/cli-bundle/focused-chunks/{chunk-SAN3KPX4.js → chunk-GVGFUD52.js} +2 -2
  25. package/dist/cli-bundle/focused-chunks/{chunk-DSLNUL2Q.js → chunk-JGFSSR3G.js} +16 -16
  26. package/dist/cli-bundle/focused-chunks/{chunk-IARAEFMA.js → chunk-KNJR2WUO.js} +2 -2
  27. package/dist/cli-bundle/focused-chunks/chunk-MJQ253F3.js +2 -0
  28. package/dist/cli-bundle/focused-chunks/{chunk-MCVWZUGK.js → chunk-SIEGIPNT.js} +28 -28
  29. package/dist/cli-bundle/main.js +2 -2
  30. package/dist/cli-bundle/sdk-contracts.js +1 -1
  31. package/dist/cli-bundle/sdk-core.js +1 -1
  32. package/dist/cli-bundle/sdk-governance.js +1 -1
  33. package/dist/cli-bundle/sdk-graph.js +1 -1
  34. package/dist/cli-bundle/sdk-merge.js +51 -51
  35. package/dist/cli-bundle/sdk-query.js +1 -1
  36. package/dist/cli-bundle/sdk-runtime.js +1 -1
  37. package/dist/cli-bundle/sdk-testing.js +1 -1
  38. package/dist/cli-bundle/sdk.js +9 -9
  39. package/dist/core/item/item-format.d.ts +2 -0
  40. package/dist/core/item/item-format.js +3 -3
  41. package/dist/core/schema/runtime-field-values.d.ts +2 -2
  42. package/dist/core/schema/runtime-field-values.js +1 -1
  43. package/dist/core/store/item-format-migration.js +1 -1
  44. package/dist/core/store/item-store.js +1 -1
  45. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  46. package/dist/sdk/governance/artifact-ledgers.d.ts +59 -0
  47. package/dist/sdk/governance/artifact-ledgers.js +2 -0
  48. package/dist/sdk/governance/reliability.d.ts +74 -0
  49. package/dist/sdk/governance/reliability.js +2 -0
  50. package/dist/sdk/governance.d.ts +2 -0
  51. package/dist/sdk/governance.js +1 -1
  52. package/dist/sdk/public-surface.json +1 -1
  53. package/dist/sdk/structured-mutations.d.ts +5 -1
  54. package/dist/sdk/structured-mutations.js +1 -1
  55. package/docs/QUALITY_EVIDENCE.md +52 -1
  56. package/docs/RELEASE_LEDGER_RECONCILIATION.md +148 -0
  57. package/docs/RELEASE_RELIABILITY.md +58 -3
  58. package/docs/RELEASING.md +34 -5
  59. package/docs/SDK.md +16 -2
  60. package/docs/TESTING.md +36 -0
  61. package/docs/agent-task-token-baseline.json +1 -291
  62. package/docs/agent-task-transcripts.json +1 -478
  63. package/docs/ecosystem-review-2026-09-28.json +1 -2866
  64. package/docs/examples/policy-restricted-extension/manifest.json +1 -22
  65. package/docs/examples/policy-restricted-extension/package.json +1 -8
  66. package/docs/examples/sdk-agent-environment/package.json +1 -8
  67. package/docs/examples/sdk-app-embedding/package.json +1 -9
  68. package/docs/examples/sdk-contract-consumer/package.json +1 -11
  69. package/docs/examples/sdk-custom-tool/package.json +1 -13
  70. package/docs/examples/starter-extension/manifest.json +1 -33
  71. package/docs/examples/starter-extension/package.json +1 -10
  72. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
  73. package/docs/performance/corpus-shape-comparison.json +1 -108
  74. package/docs/performance/latest-scale-report.json +1 -418
  75. package/docs/performance/scale-100k-report.json +1 -418
  76. package/docs/schemas/extension-manifest.schema.json +1 -165
  77. package/marketplace.json +1 -36
  78. package/package.json +1 -1
  79. package/packages/pm-beads/extensions/beads/manifest.json +1 -28
  80. package/packages/pm-beads/extensions/beads/package.json +1 -3
  81. package/packages/pm-beads/package.json +1 -50
  82. package/packages/pm-calendar/extensions/calendar/manifest.json +1 -22
  83. package/packages/pm-calendar/extensions/calendar/package.json +1 -3
  84. package/packages/pm-calendar/package.json +1 -51
  85. package/packages/pm-command-kit/extensions/command-kit/manifest.json +1 -22
  86. package/packages/pm-command-kit/extensions/command-kit/package.json +1 -3
  87. package/packages/pm-command-kit/package.json +1 -53
  88. package/packages/pm-digital-twin/extensions/digital-twin/manifest.json +1 -19
  89. package/packages/pm-digital-twin/extensions/digital-twin/package.json +1 -3
  90. package/packages/pm-digital-twin/package.json +1 -58
  91. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +1 -19
  92. package/packages/pm-governance-audit/extensions/governance-audit/package.json +1 -3
  93. package/packages/pm-governance-audit/package.json +1 -55
  94. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +1 -22
  95. package/packages/pm-guide-shell/extensions/guide-shell/package.json +1 -3
  96. package/packages/pm-guide-shell/package.json +1 -52
  97. package/packages/pm-kanban/extensions/kanban/manifest.json +1 -19
  98. package/packages/pm-kanban/extensions/kanban/package.json +1 -3
  99. package/packages/pm-kanban/package.json +1 -57
  100. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +1 -19
  101. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +1 -3
  102. package/packages/pm-lifecycle-hooks/package.json +1 -52
  103. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +1 -29
  104. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/package.json +1 -3
  105. package/packages/pm-linked-test-adapters/package.json +1 -53
  106. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +1 -29
  107. package/packages/pm-search-advanced/extensions/search-advanced/package.json +1 -3
  108. package/packages/pm-search-advanced/package.json +1 -54
  109. package/packages/pm-templates/extensions/templates/manifest.json +1 -22
  110. package/packages/pm-templates/extensions/templates/package.json +1 -3
  111. package/packages/pm-templates/package.json +1 -50
  112. package/packages/pm-todos/extensions/todos/manifest.json +1 -29
  113. package/packages/pm-todos/extensions/todos/package.json +1 -3
  114. package/packages/pm-todos/package.json +1 -51
  115. package/packages/pm-vcs/extensions/vcs/manifest.json +1 -19
  116. package/packages/pm-vcs/extensions/vcs/package.json +1 -3
  117. package/packages/pm-vcs/package.json +1 -55
  118. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -25
  119. package/plugins/pm-claude/.mcp.json +1 -8
  120. package/plugins/pm-claude/hooks/hooks.json +1 -17
  121. package/plugins/pm-claude/package.json +1 -9
  122. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -45
  123. package/plugins/pm-codex/.mcp.json +1 -11
  124. package/plugins/pm-codex/mcp.json +1 -11
  125. package/plugins/pm-codex/package.json +1 -9
  126. package/plugins/pm-codex/plugin.json +1 -45
  127. package/runtime-dependencies.json +1 -512
  128. package/dist/cli-bundle/chunks/chunk-N7GKWO4G.js +0 -2
  129. package/dist/cli-bundle/chunks/register-mutation-ILOWFMTV.js +0 -20
  130. package/dist/cli-bundle/focused-chunks/chunk-2ATAD56F.js +0 -2
@@ -1,4 +1,4 @@
1
- import{a as nt,b as Tn,c as gc,d as yc,g as bc,i as qc}from"./chunk-5MOFELIF.js";import{A as ol,P as Qo,Y as rl,d as Ao,e as zc,g as Hc,h as Wc,i as Vc,o as Bc,p as Mt,q as Ge,r as Xo,y as Zo}from"./chunk-P5NS7EFC.js";import{$c as Ko,Aa as mc,Ba as pc,Ca as Sn,Da as uc,Ea as In,Fa as An,Ga as _c,Gb as Nc,Gd as er,Ia as et,J as Le,Ja as fc,Jb as Dc,Jd as ul,Ka as Mo,Kb as Mc,La as En,Mc as zo,Na as tt,Pb as Nt,Pc as Ie,Qc as Kc,Qd as _l,Rc as Wo,Rd as fl,Sc as Jc,Tc as Yc,Uc as ot,Vc as Xc,Wa as hc,Yc as el,Zc as tl,_c as nl,ad as Jo,b as Lo,bd as Yo,ed as al,fc as xn,fd as sl,ga as fn,gd as cl,ha as ic,hd as ll,i as xs,ia as Pt,id as dl,j as Os,ja as h,ka as ac,kd as ml,l as $s,la as sc,ld as pl,mb as vc,mc as Gc,na as Y,nb as kc,oa as cc,oc as Uc,pa as wn,qa as lc,ra as No,sa as Lt,sb as jo,ta as vn,tb as Go,ua as Me,ub as Uo,va as dc,vc as Dt,wa as kn,wb as Sc,xa as U,xb as Ic,ya as Do,yb as qo,za as j}from"./chunk-55MK3QQM.js";import{$a as bn,E as Fs,K as Ps,M as Ne,N as Ls,O as gn,P as Ns,Pa as Qe,Q as De,R as Ds,S as yn,T as Ms,Wa as nc,Z as js,aa as Gs,c as _a,ca as Us,da as qs,db as oc,ea as zs,fa as Hs,ga as Ws,gb as rc,ha as Vs,i as hn,ia as Bs,ja as Ks,ka as Js,la as Ys,ma as Xs,na as Zs,oa as Qs,pa as ec,qa as tc}from"./chunk-5NR6TDYB.js";import{$a as Ac,Ab as Lc,Eb as Se,Fb as jc,Gb as Rn,Kb as Ho,Vc as Vo,Yb as Zc,Zb as Qc,_c as Bo,bd as il,d as pa,f as ua,jb as Ec,kb as Tc,lb as Cc,na as de,ob as Rc,pb as xc,qb as Oc,rb as $c,tb as je,ua as wc,ub as Fc,vb as Pc,yb as Cn}from"./chunk-XW3BLWFF.js";import{$ as oe,$i as ce,$k as za,$l as cs,$m as Ft,A as pi,Ac as go,Ag as Fe,Ak as Ca,Am as un,B as ui,Bb as bi,Bc as yo,Bf as Wi,Bj as ha,Bl as re,Bm as _s,C as _i,Cb as wi,Cc as bo,Cg as Ye,Ck as Ra,D as fi,Db as vi,Dc as wo,Di as Eo,Dj as ga,Dl as Xa,Eb as ki,Ec as $,Ef as Ke,Ei as To,Ej as an,El as Za,Fb as Si,Fj as ya,G as hi,Gb as Ii,Gg as nn,Hb as Ai,Hg as Tt,Hl as $t,Hm as fs,If as Vi,Ig as vo,Ik as xa,Il as Qa,Im as hs,Ja as so,Jc as Ti,Jk as Oa,Jl as es,Ka as co,Kc as Ci,Ki as sa,Kk as $a,Kl as ts,Kn as Fo,La as lo,Lj as ba,Ll as ns,Lo as Rs,Ma as mo,Md as tn,Mm as Ro,Mn as Po,Nc as G,Nh as Ct,Ni as Ze,Nk as Fa,Oh as Rt,Om as xo,Pe as ji,Pj as wa,Ql as Co,R as u,Rc as Ri,Rk as Pa,Rl as os,Sc as xi,Sf as Bi,Sk as La,Sl as Pe,Sm as gs,T as p,Tf as F,Tk as Na,Tm as ys,Ub as It,Ug as Qi,Uj as va,Uk as Da,Ul as rs,Um as bs,V as ye,Va as P,Vb as At,Vg as ea,Vj as ka,Vk as Ma,Vl as is,Vm as ws,W as Be,Wa as Yt,Wc as H,We as Gi,Wg as ta,Wm as vs,X as oo,Xc as en,Xi as ca,Xj as Sa,Xk as ja,Xl as pn,Y as se,Yk as Ga,Ym as ks,Ze as Ui,Zi as la,Zk as Ua,Zl as as,Zm as Ss,_i as da,_j as Ia,_k as qa,_l as ss,_m as Is,aa as kt,aj as ve,al as Ha,an as As,bb as A,bn as _n,cd as Oi,cn as Es,dd as $i,dj as xt,dl as Wa,dn as Oo,eb as we,ee as Ni,el as sn,en as $o,f as J,fb as po,fe as Di,fg as Je,fl as Va,fn as Ts,gf as S,gg as Oe,gi as na,gj as rn,gl as Ba,h as no,ha as gi,hb as xe,hg as Ki,hi as Xe,ie as Mi,ig as Ji,j as di,ja as yi,jg as $e,jj as Ot,jm as ls,ka as be,kf as qi,kg as Yi,kh as ko,ki as on,kj as ma,kl as ke,lc as Xt,lh as R,ll as E,mc as Zt,mf as zi,mi as oa,ml as Ka,na as ro,nc as Qt,nf as te,ng as V,ni as ra,nl as Ja,nm as ds,oi as ia,ok as Aa,p as Jt,pc as Ei,pg as Et,qa as io,qg as Xi,qi as So,ra as St,rd as Fi,ri as Io,rk as Ea,rm as ms,sj as fa,sk as Ta,ta as ao,tf as Hi,tg as Zi,ti as T,u as Ve,ud as Pi,ui as aa,um as le,vc as uo,vl as Ya,w as mi,wl as cn,xc as _o,xd as Li,xl as ln,xm as ps,yc as fo,yl as dn,ym as us,zc as ho,zl as mn,zo as Cs}from"./chunk-5TCQ5J3V.js";import{AsyncLocalStorage as Dg}from"node:async_hooks";import{readFile as _p}from"node:fs/promises";import fp 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]="20a3a324-d176-5918-8167-5e548be4abc9")}catch{}})();var tr="context-intents.json";function On(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hp(e,t,n){if(!On(e))throw new TypeError(`${t} context intent at index ${String(n)} must be an object`);let o=e.included_field_groups;if(typeof e.command!="string"||typeof e.intent!="string"||typeof e.description!="string"||!Array.isArray(o)||!o.every(r=>typeof r=="string")||typeof e.token_budget!="number")throw new TypeError(`${t} context intent at index ${String(n)} has an invalid contract shape`);return{command:e.command,intent:e.intent,description:e.description,included_field_groups:o,token_budget:e.token_budget}}function hl(e,t){let n=Array.isArray(e)?e:On(e)&&Array.isArray(e.intents)?e.intents:void 0;if(!n)throw new TypeError(`${t} context intents must be an array or an object with an intents array`);return n.map((o,r)=>hp(o,t,r))}async function gp(e){let t=fp.join(e,tr),n;try{n=await _p(t,"utf8")}catch(r){if(Be(r))return[];throw await Bi(e),r}let o;try{o=JSON.parse(n)}catch(r){let i=r instanceof Error?r.message:String(r);throw new TypeError(`Invalid ${tr}: ${i}`,{cause:r})}return hl(o,tr)}function yp(e){if(!On(e))return;let t=e.contextIntents??e.context_intents;if(t!==void 0)return t;let n=e.default;return On(n)?n.contextIntents??n.context_intents:void 0}function bp(e){return e.flatMap(t=>{let n=yp(t.module);return n===void 0?[]:hl(n,`package ${t.name}`)})}async function wp(e){let t=await gp(e.pmRoot),n=bp(e.packages??[]);return{workspaceContracts:t,packageContracts:n}}async function $n(e,t){let n=await wp(e);return await Wi(n,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]="0a4abc17-0fcb-573f-8f89-6e505e112261")}catch{}})();async function gl(e,t,n=Hi){try{await n({pmRoot:e,result:t})}catch{if(typeof t=="object"&&t!==null&&!Array.isArray(t)){let o=t,r=Array.isArray(o.warnings)?o.warnings.filter(i=>typeof i=="string"):[];o.warnings=[...new Set([...r,"context_usage_feedback_write_failed"])].sort()}}}import{createHash as Cp}from"node:crypto";import{constants as jt}from"node:fs";import{lstat as yl,mkdir as or,open as bl}from"node:fs/promises";import me 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]="5434ff6f-95af-5983-88cb-fd360d95cb9e")}catch{}})();function nr(e,t){if(typeof e!="string"||e.trim().length===0)throw new TypeError(`Relationship event ${t} must be non-empty`);return e.trim()}function rr(e,t){let n=t.require(e.kind),o=n.direction==="undirected"?[e.source,e.target].sort().join("\0"):`${e.source}\0${e.target}`;return`${n.kind}\0${o}`}function vp(e){return Object.freeze({...e,...e.payload===void 0?{}:{payload:Object.freeze(structuredClone(e.payload))}})}function kp(e,t,n,o){let r=n.require(e.kind),i=o.outgoingOne.get(`${r.kind}\0${e.source}`);if(i!==void 0&&i!==t)throw new TypeError(`Relationship outgoing cardinality exceeded for ${r.kind}`);let a=o.incomingOne.get(`${r.kind}\0${e.target}`);if(a!==void 0&&a!==t)throw new TypeError(`Relationship incoming cardinality exceeded for ${r.kind}`);let s=rr(e,n),c=o.identities.get(s);if(c!==void 0&&c!==t)throw new TypeError(`Relationship edge already active: ${s}`)}function Sp(e){let t=new Map;for(let n of e)n.action==="remove"?t.delete(n.relationshipId):t.set(n.relationshipId,n.edge);return t}function Ip(e,t,n){if(e.expectedVersion!==void 0&&e.expectedVersion!==t)throw new TypeError(`Relationship event version conflict: expected ${e.expectedVersion}, current ${t}`);let o=nr(e.eventId,"eventId");if(n.has(o))throw new TypeError(`Relationship event already exists: ${o}`);if(e.action!=="add"&&e.action!=="remove"&&e.action!=="supersede")throw new TypeError(`Unknown relationship event action: ${e.action}`);if(!Number.isFinite(Date.parse(e.timestamp)))throw new TypeError("Relationship event timestamp must be valid");return{eventId:o,relationshipId:nr(e.relationshipId,"relationshipId"),author:nr(e.author,"author"),timestamp:new Date(e.timestamp).toISOString()}}function Ap(e,t,n,o,r,i){let a=n.has(t);if(e.action==="add"&&a)throw new TypeError(`Relationship is already active: ${t}`);if(e.action!=="add"&&!a)throw new TypeError(`Relationship is not active: ${t}`);if(e.action==="remove")return;if(!e.edge)throw new TypeError(`Relationship ${e.action} event requires an edge`);let s=typeof e.edge.source=="string"?e.edge.source.trim():"",c=typeof e.edge.target=="string"?e.edge.target.trim():"";if(!o.has(s)||!o.has(c))throw new TypeError(`Relationship endpoint not found: ${s} -> ${c}`);let l=new Ve([s,c],[e.edge],r).edges()[0];return kp(l,t,r,i),vp(l)}var Gt=class{#t;#n;#o=[];#i=new Set;#e=new Map;#r={identities:new Map,outgoingOne:new Map,incomingOne:new Map};constructor(t,n={}){this.#t=new Set([...t].filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean)),this.#n=n.registry??Jt()}get version(){return this.#o.length}events(){return Object.freeze([...this.#o])}*stream(t={}){let n=t.fromVersion??1,o=t.toVersion??this.version,r=t.batchSize??100;if(!Number.isInteger(n)||n<1)throw new TypeError("Relationship event stream fromVersion must be positive");if(!Number.isInteger(o)||o<0||o>this.version)throw new TypeError(`Relationship event stream toVersion out of range: ${o}`);if(!Number.isInteger(r)||r<1)throw new TypeError("Relationship event stream batchSize must be positive");if(n>o+1)throw new TypeError("Relationship event stream fromVersion exceeds the selected prefix");for(let i=n-1;i<o;i+=r)yield Object.freeze(this.#o.slice(i,Math.min(i+r,o)))}project(t,n,o={}){if(typeof n!="function")throw new TypeError("Relationship event projection requires a reducer");let r=t,i=0,a;for(let s of this.stream({...o,batchSize:256}))for(let c of s)r=n(r,c),i+=1,a=c;return Object.freeze({state:r,version:a?.sequence??Math.max(0,(o.fromVersion??1)-1),processed:i,...a===void 0?{}:{asOf:a.timestamp}})}#a(t,n){let o=this.#n.require(n.kind);this.#r.identities.set(rr(n,this.#n),t),o.outgoing==="one"&&this.#r.outgoingOne.set(`${o.kind}\0${n.source}`,t),o.incoming==="one"&&this.#r.incomingOne.set(`${o.kind}\0${n.target}`,t)}#s(t){let n=this.#n.require(t.kind);this.#r.identities.delete(rr(t,this.#n)),n.outgoing==="one"&&this.#r.outgoingOne.delete(`${n.kind}\0${t.source}`),n.incoming==="one"&&this.#r.incomingOne.delete(`${n.kind}\0${t.target}`)}append(t){let n=Ip(t,this.version,this.#i),o=this.#e.get(n.relationshipId),r=Ap(t,n.relationshipId,this.#e,this.#t,this.#n,this.#r),i=Object.freeze({eventId:n.eventId,relationshipId:n.relationshipId,action:t.action,...r===void 0?{}:{edge:r},author:n.author,timestamp:n.timestamp,...t.reason?.trim()?{reason:t.reason.trim()}:{},sequence:this.version+1});return this.#o.push(i),this.#i.add(n.eventId),o&&this.#s(o),t.action==="remove"?this.#e.delete(n.relationshipId):(this.#e.set(n.relationshipId,r),this.#a(n.relationshipId,r)),i}snapshot(t={}){if(t.atVersion!==void 0&&t.atTimestamp!==void 0)throw new TypeError("Relationship snapshot accepts one target");let n;if(t.atTimestamp!==void 0){let i=Date.parse(t.atTimestamp);if(!Number.isFinite(i))throw new TypeError("Relationship snapshot timestamp must be valid");n=this.#o.filter(a=>Date.parse(a.timestamp)<=i)}else{let i=t.atVersion??this.version;if(!Number.isInteger(i)||i<0||i>this.version)throw new TypeError(`Relationship snapshot version out of range: ${i}`);n=this.#o.slice(0,i)}let o=Sp(n),r=new Ve(this.#t,o.values(),this.#n);return Object.freeze({version:n.at(-1)?.sequence??0,...n.at(-1)?{asOf:n.at(-1).timestamp}:{},edges:r.edges(),graph:r})}page(t){if(!Number.isInteger(t.limit)||t.limit<1)throw new TypeError("Relationship event page limit must be positive");let n=Fi("relationship-events",{order:"append-sequence"}),o=t.cursor===void 0?this.version:Number(Pi(t.cursor,n).snapshot);if(!Number.isSafeInteger(o)||o<0||o>this.version)throw new TypeError("Relationship event cursor snapshot version is invalid");let r=Li(this.#o.slice(0,o),{cursor:t.cursor,fingerprint:n,limit:t.limit,readId:i=>i.eventId,snapshot:String(o)});return{version:o,events:r.rows,hasMore:r.has_more,...r.next_cursor?{nextCursor:r.next_cursor}:{}}}},Ep="relationship-event-store",wl=jt.O_NOFOLLOW;function Fn(e){return te(e,Ep,30,`relationship-store:${process.pid}`,!1,!1,3e3)}async function Ue(e,t="relationships/events.jsonl"){let n=me.resolve(e),o=me.resolve(n,t),r=me.relative(n,o);if(r.length===0)throw new TypeError("Relationship event path must name a file within the tracker root");if(r===".."||r.startsWith(`..${me.sep}`)||me.isAbsolute(r))throw new TypeError("Relationship event path must stay within the tracker root");if(await or(n,{recursive:!0}),(await yl(n)).isSymbolicLink())throw new TypeError("Relationship event tracker root must not be a symbolic link");let i=n;for(let a of r.split(me.sep)){i=me.join(i,a);try{if((await yl(i)).isSymbolicLink())throw new TypeError("Relationship event path must not contain symbolic links")}catch(s){if(oo(s))break;throw s}}return o}async function Pn(e,t,n){let o=new Gt(t,{registry:n}),r,i;try{i=await bl(e,jt.O_RDONLY|wl),r=await i.readFile("utf8")}catch(s){if(oo(s))return{log:o,raw:""};throw s}finally{await i?.close()}let a=r.split(`
1
+ import{a as nt,b as Tn,c as gc,d as yc,g as bc,i as qc}from"./chunk-K2UTE75T.js";import{A as ol,P as Qo,Y as rl,d as Ao,e as zc,g as Hc,h as Wc,i as Vc,o as Bc,p as Mt,q as Ge,r as Xo,y as Zo}from"./chunk-2JYTSTQP.js";import{$c as Ko,Aa as mc,Ba as pc,Ca as Sn,Da as uc,Ea as In,Fa as An,Ga as _c,Gb as Nc,Gd as er,Ia as et,J as Le,Ja as fc,Jb as Dc,Jd as ul,Ka as Mo,Kb as Mc,La as En,Mc as zo,Na as tt,Pb as Nt,Pc as Ie,Qc as Kc,Qd as _l,Rc as Wo,Rd as fl,Sc as Jc,Tc as Yc,Uc as ot,Vc as Xc,Wa as hc,Yc as el,Zc as tl,_c as nl,ad as Jo,b as Lo,bd as Yo,ed as al,fc as xn,fd as sl,ga as fn,gd as cl,ha as ic,hd as ll,i as xs,ia as Pt,id as dl,j as Os,ja as h,ka as ac,kd as ml,l as $s,la as sc,ld as pl,mb as vc,mc as Gc,na as Y,nb as kc,oa as cc,oc as Uc,pa as wn,qa as lc,ra as No,sa as Lt,sb as jo,ta as vn,tb as Go,ua as Me,ub as Uo,va as dc,vc as Dt,wa as kn,wb as Sc,xa as U,xb as Ic,ya as Do,yb as qo,za as j}from"./chunk-KNW3RSLS.js";import{$a as bn,E as Fs,K as Ps,M as Ne,N as Ls,O as gn,P as Ns,Pa as Qe,Q as De,R as Ds,S as yn,T as Ms,Wa as nc,Z as js,aa as Gs,c as _a,ca as Us,da as qs,db as oc,ea as zs,fa as Hs,ga as Ws,gb as rc,ha as Vs,i as hn,ia as Bs,ja as Ks,ka as Js,la as Ys,ma as Xs,na as Zs,oa as Qs,pa as ec,qa as tc}from"./chunk-SSY4OSJR.js";import{$a as Ac,Ab as Lc,Eb as Se,Fb as jc,Gb as Rn,Kb as Ho,Vc as Vo,Yb as Zc,Zb as Qc,_c as Bo,bd as il,d as pa,f as ua,jb as Ec,kb as Tc,lb as Cc,na as de,ob as Rc,pb as xc,qb as Oc,rb as $c,tb as je,ua as wc,ub as Fc,vb as Pc,yb as Cn}from"./chunk-RBPOO46D.js";import{$ as oe,$i as da,$j as Ia,$k as qa,$l as ss,$m as Is,A as pi,Ac as go,Al as mn,Ao as Cs,B as ui,Bb as bi,Bc as yo,Bf as Wi,Bg as Fe,Bk as Ca,Bm as un,C as _i,Cb as wi,Cc as bo,Cj as ha,Cl as re,Cm as _s,D as fi,Db as vi,Dc as wo,Dg as Ye,Dk as Ra,Eb as ki,Ec as $,Ef as Ke,Ei as Eo,Ej as ga,El as Xa,Fb as Si,Fi as To,Fj as an,Fl as Za,G as hi,Gb as Ii,Gj as ya,Hb as Ai,Hg as nn,If as Vi,Ig as Tt,Il as $t,Im as fs,Ja as so,Jc as Ti,Jg as vo,Jk as xa,Jl as Qa,Jm as hs,Ka as co,Kc as Ci,Kk as Oa,Kl as es,La as lo,Li as sa,Lk as $a,Ll as ts,Ln as Fo,Ma as mo,Md as tn,Mj as ba,Ml as ns,Mo as Rs,Nc as G,Nm as Ro,Nn as Po,Oh as Ct,Oi as Ze,Ok as Fa,Pe as ji,Ph as Rt,Pm as xo,Qj as wa,R as u,Rc as Ri,Rl as Co,Sc as xi,Sf as Bi,Sk as Pa,Sl as os,T as p,Tf as F,Tk as La,Tl as Pe,Tm as gs,Ub as It,Uk as Na,Um as ys,V as ye,Va as P,Vb as At,Vg as Qi,Vj as va,Vk as Da,Vl as rs,Vm as bs,W as Be,Wa as Yt,Wc as H,We as Gi,Wg as ea,Wj as ka,Wk as Ma,Wl as is,Wm as ws,X as oo,Xc as en,Xg as ta,Xm as vs,Y as se,Yi as ca,Yj as Sa,Yk as ja,Yl as pn,Ze as Ui,Zk as Ga,Zm as ks,_i as la,_k as Ua,_l as as,_m as Ss,aa as kt,aj as ce,al as za,am as cs,an as Ft,bb as A,bj as ve,bl as Ha,bn as As,cd as Oi,cn as _n,dd as $i,dn as Es,eb as we,ee as Ni,ej as xt,el as Wa,en as Oo,f as J,fb as po,fe as Di,fg as Je,fl as sn,fn as $o,gf as S,gg as Oe,gl as Va,gn as Ts,h as no,ha as gi,hb as xe,hg as Ki,hi as na,hj as rn,hl as Ba,ie as Mi,ig as Ji,ii as Xe,j as di,ja as yi,jg as $e,ka as be,kf as qi,kg as Yi,kj as Ot,km as ls,lc as Xt,lh as ko,li as on,lj as ma,ll as ke,mc as Zt,mf as zi,mh as R,ml as E,na as ro,nc as Qt,nf as te,ng as V,ni as oa,nl as Ka,oi as ra,ol as Ja,om as ds,p as Jt,pc as Ei,pg as Et,pi as ia,pk as Aa,qa as io,qg as Xi,ra as St,rd as Fi,ri as So,si as Io,sk as Ea,sm as ms,ta as ao,tf as Hi,tj as fa,tk as Ta,u as Ve,ud as Pi,ug as Zi,ui as T,vc as uo,vi as aa,vm as le,w as mi,wl as Ya,xc as _o,xd as Li,xl as cn,yc as fo,yl as ln,ym as ps,zc as ho,zl as dn,zm as us}from"./chunk-YMLF6QT7.js";import{AsyncLocalStorage as Dg}from"node:async_hooks";import{readFile as _p}from"node:fs/promises";import fp 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]="20a3a324-d176-5918-8167-5e548be4abc9")}catch{}})();var tr="context-intents.json";function On(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function hp(e,t,n){if(!On(e))throw new TypeError(`${t} context intent at index ${String(n)} must be an object`);let o=e.included_field_groups;if(typeof e.command!="string"||typeof e.intent!="string"||typeof e.description!="string"||!Array.isArray(o)||!o.every(r=>typeof r=="string")||typeof e.token_budget!="number")throw new TypeError(`${t} context intent at index ${String(n)} has an invalid contract shape`);return{command:e.command,intent:e.intent,description:e.description,included_field_groups:o,token_budget:e.token_budget}}function hl(e,t){let n=Array.isArray(e)?e:On(e)&&Array.isArray(e.intents)?e.intents:void 0;if(!n)throw new TypeError(`${t} context intents must be an array or an object with an intents array`);return n.map((o,r)=>hp(o,t,r))}async function gp(e){let t=fp.join(e,tr),n;try{n=await _p(t,"utf8")}catch(r){if(Be(r))return[];throw await Bi(e),r}let o;try{o=JSON.parse(n)}catch(r){let i=r instanceof Error?r.message:String(r);throw new TypeError(`Invalid ${tr}: ${i}`,{cause:r})}return hl(o,tr)}function yp(e){if(!On(e))return;let t=e.contextIntents??e.context_intents;if(t!==void 0)return t;let n=e.default;return On(n)?n.contextIntents??n.context_intents:void 0}function bp(e){return e.flatMap(t=>{let n=yp(t.module);return n===void 0?[]:hl(n,`package ${t.name}`)})}async function wp(e){let t=await gp(e.pmRoot),n=bp(e.packages??[]);return{workspaceContracts:t,packageContracts:n}}async function $n(e,t){let n=await wp(e);return await Wi(n,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]="0a4abc17-0fcb-573f-8f89-6e505e112261")}catch{}})();async function gl(e,t,n=Hi){try{await n({pmRoot:e,result:t})}catch{if(typeof t=="object"&&t!==null&&!Array.isArray(t)){let o=t,r=Array.isArray(o.warnings)?o.warnings.filter(i=>typeof i=="string"):[];o.warnings=[...new Set([...r,"context_usage_feedback_write_failed"])].sort()}}}import{createHash as Cp}from"node:crypto";import{constants as jt}from"node:fs";import{lstat as yl,mkdir as or,open as bl}from"node:fs/promises";import me 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]="5434ff6f-95af-5983-88cb-fd360d95cb9e")}catch{}})();function nr(e,t){if(typeof e!="string"||e.trim().length===0)throw new TypeError(`Relationship event ${t} must be non-empty`);return e.trim()}function rr(e,t){let n=t.require(e.kind),o=n.direction==="undirected"?[e.source,e.target].sort().join("\0"):`${e.source}\0${e.target}`;return`${n.kind}\0${o}`}function vp(e){return Object.freeze({...e,...e.payload===void 0?{}:{payload:Object.freeze(structuredClone(e.payload))}})}function kp(e,t,n,o){let r=n.require(e.kind),i=o.outgoingOne.get(`${r.kind}\0${e.source}`);if(i!==void 0&&i!==t)throw new TypeError(`Relationship outgoing cardinality exceeded for ${r.kind}`);let a=o.incomingOne.get(`${r.kind}\0${e.target}`);if(a!==void 0&&a!==t)throw new TypeError(`Relationship incoming cardinality exceeded for ${r.kind}`);let s=rr(e,n),c=o.identities.get(s);if(c!==void 0&&c!==t)throw new TypeError(`Relationship edge already active: ${s}`)}function Sp(e){let t=new Map;for(let n of e)n.action==="remove"?t.delete(n.relationshipId):t.set(n.relationshipId,n.edge);return t}function Ip(e,t,n){if(e.expectedVersion!==void 0&&e.expectedVersion!==t)throw new TypeError(`Relationship event version conflict: expected ${e.expectedVersion}, current ${t}`);let o=nr(e.eventId,"eventId");if(n.has(o))throw new TypeError(`Relationship event already exists: ${o}`);if(e.action!=="add"&&e.action!=="remove"&&e.action!=="supersede")throw new TypeError(`Unknown relationship event action: ${e.action}`);if(!Number.isFinite(Date.parse(e.timestamp)))throw new TypeError("Relationship event timestamp must be valid");return{eventId:o,relationshipId:nr(e.relationshipId,"relationshipId"),author:nr(e.author,"author"),timestamp:new Date(e.timestamp).toISOString()}}function Ap(e,t,n,o,r,i){let a=n.has(t);if(e.action==="add"&&a)throw new TypeError(`Relationship is already active: ${t}`);if(e.action!=="add"&&!a)throw new TypeError(`Relationship is not active: ${t}`);if(e.action==="remove")return;if(!e.edge)throw new TypeError(`Relationship ${e.action} event requires an edge`);let s=typeof e.edge.source=="string"?e.edge.source.trim():"",c=typeof e.edge.target=="string"?e.edge.target.trim():"";if(!o.has(s)||!o.has(c))throw new TypeError(`Relationship endpoint not found: ${s} -> ${c}`);let l=new Ve([s,c],[e.edge],r).edges()[0];return kp(l,t,r,i),vp(l)}var Gt=class{#t;#n;#o=[];#i=new Set;#e=new Map;#r={identities:new Map,outgoingOne:new Map,incomingOne:new Map};constructor(t,n={}){this.#t=new Set([...t].filter(o=>typeof o=="string").map(o=>o.trim()).filter(Boolean)),this.#n=n.registry??Jt()}get version(){return this.#o.length}events(){return Object.freeze([...this.#o])}*stream(t={}){let n=t.fromVersion??1,o=t.toVersion??this.version,r=t.batchSize??100;if(!Number.isInteger(n)||n<1)throw new TypeError("Relationship event stream fromVersion must be positive");if(!Number.isInteger(o)||o<0||o>this.version)throw new TypeError(`Relationship event stream toVersion out of range: ${o}`);if(!Number.isInteger(r)||r<1)throw new TypeError("Relationship event stream batchSize must be positive");if(n>o+1)throw new TypeError("Relationship event stream fromVersion exceeds the selected prefix");for(let i=n-1;i<o;i+=r)yield Object.freeze(this.#o.slice(i,Math.min(i+r,o)))}project(t,n,o={}){if(typeof n!="function")throw new TypeError("Relationship event projection requires a reducer");let r=t,i=0,a;for(let s of this.stream({...o,batchSize:256}))for(let c of s)r=n(r,c),i+=1,a=c;return Object.freeze({state:r,version:a?.sequence??Math.max(0,(o.fromVersion??1)-1),processed:i,...a===void 0?{}:{asOf:a.timestamp}})}#a(t,n){let o=this.#n.require(n.kind);this.#r.identities.set(rr(n,this.#n),t),o.outgoing==="one"&&this.#r.outgoingOne.set(`${o.kind}\0${n.source}`,t),o.incoming==="one"&&this.#r.incomingOne.set(`${o.kind}\0${n.target}`,t)}#s(t){let n=this.#n.require(t.kind);this.#r.identities.delete(rr(t,this.#n)),n.outgoing==="one"&&this.#r.outgoingOne.delete(`${n.kind}\0${t.source}`),n.incoming==="one"&&this.#r.incomingOne.delete(`${n.kind}\0${t.target}`)}append(t){let n=Ip(t,this.version,this.#i),o=this.#e.get(n.relationshipId),r=Ap(t,n.relationshipId,this.#e,this.#t,this.#n,this.#r),i=Object.freeze({eventId:n.eventId,relationshipId:n.relationshipId,action:t.action,...r===void 0?{}:{edge:r},author:n.author,timestamp:n.timestamp,...t.reason?.trim()?{reason:t.reason.trim()}:{},sequence:this.version+1});return this.#o.push(i),this.#i.add(n.eventId),o&&this.#s(o),t.action==="remove"?this.#e.delete(n.relationshipId):(this.#e.set(n.relationshipId,r),this.#a(n.relationshipId,r)),i}snapshot(t={}){if(t.atVersion!==void 0&&t.atTimestamp!==void 0)throw new TypeError("Relationship snapshot accepts one target");let n;if(t.atTimestamp!==void 0){let i=Date.parse(t.atTimestamp);if(!Number.isFinite(i))throw new TypeError("Relationship snapshot timestamp must be valid");n=this.#o.filter(a=>Date.parse(a.timestamp)<=i)}else{let i=t.atVersion??this.version;if(!Number.isInteger(i)||i<0||i>this.version)throw new TypeError(`Relationship snapshot version out of range: ${i}`);n=this.#o.slice(0,i)}let o=Sp(n),r=new Ve(this.#t,o.values(),this.#n);return Object.freeze({version:n.at(-1)?.sequence??0,...n.at(-1)?{asOf:n.at(-1).timestamp}:{},edges:r.edges(),graph:r})}page(t){if(!Number.isInteger(t.limit)||t.limit<1)throw new TypeError("Relationship event page limit must be positive");let n=Fi("relationship-events",{order:"append-sequence"}),o=t.cursor===void 0?this.version:Number(Pi(t.cursor,n).snapshot);if(!Number.isSafeInteger(o)||o<0||o>this.version)throw new TypeError("Relationship event cursor snapshot version is invalid");let r=Li(this.#o.slice(0,o),{cursor:t.cursor,fingerprint:n,limit:t.limit,readId:i=>i.eventId,snapshot:String(o)});return{version:o,events:r.rows,hasMore:r.has_more,...r.next_cursor?{nextCursor:r.next_cursor}:{}}}},Ep="relationship-event-store",wl=jt.O_NOFOLLOW;function Fn(e){return te(e,Ep,30,`relationship-store:${process.pid}`,!1,!1,3e3)}async function Ue(e,t="relationships/events.jsonl"){let n=me.resolve(e),o=me.resolve(n,t),r=me.relative(n,o);if(r.length===0)throw new TypeError("Relationship event path must name a file within the tracker root");if(r===".."||r.startsWith(`..${me.sep}`)||me.isAbsolute(r))throw new TypeError("Relationship event path must stay within the tracker root");if(await or(n,{recursive:!0}),(await yl(n)).isSymbolicLink())throw new TypeError("Relationship event tracker root must not be a symbolic link");let i=n;for(let a of r.split(me.sep)){i=me.join(i,a);try{if((await yl(i)).isSymbolicLink())throw new TypeError("Relationship event path must not contain symbolic links")}catch(s){if(oo(s))break;throw s}}return o}async function Pn(e,t,n){let o=new Gt(t,{registry:n}),r,i;try{i=await bl(e,jt.O_RDONLY|wl),r=await i.readFile("utf8")}catch(s){if(oo(s))return{log:o,raw:""};throw s}finally{await i?.close()}let a=r.split(`
2
2
  `);for(let s=0;s<a.length;s+=1){let c=a[s].trim();if(!c)continue;let l;try{l=JSON.parse(c)}catch{throw new TypeError(`Invalid relationship event JSONL at line ${s+1}`)}if(l.sequence!==o.version+1)throw new TypeError(`Invalid relationship event sequence at line ${s+1}`);o.append({eventId:l.eventId,relationshipId:l.relationshipId,action:l.action,...l.edge===void 0?{}:{edge:l.edge},author:l.author,timestamp:l.timestamp,...l.reason===void 0?{}:{reason:l.reason},expectedVersion:o.version})}return{log:o,raw:r}}function Tp(e,t,n,o){let r=Date.parse(t.timestamp),i;return t.action!=="remove"&&t.edge!==void 0&&(i=new Ve(n,[t.edge],o).edges()[0]),e.eventId===t.eventId.trim()&&e.relationshipId===t.relationshipId.trim()&&e.action===t.action&&e.author===t.author.trim()&&Number.isFinite(r)&&e.timestamp===new Date(r).toISOString()&&e.reason===(t.reason?.trim()||void 0)&&It(e.edge)===It(i)}var Ln=class e{#t;#n;#o;#i;#e;constructor(t,n,o,r){this.#t=t.pmRoot,this.#n=n,this.#o=t.registry,this.#i=o,this.#e=r}static async open(t){let n=Object.freeze([...t.nodes]),o=await Ue(t.pmRoot,t.relativePath),r=await Fn(t.pmRoot);try{await Ue(t.pmRoot,o);let{log:i}=await Pn(o,n,t.registry);return new e(t,n,o,i)}finally{await r()}}get path(){return this.#i}async currentVersion(){return this.#e=await this.#r(),this.#e.version}async append(t){let n=await Fn(this.#t);try{let o=await Ue(this.#t,this.#i),{log:r}=await Pn(o,this.#n,this.#o),i=r.append(t);await or(me.dirname(o),{recursive:!0}),await Ue(this.#t,o);let a=await bl(o,jt.O_APPEND|jt.O_CREAT|jt.O_WRONLY|wl);try{await a.appendFile(`${JSON.stringify(i)}
3
3
  `,"utf8")}finally{await a.close()}return this.#e=r,i}finally{await n()}}async appendBatch(t,n={}){let o=await Fn(this.#t);try{let r=await Ue(this.#t,this.#i),{log:i,raw:a}=await Pn(r,this.#n,this.#o),s=i.version,c=new Map(i.events().map(d=>[d.eventId,d])),l=[],m=[];for(let d of t){let _=d.eventId.trim(),f=c.get(_);if(f!==void 0){if(n.existingEventPolicy==="skip_identical"&&Tp(f,d,this.#n,this.#o)){m.push(f.eventId);continue}if(n.existingEventPolicy==="skip_identical")throw new TypeError(`Relationship event id collision with different content: ${_}`)}let w=i.append(d);c.set(w.eventId,w),l.push(w)}if(l.length>0){let d=a.length===0||a.endsWith(`
4
4
  `)?a:`${a}
@@ -2245,4 +2245,4 @@ compdef _pm pm`}(function(){try{var e=typeof window<"u"?window:typeof global<"u"
2245
2245
  `);M(e.progressEnabled,"writing keyword artifacts"),await oe(t,`${JSON.stringify(e.manifest,null,2)}
2246
2246
  `),await oe(n,`${r}
2247
2247
  `);let i=[];if(e.mode!=="keyword")try{M(e.progressEnabled,"writing vectorization status ledger"),await Ts(e.pmRoot,e.vectorizationLedgerEntries,e.vectorizationEmbeddingMetadata)}catch(a){i.push(`search_vectorization_status_ledger_write_failed:${a instanceof Error?a.message:String(a)}`)}return i}async function Ng(e,t){let n=fg(e.mode),o=_g(e),r=e.full===!0;M(o,`start mode=${n}`);let i=A(process.cwd(),t.path);await F(i);let a=fs(await T(i)).settings,s=null;try{s=await te(i,hs,a.locks.ttl_seconds,R(void 0,"pm-reindex"),!1,a.governance.force_required_for_stale_lock,a.locks.wait_ms)}catch(c){throw c instanceof p&&c.exitCode===u.CONFLICT?new p("Another pm reindex run is already active for this project. Wait for it to finish before starting a new keyword, semantic, or hybrid reindex.",u.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=yg(a),l=bg(a),m=Ag({requestedMode:n,pmRoot:i,settings:a,extensionEmbedding:c,extensionVectorAdapter:l}),d=n;M(o,"loading item corpus");let _=await Eg({pmRoot:i,settings:a}),f=_.warnings,{documentCandidates:w,metadataDocuments:k}=_;M(o,`loaded_items=${k.length}`);let y=S(),v=Ig(d,y,k),g=Kt.join(i,oi),I=Kt.join(i,ri),x=d==="keyword"?await ai(i,w,a.schema,f):k,N=[],W={},O=null,C=Sg(d);if(d==="keyword"&&await Tg({pmRoot:i,settings:a,forceFullSemantic:r,extensionEmbedding:c,reindexWarnings:f}),d!=="keyword"){let ne=await Pg({pmRoot:i,settings:a,requestedMode:n,activeEmbeddingProvider:m.activeEmbeddingProvider,activeVectorStore:m.activeVectorStore,extensionEmbedding:c,extensionVectorAdapter:l,documentCandidates:w,metadataDocuments:k,documentsForKeywordArtifacts:x,forceFullSemantic:r,reindexWarnings:f,semanticWarnings:N,semanticSummary:C,progressEnabled:o});x=ne.documentsForKeywordArtifacts,W=ne.vectorizationLedgerEntries,O=ne.vectorizationEmbeddingMetadata}let ae=await Lg({pmRoot:i,mode:d,manifest:v,documentsForKeywordArtifacts:x,settings:a,vectorizationLedgerEntries:W,vectorizationEmbeddingMetadata:O,progressEnabled:o}),Re=[...await G({path:g,scope:"project",op:"reindex:manifest"}),...await G({path:I,scope:"project",op:"reindex:embeddings"}),...await Ri({mode:d,total_items:k.length})];return M(o,"done"),{ok:!0,mode:d,total_items:k.length,semantic:C,artifacts:{manifest:oi,embeddings:ri},warnings:[...f,...N,...ae,...Re],generated_at:y}}finally{await s?.()}}(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]="0c3e80fb-2ae7-5d3b-98bd-eacdabd2be6d")}catch{}})();var mp=Symbol("pm.active-extension-host-context");function Q(e){return{fullChangedFields:!0,options:e}}var b=class e{defaults;constructor(t={}){this.defaults={...t.pmRoot===void 0?{}:{path:t.pmRoot},...t.cwd===void 0?{}:{cwd:t.cwd},...t.author===void 0?{}:{author:t.author},...t.noExtensions===void 0?{}:{noExtensions:t.noExtensions}}}static forActiveExtensionHost(t){let n=new e({...t,noExtensions:!0});return n.defaults[mp]=!0,n}run(t,n={}){return Ug({...this.defaults,...n,action:t})}runTyped(t,n={}){return this.run(t,n)}context(t={}){return this.runTyped("context",{options:t})}listAllItemMetadataLight(){return Sl(this.defaults.path,this.defaults.cwd)}list(t={}){return this.runTyped("list",{options:t})}async listAllComplete(t={}){return Dn(await this.list(ar(t)))}search(t,n={}){return this.runTyped("search",{query:t,options:n})}get(t,n={}){return this.runTyped("get",{id:t,options:n})}next(t={}){return this.runTyped("next",{options:t})}aggregate(t={}){return this.runTyped("aggregate",{options:t})}stats(t={}){return this.runTyped("stats",{options:t})}duplicates(t={}){return this.runTyped("duplicates",{options:t})}comments(t,n={}){return this.runTyped("comments",{id:t,options:n})}notes(t,n={}){return this.runTyped("notes",{id:t,options:n})}learnings(t,n={}){return this.runTyped("learnings",{id:t,options:n})}files(t,n={}){return this.runTyped("files",{id:t,options:n})}filesDiscover(t,n={}){return this.runTyped("files-discover",{id:t,options:n})}filesLookup(t){return this.runTyped("files-lookup",{options:t})}docs(t,n={}){return this.runTyped("docs",{id:t,options:n})}deps(t,n={}){return this.runTyped("deps",{id:t,options:n})}graph(t,n={},o={}){return this.runTyped("graph",{subcommand:t,...n,options:o})}append(t,n,o={}){return this.runTyped("append",{id:t,...Q(Pt(o,{body:n}))})}init(t,n={}){return this.runTyped("init",{...t===void 0?{}:{prefix:t},options:n})}config(t,n,o,r,i={}){return this.runTyped("config",{scope:t,configAction:n,...o===void 0?{}:{key:o},...r===void 0?{}:{value:r},options:i})}schema(t,n={}){return this.runTyped("schema",{options:{...n,subcommand:t}})}workflowPolicy(t,n,o={}){return this.runTyped("schema",{name:n,options:{...o,subcommand:t}})}schemaList(){return this.runTyped("schema",{options:{subcommand:"list"}})}schemaShow(t){return this.runTyped("schema",{name:t,options:{subcommand:"show"}})}schemaAddType(t,n={}){return this.runTyped("schema",{name:t,options:{...n,subcommand:"add-type"}})}schemaRemoveType(t,n={}){return this.runTyped("schema",{name:t,options:{...n,subcommand:"remove-type"}})}schemaAddStatus(t,n={}){return this.runTyped("schema",{name:t,options:{...n,subcommand:"add-status"}})}schemaRemoveStatus(t,n={}){return this.runTyped("schema",{name:t,options:{...n,subcommand:"remove-status"}})}schemaAddField(t,n={}){return this.runTyped("schema",{name:t,options:{...n,subcommand:"add-field"}})}schemaRemoveField(t,n={}){return this.runTyped("schema",{name:t,options:{...n,subcommand:"remove-field"}})}schemaListFields(){return this.runTyped("schema",{options:{subcommand:"list-fields"}})}schemaShowField(t){return this.runTyped("schema",{name:t,options:{subcommand:"show-field"}})}schemaApplyPreset(t,n={}){return this.runTyped("schema",{typePreset:t,options:{...n,subcommand:"apply-preset"}})}schemaInferTypes(t={}){return this.runTyped("schema",{options:{...t,subcommand:"add-type",infer:!0}})}schemaRenameType(t,n,o){return this.runTyped("schema",{name:t,options:{...o,subcommand:"rename-type",to:n}})}schemaRenameField(t,n,o,r){return this.runTyped("schema",{name:t,options:{...o,subcommand:"rename-field",to:n,...r?{fieldTypeScope:r}:{}}})}schemaRemapStatus(t,n,o){return this.runTyped("schema",{name:t,options:{...o,subcommand:"remap-status",to:n}})}schemaShowStatus(t){return this.runTyped("schema",{name:t,options:{subcommand:"show-status"}})}profile(t,n={}){return this.runTyped("profile",{options:{...n,subcommand:t}})}profileList(){return this.runTyped("profile",{options:{subcommand:"list"}})}profileShow(t){return this.runTyped("profile",{name:t,options:{subcommand:"show"}})}profileApply(t,n={}){return this.runTyped("profile",{name:t,options:{...n,subcommand:"apply"}})}profileLint(t){return this.runTyped("profile",{name:t,options:{subcommand:"lint"}})}validate(t={}){return this.runTyped("validate",{options:t})}health(t={}){return this.runTyped("health",{options:t})}gc(t={}){return this.runTyped("gc",{options:t})}assurance(t){return this.runTyped("assurance",{options:{...t,subcommand:t.action}})}historyRedact(t,n){return this.runTyped("history-redact",{id:t,options:n})}historyRepair(t,n={}){return this.runTyped("history-repair",{id:t,options:n})}historyRepairAll(t={}){return this.runTyped("history-repair",{options:{...t,all:!0}})}historyAttest(t={}){return this.runTyped("history-attest",{options:t})}historyCompact(t,n={}){return this.runTyped("history-compact",{id:t,options:n})}historyCompactBulk(t){return this.runTyped("history-compact",{options:t})}historyAuthorAcknowledge(t){return this.runTyped("history-author-acknowledge",{historyEvent:(t.events??[]).map(n=>`${n.item_id}:${String(n.line)}`),allActionable:t.all_actionable===!0,dryRun:t.dry_run===!0,planFingerprint:t.plan_fingerprint,limit:t.coordinate_limit,attributedAuthor:t.attributed_author,reviewer:t.reviewer,reason:t.reason})}plan(t,n,o={},r,i){return this.runTyped("plan",{fullChangedFields:!0,...n===void 0?{}:{id:n},...r===void 0?{}:{stepRef:r},...i===void 0?{}:{reorderTo:i},options:Pt(o,{subcommand:t})})}planCreate(t){return this.plan("create",void 0,t)}planShow(t,n={}){return this.plan("show",t,n)}planAddStep(t,n){return this.plan("add-step",t,n)}planUpdateStep(t,n,o){return this.plan("update-step",t,o,n)}planCompleteStep(t,n,o={}){return this.plan("complete-step",t,o,n)}planBlockStep(t,n,o){return this.plan("block-step",t,o,n)}planReorderStep(t,n,o,r={}){return this.plan("reorder-step",t,r,n,o)}planRemoveStep(t,n,o={}){return this.plan("remove-step",t,o,n)}planLink(t,n,o){return this.plan("link",t,o,n)}planUnlink(t,n,o){return this.plan("unlink",t,o,n)}planDecision(t,n){return this.plan("decision",t,n)}planDiscovery(t,n){return this.plan("discovery",t,n)}planValidation(t,n){return this.plan("validation",t,n)}planResume(t,n){return this.plan("resume",t,n)}planApprove(t,n={}){return this.plan("approve",t,n)}planMaterialize(t,n){return this.plan("materialize",t,n)}create(t={}){return this.runTyped("create",Q(t))}update(t,n={}){return this.runTyped("update",{id:t,...Q(n)})}reopen(t,n,o={}){return this.runTyped("item-reopen",{id:t,reason:n,fullChangedFields:!0,options:o})}close(t,n,o={}){return this.runTyped("close",{id:t,reason:n,...Q(o)})}claim(t,n={}){return this.runTyped("claim",{id:t,...Q(n)})}claimNext(t={}){return this.runTyped("claim",{next:!0,...Q(t)})}release(t,n={}){return this.runTyped("release",{id:t,...Q(n)})}copy(t,n={}){return this.runTyped("copy",{id:t,...Q(n)})}delete(t,n={}){return this.runTyped("delete",{id:t,...Q(n)})}restore(t,n,o={}){return this.runTyped("restore",{fullChangedFields:!0,id:t,options:{...o,target:n}})}focus(t,n={}){return this.runTyped("focus",{...t===void 0?{}:{id:t},...Q(n)})}startTask(t,n={}){return this.runTyped("start-task",{id:t,...Q(n)})}pauseTask(t,n={}){return this.runTyped("pause-task",{id:t,...Q(n)})}closeTask(t,n,o={}){return this.runTyped("close-task",{id:t,reason:n,...Q(o)})}extension(t,n={}){return this.runTyped("extension",{...t===void 0?{}:{target:t},options:n})}extensionList(t={}){return this.extension("list",t)}extensionActivate(t,n={}){return this.runTyped("extension-activate",{target:t,options:n})}extensionDeactivate(t,n={}){return this.runTyped("extension-deactivate",{target:t,options:n})}package(t,n={}){return this.runTyped("package",{...t===void 0?{}:{target:t},options:{...n,vocabulary:"package"}})}packageList(t={}){return this.package("list",t)}packageInstall(t,n={}){return this.runTyped("package-install",{target:t,options:n})}packageUninstall(t,n={}){return this.runTyped("package-uninstall",{target:t,options:n})}packageDoctor(t={}){return this.runTyped("package-doctor",{options:t})}packageManage(t,n={}){return this.runTyped("package-manage",{...t===void 0?{}:{target:t},options:n})}packageDescribe(t,n={}){return this.runTyped("package-describe",{...t===void 0?{}:{target:t},options:n})}packageReload(t={}){return this.runTyped("package-reload",{options:t})}packageCatalog(t={}){return this.runTyped("package-catalog",{options:t})}packageActivate(t,n={}){return this.runTyped("package-activate",{target:t,options:n})}packageDeactivate(t,n={}){return this.runTyped("package-deactivate",{target:t,options:n})}packageMigrate(t={}){return this.package(void 0,{...t,migrate:!0})}upgrade(t,n={}){return this.runTyped("upgrade",{...t===void 0?{}:{target:t},options:n})}};function AT(e={},t={}){return new b(t).context(e)}function ET(e={},t={}){return new b(t).list(e)}function TT(e={},t={}){return new b(t).listAllComplete(e)}function CT(e,t={},n={}){return new b(n).search(e,t)}function RT(e,t={},n={}){return new b(n).get(e,t)}function xT(e={},t={}){return new b(t).next(e)}function OT(e={},t={}){return new b(t).aggregate(e)}function $T(e={},t={}){return new b(t).stats(e)}function FT(e={},t={}){return new b(t).duplicates(e)}function PT(e,t={},n={}){return new b(n).comments(e,t)}function LT(e,t={},n={}){return new b(n).notes(e,t)}function NT(e,t={},n={}){return new b(n).learnings(e,t)}function DT(e,t={},n={}){return new b(n).files(e,t)}function MT(e,t={},n={}){return new b(n).filesDiscover(e,t)}function jT(e,t={}){return new b(t).filesLookup(e)}function GT(e,t={},n={}){return new b(n).docs(e,t)}function UT(e,t={},n={}){return new b(n).deps(e,t)}function qT(e,t={},n={},o={}){return new b(o).graph(e,t,n)}function zT(e,t,n={},o={}){return new b(o).append(e,t,n)}function HT(e,t={},n={}){return new b(n).init(e,t)}function WT(e,t,n,o,r={},i={}){return new b(i).config(e,t,n,o,r)}function VT(e,t={},n={}){return new b(n).schema(e,t)}function BT(e={}){return new b(e).schemaList()}function KT(e,t={}){return new b(t).schemaShow(e)}function JT(e,t={},n={}){return new b(n).schemaAddType(e,t)}function YT(e,t={},n={}){return new b(n).schemaRemoveType(e,t)}function XT(e,t={},n={}){return new b(n).schemaAddStatus(e,t)}function ZT(e,t={},n={}){return new b(n).schemaRemoveStatus(e,t)}function QT(e,t={},n={}){return new b(n).schemaAddField(e,t)}function eC(e,t={},n={}){return new b(n).schemaRemoveField(e,t)}function tC(e={}){return new b(e).schemaListFields()}function nC(e,t={}){return new b(t).schemaShowField(e)}function oC(e,t={},n={}){return new b(n).schemaApplyPreset(e,t)}function rC(e={},t={}){return new b(t).schemaInferTypes(e)}function iC(e,t,n,o={}){return new b(o).schemaRenameType(e,t,n)}function aC(e,t,n,o,r={}){return new b(r).schemaRenameField(e,t,n,o)}function sC(e,t,n,o={}){return new b(o).schemaRemapStatus(e,t,n)}function cC(e,t={}){return new b(t).schemaShowStatus(e)}function lC(e,t={},n={}){return new b(n).profile(e,t)}function dC(e={}){return new b(e).profileList()}function mC(e,t={}){return new b(t).profileShow(e)}function pC(e,t={},n={}){return new b(n).profileApply(e,t)}function uC(e,t={}){return new b(t).profileLint(e)}function _C(e={},t={}){return new b(t).validate(e)}function fC(e={},t={}){return new b(t).health(e)}function hC(e={},t={}){return new b(t).gc(e)}function gC(e,t,n={}){return new b(n).historyRedact(e,t)}function yC(e,t={},n={}){return new b(n).historyRepair(e,t)}function bC(e={},t={}){return new b(t).historyRepairAll(e)}function wC(e,t={},n={}){return new b(n).historyCompact(e,t)}function vC(e,t={}){return new b(t).historyCompactBulk(e)}function kC(e={},t={}){return new b(t).create(e)}function SC(e,t={},n={}){return new b(n).update(e,t)}function IC(e,t,n={},o={}){return new b(o).reopen(e,t,n)}function AC(e,t,n={},o={}){return new b(o).close(e,t,n)}function EC(e,t={},n={}){return new b(n).claim(e,t)}function TC(e={},t={}){return new b(t).claimNext(e)}function CC(e,t={},n={}){return new b(n).release(e,t)}function RC(e,t={},n={}){return new b(n).copy(e,t)}function xC(e,t={},n={}){return new b(n).delete(e,t)}function OC(e,t,n={},o={}){return new b(o).restore(e,t,n)}function $C(e,t={},n={}){return new b(n).focus(e,t)}function FC(e,t={},n={}){return new b(n).startTask(e,t)}function PC(e,t={},n={}){return new b(n).pauseTask(e,t)}function LC(e,t,n={},o={}){return new b(o).closeTask(e,t,n)}function NC(e,t={},n={}){return new b(n).extension(e,t)}function DC(e={},t={}){return new b(t).extensionList(e)}function MC(e,t={},n={}){return new b(n).extensionActivate(e,t)}function jC(e,t={},n={}){return new b(n).extensionDeactivate(e,t)}function GC(e,t={},n={}){return new b(n).package(e,t)}function UC(e={},t={}){return new b(t).packageList(e)}function qC(e,t={},n={}){return new b(n).packageInstall(e,t)}function zC(e,t={},n={}){return new b(n).packageUninstall(e,t)}function HC(e={},t={}){return new b(t).packageDoctor(e)}function WC(e,t={},n={}){return new b(n).packageManage(e,t)}function VC(e,t={},n={}){return new b(n).packageDescribe(e,t)}function BC(e={},t={}){return new b(t).packageReload(e)}function KC(e={},t={}){return new b(t).packageCatalog(e)}function JC(e,t={},n={}){return new b(n).packageActivate(e,t)}function YC(e,t={},n={}){return new b(n).packageDeactivate(e,t)}function XC(e,t={},n={}){return new b(n).upgrade(e,t)}async function ZC(e,t={}){let n=typeof e=="string"?{...t,pmRoot:e}:e??t,o={json:!0,quiet:n.quiet??!0,noExtensions:n.noExtensions??!1,noPager:!0,profile:n.profile??!1,path:n.pmRoot};return fn(n,o)}var lp=Ei(),ci=new Dg;function to(){_o(bi()),fo(wi()),ho(vi()),go(ki()),yo(Si()),bo(Ii()),wo(Ai())}async function pp(e,t,n,o){return uo(()=>t===void 0?lp.read(()=>dp(e,n,o)):lp.write(()=>jg(t,()=>dp(e,n,o))))}async function QC(e,t){let n=e.cwd;if(ci.getStore()===!0&&n===void 0&&e.noExtensions===!0){let r=A(process.cwd(),e.path);return uo(()=>$n({pmRoot:r},t))}let o=n??process.cwd();return pp(wn({path:e.path,noExtensions:e.noExtensions}),n,o,()=>ci.run(!0,t))}async function dp(e,t,n){let o=A(t,e.path);if(e.noExtensions)return to(),$n({pmRoot:o},()=>n(null));if(!await ye(we(o)))return to(),n(null);let r=null,i;try{let a=await T(o),s=await Xt({pmRoot:o,settings:a,cwd:t,noExtensions:!1}),c=await Qt({...s,loaded:s.loaded});i={loadResult:s,activationResult:c},_o(c.hooks),fo(c.commands),ho(c.parsers),go(c.preflight),yo(c.services),bo(c.renderers),wo(c.registrations),r={registrations:c.registrations,commands:c.commands,pmRoot:o,packages:s.loaded}}catch(a){to(),console.error("[pm-sdk] extension activation failed; continuing without active extensions:",a)}try{return await $n({pmRoot:o,packages:r?.packages},()=>n(r))}finally{to(),i&&await Zt(i.loadResult,i.activationResult).catch(()=>{})}}async function Mg(e,t,n,o,r){if(!r)throw new p(`Unsupported native pm action: ${e}`,u.USAGE);let i=Me(e),a=r.registrations.commands.find(l=>Me(l.action)===i)?.command??r.commands.handlers.find(l=>Me(l.command)===i)?.command;if(!a)throw new p(`Unsupported native pm action: ${e}`,u.USAGE);let s=typeof o.author=="string"&&o.author.trim()?o.author.trim():"pm-extension",c=await xi({command:kn(a),args:U(n.args??t.args),options:Do(t,n),global:o,pm_root:r.pmRoot,sdk:vl(r.pmRoot,b.forActiveExtensionHost({pmRoot:r.pmRoot,author:s}),s,kn(a))});if(!c.handled){let l=c.warnings.length>0?` (${c.warnings.join(", ")})`:"";throw new p(`Unsupported native pm action: ${e}${l}`,u.USAGE)}return c.result}async function jg(e,t){let n=process.cwd();process.chdir(e);try{return await t()}finally{process.chdir(n)}}function Gg(e){let t=K(e,"action"),n=Me(t),o=fe(sr,n),r=o?.action??n,i={...e,action:r};return o?.options!==void 0&&(i.options={...o.options,...io(e.options)}),r==="package"&&(i.options={...io(i.options),vocabulary:"package"}),{action:r,args:i}}async function Ug(e){let t=Gg(e),n=wn(t.args),o=dc(t.action),r=h(t.args,"cwd"),i=r??process.cwd();t.action==="init"&&(n[oc]=i),(t.action!=="init"||n.path!==void 0||(process.env.PM_PATH?.trim().length??0)>0)&&(n.path=A(i,n.path));try{return t.action==="history-attest"?await si(t.action,t.args,n,null):e[mp]===!0||ci.getStore()===!0?await si(t.action,t.args,n,null):await pp(n,r,i,a=>si(t.action,t.args,n,a))}finally{o&&Hr()}}function eR(e=Mi){return e.map(t=>{let n=Me(t),o=fe(sr,n),r=o?.action??n,i=fe(zr,r)!==void 0;return{action:t,resolved_action:r,covered:i,route:i?o?"alias":"native":"missing"}})}async function si(e,t,n,o){let r=No(t,e);Gi(e,r),Ui(e,r);let i={action:e,args:t,options:r,id:h(t,"id"),force:t.force===!0||r.force===!0,global:n,activeExtensions:o},a=fe(zr,e),s=a?await a(i):await Mg(e,t,r,n,o);if(e==="history-attest")return s;{r.resolvedOutputFormat="json";let c=Vi(e,r,s);return await gl(A(process.cwd(),n.path),c),c}}var qg={closeManyOptionsFromFlat:Sn,extensionOptionsFromArgs:Do,globalOptions:wn,mutationListOptions:mc,normalizeActionName:Me,normalizeCommandPath:kn,normalizeMcpUpdateOptions:uc,normalizeMcpOptionsArrays:lc,optionsWithAuthor:No,readRequiredString:K,readScalarString:ac,readScalarStringAllowBlank:sc,readStringArray:U,updateManyOptionsFromFlat:In,withAddNoteOption:Lt,withFilesDiscoveryOptions:vn,withMutationCompaction:j};(process.env.NODE_ENV==="test"||process.env.VITEST!==void 0||process.env.VITEST_WORKER_ID!==void 0)&&(globalThis.__pmCliActionRunnerTestHooks=qg);export{tr as a,hl as b,gp as c,bp as d,wp as e,$n as f,Gt as g,Ln as h,vl as i,xp as j,Nn as k,ar as l,kl as m,Dn as n,Dp as o,El as p,Rl as q,Ol as r,Ll as s,mr as t,pr as u,ur as v,_r as w,mu as x,Ul as y,wr as z,Ql as A,rd as B,id as C,at as D,Or as E,q_ as F,iw as G,aw as H,Pr as I,sd as J,kw as K,Sw as L,ld as M,pd as N,qw as O,af as P,Ur as Q,cf as R,lf as S,Ad as T,Ed as U,Td as V,Cd as W,Rd as X,uv as Y,_v as Z,fv as _,hv as $,xd as aa,Od as ba,Pd as ca,Dd as da,Md as ea,jd as fa,K as ga,Hr as ha,HS as ia,WS as ja,VS as ka,BS as la,KS as ma,Yd as na,JS as oa,dh as pa,uh as qa,gh as ra,yh as sa,bh as ta,z as ua,wh as va,vh as wa,kh as xa,Sh as ya,Vr as za,em as Aa,lt as Ba,Wr as Ca,tm as Da,Ih as Ea,nm as Fa,Ah as Ga,Eh as Ha,Th as Ia,Ch as Ja,Rh as Ka,Nh as La,am as Ma,Dh as Na,Hh as Oa,Xh as Pa,Qh as Qa,mg as Ra,Ng as Sa,b as Ta,AT as Ua,ET as Va,TT as Wa,CT as Xa,RT as Ya,xT as Za,OT as _a,$T as $a,FT as ab,PT as bb,LT as cb,NT as db,DT as eb,MT as fb,jT as gb,GT as hb,UT as ib,qT as jb,zT as kb,HT as lb,WT as mb,VT as nb,BT as ob,KT as pb,JT as qb,YT as rb,XT as sb,ZT as tb,QT as ub,eC as vb,tC as wb,nC as xb,oC as yb,rC as zb,iC as Ab,aC as Bb,sC as Cb,cC as Db,lC as Eb,dC as Fb,mC as Gb,pC as Hb,uC as Ib,_C as Jb,fC as Kb,hC as Lb,gC as Mb,yC as Nb,bC as Ob,wC as Pb,vC as Qb,kC as Rb,SC as Sb,IC as Tb,AC as Ub,EC as Vb,TC as Wb,CC as Xb,RC as Yb,xC as Zb,OC as _b,$C as $b,FC as ac,PC as bc,LC as cc,NC as dc,DC as ec,MC as fc,jC as gc,GC as hc,UC as ic,qC as jc,zC as kc,HC as lc,WC as mc,VC as nc,BC as oc,KC as pc,JC as qc,YC as rc,XC as sc,ZC as tc,QC as uc,Ug as vc,eR as wc};
2248
- //# sourceMappingURL=chunk-QQHNXCO3.js.map
2248
+ //# sourceMappingURL=chunk-ESRACL6K.js.map
@@ -1,3 +1,3 @@
1
- import{$a as ce,Ja as le}from"./chunk-5NR6TDYB.js";import{Bl as ie,Bm as oe,Ec as O,Ln as se,Na as I,R as s,T as l,Tf as re,V as G,Va as P,Wa as J,bb as b,db as Z,dd as te,eb as x,em as k,ga as X,jc as ee,kg as ne,km as R,si as ae,ui as w}from"./chunk-5TCQ5J3V.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]="544840da-22f5-5734-81ec-e12c5612545c")}catch{}})();var Ue=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function _e(e){let t=e?.trim();if(!t||t==="__proto__"||t.length>128)throw new Error("A legacy author must contain 1-128 characters.");return t}function ze(e){let t=e?.trim().toLowerCase();if(!t||!Ue.test(t))throw new Error("A canonical harness must be a lowercase dash-separated namespace.");return t}function je(e){return Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)))}function Fe(e,t){let r=new Set;for(let n of(e??[]).slice(0,1e4)){let i=n.trim().slice(0,128);i.length===0||i.startsWith("harness:")||Object.hasOwn(t,i)||r.add(i)}return r.size}function Me(e,t){let r=_e(t.legacy_author),n=ze(t.canonical_harness);if(r===n||r===`harness:${n}`||r.startsWith("harness:"))throw new Error(`The legacy author "${r}" is already canonical and must not be aliased.`);return e[r]===n?!1:(e[r]=n,!0)}function Ve(e,t){if(t.operation==="add")return Me(e,t);if(t.operation==="remove"){let n=_e(t.legacy_author);return Object.hasOwn(e,n)?(delete e[n],!0):!1}if(t.operation==="clear"){let n=Object.keys(e).length>0;for(let i of Object.keys(e))delete e[i];return n}let r=t.operation;throw new Error(`Unsupported vocabulary operation: ${String(r)}`)}function T(e){return{version:e?.version??1,alias_count:Object.keys(e?.aliases??{}).length}}function de(e,t){let r=e?.version??1,n={...e?.aliases},i=Ve(n,t),a={version:i?r+1:r,aliases:je(n)};return{vocabulary:a,preview:{operation:t.operation,changed:i,version_before:r,version_after:a.version,alias_count:Object.keys(a.aliases).length,residual_author_count:Fe(t.observed_authors,a.aliases)}}}(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]="78e92b9c-f3da-594e-8158-00409222308f")}catch{}})();var ue=new Set(["item_format"]),fe=new Set(["definition_of_done","metadata_required_fields","lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns"]),Ke=new Set(["history_missing_stream_policy","sprint_release_format_policy","parent_reference_policy","metadata_validation_profile","governance_preset","governance_ownership_enforcement","governance_create_mode_default","governance_close_validation_default","governance_require_close_reason","governance_create_default_type","governance_workflow_enforcement","governance_parent_reference_policy","governance_metadata_validation_profile","governance_force_required_for_stale_lock","test_result_tracking","untrusted_linked_test_execution","telemetry_tracking","agent_identity_vocabulary"]),Ye=new Set(["governance_require_close_reason","governance_force_required_for_stale_lock","test_result_tracking","untrusted_linked_test_execution","telemetry_tracking"]),Be={off:"disabled",on:"enabled",true:"enabled",false:"disabled",enabled:"enabled",disabled:"disabled"};function We(e){let t=e.trim().toLowerCase().replaceAll("-","_");if(ue.has(t)||fe.has(t)||Ke.has(t)||t==="context")return t}function He(e){let t=e.trim().toLowerCase();return Be[t]??e}function ge(e,t){let r=We(e);return r===void 0?{routable:!1,reason:`Unknown config key "${e}" cannot route a positional value.`}:r==="context"?{routable:!1,reason:"Config set context does not accept a positional value. Use --default-depth, --activity-limit, --stale-threshold-days, or --section-<name> flags."}:ue.has(r)?{routable:!0,flag:"format",value:t}:fe.has(r)?{routable:!0,flag:"criterion",values:[t]}:{routable:!0,flag:"policy",value:Ye.has(r)?He(t):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]="2ae4f6da-17c5-5024-89a2-bb0a4be9a683")}catch{}})();var C=[{key:"search_provider",path:"search.provider",kind:"string",summary:"Search embedding provider name (e.g. openai, ollama, or an extension provider)."},{key:"search_default_mode",path:"search.default_mode",kind:"string",choices:["auto","keyword","semantic","hybrid"],summary:"Mode a bare pm search runs in: auto (hybrid when semantic search is explicitly configured and runnable, else keyword), or a pinned keyword, semantic, or hybrid."},{key:"search_mutation_refresh_policy",path:"search.mutation_refresh_policy",kind:"string",choices:["cache_only","semantic_configured","semantic_auto"],summary:"Mutation-time search refresh policy: cache_only, semantic_configured, or semantic_auto."},{key:"search_query_expansion_enabled",path:"search.query_expansion.enabled",kind:"boolean",summary:"Enable or disable query expansion for semantic/hybrid search."},{key:"search_query_expansion_provider",path:"search.query_expansion.provider",kind:"string",summary:"Query expansion provider name (built-in openai/ollama or extension provider)."},{key:"search_rerank_enabled",path:"search.rerank.enabled",kind:"boolean",summary:"Enable or disable post-retrieval reranking for hybrid search."},{key:"search_rerank_model",path:"search.rerank.model",kind:"string",summary:"Rerank model name override used by built-in providers."},{key:"search_rerank_top_k",path:"search.rerank.top_k",kind:"integer",min:1,summary:"Number of top hybrid candidates to rerank when rerank is enabled."},{key:"search_embedding_model",path:"search.embedding_model",kind:"string",summary:"Default embedding model name (overrides provider-specific model when set)."},{key:"search_embedding_corpus_max_characters",path:"search.embedding_corpus_max_characters",kind:"integer",min:1,summary:"Maximum semantic corpus characters per item before truncation."},{key:"search_embedding_batch_size",path:"search.embedding_batch_size",kind:"integer",min:1,summary:"Number of items embedded per request batch."},{key:"search_embedding_timeout_ms",path:"search.embedding_timeout_ms",kind:"integer",min:1,summary:"Per-request embedding timeout in milliseconds."},{key:"search_score_threshold",path:"search.score_threshold",kind:"number",summary:"Minimum score for a hit to be returned (0 keeps all matches)."},{key:"search_hybrid_semantic_weight",path:"search.hybrid_semantic_weight",kind:"ratio",summary:"Hybrid mode semantic weight in [0, 1] (1-weight goes to keyword)."},{key:"search_max_results",path:"search.max_results",kind:"integer",min:1,summary:"Default upper bound on search hits when --limit is not supplied."},{key:"search_bm25_k1",path:"search.bm25.k1",kind:"number",min:0,summary:"Offline BM25 term-frequency saturation (k1); higher saturates repeated terms slower (default 1.2)."},{key:"search_bm25_b",path:"search.bm25.b",kind:"ratio",summary:"Offline BM25 document-length normalization (b) in [0, 1]; 0 disables, 1 fully normalizes (default 0.75)."},{key:"openai_base_url",path:"providers.openai.base_url",kind:"string",summary:"OpenAI-compatible API base URL (LM Studio/vLLM also use this)."},{key:"openai_api_key",path:"providers.openai.api_key",kind:"string",summary:"OpenAI-compatible API key."},{key:"openai_model",path:"providers.openai.model",kind:"string",summary:"OpenAI-compatible embedding model name."},{key:"ollama_base_url",path:"providers.ollama.base_url",kind:"string",summary:"Ollama API base URL (typically http://localhost:11434)."},{key:"ollama_model",path:"providers.ollama.model",kind:"string",summary:"Ollama embedding model name (e.g. nomic-embed-text)."},{key:"vector_store_adapter",path:"vector_store.adapter",kind:"string",summary:"Vector store adapter name (lancedb, qdrant, or an extension adapter)."},{key:"vector_store_collection_name",path:"vector_store.collection_name",kind:"string",non_empty:!0,summary:"Vector collection/table name shared by Qdrant and LanceDB adapters."},{key:"qdrant_url",path:"vector_store.qdrant.url",kind:"string",summary:"Qdrant HTTP API URL."},{key:"qdrant_api_key",path:"vector_store.qdrant.api_key",kind:"string",summary:"Qdrant API key (empty if running unauthenticated)."},{key:"lancedb_path",path:"vector_store.lancedb.path",kind:"string",summary:"LanceDB storage path (relative to pm root or absolute)."},{key:"id_prefix",path:"id_prefix",kind:"string",non_empty:!0,summary:'Prefix for generated item IDs (e.g. "pm" produces pm-xxxx).'},{key:"author_default",path:"author_default",kind:"string",non_empty:!0,summary:"Default author recorded on mutations when --author is not supplied."},{key:"agent_identity_probes_enabled",path:"agent_identity.probes_enabled",kind:"boolean",summary:"Allow privacy-bounded local harness provenance probes; no network or subprocess access is permitted."},{key:"mutation_guard_require_attributed_author",path:"mutation_guard.require_attributed_author",kind:"boolean",summary:"Reject mutations whose effective author resolves to unknown."},{key:"mutation_guard_secret_guard",path:"mutation_guard.secret_guard",kind:"string",choices:["off","advise","block"],summary:"Detect credential-shaped mutation content: off, advise, or block."},{key:"mutation_guard_stale_in_progress_hours",path:"mutation_guard.stale_in_progress_hours",kind:"integer",min:1,summary:"Age threshold for unclaimed in-progress work surfaced by health."},{key:"governance_duplicate_detection_mode",path:"governance.duplicate_detection_mode",kind:"string",choices:["off","advisory","strict"],summary:"Create/copy duplicate governance: off, advisory, or strict explicit-bypass enforcement."},{key:"governance_duplicate_detection_threshold",path:"governance.duplicate_detection_threshold",kind:"ratio",summary:"Minimum shared similarity score in [0, 1] for create/copy duplicate governance."},{key:"governance_duplicate_detection_limit",path:"governance.duplicate_detection_limit",kind:"integer",min:0,max:20,summary:"Maximum likely duplicates returned by create/copy governance (0-20)."},{key:"output_default_format",path:"output.default_format",kind:"string",choices:["toon","json"],summary:"Default output format for commands that support it: toon or json."},{key:"ux_deprecation_hints",path:"ux.deprecation_hints",kind:"boolean",summary:"Emit one stderr migration hint for deprecated command aliases."},{key:"locks_ttl_seconds",path:"locks.ttl_seconds",kind:"integer",min:1,summary:"Claim/lock time-to-live in seconds before a stale lock can be reclaimed."},{key:"locks_wait_ms",path:"locks.wait_ms",kind:"integer",min:0,summary:"Bounded jittered wait in milliseconds before a contended item mutation fails with lock_conflict; 0 fails fast. PM_LOCK_WAIT_MS overrides per invocation."},{key:"ids_token_length",path:"ids.token_length",kind:"integer",min:4,max:12,summary:"Random base36 token length for newly minted item ids (4-12, default 4). Raise it to shrink cross-branch id collision odds in concurrent multi-agent workflows (pm-pibw)."},{key:"checkpoints_retention_days",path:"checkpoints.retention_days",kind:"integer",min:1,summary:"Age in days above which pm gc --scope checkpoints prunes bulk-mutation rollback checkpoints."},{key:"schema_unknown_field_policy",path:"schema.unknown_field_policy",kind:"string",choices:["allow","warn","reject"],summary:"How item I/O handles metadata keys not in the field registry: allow, warn, or reject."},{key:"history_compact_policy_enabled",path:"history.compact_policy.enabled",kind:"boolean",summary:"Enable the history-compaction advisory: pm health warns on over-threshold streams."},{key:"history_compact_policy_max_entries",path:"history.compact_policy.max_entries",kind:"integer",min:1,summary:"Entry count above which a history stream is flagged (and the default pm history-compact --all-over threshold)."},{key:"history_compact_policy_trigger",path:"history.compact_policy.trigger",kind:"string",choices:["health_warn","auto"],summary:"History-compaction policy intent: health_warn (advisory only) or auto (scheduled sweeps expected)."}],Qe=new Map(C.flatMap(e=>[[e.key,e],[e.path.toLowerCase().replaceAll("-","_"),e]]));function me(e){if(typeof e!="string")return;let t=e.trim().toLowerCase().replaceAll("-","_");if(t.length!==0)return Qe.get(t)}function Xe(e,t){let r=t.trim().toLowerCase();return r==="true"||r==="1"||r==="yes"||r==="on"?{ok:!0,parsed:{descriptor:e,value:!0}}:r==="false"||r==="0"||r==="no"||r==="off"?{ok:!0,parsed:{descriptor:e,value:!1}}:{ok:!1,error:{message:`Config set ${e.key} requires a boolean value (true|false), got "${t}"`}}}function Je(e,t,r){return e.non_empty===!0&&r.length===0?{ok:!1,error:{message:`Config set ${e.key} requires a non-empty value`}}:e.choices&&!e.choices.includes(r)?{ok:!1,error:{message:`Config set ${e.key} must be one of ${e.choices.join("|")}, got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function Ze(e,t,r){if(r.length===0)return{ok:!1,error:{message:`Config set ${e.key} requires a non-empty value`}};let n=Number(r);return Number.isFinite(n)?{ok:!0,value:n}:{ok:!1,error:{message:`Config set ${e.key} requires a finite number, got "${t}"`}}}function xe(e,t,r){return!Number.isInteger(r)||r<0?{ok:!1,error:{message:`Config set ${e.key} requires a non-negative integer, got "${t}"`}}:e.min!==void 0&&r<e.min?{ok:!1,error:{message:`Config set ${e.key} requires an integer >= ${e.min}, got "${t}" (the runtime silently ignores 0 here and falls back to the default)`}}:e.max!==void 0&&r>e.max?{ok:!1,error:{message:`Config set ${e.key} requires an integer <= ${e.max}, got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function et(e,t,r){return r<0||r>1?{ok:!1,error:{message:`Config set ${e.key} requires a number in [0, 1], got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function tt(e,t,r){return e.min!==void 0&&r<e.min?{ok:!1,error:{message:`Config set ${e.key} requires a number >= ${e.min}, got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function pe(e,t){if(typeof t!="string")return{ok:!1,error:{message:`Config set ${e.key} requires a string value`}};let r=t.trim();if(e.kind==="boolean")return Xe(e,t);if(e.kind==="string")return Je(e,t,r);let n=Ze(e,t,r);return n.ok?e.kind==="integer"?xe(e,t,n.value):e.kind==="ratio"?et(e,t,n.value):tt(e,t,n.value):{ok:!1,error:n.error}}function N(e,t){let r=t.path.split("."),n=e;for(let i of r){if(typeof n!="object"||n===null)return null;let a=Object.getOwnPropertyDescriptor(n,i);if(!a||!Object.hasOwn(a,"value"))return null;n=a.value}return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?n:null}function ye(e,t,r){let n=t.path.split(".");if(n.some(o=>o.length===0||["__proto__","constructor","prototype"].includes(o)))throw new Error("Unsafe settings path");let i=e;for(let o=0;o<n.length-1;o+=1){let d=n[o],c=Object.getOwnPropertyDescriptor(i,d)?.value;if(typeof c!="object"||c===null||Array.isArray(c)){let _={};Object.defineProperty(i,d,{value:_,writable:!0,enumerable:!0,configurable:!0}),i=_}else i=c}let a=n[n.length-1];return Object.getOwnPropertyDescriptor(i,a)?.value===r?!1:(Object.defineProperty(i,a,{value:r,writable:!0,enumerable:!0,configurable:!0}),!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]="d9b6f2ba-2c5e-52ea-891d-53124601fb89")}catch{}})();var he=["project","global"],p={definition_of_done:["definition-of-done","definition_of_done"],item_format:["item-format","item_format"],history_missing_stream_policy:["history-missing-stream-policy","history_missing_stream_policy"],sprint_release_format_policy:["sprint-release-format-policy","sprint_release_format_policy"],parent_reference_policy:["parent-reference-policy","parent_reference_policy"],metadata_validation_profile:["metadata-validation-profile","metadata_validation_profile"],metadata_required_fields:["metadata-required-fields","metadata_required_fields"],lifecycle_stale_blocker_reason_patterns:["lifecycle-stale-blocker-reason-patterns","lifecycle_stale_blocker_reason_patterns"],lifecycle_closure_like_blocked_reason_patterns:["lifecycle-closure-like-blocked-reason-patterns","lifecycle_closure_like_blocked_reason_patterns"],lifecycle_closure_like_resolution_patterns:["lifecycle-closure-like-resolution-patterns","lifecycle_closure_like_resolution_patterns"],lifecycle_closure_like_actual_result_patterns:["lifecycle-closure-like-actual-result-patterns","lifecycle_closure_like_actual_result_patterns"],governance_preset:["governance-preset","governance_preset"],governance_ownership_enforcement:["governance-ownership-enforcement","governance_ownership_enforcement"],governance_create_mode_default:["governance-create-mode-default","governance_create_mode_default"],governance_close_validation_default:["governance-close-validation-default","governance_close_validation_default"],governance_require_close_reason:["governance-require-close-reason","governance_require_close_reason"],governance_create_default_type:["governance-create-default-type","governance_create_default_type"],governance_workflow_enforcement:["governance-workflow-enforcement","governance_workflow_enforcement"],governance_parent_reference_policy:["governance-parent-reference-policy","governance_parent_reference_policy"],governance_metadata_validation_profile:["governance-metadata-validation-profile","governance_metadata_validation_profile"],governance_force_required_for_stale_lock:["governance-force-required-for-stale-lock","governance_force_required_for_stale_lock"],test_result_tracking:["test-result-tracking","test_result_tracking"],untrusted_linked_test_execution:["untrusted-linked-test-execution","untrusted_linked_test_execution"],telemetry_tracking:["telemetry-tracking","telemetry_tracking"],agent_identity_vocabulary:["agent-identity-vocabulary","agent_identity_vocabulary"],context:["context"]},rt=Object.keys(p).map(e=>p[e][0]),nt=Object.fromEntries(Object.keys(p).flatMap(e=>p[e].map(t=>[t,e]))),at={definition_of_done:"Definition of Done criteria list.",item_format:"Default item file format.",history_missing_stream_policy:"Missing history stream handling policy.",sprint_release_format_policy:"Sprint/release format validation policy.",parent_reference_policy:"Parent reference validation policy.",metadata_validation_profile:"Validate metadata profile policy (core|strict|custom).",metadata_required_fields:"Validate custom metadata required-fields list.",lifecycle_stale_blocker_reason_patterns:"Validate lifecycle stale-blocker reason substring patterns (criteria list).",lifecycle_closure_like_blocked_reason_patterns:"Validate lifecycle closure-like blocked_reason substring patterns (criteria list).",lifecycle_closure_like_resolution_patterns:"Validate lifecycle closure-like resolution substring patterns (criteria list).",lifecycle_closure_like_actual_result_patterns:"Validate lifecycle closure-like actual_result substring patterns (criteria list).",governance_preset:"Governance preset policy (minimal|default|strict|custom).",governance_ownership_enforcement:"Governance ownership enforcement policy (none|warn|strict).",governance_create_mode_default:"Governance default create mode (progressive|strict).",governance_close_validation_default:"Governance default close validation mode (off|warn|strict).",governance_require_close_reason:"Governance close-reason requirement policy (enabled|disabled).",governance_create_default_type:"Governance default item type for `pm create` when --type is omitted.",governance_workflow_enforcement:"Governance per-type transition enforcement mode (off|warn|strict).",governance_parent_reference_policy:"Governance parent reference policy (warn|strict_error).",governance_metadata_validation_profile:"Governance metadata validation profile (core|strict|custom).",governance_force_required_for_stale_lock:"Governance stale-lock force policy (enabled|disabled).",test_result_tracking:"Item-level linked test result persistence policy.",untrusted_linked_test_execution:"Permit an explicit per-run override for commands not trusted by this clone.",telemetry_tracking:"Telemetry usage reporting policy.",agent_identity_vocabulary:"Versioned exact legacy-author interpretation vocabulary (summary only).",context:"Context command settings (depth, section toggles, limits)."},it=["lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns"],ot=new Set(["metadata_required_fields",...it]),st=new Set(["test_result_tracking","untrusted_linked_test_execution","telemetry_tracking"]),lt=new Set(["governance_require_close_reason","governance_force_required_for_stale_lock"]),ct=new Set(["governance_ownership_enforcement","governance_create_mode_default","governance_close_validation_default"]),_t=new Set(["governance_parent_reference_policy","governance_metadata_validation_profile","governance_workflow_enforcement"]),dt=new Set(["governance_preset","governance_create_default_type"]),be=e=>ot.has(e),ut=e=>ct.has(e),ft=e=>_t.has(e),gt=e=>dt.has(e);function $(e){return e==="definition_of_done"||be(e)}function ke(e){if(he.includes(e))return e;throw new l(`Invalid config scope "${e}". Allowed: ${he.join(", ")}`,s.USAGE)}function Ce(e){if(e==="get"||e==="set"||e==="list"||e==="export")return e;throw ie({command_path:"config",token:e.trim()||"<empty>",allowed:["export","get","list","set"],token_kind:"action"})}function Ee(e){let t=nt[e];if(t)return t;let r=C.map(n=>n.key).join(", ");throw new l(`Invalid config key "${e}". Supported: ${rt.join(", ")} (underscore variants also accepted). Nested leaf settings: ${r}.`,s.USAGE)}function Ae(e,t){let r=[...new Set((e??[]).map(n=>n.trim()).filter(n=>n.length>0))].sort((n,i)=>n.localeCompare(i));if(t){if(r.length>0)throw new l("Config set definition-of-done cannot combine --clear-criteria with --criterion values",s.USAGE);return[]}if(r.length===0)throw new l("Config set definition-of-done requires at least one non-empty --criterion value (or --clear-criteria to clear)",s.USAGE);return r}function Se(e){let t=e?.trim().toLowerCase();if(t==="toon")return"toon";throw t==="json_markdown"?new l("Config set item-format no longer accepts json_markdown. Markdown item files are legacy read/migration input only.",s.USAGE):new l("Config set item-format requires --format toon",s.USAGE)}function z(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="auto_create"||t==="strict_error")return t;throw new l("Config set history-missing-stream-policy requires --policy with one of: auto_create, strict_error",s.USAGE)}function qe(e){return j(e,"test-result-tracking")}function j(e,t){let r=e?.trim().toLowerCase().replaceAll("-","_");if(r==="enabled"||r==="disabled")return r;throw new l(`Config set ${t} requires --policy with one of: enabled, disabled`,s.USAGE)}function F(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="enabled"||t==="disabled")return t;throw new l("Config set telemetry-tracking requires --policy with one of: enabled, disabled",s.USAGE)}function E(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="core"||t==="strict"||t==="custom")return t;throw new l("Config set metadata-validation-profile requires --policy with one of: core, strict, custom",s.USAGE)}function M(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="minimal"||t==="default"||t==="strict"||t==="custom")return t;throw new l("Config set governance-preset requires --policy with one of: minimal, default, strict, custom",s.USAGE)}function V(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="none"||t==="warn"||t==="strict")return t;throw new l("Config set governance-ownership-enforcement requires --policy with one of: none, warn, strict",s.USAGE)}function K(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="progressive"||t==="strict")return t;throw new l("Config set governance-create-mode-default requires --policy with one of: progressive, strict",s.USAGE)}function Y(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="off"||t==="warn"||t==="strict")return t;if(t==="none"||t==="disabled")return"off";throw new l("Config set governance-close-validation-default requires --policy with one of: off, warn, strict",s.USAGE)}function B(e){let t=typeof e=="string"?e.trim().toLowerCase().replaceAll("-","_"):void 0;if(t==="off"||t==="warn"||t==="strict")return t;if(t==="none"||t==="disabled")return"off";throw new l("Config set governance-workflow-enforcement requires one of: off, warn, strict",s.USAGE)}function W(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="enabled"||t==="disabled")return t;throw new l("Config set governance-force-required-for-stale-lock requires --policy with one of: enabled, disabled",s.USAGE)}function H(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="enabled"||t==="disabled")return t;throw new l("Config set governance-require-close-reason requires --policy with one of: enabled, disabled",s.USAGE)}var mt={test_result_tracking:"test-result-tracking",untrusted_linked_test_execution:"untrusted-linked-test-execution"};function D(e,t){let r=mt[e];if(r)return j(t,r);switch(e){case"history_missing_stream_policy":return z(t);case"sprint_release_format_policy":return R(t);case"parent_reference_policy":case"governance_parent_reference_policy":return k(t);case"metadata_validation_profile":case"governance_metadata_validation_profile":return E(t);case"governance_preset":return M(t);case"governance_ownership_enforcement":return V(t);case"governance_create_mode_default":return K(t);case"governance_close_validation_default":return Y(t);case"governance_require_close_reason":return H(t);case"governance_workflow_enforcement":return B(t);case"governance_force_required_for_stale_lock":return W(t);case"telemetry_tracking":return F(t);default:return t.trim().toLowerCase().replaceAll("-","_")}}var ve={author:"author",acceptance_criteria:"acceptance_criteria","acceptance-criteria":"acceptance_criteria",estimated_minutes:"estimated_minutes","estimated-minutes":"estimated_minutes",estimate:"estimated_minutes",close_reason:"close_reason","close-reason":"close_reason",reviewer:"reviewer",risk:"risk",confidence:"confidence",sprint:"sprint",release:"release"},pt=["author","acceptance_criteria","estimated_minutes","close_reason","reviewer","risk","confidence","sprint","release"];function Ge(e,t){let r=[...new Set((e??[]).map(a=>a.trim()).filter(a=>a.length>0))];if(t){if(r.length>0)throw new l("Config set metadata-required-fields cannot combine --clear-criteria with --criterion values",s.USAGE);return[]}if(r.length===0)throw new l("Config set metadata-required-fields requires at least one --criterion value (or --clear-criteria to clear)",s.USAGE);let n=r.map(a=>a.toLowerCase().replaceAll("-","_")),i=n.filter(a=>ve[a]===void 0);if(i.length>0)throw new l(`Config set metadata-required-fields received unsupported values: ${i.join(", ")}. Supported values: ${pt.join(", ")}`,s.USAGE);return[...new Set(n.map(a=>ve[a]))].sort((a,o)=>a.localeCompare(o))}function yt(e,t,r){let n=[...new Set((t??[]).map(i=>i.trim().toLowerCase()).filter(i=>i.length>0))].sort((i,a)=>i.localeCompare(a));if(r){if(n.length>0)throw new l(`Config set ${p[e][0]} cannot combine --clear-criteria with --criterion values`,s.USAGE);return[]}if(n.length===0)throw new l(`Config set ${p[e][0]} requires at least one --criterion value (or --clear-criteria to clear)`,s.USAGE);return n}function Ie(e){return[...new Set(e)].sort((t,r)=>t.localeCompare(r))}function ht(e,t){if(e==="list"||e==="export"){if(typeof t=="string"&&t.trim().length>0)throw new l(`Config action "${e}" does not accept <key>`,s.USAGE);return}if(typeof t!="string"||t.trim().length===0)throw new l(`Config action "${e}" requires <key>`,s.USAGE);return Ee(t)}function Pe(e){if(!e)throw new l("Config action requires <key>",s.USAGE)}var vt={definition_of_done:e=>[...e.workflow.definition_of_done],item_format:e=>e.item_format,history_missing_stream_policy:e=>e.history.missing_stream,sprint_release_format_policy:e=>e.validation.sprint_release_format,parent_reference_policy:e=>e.validation.parent_reference,metadata_validation_profile:e=>e.validation.metadata_profile,metadata_required_fields:e=>[...e.validation.metadata_required_fields],lifecycle_stale_blocker_reason_patterns:e=>[...e.validation.lifecycle_stale_blocker_reason_patterns],lifecycle_closure_like_blocked_reason_patterns:e=>[...e.validation.lifecycle_closure_like_blocked_reason_patterns],lifecycle_closure_like_resolution_patterns:e=>[...e.validation.lifecycle_closure_like_resolution_patterns],lifecycle_closure_like_actual_result_patterns:e=>[...e.validation.lifecycle_closure_like_actual_result_patterns],governance_preset:e=>e.governance.preset,governance_ownership_enforcement:e=>e.governance.ownership_enforcement,governance_create_mode_default:e=>e.governance.create_mode_default,governance_close_validation_default:e=>e.governance.close_validation_default,governance_require_close_reason:e=>e.governance.require_close_reason?"enabled":"disabled",governance_create_default_type:e=>e.governance.create_default_type??"",governance_workflow_enforcement:e=>e.governance.workflow_enforcement??"off",governance_parent_reference_policy:e=>e.governance.parent_reference,governance_metadata_validation_profile:e=>e.governance.metadata_profile,governance_force_required_for_stale_lock:e=>e.governance.force_required_for_stale_lock?"enabled":"disabled",test_result_tracking:e=>e.testing.record_results_to_items?"enabled":"disabled",untrusted_linked_test_execution:e=>e.testing.allow_untrusted_linked_tests?"enabled":"disabled",telemetry_tracking:e=>e.telemetry.enabled?"enabled":"disabled",agent_identity_vocabulary:e=>T(e.agent_identity?.identity_vocabulary),context:e=>({default_depth:e.context.default_depth,activity_limit:e.context.activity_limit,stale_threshold_days:e.context.stale_threshold_days,sections:{...e.context.sections}})};function Q(e,t){return vt[t](e)}function g(e,t){return t.length===0?e:{...e,warnings:t}}async function wt(e,t){let r=process.cwd(),n=e==="project"?b(r,t.path):Z(r),i=x(n);return e==="project"&&await re(n),{pmRoot:n,settingsPath:i}}function bt(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(t==="true"||t==="enabled"||t==="on"||t==="1")return!0;if(t==="false"||t==="disabled"||t==="off"||t==="0")return!1;throw new l(`Context section toggle must be true|false|enabled|disabled, got "${e}"`,s.USAGE)}function we(e,t){let r=e.trim(),n=Number(r);if(/^\d+$/u.test(r)&&Number.isSafeInteger(n)&&n>0)return n;throw new l(`Context ${t} must be a positive integer`,s.USAGE)}async function kt(e,t,r,n,i){let a=!1,o=e.context;if(t.defaultDepth!==void 0){let c=t.defaultDepth.trim().toLowerCase();if(!I.includes(c))throw new l(`Context --default-depth must be one of ${I.join("|")}`,s.USAGE);o.default_depth!==c&&(o.default_depth=c,a=!0)}if(t.activityLimit!==void 0){let c=we(t.activityLimit,"--activity-limit");o.activity_limit!==c&&(o.activity_limit=c,a=!0)}if(t.staleThresholdDays!==void 0){let c=we(t.staleThresholdDays,"--stale-threshold-days");o.stale_threshold_days!==c&&(o.stale_threshold_days=c,a=!0)}let d=[["hierarchy",t.sectionHierarchy],["activity",t.sectionActivity],["progress",t.sectionProgress],["blockers",t.sectionBlockers],["files",t.sectionFiles],["workload",t.sectionWorkload],["staleness",t.sectionStaleness],["tests",t.sectionTests]];for(let[c,_]of d){let m=bt(_);if(m!==void 0){let y=c;o.sections[y]!==m&&(o.sections[y]=m,a=!0)}}return a&&await w(r.pmRoot,e,"config:set:context"),g({scope:n,key:"context",context_settings:{default_depth:o.default_depth,activity_limit:o.activity_limit,stale_threshold_days:o.stale_threshold_days,sections:{...o.sections}},settings_path:r.settingsPath,changed:a},i)}function Ct(e,t,r){if(r.value!==void 0&&r.value!==t)throw new l(`Config set ${e} received both positional value "${t}" and --value "${r.value}". Pass only one.`,s.USAGE);return{...r,value:t}}function Oe(e,t,r,n,i,a){if(i===void 0)return a;if(e!=="set")throw new l(`Config action "${e}" does not accept a positional value. Only "set" takes <value>.`,s.USAGE);if(typeof t!="string"||t.trim().length===0)throw new l('Config action "set" requires <key> before a positional <value>.',s.USAGE);if(n)return Ct(t,i,a);Pe(r);let o=ge(r,i);if(!o.routable)throw new l(o.reason,s.USAGE);if(o.flag==="criterion"){if(a.criterion!==void 0&&a.criterion.length>0)throw new l(`Config set ${t} received both positional value "${i}" and --criterion. Pass criteria via --criterion only when supplying more than one value.`,s.USAGE);return{...a,criterion:o.values}}if(o.flag==="format")return{...a,format:o.value};if(a.policy!==void 0&&D(r,a.policy)!==D(r,o.value))throw new l(`Config set ${t} received both positional value "${i}" and --policy "${a.policy}". Pass only one.`,s.USAGE);return{...a,policy:o.value}}function Et(e){let t=Object.keys(p).map(n=>({key:n,aliases:p[n],value_kind:n==="context"||n==="agent_identity_vocabulary"?"object":$(n)?"string_array":"enum",set_flags:n==="context"?["--default-depth","--activity-limit","--stale-threshold-days","--section-<name>"]:n==="agent_identity_vocabulary"?["--policy","--value","--criterion"]:$(n)?["--criterion","--clear-criteria"]:n==="item_format"?["--format"]:["--policy"],summary:at[n],value:Q(e.settings,n)})),r=C.map(n=>({key:n.key,canonical_key:n.key.replaceAll("_","-"),path:n.path,kind:n.kind,value:N(e.settings,n),summary:n.summary,...n.choices?{choices:[...n.choices]}:{},...n.min===void 0?{}:{min:n.min},...n.max===void 0?{}:{max:n.max}}));return g({scope:e.scope,keys:t,nested_settings:r,count:t.length,settings_path:e.target.settingsPath,changed:!1},e.warnings)}function At(e){let t=Object.fromEntries(Object.keys(p).map(r=>[r,Q(e.settings,r)]));return g({scope:e.scope,values:t,settings_path:e.target.settingsPath,changed:!1},e.warnings)}function St(e,t){let r=Q(e.settings,t),n={scope:e.scope,key:t,settings_path:e.target.settingsPath,changed:!1};return t==="item_format"?g({...n,format:e.settings.item_format,has_explicit_item_format:e.metadata.has_explicit_item_format},e.warnings):t==="context"?g({...n,context_settings:r},e.warnings):t==="agent_identity_vocabulary"?g({...n,identity_vocabulary:r},e.warnings):Array.isArray(r)?g({...n,criteria:r},e.warnings):g({...n,policy:r},e.warnings)}async function qt(e,t,r,n){if(t==="get"){let d=N(e.settings,r);return g({scope:e.scope,key:r.key,nested_setting:{key:r.key,path:r.path,kind:r.kind,value:d},settings_path:e.target.settingsPath,changed:!1},e.warnings)}let i=n.value;if(typeof i!="string")throw new l(`Config set ${r.key} requires a value. Pass it positionally (\`pm config ${e.scope} set ${r.key} <value>\`) or via --value.`,s.USAGE);let a=pe(r,i);if(!a.ok)throw new l(a.error.message,s.USAGE);let o=ye(e.settings,r,a.parsed.value);return o&&await w(e.target.pmRoot,e.settings,`config:set:${r.path}`),g({scope:e.scope,key:r.key,nested_setting:{key:r.key,path:r.path,kind:r.kind,value:a.parsed.value},settings_path:e.target.settingsPath,changed:o},e.warnings)}async function u(e,t,r){t&&await w(e.target.pmRoot,e.settings,r)}function L(e,t,r){return e!==r||t!==r}function f(e,t,r,n){return g({scope:e.scope,key:t,policy:r,settings_path:e.target.settingsPath,changed:n},e.warnings)}function U(e,t,r,n){return g({scope:e.scope,key:t,criteria:r,settings_path:e.target.settingsPath,changed:n},e.warnings)}async function Gt(e,t){let r=Se(t.format),n=e.settings.item_format!==r||!e.metadata.has_explicit_item_format,i;if(n){let a=P(e.settings,O()),o=await se(e.target.pmRoot,r,"config:set:item_format:migrate",a.type_to_folder,e.settings.schema);i={target_format:o.target_format,scanned:o.scanned,migrated:o.migrated,removed:o.removed,warnings:o.warnings},e.settings.item_format=r,await w(e.target.pmRoot,e.settings,"config:set:item_format")}return g({scope:e.scope,key:"item_format",format:e.settings.item_format,has_explicit_item_format:!0,migration:i,settings_path:e.target.settingsPath,changed:n},e.warnings)}async function It(e,t,r){if(t==="history_missing_stream_policy"){let a=z(r.policy),o=e.settings.history.missing_stream!==a;return e.settings.history.missing_stream=a,await u(e,o,"config:set:history_missing_stream_policy"),f(e,t,e.settings.history.missing_stream,o)}if(t==="sprint_release_format_policy"){let a=R(r.policy),o=e.settings.validation.sprint_release_format!==a;return e.settings.validation.sprint_release_format=a,await u(e,o,"config:set:sprint_release_format_policy"),f(e,t,e.settings.validation.sprint_release_format,o)}if(t==="parent_reference_policy"){let a=k(r.policy),o=e.settings.validation.parent_reference!==a||e.settings.governance.preset!=="custom"||e.settings.governance.parent_reference!==a;return e.settings.validation.parent_reference=a,e.settings.governance.preset="custom",e.settings.governance.parent_reference=a,await u(e,o,"config:set:parent_reference_policy"),f(e,t,e.settings.validation.parent_reference,o)}let n=E(r.policy),i=e.settings.validation.metadata_profile!==n||e.settings.governance.preset!=="custom"||e.settings.governance.metadata_profile!==n;return e.settings.validation.metadata_profile=n,e.settings.governance.preset="custom",e.settings.governance.metadata_profile=n,await u(e,i,"config:set:metadata_validation_profile"),f(e,t,e.settings.validation.metadata_profile,i)}async function Pt(e,t,r){if(t==="metadata_required_fields"){let o=Ge(r.criterion,r.clearCriteria),d=o.length!==e.settings.validation.metadata_required_fields.length||o.some((c,_)=>c!==e.settings.validation.metadata_required_fields[_]);return e.settings.validation.metadata_required_fields=o,await u(e,d,"config:set:metadata_required_fields"),U(e,t,[...e.settings.validation.metadata_required_fields],d)}let n={lifecycle_stale_blocker_reason_patterns:e.settings.validation.lifecycle_stale_blocker_reason_patterns,lifecycle_closure_like_blocked_reason_patterns:e.settings.validation.lifecycle_closure_like_blocked_reason_patterns,lifecycle_closure_like_resolution_patterns:e.settings.validation.lifecycle_closure_like_resolution_patterns,lifecycle_closure_like_actual_result_patterns:e.settings.validation.lifecycle_closure_like_actual_result_patterns}[t],i=yt(t,r.criterion,r.clearCriteria),a=i.length!==n.length||i.some((o,d)=>o!==n[d]);return n.splice(0,n.length,...i),await u(e,a,`config:set:${t}`),U(e,t,[...n],a)}async function Ot(e,t,r){if(t==="governance_preset"){let c=M(r.policy),_=e.settings.governance.preset!==c;return e.settings.governance.preset=c,await u(e,_,"config:set:governance_preset"),f(e,t,e.settings.governance.preset,_)}let n=typeof r.policy=="string",i=n?r.policy.trim():"";if(n&&i.length===0){let c=e.settings.governance.create_default_type!==void 0;return delete e.settings.governance.create_default_type,await u(e,c,"config:set:governance_create_default_type"),f(e,t,e.settings.governance.create_default_type??"",c)}if(i.length===0)throw new l('Config set governance-create-default-type requires an item type value (or an empty value "" to clear it)',s.USAGE);let a=P(e.settings,O()),o=J(i,a);if(!o)throw new l(oe(i,a.types,ne(e.target.pmRoot,e.settings.schema)),s.USAGE);let d=e.settings.governance.create_default_type!==o;return e.settings.governance.create_default_type=o,await u(e,d,"config:set:governance_create_default_type"),f(e,t,e.settings.governance.create_default_type,d)}async function Rt(e,t,r){if(t==="governance_ownership_enforcement"){let a=V(r.policy),o=e.settings.governance.preset!=="custom"||e.settings.governance.ownership_enforcement!==a;return e.settings.governance.preset="custom",e.settings.governance.ownership_enforcement=a,await u(e,o,"config:set:governance_ownership_enforcement"),f(e,t,e.settings.governance.ownership_enforcement,o)}if(t==="governance_create_mode_default"){let a=K(r.policy),o=e.settings.governance.preset!=="custom"||e.settings.governance.create_mode_default!==a;return e.settings.governance.preset="custom",e.settings.governance.create_mode_default=a,await u(e,o,"config:set:governance_create_mode_default"),f(e,t,e.settings.governance.create_mode_default,o)}let n=Y(r.policy),i=e.settings.governance.preset!=="custom"||e.settings.governance.close_validation_default!==n;return e.settings.governance.preset="custom",e.settings.governance.close_validation_default=n,await u(e,i,"config:set:governance_close_validation_default"),f(e,t,e.settings.governance.close_validation_default,i)}async function Tt(e,t,r){if(t==="governance_parent_reference_policy"){let a=k(r.policy),o=e.settings.governance.preset!=="custom"||L(e.settings.governance.parent_reference,e.settings.validation.parent_reference,a);return e.settings.governance.preset="custom",e.settings.governance.parent_reference=a,e.settings.validation.parent_reference=a,await u(e,o,"config:set:governance_parent_reference_policy"),f(e,t,e.settings.governance.parent_reference,o)}if(t==="governance_metadata_validation_profile"){let a=E(r.policy),o=e.settings.governance.preset!=="custom"||L(e.settings.governance.metadata_profile,e.settings.validation.metadata_profile,a);return e.settings.governance.preset="custom",e.settings.governance.metadata_profile=a,e.settings.validation.metadata_profile=a,await u(e,o,"config:set:governance_metadata_validation_profile"),f(e,t,e.settings.governance.metadata_profile,o)}let n=B(r.policy),i=(e.settings.governance.workflow_enforcement??"off")!==n;return e.settings.governance.workflow_enforcement=n,await u(e,i,"config:set:governance_workflow_enforcement"),f(e,t,e.settings.governance.workflow_enforcement,i)}async function Nt(e,t,r){if(t==="governance_require_close_reason"){let a=H(r.policy)==="enabled",o=e.settings.governance.require_close_reason!==a;return e.settings.governance.require_close_reason=a,await u(e,o,"config:set:governance_require_close_reason"),f(e,t,e.settings.governance.require_close_reason?"enabled":"disabled",o)}let n=W(r.policy)==="enabled",i=e.settings.governance.preset!=="custom"||e.settings.governance.force_required_for_stale_lock!==n;return e.settings.governance.preset="custom",e.settings.governance.force_required_for_stale_lock=n,await u(e,i,"config:set:governance_force_required_for_stale_lock"),f(e,t,e.settings.governance.force_required_for_stale_lock?"enabled":"disabled",i)}async function $t(e,t,r){if(t==="test_result_tracking"){let a=qe(r.policy)==="enabled",o=e.settings.testing.record_results_to_items!==a;return e.settings.testing.record_results_to_items=a,await u(e,o,"config:set:test_result_tracking"),f(e,t,e.settings.testing.record_results_to_items?"enabled":"disabled",o)}if(t==="untrusted_linked_test_execution"){let a=j(r.policy,"untrusted-linked-test-execution")==="enabled",o=e.settings.testing.allow_untrusted_linked_tests!==a;return e.settings.testing.allow_untrusted_linked_tests=a,await u(e,o,"config:set:untrusted_linked_test_execution"),f(e,t,e.settings.testing.allow_untrusted_linked_tests?"enabled":"disabled",o)}let n=F(r.policy)==="enabled",i=e.settings.telemetry.enabled!==n||!e.settings.telemetry.first_run_prompt_completed;return e.settings.telemetry.enabled=n,e.settings.telemetry.first_run_prompt_completed=!0,await u(e,i,"config:set:telemetry_tracking"),f(e,t,e.settings.telemetry.enabled?"enabled":"disabled",i)}async function Dt(e,t,r){let n=Ae(r.criterion,r.clearCriteria),i=n.length!==e.settings.workflow.definition_of_done.length||n.some((a,o)=>a!==e.settings.workflow.definition_of_done[o]);return e.settings.workflow.definition_of_done=n,await u(e,i,"config:set:definition_of_done"),U(e,t,[...e.settings.workflow.definition_of_done],i)}function Lt(e){let t=e?.trim().toLowerCase().replaceAll("_","-"),r=t?.startsWith("preview-")===!0,n=r?t.slice(8):t;if(n==="add"||n==="remove"||n==="clear")return{operation:n,dryRun:r};throw new l("Config set agent-identity-vocabulary requires --policy add|remove|clear|preview-add|preview-remove|preview-clear",s.USAGE)}function Ut(e,t){if(e==="add"){let r=t?.lastIndexOf("=")??-1;if(r<=0||r===t.length-1)throw new l('Config set agent-identity-vocabulary --policy add requires --value "<legacy-author>=<canonical-harness>"',s.USAGE);return{legacy_author:t.slice(0,r),canonical_harness:t.slice(r+1)}}if(e==="remove"){if(t===void 0)throw new l("Config set agent-identity-vocabulary --policy remove requires --value <legacy-author>",s.USAGE);return{legacy_author:t}}if(t!==void 0)throw new l("Config set agent-identity-vocabulary --policy clear does not accept --value",s.USAGE);return{}}async function zt(e,t){let{operation:r,dryRun:n}=Lt(t.policy),i=Ut(r,t.value),a;try{a=de(e.settings.agent_identity?.identity_vocabulary,{operation:r,...i,observed_authors:t.criterion})}catch(o){throw new l(o.message,s.USAGE)}return a.preview.changed&&!n&&(e.settings.agent_identity={...e.settings.agent_identity,identity_vocabulary:a.vocabulary},await u(e,!0,`config:set:agent_identity.identity_vocabulary:${r}:v${a.preview.version_after}`)),g({scope:e.scope,key:"agent_identity_vocabulary",identity_vocabulary:T(n?e.settings.agent_identity?.identity_vocabulary:a.vocabulary),vocabulary_mutation:a.preview,settings_path:e.target.settingsPath,changed:a.preview.changed&&!n},e.warnings)}async function jt(e,t,r){if(r.clearCriteria===!0&&!$(t))throw new l("--clear-criteria is only supported with config set criteria-list keys",s.USAGE);return t==="item_format"?Gt(e,r):t==="context"?kt(e.settings,r,e.target,e.scope,e.warnings):t==="agent_identity_vocabulary"?zt(e,r):t==="definition_of_done"?Dt(e,t,r):be(t)?Pt(e,t,r):st.has(t)?$t(e,t,r):lt.has(t)?Nt(e,t,r):ut(t)?Rt(e,t,r):ft(t)?Tt(e,t,r):gt(t)?Ot(e,t,r):It(e,t,r)}async function Cr(e,t,r,n,i,a){let o=ke(e),d=Ce(t),c=d==="get"||d==="set"?me(r):void 0,_=c?void 0:ht(d,r),m=Oe(d,r,_,c,a,n),y=await wt(o,i),{settings:h,metadata:De,warnings:Le}=await ae(y.pmRoot),v={scope:o,target:y,settings:h,metadata:De,warnings:Ie(Le)};return c?qt(v,d,c,m):d==="list"?Et(v):d==="export"?At(v):(Pe(_),d==="get"?St(v,_):jt(v,_,m))}var Er={hasGovernanceValidationMirrorChange:L,applyPositionalValue:Oe,normalizeAction:Ce,normalizeCriteria:Ae,normalizeGovernanceCloseValidationDefault:Y,normalizeGovernanceCreateModeDefault:K,normalizeGovernanceForceRequiredForStaleLockPolicy:W,normalizeGovernanceOwnershipEnforcement:V,normalizeGovernancePreset:M,normalizeGovernanceRequireCloseReasonPolicy:H,normalizeGovernanceWorkflowEnforcement:B,normalizeHistoryMissingStreamPolicy:z,normalizeItemFormat:Se,normalizeKey:Ee,normalizeMetadataRequiredFields:Ge,normalizePolicyForConflict:D,normalizeScope:ke,normalizeTelemetryTrackingPolicy:F,normalizeTestResultTrackingPolicy:qe,normalizeValidateMetadataProfile:E,normalizeWarnings:Ie};import{execFile as Ft}from"node:child_process";import Mt from"node:path";import{promisify as Vt}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]="7fe99df0-8454-5667-9205-0b861ba212d1")}catch{}})();var Kt=Vt(Ft),Te="@unbrained/pm-cli",Yt="latest",Bt={global:["--global"],project:[]};function Re(e){let t=e.project===!0||e.local===!0||e.scope==="project",r=e.global===!0||e.scope==="global";if(t&&r)throw new l('Options "--project/--local" and "--global" are mutually exclusive.',s.USAGE);return r?"global":"project"}function S(e){return e.trim().toLowerCase()}function Ne(e,t){let r=S(t);return[e.name,e.directory,e.source.input,e.source.location,e.source.package,e.source.repository,e.source.owner&&e.source.repo?`${e.source.owner}/${e.source.repo}`:void 0].some(n=>typeof n=="string"&&S(n)===r)}function Wt(e,t){let r=b(process.cwd(),t.path),n=ee(r,process.cwd());return{selected_root:e==="global"?n.global:n.project}}async function Ht(e,t,r){try{let n=await Kt(e,t,{cwd:r?.cwd,encoding:"utf8"});return{stdout:n.stdout,stderr:n.stderr}}catch(n){let i=typeof n=="object"&&n!==null&&"stderr"in n?String(n.stderr??""):"",a=i.trim().length>0?i.trim():n instanceof Error?n.message:String(n);throw new l(`Command failed: ${e} ${t.join(" ")}
1
+ import{$a as ce,Ja as le}from"./chunk-SSY4OSJR.js";import{Cl as ie,Cm as oe,Ec as O,Mn as se,Na as I,R as s,T as l,Tf as re,V as G,Va as P,Wa as J,bb as b,db as Z,dd as te,eb as x,fm as k,ga as X,jc as ee,kg as ne,lm as R,ti as ae,vi as w}from"./chunk-YMLF6QT7.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]="544840da-22f5-5734-81ec-e12c5612545c")}catch{}})();var Ue=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function _e(e){let t=e?.trim();if(!t||t==="__proto__"||t.length>128)throw new Error("A legacy author must contain 1-128 characters.");return t}function ze(e){let t=e?.trim().toLowerCase();if(!t||!Ue.test(t))throw new Error("A canonical harness must be a lowercase dash-separated namespace.");return t}function je(e){return Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)))}function Fe(e,t){let r=new Set;for(let n of(e??[]).slice(0,1e4)){let i=n.trim().slice(0,128);i.length===0||i.startsWith("harness:")||Object.hasOwn(t,i)||r.add(i)}return r.size}function Me(e,t){let r=_e(t.legacy_author),n=ze(t.canonical_harness);if(r===n||r===`harness:${n}`||r.startsWith("harness:"))throw new Error(`The legacy author "${r}" is already canonical and must not be aliased.`);return e[r]===n?!1:(e[r]=n,!0)}function Ve(e,t){if(t.operation==="add")return Me(e,t);if(t.operation==="remove"){let n=_e(t.legacy_author);return Object.hasOwn(e,n)?(delete e[n],!0):!1}if(t.operation==="clear"){let n=Object.keys(e).length>0;for(let i of Object.keys(e))delete e[i];return n}let r=t.operation;throw new Error(`Unsupported vocabulary operation: ${String(r)}`)}function T(e){return{version:e?.version??1,alias_count:Object.keys(e?.aliases??{}).length}}function de(e,t){let r=e?.version??1,n={...e?.aliases},i=Ve(n,t),a={version:i?r+1:r,aliases:je(n)};return{vocabulary:a,preview:{operation:t.operation,changed:i,version_before:r,version_after:a.version,alias_count:Object.keys(a.aliases).length,residual_author_count:Fe(t.observed_authors,a.aliases)}}}(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]="78e92b9c-f3da-594e-8158-00409222308f")}catch{}})();var ue=new Set(["item_format"]),fe=new Set(["definition_of_done","metadata_required_fields","lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns"]),Ke=new Set(["history_missing_stream_policy","sprint_release_format_policy","parent_reference_policy","metadata_validation_profile","governance_preset","governance_ownership_enforcement","governance_create_mode_default","governance_close_validation_default","governance_require_close_reason","governance_create_default_type","governance_workflow_enforcement","governance_parent_reference_policy","governance_metadata_validation_profile","governance_force_required_for_stale_lock","test_result_tracking","untrusted_linked_test_execution","telemetry_tracking","agent_identity_vocabulary"]),Ye=new Set(["governance_require_close_reason","governance_force_required_for_stale_lock","test_result_tracking","untrusted_linked_test_execution","telemetry_tracking"]),Be={off:"disabled",on:"enabled",true:"enabled",false:"disabled",enabled:"enabled",disabled:"disabled"};function We(e){let t=e.trim().toLowerCase().replaceAll("-","_");if(ue.has(t)||fe.has(t)||Ke.has(t)||t==="context")return t}function He(e){let t=e.trim().toLowerCase();return Be[t]??e}function ge(e,t){let r=We(e);return r===void 0?{routable:!1,reason:`Unknown config key "${e}" cannot route a positional value.`}:r==="context"?{routable:!1,reason:"Config set context does not accept a positional value. Use --default-depth, --activity-limit, --stale-threshold-days, or --section-<name> flags."}:ue.has(r)?{routable:!0,flag:"format",value:t}:fe.has(r)?{routable:!0,flag:"criterion",values:[t]}:{routable:!0,flag:"policy",value:Ye.has(r)?He(t):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]="2ae4f6da-17c5-5024-89a2-bb0a4be9a683")}catch{}})();var C=[{key:"search_provider",path:"search.provider",kind:"string",summary:"Search embedding provider name (e.g. openai, ollama, or an extension provider)."},{key:"search_default_mode",path:"search.default_mode",kind:"string",choices:["auto","keyword","semantic","hybrid"],summary:"Mode a bare pm search runs in: auto (hybrid when semantic search is explicitly configured and runnable, else keyword), or a pinned keyword, semantic, or hybrid."},{key:"search_mutation_refresh_policy",path:"search.mutation_refresh_policy",kind:"string",choices:["cache_only","semantic_configured","semantic_auto"],summary:"Mutation-time search refresh policy: cache_only, semantic_configured, or semantic_auto."},{key:"search_query_expansion_enabled",path:"search.query_expansion.enabled",kind:"boolean",summary:"Enable or disable query expansion for semantic/hybrid search."},{key:"search_query_expansion_provider",path:"search.query_expansion.provider",kind:"string",summary:"Query expansion provider name (built-in openai/ollama or extension provider)."},{key:"search_rerank_enabled",path:"search.rerank.enabled",kind:"boolean",summary:"Enable or disable post-retrieval reranking for hybrid search."},{key:"search_rerank_model",path:"search.rerank.model",kind:"string",summary:"Rerank model name override used by built-in providers."},{key:"search_rerank_top_k",path:"search.rerank.top_k",kind:"integer",min:1,summary:"Number of top hybrid candidates to rerank when rerank is enabled."},{key:"search_embedding_model",path:"search.embedding_model",kind:"string",summary:"Default embedding model name (overrides provider-specific model when set)."},{key:"search_embedding_corpus_max_characters",path:"search.embedding_corpus_max_characters",kind:"integer",min:1,summary:"Maximum semantic corpus characters per item before truncation."},{key:"search_embedding_batch_size",path:"search.embedding_batch_size",kind:"integer",min:1,summary:"Number of items embedded per request batch."},{key:"search_embedding_timeout_ms",path:"search.embedding_timeout_ms",kind:"integer",min:1,summary:"Per-request embedding timeout in milliseconds."},{key:"search_score_threshold",path:"search.score_threshold",kind:"number",summary:"Minimum score for a hit to be returned (0 keeps all matches)."},{key:"search_hybrid_semantic_weight",path:"search.hybrid_semantic_weight",kind:"ratio",summary:"Hybrid mode semantic weight in [0, 1] (1-weight goes to keyword)."},{key:"search_max_results",path:"search.max_results",kind:"integer",min:1,summary:"Default upper bound on search hits when --limit is not supplied."},{key:"search_bm25_k1",path:"search.bm25.k1",kind:"number",min:0,summary:"Offline BM25 term-frequency saturation (k1); higher saturates repeated terms slower (default 1.2)."},{key:"search_bm25_b",path:"search.bm25.b",kind:"ratio",summary:"Offline BM25 document-length normalization (b) in [0, 1]; 0 disables, 1 fully normalizes (default 0.75)."},{key:"openai_base_url",path:"providers.openai.base_url",kind:"string",summary:"OpenAI-compatible API base URL (LM Studio/vLLM also use this)."},{key:"openai_api_key",path:"providers.openai.api_key",kind:"string",summary:"OpenAI-compatible API key."},{key:"openai_model",path:"providers.openai.model",kind:"string",summary:"OpenAI-compatible embedding model name."},{key:"ollama_base_url",path:"providers.ollama.base_url",kind:"string",summary:"Ollama API base URL (typically http://localhost:11434)."},{key:"ollama_model",path:"providers.ollama.model",kind:"string",summary:"Ollama embedding model name (e.g. nomic-embed-text)."},{key:"vector_store_adapter",path:"vector_store.adapter",kind:"string",summary:"Vector store adapter name (lancedb, qdrant, or an extension adapter)."},{key:"vector_store_collection_name",path:"vector_store.collection_name",kind:"string",non_empty:!0,summary:"Vector collection/table name shared by Qdrant and LanceDB adapters."},{key:"qdrant_url",path:"vector_store.qdrant.url",kind:"string",summary:"Qdrant HTTP API URL."},{key:"qdrant_api_key",path:"vector_store.qdrant.api_key",kind:"string",summary:"Qdrant API key (empty if running unauthenticated)."},{key:"lancedb_path",path:"vector_store.lancedb.path",kind:"string",summary:"LanceDB storage path (relative to pm root or absolute)."},{key:"id_prefix",path:"id_prefix",kind:"string",non_empty:!0,summary:'Prefix for generated item IDs (e.g. "pm" produces pm-xxxx).'},{key:"author_default",path:"author_default",kind:"string",non_empty:!0,summary:"Default author recorded on mutations when --author is not supplied."},{key:"agent_identity_probes_enabled",path:"agent_identity.probes_enabled",kind:"boolean",summary:"Allow privacy-bounded local harness provenance probes; no network or subprocess access is permitted."},{key:"mutation_guard_require_attributed_author",path:"mutation_guard.require_attributed_author",kind:"boolean",summary:"Reject mutations whose effective author resolves to unknown."},{key:"mutation_guard_secret_guard",path:"mutation_guard.secret_guard",kind:"string",choices:["off","advise","block"],summary:"Detect credential-shaped mutation content: off, advise, or block."},{key:"mutation_guard_stale_in_progress_hours",path:"mutation_guard.stale_in_progress_hours",kind:"integer",min:1,summary:"Age threshold for unclaimed in-progress work surfaced by health."},{key:"governance_duplicate_detection_mode",path:"governance.duplicate_detection_mode",kind:"string",choices:["off","advisory","strict"],summary:"Create/copy duplicate governance: off, advisory, or strict explicit-bypass enforcement."},{key:"governance_duplicate_detection_threshold",path:"governance.duplicate_detection_threshold",kind:"ratio",summary:"Minimum shared similarity score in [0, 1] for create/copy duplicate governance."},{key:"governance_duplicate_detection_limit",path:"governance.duplicate_detection_limit",kind:"integer",min:0,max:20,summary:"Maximum likely duplicates returned by create/copy governance (0-20)."},{key:"output_default_format",path:"output.default_format",kind:"string",choices:["toon","json"],summary:"Default output format for commands that support it: toon or json."},{key:"ux_deprecation_hints",path:"ux.deprecation_hints",kind:"boolean",summary:"Emit one stderr migration hint for deprecated command aliases."},{key:"locks_ttl_seconds",path:"locks.ttl_seconds",kind:"integer",min:1,summary:"Claim/lock time-to-live in seconds before a stale lock can be reclaimed."},{key:"locks_wait_ms",path:"locks.wait_ms",kind:"integer",min:0,summary:"Bounded jittered wait in milliseconds before a contended item mutation fails with lock_conflict; 0 fails fast. PM_LOCK_WAIT_MS overrides per invocation."},{key:"ids_token_length",path:"ids.token_length",kind:"integer",min:4,max:12,summary:"Random base36 token length for newly minted item ids (4-12, default 4). Raise it to shrink cross-branch id collision odds in concurrent multi-agent workflows (pm-pibw)."},{key:"checkpoints_retention_days",path:"checkpoints.retention_days",kind:"integer",min:1,summary:"Age in days above which pm gc --scope checkpoints prunes bulk-mutation rollback checkpoints."},{key:"schema_unknown_field_policy",path:"schema.unknown_field_policy",kind:"string",choices:["allow","warn","reject"],summary:"How item I/O handles metadata keys not in the field registry: allow, warn, or reject."},{key:"history_compact_policy_enabled",path:"history.compact_policy.enabled",kind:"boolean",summary:"Enable the history-compaction advisory: pm health warns on over-threshold streams."},{key:"history_compact_policy_max_entries",path:"history.compact_policy.max_entries",kind:"integer",min:1,summary:"Entry count above which a history stream is flagged (and the default pm history-compact --all-over threshold)."},{key:"history_compact_policy_trigger",path:"history.compact_policy.trigger",kind:"string",choices:["health_warn","auto"],summary:"History-compaction policy intent: health_warn (advisory only) or auto (scheduled sweeps expected)."}],Qe=new Map(C.flatMap(e=>[[e.key,e],[e.path.toLowerCase().replaceAll("-","_"),e]]));function me(e){if(typeof e!="string")return;let t=e.trim().toLowerCase().replaceAll("-","_");if(t.length!==0)return Qe.get(t)}function Xe(e,t){let r=t.trim().toLowerCase();return r==="true"||r==="1"||r==="yes"||r==="on"?{ok:!0,parsed:{descriptor:e,value:!0}}:r==="false"||r==="0"||r==="no"||r==="off"?{ok:!0,parsed:{descriptor:e,value:!1}}:{ok:!1,error:{message:`Config set ${e.key} requires a boolean value (true|false), got "${t}"`}}}function Je(e,t,r){return e.non_empty===!0&&r.length===0?{ok:!1,error:{message:`Config set ${e.key} requires a non-empty value`}}:e.choices&&!e.choices.includes(r)?{ok:!1,error:{message:`Config set ${e.key} must be one of ${e.choices.join("|")}, got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function Ze(e,t,r){if(r.length===0)return{ok:!1,error:{message:`Config set ${e.key} requires a non-empty value`}};let n=Number(r);return Number.isFinite(n)?{ok:!0,value:n}:{ok:!1,error:{message:`Config set ${e.key} requires a finite number, got "${t}"`}}}function xe(e,t,r){return!Number.isInteger(r)||r<0?{ok:!1,error:{message:`Config set ${e.key} requires a non-negative integer, got "${t}"`}}:e.min!==void 0&&r<e.min?{ok:!1,error:{message:`Config set ${e.key} requires an integer >= ${e.min}, got "${t}" (the runtime silently ignores 0 here and falls back to the default)`}}:e.max!==void 0&&r>e.max?{ok:!1,error:{message:`Config set ${e.key} requires an integer <= ${e.max}, got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function et(e,t,r){return r<0||r>1?{ok:!1,error:{message:`Config set ${e.key} requires a number in [0, 1], got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function tt(e,t,r){return e.min!==void 0&&r<e.min?{ok:!1,error:{message:`Config set ${e.key} requires a number >= ${e.min}, got "${t}"`}}:{ok:!0,parsed:{descriptor:e,value:r}}}function pe(e,t){if(typeof t!="string")return{ok:!1,error:{message:`Config set ${e.key} requires a string value`}};let r=t.trim();if(e.kind==="boolean")return Xe(e,t);if(e.kind==="string")return Je(e,t,r);let n=Ze(e,t,r);return n.ok?e.kind==="integer"?xe(e,t,n.value):e.kind==="ratio"?et(e,t,n.value):tt(e,t,n.value):{ok:!1,error:n.error}}function N(e,t){let r=t.path.split("."),n=e;for(let i of r){if(typeof n!="object"||n===null)return null;let a=Object.getOwnPropertyDescriptor(n,i);if(!a||!Object.hasOwn(a,"value"))return null;n=a.value}return typeof n=="string"||typeof n=="number"||typeof n=="boolean"?n:null}function ye(e,t,r){let n=t.path.split(".");if(n.some(o=>o.length===0||["__proto__","constructor","prototype"].includes(o)))throw new Error("Unsafe settings path");let i=e;for(let o=0;o<n.length-1;o+=1){let d=n[o],c=Object.getOwnPropertyDescriptor(i,d)?.value;if(typeof c!="object"||c===null||Array.isArray(c)){let _={};Object.defineProperty(i,d,{value:_,writable:!0,enumerable:!0,configurable:!0}),i=_}else i=c}let a=n[n.length-1];return Object.getOwnPropertyDescriptor(i,a)?.value===r?!1:(Object.defineProperty(i,a,{value:r,writable:!0,enumerable:!0,configurable:!0}),!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]="d9b6f2ba-2c5e-52ea-891d-53124601fb89")}catch{}})();var he=["project","global"],p={definition_of_done:["definition-of-done","definition_of_done"],item_format:["item-format","item_format"],history_missing_stream_policy:["history-missing-stream-policy","history_missing_stream_policy"],sprint_release_format_policy:["sprint-release-format-policy","sprint_release_format_policy"],parent_reference_policy:["parent-reference-policy","parent_reference_policy"],metadata_validation_profile:["metadata-validation-profile","metadata_validation_profile"],metadata_required_fields:["metadata-required-fields","metadata_required_fields"],lifecycle_stale_blocker_reason_patterns:["lifecycle-stale-blocker-reason-patterns","lifecycle_stale_blocker_reason_patterns"],lifecycle_closure_like_blocked_reason_patterns:["lifecycle-closure-like-blocked-reason-patterns","lifecycle_closure_like_blocked_reason_patterns"],lifecycle_closure_like_resolution_patterns:["lifecycle-closure-like-resolution-patterns","lifecycle_closure_like_resolution_patterns"],lifecycle_closure_like_actual_result_patterns:["lifecycle-closure-like-actual-result-patterns","lifecycle_closure_like_actual_result_patterns"],governance_preset:["governance-preset","governance_preset"],governance_ownership_enforcement:["governance-ownership-enforcement","governance_ownership_enforcement"],governance_create_mode_default:["governance-create-mode-default","governance_create_mode_default"],governance_close_validation_default:["governance-close-validation-default","governance_close_validation_default"],governance_require_close_reason:["governance-require-close-reason","governance_require_close_reason"],governance_create_default_type:["governance-create-default-type","governance_create_default_type"],governance_workflow_enforcement:["governance-workflow-enforcement","governance_workflow_enforcement"],governance_parent_reference_policy:["governance-parent-reference-policy","governance_parent_reference_policy"],governance_metadata_validation_profile:["governance-metadata-validation-profile","governance_metadata_validation_profile"],governance_force_required_for_stale_lock:["governance-force-required-for-stale-lock","governance_force_required_for_stale_lock"],test_result_tracking:["test-result-tracking","test_result_tracking"],untrusted_linked_test_execution:["untrusted-linked-test-execution","untrusted_linked_test_execution"],telemetry_tracking:["telemetry-tracking","telemetry_tracking"],agent_identity_vocabulary:["agent-identity-vocabulary","agent_identity_vocabulary"],context:["context"]},rt=Object.keys(p).map(e=>p[e][0]),nt=Object.fromEntries(Object.keys(p).flatMap(e=>p[e].map(t=>[t,e]))),at={definition_of_done:"Definition of Done criteria list.",item_format:"Default item file format.",history_missing_stream_policy:"Missing history stream handling policy.",sprint_release_format_policy:"Sprint/release format validation policy.",parent_reference_policy:"Parent reference validation policy.",metadata_validation_profile:"Validate metadata profile policy (core|strict|custom).",metadata_required_fields:"Validate custom metadata required-fields list.",lifecycle_stale_blocker_reason_patterns:"Validate lifecycle stale-blocker reason substring patterns (criteria list).",lifecycle_closure_like_blocked_reason_patterns:"Validate lifecycle closure-like blocked_reason substring patterns (criteria list).",lifecycle_closure_like_resolution_patterns:"Validate lifecycle closure-like resolution substring patterns (criteria list).",lifecycle_closure_like_actual_result_patterns:"Validate lifecycle closure-like actual_result substring patterns (criteria list).",governance_preset:"Governance preset policy (minimal|default|strict|custom).",governance_ownership_enforcement:"Governance ownership enforcement policy (none|warn|strict).",governance_create_mode_default:"Governance default create mode (progressive|strict).",governance_close_validation_default:"Governance default close validation mode (off|warn|strict).",governance_require_close_reason:"Governance close-reason requirement policy (enabled|disabled).",governance_create_default_type:"Governance default item type for `pm create` when --type is omitted.",governance_workflow_enforcement:"Governance per-type transition enforcement mode (off|warn|strict).",governance_parent_reference_policy:"Governance parent reference policy (warn|strict_error).",governance_metadata_validation_profile:"Governance metadata validation profile (core|strict|custom).",governance_force_required_for_stale_lock:"Governance stale-lock force policy (enabled|disabled).",test_result_tracking:"Item-level linked test result persistence policy.",untrusted_linked_test_execution:"Permit an explicit per-run override for commands not trusted by this clone.",telemetry_tracking:"Telemetry usage reporting policy.",agent_identity_vocabulary:"Versioned exact legacy-author interpretation vocabulary (summary only).",context:"Context command settings (depth, section toggles, limits)."},it=["lifecycle_stale_blocker_reason_patterns","lifecycle_closure_like_blocked_reason_patterns","lifecycle_closure_like_resolution_patterns","lifecycle_closure_like_actual_result_patterns"],ot=new Set(["metadata_required_fields",...it]),st=new Set(["test_result_tracking","untrusted_linked_test_execution","telemetry_tracking"]),lt=new Set(["governance_require_close_reason","governance_force_required_for_stale_lock"]),ct=new Set(["governance_ownership_enforcement","governance_create_mode_default","governance_close_validation_default"]),_t=new Set(["governance_parent_reference_policy","governance_metadata_validation_profile","governance_workflow_enforcement"]),dt=new Set(["governance_preset","governance_create_default_type"]),be=e=>ot.has(e),ut=e=>ct.has(e),ft=e=>_t.has(e),gt=e=>dt.has(e);function $(e){return e==="definition_of_done"||be(e)}function ke(e){if(he.includes(e))return e;throw new l(`Invalid config scope "${e}". Allowed: ${he.join(", ")}`,s.USAGE)}function Ce(e){if(e==="get"||e==="set"||e==="list"||e==="export")return e;throw ie({command_path:"config",token:e.trim()||"<empty>",allowed:["export","get","list","set"],token_kind:"action"})}function Ee(e){let t=nt[e];if(t)return t;let r=C.map(n=>n.key).join(", ");throw new l(`Invalid config key "${e}". Supported: ${rt.join(", ")} (underscore variants also accepted). Nested leaf settings: ${r}.`,s.USAGE)}function Ae(e,t){let r=[...new Set((e??[]).map(n=>n.trim()).filter(n=>n.length>0))].sort((n,i)=>n.localeCompare(i));if(t){if(r.length>0)throw new l("Config set definition-of-done cannot combine --clear-criteria with --criterion values",s.USAGE);return[]}if(r.length===0)throw new l("Config set definition-of-done requires at least one non-empty --criterion value (or --clear-criteria to clear)",s.USAGE);return r}function Se(e){let t=e?.trim().toLowerCase();if(t==="toon")return"toon";throw t==="json_markdown"?new l("Config set item-format no longer accepts json_markdown. Markdown item files are legacy read/migration input only.",s.USAGE):new l("Config set item-format requires --format toon",s.USAGE)}function z(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="auto_create"||t==="strict_error")return t;throw new l("Config set history-missing-stream-policy requires --policy with one of: auto_create, strict_error",s.USAGE)}function qe(e){return j(e,"test-result-tracking")}function j(e,t){let r=e?.trim().toLowerCase().replaceAll("-","_");if(r==="enabled"||r==="disabled")return r;throw new l(`Config set ${t} requires --policy with one of: enabled, disabled`,s.USAGE)}function F(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="enabled"||t==="disabled")return t;throw new l("Config set telemetry-tracking requires --policy with one of: enabled, disabled",s.USAGE)}function E(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="core"||t==="strict"||t==="custom")return t;throw new l("Config set metadata-validation-profile requires --policy with one of: core, strict, custom",s.USAGE)}function M(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="minimal"||t==="default"||t==="strict"||t==="custom")return t;throw new l("Config set governance-preset requires --policy with one of: minimal, default, strict, custom",s.USAGE)}function V(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="none"||t==="warn"||t==="strict")return t;throw new l("Config set governance-ownership-enforcement requires --policy with one of: none, warn, strict",s.USAGE)}function K(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="progressive"||t==="strict")return t;throw new l("Config set governance-create-mode-default requires --policy with one of: progressive, strict",s.USAGE)}function Y(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="off"||t==="warn"||t==="strict")return t;if(t==="none"||t==="disabled")return"off";throw new l("Config set governance-close-validation-default requires --policy with one of: off, warn, strict",s.USAGE)}function B(e){let t=typeof e=="string"?e.trim().toLowerCase().replaceAll("-","_"):void 0;if(t==="off"||t==="warn"||t==="strict")return t;if(t==="none"||t==="disabled")return"off";throw new l("Config set governance-workflow-enforcement requires one of: off, warn, strict",s.USAGE)}function W(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="enabled"||t==="disabled")return t;throw new l("Config set governance-force-required-for-stale-lock requires --policy with one of: enabled, disabled",s.USAGE)}function H(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="enabled"||t==="disabled")return t;throw new l("Config set governance-require-close-reason requires --policy with one of: enabled, disabled",s.USAGE)}var mt={test_result_tracking:"test-result-tracking",untrusted_linked_test_execution:"untrusted-linked-test-execution"};function D(e,t){let r=mt[e];if(r)return j(t,r);switch(e){case"history_missing_stream_policy":return z(t);case"sprint_release_format_policy":return R(t);case"parent_reference_policy":case"governance_parent_reference_policy":return k(t);case"metadata_validation_profile":case"governance_metadata_validation_profile":return E(t);case"governance_preset":return M(t);case"governance_ownership_enforcement":return V(t);case"governance_create_mode_default":return K(t);case"governance_close_validation_default":return Y(t);case"governance_require_close_reason":return H(t);case"governance_workflow_enforcement":return B(t);case"governance_force_required_for_stale_lock":return W(t);case"telemetry_tracking":return F(t);default:return t.trim().toLowerCase().replaceAll("-","_")}}var ve={author:"author",acceptance_criteria:"acceptance_criteria","acceptance-criteria":"acceptance_criteria",estimated_minutes:"estimated_minutes","estimated-minutes":"estimated_minutes",estimate:"estimated_minutes",close_reason:"close_reason","close-reason":"close_reason",reviewer:"reviewer",risk:"risk",confidence:"confidence",sprint:"sprint",release:"release"},pt=["author","acceptance_criteria","estimated_minutes","close_reason","reviewer","risk","confidence","sprint","release"];function Ge(e,t){let r=[...new Set((e??[]).map(a=>a.trim()).filter(a=>a.length>0))];if(t){if(r.length>0)throw new l("Config set metadata-required-fields cannot combine --clear-criteria with --criterion values",s.USAGE);return[]}if(r.length===0)throw new l("Config set metadata-required-fields requires at least one --criterion value (or --clear-criteria to clear)",s.USAGE);let n=r.map(a=>a.toLowerCase().replaceAll("-","_")),i=n.filter(a=>ve[a]===void 0);if(i.length>0)throw new l(`Config set metadata-required-fields received unsupported values: ${i.join(", ")}. Supported values: ${pt.join(", ")}`,s.USAGE);return[...new Set(n.map(a=>ve[a]))].sort((a,o)=>a.localeCompare(o))}function yt(e,t,r){let n=[...new Set((t??[]).map(i=>i.trim().toLowerCase()).filter(i=>i.length>0))].sort((i,a)=>i.localeCompare(a));if(r){if(n.length>0)throw new l(`Config set ${p[e][0]} cannot combine --clear-criteria with --criterion values`,s.USAGE);return[]}if(n.length===0)throw new l(`Config set ${p[e][0]} requires at least one --criterion value (or --clear-criteria to clear)`,s.USAGE);return n}function Ie(e){return[...new Set(e)].sort((t,r)=>t.localeCompare(r))}function ht(e,t){if(e==="list"||e==="export"){if(typeof t=="string"&&t.trim().length>0)throw new l(`Config action "${e}" does not accept <key>`,s.USAGE);return}if(typeof t!="string"||t.trim().length===0)throw new l(`Config action "${e}" requires <key>`,s.USAGE);return Ee(t)}function Pe(e){if(!e)throw new l("Config action requires <key>",s.USAGE)}var vt={definition_of_done:e=>[...e.workflow.definition_of_done],item_format:e=>e.item_format,history_missing_stream_policy:e=>e.history.missing_stream,sprint_release_format_policy:e=>e.validation.sprint_release_format,parent_reference_policy:e=>e.validation.parent_reference,metadata_validation_profile:e=>e.validation.metadata_profile,metadata_required_fields:e=>[...e.validation.metadata_required_fields],lifecycle_stale_blocker_reason_patterns:e=>[...e.validation.lifecycle_stale_blocker_reason_patterns],lifecycle_closure_like_blocked_reason_patterns:e=>[...e.validation.lifecycle_closure_like_blocked_reason_patterns],lifecycle_closure_like_resolution_patterns:e=>[...e.validation.lifecycle_closure_like_resolution_patterns],lifecycle_closure_like_actual_result_patterns:e=>[...e.validation.lifecycle_closure_like_actual_result_patterns],governance_preset:e=>e.governance.preset,governance_ownership_enforcement:e=>e.governance.ownership_enforcement,governance_create_mode_default:e=>e.governance.create_mode_default,governance_close_validation_default:e=>e.governance.close_validation_default,governance_require_close_reason:e=>e.governance.require_close_reason?"enabled":"disabled",governance_create_default_type:e=>e.governance.create_default_type??"",governance_workflow_enforcement:e=>e.governance.workflow_enforcement??"off",governance_parent_reference_policy:e=>e.governance.parent_reference,governance_metadata_validation_profile:e=>e.governance.metadata_profile,governance_force_required_for_stale_lock:e=>e.governance.force_required_for_stale_lock?"enabled":"disabled",test_result_tracking:e=>e.testing.record_results_to_items?"enabled":"disabled",untrusted_linked_test_execution:e=>e.testing.allow_untrusted_linked_tests?"enabled":"disabled",telemetry_tracking:e=>e.telemetry.enabled?"enabled":"disabled",agent_identity_vocabulary:e=>T(e.agent_identity?.identity_vocabulary),context:e=>({default_depth:e.context.default_depth,activity_limit:e.context.activity_limit,stale_threshold_days:e.context.stale_threshold_days,sections:{...e.context.sections}})};function Q(e,t){return vt[t](e)}function g(e,t){return t.length===0?e:{...e,warnings:t}}async function wt(e,t){let r=process.cwd(),n=e==="project"?b(r,t.path):Z(r),i=x(n);return e==="project"&&await re(n),{pmRoot:n,settingsPath:i}}function bt(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(t==="true"||t==="enabled"||t==="on"||t==="1")return!0;if(t==="false"||t==="disabled"||t==="off"||t==="0")return!1;throw new l(`Context section toggle must be true|false|enabled|disabled, got "${e}"`,s.USAGE)}function we(e,t){let r=e.trim(),n=Number(r);if(/^\d+$/u.test(r)&&Number.isSafeInteger(n)&&n>0)return n;throw new l(`Context ${t} must be a positive integer`,s.USAGE)}async function kt(e,t,r,n,i){let a=!1,o=e.context;if(t.defaultDepth!==void 0){let c=t.defaultDepth.trim().toLowerCase();if(!I.includes(c))throw new l(`Context --default-depth must be one of ${I.join("|")}`,s.USAGE);o.default_depth!==c&&(o.default_depth=c,a=!0)}if(t.activityLimit!==void 0){let c=we(t.activityLimit,"--activity-limit");o.activity_limit!==c&&(o.activity_limit=c,a=!0)}if(t.staleThresholdDays!==void 0){let c=we(t.staleThresholdDays,"--stale-threshold-days");o.stale_threshold_days!==c&&(o.stale_threshold_days=c,a=!0)}let d=[["hierarchy",t.sectionHierarchy],["activity",t.sectionActivity],["progress",t.sectionProgress],["blockers",t.sectionBlockers],["files",t.sectionFiles],["workload",t.sectionWorkload],["staleness",t.sectionStaleness],["tests",t.sectionTests]];for(let[c,_]of d){let m=bt(_);if(m!==void 0){let y=c;o.sections[y]!==m&&(o.sections[y]=m,a=!0)}}return a&&await w(r.pmRoot,e,"config:set:context"),g({scope:n,key:"context",context_settings:{default_depth:o.default_depth,activity_limit:o.activity_limit,stale_threshold_days:o.stale_threshold_days,sections:{...o.sections}},settings_path:r.settingsPath,changed:a},i)}function Ct(e,t,r){if(r.value!==void 0&&r.value!==t)throw new l(`Config set ${e} received both positional value "${t}" and --value "${r.value}". Pass only one.`,s.USAGE);return{...r,value:t}}function Oe(e,t,r,n,i,a){if(i===void 0)return a;if(e!=="set")throw new l(`Config action "${e}" does not accept a positional value. Only "set" takes <value>.`,s.USAGE);if(typeof t!="string"||t.trim().length===0)throw new l('Config action "set" requires <key> before a positional <value>.',s.USAGE);if(n)return Ct(t,i,a);Pe(r);let o=ge(r,i);if(!o.routable)throw new l(o.reason,s.USAGE);if(o.flag==="criterion"){if(a.criterion!==void 0&&a.criterion.length>0)throw new l(`Config set ${t} received both positional value "${i}" and --criterion. Pass criteria via --criterion only when supplying more than one value.`,s.USAGE);return{...a,criterion:o.values}}if(o.flag==="format")return{...a,format:o.value};if(a.policy!==void 0&&D(r,a.policy)!==D(r,o.value))throw new l(`Config set ${t} received both positional value "${i}" and --policy "${a.policy}". Pass only one.`,s.USAGE);return{...a,policy:o.value}}function Et(e){let t=Object.keys(p).map(n=>({key:n,aliases:p[n],value_kind:n==="context"||n==="agent_identity_vocabulary"?"object":$(n)?"string_array":"enum",set_flags:n==="context"?["--default-depth","--activity-limit","--stale-threshold-days","--section-<name>"]:n==="agent_identity_vocabulary"?["--policy","--value","--criterion"]:$(n)?["--criterion","--clear-criteria"]:n==="item_format"?["--format"]:["--policy"],summary:at[n],value:Q(e.settings,n)})),r=C.map(n=>({key:n.key,canonical_key:n.key.replaceAll("_","-"),path:n.path,kind:n.kind,value:N(e.settings,n),summary:n.summary,...n.choices?{choices:[...n.choices]}:{},...n.min===void 0?{}:{min:n.min},...n.max===void 0?{}:{max:n.max}}));return g({scope:e.scope,keys:t,nested_settings:r,count:t.length,settings_path:e.target.settingsPath,changed:!1},e.warnings)}function At(e){let t=Object.fromEntries(Object.keys(p).map(r=>[r,Q(e.settings,r)]));return g({scope:e.scope,values:t,settings_path:e.target.settingsPath,changed:!1},e.warnings)}function St(e,t){let r=Q(e.settings,t),n={scope:e.scope,key:t,settings_path:e.target.settingsPath,changed:!1};return t==="item_format"?g({...n,format:e.settings.item_format,has_explicit_item_format:e.metadata.has_explicit_item_format},e.warnings):t==="context"?g({...n,context_settings:r},e.warnings):t==="agent_identity_vocabulary"?g({...n,identity_vocabulary:r},e.warnings):Array.isArray(r)?g({...n,criteria:r},e.warnings):g({...n,policy:r},e.warnings)}async function qt(e,t,r,n){if(t==="get"){let d=N(e.settings,r);return g({scope:e.scope,key:r.key,nested_setting:{key:r.key,path:r.path,kind:r.kind,value:d},settings_path:e.target.settingsPath,changed:!1},e.warnings)}let i=n.value;if(typeof i!="string")throw new l(`Config set ${r.key} requires a value. Pass it positionally (\`pm config ${e.scope} set ${r.key} <value>\`) or via --value.`,s.USAGE);let a=pe(r,i);if(!a.ok)throw new l(a.error.message,s.USAGE);let o=ye(e.settings,r,a.parsed.value);return o&&await w(e.target.pmRoot,e.settings,`config:set:${r.path}`),g({scope:e.scope,key:r.key,nested_setting:{key:r.key,path:r.path,kind:r.kind,value:a.parsed.value},settings_path:e.target.settingsPath,changed:o},e.warnings)}async function u(e,t,r){t&&await w(e.target.pmRoot,e.settings,r)}function L(e,t,r){return e!==r||t!==r}function f(e,t,r,n){return g({scope:e.scope,key:t,policy:r,settings_path:e.target.settingsPath,changed:n},e.warnings)}function U(e,t,r,n){return g({scope:e.scope,key:t,criteria:r,settings_path:e.target.settingsPath,changed:n},e.warnings)}async function Gt(e,t){let r=Se(t.format),n=e.settings.item_format!==r||!e.metadata.has_explicit_item_format,i;if(n){let a=P(e.settings,O()),o=await se(e.target.pmRoot,r,"config:set:item_format:migrate",a.type_to_folder,e.settings.schema);i={target_format:o.target_format,scanned:o.scanned,migrated:o.migrated,removed:o.removed,warnings:o.warnings},e.settings.item_format=r,await w(e.target.pmRoot,e.settings,"config:set:item_format")}return g({scope:e.scope,key:"item_format",format:e.settings.item_format,has_explicit_item_format:!0,migration:i,settings_path:e.target.settingsPath,changed:n},e.warnings)}async function It(e,t,r){if(t==="history_missing_stream_policy"){let a=z(r.policy),o=e.settings.history.missing_stream!==a;return e.settings.history.missing_stream=a,await u(e,o,"config:set:history_missing_stream_policy"),f(e,t,e.settings.history.missing_stream,o)}if(t==="sprint_release_format_policy"){let a=R(r.policy),o=e.settings.validation.sprint_release_format!==a;return e.settings.validation.sprint_release_format=a,await u(e,o,"config:set:sprint_release_format_policy"),f(e,t,e.settings.validation.sprint_release_format,o)}if(t==="parent_reference_policy"){let a=k(r.policy),o=e.settings.validation.parent_reference!==a||e.settings.governance.preset!=="custom"||e.settings.governance.parent_reference!==a;return e.settings.validation.parent_reference=a,e.settings.governance.preset="custom",e.settings.governance.parent_reference=a,await u(e,o,"config:set:parent_reference_policy"),f(e,t,e.settings.validation.parent_reference,o)}let n=E(r.policy),i=e.settings.validation.metadata_profile!==n||e.settings.governance.preset!=="custom"||e.settings.governance.metadata_profile!==n;return e.settings.validation.metadata_profile=n,e.settings.governance.preset="custom",e.settings.governance.metadata_profile=n,await u(e,i,"config:set:metadata_validation_profile"),f(e,t,e.settings.validation.metadata_profile,i)}async function Pt(e,t,r){if(t==="metadata_required_fields"){let o=Ge(r.criterion,r.clearCriteria),d=o.length!==e.settings.validation.metadata_required_fields.length||o.some((c,_)=>c!==e.settings.validation.metadata_required_fields[_]);return e.settings.validation.metadata_required_fields=o,await u(e,d,"config:set:metadata_required_fields"),U(e,t,[...e.settings.validation.metadata_required_fields],d)}let n={lifecycle_stale_blocker_reason_patterns:e.settings.validation.lifecycle_stale_blocker_reason_patterns,lifecycle_closure_like_blocked_reason_patterns:e.settings.validation.lifecycle_closure_like_blocked_reason_patterns,lifecycle_closure_like_resolution_patterns:e.settings.validation.lifecycle_closure_like_resolution_patterns,lifecycle_closure_like_actual_result_patterns:e.settings.validation.lifecycle_closure_like_actual_result_patterns}[t],i=yt(t,r.criterion,r.clearCriteria),a=i.length!==n.length||i.some((o,d)=>o!==n[d]);return n.splice(0,n.length,...i),await u(e,a,`config:set:${t}`),U(e,t,[...n],a)}async function Ot(e,t,r){if(t==="governance_preset"){let c=M(r.policy),_=e.settings.governance.preset!==c;return e.settings.governance.preset=c,await u(e,_,"config:set:governance_preset"),f(e,t,e.settings.governance.preset,_)}let n=typeof r.policy=="string",i=n?r.policy.trim():"";if(n&&i.length===0){let c=e.settings.governance.create_default_type!==void 0;return delete e.settings.governance.create_default_type,await u(e,c,"config:set:governance_create_default_type"),f(e,t,e.settings.governance.create_default_type??"",c)}if(i.length===0)throw new l('Config set governance-create-default-type requires an item type value (or an empty value "" to clear it)',s.USAGE);let a=P(e.settings,O()),o=J(i,a);if(!o)throw new l(oe(i,a.types,ne(e.target.pmRoot,e.settings.schema)),s.USAGE);let d=e.settings.governance.create_default_type!==o;return e.settings.governance.create_default_type=o,await u(e,d,"config:set:governance_create_default_type"),f(e,t,e.settings.governance.create_default_type,d)}async function Rt(e,t,r){if(t==="governance_ownership_enforcement"){let a=V(r.policy),o=e.settings.governance.preset!=="custom"||e.settings.governance.ownership_enforcement!==a;return e.settings.governance.preset="custom",e.settings.governance.ownership_enforcement=a,await u(e,o,"config:set:governance_ownership_enforcement"),f(e,t,e.settings.governance.ownership_enforcement,o)}if(t==="governance_create_mode_default"){let a=K(r.policy),o=e.settings.governance.preset!=="custom"||e.settings.governance.create_mode_default!==a;return e.settings.governance.preset="custom",e.settings.governance.create_mode_default=a,await u(e,o,"config:set:governance_create_mode_default"),f(e,t,e.settings.governance.create_mode_default,o)}let n=Y(r.policy),i=e.settings.governance.preset!=="custom"||e.settings.governance.close_validation_default!==n;return e.settings.governance.preset="custom",e.settings.governance.close_validation_default=n,await u(e,i,"config:set:governance_close_validation_default"),f(e,t,e.settings.governance.close_validation_default,i)}async function Tt(e,t,r){if(t==="governance_parent_reference_policy"){let a=k(r.policy),o=e.settings.governance.preset!=="custom"||L(e.settings.governance.parent_reference,e.settings.validation.parent_reference,a);return e.settings.governance.preset="custom",e.settings.governance.parent_reference=a,e.settings.validation.parent_reference=a,await u(e,o,"config:set:governance_parent_reference_policy"),f(e,t,e.settings.governance.parent_reference,o)}if(t==="governance_metadata_validation_profile"){let a=E(r.policy),o=e.settings.governance.preset!=="custom"||L(e.settings.governance.metadata_profile,e.settings.validation.metadata_profile,a);return e.settings.governance.preset="custom",e.settings.governance.metadata_profile=a,e.settings.validation.metadata_profile=a,await u(e,o,"config:set:governance_metadata_validation_profile"),f(e,t,e.settings.governance.metadata_profile,o)}let n=B(r.policy),i=(e.settings.governance.workflow_enforcement??"off")!==n;return e.settings.governance.workflow_enforcement=n,await u(e,i,"config:set:governance_workflow_enforcement"),f(e,t,e.settings.governance.workflow_enforcement,i)}async function Nt(e,t,r){if(t==="governance_require_close_reason"){let a=H(r.policy)==="enabled",o=e.settings.governance.require_close_reason!==a;return e.settings.governance.require_close_reason=a,await u(e,o,"config:set:governance_require_close_reason"),f(e,t,e.settings.governance.require_close_reason?"enabled":"disabled",o)}let n=W(r.policy)==="enabled",i=e.settings.governance.preset!=="custom"||e.settings.governance.force_required_for_stale_lock!==n;return e.settings.governance.preset="custom",e.settings.governance.force_required_for_stale_lock=n,await u(e,i,"config:set:governance_force_required_for_stale_lock"),f(e,t,e.settings.governance.force_required_for_stale_lock?"enabled":"disabled",i)}async function $t(e,t,r){if(t==="test_result_tracking"){let a=qe(r.policy)==="enabled",o=e.settings.testing.record_results_to_items!==a;return e.settings.testing.record_results_to_items=a,await u(e,o,"config:set:test_result_tracking"),f(e,t,e.settings.testing.record_results_to_items?"enabled":"disabled",o)}if(t==="untrusted_linked_test_execution"){let a=j(r.policy,"untrusted-linked-test-execution")==="enabled",o=e.settings.testing.allow_untrusted_linked_tests!==a;return e.settings.testing.allow_untrusted_linked_tests=a,await u(e,o,"config:set:untrusted_linked_test_execution"),f(e,t,e.settings.testing.allow_untrusted_linked_tests?"enabled":"disabled",o)}let n=F(r.policy)==="enabled",i=e.settings.telemetry.enabled!==n||!e.settings.telemetry.first_run_prompt_completed;return e.settings.telemetry.enabled=n,e.settings.telemetry.first_run_prompt_completed=!0,await u(e,i,"config:set:telemetry_tracking"),f(e,t,e.settings.telemetry.enabled?"enabled":"disabled",i)}async function Dt(e,t,r){let n=Ae(r.criterion,r.clearCriteria),i=n.length!==e.settings.workflow.definition_of_done.length||n.some((a,o)=>a!==e.settings.workflow.definition_of_done[o]);return e.settings.workflow.definition_of_done=n,await u(e,i,"config:set:definition_of_done"),U(e,t,[...e.settings.workflow.definition_of_done],i)}function Lt(e){let t=e?.trim().toLowerCase().replaceAll("_","-"),r=t?.startsWith("preview-")===!0,n=r?t.slice(8):t;if(n==="add"||n==="remove"||n==="clear")return{operation:n,dryRun:r};throw new l("Config set agent-identity-vocabulary requires --policy add|remove|clear|preview-add|preview-remove|preview-clear",s.USAGE)}function Ut(e,t){if(e==="add"){let r=t?.lastIndexOf("=")??-1;if(r<=0||r===t.length-1)throw new l('Config set agent-identity-vocabulary --policy add requires --value "<legacy-author>=<canonical-harness>"',s.USAGE);return{legacy_author:t.slice(0,r),canonical_harness:t.slice(r+1)}}if(e==="remove"){if(t===void 0)throw new l("Config set agent-identity-vocabulary --policy remove requires --value <legacy-author>",s.USAGE);return{legacy_author:t}}if(t!==void 0)throw new l("Config set agent-identity-vocabulary --policy clear does not accept --value",s.USAGE);return{}}async function zt(e,t){let{operation:r,dryRun:n}=Lt(t.policy),i=Ut(r,t.value),a;try{a=de(e.settings.agent_identity?.identity_vocabulary,{operation:r,...i,observed_authors:t.criterion})}catch(o){throw new l(o.message,s.USAGE)}return a.preview.changed&&!n&&(e.settings.agent_identity={...e.settings.agent_identity,identity_vocabulary:a.vocabulary},await u(e,!0,`config:set:agent_identity.identity_vocabulary:${r}:v${a.preview.version_after}`)),g({scope:e.scope,key:"agent_identity_vocabulary",identity_vocabulary:T(n?e.settings.agent_identity?.identity_vocabulary:a.vocabulary),vocabulary_mutation:a.preview,settings_path:e.target.settingsPath,changed:a.preview.changed&&!n},e.warnings)}async function jt(e,t,r){if(r.clearCriteria===!0&&!$(t))throw new l("--clear-criteria is only supported with config set criteria-list keys",s.USAGE);return t==="item_format"?Gt(e,r):t==="context"?kt(e.settings,r,e.target,e.scope,e.warnings):t==="agent_identity_vocabulary"?zt(e,r):t==="definition_of_done"?Dt(e,t,r):be(t)?Pt(e,t,r):st.has(t)?$t(e,t,r):lt.has(t)?Nt(e,t,r):ut(t)?Rt(e,t,r):ft(t)?Tt(e,t,r):gt(t)?Ot(e,t,r):It(e,t,r)}async function Cr(e,t,r,n,i,a){let o=ke(e),d=Ce(t),c=d==="get"||d==="set"?me(r):void 0,_=c?void 0:ht(d,r),m=Oe(d,r,_,c,a,n),y=await wt(o,i),{settings:h,metadata:De,warnings:Le}=await ae(y.pmRoot),v={scope:o,target:y,settings:h,metadata:De,warnings:Ie(Le)};return c?qt(v,d,c,m):d==="list"?Et(v):d==="export"?At(v):(Pe(_),d==="get"?St(v,_):jt(v,_,m))}var Er={hasGovernanceValidationMirrorChange:L,applyPositionalValue:Oe,normalizeAction:Ce,normalizeCriteria:Ae,normalizeGovernanceCloseValidationDefault:Y,normalizeGovernanceCreateModeDefault:K,normalizeGovernanceForceRequiredForStaleLockPolicy:W,normalizeGovernanceOwnershipEnforcement:V,normalizeGovernancePreset:M,normalizeGovernanceRequireCloseReasonPolicy:H,normalizeGovernanceWorkflowEnforcement:B,normalizeHistoryMissingStreamPolicy:z,normalizeItemFormat:Se,normalizeKey:Ee,normalizeMetadataRequiredFields:Ge,normalizePolicyForConflict:D,normalizeScope:ke,normalizeTelemetryTrackingPolicy:F,normalizeTestResultTrackingPolicy:qe,normalizeValidateMetadataProfile:E,normalizeWarnings:Ie};import{execFile as Ft}from"node:child_process";import Mt from"node:path";import{promisify as Vt}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]="7fe99df0-8454-5667-9205-0b861ba212d1")}catch{}})();var Kt=Vt(Ft),Te="@unbrained/pm-cli",Yt="latest",Bt={global:["--global"],project:[]};function Re(e){let t=e.project===!0||e.local===!0||e.scope==="project",r=e.global===!0||e.scope==="global";if(t&&r)throw new l('Options "--project/--local" and "--global" are mutually exclusive.',s.USAGE);return r?"global":"project"}function S(e){return e.trim().toLowerCase()}function Ne(e,t){let r=S(t);return[e.name,e.directory,e.source.input,e.source.location,e.source.package,e.source.repository,e.source.owner&&e.source.repo?`${e.source.owner}/${e.source.repo}`:void 0].some(n=>typeof n=="string"&&S(n)===r)}function Wt(e,t){let r=b(process.cwd(),t.path),n=ee(r,process.cwd());return{selected_root:e==="global"?n.global:n.project}}async function Ht(e,t,r){try{let n=await Kt(e,t,{cwd:r?.cwd,encoding:"utf8"});return{stdout:n.stdout,stderr:n.stderr}}catch(n){let i=typeof n=="object"&&n!==null&&"stderr"in n?String(n.stderr??""):"",a=i.trim().length>0?i.trim():n instanceof Error?n.message:String(n);throw new l(`Command failed: ${e} ${t.join(" ")}
2
2
  ${a}`,s.GENERIC_FAILURE)}}function q(e){return typeof e.tag=="string"&&e.tag.trim().length>0?e.tag.trim():Yt}function A(e){return typeof e.packageName=="string"&&e.packageName.trim().length>0?e.packageName.trim():Te}async function Qt(e,t){let r=e.commandRunner??Ht,n=A(e),i=q(e),a=`${n}@${i}`,o=["npm","install","-g",a];e.repair===!0&&o.push("--force");let d=X(import.meta.url,["../../.."]),c={requested:!0,status:"planned",package:n,target:a,command:o,before_version:d,...n===Te?{migration_guidance:["Calendar scheduling commands are package-owned. If calendar is absent, run pm package install calendar --project; use pm calendar meet, pm calendar event, or pm calendar remind."]}:{},repair:e.repair===!0};if(t)return c;try{await r(o[0],o.slice(1));let _=await r("pm",["--version"]);return{...c,status:"updated",after_version:_.stdout.trim()||void 0}}catch(_){return{...c,status:"failed",error:_ instanceof Error?_.message:String(_)}}}function Xt(e){return Mt.isAbsolute(e)||e.startsWith(".")||e.startsWith("..")||e.startsWith("file:")}function Jt(e,t){if(e.kind==="npm"){let r=e.input.startsWith("npm:")?e.input.slice(4).trim():e.input.trim();return!Xt(r)&&e.package&&e.package.trim().length>0?`npm:${e.package.trim()}@${t}`:e.input.startsWith("npm:")?e.input:`npm:${e.input}`}return e.input}async function Zt(e,t){let r=Jt(e,t);return e.kind!=="local"||await G(r)?r:await G(e.location)?e.location:r}function xt(e,t,r,n){let i=["pm","package","install",t,r==="global"?"--global":"--project"];return e.kind==="github"&&n&&n.trim().length>0&&i.push("--ref",n.trim()),i}async function $e(e,t){let r=Wt(e,t);return(await le(r.selected_root)).state.entries.filter(n=>n.scope===e)}async function er(e,t,r){let n=await $e(e,t);return n.find(i=>Ne(i,r.name))??n.find(i=>S(i.directory)===S(r.directory))}async function tr(e,t,r,n,i){let a=q(t),o=await Zt(e.source,a),d=xt(e.source,o,n,e.source.ref),c={name:e.name,directory:e.directory,scope:n,source:e.source,status:"planned",command:d,previous_version:e.manifest_version};if(i)return c;try{await ce(o,{install:!0,project:n==="project",global:n==="global",ref:e.source.kind==="github"?e.source.ref:void 0},r);let _=await er(n,r,e);return{...c,status:"updated",installed_version:_?.manifest_version}}catch(_){return{...c,status:"failed",error:_ instanceof Error?_.message:String(_)}}}function rr(e,t,r,n){let i=[r?e.status:void 0,...t.map(a=>a.status)].filter(a=>typeof a=="string");return{requested_cli:r,requested_packages:n,planned:i.filter(a=>a==="planned").length,updated:i.filter(a=>a==="updated").length,skipped:i.filter(a=>a==="skipped").length,failed:i.filter(a=>a==="failed").length}}async function Rr(e,t,r){let n=typeof e=="string"&&e.trim().length>0?e.trim():void 0;if(t.cliOnly===!0&&t.packagesOnly===!0){let h=["package","upgrade",...n?[n]:[],"--packages-only","--dry-run",...Bt[Re(t)]];throw new l('Options "--cli-only" and "--packages-only" are mutually exclusive.',s.USAGE,{code:"package_upgrade_modes_mutually_exclusive",recovery:{suggested_retry:te(h),suggested_retry_args:h}})}let i=Re(t),a=t.dryRun===!0;if(t.cliOnly===!0&&n)throw new l('A package target cannot be used with "--cli-only".',s.USAGE);let o=!(t.packagesOnly===!0||n),d=t.cliOnly!==!0,c=o?await Qt(t,a):{requested:!1,status:"skipped",package:A(t),target:`${A(t)}@${q(t)}`,command:["npm","install","-g",`${A(t)}@${q(t)}`],repair:t.repair===!0,reason:"not_requested"},_=d?await $e(i,r):[];if(n&&(_=_.filter(h=>Ne(h,n)),_.length===0))throw new l(`Managed package "${n}" was not found in ${i} scope.`,s.NOT_FOUND);let m=[];for(let h of _)m.push(await tr(h,t,r,i,a));let y=rr(c,m,o,d);return{ok:y.failed===0,action:"upgrade",dry_run:a,scope:i,target:n,cli:c,packages:m,summary:y}}export{me as a,pe as b,N as c,ye as d,T as e,de as f,Cr as g,Er as h,Rr as i};
3
- //# sourceMappingURL=chunk-5MOFELIF.js.map
3
+ //# sourceMappingURL=chunk-K2UTE75T.js.map