@unbrained/pm-cli 2026.9.9 → 2026.9.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +17 -0
- package/dist/cli/command-namespaces.d.ts +9 -0
- package/dist/cli/command-namespaces.js +2 -0
- package/dist/cli/help-content.js +1 -1
- package/dist/cli/help-json-payload.d.ts +5 -1
- package/dist/cli/help-json-payload.js +2 -2
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.js +3 -3
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli/register-operations.d.ts +0 -5
- package/dist/cli/register-operations.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +154 -154
- package/dist/cli-bundle/chunks/chunk-4SFBH77G.js +2233 -0
- package/dist/cli-bundle/chunks/{chunk-4VL5P22L.js → chunk-74RGSPLL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WQKMSFBV.js → chunk-7WIHZI2M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-L5RCDKQ2.js → chunk-EOCKPCEY.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-GLQMKUGP.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-OHNLSGGV.js → chunk-I6XT3DLQ.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-MACGGTLQ.js +29 -0
- package/dist/cli-bundle/chunks/{chunk-ECBLPN7B.js → chunk-NKOYVKFM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-Z3XVXUVF.js → chunk-P6BEYAON.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3IPRM75M.js → chunk-PYUITRSV.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-T3AMFUCN.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-D3YVILJJ.js → chunk-TSWEX72T.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-J6ERHBV2.js → chunk-YKQTETJI.js} +71 -71
- package/dist/cli-bundle/chunks/{register-list-query-UIHRCS6D.js → register-list-query-CUIW7SSE.js} +2 -2
- package/dist/cli-bundle/chunks/register-mutation-5F5CYUWZ.js +20 -0
- package/dist/cli-bundle/chunks/register-operations-XIZPLPQY.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-PERI45EM.js → register-setup-JVGPCAIL.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-OQUGRHKV.js → chunk-26O2WB73.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-5YU75QLV.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-QQQ4SAUO.js → chunk-7N5MRONP.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-B2CMFYRZ.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PNKIANFZ.js → chunk-CRY5MHEI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YCDQ2N23.js → chunk-F6WKFXBT.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BUCJUZVG.js → chunk-FHUARRMA.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-5FHTCOHS.js → chunk-M36SF4GE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-TTYXF5YD.js → chunk-OROZM37I.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-XNR3DM6J.js → chunk-PNGYYQY7.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-ZTCE4UO6.js → chunk-SL5YVVPV.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-XSS3APUF.js → chunk-TPOL4TWE.js} +5 -5
- package/dist/cli-bundle/focused-chunks/{chunk-7PC4R5QB.js → chunk-U5SHHU7E.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-2WSBXIGF.js → chunk-XSMA2W6Q.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-ZAWAL2CG.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-7N6DOREF.js → chunk-ZDNAWWQI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-YJUXGS57.js → chunk-ZJHYQOTM.js} +2 -2
- package/dist/cli-bundle/main.js +26 -26
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +37 -37
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +10 -10
- package/dist/sdk/agent/item-addressing.js +1 -1
- package/dist/sdk/agent-capability-contracts.js +1 -1
- package/dist/sdk/cli-bootstrap.js +1 -1
- package/dist/sdk/cli-contracts/command-aliases.d.ts +11 -1
- package/dist/sdk/cli-contracts/command-aliases.js +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +4 -1
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -3
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1
- package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +2 -0
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -1
- package/dist/sdk/completion.js +359 -346
- package/dist/sdk/index.d.ts +2 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/lifecycle/claim.js +1 -1
- package/dist/sdk/lifecycle/lifecycle-transitions.d.ts +1 -1
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
- package/dist/sdk/lifecycle/mcp-actions.js +1 -1
- package/dist/sdk/lifecycle/task-composition.d.ts +17 -0
- package/dist/sdk/lifecycle/task-composition.js +2 -0
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/workspace-contracts.d.ts +3 -0
- package/dist/sdk/query/workspace-contracts.js +2 -0
- package/dist/sdk/runtime-input.js +1 -1
- package/dist/sdk/runtime.d.ts +69 -9
- package/dist/sdk/runtime.js +1 -1
- package/docs/COMMANDS.md +26 -24
- package/docs/COMMAND_NAMESPACES.md +65 -0
- package/docs/LIFECYCLE_COMMANDS.md +77 -0
- package/docs/README.md +2 -0
- package/docs/generated/AGENT_CAPABILITY_ROUTING.md +6 -6
- package/docs/generated/AGENT_COMMAND_SURFACE.md +19 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +21 -3
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +2 -2
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/README.md +4 -2
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/README.md +6 -4
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli-bundle/chunks/chunk-AAFBV3U3.js +0 -29
- package/dist/cli-bundle/chunks/chunk-JUNJ5EKI.js +0 -2
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +0 -2
- package/dist/cli-bundle/chunks/chunk-XZ6T7YPP.js +0 -2217
- package/dist/cli-bundle/chunks/register-mutation-WHWMGRVX.js +0 -20
- package/dist/cli-bundle/chunks/register-operations-64YZYTC5.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-2W4XIYOB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-FE3BABLJ.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-IWITF53W.js +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{a as xo,c as Ar,d as Cr,e as Mc,g as Fc,h as Io,i as jc,j as Qt,k as en,l as Uc,m as zc,n as Ao,o as qc,p as tn,q as nn,r as Bc,s as Gc,t as Co}from"./chunk-BUCJUZVG.js";import{e as Mr,f as Do}from"./chunk-7PC4R5QB.js";import{B as Qc,C as Dr,D as el,E as Oo,G as tl,H as nl,J as rl,K as Pr,M as Nr,a as Tc,g as Eo,i as $c}from"./chunk-IWITF53W.js";import{K as _d}from"./chunk-XNR3DM6J.js";import{$ as Uo,A as Fo,B as Kl,F as Yl,J as jo,K as Qr,La as ld,Ma as dd,Qa as ud,Ra as md,Sa as fd,Xa as Wo,Z as ei,_ as Xl,aa as Un,ca as zo,d as zl,f as Mo,g as Hl,ga as Zl,ha as Ql,ia as ed,ja as td,ka as ti,l as Wl,m as ql,ma as nd,n as Bl,na as rd,oa as id,pa as Lt,pb as gd,q as Zr,qa as od,ra as dn,sa as sd,ta as Ho,u as Fn,ua as un,v as Gl,va as ad,w as Jl,wa as cd,x as jn,y as Vl}from"./chunk-YJUXGS57.js";import{a as Dc,b as Zt,c as Ro,d as Pc,e as Nc,f as it,g as Tr,h as Lc,i as wt}from"./chunk-QQQ4SAUO.js";import{Aa as No,Ba as Il,Bb as zn,Ca as Br,D as B,Da as Dt,Db as ni,Ea as me,Fa as Gr,Ga as Al,Ha as Lo,Ia as Jr,J as ml,Ja as cn,K as jr,Ka as Vr,Kb as pd,La as Cl,Ma as Se,N as Ur,Na as Tl,Nb as hd,O as zr,Oa as C,Pa as Kr,Q as fl,Qa as $l,R as $e,Ra as Ol,Sa as bt,T as vt,Ta as Dl,U as pl,Ua as Pl,V as hl,W as _l,X as Hr,Y as gl,Ya as Nl,bb as Ll,ca as yl,cb as Ml,da as Po,ea as Wr,fa as on,ha as qr,hb as Yr,ia as wl,ja as vl,jb as Fl,la as bl,lb as Q,mb as Oe,na as kl,nb as De,ob as jl,pa as Sl,pb as ln,qb as ot,rb as Pt,ta as sn,ua as El,ub as Ul,vb as Nt,wa as xl,xa as Rl,xb as Xr,za as an}from"./chunk-TTYXF5YD.js";import{b as Kt,e as de,f as Te,h as be,i as Ge,m as ke,n as Hc,o as $r,q as Wc}from"./chunk-5FHTCOHS.js";import{A as dl,B as Fr,G as A,H as ul,I as rn,K as Ot,P as ce,d as sl,e as Je,g as al,k as cl,m as ll,u as H,x as Z,z as Me}from"./chunk-OQUGRHKV.js";import{$ as g,$a as Ec,Aa as q,Ab as So,Bb as Ac,Cb as Cc,Db as Xt,Fa as Mn,Fb as qe,Ga as M,Ha as We,Hb as Be,Ia as Rr,Ja as $t,La as vc,Lb as Oc,Ma as Ir,Oa as bc,Pb as Or,Qa as X,Qb as Jc,Rb as To,S as uc,Sb as Vc,T as mc,Ta as kc,Tb as $o,V as fc,Vb as Kc,Wb as Yc,X as pc,Xa as Sc,Y as xr,Ya as Yt,Z as hc,Zb as Xc,a as Sr,aa as y,bb as ko,d as Er,ec as Zc,ha as _c,i as cc,ia as Ln,ja as P,ka as yt,l as lc,la as j,m as dc,ma as V,na as ae,nb as xc,ob as Rc,pb as O,qa as fe,qb as Ic,ra as Ce,rb as ve,rd as Lr,sa as gc,sd as il,td as ol,w as bo,ya as yc,za as wc}from"./chunk-XSS3APUF.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="00d2200c-d308-51a6-acc4-8da90afaf6d6")}catch{}})();var N=class extends TypeError{constructor(t){super(t),this.name="AssuranceMutationRefusalError"}},Ee=class extends TypeError{context;constructor(t,n={}){super(t),this.name="AssuranceEvaluationRefusalError",this.context=n}},Ve=class extends TypeError{measurement_id;source_kind;field;check;constructor(t,n){super(t),this.name="AssuranceSourceResolutionError",this.measurement_id=n.measurement_id,this.source_kind=n.source_kind,this.field=n.field,this.check=n.check}};async function mn(e){try{return await e()}catch(t){throw t instanceof N?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_mutation_refused"}):t}}async function yd(e){try{return await e()}catch(t){throw t instanceof Ee?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_evaluation_refused",...t.context}):t}}import{createHash as D_}from"node:crypto";import P_ from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="b00dcab2-22c6-55b7-b93d-f6f5413d4b04")}catch{}})();var fn=1e3;(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="00ad9b34-4feb-5812-8755-801869cce3ad")}catch{}})();var vd=1,Mt=["pre-commit","pre-push","pre-merge","ci","pre-release","post-release","scheduled","on-claim","on-close"],qo=["items","dependency_kind","prose_edge_gap","graph","validate","health","history","links","provider","derived"],N_=["ceiling","floor","equals","zero","monotone_nondecreasing","monotone_nonincreasing","subset_of"],L_=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,ri=30,ii=5e3,bd=4,M_=50;function st(e,t){if(!L_.test(e))throw new N(`${t} must be a stable lowercase id`)}function F_(e,t){if(!Number.isFinite(e)||e<0)throw new N(`${t} must be a finite non-negative number`)}function Hn(e){let t=N_.filter(i=>e[i]!==void 0);if(t.length!==1)throw new N(`assertion ${e.id} must declare exactly one polarity`);let n=t[0],r=e[n];return{polarity:n,value:n==="zero"?0:r}}function Go(e,t){return O(e)===O(t)}function kd(e,t){if(t.polarity==="equals")return Go(e,t.value);if(t.polarity==="subset_of"){if(!Array.isArray(e)||!Array.isArray(t.value))return!1;let r=t.value;return e.every(i=>r.includes(i))}if(typeof e!="number")return!1;let n=t.value;return t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?e<=n:t.polarity==="floor"||t.polarity==="monotone_nondecreasing"?e>=n:e===0}function Sd(e){let t=Hn(e),n=e.negative_control.cases;return n.some(r=>r.expected==="pass")&&n.some(r=>r.expected==="fail")&&n.every(r=>kd(r.observed,t)===(r.expected==="pass"))}function j_(e,t){if(e.polarity!==t.polarity)return!0;if(typeof e.value=="number"&&typeof t.value=="number")return e.polarity==="ceiling"||e.polarity==="monotone_nonincreasing"?t.value>e.value:e.polarity==="floor"||e.polarity==="monotone_nondecreasing"?t.value<e.value:t.value!==e.value;if(e.polarity==="subset_of"){let n=e.value,r=t.value;return!Array.isArray(n)||!Array.isArray(r)||r.some(i=>!n.includes(i))}return!Go(e.value,t.value)}function U_(e,t){if(e.measurement_id!==t.measurement_id||e.owner_item_id!==t.owner_item_id||O(e.scope)!==O(t.scope))return!0;let n={observe:0,warn:1,block:2},r=(e.lifetime??"hold")==="hold"&&(t.lifetime??"hold")==="retire";return j_(Hn(e),Hn(t))||n[t.enforcement]<n[e.enforcement]||r}function z_(e){if(e.state!==void 0&&!(e.state==="present"||e.state==="missing"))throw new N("items source state must be present or missing");let t=Object.hasOwn(e,"equals"),n=e.state!==void 0,r=Number(t)+Number(n);if(e.field!==void 0&&r!==1)throw new N("items source with field requires exactly one of equals or state");if(e.field===void 0&&r!==0)throw new N("items source equals/state requires field")}function H_(e){if(typeof e.dependency_kind!="string"||e.dependency_kind.trim().length===0)throw new N("dependency_kind source requires dependency_kind");if([e.source_kind,e.source_kind_prefix,e.source_kind_state].filter(n=>n!==void 0).length>1)throw new N("dependency_kind source accepts at most one source_kind predicate");if(e.source_kind!==void 0&&e.source_kind.trim().length===0||e.source_kind_prefix!==void 0&&e.source_kind_prefix.trim().length===0)throw new N("dependency_kind source provenance values must not be empty");if(e.source_kind_state!==void 0&&e.source_kind_state!=="present"&&e.source_kind_state!=="missing")throw new N("dependency_kind source source_kind_state must be present or missing")}function W_(e){if(e.sample_limit!==void 0&&(!Number.isInteger(e.sample_limit)||e.sample_limit<1))throw new N("prose_edge_gap sample_limit must be a positive integer");for(let t of e.exemptions??[]){if(typeof t.holder_id!="string"||t.holder_id.trim().length===0||typeof t.reason!="string"||t.reason.trim().length===0)throw new N("prose_edge_gap exemptions require holder_id and reason");if(t.target_id!==void 0&&t.target_id.trim().length===0||t.text_contains!==void 0&&t.text_contains.trim().length===0)throw new N("prose_edge_gap exemption selectors must not be empty")}}function Jo(e){st(e.id,"measurement.id"),e.max_cost!==void 0&&F_(e.max_cost,"measurement.max_cost");let t=e.source;if(Object.prototype.toString.call(t)!=="[object Object]")throw new N(`measurement.source.kind must be one of ${qo.join(", ")}`);let n=Reflect.get(t,"kind");if(!qo.includes(n))throw new N(`measurement.source.kind must be one of ${qo.join(", ")}`);let r=t;if(r.kind==="items"&&z_(r),r.kind==="dependency_kind"&&H_(r),r.kind==="prose_edge_gap"&&W_(r),(r.kind==="graph"||r.kind==="validate"||r.kind==="health")&&(typeof r.field!="string"||r.field.trim().length===0))throw new N(`${r.kind} source requires field`);return r.kind==="provider"&&(st(r.provider,"provider source provider"),st(r.key,"provider source key")),e}function Vo(e){if(st(e.id,"assertion.id"),st(e.measurement_id,"assertion.measurement_id"),typeof e.owner_item_id!="string"||e.owner_item_id.trim().length===0)throw new N("assertion.owner_item_id is required");let t=Hn(e);if(typeof t.value=="number"&&!Number.isFinite(t.value))throw new N(`assertion.${t.polarity} must be a finite number`);if(e.lifetime==="retire"&&(typeof e.retire_reason!="string"||e.retire_reason.trim().length===0))throw new N("retired assertion requires retire_reason");e.scope.kind==="filter"&&st(e.scope.measurement_id,"assertion.scope.measurement_id");let n=e.negative_control?.cases;if(!Array.isArray(n)||!n.some(r=>r.expected==="pass")||!n.some(r=>r.expected==="fail"))throw new N("assertion negative control requires pass and fail cases");if(!Sd(e))throw new N(`assertion ${e.id} negative control does not prove its bound`);return e}function q_(e){if(!Array.isArray(e.allowed_providers))throw new N("gate provider_policy.allowed_providers must be an array");for(let t of e.allowed_providers)st(t,"gate.provider_policy.allowed_provider");if(typeof e.triggers!="object"||e.triggers===null||Array.isArray(e.triggers))throw new N("gate provider_policy.triggers must be an object");for(let[t,n]of Object.entries(e.triggers)){if(!Mt.includes(t))throw new N(`gate provider policy has unknown trigger ${t}`);if(typeof n!="object"||n===null||!["low","medium","high"].includes(n.max_cost_class)||typeof n.allow_network!="boolean")throw new N(`gate provider policy trigger ${t} is invalid`)}}function Ed(e){if(st(e.id,"gate.id"),!Array.isArray(e.assertion_ids))throw new N("gate.assertion_ids is required and must be an array");if(e.assertion_ids.length===0)throw new N("gate requires at least one assertion");for(let t of e.assertion_ids)st(t,"gate.assertion_id");if(!Array.isArray(e.triggers))throw new N(`gate.triggers is required and must be an array of ${Mt.join(", ")}`);if(e.triggers.length===0)throw new N("gate requires at least one trigger");for(let t of e.triggers)if(!Mt.includes(t))throw new N(`gate trigger must be one of ${Mt.join(", ")}`);return e.provider_policy&&q_(e.provider_policy),e}function pn(e){if(e.version!==vd)throw new N(`unsupported assurance document version ${String(e.version)}`);let t=new Set;for(let r of e.measurements){if(Jo(r),t.has(`measurement:${r.id}`))throw new N(`duplicate measurement ${r.id}`);t.add(`measurement:${r.id}`)}for(let r of e.assertions){if(Vo(r),t.has(`assertion:${r.id}`))throw new N(`duplicate assertion ${r.id}`);t.add(`assertion:${r.id}`)}for(let r of e.gates){Ed(r);let i=r.assertion_ids.filter(o=>!e.assertions.some(s=>s.id===o));if(i.length>0)throw new N(`gate ${r.id} references missing assertions: ${i.join(", ")}`);if(t.has(`gate:${r.id}`))throw new N(`duplicate gate ${r.id}`);t.add(`gate:${r.id}`)}let n=new Set(e.measurements.map(r=>r.id));for(let[r,i]of xd(e))if(!n.has(r))throw new N(`${i.join(", ")} references missing measurement ${r}`);return e}function Ko(e,t){if("measurement"in e){t.push(e.measurement);return}if("operator"in e)for(let n of e.operands)Ko(n,t)}function xd(e){let t=new Map,n=(r,i)=>{let o=t.get(r)??[];o.push(i),t.set(r,o)};for(let r of e.assertions)n(r.measurement_id,`assertion ${r.id}`),r.scope.kind==="filter"&&n(r.scope.measurement_id,`assertion ${r.id} scope`);for(let r of e.measurements){if(r.source.kind!=="derived")continue;let i=[];Ko(r.source.expression,i);for(let o of i)n(o,`derived measurement ${r.id}`)}return t}function B_(e,t){let n=e.assertion_ids.flatMap(o=>{let s=t.assertions.find(a=>a.id===o);return[s.measurement_id,...s.scope.kind==="filter"?[s.scope.measurement_id]:[]]}),r=new Set,i=new Set;for(;n.length>0;){let o=n.pop();if(r.has(o))continue;r.add(o);let s=t.measurements.find(a=>a.id===o);s.source.kind==="provider"?i.add(s.source.provider):s.source.kind==="derived"&&Ko(s.source.expression,n)}return i}function Wn(){return{version:vd,measurements:[],assertions:[],gates:[]}}function G_(e,t){let n=t.items.filter(r=>(e.statuses===void 0||e.statuses.includes(r.status))&&(e.types===void 0||e.types.includes(r.type))&&(e.tags===void 0||e.tags.every(i=>r.tags?.includes(i)))&&(e.field===void 0||(()=>{let i=r[e.field];if(e.state!==void 0){let o=i==null||i===""||Array.isArray(i)&&i.length===0;return e.state==="missing"?o:!o}return Go(i,e.equals)})()));return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function J_(e,t){return e.source_kind!==void 0?t?.toLowerCase()===e.source_kind.trim().toLowerCase():e.source_kind_prefix!==void 0?t?.toLowerCase().startsWith(e.source_kind_prefix.trim().toLowerCase())===!0:e.source_kind_state==="present"?t!==void 0&&t.length>0:e.source_kind_state==="missing"?t===void 0||t.length===0:!0}function V_(e,t){let n=[],r=ko(e.dependency_kind)??e.dependency_kind.trim().toLowerCase();for(let i of t.items)for(let o of i.dependencies??[]){let s=ko(o.kind)??o.kind.trim().toLowerCase(),a=o.source_kind?.trim();s===r&&J_(e,a)&&n.push(`${i.id}->${o.id}${a?`@${a}`:""}`)}return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n}}function K_(e){let t=[e.description,e.body].filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean);for(let n of["comments","notes","learnings"]){let r=e[n];if(Array.isArray(r)){for(let i of r)if(typeof i=="string")t.push(i);else if(typeof i=="object"&&i!==null){let o=Reflect.get(i,"text");typeof o=="string"&&t.push(o)}}}return t}function Y_(e,t,n,r){return e.some(i=>i.holder_id.trim().toLowerCase()===t.toLowerCase()&&(i.target_id===void 0||i.target_id.trim().toLowerCase()===n.toLowerCase())&&(i.text_contains===void 0||r.toLowerCase().includes(i.text_contains.trim().toLowerCase())))}function Bo(e,t){return[e.toLowerCase(),t.toLowerCase()].sort().join("\0")}function X_(e){let t=new Map,n=new Set,r=[],i=/\b[a-z][a-z0-9]*-[a-z0-9]+\b/giu,o=0;for(let s of e){t.set(s.id.toLowerCase(),s.id);for(let a of s.dependencies??[])n.add(Bo(s.id,a.id));for(let a of[s.parent,s.blocked_by])typeof a=="string"&&n.add(Bo(s.id,a));for(let a of K_(s)){let c=[...a.matchAll(i)].map(l=>l[0]);o+=c.length,r.push({holder_id:s.id,segment:a,mentioned_ids:c})}}return{canonical_ids:t,linked_pairs:n,prose_mentions:r,mention_count:o}}function Z_(e,t){let n=X_(t.items),r=new Map;for(let s of n.prose_mentions){let a=s.mentioned_ids.map(l=>n.canonical_ids.get(l.toLowerCase())).filter(l=>l!==void 0&&l!==s.holder_id),c=[...new Set(a)];for(let l of c){let d=Bo(s.holder_id,l);if(n.linked_pairs.has(d)||Y_(e.exemptions??[],s.holder_id,l,s.segment))continue;let u=c.some(m=>m!==l);r.get(d)?.explicit===!0&&!u||r.set(d,{contributor:`${s.holder_id}->${l}|subject=${u?"explicit":"implicit"}`,explicit:u})}}let i=[...r.values()],o=i.map(s=>s.contributor).sort();return{value:o.length,population_size:n.canonical_ids.size,cost:t.items.length+n.linked_pairs.size+n.mention_count,contributors:o.slice(0,e.sample_limit??25),partitions:{explicit_subject:i.filter(s=>s.explicit).length,implicit_subject:i.filter(s=>!s.explicit).length}}}function Q_(e,t){return{value:t.history.filter(r=>(e.op===void 0||r.op===e.op)&&(e.author===void 0||r.author===e.author)&&(e.harness===void 0||r.agent_harness===e.harness)&&(e.model===void 0||r.agent_model===e.model)).length,population_size:t.history.length,cost:t.history.length}}function eg(e,t){let n=t.items.filter(r=>{let i=r[e.link],o=Array.isArray(i)&&i.length>0;return e.state==="present"?o:!o});return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function tg(e,t){let n=e.source;return n.kind==="items"?G_(n,t):n.kind==="dependency_kind"?V_(n,t):n.kind==="prose_edge_gap"?Z_(n,t):n.kind==="history"?Q_(n,t):n.kind==="links"?eg(n,t):null}function Rd(e,t){return e.reduce((n,r)=>({units:n.units+r.units,items_scanned:n.items_scanned+r.items_scanned,history_entries:n.history_entries+r.history_entries,provider_calls:n.provider_calls+r.provider_calls,duration_ms:t}),{units:0,items_scanned:0,history_entries:0,provider_calls:0,duration_ms:t})}function ng(e,t){if(t.length===0)throw new TypeError(`derived ${e} requires operands`);if(e==="add")return t.reduce((n,r)=>n+r,0);if(e==="subtract")return t.slice(1).reduce((n,r)=>n-r,t[0]);if(e==="multiply")return t.reduce((n,r)=>n*r,1);if(e==="divide"){if(t.slice(1).includes(0))throw new TypeError("derived divide cannot divide by zero");return t.slice(1).reduce((n,r)=>n/r,t[0])}return e==="min"?Math.min(...t):Math.max(...t)}async function Id(e,t,n){let r=new Array(e.length),i=0,o=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let s=i;i+=1,r[s]=await n(e[s],s)}});return await Promise.all(o),r}async function Ad(e,t,n,r,i){if("literal"in e)return{value:e.literal,costs:[],population_size:0,contributors:[]};if("measurement"in e){let s=n.find(l=>l.id===e.measurement);if(!s)throw new TypeError(`derived measurement references missing ${e.measurement}`);let a=await Cd(s,t,n,r,i);if(typeof a.value!="number")throw new TypeError(`derived measurement ${s.id} is not numeric`);let c=i.charged.has(s.id)?[]:[a.cost];return i.charged.add(s.id),{value:a.value,costs:c,population_size:a.population_size,contributors:a.contributors}}let o=await Id(e.operands,bd,s=>Ad(s,t,n,r,i));return{value:ng(e.operator,o.map(s=>s.value)),costs:o.flatMap(s=>s.costs),population_size:Math.max(0,...o.map(s=>s.population_size)),contributors:[...new Set(o.flatMap(s=>s.contributors))]}}async function rg(e,t,n,r,i){Jo(e);let o=Date.now(),s,a=[],c=0;if(e.source.kind==="derived"){let u=await Ad(e.source.expression,t,n,[...r,e.id],i);s={value:u.value,population_size:u.population_size,cost:0,contributors:u.contributors},a=u.costs}else{let u=tg(e,t);u!==null?s=u:(s=await t.external(e.source),c=1)}let l={units:s.cost,items_scanned:e.source.kind==="items"||e.source.kind==="dependency_kind"||e.source.kind==="prose_edge_gap"||e.source.kind==="links"?t.items.length:0,history_entries:e.source.kind==="history"?t.history.length:0,provider_calls:c,duration_ms:Date.now()-o},d=Rd([...a,l],Date.now()-o);if(e.max_cost!==void 0&&d.units>e.max_cost)throw new Ee(`measurement ${e.id} exceeded cost ceiling ${e.max_cost} with ${d.units}`);return{id:e.id,definition_fingerprint:`sha256:${D_("sha256").update(O(e)).digest("hex")}`,value:s.value,population_size:s.population_size,cost:d,contributors:s.contributors??[],...s.partitions?{partitions:s.partitions}:{}}}function Cd(e,t,n,r,i){if(r.includes(e.id))throw new TypeError(`derived measurement cycle: ${[...r,e.id].join(" -> ")}`);let o=i.cache.get(e.id);if(o)return o;let s=rg(e,t,n,r,i).catch(a=>{if(a instanceof Ve&&a.measurement_id===void 0){let c={measurement_id:e.id,source_kind:a.source_kind,field:a.field,...a.check?{check:a.check}:{}},l=new Ve(a.message,c);throw l.cause=a,l}throw a});return i.cache.set(e.id,s),s}async function Yo(e,t,n=[e]){return Cd(e,t,n,[],{cache:new Map,charged:new Set})}function ig(e,t){return typeof e!="number"||typeof t.value!="number"?null:t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?t.value-e:(t.polarity==="floor"||t.polarity==="monotone_nondecreasing",e-t.value)}function og(e,t,n={}){Vo(e);let r=Hn(e),i=e.lifetime==="retire"&&n.owner_terminal===!0;return{assertion_id:e.id,measurement_id:e.measurement_id,measurement_definition_fingerprint:t.definition_fingerprint,scope:e.scope,population_size:t.population_size,observed:t.value,bound:r,distance:ig(t.value,r),verdict:i?"retired":kd(t.value,r)?"pass":"fail",enforcement:e.enforcement,negative_control_proven:Sd(e),cost:t.cost,contributors:t.contributors,...t.partitions?{partitions:t.partitions}:{}}}function sg(e,t,n,r){let i=B_(e,t);if(i.size===0)return;let o=e.provider_policy,s=o?.triggers[r];if(!o||!s)throw new Ee(`assurance gate ${e.id} refuses provider execution at trigger ${r} without an explicit provider policy`);let a=new Set(o.allowed_providers),c={low:0,medium:1,high:2};for(let l of i){if(!a.has(l))throw new Ee(`assurance gate ${e.id} refuses provider ${l}`);let d=n.provider_capabilities?.[l];if(!d)throw new Ee(`assurance provider ${l} has no declared capabilities`);if(c[d.cost_class]>c[s.max_cost_class])throw new Ee(`assurance gate ${e.id} refuses ${d.cost_class}-cost provider ${l} at trigger ${r}`);if(d.network&&!s.allow_network)throw new Ee(`assurance gate ${e.id} refuses network provider ${l} at trigger ${r}`)}}async function wd(e,t,n,r,i){try{return await Yo(n,r,i)}catch(o){if(o instanceof Ve){let s=o.check?` check ${o.check}`:"",a=o.measurement_id??n.id,c=new Ee(`assurance gate ${e} assertion ${t} measurement ${a} source ${o.source_kind}${s} field ${o.field} could not resolve: ${o.message}`,{gate_id:e,assertion_id:t,measurement_id:a,source_kind:o.source_kind,field:o.field,...o.check?{check:o.check}:{}});throw c.cause=o,c}throw o}}async function Td(e,t,n,r){pn(t);let i=t.gates.find(c=>c.id===e);if(!i)throw new Ee(`assurance gate ${e} not found`);if(!i.triggers.includes(r.trigger))throw new Ee(`assurance gate ${e} does not declare trigger ${r.trigger}`);sg(i,t,n,r.trigger);let o=await Id(i.assertion_ids,bd,async c=>{let l=t.assertions.find(p=>p.id===c),d=t.measurements.find(p=>p.id===l.measurement_id),u=n;if(l.scope.kind==="active"){let p=new Set(n.terminal_statuses??["closed","canceled"]);u={...n,items:n.items.filter(h=>!p.has(h.status))}}else if(l.scope.kind==="filter"){let p=l.scope.measurement_id,h=t.measurements.find(v=>v.id===p),_=await wd(i.id,l.id,h,n,t.measurements),w=new Set(_.contributors);u={...n,items:n.items.filter(v=>w.has(v.id))}}let m=n.items.find(p=>p.id===l.owner_item_id),f=m!==void 0&&new Set(n.terminal_statuses??["closed","canceled"]).has(m.status);return og(l,await wd(i.id,l.id,d,u,t.measurements),{owner_terminal:f})}),s=o.some(c=>c.verdict==="fail"&&c.enforcement==="block"),a=o.some(c=>c.verdict==="fail"&&c.enforcement==="warn");return{gate_id:i.id,tree_id:n.tree_id,trigger:r.trigger,dry_run:r.dry_run===!0,evaluated_at:new Date().toISOString(),verdict:s?"block":a?"warn":"pass",exit_code:s?1:0,assertions:o,assertions_total:o.length,row_contract:{row_keys:["assertions"],jq_selector:".assertions[]"},cost:Rd(o.map(c=>c.cost),Math.max(0,...o.map(c=>c.cost.duration_ms)))}}function oi(e){return P_.join(e,"assurance.json")}async function $d(e){let t=await V(oi(e));return t===null?Wn():si(t)}function si(e){try{return pn(JSON.parse(e))}catch(t){throw new y("The assurance registry is invalid. Repair or restore .agents/pm/assurance.json and retry.",g.GENERIC_FAILURE,{code:"assurance_registry_invalid",reason:String(t),nextSteps:["Restore a valid assurance.json from version control or repair its declaration references.","Run pm assurance list measurement after the repair."]})}}function ai(e,t){return t==="measurement"?e.measurements:t==="assertion"?e.assertions:e.gates}function ag(e,t){e==="measurement"?Jo(t):e==="assertion"?Vo(t):Ed(t)}async function qn(e,t){let n=structuredClone(ai(await $d(e),t));return{items:n,count:n.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function Xo(e,t,n){let r=ai(await $d(e),t).find(i=>i.id===n);if(!r)throw new TypeError(`assurance ${t} ${n} not found`);return structuredClone(r)}async function ci(e,t,n,r={}){ag(t,n);let i=await C(e),o=B(r.author,i.author_default),s=await cn({pmRoot:e,filePath:oi(e),op:`assurance:${t}:put`,author:o,message:r.message,lockTtlSeconds:ri,lockWaitMs:ii,mutate:a=>{let c=a===null?Wn():si(a),l=ai(c,t),d=l.findIndex(m=>m.id===n.id),u=d<0?"created":"updated";if(t==="assertion"&&d>=0&&U_(l[d],n)){let m=n.authorization_decision;if(!m||!r.authorized_decision_ids?.includes(m))throw new N(`loosening assertion ${n.id} requires a verified authorization_decision`)}return d<0?l.push(structuredClone(n)):l[d]=structuredClone(n),pn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
1
|
+
import{a as xo,c as Ar,d as Cr,e as Mc,g as Fc,h as Io,i as jc,j as Qt,k as en,l as Uc,m as zc,n as Ao,o as qc,p as tn,q as nn,r as Bc,s as Gc,t as Co}from"./chunk-FHUARRMA.js";import{e as Mr,f as Do}from"./chunk-U5SHHU7E.js";import{B as Qc,C as Dr,D as el,E as Oo,G as tl,H as nl,J as rl,K as Pr,M as Nr,a as Tc,g as Eo,i as $c}from"./chunk-ZAWAL2CG.js";import{K as _d}from"./chunk-PNGYYQY7.js";import{$ as Uo,A as Fo,B as Kl,F as Yl,J as jo,K as Qr,La as ld,Ma as dd,Qa as ud,Ra as md,Sa as fd,Xa as Wo,Z as ei,_ as Xl,aa as Un,ca as zo,d as zl,f as Mo,g as Hl,ga as Zl,ha as Ql,ia as ed,ja as td,ka as ti,l as Wl,m as ql,ma as nd,n as Bl,na as rd,oa as id,pa as Lt,pb as gd,q as Zr,qa as od,ra as dn,sa as sd,ta as Ho,u as Fn,ua as un,v as Gl,va as ad,w as Jl,wa as cd,x as jn,y as Vl}from"./chunk-ZJHYQOTM.js";import{a as Dc,b as Zt,c as Ro,d as Pc,e as Nc,f as it,g as Tr,h as Lc,i as wt}from"./chunk-7N5MRONP.js";import{Aa as No,Ba as Il,Bb as zn,Ca as Br,D as B,Da as Dt,Db as ni,Ea as me,Fa as Gr,Ga as Al,Ha as Lo,Ia as Jr,J as ml,Ja as cn,K as jr,Ka as Vr,Kb as pd,La as Cl,Ma as Se,N as Ur,Na as Tl,Nb as hd,O as zr,Oa as C,Pa as Kr,Q as fl,Qa as $l,R as $e,Ra as Ol,Sa as bt,T as vt,Ta as Dl,U as pl,Ua as Pl,V as hl,W as _l,X as Hr,Y as gl,Ya as Nl,bb as Ll,ca as yl,cb as Ml,da as Po,ea as Wr,fa as on,ha as qr,hb as Yr,ia as wl,ja as vl,jb as Fl,la as bl,lb as Q,mb as Oe,na as kl,nb as De,ob as jl,pa as Sl,pb as ln,qb as ot,rb as Pt,ta as sn,ua as El,ub as Ul,vb as Nt,wa as xl,xa as Rl,xb as Xr,za as an}from"./chunk-OROZM37I.js";import{b as Kt,e as de,f as Te,h as be,i as Ge,m as ke,n as Hc,o as $r,q as Wc}from"./chunk-M36SF4GE.js";import{A as dl,B as Fr,G as A,H as ul,I as rn,K as Ot,P as ce,d as sl,e as Je,g as al,k as cl,m as ll,u as H,x as Z,z as Me}from"./chunk-26O2WB73.js";import{$ as g,$a as Ec,$b as Yc,Aa as q,Ab as So,Bb as Ac,Cb as Cc,Db as Xt,Fa as Mn,Fb as qe,Ga as M,Ha as We,Hb as Be,Ia as Rr,Ja as $t,La as vc,Ma as Ir,Oa as bc,Qa as X,Qb as Oc,S as uc,T as mc,Ta as kc,Ub as Or,V as fc,Vb as Jc,Wb as To,X as pc,Xa as Sc,Xb as Vc,Y as xr,Ya as Yt,Yb as $o,Z as hc,_b as Kc,a as Sr,aa as y,bb as ko,cc as Xc,d as Er,ha as _c,i as cc,ia as Ln,ja as P,jc as Zc,ka as yt,l as lc,la as j,m as dc,ma as V,na as ae,nb as xc,ob as Rc,pb as O,qa as fe,qb as Ic,ra as Ce,rb as ve,sa as gc,w as bo,wd as Lr,xd as il,ya as yc,yd as ol,za as wc}from"./chunk-TPOL4TWE.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="00d2200c-d308-51a6-acc4-8da90afaf6d6")}catch{}})();var N=class extends TypeError{constructor(t){super(t),this.name="AssuranceMutationRefusalError"}},Ee=class extends TypeError{context;constructor(t,n={}){super(t),this.name="AssuranceEvaluationRefusalError",this.context=n}},Ve=class extends TypeError{measurement_id;source_kind;field;check;constructor(t,n){super(t),this.name="AssuranceSourceResolutionError",this.measurement_id=n.measurement_id,this.source_kind=n.source_kind,this.field=n.field,this.check=n.check}};async function mn(e){try{return await e()}catch(t){throw t instanceof N?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_mutation_refused"}):t}}async function yd(e){try{return await e()}catch(t){throw t instanceof Ee?new y(t.message,g.USAGE,{code:"invalid_argument_value",reason:"assurance_evaluation_refused",...t.context}):t}}import{createHash as D_}from"node:crypto";import P_ from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="b00dcab2-22c6-55b7-b93d-f6f5413d4b04")}catch{}})();var fn=1e3;(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="00ad9b34-4feb-5812-8755-801869cce3ad")}catch{}})();var vd=1,Mt=["pre-commit","pre-push","pre-merge","ci","pre-release","post-release","scheduled","on-claim","on-close"],qo=["items","dependency_kind","prose_edge_gap","graph","validate","health","history","links","provider","derived"],N_=["ceiling","floor","equals","zero","monotone_nondecreasing","monotone_nonincreasing","subset_of"],L_=/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/,ri=30,ii=5e3,bd=4,M_=50;function st(e,t){if(!L_.test(e))throw new N(`${t} must be a stable lowercase id`)}function F_(e,t){if(!Number.isFinite(e)||e<0)throw new N(`${t} must be a finite non-negative number`)}function Hn(e){let t=N_.filter(i=>e[i]!==void 0);if(t.length!==1)throw new N(`assertion ${e.id} must declare exactly one polarity`);let n=t[0],r=e[n];return{polarity:n,value:n==="zero"?0:r}}function Go(e,t){return O(e)===O(t)}function kd(e,t){if(t.polarity==="equals")return Go(e,t.value);if(t.polarity==="subset_of"){if(!Array.isArray(e)||!Array.isArray(t.value))return!1;let r=t.value;return e.every(i=>r.includes(i))}if(typeof e!="number")return!1;let n=t.value;return t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?e<=n:t.polarity==="floor"||t.polarity==="monotone_nondecreasing"?e>=n:e===0}function Sd(e){let t=Hn(e),n=e.negative_control.cases;return n.some(r=>r.expected==="pass")&&n.some(r=>r.expected==="fail")&&n.every(r=>kd(r.observed,t)===(r.expected==="pass"))}function j_(e,t){if(e.polarity!==t.polarity)return!0;if(typeof e.value=="number"&&typeof t.value=="number")return e.polarity==="ceiling"||e.polarity==="monotone_nonincreasing"?t.value>e.value:e.polarity==="floor"||e.polarity==="monotone_nondecreasing"?t.value<e.value:t.value!==e.value;if(e.polarity==="subset_of"){let n=e.value,r=t.value;return!Array.isArray(n)||!Array.isArray(r)||r.some(i=>!n.includes(i))}return!Go(e.value,t.value)}function U_(e,t){if(e.measurement_id!==t.measurement_id||e.owner_item_id!==t.owner_item_id||O(e.scope)!==O(t.scope))return!0;let n={observe:0,warn:1,block:2},r=(e.lifetime??"hold")==="hold"&&(t.lifetime??"hold")==="retire";return j_(Hn(e),Hn(t))||n[t.enforcement]<n[e.enforcement]||r}function z_(e){if(e.state!==void 0&&!(e.state==="present"||e.state==="missing"))throw new N("items source state must be present or missing");let t=Object.hasOwn(e,"equals"),n=e.state!==void 0,r=Number(t)+Number(n);if(e.field!==void 0&&r!==1)throw new N("items source with field requires exactly one of equals or state");if(e.field===void 0&&r!==0)throw new N("items source equals/state requires field")}function H_(e){if(typeof e.dependency_kind!="string"||e.dependency_kind.trim().length===0)throw new N("dependency_kind source requires dependency_kind");if([e.source_kind,e.source_kind_prefix,e.source_kind_state].filter(n=>n!==void 0).length>1)throw new N("dependency_kind source accepts at most one source_kind predicate");if(e.source_kind!==void 0&&e.source_kind.trim().length===0||e.source_kind_prefix!==void 0&&e.source_kind_prefix.trim().length===0)throw new N("dependency_kind source provenance values must not be empty");if(e.source_kind_state!==void 0&&e.source_kind_state!=="present"&&e.source_kind_state!=="missing")throw new N("dependency_kind source source_kind_state must be present or missing")}function W_(e){if(e.sample_limit!==void 0&&(!Number.isInteger(e.sample_limit)||e.sample_limit<1))throw new N("prose_edge_gap sample_limit must be a positive integer");for(let t of e.exemptions??[]){if(typeof t.holder_id!="string"||t.holder_id.trim().length===0||typeof t.reason!="string"||t.reason.trim().length===0)throw new N("prose_edge_gap exemptions require holder_id and reason");if(t.target_id!==void 0&&t.target_id.trim().length===0||t.text_contains!==void 0&&t.text_contains.trim().length===0)throw new N("prose_edge_gap exemption selectors must not be empty")}}function Jo(e){st(e.id,"measurement.id"),e.max_cost!==void 0&&F_(e.max_cost,"measurement.max_cost");let t=e.source;if(Object.prototype.toString.call(t)!=="[object Object]")throw new N(`measurement.source.kind must be one of ${qo.join(", ")}`);let n=Reflect.get(t,"kind");if(!qo.includes(n))throw new N(`measurement.source.kind must be one of ${qo.join(", ")}`);let r=t;if(r.kind==="items"&&z_(r),r.kind==="dependency_kind"&&H_(r),r.kind==="prose_edge_gap"&&W_(r),(r.kind==="graph"||r.kind==="validate"||r.kind==="health")&&(typeof r.field!="string"||r.field.trim().length===0))throw new N(`${r.kind} source requires field`);return r.kind==="provider"&&(st(r.provider,"provider source provider"),st(r.key,"provider source key")),e}function Vo(e){if(st(e.id,"assertion.id"),st(e.measurement_id,"assertion.measurement_id"),typeof e.owner_item_id!="string"||e.owner_item_id.trim().length===0)throw new N("assertion.owner_item_id is required");let t=Hn(e);if(typeof t.value=="number"&&!Number.isFinite(t.value))throw new N(`assertion.${t.polarity} must be a finite number`);if(e.lifetime==="retire"&&(typeof e.retire_reason!="string"||e.retire_reason.trim().length===0))throw new N("retired assertion requires retire_reason");e.scope.kind==="filter"&&st(e.scope.measurement_id,"assertion.scope.measurement_id");let n=e.negative_control?.cases;if(!Array.isArray(n)||!n.some(r=>r.expected==="pass")||!n.some(r=>r.expected==="fail"))throw new N("assertion negative control requires pass and fail cases");if(!Sd(e))throw new N(`assertion ${e.id} negative control does not prove its bound`);return e}function q_(e){if(!Array.isArray(e.allowed_providers))throw new N("gate provider_policy.allowed_providers must be an array");for(let t of e.allowed_providers)st(t,"gate.provider_policy.allowed_provider");if(typeof e.triggers!="object"||e.triggers===null||Array.isArray(e.triggers))throw new N("gate provider_policy.triggers must be an object");for(let[t,n]of Object.entries(e.triggers)){if(!Mt.includes(t))throw new N(`gate provider policy has unknown trigger ${t}`);if(typeof n!="object"||n===null||!["low","medium","high"].includes(n.max_cost_class)||typeof n.allow_network!="boolean")throw new N(`gate provider policy trigger ${t} is invalid`)}}function Ed(e){if(st(e.id,"gate.id"),!Array.isArray(e.assertion_ids))throw new N("gate.assertion_ids is required and must be an array");if(e.assertion_ids.length===0)throw new N("gate requires at least one assertion");for(let t of e.assertion_ids)st(t,"gate.assertion_id");if(!Array.isArray(e.triggers))throw new N(`gate.triggers is required and must be an array of ${Mt.join(", ")}`);if(e.triggers.length===0)throw new N("gate requires at least one trigger");for(let t of e.triggers)if(!Mt.includes(t))throw new N(`gate trigger must be one of ${Mt.join(", ")}`);return e.provider_policy&&q_(e.provider_policy),e}function pn(e){if(e.version!==vd)throw new N(`unsupported assurance document version ${String(e.version)}`);let t=new Set;for(let r of e.measurements){if(Jo(r),t.has(`measurement:${r.id}`))throw new N(`duplicate measurement ${r.id}`);t.add(`measurement:${r.id}`)}for(let r of e.assertions){if(Vo(r),t.has(`assertion:${r.id}`))throw new N(`duplicate assertion ${r.id}`);t.add(`assertion:${r.id}`)}for(let r of e.gates){Ed(r);let i=r.assertion_ids.filter(o=>!e.assertions.some(s=>s.id===o));if(i.length>0)throw new N(`gate ${r.id} references missing assertions: ${i.join(", ")}`);if(t.has(`gate:${r.id}`))throw new N(`duplicate gate ${r.id}`);t.add(`gate:${r.id}`)}let n=new Set(e.measurements.map(r=>r.id));for(let[r,i]of xd(e))if(!n.has(r))throw new N(`${i.join(", ")} references missing measurement ${r}`);return e}function Ko(e,t){if("measurement"in e){t.push(e.measurement);return}if("operator"in e)for(let n of e.operands)Ko(n,t)}function xd(e){let t=new Map,n=(r,i)=>{let o=t.get(r)??[];o.push(i),t.set(r,o)};for(let r of e.assertions)n(r.measurement_id,`assertion ${r.id}`),r.scope.kind==="filter"&&n(r.scope.measurement_id,`assertion ${r.id} scope`);for(let r of e.measurements){if(r.source.kind!=="derived")continue;let i=[];Ko(r.source.expression,i);for(let o of i)n(o,`derived measurement ${r.id}`)}return t}function B_(e,t){let n=e.assertion_ids.flatMap(o=>{let s=t.assertions.find(a=>a.id===o);return[s.measurement_id,...s.scope.kind==="filter"?[s.scope.measurement_id]:[]]}),r=new Set,i=new Set;for(;n.length>0;){let o=n.pop();if(r.has(o))continue;r.add(o);let s=t.measurements.find(a=>a.id===o);s.source.kind==="provider"?i.add(s.source.provider):s.source.kind==="derived"&&Ko(s.source.expression,n)}return i}function Wn(){return{version:vd,measurements:[],assertions:[],gates:[]}}function G_(e,t){let n=t.items.filter(r=>(e.statuses===void 0||e.statuses.includes(r.status))&&(e.types===void 0||e.types.includes(r.type))&&(e.tags===void 0||e.tags.every(i=>r.tags?.includes(i)))&&(e.field===void 0||(()=>{let i=r[e.field];if(e.state!==void 0){let o=i==null||i===""||Array.isArray(i)&&i.length===0;return e.state==="missing"?o:!o}return Go(i,e.equals)})()));return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function J_(e,t){return e.source_kind!==void 0?t?.toLowerCase()===e.source_kind.trim().toLowerCase():e.source_kind_prefix!==void 0?t?.toLowerCase().startsWith(e.source_kind_prefix.trim().toLowerCase())===!0:e.source_kind_state==="present"?t!==void 0&&t.length>0:e.source_kind_state==="missing"?t===void 0||t.length===0:!0}function V_(e,t){let n=[],r=ko(e.dependency_kind)??e.dependency_kind.trim().toLowerCase();for(let i of t.items)for(let o of i.dependencies??[]){let s=ko(o.kind)??o.kind.trim().toLowerCase(),a=o.source_kind?.trim();s===r&&J_(e,a)&&n.push(`${i.id}->${o.id}${a?`@${a}`:""}`)}return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n}}function K_(e){let t=[e.description,e.body].filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean);for(let n of["comments","notes","learnings"]){let r=e[n];if(Array.isArray(r)){for(let i of r)if(typeof i=="string")t.push(i);else if(typeof i=="object"&&i!==null){let o=Reflect.get(i,"text");typeof o=="string"&&t.push(o)}}}return t}function Y_(e,t,n,r){return e.some(i=>i.holder_id.trim().toLowerCase()===t.toLowerCase()&&(i.target_id===void 0||i.target_id.trim().toLowerCase()===n.toLowerCase())&&(i.text_contains===void 0||r.toLowerCase().includes(i.text_contains.trim().toLowerCase())))}function Bo(e,t){return[e.toLowerCase(),t.toLowerCase()].sort().join("\0")}function X_(e){let t=new Map,n=new Set,r=[],i=/\b[a-z][a-z0-9]*-[a-z0-9]+\b/giu,o=0;for(let s of e){t.set(s.id.toLowerCase(),s.id);for(let a of s.dependencies??[])n.add(Bo(s.id,a.id));for(let a of[s.parent,s.blocked_by])typeof a=="string"&&n.add(Bo(s.id,a));for(let a of K_(s)){let c=[...a.matchAll(i)].map(l=>l[0]);o+=c.length,r.push({holder_id:s.id,segment:a,mentioned_ids:c})}}return{canonical_ids:t,linked_pairs:n,prose_mentions:r,mention_count:o}}function Z_(e,t){let n=X_(t.items),r=new Map;for(let s of n.prose_mentions){let a=s.mentioned_ids.map(l=>n.canonical_ids.get(l.toLowerCase())).filter(l=>l!==void 0&&l!==s.holder_id),c=[...new Set(a)];for(let l of c){let d=Bo(s.holder_id,l);if(n.linked_pairs.has(d)||Y_(e.exemptions??[],s.holder_id,l,s.segment))continue;let u=c.some(m=>m!==l);r.get(d)?.explicit===!0&&!u||r.set(d,{contributor:`${s.holder_id}->${l}|subject=${u?"explicit":"implicit"}`,explicit:u})}}let i=[...r.values()],o=i.map(s=>s.contributor).sort();return{value:o.length,population_size:n.canonical_ids.size,cost:t.items.length+n.linked_pairs.size+n.mention_count,contributors:o.slice(0,e.sample_limit??25),partitions:{explicit_subject:i.filter(s=>s.explicit).length,implicit_subject:i.filter(s=>!s.explicit).length}}}function Q_(e,t){return{value:t.history.filter(r=>(e.op===void 0||r.op===e.op)&&(e.author===void 0||r.author===e.author)&&(e.harness===void 0||r.agent_harness===e.harness)&&(e.model===void 0||r.agent_model===e.model)).length,population_size:t.history.length,cost:t.history.length}}function eg(e,t){let n=t.items.filter(r=>{let i=r[e.link],o=Array.isArray(i)&&i.length>0;return e.state==="present"?o:!o});return{value:n.length,population_size:t.items.length,cost:t.items.length,contributors:n.map(r=>r.id)}}function tg(e,t){let n=e.source;return n.kind==="items"?G_(n,t):n.kind==="dependency_kind"?V_(n,t):n.kind==="prose_edge_gap"?Z_(n,t):n.kind==="history"?Q_(n,t):n.kind==="links"?eg(n,t):null}function Rd(e,t){return e.reduce((n,r)=>({units:n.units+r.units,items_scanned:n.items_scanned+r.items_scanned,history_entries:n.history_entries+r.history_entries,provider_calls:n.provider_calls+r.provider_calls,duration_ms:t}),{units:0,items_scanned:0,history_entries:0,provider_calls:0,duration_ms:t})}function ng(e,t){if(t.length===0)throw new TypeError(`derived ${e} requires operands`);if(e==="add")return t.reduce((n,r)=>n+r,0);if(e==="subtract")return t.slice(1).reduce((n,r)=>n-r,t[0]);if(e==="multiply")return t.reduce((n,r)=>n*r,1);if(e==="divide"){if(t.slice(1).includes(0))throw new TypeError("derived divide cannot divide by zero");return t.slice(1).reduce((n,r)=>n/r,t[0])}return e==="min"?Math.min(...t):Math.max(...t)}async function Id(e,t,n){let r=new Array(e.length),i=0,o=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let s=i;i+=1,r[s]=await n(e[s],s)}});return await Promise.all(o),r}async function Ad(e,t,n,r,i){if("literal"in e)return{value:e.literal,costs:[],population_size:0,contributors:[]};if("measurement"in e){let s=n.find(l=>l.id===e.measurement);if(!s)throw new TypeError(`derived measurement references missing ${e.measurement}`);let a=await Cd(s,t,n,r,i);if(typeof a.value!="number")throw new TypeError(`derived measurement ${s.id} is not numeric`);let c=i.charged.has(s.id)?[]:[a.cost];return i.charged.add(s.id),{value:a.value,costs:c,population_size:a.population_size,contributors:a.contributors}}let o=await Id(e.operands,bd,s=>Ad(s,t,n,r,i));return{value:ng(e.operator,o.map(s=>s.value)),costs:o.flatMap(s=>s.costs),population_size:Math.max(0,...o.map(s=>s.population_size)),contributors:[...new Set(o.flatMap(s=>s.contributors))]}}async function rg(e,t,n,r,i){Jo(e);let o=Date.now(),s,a=[],c=0;if(e.source.kind==="derived"){let u=await Ad(e.source.expression,t,n,[...r,e.id],i);s={value:u.value,population_size:u.population_size,cost:0,contributors:u.contributors},a=u.costs}else{let u=tg(e,t);u!==null?s=u:(s=await t.external(e.source),c=1)}let l={units:s.cost,items_scanned:e.source.kind==="items"||e.source.kind==="dependency_kind"||e.source.kind==="prose_edge_gap"||e.source.kind==="links"?t.items.length:0,history_entries:e.source.kind==="history"?t.history.length:0,provider_calls:c,duration_ms:Date.now()-o},d=Rd([...a,l],Date.now()-o);if(e.max_cost!==void 0&&d.units>e.max_cost)throw new Ee(`measurement ${e.id} exceeded cost ceiling ${e.max_cost} with ${d.units}`);return{id:e.id,definition_fingerprint:`sha256:${D_("sha256").update(O(e)).digest("hex")}`,value:s.value,population_size:s.population_size,cost:d,contributors:s.contributors??[],...s.partitions?{partitions:s.partitions}:{}}}function Cd(e,t,n,r,i){if(r.includes(e.id))throw new TypeError(`derived measurement cycle: ${[...r,e.id].join(" -> ")}`);let o=i.cache.get(e.id);if(o)return o;let s=rg(e,t,n,r,i).catch(a=>{if(a instanceof Ve&&a.measurement_id===void 0){let c={measurement_id:e.id,source_kind:a.source_kind,field:a.field,...a.check?{check:a.check}:{}},l=new Ve(a.message,c);throw l.cause=a,l}throw a});return i.cache.set(e.id,s),s}async function Yo(e,t,n=[e]){return Cd(e,t,n,[],{cache:new Map,charged:new Set})}function ig(e,t){return typeof e!="number"||typeof t.value!="number"?null:t.polarity==="ceiling"||t.polarity==="monotone_nonincreasing"?t.value-e:(t.polarity==="floor"||t.polarity==="monotone_nondecreasing",e-t.value)}function og(e,t,n={}){Vo(e);let r=Hn(e),i=e.lifetime==="retire"&&n.owner_terminal===!0;return{assertion_id:e.id,measurement_id:e.measurement_id,measurement_definition_fingerprint:t.definition_fingerprint,scope:e.scope,population_size:t.population_size,observed:t.value,bound:r,distance:ig(t.value,r),verdict:i?"retired":kd(t.value,r)?"pass":"fail",enforcement:e.enforcement,negative_control_proven:Sd(e),cost:t.cost,contributors:t.contributors,...t.partitions?{partitions:t.partitions}:{}}}function sg(e,t,n,r){let i=B_(e,t);if(i.size===0)return;let o=e.provider_policy,s=o?.triggers[r];if(!o||!s)throw new Ee(`assurance gate ${e.id} refuses provider execution at trigger ${r} without an explicit provider policy`);let a=new Set(o.allowed_providers),c={low:0,medium:1,high:2};for(let l of i){if(!a.has(l))throw new Ee(`assurance gate ${e.id} refuses provider ${l}`);let d=n.provider_capabilities?.[l];if(!d)throw new Ee(`assurance provider ${l} has no declared capabilities`);if(c[d.cost_class]>c[s.max_cost_class])throw new Ee(`assurance gate ${e.id} refuses ${d.cost_class}-cost provider ${l} at trigger ${r}`);if(d.network&&!s.allow_network)throw new Ee(`assurance gate ${e.id} refuses network provider ${l} at trigger ${r}`)}}async function wd(e,t,n,r,i){try{return await Yo(n,r,i)}catch(o){if(o instanceof Ve){let s=o.check?` check ${o.check}`:"",a=o.measurement_id??n.id,c=new Ee(`assurance gate ${e} assertion ${t} measurement ${a} source ${o.source_kind}${s} field ${o.field} could not resolve: ${o.message}`,{gate_id:e,assertion_id:t,measurement_id:a,source_kind:o.source_kind,field:o.field,...o.check?{check:o.check}:{}});throw c.cause=o,c}throw o}}async function Td(e,t,n,r){pn(t);let i=t.gates.find(c=>c.id===e);if(!i)throw new Ee(`assurance gate ${e} not found`);if(!i.triggers.includes(r.trigger))throw new Ee(`assurance gate ${e} does not declare trigger ${r.trigger}`);sg(i,t,n,r.trigger);let o=await Id(i.assertion_ids,bd,async c=>{let l=t.assertions.find(p=>p.id===c),d=t.measurements.find(p=>p.id===l.measurement_id),u=n;if(l.scope.kind==="active"){let p=new Set(n.terminal_statuses??["closed","canceled"]);u={...n,items:n.items.filter(h=>!p.has(h.status))}}else if(l.scope.kind==="filter"){let p=l.scope.measurement_id,h=t.measurements.find(v=>v.id===p),_=await wd(i.id,l.id,h,n,t.measurements),w=new Set(_.contributors);u={...n,items:n.items.filter(v=>w.has(v.id))}}let m=n.items.find(p=>p.id===l.owner_item_id),f=m!==void 0&&new Set(n.terminal_statuses??["closed","canceled"]).has(m.status);return og(l,await wd(i.id,l.id,d,u,t.measurements),{owner_terminal:f})}),s=o.some(c=>c.verdict==="fail"&&c.enforcement==="block"),a=o.some(c=>c.verdict==="fail"&&c.enforcement==="warn");return{gate_id:i.id,tree_id:n.tree_id,trigger:r.trigger,dry_run:r.dry_run===!0,evaluated_at:new Date().toISOString(),verdict:s?"block":a?"warn":"pass",exit_code:s?1:0,assertions:o,assertions_total:o.length,row_contract:{row_keys:["assertions"],jq_selector:".assertions[]"},cost:Rd(o.map(c=>c.cost),Math.max(0,...o.map(c=>c.cost.duration_ms)))}}function oi(e){return P_.join(e,"assurance.json")}async function $d(e){let t=await V(oi(e));return t===null?Wn():si(t)}function si(e){try{return pn(JSON.parse(e))}catch(t){throw new y("The assurance registry is invalid. Repair or restore .agents/pm/assurance.json and retry.",g.GENERIC_FAILURE,{code:"assurance_registry_invalid",reason:String(t),nextSteps:["Restore a valid assurance.json from version control or repair its declaration references.","Run pm assurance list measurement after the repair."]})}}function ai(e,t){return t==="measurement"?e.measurements:t==="assertion"?e.assertions:e.gates}function ag(e,t){e==="measurement"?Jo(t):e==="assertion"?Vo(t):Ed(t)}async function qn(e,t){let n=structuredClone(ai(await $d(e),t));return{items:n,count:n.length,row_contract:{row_keys:["items"],jq_selector:".items[]"}}}async function Xo(e,t,n){let r=ai(await $d(e),t).find(i=>i.id===n);if(!r)throw new TypeError(`assurance ${t} ${n} not found`);return structuredClone(r)}async function ci(e,t,n,r={}){ag(t,n);let i=await C(e),o=B(r.author,i.author_default),s=await cn({pmRoot:e,filePath:oi(e),op:`assurance:${t}:put`,author:o,message:r.message,lockTtlSeconds:ri,lockWaitMs:ii,mutate:a=>{let c=a===null?Wn():si(a),l=ai(c,t),d=l.findIndex(m=>m.id===n.id),u=d<0?"created":"updated";if(t==="assertion"&&d>=0&&U_(l[d],n)){let m=n.authorization_decision;if(!m||!r.authorized_decision_ids?.includes(m))throw new N(`loosening assertion ${n.id} requires a verified authorization_decision`)}return d<0?l.push(structuredClone(n)):l[d]=structuredClone(n),pn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
2
2
|
`,result:{changed:!0,action:u,kind:t,id:n.id}}}});return{...s.result,changed:s.changed}}async function Zo(e,t,n={}){let r=Wn();r.measurements=structuredClone(t.measurements),r.assertions=structuredClone(t.assertions),r.gates=structuredClone(t.gates),pn(r);let i=await C(e),o=B(n.author,i.author_default),s=await cn({pmRoot:e,filePath:oi(e),op:"assurance:bundle:apply",author:o,message:n.message,lockTtlSeconds:ri,lockWaitMs:ii,mutate:a=>{let c=a===null?Wn():si(a),l=[],d=[],u=(m,f,p)=>{for(let h of f){let _=m.find(w=>w.id===h.id);if(!_){m.push(structuredClone(h)),l.push(`${p}:${h.id}`);continue}if(O(_)!==O(h))throw new N(`assurance bundle refuses to replace divergent ${p} ${h.id}`);d.push(`${p}:${h.id}`)}};return u(c.measurements,r.measurements,"measurement"),u(c.assertions,r.assertions,"assertion"),u(c.gates,r.gates,"gate"),pn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
3
3
|
`,result:{changed:l.length>0,created_ids:l,unchanged_ids:d}}}});return{...s.result,changed:s.changed}}async function Od(e,t,n,r={}){let i=await C(e),o=B(r.author,i.author_default),s=await cn({pmRoot:e,filePath:oi(e),op:`assurance:${t}:remove`,author:o,message:r.message,lockTtlSeconds:ri,lockWaitMs:ii,mutate:a=>{let c=a===null?Wn():si(a);if(t==="measurement"){let u=xd(c).get(n);if(u&&u.length>0)throw new N(`assurance measurement ${n} is referenced by ${u.join(", ")}`)}if(t==="assertion"&&c.gates.some(u=>u.assertion_ids.includes(n)))throw new N(`assurance assertion ${n} is referenced by gate`);let l=ai(c,t),d=l.findIndex(u=>u.id===n);if(d<0)throw new N(`assurance ${t} ${n} not found`);return l.splice(d,1),pn(c),{raw:`${JSON.stringify(c,null,2)}
|
|
4
|
-
`,result:{changed:!0,action:"removed",kind:t,id:n}}}});return{...s.result,changed:s.changed}}async function Dd(e,t,n={}){if(t.dry_run)throw new TypeError("dry-run assurance verdicts are not persisted");let r=await C(e);await Jr({pmRoot:e,op:"assurance:gate:verdict",author:B(n.author,r.author_default),context:{assurance_verdict:t},message:n.message??`Assurance gate ${t.gate_id} returned ${t.verdict}`,lockTtlSeconds:ri,lockWaitMs:ii})}async function Pd(e,t={}){let n=t.limit??M_;if(!Number.isInteger(n)||n<1||n>fn)throw new TypeError(`assurance verdict limit must be an integer from 1 through ${fn}`);return(await Hr(Gr(e),me)).reverse().filter(i=>i.op==="assurance:gate:verdict").map(i=>i.context?.assurance_verdict).filter(i=>typeof i=="object"&&i!==null&&"gate_id"in i).filter(i=>t.gate_id===void 0||i.gate_id===t.gate_id).slice(0,n)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7470da18-4b85-5090-8ede-7de708b1f4ff")}catch{}})();var Bn=["software-delivery","research","agent-evaluation","operations"];function Nd(e,t,n,r,i){return{id:e,measurement_id:t,owner_item_id:n,scope:{kind:"active"},ceiling:r,lifetime:"hold",enforcement:i,negative_control:{cases:[{observed:r,expected:"pass"},{observed:r+1,expected:"fail"}]}}}function li(e,t,n,r,i){let o=`preset-${e}`,s=i.map(c=>({id:`${o}-missing-${c}`,description:`Active items missing ${c} evidence.`,source:{kind:"links",link:c,state:"missing"}})),a=s.map(c=>Nd(`${c.id}-zero`,c.id,r,0,"warn"));return{id:e,title:t,description:n,declarations:{measurements:s,assertions:a,gates:[{id:`${o}-readiness`,description:n,assertion_ids:a.map(c=>c.id),triggers:["ci","scheduled"]}]}}}function di(e,t){return e==="software-delivery"?li(e,"Software delivery","Warn when active delivery work lacks executable tests or documentation.",t,["tests","docs"]):e==="research"?li(e,"Research","Warn when active research work lacks reproducibility files or documentation.",t,["files","docs"]):e==="agent-evaluation"?li(e,"Agent evaluation","Warn when active evaluation work lacks executable scenarios or recorded artifacts.",t,["tests","files"]):li(e,"Operations","Warn when active operational work lacks runbook documentation or repair evidence.",t,["docs","files"])}function Ld(e,t,n,r={}){return Zo(e,di(t,n).declarations,r)}async function Md(e,t){let n=new Set(e.terminal_statuses??["closed","canceled"]),r={...e,items:e.items.filter(o=>!n.has(o.status))};return await Promise.all(["files","tests","docs"].map(async o=>{let s={id:`derived-active-missing-${o}`,description:`Observed active items missing ${o} evidence.`,source:{kind:"links",link:o,state:"missing"}},c=(await Yo(s,r)).value,l=Nd(`${s.id}-ceiling`,s.id,t,c,"observe"),d=`active-missing-${o}`;return{id:d,population_size:r.items.length,scope:{kind:"active"},observed:c,declarations:{measurements:[s],assertions:[l],gates:[{id:`derived-${d}`,description:`Observe the accepted ${o} evidence baseline.`,assertion_ids:[l.id],triggers:["ci","scheduled"]}]}}}))}function Fd(e,t,n={}){return Zo(e,{measurements:t.flatMap(r=>r.declarations.measurements),assertions:t.flatMap(r=>r.declarations.assertions),gates:t.flatMap(r=>r.declarations.gates)},n)}async function jd(e,t,n,r={}){let i=t.enforcement==="observe"?"warn":"block";if(t.enforcement==="block"||n!==i)throw new TypeError(`assurance assertion ${t.id} promotion must be ${t.enforcement} -> ${i}`);return ci(e,"assertion",{...t,enforcement:n},{...r,message:r.message??`Promote assurance assertion ${t.id} from ${t.enforcement} to ${n}`})}import Hd from"node:fs/promises";import{createRequire as cg}from"node:module";import xe from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a0014621-9e3d-5620-8f36-081811054843")}catch{}})();function Ud(e,t){let n=xe.relative(t,e);if(n.length>0&&n!==".."&&!n.startsWith(`..${xe.sep}`)&&!xe.isAbsolute(n))return n.split(xe.sep).join("/");let r=xe.resolve(e),i=0xcbf29ce484222325n;for(let s=0;s<r.length;s+=1)i^=BigInt(r.charCodeAt(s)),i=BigInt.asUintN(64,i*0x100000001b3n);return`<external>/${i.toString(16).padStart(16,"0")}/${xe.basename(xe.dirname(e))}/package.json`}function lg(e){return e.includes(`${xe.sep}.pnpm${xe.sep}`)?"pnpm":e.includes(`${xe.sep}node_modules${xe.sep}`)?"npm":"other"}async function zd(e){try{let t=JSON.parse(await Hd.readFile(e,"utf8"));return t.name==="@unbrained/pm-cli"&&typeof t.version=="string"&&t.version.trim().length>0?t.version.trim():void 0}catch{return}}async function Qo(e){try{return await Hd.realpath(e)}catch{return xe.resolve(e)}}async function Wd(e,t,n=Ce(import.meta.url,["../../.."])){let r=await Qo(t),i=await Qo(xe.join(n,"package.json")),o=await zd(i),s=new Map;o!==void 0&&s.set(i,{version:o,path:Ud(i,r),layout:"host",consumers:["pm-cli-host"]});for(let l of e)try{let d=cg(l.entry_path).resolve("@unbrained/pm-cli/package.json"),u=await Qo(d),m=await zd(u);if(m===void 0)continue;let f=u,p=s.get(f);if(p){p.consumers.includes(l.name)||(p.consumers.push(l.name),p.consumers.sort((h,_)=>h.localeCompare(_)));continue}s.set(f,{version:m,path:Ud(u,r),layout:lg(u),consumers:[l.name]})}catch{}let a=[...s.values()].sort((l,d)=>l.path.localeCompare(d.path)),c=o===void 0?[]:a.filter(l=>l.version!==o);return{host_version:o??null,copies:a,mismatches:c,warnings:c.map(l=>`extension_host_pm_cli_version_skew:${o}:${l.version}:${l.consumers.join("+")}`)}}import{createHash as tu}from"node:crypto";import Gn from"node:fs/promises";import Jn from"node:path";import{Option as dC}from"commander";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7ffd5046-9154-52e7-94ce-192b07b8ceae")}catch{}})();function dg(e,t){let n=[],r=new Set;for(let i of t.keys){if(!Object.hasOwn(e,i))continue;let o=e[i];if(o!=null){if(typeof o=="string"){n.push(o);continue}if(!Array.isArray(o)||!o.every(s=>typeof s=="string"))return;r.has(o)||(r.add(o),n.push(...o))}}return n.length>0?n.join("; "):void 0}function ui(e,t){return e.find(r=>r.target===t)??{target:t,keys:[t]}}function F(e,t){return e[t]===!0?!0:void 0}function at(e,t){return e[t]===!1?!0:void 0}function qd(e,t){return t.some(n=>e[n]===!0)?!0:void 0}function Bd(e,t){for(let[n,r]of Object.entries(t))n==="__proto__"||n==="constructor"||n==="prototype"||Object.hasOwn(e,n)||(e[n]=r)}function Gd(e){let t=i=>Eo(e,ui(Mr,i)),n=i=>$c(e,ui(Do,i)),r={title:t("title"),description:t("description"),body:t("body"),status:t("status"),closeReason:t("closeReason"),priority:t("priority"),type:t("type"),tags:t("tags"),addTags:n("addTags"),removeTags:n("removeTags"),deadline:t("deadline"),estimatedMinutes:t("estimatedMinutes"),acceptanceCriteria:dg(e,ui(Do,"acceptanceCriteria")),addAc:n("addAc"),removeAc:n("removeAc"),definitionOfReady:t("definitionOfReady"),order:t("order"),rank:t("rank"),goal:t("goal"),objective:t("objective"),value:t("value"),impact:t("impact"),outcome:t("outcome"),whyNow:t("whyNow"),author:t("author"),message:t("message"),force:!!e.force,ownershipMetadataBypass:e.ownershipMetadataBypass===!0?!0:void 0,ownershipDependencyBypass:e.ownershipDependencyBypass===!0?!0:void 0,assignee:t("assignee"),parent:t("parent"),allowUnresolvedDeps:qd(e,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,reviewer:t("reviewer"),risk:t("risk"),confidence:t("confidence"),sprint:t("sprint"),release:t("release"),blockedBy:t("blockedBy"),blockedReason:t("blockedReason"),unblockNote:t("unblockNote"),reporter:t("reporter"),severity:t("severity"),environment:t("environment"),reproSteps:t("reproSteps"),resolution:t("resolution"),expectedResult:t("expectedResult"),actualResult:t("actualResult"),affectedVersion:t("affectedVersion"),fixedVersion:t("fixedVersion"),component:t("component"),regression:e.regression===!0?"true":t("regression"),customerImpact:t("customerImpact"),dep:n("dep"),depRemove:n("depRemove"),replaceDeps:F(e,"replaceDeps"),replaceTests:F(e,"replaceTests"),replaceFiles:F(e,"replaceFiles"),replaceDocs:F(e,"replaceDocs"),comment:n("comment"),note:n("note"),learning:n("learning"),file:n("file"),test:n("test"),doc:n("doc"),reminder:n("reminder"),event:n("event"),typeOption:n("typeOption"),field:n("field"),unset:n("unset"),clearDeps:F(e,"clearDeps"),clearComments:F(e,"clearComments"),clearNotes:F(e,"clearNotes"),clearLearnings:F(e,"clearLearnings"),clearFiles:F(e,"clearFiles"),clearTests:F(e,"clearTests"),clearDocs:F(e,"clearDocs"),clearReminders:F(e,"clearReminders"),clearEvents:F(e,"clearEvents"),clearTypeOptions:F(e,"clearTypeOptions")};return Bd(r,e),r}function te(e,t){let n=ui(Tc,t),r=Eo(e,n);if(r!==void 0)return r;for(let i of n.keys){let o=e[i];if(Array.isArray(o)){let s=o.filter(a=>typeof a=="string");if(s.length>0)return s.join(",")}if(t==="ids"&&typeof o=="string")return o;if(typeof o=="number"&&Number.isFinite(o))return String(o)}}function ug(e){let t=F(e,"filterFilesMissing"),n=F(e,"filterDocsMissing");return{filterReviewerMissing:F(e,"filterReviewerMissing"),filterRiskMissing:F(e,"filterRiskMissing"),filterConfidenceMissing:F(e,"filterConfidenceMissing"),filterSprintMissing:F(e,"filterSprintMissing"),filterReleaseMissing:F(e,"filterReleaseMissing"),hasNotes:F(e,"hasNotes"),hasLearnings:F(e,"hasLearnings"),hasFiles:F(e,"hasFiles"),hasDocs:F(e,"hasDocs"),hasTests:F(e,"hasTests"),hasComments:F(e,"hasComments"),hasDeps:F(e,"hasDeps"),hasBody:F(e,"hasBody"),hasLinkedCommand:F(e,"hasLinkedCommand"),noNotes:at(e,"notes"),noLearnings:at(e,"learnings"),noFiles:at(e,"files")??t,filterFilesMissing:t,noDocs:at(e,"docs")??n,filterDocsMissing:n,noTests:at(e,"tests"),noComments:at(e,"comments"),noDeps:at(e,"deps"),emptyBody:F(e,"emptyBody"),noLinkedCommand:at(e,"linkedCommand")}}function Jd(e){let t={status:te(e,"status"),type:te(e,"type"),tag:te(e,"tag"),priority:te(e,"priority"),deadlineBefore:te(e,"deadlineBefore"),deadlineAfter:te(e,"deadlineAfter"),updatedAfter:te(e,"updatedAfter"),updatedBefore:te(e,"updatedBefore"),createdAfter:te(e,"createdAfter"),createdBefore:te(e,"createdBefore"),today:F(e,"today"),recent:F(e,"recent"),ids:te(e,"ids"),assignee:te(e,"assignee"),assigneeFilter:te(e,"assigneeFilter"),parent:te(e,"parent"),sprint:te(e,"sprint"),release:te(e,"release"),limit:te(e,"limit"),offset:te(e,"offset"),noTruncate:at(e,"truncate"),includeBody:F(e,"includeBody"),strictRead:F(e,"strictRead"),compact:F(e,"compact"),brief:F(e,"brief"),full:F(e,"full"),fields:te(e,"fields"),sort:te(e,"sort"),order:te(e,"order"),tree:F(e,"tree"),treeDepth:te(e,"treeDepth"),filterAcMissing:F(e,"filterAcMissing"),filterEstimatesMissing:qd(e,["filterEstimatesMissing","filterEstimateMissing"]),filterResolutionMissing:F(e,"filterResolutionMissing"),filterMetadataMissing:F(e,"filterMetadataMissing"),...ug(e)};return Bd(t,e),t}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6264e2f2-1b58-513b-b32d-54a89919de5d")}catch{}})();var mg=Symbol("pm.mcp-mutation-transport"),fg=new Set(["activity","aggregate","context","contracts","deps","files-discover","files-lookup","get","graph","health","history","list","next","search","stats","telemetry","validate"]);function ts(e){return mg in e}function fi(e,t){return ts(e)?Vl(t):Fo(e,t)}function kC(e,t,n=[]){let r=Fo(e,{...e,...t});for(let i of n)Reflect.deleteProperty(r,i);return r}function T(e,t){let n=e[t];return typeof n=="string"&&n.trim().length>0?n:void 0}function ie(e,t){let n=e[t];return typeof n=="string"?n.trim().length>0?n:void 0:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function SC(e,t){let n=e[t];return typeof n=="string"?n:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function hn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function rs(e,t){if(typeof e=="number"){if(!Number.isInteger(e))throw new y(`${t} must be a finite integer.`,g.USAGE);return e}if(typeof e=="string"&&e.trim().length>0){let n=Number(e);if(!Number.isInteger(n))throw new y(`${t} must be a finite integer.`,g.USAGE);return n}}function EC(e,t){return typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:typeof t.limit=="number"&&Number.isFinite(t.limit)?t.limit:T(e,"limit")??T(t,"limit")}function xC(e){let t=T(e,"outputFormat");return{json:!0,quiet:!0,author:T(e,"author"),path:T(e,"path"),noExtensions:e.noExtensions===!0||e.no_extensions===!0,noPager:!0,outputInclude:T(e,"outputInclude"),outputLimit:ie(e,"outputLimit"),outputBudget:ie(e,"outputBudget"),outputSession:T(e,"outputSession"),outputCursor:T(e,"outputCursor"),outputFormat:t==="json"||t==="toon"?t:void 0}}var pg=new Set(["tags","blockedBy","blocked_by","skills","fields"]),Kd=new Set(["comment","note","learning","reminder","event","dep","depRemove","dep_remove","file","doc","test","unset","addGlob","add_glob","migrate","envSet","env_set","envClear","env_clear"]),hg=new Set([...Kd].filter(e=>e!=="file")),_g=new Set(["files","files-discover","docs","test","test-all"]),Yd=new Set(["comments","notes","learnings"]);function gg(e,t){if(!(!Yd.has(e)||!Object.prototype.hasOwnProperty.call(t,"file")))throw new y(`MCP ${e} does not accept options.file. Pass annotation text in options.add instead.`,g.USAGE,{code:"mcp_annotation_file_unavailable",required:"Pass annotation text as JSON data; MCP annotation actions cannot read server-local files."})}var yg=new Set(["claim","release","start-task","pause-task","close-task"]),wg={list:["status","type","tag","priority","limit","offset"],search:["mode","status","type","tag","priority","limit"],create:["title","type","status","description","body","priority","tags","parent","createMode","create_mode","allowMissingParent","allowDuplicate"],update:["parent","allowMissingParent","completedAt"],copy:["allowDuplicate"],close:["duplicateOf","completedAt"],comments:["ifAbsent"],notes:["ifAbsent"],learnings:["ifAbsent"],extension:["dryRun"],package:["dryRun"],install:["dryRun"],upgrade:["scope","dryRun","cliOnly","packagesOnly","repair","tag","packageName"],append:["body"]},vg=["outputInclude","outputLimit","outputBudget","outputFormat","outputSession","outputCursor"];function Xd(e,t=""){let n={},r=_g.has(t),i=t==="files"||t==="files-discover"||t==="docs",o=Yd.has(t)?hg:Kd;for(let[s,a]of Object.entries(e)){if(Array.isArray(a)&&pg.has(s)){n[s]=a.join(",");continue}if(s==="note"&&i){n[s]=a;continue}if(typeof a=="string"&&o.has(s)){n[s]=[a];continue}if(typeof a=="string"&&r&&(s==="add"||s==="remove")){n[s]=[a];continue}n[s]=a}return n}function bg(e,t,n){let r=T(e,"author");return r!==void 0?r:n!==void 0&&yg.has(n)?T(e,"assignee")??T(t,"assignee"):void 0}function kg(e,t){return t!==void 0&&e.author===void 0?{...e,author:t}:e}function RC(e,t){let n=hn(e.options)?e.options:void 0,r=Sc(e.options),i={},o=c=>{r[c]!==void 0||e[c]===void 0||(i[c]=e[c])};for(let c of wg[t??""]??[])o(c);for(let c of vg)o(c);t!==void 0&&ts(e)&&gg(t,r);let s=Xd({...i,...r},t),a=ts(e)?e:n??e;return fi(a,kg(s,bg(e,s,t)))}function IC(e){if(e.addNote===void 0)return e;let t={...e};return t.note===void 0&&typeof t.addNote=="string"&&(t.note=t.addNote),delete t.addNote,t}function AC(e){let t={...e};return t.discoveryNote!==void 0&&t.note===void 0&&typeof t.discoveryNote=="string"&&(t.note=t.discoveryNote),delete t.discover,delete t.discoveryNote,t}function Sg(e){let t=[],n=!0;for(let r of e.trim().toLowerCase()){if(r>="a"&&r<="z"||r>="0"&&r<="9"){t.push(r),n=!1;continue}n||(t.push("-"),n=!0)}return t.at(-1)==="-"&&t.pop(),t.join("")}function CC(e){return!fg.has(Sg(e))}function TC(e){return e.trim().toLowerCase().split(/\s+/).filter(Boolean).join(" ")}function is(e){return Array.isArray(e)?e.map(t=>String(t)).filter(t=>t.length>0):[]}function $C(e,t){let n=new Set(["action","args","author","cwd","fullChangedFields","id","options","path","query","reason","target"]),r={};for(let[o,s]of Object.entries(e))n.has(o)||(r[o]=s);let i={...r,...t};return delete i.args,i}function OC(e,t){let n=fi(t??{},{...t});return{changedFields:e.fullChangedFields===!0?"full":"compact",idOnly:e.idOnly===!0,runnerOptions:n}}function ns(e){return{type:ie(e,"filterType"),tag:ie(e,"filterTag"),priority:ie(e,"filterPriority"),deadlineBefore:ie(e,"filterDeadlineBefore"),deadlineAfter:ie(e,"filterDeadlineAfter"),updatedAfter:ie(e,"filterUpdatedAfter"),updatedBefore:ie(e,"filterUpdatedBefore"),createdAfter:ie(e,"filterCreatedAfter"),createdBefore:ie(e,"filterCreatedBefore"),ids:jo(e.ids),assignee:ie(e,"filterAssignee"),assigneeFilter:ie(e,"filterAssigneeFilter")??ie(e,"filterAssignee_filter"),parent:ie(e,"filterParent"),sprint:ie(e,"filterSprint"),release:ie(e,"filterRelease"),limit:ie(e,"limit"),offset:ie(e,"offset")}}function es(e){if(typeof e=="string"&&e.trim().length>0)return e;if(Array.isArray(e))return is(e)}function mi(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="string"&&e.trim().length>0)return e}function DC(e){let t=es(e.kind),n=es(e.exemptIsolate),r=es(e.exemptIsolateType);return{...t===void 0?{}:{kind:t},maxDepth:mi(e.maxDepth),limit:mi(e.limit),after:T(e,"after"),direction:T(e,"direction"),maxPaths:mi(e.maxPaths),sample:mi(e.sample),...n===void 0?{}:{exemptIsolate:n},...r===void 0?{}:{exemptIsolateType:r},saveBaseline:e.saveBaseline===!0,rebuild:e.rebuild===!0,clear:e.clear===!0,summary:e.summary===!0,...e.full===!0?{full:!0}:{}}}function Zd(e){let t=Jd(e);return e.ids!==void 0&&(t.ids=jo(e.ids)),t}function PC(e){return{status:T(e,"filterStatus"),list:hn(e.list)?Zd(e.list):ns(e),reason:T(e,"reason"),resolution:T(e,"resolution"),expectedResult:T(e,"expectedResult")??T(e,"expected_result")??T(e,"expected"),actualResult:T(e,"actualResult")??T(e,"actual_result")??T(e,"actual"),validateClose:T(e,"validateClose")??T(e,"validate_close"),author:T(e,"author"),message:T(e,"message"),force:e.force===!0?!0:void 0,dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:T(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}var Eg=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","ids","list","update","limit","offset","dryRun","dry_run","rollback","checkpoint","noCheckpoint","no_checkpoint"]);function Vd(e){let t={};for(let[n,r]of Object.entries(e))Eg.has(n)||(t[n]=r);return Qd(t)}function Qd(e){let t=Xd(e,"update-many");for(let n of Mr)for(let r of n.keys){let i=t[r];typeof i=="number"&&Number.isFinite(i)&&(t[r]=String(i))}return Gd(t)}function NC(e){if(hn(e.list)||hn(e.update)){let t=hn(e.update)?e.update:Vd(e),n=fi(e,Qd(t));return{status:ie(e,"filterStatus"),list:hn(e.list)?Zd(e.list):ns(e),update:Kl(t,n),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:T(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}return{status:ie(e,"filterStatus"),list:ns(e),update:fi(e,Vd(e)),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:T(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fd8c4c35-98bb-5f3b-927d-8696125af703")}catch{}})();function Pe(e,t){throw new y(e,g.USAGE,t)}var xg="2026-07-15T06:22:12.276Z",Rg=Date.parse(xg),Ig=[["attributed","attributed"],["legacy_unknown","actionable_unknown"]],eu=e=>typeof e=="string"?e:"",nu=e=>{let t=e??{},n=eu(t.author).trim().toLowerCase(),r=Number(["","unknown"].includes(n)),i=+(Date.parse(eu(t.ts))>=Rg);return Ig[r][i]};function ru(e,t,n=20,r=new Set,i=!1){let o=[],s=[],a={legacy_unknown:0,actionable_unknown:0},c=Math.max(0,n),l=0,d=0,u=0;for(let[m,f]of t.split(/\r?\n/).entries()){let p;try{p=JSON.parse(f)}catch{continue}l+=1;let h=nu(p);if(h!=="attributed"){if(d+=1,h==="actionable_unknown"&&r.has(`${e}:${m+1}`)){u+=1;continue}a[h]+=1,i&&h==="actionable_unknown"&&s.push({item_id:e,line:m+1}),o.length<c&&o.push({item_id:e,line:m+1})}}return{checked_events:l,unknown_event_count:d,legacy_unknown_event_count:a.legacy_unknown,actionable_unknown_event_count:a.actionable_unknown,acknowledged_actionable_event_count:u,samples:o,samples_truncated:a.legacy_unknown+a.actionable_unknown>o.length,actionable_events:s}}var BC=(e,t,n=20,r=new Set)=>ru(e,t,n,r);function iu(e){let t=new Set;for(let n of e.split(/\r?\n/)){let r;try{r=JSON.parse(n)}catch{continue}let o=(typeof r=="object"&&r!==null&&typeof r.context=="object"&&r.context!==null?r.context:{}).author_acknowledgment;if(!(typeof o!="object"||o===null||!Array.isArray(o.events)))for(let s of o.events)typeof s=="object"&&s!==null&&typeof s.item_id=="string"&&Number.isSafeInteger(s.line)&&t.add(`${s.item_id}:${String(s.line)}`)}return t}var Vn=async(e,t=20,n=!1)=>{let r=Jn.join(e,"history"),i;try{i=(await Gn.readdir(r)).filter(w=>w.endsWith(".jsonl")).sort((w,v)=>w.localeCompare(v))}catch{i=[]}let o=new Set,s=[],a=[],c=0,l=0,d=0,u=0,m=0,f=0,p="_workspace.jsonl",h=new Set;if(i.includes(p))try{h=iu(await Gn.readFile(Jn.join(r,p),"utf8"))}catch{h=new Set}for(let w of i){let v;try{v=await Gn.readFile(Jn.join(r,w),"utf8")}catch{continue}let k=w.slice(0,-6),S=ru(k,v,t-s.length,h,n);c+=1,l+=S.checked_events,d+=S.unknown_event_count,u+=S.legacy_unknown_event_count,m+=S.actionable_unknown_event_count,f+=S.acknowledged_actionable_event_count,S.unknown_event_count>0&&o.add(k),s.push(...S.samples),n&&a.push(...S.actionable_events)}let _=u+m;return{checked_streams:c,checked_events:l,unknown_event_count:d,legacy_unknown_event_count:u,actionable_unknown_event_count:m,acknowledged_actionable_event_count:f,affected_item_ids:[...o].sort((w,v)=>w.localeCompare(v)),samples:s,samples_truncated:_>s.length,...n?{actionable_events:a}:{}}};function Ag(e){return[...new Map(e.map(t=>[`${t.item_id}:${t.line}`,{item_id:t.item_id,line:t.line}])).values()].sort((t,n)=>t.item_id.localeCompare(n.item_id)||t.line-n.line)}async function Cg(e){try{return iu(await Gn.readFile(Jn.join(e,"history","_workspace.jsonl"),"utf8"))}catch{return new Set}}function Tg(e){return(e.item_id===me||/^[a-z0-9][a-z0-9-]*$/iu.test(e.item_id))&&Number.isSafeInteger(e.line)&&e.line>=1}function $g(e,t,n){let r=n[e.line-1]??"",i;try{i=JSON.parse(r)}catch{Pe(`Unknown-author acknowledgment target ${e.item_id}:${e.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}return nu(i)!=="actionable_unknown"&&Pe(`Author acknowledgment target ${e.item_id}:${e.line} is not an actionable unknown-author event.`,{code:"history_author_acknowledge_target_not_actionable"}),{...e,source_event_hash:tu("sha256").update(r).digest("hex"),disposition:t.has(`${e.item_id}:${e.line}`)?"already_acknowledged":"actionable"}}async function ou(e,t,n){let r=t.events??[],i=+(t.all_actionable===!0)+ +(r.length>0);i===0&&Pe("Specify exactly one selector: events or all_actionable.",{code:"history_author_acknowledge_selector_required"}),i>1&&Pe("Author acknowledgment accepts either explicit events or all_actionable, not both.",{code:"history_author_acknowledge_selector_conflict"}),(!Number.isSafeInteger(n)||n<0)&&Pe("Author acknowledgment coordinate_limit must be a non-negative integer.",{code:"history_author_acknowledge_preview_limit_invalid"});let o=Ag(t.all_actionable===!0?(await Vn(e,0,!0)).actionable_events:r),s=await Cg(e),a=new Map;for(let m of o)if(Tg(m)||Pe(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"}),!a.has(m.item_id))try{a.set(m.item_id,(await Gn.readFile(Jn.join(e,"history",`${m.item_id}.jsonl`),"utf8")).split(/\r?\n/u))}catch{Pe(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}let c=o.map(m=>$g(m,s,a.get(m.item_id))),l=t.all_actionable===!0?"all_actionable":"events",d=tu("sha256").update(JSON.stringify({version:1,selection:l,coordinates:c})).digest("hex"),u=c.filter(({disposition:m})=>m==="actionable").length;return{plan:{selection:{kind:l},selected_count:c.length,actionable_count:u,already_acknowledged_count:c.length-u,omitted_count:Math.max(0,c.length-n),coordinates:c.slice(0,n),plan_fingerprint:d},completeCoordinates:c}}async function GC(e,t,n=50){return(await ou(e,t,n)).plan}function Og(e,t){let n=e.length>0;return n&&t&&Pe("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_conflict",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),!n&&!t&&Pe("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_required",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),{events:Dg(e),all_actionable:t}}function Dg(e){return e.map(t=>{let n=t.lastIndexOf(":"),r=t.slice(0,n).trim(),i=Number(t.slice(n+1)),o=r===me||/^[a-z0-9][a-z0-9-]*$/iu.test(r);return(n<1||!o||!Number.isSafeInteger(i)||i<1)&&Pe(`history-author-acknowledge --event expects <item-id>:<one-based-line>, received "${t}".`,{code:"history_author_acknowledge_target_unreadable"}),{item_id:r,line:i}})}function JC(e,t){let n=Og(is(t.historyEvent),t.allActionable===!0||t.all_actionable===!0);return Pg(e,{events:n.events,all_actionable:n.all_actionable,dry_run:t.dryRun===!0||t.dry_run===!0,plan_fingerprint:T(t,"planFingerprint")??T(t,"plan_fingerprint"),coordinate_limit:typeof t.limit=="number"?t.limit:typeof t.limit=="string"?Number(t.limit):void 0,attributed_author:T(t,"attributedAuthor")??T(t,"attributed_author")??void 0,reviewer:T(t,"reviewer"),reason:T(t,"reason")})}async function Pg(e,t){let n=t.reviewer?.trim()??"",r=t.attributed_author?.trim()??"",i=t.reason?.trim()??"",o=await ou(e,t,t.coordinate_limit??50);if(t.dry_run===!0)return{dry_run:!0,mutated:!1,acknowledged:0,outcome:"preview",exit_code:g.SUCCESS,plan:o.plan};if([n.length>0,n.toLowerCase()!=="unknown",r.length>0,r.toLowerCase()!=="unknown",i.length>0].includes(!1)&&Pe("Author acknowledgment requires events, reviewer, attributed_author, and reason.",{code:"history_author_acknowledge_required_values_missing"}),t.plan_fingerprint?.trim()||Pe("Author acknowledgment apply requires plan_fingerprint from a fresh dry-run preview.",{code:"history_author_acknowledge_plan_fingerprint_required",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run, then pass --plan-fingerprint <value>."}}),t.plan_fingerprint.trim()!==o.plan.plan_fingerprint)throw new y("Author acknowledgment selection changed after preview; no history was mutated.",g.CONFLICT,{code:"history_author_acknowledge_plan_conflict",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run and apply the fresh plan_fingerprint."}});let a=o.completeCoordinates.filter(({disposition:u})=>o.plan.selection.kind==="events"||u==="actionable").map(({item_id:u,line:m})=>({item_id:u,line:m}));if(a.length===0)return{dry_run:!1,mutated:!1,acknowledged:0,outcome:"no_effect",exit_code:g.NO_EFFECT,plan:o.plan};let c=await C(e),l=await Jr({pmRoot:e,op:"history:author-acknowledge",author:n,context:{author_acknowledgment:{events:a,attributed_author:r}},message:i,lockTtlSeconds:c.locks.ttl_seconds,lockWaitMs:c.locks.wait_ms}),d=o.plan.actionable_count>0&&o.plan.already_acknowledged_count>0?{outcome:"partial_effect",exit_code:g.PARTIAL_EFFECT}:{outcome:"effect",exit_code:g.SUCCESS};return{dry_run:!1,mutated:!0,acknowledged:a.length,...d,plan:o.plan,history_path:l.historyPath}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0daf7c89-abc5-5c35-ba3f-9772a50408c0")}catch{}})();var Kn={type:"string",minLength:1,maxLength:128,pattern:"\\S"},pi={type:"array",minItems:1,maxItems:To,items:Kn},su={...pi,items:{...Kn,pattern:"^(?!(?:.*\\.)?(?:__proto__|constructor|prototype)(?:\\.|$))[a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*){0,7}$"}},Ng={type:"object",additionalProperties:!1,required:["id","rule"],properties:{id:{type:"string",minLength:1,maxLength:128,pattern:"^[a-zA-Z0-9][a-zA-Z0-9._-]*$"},description:{type:"string",minLength:1,maxLength:500,pattern:"\\S"},effect:{enum:["advise","warn","refuse"]},subject:{type:"object",additionalProperties:!1,properties:{...Object.fromEntries(["types","tags","statuses","operations","parents"].map(e=>[e,pi])),dependency:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:Kn,id:Kn}}}},rule:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","fields"],properties:{kind:{const:"require_fields"},fields:su}},{type:"object",additionalProperties:!1,required:["kind","authors"],properties:{kind:{const:"authors"},authors:pi}},...["field_writers","approval"].map(e=>({type:"object",additionalProperties:!1,required:["kind","fields","authors"],properties:{kind:{const:e},fields:su,authors:pi}})),{type:"object",additionalProperties:!1,required:["kind","allowed"],properties:{kind:{const:"transition"},allowed:{type:"array",maxItems:To,items:{type:"array",minItems:2,maxItems:2,items:Kn}}}}]}}},YC={$schema:"https://json-schema.org/draft/2020-12/schema",title:"pm workflow policy registry",type:"object",additionalProperties:!1,required:["version","policies"],properties:{version:{const:1},enforcement:{enum:["advise","refuse"],default:"advise"},policies:{type:"array",maxItems:Jc,items:Ng}}};(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]="e94b776a-9886-57bc-ba87-06f4a30de578")}catch{}})();async function au(e,t,n,r){let i=await bt(e).catch(()=>null);return i===null?{check:{name:"completeness",status:"error",ok:!1,details:{policy_registry_readable:!1,policy_registry_path:"schema/policies.json",remediation_hint:"Repair schema/policies.json, then rerun pm validate."}},warnings:["validate_completeness_policy_registry_unreadable"]}:cu(i,t,n,r)}function cu(e,t,n=5,r=!1){let i=[],o=new Map,s=0,a=0,c=0,l=Xc(e);for(let u of t){let f=l({operation:"",author:"",before:u,after:u,completeness_only:!0}).decisions.filter(h=>!h.satisfied);if(f.length===0)continue;a+=1;let p=o.get(u.type)??{items:0,violations:0,missing_fields:0};p.items+=1;for(let h of f)s+=1,p.violations+=1,p.missing_fields+=h.missing_fields.length,h.effect==="refuse"&&(c+=1),i.length<n&&i.push({id:u.id,type:u.type,status:u.status,decision:h});o.set(u.type,p)}let d=r||c>0?"error":s>0?"warn":"ok";return{check:{name:"completeness",status:d,ok:d==="ok",details:{scope:"operation_independent_require_fields",checked_items:t.length,incomplete_items:a,violation_count:s,refused_violations:c,missing_by_type:Object.fromEntries(o),violations:i,violations_truncated:i.length<s,enforcement:e.enforcement}},warnings:[...s>0?[`validate_completeness_missing_fields:${s}`]:[],...r?["validate_completeness_source_incomplete"]:[]]}}import Lg 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]="e60a4620-c210-5d5e-baf4-d96467406cf4")}catch{}})();function Mg(){return{version:1,enforcement:"advise",policies:[...[["Epic",["goal","objective","body"]],["Story",["description","value","acceptance_criteria"]],["Decision",["body","resolution"]],["Feature",["acceptance_criteria","expected_result"]],["Task",["description"]],["Issue",["repro_steps","expected_result"]],["Chore",["description"]]].map(([t,n])=>({id:`completeness-${t.toLowerCase()}`,effect:"advise",description:`Evidence expected when ${t} work reaches completion.`,subject:{types:[t],statuses:["closed"]},rule:{kind:"require_fields",fields:[...n]}})),{id:"completeness-resolution",effect:"advise",subject:{statuses:["closed"]},rule:{kind:"require_fields",fields:["resolution","expected_result","actual_result"]}}]}}function du(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{throw new y("Policy definition must be valid JSON.",g.USAGE)}if(typeof t!="object"||t===null||Array.isArray(t))throw new y("Policy definition must be an object.",g.USAGE);return t}async function Fg(e,t){let n=M(process.cwd(),e.path);await Q(n);let r=await C(n);return{pmRoot:n,settings:r,author:B(t,r.author_default)}}function lu(e,t,n,r){if(e==="policy-mode")return $o({...n,enforcement:t});let i=n.policies.filter(a=>a.id!==t);if(e==="policy-remove")return{...n,policies:i};let o=Vc(du(r.definition));if(o.id!==t)throw new y("Policy definition id must match its operand.",g.USAGE);let s=$o({...n,policies:[...i,o].sort((a,c)=>a.id.localeCompare(c.id))});if(Buffer.byteLength(`${JSON.stringify(s,null,2)}
|
|
4
|
+
`,result:{changed:!0,action:"removed",kind:t,id:n}}}});return{...s.result,changed:s.changed}}async function Dd(e,t,n={}){if(t.dry_run)throw new TypeError("dry-run assurance verdicts are not persisted");let r=await C(e);await Jr({pmRoot:e,op:"assurance:gate:verdict",author:B(n.author,r.author_default),context:{assurance_verdict:t},message:n.message??`Assurance gate ${t.gate_id} returned ${t.verdict}`,lockTtlSeconds:ri,lockWaitMs:ii})}async function Pd(e,t={}){let n=t.limit??M_;if(!Number.isInteger(n)||n<1||n>fn)throw new TypeError(`assurance verdict limit must be an integer from 1 through ${fn}`);return(await Hr(Gr(e),me)).reverse().filter(i=>i.op==="assurance:gate:verdict").map(i=>i.context?.assurance_verdict).filter(i=>typeof i=="object"&&i!==null&&"gate_id"in i).filter(i=>t.gate_id===void 0||i.gate_id===t.gate_id).slice(0,n)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7470da18-4b85-5090-8ede-7de708b1f4ff")}catch{}})();var Bn=["software-delivery","research","agent-evaluation","operations"];function Nd(e,t,n,r,i){return{id:e,measurement_id:t,owner_item_id:n,scope:{kind:"active"},ceiling:r,lifetime:"hold",enforcement:i,negative_control:{cases:[{observed:r,expected:"pass"},{observed:r+1,expected:"fail"}]}}}function li(e,t,n,r,i){let o=`preset-${e}`,s=i.map(c=>({id:`${o}-missing-${c}`,description:`Active items missing ${c} evidence.`,source:{kind:"links",link:c,state:"missing"}})),a=s.map(c=>Nd(`${c.id}-zero`,c.id,r,0,"warn"));return{id:e,title:t,description:n,declarations:{measurements:s,assertions:a,gates:[{id:`${o}-readiness`,description:n,assertion_ids:a.map(c=>c.id),triggers:["ci","scheduled"]}]}}}function di(e,t){return e==="software-delivery"?li(e,"Software delivery","Warn when active delivery work lacks executable tests or documentation.",t,["tests","docs"]):e==="research"?li(e,"Research","Warn when active research work lacks reproducibility files or documentation.",t,["files","docs"]):e==="agent-evaluation"?li(e,"Agent evaluation","Warn when active evaluation work lacks executable scenarios or recorded artifacts.",t,["tests","files"]):li(e,"Operations","Warn when active operational work lacks runbook documentation or repair evidence.",t,["docs","files"])}function Ld(e,t,n,r={}){return Zo(e,di(t,n).declarations,r)}async function Md(e,t){let n=new Set(e.terminal_statuses??["closed","canceled"]),r={...e,items:e.items.filter(o=>!n.has(o.status))};return await Promise.all(["files","tests","docs"].map(async o=>{let s={id:`derived-active-missing-${o}`,description:`Observed active items missing ${o} evidence.`,source:{kind:"links",link:o,state:"missing"}},c=(await Yo(s,r)).value,l=Nd(`${s.id}-ceiling`,s.id,t,c,"observe"),d=`active-missing-${o}`;return{id:d,population_size:r.items.length,scope:{kind:"active"},observed:c,declarations:{measurements:[s],assertions:[l],gates:[{id:`derived-${d}`,description:`Observe the accepted ${o} evidence baseline.`,assertion_ids:[l.id],triggers:["ci","scheduled"]}]}}}))}function Fd(e,t,n={}){return Zo(e,{measurements:t.flatMap(r=>r.declarations.measurements),assertions:t.flatMap(r=>r.declarations.assertions),gates:t.flatMap(r=>r.declarations.gates)},n)}async function jd(e,t,n,r={}){let i=t.enforcement==="observe"?"warn":"block";if(t.enforcement==="block"||n!==i)throw new TypeError(`assurance assertion ${t.id} promotion must be ${t.enforcement} -> ${i}`);return ci(e,"assertion",{...t,enforcement:n},{...r,message:r.message??`Promote assurance assertion ${t.id} from ${t.enforcement} to ${n}`})}import Hd from"node:fs/promises";import{createRequire as cg}from"node:module";import xe from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a0014621-9e3d-5620-8f36-081811054843")}catch{}})();function Ud(e,t){let n=xe.relative(t,e);if(n.length>0&&n!==".."&&!n.startsWith(`..${xe.sep}`)&&!xe.isAbsolute(n))return n.split(xe.sep).join("/");let r=xe.resolve(e),i=0xcbf29ce484222325n;for(let s=0;s<r.length;s+=1)i^=BigInt(r.charCodeAt(s)),i=BigInt.asUintN(64,i*0x100000001b3n);return`<external>/${i.toString(16).padStart(16,"0")}/${xe.basename(xe.dirname(e))}/package.json`}function lg(e){return e.includes(`${xe.sep}.pnpm${xe.sep}`)?"pnpm":e.includes(`${xe.sep}node_modules${xe.sep}`)?"npm":"other"}async function zd(e){try{let t=JSON.parse(await Hd.readFile(e,"utf8"));return t.name==="@unbrained/pm-cli"&&typeof t.version=="string"&&t.version.trim().length>0?t.version.trim():void 0}catch{return}}async function Qo(e){try{return await Hd.realpath(e)}catch{return xe.resolve(e)}}async function Wd(e,t,n=Ce(import.meta.url,["../../.."])){let r=await Qo(t),i=await Qo(xe.join(n,"package.json")),o=await zd(i),s=new Map;o!==void 0&&s.set(i,{version:o,path:Ud(i,r),layout:"host",consumers:["pm-cli-host"]});for(let l of e)try{let d=cg(l.entry_path).resolve("@unbrained/pm-cli/package.json"),u=await Qo(d),m=await zd(u);if(m===void 0)continue;let f=u,p=s.get(f);if(p){p.consumers.includes(l.name)||(p.consumers.push(l.name),p.consumers.sort((h,_)=>h.localeCompare(_)));continue}s.set(f,{version:m,path:Ud(u,r),layout:lg(u),consumers:[l.name]})}catch{}let a=[...s.values()].sort((l,d)=>l.path.localeCompare(d.path)),c=o===void 0?[]:a.filter(l=>l.version!==o);return{host_version:o??null,copies:a,mismatches:c,warnings:c.map(l=>`extension_host_pm_cli_version_skew:${o}:${l.version}:${l.consumers.join("+")}`)}}import{createHash as tu}from"node:crypto";import Gn from"node:fs/promises";import Jn from"node:path";import{Option as dC}from"commander";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7ffd5046-9154-52e7-94ce-192b07b8ceae")}catch{}})();function dg(e,t){let n=[],r=new Set;for(let i of t.keys){if(!Object.hasOwn(e,i))continue;let o=e[i];if(o!=null){if(typeof o=="string"){n.push(o);continue}if(!Array.isArray(o)||!o.every(s=>typeof s=="string"))return;r.has(o)||(r.add(o),n.push(...o))}}return n.length>0?n.join("; "):void 0}function ui(e,t){return e.find(r=>r.target===t)??{target:t,keys:[t]}}function F(e,t){return e[t]===!0?!0:void 0}function at(e,t){return e[t]===!1?!0:void 0}function qd(e,t){return t.some(n=>e[n]===!0)?!0:void 0}function Bd(e,t){for(let[n,r]of Object.entries(t))n==="__proto__"||n==="constructor"||n==="prototype"||Object.hasOwn(e,n)||(e[n]=r)}function Gd(e){let t=i=>Eo(e,ui(Mr,i)),n=i=>$c(e,ui(Do,i)),r={title:t("title"),description:t("description"),body:t("body"),status:t("status"),closeReason:t("closeReason"),priority:t("priority"),type:t("type"),tags:t("tags"),addTags:n("addTags"),removeTags:n("removeTags"),deadline:t("deadline"),estimatedMinutes:t("estimatedMinutes"),acceptanceCriteria:dg(e,ui(Do,"acceptanceCriteria")),addAc:n("addAc"),removeAc:n("removeAc"),definitionOfReady:t("definitionOfReady"),order:t("order"),rank:t("rank"),goal:t("goal"),objective:t("objective"),value:t("value"),impact:t("impact"),outcome:t("outcome"),whyNow:t("whyNow"),author:t("author"),message:t("message"),force:!!e.force,ownershipMetadataBypass:e.ownershipMetadataBypass===!0?!0:void 0,ownershipDependencyBypass:e.ownershipDependencyBypass===!0?!0:void 0,assignee:t("assignee"),parent:t("parent"),allowUnresolvedDeps:qd(e,["allowUnresolvedDeps","allow_unresolved_deps"])===!0,reviewer:t("reviewer"),risk:t("risk"),confidence:t("confidence"),sprint:t("sprint"),release:t("release"),blockedBy:t("blockedBy"),blockedReason:t("blockedReason"),unblockNote:t("unblockNote"),reporter:t("reporter"),severity:t("severity"),environment:t("environment"),reproSteps:t("reproSteps"),resolution:t("resolution"),expectedResult:t("expectedResult"),actualResult:t("actualResult"),affectedVersion:t("affectedVersion"),fixedVersion:t("fixedVersion"),component:t("component"),regression:e.regression===!0?"true":t("regression"),customerImpact:t("customerImpact"),dep:n("dep"),depRemove:n("depRemove"),replaceDeps:F(e,"replaceDeps"),replaceTests:F(e,"replaceTests"),replaceFiles:F(e,"replaceFiles"),replaceDocs:F(e,"replaceDocs"),comment:n("comment"),note:n("note"),learning:n("learning"),file:n("file"),test:n("test"),doc:n("doc"),reminder:n("reminder"),event:n("event"),typeOption:n("typeOption"),field:n("field"),unset:n("unset"),clearDeps:F(e,"clearDeps"),clearComments:F(e,"clearComments"),clearNotes:F(e,"clearNotes"),clearLearnings:F(e,"clearLearnings"),clearFiles:F(e,"clearFiles"),clearTests:F(e,"clearTests"),clearDocs:F(e,"clearDocs"),clearReminders:F(e,"clearReminders"),clearEvents:F(e,"clearEvents"),clearTypeOptions:F(e,"clearTypeOptions")};return Bd(r,e),r}function te(e,t){let n=ui(Tc,t),r=Eo(e,n);if(r!==void 0)return r;for(let i of n.keys){let o=e[i];if(Array.isArray(o)){let s=o.filter(a=>typeof a=="string");if(s.length>0)return s.join(",")}if(t==="ids"&&typeof o=="string")return o;if(typeof o=="number"&&Number.isFinite(o))return String(o)}}function ug(e){let t=F(e,"filterFilesMissing"),n=F(e,"filterDocsMissing");return{filterReviewerMissing:F(e,"filterReviewerMissing"),filterRiskMissing:F(e,"filterRiskMissing"),filterConfidenceMissing:F(e,"filterConfidenceMissing"),filterSprintMissing:F(e,"filterSprintMissing"),filterReleaseMissing:F(e,"filterReleaseMissing"),hasNotes:F(e,"hasNotes"),hasLearnings:F(e,"hasLearnings"),hasFiles:F(e,"hasFiles"),hasDocs:F(e,"hasDocs"),hasTests:F(e,"hasTests"),hasComments:F(e,"hasComments"),hasDeps:F(e,"hasDeps"),hasBody:F(e,"hasBody"),hasLinkedCommand:F(e,"hasLinkedCommand"),noNotes:at(e,"notes"),noLearnings:at(e,"learnings"),noFiles:at(e,"files")??t,filterFilesMissing:t,noDocs:at(e,"docs")??n,filterDocsMissing:n,noTests:at(e,"tests"),noComments:at(e,"comments"),noDeps:at(e,"deps"),emptyBody:F(e,"emptyBody"),noLinkedCommand:at(e,"linkedCommand")}}function Jd(e){let t={status:te(e,"status"),type:te(e,"type"),tag:te(e,"tag"),priority:te(e,"priority"),deadlineBefore:te(e,"deadlineBefore"),deadlineAfter:te(e,"deadlineAfter"),updatedAfter:te(e,"updatedAfter"),updatedBefore:te(e,"updatedBefore"),createdAfter:te(e,"createdAfter"),createdBefore:te(e,"createdBefore"),today:F(e,"today"),recent:F(e,"recent"),ids:te(e,"ids"),assignee:te(e,"assignee"),assigneeFilter:te(e,"assigneeFilter"),parent:te(e,"parent"),sprint:te(e,"sprint"),release:te(e,"release"),limit:te(e,"limit"),offset:te(e,"offset"),noTruncate:at(e,"truncate"),includeBody:F(e,"includeBody"),strictRead:F(e,"strictRead"),compact:F(e,"compact"),brief:F(e,"brief"),full:F(e,"full"),fields:te(e,"fields"),sort:te(e,"sort"),order:te(e,"order"),tree:F(e,"tree"),treeDepth:te(e,"treeDepth"),filterAcMissing:F(e,"filterAcMissing"),filterEstimatesMissing:qd(e,["filterEstimatesMissing","filterEstimateMissing"]),filterResolutionMissing:F(e,"filterResolutionMissing"),filterMetadataMissing:F(e,"filterMetadataMissing"),...ug(e)};return Bd(t,e),t}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="be65ac07-90aa-5833-ae37-173b6db7006b")}catch{}})();var mg=Symbol("pm.mcp-mutation-transport"),fg=new Set(["activity","aggregate","context","contracts","deps","files-discover","files-lookup","get","graph","health","history","list","next","search","stats","telemetry","validate"]);function ts(e){return mg in e}function fi(e,t){return ts(e)?Vl(t):Fo(e,t)}function kC(e,t,n=[]){let r=Fo(e,{...e,...t});for(let i of n)Reflect.deleteProperty(r,i);return r}function T(e,t){let n=e[t];return typeof n=="string"&&n.trim().length>0?n:void 0}function ie(e,t){let n=e[t];return typeof n=="string"?n.trim().length>0?n:void 0:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function SC(e,t){let n=e[t];return typeof n=="string"?n:typeof n=="number"&&Number.isFinite(n)?String(n):void 0}function hn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function rs(e,t){if(typeof e=="number"){if(!Number.isInteger(e))throw new y(`${t} must be a finite integer.`,g.USAGE);return e}if(typeof e=="string"&&e.trim().length>0){let n=Number(e);if(!Number.isInteger(n))throw new y(`${t} must be a finite integer.`,g.USAGE);return n}}function EC(e,t){return typeof e.limit=="number"&&Number.isFinite(e.limit)?e.limit:typeof t.limit=="number"&&Number.isFinite(t.limit)?t.limit:T(e,"limit")??T(t,"limit")}function xC(e){let t=T(e,"outputFormat");return{json:!0,quiet:!0,author:T(e,"author"),path:T(e,"path"),noExtensions:e.noExtensions===!0||e.no_extensions===!0,noPager:!0,outputInclude:T(e,"outputInclude"),outputLimit:ie(e,"outputLimit"),outputBudget:ie(e,"outputBudget"),outputSession:T(e,"outputSession"),outputCursor:T(e,"outputCursor"),outputFormat:t==="json"||t==="toon"?t:void 0}}var pg=new Set(["tags","blockedBy","blocked_by","skills","fields"]),Kd=new Set(["comment","note","learning","reminder","event","dep","depRemove","dep_remove","file","doc","test","unset","addGlob","add_glob","migrate","envSet","env_set","envClear","env_clear"]),hg=new Set([...Kd].filter(e=>e!=="file")),_g=new Set(["files","files-discover","docs","test","test-all"]),Yd=new Set(["comments","notes","learnings"]);function gg(e,t){if(!(!Yd.has(e)||!Object.prototype.hasOwnProperty.call(t,"file")))throw new y(`MCP ${e} does not accept options.file. Pass annotation text in options.add instead.`,g.USAGE,{code:"mcp_annotation_file_unavailable",required:"Pass annotation text as JSON data; MCP annotation actions cannot read server-local files."})}var yg=new Set(["claim","release","start-task","pause-task","close-task"]),wg={list:["status","type","tag","priority","limit","offset"],search:["mode","status","type","tag","priority","limit"],create:["title","type","status","description","body","priority","tags","parent","createMode","create_mode","allowMissingParent","allowDuplicate"],update:["parent","allowMissingParent","completedAt"],copy:["allowDuplicate"],close:["duplicateOf","completedAt","releaseAssignment"],claim:["start","next","ifAvailable"],release:["pause"],comments:["ifAbsent"],notes:["ifAbsent"],learnings:["ifAbsent"],extension:["dryRun"],package:["dryRun"],install:["dryRun"],upgrade:["scope","dryRun","cliOnly","packagesOnly","repair","tag","packageName"],append:["body"]},vg=["outputInclude","outputLimit","outputBudget","outputFormat","outputSession","outputCursor"];function Xd(e,t=""){let n={},r=_g.has(t),i=t==="files"||t==="files-discover"||t==="docs",o=Yd.has(t)?hg:Kd;for(let[s,a]of Object.entries(e)){if(Array.isArray(a)&&pg.has(s)){n[s]=a.join(",");continue}if(s==="note"&&i){n[s]=a;continue}if(typeof a=="string"&&o.has(s)){n[s]=[a];continue}if(typeof a=="string"&&r&&(s==="add"||s==="remove")){n[s]=[a];continue}n[s]=a}return n}function bg(e,t,n){let r=T(e,"author");return r!==void 0?r:n!==void 0&&yg.has(n)?T(e,"assignee")??T(t,"assignee"):void 0}function kg(e,t){return t!==void 0&&e.author===void 0?{...e,author:t}:e}function RC(e,t){let n=hn(e.options)?e.options:void 0,r=Sc(e.options),i={},o=c=>{r[c]!==void 0||e[c]===void 0||(i[c]=e[c])};for(let c of wg[t??""]??[])o(c);for(let c of vg)o(c);t!==void 0&&ts(e)&&gg(t,r);let s=Xd({...i,...r},t),a=ts(e)?e:n??e;return fi(a,kg(s,bg(e,s,t)))}function IC(e){if(e.addNote===void 0)return e;let t={...e};return t.note===void 0&&typeof t.addNote=="string"&&(t.note=t.addNote),delete t.addNote,t}function AC(e){let t={...e};return t.discoveryNote!==void 0&&t.note===void 0&&typeof t.discoveryNote=="string"&&(t.note=t.discoveryNote),delete t.discover,delete t.discoveryNote,t}function Sg(e){let t=[],n=!0;for(let r of e.trim().toLowerCase()){if(r>="a"&&r<="z"||r>="0"&&r<="9"){t.push(r),n=!1;continue}n||(t.push("-"),n=!0)}return t.at(-1)==="-"&&t.pop(),t.join("")}function CC(e){return!fg.has(Sg(e))}function TC(e){return e.trim().toLowerCase().split(/\s+/).filter(Boolean).join(" ")}function is(e){return Array.isArray(e)?e.map(t=>String(t)).filter(t=>t.length>0):[]}function $C(e,t){let n=new Set(["action","args","author","cwd","fullChangedFields","id","options","path","query","reason","target"]),r={};for(let[o,s]of Object.entries(e))n.has(o)||(r[o]=s);let i={...r,...t};return delete i.args,i}function OC(e,t){let n=fi(t??{},{...t});return{changedFields:e.fullChangedFields===!0?"full":"compact",idOnly:e.idOnly===!0,runnerOptions:n}}function ns(e){return{type:ie(e,"filterType"),tag:ie(e,"filterTag"),priority:ie(e,"filterPriority"),deadlineBefore:ie(e,"filterDeadlineBefore"),deadlineAfter:ie(e,"filterDeadlineAfter"),updatedAfter:ie(e,"filterUpdatedAfter"),updatedBefore:ie(e,"filterUpdatedBefore"),createdAfter:ie(e,"filterCreatedAfter"),createdBefore:ie(e,"filterCreatedBefore"),ids:jo(e.ids),assignee:ie(e,"filterAssignee"),assigneeFilter:ie(e,"filterAssigneeFilter")??ie(e,"filterAssignee_filter"),parent:ie(e,"filterParent"),sprint:ie(e,"filterSprint"),release:ie(e,"filterRelease"),limit:ie(e,"limit"),offset:ie(e,"offset")}}function es(e){if(typeof e=="string"&&e.trim().length>0)return e;if(Array.isArray(e))return is(e)}function mi(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="string"&&e.trim().length>0)return e}function DC(e){let t=es(e.kind),n=es(e.exemptIsolate),r=es(e.exemptIsolateType);return{...t===void 0?{}:{kind:t},maxDepth:mi(e.maxDepth),limit:mi(e.limit),after:T(e,"after"),direction:T(e,"direction"),maxPaths:mi(e.maxPaths),sample:mi(e.sample),...n===void 0?{}:{exemptIsolate:n},...r===void 0?{}:{exemptIsolateType:r},saveBaseline:e.saveBaseline===!0,rebuild:e.rebuild===!0,clear:e.clear===!0,summary:e.summary===!0,...e.full===!0?{full:!0}:{}}}function Zd(e){let t=Jd(e);return e.ids!==void 0&&(t.ids=jo(e.ids)),t}function PC(e){return{status:T(e,"filterStatus"),list:hn(e.list)?Zd(e.list):ns(e),reason:T(e,"reason"),resolution:T(e,"resolution"),expectedResult:T(e,"expectedResult")??T(e,"expected_result")??T(e,"expected"),actualResult:T(e,"actualResult")??T(e,"actual_result")??T(e,"actual"),validateClose:T(e,"validateClose")??T(e,"validate_close"),author:T(e,"author"),message:T(e,"message"),force:e.force===!0?!0:void 0,dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:T(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}var Eg=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","ids","list","update","limit","offset","dryRun","dry_run","rollback","checkpoint","noCheckpoint","no_checkpoint"]);function Vd(e){let t={};for(let[n,r]of Object.entries(e))Eg.has(n)||(t[n]=r);return Qd(t)}function Qd(e){let t=Xd(e,"update-many");for(let n of Mr)for(let r of n.keys){let i=t[r];typeof i=="number"&&Number.isFinite(i)&&(t[r]=String(i))}return Gd(t)}function NC(e){if(hn(e.list)||hn(e.update)){let t=hn(e.update)?e.update:Vd(e),n=fi(e,Qd(t));return{status:ie(e,"filterStatus"),list:hn(e.list)?Zd(e.list):ns(e),update:Kl(t,n),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:T(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}return{status:ie(e,"filterStatus"),list:ns(e),update:fi(e,Vd(e)),dryRun:e.dryRun===!0||e.dry_run===!0?!0:void 0,rollback:T(e,"rollback"),checkpoint:e.checkpoint===!1||e.noCheckpoint===!0||e.no_checkpoint===!0?!1:void 0}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fd8c4c35-98bb-5f3b-927d-8696125af703")}catch{}})();function Pe(e,t){throw new y(e,g.USAGE,t)}var xg="2026-07-15T06:22:12.276Z",Rg=Date.parse(xg),Ig=[["attributed","attributed"],["legacy_unknown","actionable_unknown"]],eu=e=>typeof e=="string"?e:"",nu=e=>{let t=e??{},n=eu(t.author).trim().toLowerCase(),r=Number(["","unknown"].includes(n)),i=+(Date.parse(eu(t.ts))>=Rg);return Ig[r][i]};function ru(e,t,n=20,r=new Set,i=!1){let o=[],s=[],a={legacy_unknown:0,actionable_unknown:0},c=Math.max(0,n),l=0,d=0,u=0;for(let[m,f]of t.split(/\r?\n/).entries()){let p;try{p=JSON.parse(f)}catch{continue}l+=1;let h=nu(p);if(h!=="attributed"){if(d+=1,h==="actionable_unknown"&&r.has(`${e}:${m+1}`)){u+=1;continue}a[h]+=1,i&&h==="actionable_unknown"&&s.push({item_id:e,line:m+1}),o.length<c&&o.push({item_id:e,line:m+1})}}return{checked_events:l,unknown_event_count:d,legacy_unknown_event_count:a.legacy_unknown,actionable_unknown_event_count:a.actionable_unknown,acknowledged_actionable_event_count:u,samples:o,samples_truncated:a.legacy_unknown+a.actionable_unknown>o.length,actionable_events:s}}var BC=(e,t,n=20,r=new Set)=>ru(e,t,n,r);function iu(e){let t=new Set;for(let n of e.split(/\r?\n/)){let r;try{r=JSON.parse(n)}catch{continue}let o=(typeof r=="object"&&r!==null&&typeof r.context=="object"&&r.context!==null?r.context:{}).author_acknowledgment;if(!(typeof o!="object"||o===null||!Array.isArray(o.events)))for(let s of o.events)typeof s=="object"&&s!==null&&typeof s.item_id=="string"&&Number.isSafeInteger(s.line)&&t.add(`${s.item_id}:${String(s.line)}`)}return t}var Vn=async(e,t=20,n=!1)=>{let r=Jn.join(e,"history"),i;try{i=(await Gn.readdir(r)).filter(w=>w.endsWith(".jsonl")).sort((w,v)=>w.localeCompare(v))}catch{i=[]}let o=new Set,s=[],a=[],c=0,l=0,d=0,u=0,m=0,f=0,p="_workspace.jsonl",h=new Set;if(i.includes(p))try{h=iu(await Gn.readFile(Jn.join(r,p),"utf8"))}catch{h=new Set}for(let w of i){let v;try{v=await Gn.readFile(Jn.join(r,w),"utf8")}catch{continue}let k=w.slice(0,-6),S=ru(k,v,t-s.length,h,n);c+=1,l+=S.checked_events,d+=S.unknown_event_count,u+=S.legacy_unknown_event_count,m+=S.actionable_unknown_event_count,f+=S.acknowledged_actionable_event_count,S.unknown_event_count>0&&o.add(k),s.push(...S.samples),n&&a.push(...S.actionable_events)}let _=u+m;return{checked_streams:c,checked_events:l,unknown_event_count:d,legacy_unknown_event_count:u,actionable_unknown_event_count:m,acknowledged_actionable_event_count:f,affected_item_ids:[...o].sort((w,v)=>w.localeCompare(v)),samples:s,samples_truncated:_>s.length,...n?{actionable_events:a}:{}}};function Ag(e){return[...new Map(e.map(t=>[`${t.item_id}:${t.line}`,{item_id:t.item_id,line:t.line}])).values()].sort((t,n)=>t.item_id.localeCompare(n.item_id)||t.line-n.line)}async function Cg(e){try{return iu(await Gn.readFile(Jn.join(e,"history","_workspace.jsonl"),"utf8"))}catch{return new Set}}function Tg(e){return(e.item_id===me||/^[a-z0-9][a-z0-9-]*$/iu.test(e.item_id))&&Number.isSafeInteger(e.line)&&e.line>=1}function $g(e,t,n){let r=n[e.line-1]??"",i;try{i=JSON.parse(r)}catch{Pe(`Unknown-author acknowledgment target ${e.item_id}:${e.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}return nu(i)!=="actionable_unknown"&&Pe(`Author acknowledgment target ${e.item_id}:${e.line} is not an actionable unknown-author event.`,{code:"history_author_acknowledge_target_not_actionable"}),{...e,source_event_hash:tu("sha256").update(r).digest("hex"),disposition:t.has(`${e.item_id}:${e.line}`)?"already_acknowledged":"actionable"}}async function ou(e,t,n){let r=t.events??[],i=+(t.all_actionable===!0)+ +(r.length>0);i===0&&Pe("Specify exactly one selector: events or all_actionable.",{code:"history_author_acknowledge_selector_required"}),i>1&&Pe("Author acknowledgment accepts either explicit events or all_actionable, not both.",{code:"history_author_acknowledge_selector_conflict"}),(!Number.isSafeInteger(n)||n<0)&&Pe("Author acknowledgment coordinate_limit must be a non-negative integer.",{code:"history_author_acknowledge_preview_limit_invalid"});let o=Ag(t.all_actionable===!0?(await Vn(e,0,!0)).actionable_events:r),s=await Cg(e),a=new Map;for(let m of o)if(Tg(m)||Pe(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"}),!a.has(m.item_id))try{a.set(m.item_id,(await Gn.readFile(Jn.join(e,"history",`${m.item_id}.jsonl`),"utf8")).split(/\r?\n/u))}catch{Pe(`Unknown-author acknowledgment target ${m.item_id}:${m.line} is not readable.`,{code:"history_author_acknowledge_target_unreadable"})}let c=o.map(m=>$g(m,s,a.get(m.item_id))),l=t.all_actionable===!0?"all_actionable":"events",d=tu("sha256").update(JSON.stringify({version:1,selection:l,coordinates:c})).digest("hex"),u=c.filter(({disposition:m})=>m==="actionable").length;return{plan:{selection:{kind:l},selected_count:c.length,actionable_count:u,already_acknowledged_count:c.length-u,omitted_count:Math.max(0,c.length-n),coordinates:c.slice(0,n),plan_fingerprint:d},completeCoordinates:c}}async function GC(e,t,n=50){return(await ou(e,t,n)).plan}function Og(e,t){let n=e.length>0;return n&&t&&Pe("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_conflict",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),!n&&!t&&Pe("Specify exactly one selector: repeat --event or pass --all-actionable.",{code:"history_author_acknowledge_selector_required",required:"Exactly one of --event or --all-actionable",examples:['pm history-author-acknowledge --event pm-a1b2:4 --attributed-author agent --reviewer maintainer --reason "Verified provenance"','pm history-author-acknowledge --all-actionable --attributed-author import-agent --reviewer maintainer --reason "Reviewed the complete actionable set"']}),{events:Dg(e),all_actionable:t}}function Dg(e){return e.map(t=>{let n=t.lastIndexOf(":"),r=t.slice(0,n).trim(),i=Number(t.slice(n+1)),o=r===me||/^[a-z0-9][a-z0-9-]*$/iu.test(r);return(n<1||!o||!Number.isSafeInteger(i)||i<1)&&Pe(`history-author-acknowledge --event expects <item-id>:<one-based-line>, received "${t}".`,{code:"history_author_acknowledge_target_unreadable"}),{item_id:r,line:i}})}function JC(e,t){let n=Og(is(t.historyEvent),t.allActionable===!0||t.all_actionable===!0);return Pg(e,{events:n.events,all_actionable:n.all_actionable,dry_run:t.dryRun===!0||t.dry_run===!0,plan_fingerprint:T(t,"planFingerprint")??T(t,"plan_fingerprint"),coordinate_limit:typeof t.limit=="number"?t.limit:typeof t.limit=="string"?Number(t.limit):void 0,attributed_author:T(t,"attributedAuthor")??T(t,"attributed_author")??void 0,reviewer:T(t,"reviewer"),reason:T(t,"reason")})}async function Pg(e,t){let n=t.reviewer?.trim()??"",r=t.attributed_author?.trim()??"",i=t.reason?.trim()??"",o=await ou(e,t,t.coordinate_limit??50);if(t.dry_run===!0)return{dry_run:!0,mutated:!1,acknowledged:0,outcome:"preview",exit_code:g.SUCCESS,plan:o.plan};if([n.length>0,n.toLowerCase()!=="unknown",r.length>0,r.toLowerCase()!=="unknown",i.length>0].includes(!1)&&Pe("Author acknowledgment requires events, reviewer, attributed_author, and reason.",{code:"history_author_acknowledge_required_values_missing"}),t.plan_fingerprint?.trim()||Pe("Author acknowledgment apply requires plan_fingerprint from a fresh dry-run preview.",{code:"history_author_acknowledge_plan_fingerprint_required",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run, then pass --plan-fingerprint <value>."}}),t.plan_fingerprint.trim()!==o.plan.plan_fingerprint)throw new y("Author acknowledgment selection changed after preview; no history was mutated.",g.CONFLICT,{code:"history_author_acknowledge_plan_conflict",recovery:{suggested_retry:"Rerun history-author-acknowledge with --dry-run and apply the fresh plan_fingerprint."}});let a=o.completeCoordinates.filter(({disposition:u})=>o.plan.selection.kind==="events"||u==="actionable").map(({item_id:u,line:m})=>({item_id:u,line:m}));if(a.length===0)return{dry_run:!1,mutated:!1,acknowledged:0,outcome:"no_effect",exit_code:g.NO_EFFECT,plan:o.plan};let c=await C(e),l=await Jr({pmRoot:e,op:"history:author-acknowledge",author:n,context:{author_acknowledgment:{events:a,attributed_author:r}},message:i,lockTtlSeconds:c.locks.ttl_seconds,lockWaitMs:c.locks.wait_ms}),d=o.plan.actionable_count>0&&o.plan.already_acknowledged_count>0?{outcome:"partial_effect",exit_code:g.PARTIAL_EFFECT}:{outcome:"effect",exit_code:g.SUCCESS};return{dry_run:!1,mutated:!0,acknowledged:a.length,...d,plan:o.plan,history_path:l.historyPath}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0daf7c89-abc5-5c35-ba3f-9772a50408c0")}catch{}})();var Kn={type:"string",minLength:1,maxLength:128,pattern:"\\S"},pi={type:"array",minItems:1,maxItems:To,items:Kn},su={...pi,items:{...Kn,pattern:"^(?!(?:.*\\.)?(?:__proto__|constructor|prototype)(?:\\.|$))[a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*){0,7}$"}},Ng={type:"object",additionalProperties:!1,required:["id","rule"],properties:{id:{type:"string",minLength:1,maxLength:128,pattern:"^[a-zA-Z0-9][a-zA-Z0-9._-]*$"},description:{type:"string",minLength:1,maxLength:500,pattern:"\\S"},effect:{enum:["advise","warn","refuse"]},subject:{type:"object",additionalProperties:!1,properties:{...Object.fromEntries(["types","tags","statuses","operations","parents"].map(e=>[e,pi])),dependency:{type:"object",additionalProperties:!1,required:["kind"],properties:{kind:Kn,id:Kn}}}},rule:{oneOf:[{type:"object",additionalProperties:!1,required:["kind","fields"],properties:{kind:{const:"require_fields"},fields:su}},{type:"object",additionalProperties:!1,required:["kind","authors"],properties:{kind:{const:"authors"},authors:pi}},...["field_writers","approval"].map(e=>({type:"object",additionalProperties:!1,required:["kind","fields","authors"],properties:{kind:{const:e},fields:su,authors:pi}})),{type:"object",additionalProperties:!1,required:["kind","allowed"],properties:{kind:{const:"transition"},allowed:{type:"array",maxItems:To,items:{type:"array",minItems:2,maxItems:2,items:Kn}}}}]}}},YC={$schema:"https://json-schema.org/draft/2020-12/schema",title:"pm workflow policy registry",type:"object",additionalProperties:!1,required:["version","policies"],properties:{version:{const:1},enforcement:{enum:["advise","refuse"],default:"advise"},policies:{type:"array",maxItems:Jc,items:Ng}}};(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]="e94b776a-9886-57bc-ba87-06f4a30de578")}catch{}})();async function au(e,t,n,r){let i=await bt(e).catch(()=>null);return i===null?{check:{name:"completeness",status:"error",ok:!1,details:{policy_registry_readable:!1,policy_registry_path:"schema/policies.json",remediation_hint:"Repair schema/policies.json, then rerun pm validate."}},warnings:["validate_completeness_policy_registry_unreadable"]}:cu(i,t,n,r)}function cu(e,t,n=5,r=!1){let i=[],o=new Map,s=0,a=0,c=0,l=Xc(e);for(let u of t){let f=l({operation:"",author:"",before:u,after:u,completeness_only:!0}).decisions.filter(h=>!h.satisfied);if(f.length===0)continue;a+=1;let p=o.get(u.type)??{items:0,violations:0,missing_fields:0};p.items+=1;for(let h of f)s+=1,p.violations+=1,p.missing_fields+=h.missing_fields.length,h.effect==="refuse"&&(c+=1),i.length<n&&i.push({id:u.id,type:u.type,status:u.status,decision:h});o.set(u.type,p)}let d=r||c>0?"error":s>0?"warn":"ok";return{check:{name:"completeness",status:d,ok:d==="ok",details:{scope:"operation_independent_require_fields",checked_items:t.length,incomplete_items:a,violation_count:s,refused_violations:c,missing_by_type:Object.fromEntries(o),violations:i,violations_truncated:i.length<s,enforcement:e.enforcement}},warnings:[...s>0?[`validate_completeness_missing_fields:${s}`]:[],...r?["validate_completeness_source_incomplete"]:[]]}}import Lg 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]="e60a4620-c210-5d5e-baf4-d96467406cf4")}catch{}})();function Mg(){return{version:1,enforcement:"advise",policies:[...[["Epic",["goal","objective","body"]],["Story",["description","value","acceptance_criteria"]],["Decision",["body","resolution"]],["Feature",["acceptance_criteria","expected_result"]],["Task",["description"]],["Issue",["repro_steps","expected_result"]],["Chore",["description"]]].map(([t,n])=>({id:`completeness-${t.toLowerCase()}`,effect:"advise",description:`Evidence expected when ${t} work reaches completion.`,subject:{types:[t],statuses:["closed"]},rule:{kind:"require_fields",fields:[...n]}})),{id:"completeness-resolution",effect:"advise",subject:{statuses:["closed"]},rule:{kind:"require_fields",fields:["resolution","expected_result","actual_result"]}}]}}function du(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{throw new y("Policy definition must be valid JSON.",g.USAGE)}if(typeof t!="object"||t===null||Array.isArray(t))throw new y("Policy definition must be an object.",g.USAGE);return t}async function Fg(e,t){let n=M(process.cwd(),e.path);await Q(n);let r=await C(n);return{pmRoot:n,settings:r,author:B(t,r.author_default)}}function lu(e,t,n,r){if(e==="policy-mode")return $o({...n,enforcement:t});let i=n.policies.filter(a=>a.id!==t);if(e==="policy-remove")return{...n,policies:i};let o=Vc(du(r.definition));if(o.id!==t)throw new y("Policy definition id must match its operand.",g.USAGE);let s=$o({...n,policies:[...i,o].sort((a,c)=>a.id.localeCompare(c.id))});if(Buffer.byteLength(`${JSON.stringify(s,null,2)}
|
|
5
5
|
`)>$l)throw new y("Policy registry exceeds its byte ceiling.",g.USAGE);return s}async function jg(e,t,n,r){if(n.dryRun)return{policy_result:!0,action:e,changed:!1,result:lu(e,t,await bt(r.pmRoot),n)};let i=await cn({pmRoot:r.pmRoot,filePath:Lg.join(r.pmRoot,"schema","policies.json"),op:`schema:${e}`,author:r.author,message:n.message,lockTtlSeconds:r.settings.locks.ttl_seconds,lockWaitMs:r.settings.locks.wait_ms,mutate(o){let s=lu(e,t,Ol(o),n);return{raw:`${JSON.stringify(s,null,2)}
|
|
6
6
|
`,result:s}}});return{policy_result:!0,action:e,changed:i.changed,result:i.result}}async function Ug(e,t,n){let r,i=await Ul({...n,id:e,op:"policy_approve",message:t.message,resolveHistoryContext:()=>({workflow_approval:r}),async mutate(o){let a=(await bt(n.pmRoot)).policies.find(c=>c.id===t.policy);if(!a||a.rule.kind!=="approval")throw new y("--policy must name an approval rule.",g.USAGE);if(!a.rule.authors.includes(n.author))throw new y("This actor is not a declared approver.",g.CONFLICT);return await Dl(n.pmRoot,o.metadata.id),r={policy_id:a.id,policy_fingerprint:Kc(a),content_fingerprint:Yc(a,{...o.metadata,body:o.body})},{changedFields:[]}}});return{policy_result:!0,action:"policy-approve",changed:!0,result:{id:i.item.id,...r,warnings:i.warnings}}}async function _T(e,t,n={},r={}){if(!Or.includes(e))throw new y("Unknown workflow policy action.",g.USAGE);if(e==="policy-presets")return{policy_result:!0,action:e,changed:!1,result:Mg()};let i=await Fg(r,n.author);if(e==="policies")return{policy_result:!0,action:e,changed:!1,result:await bt(i.pmRoot)};if(!t?.trim())throw new y(`schema ${e} requires an operand.`,g.USAGE);if(["policy-put","policy-remove","policy-mode"].includes(e))return jg(e,t,n,i);if(e==="policy-approve"){if(n.dryRun)throw new y("Use policy-check to preview; policy-approve records an approval.",g.USAGE);return Ug(t,n,i)}let o=q(i.settings,H()),s=await Oe(i.pmRoot,t,i.settings.id_prefix,i.settings.item_format,o.type_to_folder);if(!s)throw new y(`Item ${t} not found.`,g.NOT_FOUND);let{document:a}=await De(s,{schema:i.settings.schema}),c={...a.metadata,body:a.body},l=n.definition===void 0?c:{...c,...du(n.definition)};if(l.id!==c.id)throw new y("Policy preview cannot change the item id.",g.USAGE);return{policy_result:!0,action:e,changed:!1,result:await Pl(i.pmRoot,await bt(i.pmRoot),{operation:"update",author:i.author,before:c,after:l,completeness_only:n.definition===void 0})}}import os from"node:fs/promises";import ss 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]="ca035b42-148d-5a43-9912-4641a6207750")}catch{}})();var zg=8388608,Hg=new Set(["resolved","failed"]),Wg=[{kind:"boolean",matches:e=>typeof e=="boolean"||typeof e=="string"&&/^(?:true|false)$/iu.test(e.trim())},{kind:"single_digit",matches:e=>typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=9||typeof e=="string"&&/^\d$/u.test(e.trim())}];function Ke(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function as(e){return Wg.find(t=>t.matches(e))?.kind}function uu(e){let t=new Map,n=0,r=0;return{entries:e.map(o=>{let s=Ke(o.agent_provenance)?o.agent_provenance:void 0;if(s===void 0||!wl(o).ok)return o;let a={},c=!1;for(let[d,u]of Object.entries(s)){let m=Ke(u)?as(u.value):void 0;if(m===void 0){a[d]=u;continue}c=!0,r+=1;let f=o.agent_harness??"unknown",p=`${f}\0${d}\0${m}`,h=t.get(p)??{harness:f,dimension:d,kind:m,count:0};h.count+=1,t.set(p,h)}if(!c)return o;n+=1;let l={...o};return Object.keys(a).length===0?delete l.agent_provenance:l.agent_provenance=a,vl(o,l,{retainPriorRecord:!0,retainPriorRecordHash:!1})}),receipt:{changed:n>0,events_changed:n,observations_removed:r,invalid_values:[...t.values()].sort((o,s)=>o.harness.localeCompare(s.harness)||o.dimension.localeCompare(s.dimension)||o.kind.localeCompare(s.kind))}}}async function mu(e){let t=[];for(let n of await fu(e))try{let r=await os.readFile(ss.join(e,"history",n),"utf8");for(let i of r.split(`
|
|
7
7
|
`)){if(i.trim().length===0)continue;let o=pu(i);if(o===null||!Ke(o.agent_provenance))continue;if(Object.values(o.agent_provenance).some(a=>Ke(a)&&as(a.value)!==void 0)){t.push(n.slice(0,-6));break}}}catch{}return t}async function fu(e){try{return(await os.readdir(ss.join(e,"history"))).filter(t=>t.endsWith(".jsonl")).sort()}catch{return[]}}async function qg(e,t,n){let r;try{r=await os.open(ss.join(e,"history",t),"r");let i=(await r.stat()).size,o=Math.min(i,Math.max(0,n)),s=Buffer.alloc(o),{bytesRead:a}=await r.read(s,0,o,0),c=s.subarray(0,a).toString("utf8"),l=a>=i,d=c.lastIndexOf(`
|
|
@@ -55,4 +55,4 @@ ${o}`,g.GENERIC_FAILURE)}}async function NA(){return gc(import.meta.url,["../../
|
|
|
55
55
|
`);le(e.progressEnabled,"writing keyword artifacts"),await ae(t,`${JSON.stringify(e.manifest,null,2)}
|
|
56
56
|
`),await ae(n,`${i}
|
|
57
57
|
`);let o=[];if(e.mode!=="keyword")try{le(e.progressEnabled,"writing vectorization status ledger"),await ad(e.pmRoot,e.vectorizationLedgerEntries,e.vectorizationEmbeddingMetadata)}catch(s){o.push(`search_vectorization_status_ledger_write_failed:${s instanceof Error?s.message:String(s)}`)}return o}async function Yz(e,t){let n=a0(e.mode),r=s0(e),i=e.full===!0;le(r,`start mode=${n}`);let o=M(process.cwd(),t.path);await Q(o);let s=ei(await C(o)).settings,a=null;try{a=await ce(o,Xl,s.locks.ttl_seconds,B(void 0,"pm-reindex"),!1,s.governance.force_required_for_stale_lock,s.locks.wait_ms)}catch(c){throw c instanceof y&&c.exitCode===g.CONFLICT?new y("Another pm reindex run is already active for this project. Wait for it to finish before starting a new keyword, semantic, or hybrid reindex.",g.CONFLICT,{code:"reindex_already_running",type:"urn:pm-cli:error:reindex_already_running",why:"Semantic reindex can be expensive and duplicate runs compete for the same local embedding model and vector store.",nextSteps:["Check active pm reindex processes before starting another reindex.","Rerun with --progress when you need non-interactive visibility."]}):c}try{let c=d0(s),l=u0(s),d=g0({requestedMode:n,pmRoot:o,settings:s,extensionEmbedding:c,extensionVectorAdapter:l}),u=n;le(r,"loading item corpus");let m=await y0({pmRoot:o,settings:s}),f=m.warnings,{documentCandidates:p,metadataDocuments:h}=m;le(r,`loaded_items=${h.length}`);let _=A(),w=_0(u,_,h),v=br.join(o,rc),k=br.join(o,ic),S=u==="keyword"?await sc(o,p,s.schema,f):h,x=[],I={},E=null,b=h0(u);if(u==="keyword"&&await w0({pmRoot:o,settings:s,forceFullSemantic:i,extensionEmbedding:c,reindexWarnings:f}),u!=="keyword"){let U=await R0({pmRoot:o,settings:s,requestedMode:n,activeEmbeddingProvider:d.activeEmbeddingProvider,activeVectorStore:d.activeVectorStore,extensionEmbedding:c,extensionVectorAdapter:l,documentCandidates:p,metadataDocuments:h,documentsForKeywordArtifacts:S,forceFullSemantic:i,reindexWarnings:f,semanticWarnings:x,semanticSummary:b,progressEnabled:r});S=U.documentsForKeywordArtifacts,I=U.vectorizationLedgerEntries,E=U.vectorizationEmbeddingMetadata}let D=await I0({pmRoot:o,mode:u,manifest:w,documentsForKeywordArtifacts:S,settings:s,vectorizationLedgerEntries:I,vectorizationEmbeddingMetadata:E,progressEnabled:r}),z=[...await Z({path:v,scope:"project",op:"reindex:manifest"}),...await Z({path:k,scope:"project",op:"reindex:embeddings"}),...await Fr({mode:u,total_items:h.length})];return le(r,"done"),{ok:!0,mode:u,total_items:h.length,semantic:b,artifacts:{manifest:rc,embeddings:ic},warnings:[...f,...x,...D,...z],generated_at:_}}finally{await a?.()}}export{m$ as a,Xu as b,N as c,Ee as d,Ve as e,mn as f,yd as g,vd as h,Mt as i,qo as j,U_ as k,Jo as l,Vo as m,Ed as n,pn as o,Wn as p,Yo as q,og as r,Td as s,qn as t,Xo as u,ci as v,Zo as w,Od as x,Dd as y,Pd as z,Bn as A,di as B,Ld as C,Md as D,Fd as E,jd as F,Wd as G,kC as H,T as I,ie as J,SC as K,rs as L,EC as M,xC as N,Xd as O,RC as P,IC as Q,AC as R,Sg as S,CC as T,TC as U,is as V,$C as W,OC as X,ns as Y,DC as Z,PC as _,Qd as $,NC as aa,xg as ba,nu as ca,BC as da,Vn as ea,GC as fa,Og as ga,Dg as ha,JC as ia,Pg as ja,uy as ka,my as la,ct as ma,D$ as na,wy as oa,Ng as pa,YC as qa,cu as ra,Mg as sa,_T as ta,sw as ua,FO as va,UO as wa,zO as xa,Qn as ya,HO as za,WO as Aa,qO as Ba,BO as Ca,GO as Da,JO as Ea,VO as Fa,KO as Ga,YO as Ha,XO as Ia,ZO as Ja,hf as Ka,Vs as La,uu as Ma,mu as Na,hu as Oa,At as Pa,gL as Qa,yL as Ra,wL as Sa,vL as Ta,$L as Ua,ep as Va,da as Wa,XL as Xa,pt as Ya,ZL as Za,QL as _a,VS as $a,ZS as ab,pp as bb,Vg as cb,gu as db,pa as eb,qM as fb,BM as gb,_i as hb,gi as ib,jp as jb,UF as kb,Hp as lb,qp as mb,mh as nb,nj as ob,Vp as pb,ph as qb,Vj as rb,Kj as sb,TR as tb,$R as ub,Qj as vb,e1 as wb,t1 as xb,n1 as yb,DR as zb,PR as Ab,NR as Bb,r1 as Cb,gh as Db,MR as Eb,yh as Fb,Pa as Gb,vh as Hb,FR as Ib,jR as Jb,UR as Kb,Fa as Lb,ja as Mb,f1 as Nb,p1 as Ob,h1 as Pb,_I as Qb,gU as Rb,c_ as Sb,wr as Tb,u_ as Ub,m_ as Vb,f_ as Wb,Qa as Xb,xA as Yb,ZU as Zb,sz as _b,Cz as $b,Hz as ac,Wz as bc,qz as cc,Yz as dc};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-SL5YVVPV.js.map
|