@unbrained/pm-cli 2026.8.20 → 2026.8.22
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 +38 -0
- package/dist/cli/error-guidance.d.ts +29 -4
- package/dist/cli/error-guidance.js +43 -43
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.js +40 -7
- package/dist/cli-bundle/bundle-manifest.json +150 -150
- package/dist/cli-bundle/chunks/{chunk-L4LGPBJU.js → chunk-BWX4SK46.js} +58 -58
- package/dist/cli-bundle/chunks/chunk-EMWDM5FI.js +13 -0
- package/dist/cli-bundle/chunks/chunk-HYG6LRL4.js +200 -0
- package/dist/cli-bundle/chunks/{chunk-TSMWLCHS.js → chunk-MYYI3ZOA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4GB2LTOQ.js → chunk-MZTZQTMS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7BRF2BX2.js → chunk-QI2CT3IX.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-SMWXHMVB.js +35 -0
- package/dist/cli-bundle/chunks/{chunk-US2ZQW2M.js → chunk-U6GQ4VMV.js} +47 -47
- package/dist/cli-bundle/chunks/{chunk-K3EN3LK2.js → chunk-VMMIL3SI.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-WG4STC36.js +5 -0
- package/dist/cli-bundle/chunks/{chunk-XYDDWBZN.js → chunk-YBPJAOQQ.js} +3 -3
- package/dist/cli-bundle/chunks/{register-list-query-JSAQCVOC.js → register-list-query-HZKBQNWW.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-XJPAW63D.js → register-mutation-HTKEEGRD.js} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-DSOSB2XQ.js → register-operations-6EMRWJJY.js} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-QUR6QL2C.js → register-setup-QK4OTOXN.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-TDR5OGG3.js → chunk-2ARQGDDW.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-AZBACT5T.js → chunk-2AZT5WXZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-M32HFIQB.js → chunk-2POVTNLY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-3LKU6PTJ.js +4 -0
- package/dist/cli-bundle/focused-chunks/chunk-5SHSBMX2.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-UGSS4F5X.js → chunk-6S2MO3Q3.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-5L7M4AI7.js → chunk-A2BC5PQL.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-C4S4A4JJ.js +5 -0
- package/dist/cli-bundle/focused-chunks/{chunk-OM65KHGF.js → chunk-D6RBZEJJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-E2EWYPY6.js +16 -0
- package/dist/cli-bundle/focused-chunks/{chunk-G3C5ERXG.js → chunk-GMYPD4FX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-L5LDSRO2.js +155 -0
- package/dist/cli-bundle/focused-chunks/{chunk-BLJCGGID.js → chunk-MB37AYN6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-MCOR37QK.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-FUREQLQN.js → chunk-PH2OXXVZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-325UXIO7.js → chunk-PMGJUFNQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-R6SR45XU.js +50 -0
- package/dist/cli-bundle/focused-chunks/chunk-WZE4LIPW.js +8 -0
- package/dist/cli-bundle/main.js +13 -13
- 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 +40 -40
- 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 +32 -32
- 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 +5 -5
- package/dist/core/extensions/extension-hook-runtime.js +22 -20
- package/dist/core/extensions/extension-types.d.ts +8 -1
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/loader.js +7 -3
- package/dist/core/extensions/service-ownership.d.ts +8 -0
- package/dist/core/extensions/service-ownership.js +20 -0
- package/dist/core/item/id.js +20 -5
- package/dist/core/item/item-format.js +27 -2
- package/dist/core/shared/errors.d.ts +20 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/core/store/item-store.js +6 -91
- package/dist/core/store/tracker-preflight.d.ts +7 -0
- package/dist/core/store/tracker-preflight.js +142 -0
- package/dist/sdk/agent/refusal-reachability.d.ts +1 -1
- package/dist/sdk/agent/tracker-preflight-contracts.d.ts +63 -0
- package/dist/sdk/agent/tracker-preflight-contracts.js +127 -0
- package/dist/sdk/annotations.js +6 -7
- package/dist/sdk/authoring.d.ts +1 -1
- package/dist/sdk/authoring.js +2 -2
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +77 -0
- package/dist/sdk/cli-contracts/agent-output-contracts.js +324 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -3
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +3 -1
- package/dist/sdk/cli-contracts/runtime-contracts.js +4 -3
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +3 -3
- package/dist/sdk/config.d.ts +5 -0
- package/dist/sdk/config.js +5 -5
- package/dist/sdk/context-intent-runtime.js +7 -4
- package/dist/sdk/contracts.d.ts +1 -0
- package/dist/sdk/contracts.js +3 -2
- package/dist/sdk/dependencies.js +5 -7
- package/dist/sdk/dependency-flag-validation.d.ts +1 -1
- package/dist/sdk/dependency-flag-validation.js +10 -4
- package/dist/sdk/environment/tracker-preflight.d.ts +6 -0
- package/dist/sdk/environment/tracker-preflight.js +10 -0
- package/dist/sdk/eval.js +5 -7
- package/dist/sdk/extension/install-sources.d.ts +1 -1
- package/dist/sdk/extension/install-sources.js +6 -3
- package/dist/sdk/extension/output-ownership.d.ts +1 -0
- package/dist/sdk/extension/output-ownership.js +3 -2
- package/dist/sdk/files.js +6 -10
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +75 -15
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +81 -8
- package/dist/sdk/governance/assurance.d.ts +36 -2
- package/dist/sdk/governance/assurance.js +184 -10
- package/dist/sdk/governance/gc.js +5 -6
- package/dist/sdk/governance/health.d.ts +3 -0
- package/dist/sdk/governance/health.js +42 -11
- package/dist/sdk/governance/hierarchy-validation.d.ts +29 -0
- package/dist/sdk/governance/hierarchy-validation.js +109 -0
- package/dist/sdk/governance/reindex.js +5 -6
- package/dist/sdk/governance/validate.d.ts +2 -9
- package/dist/sdk/governance/validate.js +51 -109
- package/dist/sdk/graph/assembly.d.ts +6 -1
- package/dist/sdk/graph/assembly.js +16 -22
- package/dist/sdk/graph/governance-contracts.d.ts +1 -1
- package/dist/sdk/graph/governance-contracts.js +8 -2
- package/dist/sdk/graph/governance.d.ts +7 -5
- package/dist/sdk/graph/governance.js +76 -16
- package/dist/sdk/graph/hierarchy-integrity.d.ts +94 -0
- package/dist/sdk/graph/hierarchy-integrity.js +311 -0
- package/dist/sdk/graph/index.d.ts +2 -1
- package/dist/sdk/graph/index.js +3 -2
- package/dist/sdk/graph/remediation.js +32 -2
- package/dist/sdk/graph/run.d.ts +31 -2
- package/dist/sdk/graph/run.js +83 -36
- package/dist/sdk/graph/traversal.js +14 -5
- package/dist/sdk/graph/workspace-relationship-kind-registry.d.ts +8 -0
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +28 -0
- package/dist/sdk/history-compact.js +6 -9
- package/dist/sdk/history-read.js +5 -7
- package/dist/sdk/history-redact.js +5 -6
- package/dist/sdk/history-repair.js +6 -9
- package/dist/sdk/improvement-ledger.js +7 -10
- package/dist/sdk/index.d.ts +4 -2
- package/dist/sdk/index.js +5 -3
- package/dist/sdk/item-children.js +21 -8
- package/dist/sdk/lifecycle/append.d.ts +0 -5
- package/dist/sdk/lifecycle/append.js +5 -6
- package/dist/sdk/lifecycle/claim.d.ts +0 -5
- package/dist/sdk/lifecycle/claim.js +6 -9
- package/dist/sdk/lifecycle/close-many.d.ts +0 -5
- package/dist/sdk/lifecycle/close-many.js +5 -6
- package/dist/sdk/lifecycle/close.d.ts +0 -5
- package/dist/sdk/lifecycle/close.js +5 -6
- package/dist/sdk/lifecycle/copy.d.ts +0 -5
- package/dist/sdk/lifecycle/copy.js +5 -6
- package/dist/sdk/lifecycle/create.d.ts +0 -5
- package/dist/sdk/lifecycle/create.js +127 -102
- package/dist/sdk/lifecycle/delete.js +5 -6
- package/dist/sdk/lifecycle/focus.d.ts +0 -5
- package/dist/sdk/lifecycle/focus.js +5 -6
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.d.ts +15 -0
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +25 -0
- package/dist/sdk/lifecycle/plan.d.ts +0 -5
- package/dist/sdk/lifecycle/plan.js +5 -6
- package/dist/sdk/lifecycle/restore.js +5 -6
- package/dist/sdk/lifecycle/update-many.d.ts +0 -5
- package/dist/sdk/lifecycle/update-many.js +5 -6
- package/dist/sdk/lifecycle/update.d.ts +2 -5
- package/dist/sdk/lifecycle/update.js +211 -84
- package/dist/sdk/linked-artifacts.js +6 -7
- package/dist/sdk/merge/install.js +5 -6
- package/dist/sdk/mutation-events.js +5 -7
- package/dist/sdk/package-import-adapters.js +6 -8
- package/dist/sdk/profile.js +6 -7
- package/dist/sdk/query/activity.js +5 -6
- package/dist/sdk/query/calendar.js +5 -6
- package/dist/sdk/query/complete-list.d.ts +3 -3
- package/dist/sdk/query/complete-list.js +46 -3
- package/dist/sdk/query/get.d.ts +0 -5
- package/dist/sdk/query/get.js +5 -6
- package/dist/sdk/query/history.d.ts +0 -5
- package/dist/sdk/query/history.js +5 -6
- package/dist/sdk/query/list.d.ts +4 -3
- package/dist/sdk/query/list.js +92 -54
- package/dist/sdk/query/search.js +5 -7
- package/dist/sdk/read-output-contracts.d.ts +5 -1
- package/dist/sdk/read-output-contracts.js +87 -22
- package/dist/sdk/relationship-context.js +3 -4
- package/dist/sdk/relationship-kinds/contract.d.ts +8 -0
- package/dist/sdk/relationship-kinds/contract.js +13 -13
- package/dist/sdk/relationships.d.ts +1 -1
- package/dist/sdk/relationships.js +27 -2
- package/dist/sdk/runtime.d.ts +3 -2
- package/dist/sdk/runtime.js +3 -2
- package/dist/sdk/schema-migration.js +6 -7
- package/dist/sdk/schema.js +5 -6
- package/dist/sdk/stats.js +5 -8
- package/dist/sdk/templates.js +5 -6
- package/dist/sdk/test/batch.js +15 -9
- package/dist/sdk/test/execution.js +12 -5
- package/dist/sdk/test/runs.js +5 -7
- package/dist/types.d.ts +11 -0
- package/dist/types.js +2 -2
- package/docs/AGENT_UX_CONTRACTS.md +24 -1
- package/docs/COMMANDS.md +29 -14
- package/docs/DEPENDENCY_KIND_CONTRACT.md +40 -1
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +98 -0
- package/docs/EXTENSIONS.md +2 -1
- package/docs/README.md +1 -0
- package/docs/READ_OUTPUT_CONTRACTS.md +9 -2
- package/docs/RECURRENCE_RECOVERY_CONTRACTS.md +37 -0
- package/docs/RELATIONSHIP_GRAPH.md +97 -12
- package/docs/SDK_PRIMITIVE_INVENTORY.md +15 -1
- package/docs/TESTING.md +15 -0
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/sdk/public-surface.json +848 -56
- package/dist/cli-bundle/chunks/chunk-2RDVGYWE.js +0 -13
- package/dist/cli-bundle/chunks/chunk-BLVQHFSY.js +0 -35
- package/dist/cli-bundle/chunks/chunk-CU25EQVV.js +0 -5
- package/dist/cli-bundle/chunks/chunk-RS3IV2R6.js +0 -197
- package/dist/cli-bundle/focused-chunks/chunk-6AHG2YW7.js +0 -50
- package/dist/cli-bundle/focused-chunks/chunk-GXWQBE3T.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-JWKEDZJI.js +0 -4
- package/dist/cli-bundle/focused-chunks/chunk-KYZ6JGPL.js +0 -155
- package/dist/cli-bundle/focused-chunks/chunk-Q47EX4DI.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-RIHDMCUM.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-T4ZFY7ZJ.js +0 -16
- package/dist/cli-bundle/focused-chunks/chunk-Z3PLWSGM.js +0 -2
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import{$a as un,$d as fn,B as Mr,Ba as Ee,C as g,Ch as T,Dd as Wr,E as h,Ed as Vr,Fd as Yr,G as j,Ga as dn,Gc as ln,Gd as Xr,Ha as at,Hd as Jr,Ic as Gr,Ig as lo,Ih as go,Jc as Kr,Jg as pt,Ld as Ie,Mb as xe,Mh as ho,Na as O,Nh as yo,Oa as ct,Oc as zr,Oh as Re,Ph as _o,Q as G,Qd as Qr,Rh as le,Sh as fe,T as x,Te as pn,Th as wo,U as Or,Uh as ee,V as se,Va as S,Vf as gn,Vh as bo,Xd as pe,Ya as $,Yd as Ce,Za as jr,Zd as Zr,Zf as Te,_d as eo,aa as $r,ag as ro,c as A,ca as Pr,cd as z,cg as oo,ch as fo,d as st,dc as Br,dg as io,dh as mo,e as Fr,ed as dt,f as ie,fg as Be,g as K,gk as ko,h as Nr,hg as ue,hh as yn,ig as hn,je as ut,jg as so,le as to,lf as ft,mg as ao,og as mt,pd as F,pe as mn,qd as C,qe as lt,rb as W,rd as N,re as de,rg as co,s as cn,se as Z,th as gt,uh as ht,ve as no,vg as uo,wb as Ur,wd as Hr,we as Se,wg as De,xc as L,xd as qr,zh as po,zl as vo}from"./chunk-RS3IV2R6.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]="47c087c2-124a-58b7-a5c9-09403235f4a2")}catch{}})();function xa(e,t){let n=-1;return e.forEach((r,o)=>{let i=Date.parse(r.ts);if(!Number.isFinite(i))throw new h(`History for this item contains invalid timestamp at entry ${o+1}.`,g.GENERIC_FAILURE);i<=t&&(n=o)}),n}function Ia(e){let t=e[0]?.ts??null,n=e.at(-1)?.ts??null,r={code:"history_target_out_of_range",required:"Choose a target within the available item history.",why:"Point-in-time reads and restores can only reconstruct recorded versions.",examples:[],nextSteps:["Run pm history <id> to inspect available versions and timestamps."],valid_range:{first_version:null,last_version:null,first_timestamp:t,last_timestamp:n}};return n!==null&&(r.examples=["1",String(e.length),n],r.valid_range.first_version=1,r.valid_range.last_version=e.length),{guidance:r,lastTimestamp:n}}function Eo(e,t){let n={};if(t instanceof Error&&t.message.trim().length>0&&(n.reason=t.message.trim()),typeof t!="object"||t===null)return n;let r=t;if(typeof r.index=="number"&&Number.isInteger(r.index)&&r.index>=0&&(n.patchIndex=r.index),typeof r.operation=="object"&&r.operation!==null){let o=r.operation;Object.assign(n,Object.fromEntries(["op","path","from"].flatMap(i=>{let s=o[i];return typeof s=="string"?[[i,s]]:[]})))}if(n.patchIndex!==void 0){let o=e[n.patchIndex];o&&(n.op??=o.op,n.path??=o.path,n.from??=o.from)}return n}function xo(e,t,n={}){let r=e.trim(),o=n.errorSubject??"history",i=o==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=Ia(t);if(!r)throw new h(`Missing ${o} target. Use a timestamp or version number.`,g.USAGE,s);if(/^\d+$/.test(r)){let u=Number(r);if(!Number.isSafeInteger(u)||u<1||u>t.length)throw new h(`${i} version must be between 1 and ${t.length} for this item.`,g.USAGE,s);return{kind:"version",raw:r,historyIndex:u-1}}let c=Date.parse(r);if(!Number.isFinite(c))throw new h(`Invalid ${o} target "${e}". Use a positive version number or ISO timestamp.`,g.USAGE,s);let d=xa(t,c);if(d<0||n.allowFutureTimestamp!==!0&&c>Date.parse(a))throw new h(o==="restore"?`No history entries exist at or before timestamp ${r}.`:`No history entry exists at timestamp ${r}.`,g.USAGE,s);return{kind:"timestamp",raw:r,historyIndex:d}}function Ge(e,t,n,r){let o=ao(e,t);if(o.ok)return o.document;let i=Eo(t,o.error),s=[`history_op=${r}`,i.patchIndex===void 0?null:`patch_index=${i.patchIndex}`,i.op?`op=${i.op}`:null,i.path?`path=${i.path}`:null,i.from?`from=${i.from}`:null].filter(a=>a!==null);throw new h(`Failed to apply history patch at entry ${n} (${s.join(", ")}). ${i.reason??String(o.error)}`,g.GENERIC_FAILURE)}function Io(e,t){let n=structuredClone(Be);for(let r=0;r<=t;r+=1){let o=e[r];if(!o)throw new h(`History target entry ${r+1} does not exist.`,g.USAGE);if(ue(n)!==o.before_hash)throw new h(`History hash mismatch before replay at entry ${r+1}.`,g.GENERIC_FAILURE);if(n=Ge(n,o.patch,r+1,o.op),ue(n)!==o.after_hash)throw new h(`History hash mismatch after replay at entry ${r+1}.`,g.GENERIC_FAILURE)}return n}function Co(e,t){if(Object.keys(e.metadata).length>0)return e;throw new h(`History target ${t.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,g.USAGE)}import _n from"node:fs/promises";import Ca from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a2ec9f1a-aae2-59d5-8c9a-7acd8bf5a7a2")}catch{}})();function Sa(e){if(!e.itemDocument)return[];let t=e.itemDocument.metadata?.assignee?.trim();if(!t||t===e.author||e.force)return[];let n=po(e.settings);if(n.ownership_enforcement==="strict")throw new h(`Item ${e.subjectId} is assigned to ${t}. Use --force to override.`,g.CONFLICT);return n.ownership_enforcement==="warn"?[`ownership_warning:assignee_conflict:${e.subjectId}:${t}`]:[]}async function Ta(e){let t=await ie(e.subject.historyPath);if(t!==e.historyRawBeforeLock)throw new h(`History for ${e.subject.id} changed while waiting for lock; retry ${e.operation}.`,g.CONFLICT);let n=await le(e.pmRoot,e.subject.id,e.settings.id_prefix,e.settings.item_format,e.typeRegistry.type_to_folder),r=n?await fe(n,{schema:e.settings.schema}):null;if((r?.raw??null)!==(e.currentItemRawBeforeLock??null))throw new h(`Item ${e.subject.id} changed while waiting for lock; retry ${e.operation}.`,g.CONFLICT);return{historyRawUnderLock:t,locatedUnderLock:n,loadedItemUnderLock:r}}async function _h(e){let t=e.writeHistoryRaw??K;try{await t(e.historyPath,e.nextHistoryRaw),await Te(e.historyPath)}catch(n){try{e.historyRawUnderLock===null?await Ca.rm(e.historyPath,{force:!0}):await t(e.historyPath,e.historyRawUnderLock),await Te(e.historyPath)}catch(r){throw new AggregateError([n,r],`History rewrite failed and rollback also failed: ${String(n)}`)}throw n}}async function So(e){let t=[...Sa({itemDocument:e.itemDocument,subjectId:e.subject.id,author:e.author,force:e.force,settings:e.settings})],n=await De(e.pmRoot,e.subject.id,e.settings.locks.ttl_seconds,e.author,!!e.force,e.settings.governance.force_required_for_stale_lock,e.settings.locks.wait_ms);try{let r=await Ta({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:e.operation});return await e.applyRewrite(r),e.applyPostRewrite&&t.push(...await e.applyPostRewrite(r)),t}finally{await 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]="cd2a27ec-0f12-591d-ab34-529ddda05063")}catch{}})();function wn(e){return Array.isArray(e)?e:typeof e=="string"?[e]:[]}function To(e){let t=[];for(let n of e)t.includes(n)||t.push(n);return t.includes("g")||t.push("g"),t.join("")}function Do(e){let t=e.trim();if(t.length===0)throw new h("history-redact --regex requires a non-empty pattern.",g.USAGE);let n=t,r="g";if(t.startsWith("/")&&t.length>1){let o=t.lastIndexOf("/");o>0&&(n=t.slice(1,o),r=To(t.slice(o+1)))}if(n.length===0)throw new h("history-redact --regex cannot use an empty pattern.",g.USAGE);try{new RegExp(n,r)}catch{throw new h("Invalid --regex value; provide a valid JavaScript regular expression.",g.USAGE)}return{kind:"regex",source:n,flags:r}}function Ro(e,t){let n=[...new Set(wn(e).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),r=[...new Set(wn(t).map(i=>i.trim()))].filter(i=>i.length>0).map(Do),o=[...n,...r];if(o.length===0)throw new h("history-redact requires at least one matcher via --literal or --regex.",g.USAGE,{code:"missing_required_argument",required:"Provide --literal <value> and/or --regex <pattern>.",examples:['pm history-redact pm-a1b2 --literal "[redacted_path_prefix]/private"','pm history-redact pm-a1b2 --regex "/192\\\\.168\\\\.[0-9.]+/g" --replacement "[scrubbed_ip]"']});return o}function Ao(e,t,n){if(t.length===0)return{value:e,replacements:0};let r=0,o=0;for(;r<=e.length;){let i=e.indexOf(t,r);if(i===-1)break;o+=1,r=i+Math.max(1,t.length)}return o===0?{value:e,replacements:0}:{value:e.split(t).join(n),replacements:o}}function Lo(e,t,n){let r=new RegExp(t.source,t.flags),o=[...e.matchAll(r)];return o.length===0?{value:e,replacements:0}:{value:e.replace(r,n),replacements:o.length}}function bn(e,t,n){let r=e,o=0;for(let i of t){let s=i.kind==="literal"?Ao(r,i.value,n):Lo(r,i,n);r=s.value,o+=s.replacements}return{value:r,replacements:o}}function yt(e,t,n){if(typeof e=="string")return bn(e,t,n);if(Array.isArray(e)){let r=0;return{value:e.map(i=>{let s=yt(i,t,n);return r+=s.replacements,s.value}),replacements:r}}if(typeof e=="object"&&e!==null){let r=0,o={};for(let[i,s]of Object.entries(e)){let a=yt(s,t,n);r+=a.replacements,o[i]=a.value}return{value:o,replacements:r}}return{value:e,replacements:0}}function Da(e){let t=structuredClone(Be),n=0,r=0;for(let o=0;o<e.length;o+=1){let i=e[o];ue(t)!==i.before_hash&&(n+=1),t=Ge(t,i.patch,o+1,i.op),ue(t)!==i.after_hash&&(r+=1)}return{hashMismatchesBefore:n,hashMismatchesAfter:r,finalDocument:t}}function Ra(e,t,n){let r=0,o=!1,i=e.message;if(typeof e.message=="string"){let a=bn(e.message,t,n);i=a.value,r+=a.replacements,a.replacements>0&&(o=!0)}let s=e.patch.map(a=>{if(!Object.prototype.hasOwnProperty.call(a,"value"))return a;let c=yt(a.value,t,n);return r+=c.replacements,c.replacements>0?(o=!0,{...a,value:c.value}):a});return{entry:{...e,message:i,patch:s},replacements:r,changed:o}}function Aa(e,t,n){let r=structuredClone(Be),o=0,i=0,s=[];for(let a=0;a<e.length;a+=1){let c=Ra(e[a],t,n);i+=c.replacements,c.changed&&(o+=1);let d=ue(r);r=Ge(r,c.entry.patch,a+1,c.entry.op);let u=ue(r);s.push({...c.entry,before_hash:d,after_hash:u})}return{entries:s,finalDocument:r,entriesChanged:o,replacements:i}}function Fo(e){return Object.keys(e.metadata).length>0}async function La(e,t){let n=e.located?.itemPath??null;if(!e.located)return{raw:null,path:n,document:null};let r=await fe(e.located,{schema:t.schema});return{raw:r.raw,path:n,document:r.document}}function Fa(e){if(!Fo(e.finalDocument))return{raw:null,path:null,document:null};let t=qr(hn(e.finalDocument),{schema:e.settings.schema});if(t.metadata.id!==e.subject.id)throw new h("history-redact would change the item id; narrow your patterns.",g.USAGE);return{document:t,path:jr(e.pmRoot,t.metadata.type,e.subject.id,"toon",e.typeToFolder),raw:Hr(t,{format:"toon",schema:e.settings.schema})}}function Na(e,t){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-redact replaced ${t.replacements} match(es) across ${t.entriesChanged} entr${t.entriesChanged===1?"y":"ies"}.`}function Ma(e){let t=[...e.rewritten.entries];if(e.dryRun||!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let n=e.nextItemDocument??hn(e.rewritten.finalDocument);return t.push(io({nowIso:G(),author:e.author,op:"history_redact",before:n,after:n,message:e.message})),{rewrittenEntries:t,auditEntryAdded:!0}}async function Oa(e){let t=[];return So({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItem.raw,operation:"history-redact",author:e.author,force:e.force,itemDocument:e.currentItem.document,applyRewrite:async({historyRawUnderLock:n})=>{let r=await yo(e.pmRoot,e.author),o=new Set;e.currentItem.path&&o.add(e.currentItem.path),e.nextItem.path&&o.add(e.nextItem.path);let i=new Map;e.currentItem.path&&e.currentItem.raw!==null&&i.set(e.currentItem.path,e.currentItem.raw);let s=()=>{};try{try{e.nextItem.path&&e.nextItem.raw!==null&&e.nextItem.raw!==e.currentItem.raw&&await K(e.nextItem.path,e.nextItem.raw),e.currentItem.path&&(!e.nextItem.path||e.nextItem.path!==e.currentItem.path)&&await _n.rm(e.currentItem.path,{force:!0}),await K(e.subject.historyPath,co(e.rewrittenEntries))}catch(c){try{await $a(e.subject.historyPath,n,o,i)}finally{await Te(e.subject.historyPath)}throw c}await Te(e.subject.historyPath);let a=e.nextItem.path??e.currentItem.path;a&&(t=await _o({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:e.typeRegistry.type_to_folder,schema:e.settings.schema,itemPath:a,...e.currentItem.path?{previousItemPath:e.currentItem.path}:{},document:e.nextItem.document}))}finally{await r().catch(a=>{s=()=>{throw a}})}s()},applyPostRewrite:async()=>[...t,...await Pa(e.subject.historyPath,[e.nextItem.path,e.currentItem.path])]})}async function $a(e,t,n,r){t===null?await _n.rm(e,{force:!0}):await K(e,t);for(let o of n){let i=r.get(o);i===void 0?await _n.rm(o,{force:!0}):await K(o,i)}}async function Pa(e,t){let n=[],r=new Set(t.filter(o=>o!==null));for(let o of r)n.push(...await ln({path:o,scope:"project",op:"history_redact"}));return n.push(...await ln({path:e,scope:"project",op:"history_redact:history"})),n}async function kn(e,t,n,r){let o=await le(e,t,n.id_prefix,n.item_format,r);if(o)return{id:o.id,historyPath:un(e,o.id),located:o};let i=pt(t,n.id_prefix),s=lo(t),a=i===s?[i]:[i,s];for(let c of a){let d=un(e,c);if(await A(d))return{id:c,historyPath:d,located:null}}throw new h(`Item ${t} not found`,g.NOT_FOUND)}async function Uh(e,t,n){let r=S(process.cwd(),n.path);if(!await A($(r)))throw new h(`Tracker is not initialized at ${r}. Run pm init first.`,g.NOT_FOUND);let o=await T(r),i=O(o,L()),s=t.replacement??"",a=s.length===0,c=a?"[redacted]":s,d=Ro(t.literal,t.regex),u=await kn(r,e,o,i.type_to_folder);if(!await A(u.historyPath))throw new h(`No history stream exists for ${u.id}.`,g.NOT_FOUND);let l=await ie(u.historyPath),f=await Ce(u.historyPath,u.id);if(f.length===0)throw new h(`No history entries exist for ${u.id}; nothing to redact.`,g.USAGE);let m=Da(f),y=Aa(f,d,c),p=m.hashMismatchesBefore+m.hashMismatchesAfter,b=!!t.dryRun,w=y.replacements>0,_=[];p>0&&_.push(`history_redact_preexisting_hash_mismatches:${p}`),w||_.push("history_redact_no_matches");let k=await La(u,o),E=Fa({pmRoot:r,subject:u,settings:o,typeToFolder:i.type_to_folder,finalDocument:y.finalDocument}),I=(k.path??null)!==(E.path??null)||(k.raw??null)!==(E.raw??null),P=pe(t.author,o.author_default),D=Na(t,y),{rewrittenEntries:U,auditEntryAdded:ce}=Ma({rewritten:y,dryRun:b,changed:w,nextItemDocument:E.document,author:P,message:D}),B=mt(U);if(!B.ok)throw new h(`history-redact produced an invalid rewritten chain (${B.errors.join(", ")}).`,g.GENERIC_FAILURE);return!b&&w&&_.push(...await Oa({pmRoot:r,subject:u,settings:o,typeRegistry:i,historyRawBeforeLock:l,currentItem:k,nextItem:E,author:P,force:t.force,rewrittenEntries:U})),{id:u.id,dry_run:b,changed:w,patterns:{literal_count:d.filter(M=>M.kind==="literal").length,regex_count:d.filter(M=>M.kind==="regex").length,total_count:d.length,replacement_is_default:a},history:{path:u.historyPath,entries_scanned:f.length,entries_changed:y.entriesChanged,replacements:y.replacements,hash_mismatches_before:m.hashMismatchesBefore,hash_mismatches_after:m.hashMismatchesAfter,preexisting_hash_mismatches:p,audit_entry_added:ce,verify_ok:B.ok,verify_errors:B.errors},item:{existed_before:k.path!==null,exists_after:E.path!==null,path_before:k.path,path_after:E.path,changed:I},warnings:[...new Set(_)].sort((M,q)=>M.localeCompare(q)),generated_at:G()}}var Bh={applyLiteralRule:Ao,applyRegexRule:Lo,buildRedactionRules:Ro,hasItemMetadata:Fo,normalizeRegexFlags:To,normalizeStringArrayInput:wn,parseRegexRule:Do,redactStringValue:bn,redactUnknownValue:yt};(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]="04f5d4d2-4021-5ce2-b35a-2134d98d2ad7")}catch{}})();function ty(e,t){let n=mt(e),r=e.length>0?e[e.length-1].after_hash:oo(),o=t===void 0?void 0:ro(t),i=o===void 0?void 0:o===r,s=[...n.errors];return i===!1&&s.push("verify_failed:current_item_hash_mismatch"),{ok:s.length===0,entries:e.length,errors:s,latest_after_hash:e.length>0?e[e.length-1].after_hash:void 0,current_item_hash:o,current_matches_latest:i}}async function ny(e,t,n={}){let r=S(n.cwd??process.cwd(),n.pmRoot);if(!await A($(r)))throw new h(`Tracker is not initialized at ${r}. Run pm init first.`,g.NOT_FOUND);let o=await T(r),i=O(o,L()),s=await kn(r,e,o,i.type_to_folder),a=await Ce(s.historyPath,s.id);if(a.length===0)throw new h(`No history exists for ${s.id}; point-in-time reads are unavailable.`,g.NOT_FOUND);let c=xo(t,a),d=Co(Io(a,c.historyIndex),c),u=so(d,{schema:o.schema});if(u.metadata.id!==s.id)throw new h(`History target resolved to item ${u.metadata.id}, expected ${s.id}.`,g.GENERIC_FAILURE);let l=a[c.historyIndex];return{document:u,reconstructed:!0,as_of_version:c.historyIndex+1,as_of_timestamp:l.ts,target:c,history_length:a.length}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="3167c288-0bcc-5a66-8aa0-ca5876ed7d36")}catch{}})();function ja(e,t,n,r,o,i){if(e.seen.has(t))return"skip";if(e.cursorFound&&e.affected.length>=i)return"truncate";e.seen.add(t),e.parents.set(t,n.id);let s=n.depth+1;return e.queue.push({id:t,depth:s}),e.cursorFound?(e.affected.push({id:t,distance:s,path:qa(r,t,e.parents)}),"continue"):(e.cursorFound=t===o,"skip")}function Mo(e,t,n,r){let o=de("graph impact",{root:e,direction:n,kinds:[...t.kinds??[]].sort(),max_depth:Number.isFinite(r)?r:"unbounded"});return{fingerprint:o,after:t.after===void 0?void 0:no(t.after,o)}}function Ae(e,t,n){e.get(t).add(n)}function Ke(e){return new Map(e.map(t=>[t,new Set]))}function Oo(e){for(let t of e)t.sort();return e.sort((t,n)=>n.length-t.length||t[0].localeCompare(n[0]))}function _t(e){if(Array.isArray(e))return e.map(n=>_t(n));if(e===null||typeof e!="object")return e;let t=e.toJSON;return typeof t=="function"?_t(t.call(e)):Object.fromEntries(Object.entries(e).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,_t(r)]))}function No(e){return JSON.stringify(_t(e))}function Ua(e,t,n,r){let o=[{id:e,expanded:!1}];for(;o.length>0;){let i=o.pop();if(i.expanded){r.push(i.id);continue}if(n.has(i.id))continue;n.add(i.id),o.push({id:i.id,expanded:!0});let s=[...t.get(i.id)].sort().reverse();for(let a of s)n.has(a)||o.push({id:a,expanded:!1})}}function Ba(e,t){let n=new Set,r=[];for(let o of e)n.has(o)||Ua(o,t,n,r);return r}function Ga(e,t){let n=new Set,r=[];for(let o of[...e].reverse()){if(n.has(o))continue;let i=[],s=[o];for(n.add(o);s.length>0;){let a=s.pop();i.push(a);for(let c of t.get(a))n.has(c)||(n.add(c),s.push(c))}r.push(i)}return Oo(r)}function $o(e,t){let n=Ke(e);for(let[r,o]of t)for(let i of o)Ae(n,i,r);return Ga(Ba(e,t),n)}function Ka(e,t){let n=Ke(e.nodes());for(let r of e.edges()){let o=t.require(r.kind);if(!o.ordering)continue;let i=(o.precedence??"source_before_target")==="source_before_target";Ae(n,i?r.source:r.target,i?r.target:r.source)}return n}function za(e,t){let n=new Map(e.map(i=>[i,0]));for(let i of t.values())for(let s of i)n.set(s,n.get(s)+1);let r=e.filter(i=>n.get(i)===0).sort(),o=[];for(;r.length>0;){o.push(r);let i=[];for(let s of r)for(let a of t.get(s)){let c=n.get(a)-1;n.set(a,c),c===0&&i.push(a)}r=i.sort()}return o}function Ha(e,t){let n=new Map(e.map(s=>[s,0])),r=new Map;for(let s of e)for(let a of t.get(s)){if(!n.has(a))continue;let c=n.get(s)+1,d=r.get(a);(c>n.get(a)||c===n.get(a)&&(d===void 0||s.localeCompare(d)<0))&&(n.set(a,c),r.set(a,s))}let o=[...e].sort((s,a)=>n.get(a)-n.get(s)||s.localeCompare(a))[0],i=o===void 0?[]:[o];for(;i[0]!==void 0&&r.has(i[0]);)i.unshift(r.get(i[0]));return{depth:Object.fromEntries(n),path:i}}function qa(e,t,n){let r=[t],o=t;for(;o!==e;)o=n.get(o),r.push(o);return r.reverse()}function bt(e,t={}){let n=t.registry??W(),r=[...e.nodes()],o=Ka(e,n),i=za(r,o),s=i.flat(),a=s.length===r.length,c=a?[]:$o(r,o).filter(u=>u.length>1||o.get(u[0]).has(u[0])),d=Ha(s,o);return{exact:!0,acyclic:a,order:s,layers:i,frontier:i[0]??[],depth:d.depth,criticalPath:d.path,criticalPathLength:Math.max(0,d.path.length-1),cycles:c,provenance:{algorithm:"kahn-longest-path",edgeFamily:"ordering"}}}function Wa(e,t,n){let r=Ke(e.nodes()),o=n===void 0?void 0:new Set(n.map(s=>e.registry().require(s).kind)),i=e.edges();for(let s of i){let a=e.registry().require(s.kind);o!==void 0&&!o.has(s.kind)&&(a.inverse===void 0||!o.has(a.inverse))||Ae(r,t==="incoming"?s.target:s.source,t==="incoming"?s.source:s.target)}return{adjacency:r,inspectedEdges:i.length}}function Va(e,t,n,r,o,i){let s=wt(e,t,{...n,after:void 0,direction:"incoming",limit:void 0}),a=wt(e,t,{...n,after:void 0,direction:"outgoing",limit:void 0}),c=new Map,d=[...s.affected,...a.affected].sort((y,p)=>y.distance-p.distance||y.id.localeCompare(p.id)||y.path.join("\0").localeCompare(p.path.join("\0")));for(let y of d)c.has(y.id)||c.set(y.id,y);let u=[...c.values()].sort((y,p)=>y.distance-p.distance||y.id.localeCompare(p.id)),l=r===void 0||r===t?-1:u.findIndex(y=>y.id===r);if(r!==void 0&&r!==t&&l<0)throw new TypeError(`Unknown impact cursor item: ${r}`);let f=u.slice(l+1,l+1+o),m=l+1+f.length<u.length;return{root:t,affected:f,exact:!0,truncated:s.truncated||a.truncated||m,...m?{nextCursor:Z(i,f.at(-1)?.id??t)}:{},cost:{visitedNodes:s.cost.visitedNodes+a.cost.visitedNodes,inspectedEdges:s.cost.inspectedEdges+a.cost.inspectedEdges}}}function Ya(e,t,n){let r=n.direction,o=n.maxDepth??Number.POSITIVE_INFINITY,i=n.limit??Number.POSITIVE_INFINITY,{fingerprint:s,after:a}=Mo(t,n,r,o),{adjacency:c,inspectedEdges:d}=Wa(e,r,n.kinds),u={queue:[{id:t,depth:0}],seen:new Set([t]),parents:new Map,affected:[],cursorFound:a===void 0||a===t},l=0,f=!1,m=!1;e:for(let y=0;y<u.queue.length;y+=1){n.signal?.throwIfAborted();let p=u.queue[y];l+=1;let b=[...c.get(p.id)].sort();if(p.depth>=o){b.some(w=>!u.seen.has(w))&&(f=!0);continue}for(let w of b)if(ja(u,w,p,t,a,i)==="truncate"){f=!0,m=!0;break e}}if(!u.cursorFound)throw new TypeError(`Unknown impact cursor item: ${a}`);return{root:t,affected:u.affected,exact:!0,truncated:f,...m?{nextCursor:Z(s,u.affected.at(-1)?.id??t)}:{},cost:{visitedNodes:l,inspectedEdges:d}}}function wt(e,t,n={}){let r=n.direction??"outgoing";if(r!=="both")return Ya(e,t,{...n,direction:r});let o=n.maxDepth??Number.POSITIVE_INFINITY,i=n.limit??Number.POSITIVE_INFINITY,{fingerprint:s,after:a}=Mo(t,n,r,o);return Va(e,t,n,a,i,s)}function Po(e){let t=[...e.nodes()],n=Ke(t),r=Ke(t);for(let c of e.edges())Ae(n,c.source,c.target),Ae(n,c.target,c.source),Ae(r,c.source,c.target);let o=[],i=new Set;for(let c of t){if(i.has(c))continue;let d=[],u=[c];for(i.add(c);u.length>0;){let l=u.pop();d.push(l);for(let f of n.get(l))i.has(f)||(i.add(f),u.push(f))}o.push(d)}let s=t.map(c=>({id:c,degree:n.get(c).size})),a=Math.max(0,...s.map(({degree:c})=>c));return{components:Oo(o),stronglyConnected:$o(t,r),orphans:s.filter(({degree:c})=>c===0).map(({id:c})=>c),hubs:s.filter(({degree:c})=>c>0&&c===a),exact:!0,provenance:{algorithm:"component-degree",edgeFamily:"all"}}}function sy(e,t){let n=new Map(e.edges.map(o=>[No(o),o])),r=new Map(t.edges.map(o=>[No(o),o]));return{fromVersion:e.version,toVersion:t.version,added:[...r].filter(([o])=>!n.has(o)).map(([,o])=>o),removed:[...n].filter(([o])=>!r.has(o)).map(([,o])=>o),unchangedCount:[...n.keys()].filter(o=>r.has(o)).length,exact:!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]="eb044a23-d43b-5e9c-9ae7-4ac91b5e587a")}catch{}})();function V(e,t="--limit"){if(e===void 0)return;let n=String(e).trim(),r=n.length===0?Number.NaN:Number(n);if(!Number.isInteger(r)||r<0)throw new h(`${t} must be a non-negative integer`,g.USAGE);return r}function kt(e,t="--priority"){if(e===void 0)return;let n=String(e).trim(),r=n.length===0?Number.NaN:Number(n);if(!Number.isInteger(r)||r<0||r>4)throw new h(`${t} filter must be 0..4`,g.USAGE);return r}function jo(e,t,n="--type"){if(e===void 0)return;let r=ct(e,t);if(!r)throw new h(`${n} filter must be one of ${t.types.join("|")}`,g.USAGE);return r}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8b010e79-a73a-5760-ac05-8dc88484cd69")}catch{}})();var vt={version:1,aliases:{}};function Et(e=[]){let t=new Set(Ie),n=r=>{/^[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(r)&&t.add(r)};for(let r of e){for(let o of Object.keys(r.provenance_environment_keys??{}))n(o);for(let o of Object.keys(r.provenance_resolvers??{}))n(o);for(let o of r.provenance_unavailable_dimensions??[])n(o)}return[...t].sort()}function Uo(e){if(e===void 0)return;let n=(typeof e=="string"?[e]:e).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);return n.length===0?void 0:new Set(n)}function vn(e,t){if(e.agent_harness?.trim())return{agent_harness:e.agent_harness,harness_source:"recorded"};let n=t.aliases[e.author];return n?{agent_harness:n,harness_source:"vocabulary"}:{harness_source:"unresolved"}}function En(e,t=Ie){let n=new Set(t),r=new Map,o=e.provenance===void 0?[]:typeof e.provenance=="string"?[e.provenance]:e.provenance;for(let i of o.flatMap(s=>s.split(","))){let s=i.indexOf("=");if(s<0)throw new h(`Provenance predicate must use dimension=value; received "${i.trim()}".`,g.USAGE,{code:"invalid_provenance_predicate"});let a=i.slice(0,s).trim().toLowerCase(),c=i.slice(s+1).trim();if(!n.has(a))throw new h(`Unknown provenance dimension "${a||i.trim()}". Declared dimensions: ${[...n].sort().join(", ")}.`,g.USAGE,{code:"unknown_provenance_dimension"});if(c.length===0)throw new h(`Provenance predicate must use dimension=value; received "${i.trim()}".`,g.USAGE,{code:"invalid_provenance_predicate"});let d=r.get(a)??new Set;d.add(c),r.set(a,d)}return r}function xt(e,t=vt,n={}){let r=vn(e,t);return{...n.itemId===void 0?{}:{item_id:n.itemId},...n.version===void 0?{}:{version:n.version},ts:e.ts,op:e.op,author:e.author,...e.author_source===void 0?{}:{author_source:e.author_source},...r,vocabulary_version:t.version,...e.agent_instance===void 0?{}:{agent_instance:e.agent_instance},agent_provenance:e.agent_provenance??{},...e.message===void 0?{}:{message:e.message}}}function hy(e,t,n=vt,r=Ie){return xn(t,n,r)(e)}function xn(e,t=vt,n=Ie){let r=Uo(e.harness),o=Uo(e.agentInstance),i=En(e,n);return s=>{let c=vn(s,t).agent_harness;if(r&&(!c||!r.has(c))||o&&!o.has(s.agent_instance??""))return!1;for(let[d,u]of i){let l=s.agent_provenance?.[d];if(!l||!u.has(l.value))return!1}return!0}}function It(e,t=vt,n=Ie){let r=new Set(n),o=new Map,i=0;for(let s of e){for(let c of Object.keys(s.agent_provenance??{}))r.add(c);vn(s,t).agent_harness?i+=1:o.set(s.author,(o.get(s.author)??0)+1)}return{entries:e.length,vocabulary_version:t.version,harness:{resolved:i,unresolved:e.length-i,unresolved_authors:[...o].map(([s,a])=>({author:s,entries:a})).sort((s,a)=>a.entries-s.entries||s.author.localeCompare(a.author)).slice(0,20)},dimensions:[...r].sort().map(s=>{let a=0,c=0;for(let d of e){let u=d.agent_provenance?.[s];u===null?c+=1:u!==void 0&&(a+=1)}return{dimension:s,observed:a,unavailable:c,legacy_missing:e.length-a-c}})}}import Xa from"node:fs/promises";import Ko 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]="49304d18-d722-5413-8e4d-4f2c3df4a1ca")}catch{}})();var Ja=20,Qa=5,Za=15,ec="-24h";function Cy(e){let t={...e};return t.full===!0?(t.raw=!0,t.compact=!1):t.raw===!0&&t.compact===void 0&&(t.compact=!0),delete t.full,t}var tc={digest:"activity_digest",compact:"compact_activity",provenance:"provenance_activity",full:"activity"};function In(e,t){if(e===void 0)return;let n=e.trim();if(n.length===0)throw new h(`${t} must not be empty`,g.USAGE);return n}function Bo(e,t,n){if(e===void 0)return;let r=e.trim();if(r.length===0)throw new h("Activity time bounds must not be empty",g.USAGE);let o=n==="--from"&&/^\d+[hdwm]$/iu.test(r)?`-${r}`:r;return se(o,new Date(t),n)}function nc(e,t,n){return!(e.ts.length===0&&(t||n)||t&&x(e.ts,t)<0||n&&x(e.ts,n)>=0)}function Go(e,t){return t===void 0?e:e.slice(0,t)}function ze(e,t=""){return typeof e=="string"?e:t}function rc(e,t){return{...t,id:e,ts:ze(t.ts),author:ze(t.author,"unknown"),op:ze(t.op,"unknown"),patch:Array.isArray(t.patch)?t.patch:[],before_hash:ze(t.before_hash),after_hash:ze(t.after_hash)}}function oc(e){return[...e].sort((t,n)=>{let r=n.ts.localeCompare(t.ts);if(r!==0)return r;let o=t.id.localeCompare(n.id);return o!==0?o:t.op.localeCompare(n.op)})}async function ic(e){try{return(await Xa.readdir(e)).filter(t=>t.endsWith(".jsonl")).sort((t,n)=>t.localeCompare(n))}catch(t){if(Fr(t))return[];throw t}}function sc(e){return e.raw!==!0&&e.compact!==!0&&e.provenance!==!0?"digest":e.provenance===!0?"provenance":e.compact===!0||e.raw===!0&&e.compact!==!1?"compact":"full"}function ac(e,t,n){if(e.unbounded!==!0)return t!==void 0?t:n==="digest"?Za:n==="compact"?Ja:Qa}function cc(e,t){let n=G(),r=t==="digest",o=Bo(e.to??(r?n:void 0),n,"--to"),i=Bo(e.from??(r?ec:void 0),e.from===void 0&&r?o:n,"--from");if(i&&o&&x(i,o)>=0)throw new h("Activity --from must be before --to",g.USAGE);let s=yn(e.limit);if(e.unbounded===!0&&s!==void 0)throw new h("Activity --unbounded cannot be combined with --limit",g.USAGE);return{id:In(e.id,"Activity --id"),op:In(e.op,"Activity --op"),author:In(e.author,"Activity --author"),from:i,to:o,limit:ac(e,s,t),limitSource:e.unbounded===!0||s!==void 0?"explicit":"default",harness:e.harness,agentInstance:e.agentInstance,provenance:e.provenanceFilter}}async function dc(e){let t=S(process.cwd(),e.path);if(!await A($(t)))throw new h(`Tracker is not initialized at ${t}. Run pm init first.`,g.NOT_FOUND);return{pmRoot:t,settings:await T(t)}}async function uc(e){let t=O(e.settings,L()),n=await ee(e.pmRoot,e.settings.item_format,t.type_to_folder,void 0,e.settings.schema);await uo({pmRoot:e.pmRoot,settings:e.settings,itemIds:n.map(o=>o.id),commandLabel:"activity"});let r=Ko.join(e.pmRoot,"history");return await Gr({path:r,scope:"project"}),{historyDir:r,itemsById:new Map(n.map(o=>[o.id,{title:o.title,type:o.type,status:o.status}]))}}function lc(e,t,n){return n.op&&e.op!==n.op||n.author&&e.author!==n.author?!1:nc(t,n.from,n.to)}async function fc(e,t){let n=[];for(let r of await ic(e)){let o=r.slice(0,-6);if(t.id&&o!==t.id)continue;let i=await Ce(Ko.join(e,r),o);for(let s of i){let a=rc(o,s);lc(s,a,t)&&n.push(a)}}return n}function mc(e){return e.map(t=>({id:t.id,op:t.op,ts:t.ts,author:t.author,...t.message?{msg:t.message}:{}}))}function pc(e){let t=[...e.entries()].sort(([r,o],[i,s])=>s-o||r.localeCompare(i)),n=t.slice(0,4).map(([r,o])=>`${r}:${o}`);return t.length>n.length&&n.push(`+${t.length-n.length}`),n.join(",")}function gc(e,t){let n=new Map;for(let r of e){let o=n.get(r.id);if(o===void 0){n.set(r.id,{firstTs:r.ts,lastTs:r.ts,eventCount:1,operations:new Map([[r.op,1]])});continue}o.eventCount+=1,x(r.ts,o.firstTs)<0&&(o.firstTs=r.ts),x(r.ts,o.lastTs)>0&&(o.lastTs=r.ts),o.operations.set(r.op,(o.operations.get(r.op)??0)+1)}return[...n.entries()].map(([r,o])=>{let i=t.get(r);return{id:r,type:i?.type??"unknown",status:i?.status??"unknown",title:(i?.title??"(item metadata unavailable)").slice(0,160),event_count:o.eventCount,first_ts:o.firstTs,last_ts:o.lastTs,operations:pc(o.operations)}}).sort((r,o)=>x(o.last_ts,r.last_ts)||r.id.localeCompare(o.id))}function hc(e){let t=new Map;for(let o of e)t.set(o.op,(t.get(o.op)??0)+1);let n=[...t.entries()].sort((o,i)=>i[1]-o[1]||o[0].localeCompare(i[0])),r=n.slice(0,8);return r.length<n.length&&r.push([`+${String(n.length-r.length)}`,n.slice(r.length).reduce((o,[,i])=>o+i,0)]),Object.fromEntries(r)}function yc(e,t,n,r,o){if(e==="digest"){let s=gc(t,r),a=Go(s,n);return{rows:{activity_digest:a},compact:!1,totalRows:s.length,returnedRows:a.length}}let i=Go(t,n);return e==="compact"?{rows:{compact_activity:mc(i)},compact:!0,totalRows:t.length,returnedRows:i.length}:e==="provenance"?{rows:{provenance_activity:i.map(o)},compact:!1,totalRows:t.length,returnedRows:i.length}:{rows:{activity:i},compact:!1,totalRows:t.length,returnedRows:i.length}}async function zo(e,t){let n=await dc(t),r=sc(e),o=cc(e,r),i=await uc(n),s=Et(n.settings.agent_identity.harness_signals),a=n.settings.agent_identity.identity_vocabulary,c=xn({harness:o.harness,agentInstance:o.agentInstance,provenance:o.provenance},a,s),d=oc(await fc(i.historyDir,o)).filter(c),u=yc(r,d,o.limit,i.itemsById,f=>xt(f,a,{itemId:f.id})),l=u.totalRows-u.returnedRows;return{...u.rows,compact:u.compact,projection:{mode:r,row_key:tc[r]},omission_receipt:to("activity",r),count:u.returnedRows,total_count:u.totalRows,limit:o.limit??null,omitted_count:l,has_more:l>0,...r==="digest"?{activity_summary:{window:{from:o.from,to:o.to},event_count:d.length,item_count:u.totalRows,author_count:new Set(d.map(f=>f.author)).size,operation_counts:hc(d)}}:{},...e.provenanceSummary===!0?{provenance_summary:It(d,a,s)}:{},applied_bound:{kind:o.limit===void 0?"unbounded":"limit",source:o.limitSource,value:o.limit??null}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="1b2f1ac3-82b3-58a2-9f40-2dd95ab1b2bc")}catch{}})();var Ho="global",_c="external";function Le(e){let t=e?.trim().toLowerCase();return t===Ho||t===_c}function Dy(e){let t=e?.trim();if(t)return Le(t)?Ho:t}function Ry(e,t,n){let r=e.trim();return Le(n)?r:pt(r,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]="a6fc5da1-b7d1-5b3c-8033-cecccc7861c3")}catch{}})();function Ne(e){if(typeof e!="string")return;let t=e.trim();if(!(!t||["none","null","n/a","na"].includes(t.toLowerCase())))return t}function Cn(e){let t=Ne(e);return t?.toLowerCase()==="no-active-blocker"?void 0:t}function ge(){let e=W();for(let t of L()?.relationship_kinds??[])for(let n of t.definitions)e.register(n);return e}function Fe(e,t){let n=e.toLowerCase(),r=t.toLowerCase();return n!==r?n<r?-1:1:e!==t?e<t?-1:1:0}function wc(e){let t=new Map;for(let n of e.dependencies??[]){if(typeof n!="object"||n===null)continue;let r=n,o=Ne(r.id);if(!o)continue;let i=typeof r.kind=="string"?r.kind:"related",s=`${i}\0${o.toLowerCase()}`,a=t.get(s);a?a.count+=1:t.set(s,{target_id:o,kind:i,count:1})}return t}function bc(e,t=n=>n==="closed"||n==="canceled"){let n=[];for(let r of e)if(!(typeof r?.id!="string"||r.id.trim().length===0))for(let o of wc(r).values())o.count<2||n.push({holder_id:r.id.trim(),target_id:o.target_id,kind:o.kind,occurrences:o.count,holder_status:r.status,legacy_terminal:t(r.status)});return n.sort((r,o)=>{let i=Fe(r.holder_id,o.holder_id);if(i!==0)return i;let s=Fe(r.target_id,o.target_id);return s!==0?s:Fe(r.kind,o.kind)})}function kc(e,t,n,r,o){if(typeof n!="object"||n===null)return;let i=Ne(n.id);if(!i||i.toLowerCase()!==t.toLowerCase())return;let s=o.resolve(typeof n.kind=="string"?n.kind:"related");if(!(s?.ordering!==!0||(s.precedence??"source_before_target")!=="source_before_target"))return{holder_id:e.id.trim(),target_id:i,dependency_kind:s.kind,holder_status:e.status,legacy_terminal:r(e.status)}}function vc(e,t=r=>r==="closed"||r==="canceled",n=ge()){let r=new Map;for(let o of e){if(typeof o?.id!="string"||o.id.trim().length===0)continue;let i=Ne(o.blocked_by);if(i)for(let s of o.dependencies??[]){let a=kc(o,i,s,t,n);a&&r.set(`${a.holder_id.toLowerCase()}\0${a.target_id.toLowerCase()}\0${a.dependency_kind}`,a)}}return[...r.values()].sort((o,i)=>{let s=Fe(o.holder_id,i.holder_id);if(s!==0)return s;let a=Fe(o.target_id,i.target_id);return a!==0?a:Fe(o.dependency_kind,i.dependency_kind)})}function Sn(e,t=n=>n==="closed"||n==="canceled"){let n=e.filter(c=>typeof c?.id=="string"&&c.id.trim().length>0),r=new Set(n.map(c=>c.id.trim().toLowerCase())),o=new Map,i=(c,d,u,l)=>{let f=Ne(d);if(!f||r.has(f.toLowerCase()))return;let m={holder_id:c.id.trim(),target_id:f,kind:u,source:l,holder_status:c.status,legacy_terminal:t(c.status),no_active_blocker_sentinel:f.toLowerCase()==="no-active-blocker"};o.set(`${m.holder_id}::${m.target_id}::${m.kind}::${m.source}`,m)};for(let c of n){i(c,c.parent,"parent","parent"),i(c,c.blocked_by,"blocked_by","blocked_by");for(let d of c.dependencies??[]){if(typeof d!="object"||d===null)continue;let u=d;Le(u.source_kind)||i(c,u.id,typeof u.kind=="string"?u.kind:"related","dependency")}}let s=[...o.values()].sort((c,d)=>c.holder_id.localeCompare(d.holder_id)||c.target_id.localeCompare(d.target_id)||c.kind.localeCompare(d.kind)||c.source.localeCompare(d.source)),a=s.filter(c=>c.legacy_terminal);return{active:s.filter(c=>!c.legacy_terminal),legacy_terminal:a,no_active_blocker_sentinels:s.filter(c=>c.no_active_blocker_sentinel)}}function Ec(e){let t=new Map;for(let n of[...e.active,...e.legacy_terminal]){if(n.no_active_blocker_sentinel)continue;let r=n.target_id.trim(),o=r.toLowerCase();t.has(o)||t.set(o,r)}return[...t.values()].sort((n,r)=>n.localeCompare(r))}function xc(e){let t=new Map;for(let n of e)for(let r of n.dependencies??[]){if(typeof r!="object"||r===null||!Le(r.source_kind))continue;let o=Ne(r.id);o&&!t.has(o.toLowerCase())&&t.set(o.toLowerCase(),o)}return[...t.values()].sort((n,r)=>n.localeCompare(r))}function Ic(e,t=ge()){let n={};for(let r of e)for(let o of r.dependencies??[]){if(typeof o!="object"||o===null)continue;let i=o.kind;if(typeof i!="string")continue;let s=i.trim().toLowerCase().replaceAll("-","_"),a=t.resolve(i);a&&s!==a.kind&&(n[s]=(n[s]??0)+1)}return Object.fromEntries(Object.entries(n).sort(([r],[o])=>r.localeCompare(o)))}function Me(e,t,n){let r=n??ge(),o=e.filter(f=>typeof f?.id=="string"&&f.id.trim().length>0),i=new Map(o.map(f=>[f.id.trim().toLowerCase(),f.id.trim()])),s=Sn(o,t),a=Ec(s);for(let f of a)i.set(f.toLowerCase(),f);let c=xc(o),d=new Set(i.keys()),u=new Map;for(let f of c){let m=f;for(;d.has(m.toLowerCase());)m=`external:${m}`;u.set(f.toLowerCase(),m),d.add(m.toLowerCase())}let l=o.map(f=>{let m=Cn(f.parent),y=Cn(f.blocked_by),p=(f.dependencies??[]).flatMap(b=>{if(typeof b!="object"||b===null)return[];let w=b,_=Cn(w.id);return _?[{id:Le(w.source_kind)?u.get(_.toLowerCase()):i.get(_.toLowerCase()),kind:typeof w.kind=="string"?w.kind:"related"}]:[]});return{id:f.id.trim(),...m?{parent:i.get(m.toLowerCase())}:{},...y?{blocked_by:i.get(y.toLowerCase())}:{},dependencies:p}});return{graph:Ur.fromItems([...l,...a.map(f=>({id:f})),...c.map(f=>({id:u.get(f.toLowerCase())}))],r),details:[...o.map(f=>({id:f.id.trim(),title:f.title,status:f.status,...typeof f.type=="string"&&f.type.trim().length>0?{type:f.type.trim()}:{}})),...a.map(f=>({id:f,title:`[missing] ${f}`,status:"missing"})),...c.map(f=>({id:u.get(f.toLowerCase()),title:`[external] ${f}`,status:"external"}))],missingIdSet:new Set(a.map(f=>f.toLowerCase())),dangling:s,duplicateRows:bc(o,t),orderingContradictions:vc(o,t,r),legacyAliasCounts:Ic(o,r)}}import{createHash as Cc}from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="dea35fb9-9f9f-56ce-afc0-f4dc993012c3")}catch{}})();var Sc=64,Tc=8;function Dc(e,t){let n=(e.dependencies??[]).map(r=>{if(typeof r!="object"||r===null)return"";let o=r;return`${typeof o.kind=="string"?o.kind:"related"}:${typeof o.id=="string"?o.id:""}`}).sort().join(",");return[e.id,e.title,e.status,t(e.status)?"1":"0",typeof e.type=="string"?e.type.trim():"",e.parent??"",e.blocked_by??"",n].join("\0")}function Ct(e,t=r=>r==="closed"||r==="canceled",n=W()){let r=e.filter(i=>typeof i?.id=="string"&&i.id.trim().length>0).map(i=>Dc(i,t)).sort(),o=n.list().map(i=>xe(i)).sort();return Cc("sha256").update(r.join("")).update("").update(o.join("")).digest("hex")}function qo(e,t,n){let r=t??n;if(!Number.isInteger(r)||r<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`);return r}var Tn=class{#e=new Map;#t;#n;constructor(t={}){this.#t=qo("maxResultsPerWorkspace",t.maxResultsPerWorkspace,Sc),this.#n=qo("maxWorkspaces",t.maxWorkspaces,Tc)}lookup(t,n,r){let o=this.#e.get(t),i=!0;(o===void 0||o.fingerprint!==n)&&(o={fingerprint:n,assembly:r(),results:new Map},i=!1,!this.#e.has(t)&&this.#e.size>=this.#n&&this.#e.delete(this.#e.keys().next().value)),this.#e.delete(t),this.#e.set(t,o);let s=o,a=this.#t;return{assembly:s.assembly,assemblyReused:i,fingerprint:n,memoize(c,d){let u=s.results.get(c);if(u!==void 0||s.results.has(c))return s.results.delete(c),s.results.set(c,u),{value:structuredClone(u),reused:!0};let l=d();return s.results.size>=a&&s.results.delete(s.results.keys().next().value),s.results.set(c,structuredClone(l)),{value:l,reused:!1}}}}clear(){this.#e.clear()}},Wo=new Tn;function St(){return Wo}function jy(){Wo.clear()}(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]="31a800f7-1374-5e7c-ad23-ae3d8ebcebe0")}catch{}})();var Rc=["prerequisite","dependent","ancestor","descendant","provenance","related"],Ac=new TextEncoder;function Dn(e,t,n){let r=e??t;if(!Number.isInteger(r)||r<1)throw new TypeError(`Relationship context ${n} must be positive`);return r}function Tt(e){return Math.max(1,Math.ceil(Ac.encode(JSON.stringify(e)).byteLength/4))}function Rn(e,t,n){let r=n.resolve(e.kind);if(r?.ordering){let i=(r.precedence??"source_before_target")==="source_before_target"?e.source:e.target;return t===i?"prerequisite":"dependent"}if(r?.hierarchy){let i=(r.hierarchyDirection??"source_parent")==="source_parent"?e.source:e.target;return t===i?"ancestor":"descendant"}return e.kind==="discovered_from"||e.kind==="incident_from"?"provenance":"related"}function Lc(e,t,n,r){let o=e.filter(i=>i.source===t&&i.target===n||i.target===t&&i.source===n).map(i=>Rn(i,n,r));return[...new Set(o)].sort()}function Fc(e){return Rc.find(t=>e.includes(t))}function Nc(e,t,n,r){let o=r.direction??"both",i=r.maxDepth??3;if(!Number.isInteger(i)||i<0)throw new TypeError("Relationship context maxDepth must be non-negative");let s=new Set([t]),a=[{id:t,distance:0}],c=[],d=0,u=!1;for(let l=0;l<a.length;l+=1){r.signal?.throwIfAborted();let f=a[l];if(f.distance>=i&&u)continue;let m=e.neighborEdges(f.id,{direction:o,kinds:r.kinds,signal:r.signal});if(d+=m.meta.inspectedEdges,f.distance>=i){m.value.some(y=>!s.has(y.id))&&(u=!0);continue}for(let{id:y,edge:p}of m.value){if(s.has(y))continue;s.add(y);let b={id:y,distance:f.distance+1,via:f.id,role:Rn(p,y,n)};c.push(b),a.push(b)}}return c.sort((l,f)=>l.distance-f.distance||l.id.localeCompare(f.id)),{rows:c,visitedNodes:a.length,inspectedEdges:d,depthTruncated:u}}function Mc(e,t,n,r){let o={prerequisite:0,dependent:0,ancestor:0,descendant:0,provenance:0,related:0},i=e.neighborEdges(t,{direction:r.direction??"both",kinds:r.kinds,signal:r.signal}).value;for(let{id:s,edge:a}of i)o[Rn(a,s,n)]+=1;return{directEdges:o,directTotal:i.length,rootEdges:i.map(({edge:s})=>s)}}function Oc(e){let t=[],n=e.initialTokens;for(let r of e.candidates){if(t.length>=e.nodeLimit)break;let o=r.distance===1?Lc(e.rootEdges,e.rootId,r.id,e.registry):[],i={...e.details.get(r.id)??{id:r.id},distance:r.distance,role:o.length>0?Fc(o):r.role,via:r.via,reasons:o.length>0?o:[`${r.role} via ${r.via} (depth ${r.distance})`]},s=Tt(i);if(n+s>e.tokenBudget)break;t.push(i),n+=s}if(e.candidates.length>0&&t.length===0)throw new TypeError("Relationship context tokenBudget cannot fit one node");return{nodes:t,usedTokens:n}}function $c(e){let t=e.options.kinds?new Set(e.options.kinds.map(i=>e.registry.require(i).kind)):void 0,n=e.graph.edges().filter(i=>{if(!e.included.has(i.source)||!e.included.has(i.target))return!1;if(t===void 0||t.has(i.kind))return!0;let s=e.registry.resolve(i.kind)?.inverse;return s!==void 0&&t.has(s)}),r=[],o=e.initialTokens;for(let i of n){if(r.length>=e.edgeLimit)break;let s=Tt(i);if(o+s>e.tokenBudget)break;r.push(i),o+=s}return{edges:r,usedTokens:o,candidateCount:n.length}}function Vo(e,t,n,r={}){if(!e.nodes().includes(t))throw new TypeError(`Relationship node not found: ${t}`);let o=Dn(r.nodeLimit,20,"nodeLimit"),i=Dn(r.edgeLimit,40,"edgeLimit"),s=Dn(r.tokenBudget,1200,"tokenBudget"),a=r.registry??W(),c=new Map(n.map(Q=>[Q.id,Q])),d=c.get(t)??{id:t},{evidence:u=[],...l}=d,f=[...u],m=Nc(e,t,a,r),{rootEdges:y,...p}=Mc(e,t,a,r),b=de("relationship-context",{rootId:t,direction:r.direction??"both",kinds:[...r.kinds??[]].sort(),maxDepth:r.maxDepth??3}),w=Se(m.rows,r.cursor,b,({id:Q})=>Q),_=m.rows.slice(w),k=Tt(l)+Tt(f);if(k>s)throw new TypeError("Relationship context tokenBudget cannot fit root and evidence");let E=Oc({candidates:_,details:c,rootEdges:y,rootId:t,registry:a,nodeLimit:o,tokenBudget:s,initialTokens:k}),{nodes:I}=E,P=new Set([t,...I.map(({id:Q})=>Q)]),D=$c({graph:e,included:P,options:r,registry:a,edgeLimit:i,tokenBudget:s,initialTokens:E.usedTokens}),{edges:U,usedTokens:ce}=D,B=w+I.length,M=B<m.rows.length,q=I.at(-1),X=D.candidateCount-U.length,J=m.depthTruncated||M||X>0,ke={rootId:t,...l.status===void 0?{}:{rootStatus:l.status},...p,discoveredNodes:m.rows.length,returnedNodes:I.length,returnedEdges:U.length,omittedNodes:m.rows.length-B,omittedEdges:X,evidenceCount:f.length,hasMore:M};return{root:l,summary:ke,nodes:I,edges:U,evidence:f,meta:{exact:!0,truncated:J,completeness:J?"truncated":"complete",nodeLimit:o,edgeLimit:i,tokenBudget:s,usedTokens:ce,visitedNodes:m.visitedNodes,inspectedEdges:m.inspectedEdges,omittedNodes:m.rows.length-B,omittedEdges:X,...M&&q?{nextCursor:Z(b,q.id,B-1)}:{}}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ee0547d9-ae0f-5762-8bff-e25f0a3cd4d5")}catch{}})();var Pc=["tree","graph","context"],jc=["none","repeated"],Uc=["outgoing","incoming","both"],Bc=32,Gc=200,Kc=400,zc=16e3;function Hc(e){let t=e?.trim().toLowerCase()??"tree";if(Pc.includes(t))return t;throw new h(`Invalid --format value "${e}". Use "tree", "graph", or "context".`,g.USAGE)}function te(e,t){if(e===void 0)return;let n=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(n)||n<1)throw new h(`Invalid --${t} value "${e}". Use a positive integer.`,g.USAGE);return n}function Dt(e){if(e===void 0)return;let t=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(t)||t<0)throw new h(`Invalid --max-depth value "${e}". Use a non-negative integer.`,g.USAGE);return t}function qc(e){let t=e?.trim().toLowerCase()??"none";if(jc.includes(t))return t;throw new h(`Invalid --collapse value "${e}". Use "none" or "repeated".`,g.USAGE)}function Ln(e){let t=e?.trim().toLowerCase()??"both";if(Uc.includes(t))return t;throw new h(`Invalid --direction value "${e}". Use "outgoing", "incoming", or "both".`,g.USAGE)}function Fn(e,t=W()){if(e===void 0)return;let n=(Array.isArray(e)?e:[e]).flatMap(o=>o.split(",")).map(o=>o.trim()).filter(o=>o.length>0);if(n.length===0)return;let r=new Set;for(let o of n){let i=t.resolve(o);if(!i){let s=t.list().map(a=>a.kind).join(", ");throw new h(`Invalid --kind value "${o}". Registered kinds: ${s}.`,g.USAGE)}r.add(i.kind)}return[...r].sort()}function Wc(e){if(!e||e.length===0)return[];let t=e.map(({id:r,kind:o})=>({id:r.trim(),kind:o.trim().toLowerCase()})).sort((r,o)=>{let i=r.kind.localeCompare(o.kind);return i!==0?i:r.id.localeCompare(o.id)}),n=new Map;for(let r of t){let o=`${r.kind.toLowerCase()}::${r.id.toLowerCase()}`;n.has(o)||n.set(o,{id:r.id,kind:r.kind})}return[...n.values()]}function Vc(e){return{id:e.id,title:e.title,type:e.type,status:e.status,dependencies:Wc(e.dependencies)}}function Yc(e){return ft(new TextEncoder().encode(JSON.stringify({...e,dependencies:void 0})).byteLength)}function Xc(e,t,n,r,o,i,s,a,c){for(let d of t.dependencies){let u=Math.max(1,Math.ceil(JSON.stringify({from:e.id,to:d.id,kind:d.kind}).length/3));if(a.nodes>=a.nodeLimit){e.truncated=!0,a.reasons.add("node_limit");break}if(a.edges>=a.edgeLimit){e.truncated=!0,a.reasons.add("edge_limit");break}if(a.estimatedTokens+u>=a.tokenBudget){e.truncated=!0,a.reasons.add("token_budget");break}a.edges+=1,a.estimatedTokens+=u,e.dependencies.push(Xo(d.id,n,r,o,i,s,a,c+1,d.kind))}}function Jc(e,t,n,r,o,i,s,a){return s.estimatedTokens>=s.tokenBudget&&t?.dependencies.length?(e.truncated=!0,s.reasons.add("token_budget"),!0):!t||e.cycle?!0:r!==void 0&&a>=r?(t.dependencies.length>0&&(e.truncated=!0,s.reasons.add("max_depth")),!0):o==="repeated"&&i.has(n)?(e.collapsed=!0,!0):!1}function Xo(e,t,n,r,o,i,s,a=0,c){let d=e.trim().toLowerCase(),u=t.get(d),l={id:u?.id??e,title:u?.title,type:u?.type,status:u?.status,via:c,missing:!u,cycle:n.has(d),dependencies:[]};if(s.nodes+=1,s.estimatedTokens+=Yc(l),Jc(l,u,d,r,o,i,s,a))return l;o==="repeated"&&i.add(d);let f=new Set(n);return f.add(d),Xc(l,u,t,f,r,o,i,s,a),l}function Yo(e,t){return!e||e.missing&&!t.missing?t:{...e,title:e.title??t.title,type:e.type??t.type,status:e.status??t.status}}function Qc(e){let t=new Map,n=new Map,r=[e];for(;r.length>0;){let a=r.pop();t.set(a.id,Yo(t.get(a.id),{id:a.id,title:a.title,type:a.type,status:a.status,missing:a.missing}));for(let c of a.dependencies){t.set(c.id,Yo(t.get(c.id),{id:c.id,title:c.title,type:c.type,status:c.status,missing:c.missing}));let d=c.via??"related",u=`${a.id}::${c.id}::${d}`;n.has(u)||n.set(u,{from:a.id,to:c.id,kind:d}),c.cycle||r.push(c)}}let o=[...t.values()].sort((a,c)=>a.id.localeCompare(c.id)),i=[...n.values()].sort((a,c)=>{let d=a.from.localeCompare(c.from);if(d!==0)return d;let u=a.to.localeCompare(c.to);return u!==0?u:a.kind.localeCompare(c.kind)}),s=o.filter(a=>a.missing).map(a=>a.id);return{root_id:e.id,nodes:o,edges:i,missing_ids:s}}function Jo(e,t,n){let r=new Set,o=new Set,i=new Set,s=new Set,a=[{id:e,depth:0}],c=0;for(;c<a.length;){let d=a[c++],u=d.id.trim().toLowerCase();r.add(u);let l=t.get(u);if(!l){i.add(u);continue}if(!(n!==void 0&&d.depth>=n)&&!s.has(u)){s.add(u);for(let f of l.dependencies)o.add(`${u}::${f.id.trim().toLowerCase()}::${f.kind}`),a.push({id:f.id,depth:d.depth+1})}}return{node_count:r.size,edge_count:o.size,edge_basis:"deduplicated_directed",missing_count:i.size}}function Zc(e,t=W()){let n=Dt(e.maxDepth),r=te(e.nodeLimit,"node-limit"),o=te(e.edgeLimit,"edge-limit"),i=te(e.tokenBudget,"token-budget"),s=Fn(e.kind,t);return{direction:Ln(e.direction),...s===void 0?{}:{kinds:s},...n===void 0?{}:{maxDepth:n},...r===void 0?{}:{nodeLimit:r},...o===void 0?{}:{edgeLimit:o},...i===void 0?{}:{tokenBudget:i},...e.cursor?.trim()?{cursor:e.cursor.trim()}:{}}}function ed(e,t,n,r){return Vo(e.graph,t,e.details.map(o=>o.id===t&&r.length>0?{...o,evidence:r}:o),n)}function An(e,t,n,r){for(let o of n.slice(0,r)){let i=o?.trim();i&&e.push(`${t}:${i}`)}}async function td(e,t,n,r){let o=await le(e,t,n.id_prefix,n.item_format,r);if(!o)return[];let{document:i}=await fe(o,{schema:n.schema}),s=i.metadata,a=s.files??[],c=s.tests??[],d=s.docs??[],u=[["files",a.length],["tests",c.length],["docs",d.length],["comments",(s.comments??[]).length],["notes",(s.notes??[]).length],["learnings",(s.learnings??[]).length]];if(u.every(([,f])=>f===0))return[];let l=[`linked:${u.map(([f,m])=>`${f}=${m}`).join(",")}`];return An(l,"file",a.map(f=>f.path),3),An(l,"test",c.map(f=>f.command??f.path),2),An(l,"doc",d.map(f=>f.path),2),l}function nd(e){let{canonicalId:t,context:n,missingCount:r,missingReferences:o,referenceLimit:i,summaryOnly:s}=e;return{id:t,format:"context",node_count:n.nodes.length+1,edge_count:n.edges.length,edge_basis:"deduplicated_directed",missing_count:r,missing_scope:"traversal",missing_reference_count:o.length,...s?{}:{missing_references:o.slice(0,i),context:n}}}function rd(e){let{row:t,missingReachableSet:n,packetIds:r,filteredKinds:o,registry:i}=e;if(t.no_active_blocker_sentinel||!n.has(t.target_id.trim().toLowerCase())||!r.has(t.holder_id))return!1;if(o===void 0)return!0;let s=i.resolve(t.kind);return s!==void 0&&(o.has(s.kind)||s.inverse!==void 0&&o.has(s.inverse))}function Qo(e,t,n){let r;for(;;){let o=ft(new TextEncoder().encode(gn(mn("deps",e),t)).byteLength);if(o===r)return o;n(o),r=o}}function od(e){return e instanceof TypeError&&e.message.startsWith("Relationship context tokenBudget cannot fit ")}function id(e){try{return ed(e.assembly,e.canonicalId,{...e.contextOptions,...e.internalTokenBudget===void 0?{}:{tokenBudget:e.internalTokenBudget}},e.rootEvidence)}catch(t){if(e.smallestResult!==void 0&&od(t))return e.smallestResult;throw t}}function sd(e){let{assembly:t,canonicalId:n,contextOptions:r,rootEvidence:o,summaryOnly:i,outputFormat:s,missingCount:a,missingReferences:c}=e,u=r.edgeLimit??40,l=r.tokenBudget,f,m;for(;;){let y=id({assembly:t,canonicalId:n,contextOptions:r,internalTokenBudget:l,rootEvidence:o,smallestResult:m});if("format"in y)return y;let p=y;f??=p.meta.tokenBudget,l??=f;let b=nd({canonicalId:n,context:p,missingCount:a,missingReferences:c,referenceLimit:u,summaryOnly:i});if(m=b,i||(p.meta.tokenBudget=f,p.meta.usedTokens=Qo(Oe(b,!1),s,k=>{p.meta.usedTokens=k}),p.meta.usedTokens<=f))return b;if(u>0){u-=1;continue}let w=l,_=w*f/p.meta.usedTokens;l=Math.min(w-1,Math.max(1,Math.floor(_*.9)))}}function ad(e){let{assembly:t,canonicalId:n,options:r,rootEvidence:o,summaryOnly:i,outputFormat:s}=e,a=Zc(r,t.graph.registry()),c=t.graph.closure(n,{direction:a.direction,...a.kinds===void 0?{}:{kinds:a.kinds},maxDepth:a.maxDepth??3}),d=c.value.filter(p=>t.missingIdSet.has(p.toLowerCase())),u=new Set(d.map(p=>p.toLowerCase())),l=t.graph.registry(),f=a.kinds?new Set(a.kinds.map(p=>l.require(p).kind)):void 0,m=new Set([n,...c.value]),y=[...t.dangling.active,...t.dangling.legacy_terminal].filter(p=>rd({row:p,missingReachableSet:u,packetIds:m,filteredKinds:f,registry:l}));return sd({assembly:t,canonicalId:n,contextOptions:a,rootEvidence:o,summaryOnly:i,outputFormat:s,missingCount:d.length,missingReferences:y})}function cd(e){let t=[e],n;for(;t.length>0;){let r=t.pop();r.dependencies.length>0&&(n=r,t.push(...r.dependencies))}return n?(n.dependencies.pop(),n.truncated=!0,!0):!1}function dd(e,t,n,r,o,i,s){let a=o??Bc,c=te(n.nodeLimit,"node-limit")??Gc,d=te(n.edgeLimit,"edge-limit")??Kc,u=te(n.tokenBudget,"token-budget")??zc,l={nodeLimit:c,edgeLimit:d,tokenBudget:u,nodes:0,edges:0,estimatedTokens:0,reasons:new Set},f=Xo(e,r,new Set,a,t==="graph"?"repeated":i,new Set,l),m=Jo(e,r,void 0),y;for(;;){let p=Qc(f),b=l.reasons.size===0?void 0:{reasons:[...l.reasons].sort(),limits:{max_depth:a,node_limit:c,edge_limit:d,token_budget:u},estimated_tokens:0,total_node_count:m.node_count,total_edge_count:m.edge_count,omitted_node_count:Math.max(0,m.node_count-p.nodes.length),omitted_edge_count:Math.max(0,m.edge_count-p.edges.length)},w={id:e,format:t,node_count:p.nodes.length,edge_count:p.edges.length,edge_basis:"deduplicated_directed",missing_count:p.missing_ids.length,...b?{truncation:b}:{}};if(y=t==="tree"?{...w,tree:f}:{...w,graph:p},(y.truncation===void 0?ft(new TextEncoder().encode(gn(mn("deps",Oe(y,!1)),s)).byteLength):Qo(Oe(y,!1),s,k=>{y.truncation.estimated_tokens=k}))<=u)return y;if(!cd(f))return l.reasons.add("token_budget"),y;l.reasons.add("token_budget")}}function Oe(e,t,n={}){let r={name:e.format==="tree"?"dependency_tree":e.format==="graph"?"dependency_graph":"relationship_context",restore_with:"--full"};return{...e,legacy_alias_counts:n,projection:{mode:t?"summary":"full",declared_field_groups:[r],included_field_groups:t?[]:[r.name]}}}async function a_(e,t,n){let r=S(process.cwd(),n.path);if(!await A($(r)))throw new h(`Tracker is not initialized at ${r}. Run pm init first.`,g.NOT_FOUND);let o=Hc(t.format),i=Dt(t.maxDepth),s=qc(t.collapse);ut(t.summary===!0,t.full===!0,"--summary");let a=t.summary===!0,c=await T(r),d=O(c,L()),u=await ee(r,c.item_format,d.type_to_folder,void 0,c.schema),l=z(c.schema),f=new Map(u.map(y=>[y.id.trim().toLowerCase(),Vc(y)])),m=Sn(u,y=>N(y,l));for(let y of[...m.active,...m.legacy_terminal]){let p=f.get(y.holder_id.trim().toLowerCase()),b=y.kind.trim().toLowerCase();p&&!p.dependencies.some(w=>w.id.trim().toLowerCase()===y.target_id.trim().toLowerCase()&&w.kind===b)&&p.dependencies.push({id:y.target_id,kind:b})}if(!f.has(e.trim().toLowerCase()))throw new h(`Item ${e} not found`,g.NOT_FOUND);if(o==="context"){let y=f.get(e.trim().toLowerCase()).id,p=a?[]:await td(r,y,c,d.type_to_folder),b=k=>N(k,l),w=ge(),_=St().lookup(r,Ct(u,b,w),()=>Me(u,b,w));return Oe(ad({assembly:_.assembly,canonicalId:y,options:t,rootEvidence:p,summaryOnly:a,outputFormat:n.json===!0?"json":"toon"}),a,_.assembly.legacyAliasCounts)}return a?Oe({id:e,format:o,...Jo(e,f,i)},!0,Object.fromEntries(Object.entries(Me(u,y=>N(y,l)).legacyAliasCounts))):Oe(dd(e,o,t,f,i,s,n.json===!0?"json":"toon"),!1,Object.fromEntries(Object.entries(Me(u,y=>N(y,l)).legacyAliasCounts)))}(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]="c0fb747e-1f9f-55c4-808b-b77d3a881f87")}catch{}})();var ud=5,ld=1e4,fd=8;function Nn(e,t){if(!Number.isFinite(t)||!Number.isInteger(t)||t<0)throw new TypeError(`Invalid path ${e} bound: ${String(t)}`)}function Rt(e,t){return t.hierarchyDirection==="target_parent"?e.target:e.source}function He(e,t){return(t.precedence??"source_before_target")==="target_before_source"?e.target:e.source}function At(e,t){let n=He(e,t);return{predecessor:n,successor:n===e.source?e.target:e.source}}function md(e,t,n){if(t===void 0)return;let r=e.registry(),o=new Set;for(let i of t){let s=r.require(i);if(!s[n])throw new TypeError(`Relationship kind ${s.kind} is not a ${n} kind`);o.add(s.kind)}return o}function pd(e,t,n,r,o){let i=e.registry(),s=e.neighborEdges(t,{direction:"both",...n===void 0?{}:{kinds:[...n]}}),a=[],c=new Set;for(let d of s.value){let u=i.require(d.edge.kind);u[r]&&o(d,u,t)&&(c.has(d.id)||(c.add(d.id),a.push(d.id)))}return{neighbors:a,inspectedEdges:s.meta.inspectedEdges}}function gd(e,t,n,r,o,i){if(t>=n)return e.neighbors.some(s=>!i.seen.has(s))&&(i.truncated=!0),!1;for(let s of e.neighbors)if(!i.seen.has(s)){if(i.seen.add(s),i.queue.push({id:s,depth:t+1}),!i.resumed){s===o&&(i.resumed=!0);continue}if(i.value.length>=r)return i.truncated=!0,!0;i.value.push(s)}return!1}function Lt(e,t,n,r,o){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`);let i=md(e,n.kinds,r),s=n.limit??Number.POSITIVE_INFINITY,a=n.maxDepth??Number.POSITIVE_INFINITY,c=n.after,d={seen:new Set([t]),value:[],queue:[{id:t,depth:0}],resumed:c===void 0,truncated:!1},u=0,l=0;for(let f=0;f<d.queue.length;f+=1){n.signal?.throwIfAborted();let m=d.queue[f];u+=1;let y=pd(e,m.id,i,r,o);if(l+=y.inspectedEdges,gd(y,m.depth,a,s,c,d))break}if(!d.resumed)throw new TypeError(`Traversal cursor not found in sequence: ${c}`);return{value:d.value,meta:{visitedNodes:u,inspectedEdges:l,truncated:d.truncated,nextCursor:d.value.at(-1)}}}function Zo(e,t){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`)}function ei(e,t,n,r,o){let i=e.neighborEdges(t.nodes.at(-1),{direction:r,...n.kinds===void 0?{}:{kinds:n.kinds}});return o.inspectedEdges+=i.meta.inspectedEdges,i.value.filter(s=>!t.nodeSet.has(s.id))}function hd(e,t,n,r,o,i,s){for(let a of ei(e,t,r,o,s)){let c=[...t.nodes,a.id],d=new Set(t.nodeSet).add(a.id),u=[...t.edges,a.edge];if(a.id===n){if(s.value.push({nodes:c,edges:u,length:u.length}),s.value.length>=i)return!0}else s.queue.push({nodes:c,nodeSet:d,edges:u})}return!1}function ti(e,t,n={}){return Lt(e,t,n,"hierarchy",(r,o)=>Rt(r.edge,o)===r.id)}function ni(e,t,n={}){return Lt(e,t,n,"hierarchy",(r,o,i)=>Rt(r.edge,o)===i)}function ri(e,t,n={}){return Lt(e,t,n,"ordering",(r,o)=>He(r.edge,o)===r.id)}function oi(e,t,n={}){return Lt(e,t,n,"ordering",(r,o,i)=>He(r.edge,o)===i)}function yd(e,t,n,r,o,i,s,a){let c={value:[],queue:[{nodes:[t],nodeSet:new Set([t]),edges:[]}],inspectedEdges:0},d=0,u=!1,l=o+1;for(let f=0;f<c.queue.length;f+=1){if(r.signal?.throwIfAborted(),c.value.length>=l||d>=i){u=!0;break}let m=c.queue[f];if(d+=1,m.edges.length>=s){ei(e,m,r,a,c).length>0&&(u=!0);continue}if(hd(e,m,n,r,a,l,c)){u=!0;break}}return{value:c.value.slice(0,o),meta:{visitedNodes:d,inspectedEdges:c.inspectedEdges,truncated:u}}}function ii(e,t,n,r={}){Zo(e,t),Zo(e,n);let o=r.maxPaths??ud,i=r.maxVisitedPaths??ld,s=r.maxDepth??fd;Nn("maxPaths",o),Nn("maxVisitedPaths",i),Nn("maxDepth",s);let a=r.direction??"outgoing";r.signal?.throwIfAborted();for(let c of r.kinds??[])e.registry().require(c);return t===n?o===0?{value:[],meta:{visitedNodes:1,inspectedEdges:0,truncated:!0}}:{value:[{nodes:[t],edges:[],length:0}],meta:{visitedNodes:1,inspectedEdges:0,truncated:!1}}:yd(e,t,n,r,o,i,s,a)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="24898402-1568-5b05-9072-f89dd91f25a6")}catch{}})();var _d=16,wd=2,bd=8;function Ft(e,t){if(!Number.isInteger(t)||t<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`)}function Nt(e,t,n){let r=e.registry(),o=t===void 0?void 0:new Set(t.map(i=>r.require(i).kind));for(let i of e.edges()){if(i.source===i.target)continue;let s=r.require(i.kind);o!==void 0&&!(o.has(s.kind)||s.inverse!==void 0&&o.has(s.inverse))||n(i,s)}}function kd(e,t){let n=new Map;Nt(e,t,r=>{si(n,r.source,r.target),si(n,r.target,r.source)});for(let r of n.values())r.sort();return n}function si(e,t,n){let r=e.get(t);r===void 0?e.set(t,[n]):r.push(n)}function vd(e,t){let n=new Map;for(let i of e){let s=t.get(i);n.set(s,(n.get(s)??0)+1)}let r,o=0;for(let[i,s]of n)(s>o||s===o&&i<r)&&(r=i,o=s);return r}function Ed(e,t){let n=new Map;for(let[o,i]of e){let s=n.get(i);s===void 0?n.set(i,[o]):s.push(o)}let r=[];for(let o of n.values())o.length<t||(o.sort(),r.push({representative:o[0],size:o.length,members:o}));return r.sort((o,i)=>i.size-o.size||o.representative.localeCompare(i.representative))}function ai(e,t={}){let n=t.maxIterations??_d,r=t.minSize??wd;Ft("maxIterations",n),Ft("minSize",r);let o=kd(e,t.kinds),i=e.nodes(),s=new Map(i.map(l=>[l,l])),a=0,c=!1,d=0,u=0;for(;a<n&&!c;){t.signal?.throwIfAborted(),a+=1,c=!0;for(let l of i){d+=1;let f=o.get(l);if(f===void 0)continue;u+=f.length;let m=vd(f,s);m!==s.get(l)&&(s.set(l,m),c=!1)}}return{value:{communities:Ed(s,r),iterations:a,converged:c},meta:{visitedNodes:d,inspectedEdges:u,truncated:!c}}}function Mt(e){return e.direction==="directed"&&(e.ordering||e.hierarchy)}function Ot(e){return e.inverse!==void 0&&e.inverse<e.kind?e.inverse:e.kind}function $t(e,t){return(t.hierarchy?Rt(e,t):e.source===He(e,t)?e.target:e.source)===e.target?{from:e.source,to:e.target}:{from:e.target,to:e.source}}function xd(e,t){if(t===void 0)return;let n=e.registry(),r=new Set;for(let o of t){let i=n.require(o);if(!Mt(i))throw new TypeError(`Relationship kind ${i.kind} is not a directed ordering or hierarchy kind`);r.add(Ot(i))}return r}function Id(e,t){let n=e.registry(),r=new Map;for(let o of e.edges()){let i=n.require(o.kind);if(!Mt(i))continue;let s=Ot(i);if(t!==void 0&&!t.has(s))continue;let a=$t(o,i);if(a.from===a.to)continue;let c=r.get(s);c===void 0&&(c={adjacency:new Map,records:[]},r.set(s,c));let d=c.adjacency.get(a.from);d===void 0?c.adjacency.set(a.from,new Set([a.to])):d.add(a.to),c.records.push({...a,edge:o})}return r}function Cd(e){let t=new Map;for(let[n,r]of e.adjacency)t.set(n,[...r].sort());return t}function Sd(e,t,n,r){let o=[r];for(let i=n;i!==t;i=e.get(i))o.push(i);return o.push(t),o.reverse()}function Td(e,t,n,r,o,i){for(let s of e.get(n.id)??[])if(i.inspectedEdges+=1,!(n.depth===0&&s===t.to)&&!r.has(s)){if(r.set(s,n.id),s===t.to)return Sd(r,t.from,n.id,s);o.push({id:s,depth:n.depth+1})}}function Dd(e,t,n,r){let o=new Map([[t.from,t.from]]),i=[{id:t.from,depth:0}];for(let s=0;s<i.length;s+=1){let a=i[s];if(r.visitedNodes+=1,a.depth>=n)continue;let c=Td(e,t,a,o,i,r);if(c!==void 0)return c}}function $e(e,t={}){let n=t.maxDepth??bd;Ft("maxDepth",n),t.limit!==void 0&&Ft("limit",t.limit);let r=t.limit??Number.POSITIVE_INFINITY,o=xd(e,t.kinds),i=Id(e,o),s=[],a={visitedNodes:0,inspectedEdges:0},c=!1;e:for(let d of[...i.keys()].sort()){let u=i.get(d),l=Cd(u);for(let f of u.records){t.signal?.throwIfAborted();let m=Dd(l,f,n,a);if(m!==void 0){if(s.length>=r){c=!0;break e}s.push({edge:f.edge,witness:m})}}}return{value:s,meta:{visitedNodes:a.visitedNodes,inspectedEdges:a.inspectedEdges,truncated:c}}}function Rd(e,t,n,r,o){let i=new Set,s=[];for(let a of n){if(a.id===e||i.has(a.id))continue;if(!o.seen.has(a.id)){if(t>=r){o.truncated=!0;continue}o.seen.add(a.id),o.queue.push({id:a.id,depth:t+1})}i.add(a.id),s.push(a.id);let c=o.predecessors.get(a.id);c===void 0&&(c=new Set,o.predecessors.set(a.id,c)),c.add(e)}return s}function Ad(e,t,n){let r=n.direction??"outgoing",o=n.maxDepth??Number.POSITIVE_INFINITY,i=[],s=new Map,a={seen:new Set([t]),queue:[{id:t,depth:0}],predecessors:new Map,truncated:!1},c=0;for(let d=0;d<a.queue.length;d+=1){n.signal?.throwIfAborted();let{id:u,depth:l}=a.queue[d];i.push(u);let f=e.neighborEdges(u,{direction:r,...n.kinds===void 0?{}:{kinds:n.kinds}});c+=f.meta.inspectedEdges,s.set(u,Rd(u,l,f.value,o,a))}return{order:i,successors:s,predecessors:a.predecessors,inspectedEdges:c,truncated:a.truncated}}function Ld(e,t){let n=[],r=new Set([t]),o=[{id:t,index:0}];for(;o.length>0;){let i=o.at(-1),s=e.successors.get(i.id);if(i.index<s.length){let a=s[i.index];i.index+=1,r.has(a)||(r.add(a),o.push({id:a,index:0}))}else n.push(i.id),o.pop()}return n.reverse()}function Fd(e,t,n,r){let o=e,i=t;for(;o!==i;){for(;r.get(o)>r.get(i);)o=n.get(o);for(;r.get(i)>r.get(o);)i=n.get(i)}return o}function Nd(e,t,n){let r;for(let o of[...e].sort())t.has(o)&&(r=r===void 0?o:Fd(r,o,t,n));return r}function Md(e,t,n,r,o){let i=new Map([[t,t]]),s=!0;for(;s;){s=!1;for(let a of n){if(o?.throwIfAborted(),a===t)continue;let c=Nd(e.predecessors.get(a),i,r);c!==void 0&&i.get(a)!==c&&(i.set(a,c),s=!0)}}return i}function ci(e,t,n={}){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`);if(n.maxDepth!==void 0&&(!Number.isInteger(n.maxDepth)||n.maxDepth<0))throw new TypeError(`Invalid maxDepth bound: ${String(n.maxDepth)}`);let r=Ad(e,t,n),o=Ld(r,t),i=new Map(o.map((d,u)=>[d,u])),s=Md(r,t,o,i,n.signal),a=new Map(o.map(d=>[d,1]));for(let d=o.length-1;d>=0;d-=1){let u=o[d];if(u===t)continue;let l=s.get(u);a.set(l,a.get(l)+a.get(u))}let c=o.filter(d=>d!==t).map(d=>({id:d,idom:s.get(d),dominatedCount:a.get(d)-1})).sort((d,u)=>u.dominatedCount-d.dominatedCount||d.id.localeCompare(u.id));return{value:{root:t,reachableCount:r.order.length,rows:c},meta:{visitedNodes:r.order.length,inspectedEdges:r.inspectedEdges,truncated:r.truncated}}}(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]="348c9246-2fb9-529e-b627-f60c901a6cf2")}catch{}})();function di(e){return Math.round(e*1e6)/1e6}function ui(e,t,n){let r=e.get(t);r===void 0?e.set(t,new Set([n])):r.add(n)}function li(e,t){let n=new Map(e.nodes().map(o=>[o,new Set]));Nt(e,t,o=>{n.get(o.source).add(o.target),n.get(o.target).add(o.source)});let r=new Map;for(let[o,i]of n)r.set(o,[...i].sort());return r}function Od(e,t){let n=new Map,r=new Map;return Nt(e,t,(o,i)=>{if(!i.ordering)return;let{predecessor:s,successor:a}=At(o,i);ui(r,s,a),ui(n,a,s)}),{incoming:n,outgoing:r}}function $d(e,t,n){let r=new Map([[e,0]]),o=new Map([[e,1]]),i=new Map,s=[],a=[e],c=0,d=0;for(let u=0;u<a.length;u+=1){let l=a[u];n.visitedNodes+=1,s.push(l);let f=r.get(l);l!==e&&(c+=1,d+=f);for(let m of t.get(l))if(n.inspectedEdges+=1,r.has(m)||(r.set(m,f+1),a.push(m)),r.get(m)===f+1){o.set(m,(o.get(m)??0)+o.get(l));let y=i.get(m);y===void 0?i.set(m,[l]):y.push(l)}}return{stack:s,sigma:o,predecessors:i,reachableCount:c,distanceSum:d}}function Pd(e,t,n){let r=new Map;for(let o=e.stack.length-1;o>=0;o-=1){let i=e.stack[o],s=(1+(r.get(i)??0))/e.sigma.get(i);for(let a of e.predecessors.get(i)??[])r.set(a,(r.get(a)??0)+e.sigma.get(a)*s);i!==t&&n.set(i,(n.get(i)??0)+(r.get(i)??0))}}function jd(e,t){return t<=1||e.reachableCount===0?0:e.reachableCount/(t-1)*(e.reachableCount/e.distanceSum)}function Ud(e,t,n,r,o){return{id:e,degree:t.get(e).length,inDegree:n.incoming.get(e)?.size??0,outDegree:n.outgoing.get(e)?.size??0,betweenness:di((r.get(e)??0)/2),closeness:di(o.get(e))}}function fi(e,t={}){let n=li(e,t.kinds),r=Od(e,t.kinds),o=e.nodes(),i=new Map,s=new Map,a={visitedNodes:0,inspectedEdges:0};for(let u of o){t.signal?.throwIfAborted();let l=$d(u,n,a);s.set(u,jd(l,o.length)),Pd(l,u,i)}let c=0;for(let u of n.values())c+=u.length;let d=o.map(u=>Ud(u,n,r,i,s)).sort((u,l)=>l.betweenness-u.betweenness||l.degree-u.degree||u.id.localeCompare(l.id));return{value:{nodeCount:o.length,edgeCount:c/2,rows:d},meta:{visitedNodes:a.visitedNodes,inspectedEdges:a.inspectedEdges,truncated:!1}}}function Bd(e,t){return e<=t?{source:e,target:t}:{source:t,target:e}}function Gd(e,t,n){let o=t.get(e.node)[e.neighborIndex];if(e.neighborIndex+=1,n.inspectedEdges+=1,o!==e.parent){if(n.discovery.has(o)){n.low.set(e.node,Math.min(n.low.get(e.node),n.discovery.get(o)));return}return e.children+=1,n.discovery.set(o,n.timer),n.low.set(o,n.timer),n.timer+=1,{node:o,parent:e.node,neighborIndex:0,children:0}}}function Kd(e,t,n){if(e.parent===null){e.children>1&&n.articulation.add(e.node);return}let r=e.parent,o=n.low.get(e.node);n.low.set(r,Math.min(n.low.get(r),o)),r!==t&&o>=n.discovery.get(r)&&n.articulation.add(r),o>n.discovery.get(r)&&n.bridges.push(Bd(r,e.node))}function zd(e,t,n,r){n.discovery.set(e,n.timer),n.low.set(e,n.timer),n.timer+=1;let o=[{node:e,parent:null,neighborIndex:0,children:0}];for(;o.length>0;){r?.throwIfAborted();let i=o.at(-1);if(i.neighborIndex<t.get(i.node).length){let s=Gd(i,t,n);s!==void 0&&o.push(s)}else Kd(i,e,n),o.pop()}}function Pt(e,t={}){let n=li(e,t.kinds),r={discovery:new Map,low:new Map,timer:0,articulation:new Set,bridges:[],inspectedEdges:0};for(let o of e.nodes())r.discovery.has(o)||zd(o,n,r,t.signal);return{value:{articulationPoints:[...r.articulation].sort(),bridges:r.bridges.sort((o,i)=>o.source.localeCompare(i.source)||o.target.localeCompare(i.target))},meta:{visitedNodes:r.discovery.size,inspectedEdges:r.inspectedEdges,truncated:!1}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="f155ac72-64eb-5316-b016-954abd48c0e7")}catch{}})();function Hd(e){let t=e.registry(),n=new Map,r=new Set;for(let o of e.edges()){let i=t.require(o.kind);if(!i.ordering)continue;let{predecessor:s,successor:a}=At(o,i);if(r.add(s),r.add(a),s===a)continue;let c=n.get(s);c===void 0?n.set(s,new Set([a])):c.add(a)}return{forward:n,participants:r}}function qd(e,t,n,r){if(e===void 0)return r;let o=r;for(let i of e)t.has(i)&&(o=Math.min(o,n.get(i)));return o}function Wd(e,t,n){let r=n-t;return{id:e,earliestStart:t,earliestFinish:t+1,latestStart:n,latestFinish:n+1,slack:r,critical:r===0}}function Vd(e,t,n,r,o){let i=new Map;for(let s=e.length-1;s>=0;s-=1){let a=e[s],c=qd(t.forward.get(a),r,i,o);i.set(a,c-1)}return e.map(s=>Wd(s,n[s],i.get(s))).sort((s,a)=>s.slack-a.slack||s.earliestStart-a.earliestStart||s.id.localeCompare(a.id))}function mi(e,t={}){t.signal?.throwIfAborted();let n=bt(e,{registry:e.registry()}),r=Hd(e),o=new Set(n.order),i=n.order.filter(d=>r.participants.has(d)),s=i.reduce((d,u)=>Math.max(d,n.depth[u]+1),0),a=Vd(i,r,n.depth,o,s),c=a.length>0;return{exact:!0,acyclic:n.acyclic,makespan:s,scheduledCount:a.length,criticalPath:c?n.criticalPath:[],criticalPathLength:c?n.criticalPathLength:0,cycles:n.cycles,rows:a,provenance:{algorithm:"critical-path-method",edgeFamily:"ordering",weighting:"unit"}}}(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]="bc561e73-75b8-5ea7-a18c-da70fb991b69")}catch{}})();var jt=["missing_reference_active","missing_reference_terminal","legacy_no_blocker_sentinel","ordering_cycle","legacy_ordering_cycle","ordering_storage_contradiction","legacy_ordering_storage_contradiction","duplicate_edge","legacy_duplicate_edge","duplicate_dependency_row","legacy_duplicate_dependency_row","stale_lifecycle_block","isolated_active_node","sparse_active_node"];(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]="b63fba34-8ca1-5e3a-905d-772ea8ce0f11")}catch{}})();var Yd=25,Xd="milestone",Jd="outcome milestone:",Qd=new Set(["discovered_from","incident_from","recurs_from","supersedes","verifies"]);function jn(e){return Qd.has(e)}var pi={error:0,warning:1,info:2};function gi(e){return new Set((e??[]).filter(t=>typeof t=="string").map(t=>t.trim().toLowerCase()))}function $n(e,t,n,r,o,i,s,a){let c=[...o].sort((d,u)=>d.localeCompare(u));return{code:e,severity:t,policy:n,message:r(c.length),count:c.length,sample:c.slice(0,i),sample_truncated:c.length>i,remediation:s,...a===void 0?{}:{evidence:[...a].sort((d,u)=>d.localeCompare(u)).slice(0,i)}}}function Zd(e){let t=e.graph.registry(),n=new Map;for(let r of e.graph.edges()){let o=t.require(r.kind);if(!o.ordering)continue;let[i,s]=(o.precedence??"source_before_target")==="target_before_source"?[r.target,r.source]:[r.source,r.target],a=n.get(i);a?a.push(s):n.set(i,[s])}for(let r of n.values())r.sort((o,i)=>o.localeCompare(i));return n}function yi(e,t){t.indexes.set(e,t.nextIndex),t.lowLinks.set(e,t.nextIndex),t.nextIndex+=1,t.stack.push(e),t.onStack.add(e)}function eu(e,t,n,r){let o=n.get(e.node)??[];if(e.neighborIndex>=o.length)return!1;let i=o[e.neighborIndex];return e.neighborIndex+=1,r.indexes.has(i)?r.onStack.has(i)&&r.lowLinks.set(e.node,Math.min(r.lowLinks.get(e.node),r.indexes.get(i))):(yi(i,r),t.push({node:i,neighborIndex:0})),!0}function tu(e,t,n,r){t.pop();let o=t.at(-1);if(o&&r.lowLinks.set(o.node,Math.min(r.lowLinks.get(o.node),r.lowLinks.get(e.node))),r.lowLinks.get(e.node)!==r.indexes.get(e.node))return;let i=[];for(;;){let s=r.stack.pop();if(r.onStack.delete(s),i.push(s),s===e.node)break}(i.length>1||i.length===1&&n.get(i[0])?.includes(i[0]))&&r.components.push(i.sort((s,a)=>s.localeCompare(a)))}function nu(e){let t={indexes:new Map,lowLinks:new Map,onStack:new Set,stack:[],components:[],nextIndex:0},n=[...e.keys()].sort((r,o)=>r.localeCompare(o));for(let r of n){if(t.indexes.has(r))continue;let o=[{node:r,neighborIndex:0}];for(yi(r,t);o.length>0;){let i=o.at(-1);eu(i,o,e,t)||tu(i,o,e,t)}}return t.components.sort((r,o)=>r[0].localeCompare(o[0]))}function Mn(e){return`${e.holder_id} -> ${e.target_id} (${e.kind})`}function H(e,t,n,r,o,i,s,a){t.length!==0&&e.push($n(r,o,i,s,t,n,a))}function ru(e,t,n){let r=[],o=[...e.dangling.active,...e.dangling.legacy_terminal].filter(i=>!i.no_active_blocker_sentinel);return H(r,o.filter(i=>!t(i.holder_status)).map(Mn),n,"missing_reference_active","error","Active items must not reference absent targets; missing prerequisites distort scheduling.",i=>`${i} active dangling reference(s) to absent items`,"Restore or re-create the referenced item, or remove/retype the reference on the holder."),H(r,o.filter(i=>t(i.holder_status)).map(Mn),n,"missing_reference_terminal","info","Terminal items may retain historical references, but absent targets remain unexplainable context.",i=>`${i} terminal dangling reference(s) to absent items`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),H(r,e.dangling.no_active_blocker_sentinels.map(Mn),n,"legacy_no_blocker_sentinel","info","The pre-structured-dependency no-active-blocker sentinel is retired; real edges carry blocker state.",i=>`${i} legacy no-active-blocker sentinel reference(s)`,"Delete the sentinel reference; blocker state is derived from blocked_by edges."),r}function Pn(e,t){let n=t.get(e);return n?!n.terminal:!0}function _i(e){return`${e.holder_id} -> ${e.target_id} (blocked_by scalar + ${e.dependency_kind} dependency)`}function ou(e,t){let n=[],r=[];for(let i of e.orderingContradictions??[])(i.legacy_terminal?r:n).push(_i(i));let o=[];return H(o,n,t,"ordering_storage_contradiction","error","A scalar blocker and same-target structured ordering row must not assert opposite precedence.",i=>`${i} active scalar-versus-structured ordering contradiction(s)`,"Remove the structured dependency row that points the holder before its scalar blocker, or replace both representations with one unambiguous ordering edge."),H(o,r,t,"legacy_ordering_storage_contradiction","info","Terminal scalar-versus-structured ordering contradictions are exact historical storage defects with no live scheduling effect.",i=>`${i} terminal scalar-versus-structured ordering contradiction(s)`,"Remove the contradictory blocks dependency row in a dedicated changelog-safe closed-item batch; preserve the scalar blocker as the historical precedence record."),o}function iu(e,t,n,r){let o=[],i=Zd(e);for(let c of nu(i)){let d=c.some(f=>Pn(f,t)),u=new Set(c.map(f=>f.toLowerCase())),l=(e.orderingContradictions??[]).filter(f=>u.has(f.holder_id.toLowerCase())&&u.has(f.target_id.toLowerCase())).map(_i);o.push(d?$n("ordering_cycle","error","Order-bearing relationship kinds must stay acyclic; a cycle makes every member unschedulable.",f=>`execution-order cycle across ${f} item(s)`,c,r,"Remove or retype one ordering edge inside the cycle, or split the work so precedence is linear.",l.length===0?void 0:l):$n("legacy_ordering_cycle","info","Ordering cycles between exclusively terminal items are historical contradictions with no scheduling effect.",f=>`terminal-only execution-order cycle across ${f} item(s)`,c,r,"Leave as history debt, or clean up in a dedicated changelog-safe closed-item batch; never repair closed items ad hoc.",l.length===0?void 0:l))}let s=new Map;for(let[c,d]of i)for(let u of d){let l=s.get(u);l?l.push(c):s.set(u,[c])}let a=[...t.values()].filter(c=>!c.missing&&!c.terminal&&n(c.status)&&!(s.get(c.id)??[]).some(d=>{let u=t.get(d);return u===void 0||!u.terminal})).map(c=>c.id);return H(o,a,r,"stale_lifecycle_block","warning","A blocked lifecycle status must be backed by at least one open ordering predecessor.",c=>`${c} status-blocked item(s) with no open blocker edge`,'Add a local blocker edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status.'),o}function Ut(e){let t=e.edges.map(n=>n.kind).sort((n,r)=>n.localeCompare(r));return`${e.from} -> ${e.to} (${t.join(" + ")})`}function Un(e){let t=e.graph.registry(),n=new Map;for(let o of e.graph.edges()){let i=t.require(o.kind);if(!Mt(i))continue;let s=$t(o,i);if(s.from===s.to)continue;let a=`${Ot(i)}::${s.from}::${s.to}`,c=n.get(a);c?c.edges.push(o):n.set(a,{...s,edges:[o]})}let r=[...n.values()].filter(o=>o.edges.length>=2);for(let o of r)o.edges.sort((i,s)=>i.kind.localeCompare(s.kind));return r.sort((o,i)=>o.from.localeCompare(i.from)||o.to.localeCompare(i.to))}function su(e,t,n){let r=[],o=[];for(let s of Un(e))(Pn(s.from,t)||Pn(s.to,t)?r:o).push(Ut(s));let i=[];return H(i,r,n,"duplicate_edge","info","One semantic relationship should be stored once; parallel same-family spellings (reciprocal inverse pairs included) add no information and skew degree metrics.",s=>`${s} duplicated relationship(s) between active endpoints`,"Remove all but one stored spelling of the relationship; keep the canonical direction the holder declared first."),H(i,o,n,"legacy_duplicate_edge","info","Duplicated spellings between exclusively terminal items are historical noise with no scheduling effect.",s=>`${s} duplicated relationship(s) between terminal endpoints`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),i}function au(e,t){let n=[],r=[];for(let i of e.duplicateRows??[])(i.legacy_terminal?r:n).push(`${i.holder_id} -> ${i.target_id} (${i.kind} x${i.occurrences})`);let o=[];return H(o,n,t,"duplicate_dependency_row","warning","One dependency row must be stored once per holder; identical repeated rows are a storage-layer defect invisible to the assembled graph.",i=>`${i} exactly duplicated stored dependency row(s) on active holder(s)`,"Remove the repeated rows so the dependency is stored exactly once; graph semantics are unchanged."),H(o,r,t,"legacy_duplicate_dependency_row","info","Identical repeated dependency rows on terminal holders are historical storage noise with no scheduling effect.",i=>`${i} exactly duplicated stored dependency row(s) on terminal holder(s)`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),o}function cu(e,t){let n=new Map;for(let r of e.graph.edges()){t?.throwIfAborted();let o=e.graph.registry().require(r.kind),i;if(o.hierarchy?i=$t(r,o):o.kind==="implements"&&(i={from:r.source,to:r.target}),i===void 0)continue;let s=n.get(i.to)??new Set;s.add(i.from),n.set(i.to,s)}return n}function du(e,t,n){let r=new Set(e),o=[...e].sort();for(let i=0;i<o.length;i+=1){n?.throwIfAborted();for(let s of[...t.get(o[i])??[]].sort())r.has(s)||(r.add(s),o.push(s))}return r}function uu(e,t,n,r){let o=0,i=0,s=0,a=0;for(let m of e.values())if(r?.throwIfAborted(),!t.has(m.id)&&!(m.missing||m.status==="external")){if(m.terminal){s+=1,n.has(m.id)&&(a+=1);continue}n.has(m.id)?o+=1:i+=1}let c=o+i,d=s-a,u=o+a,l=i+d,f=u+l;return{active_outcome_reachable_nodes:o,active_outcome_unreachable_nodes:i,active_outcome_reachability_basis_points:c===0?0:Math.floor(o*1e4/c),terminal_nodes:s,terminal_outcome_reachable_nodes:a,terminal_outcome_unreachable_nodes:d,terminal_outcome_reachability_basis_points:s===0?0:Math.floor(a*1e4/s),outcome_reachable_nodes:u,outcome_unreachable_nodes:l,outcome_reachability_basis_points:f===0?0:Math.floor(u*1e4/f)}}function lu(e,t,n){let r=new Set(e.details.filter(i=>i.type?.toLowerCase()===Xd&&i.title.trim().toLowerCase().startsWith(Jd)).map(i=>i.id)),o=du(r,cu(e,n),n);return{outcome_nodes:r.size,...uu(t,r,o,n)}}function fu(e,t,n,r,o){e.active+=1;let i=t.type??"(untyped)",s=e.byType.get(i);s||(s={active:0,isolated:0,degree_leq_one:0},e.byType.set(i,s)),s.active+=1,!(n>1)&&(e.degreeLeqOne+=1,s.degree_leq_one+=1,n===0&&(e.isolated+=1,s.isolated+=1),!(r.has(t.id.toLowerCase())||o.has(i.toLowerCase()))&&(n===0?e.isolates.push(t.id):e.sparse.push(t.id)))}function mu(e,t,n,r,o,i,s){let a={active:0,missing:0,isolated:0,degreeLeqOne:0,isolates:[],sparse:[],byType:new Map};for(let _ of e.graph.nodes()){s?.throwIfAborted();let k=t.get(_);if(k){if(k.missing){a.missing+=1;continue}k.terminal||fu(a,k,e.graph.incidentEdges(_).length,n,r)}}let{isolates:c,sparse:d}=a,u=[];H(u,c,o,"isolated_active_node","warning","Active work should be reachable from the graph unless explicitly declared a valid isolate.",_=>`${_} active item(s) with no relationships`,"Link the item to its parent, prerequisite, or origin \u2014 or register it as an exempt isolate."),H(u,d,o,"sparse_active_node","info","Active items with a single edge often miss an honest semantic partner; sparse is not automatically defective.",_=>`${_} active item(s) with exactly one relationship`,"Investigate for an honest second edge (story->task, defect family, cross-epic complement); do not fabricate one.");let l=e.graph.edges().length,f=$e(e.graph,{signal:s}).value,m=new Set(f.map(({edge:_})=>`${_.source.toLowerCase()}\0${_.target.toLowerCase()}\0${_.kind}`));for(let _ of e.orderingContradictions??[])m.add(`${_.holder_id.toLowerCase()}\0${_.target_id.toLowerCase()}\0${_.dependency_kind}`);let y=Object.fromEntries(Object.entries(i).sort(([_],[k])=>_.localeCompare(k))),p=Object.entries(y).reduce((_,[k,E])=>_+(jn(k)?E:0),0),b=Pt(e.graph,{signal:s}).value,w=lu(e,t,s);return{findings:u,profile:{nodes:e.graph.nodes().length,recorded_nodes:e.details.filter(_=>_.status!=="missing"&&_.status!=="external").length,edges:l,informative_edges:l-m.size,redundant_edges:f.length,ordering_contradiction_edges:e.orderingContradictions?.length??0,edge_basis:"deduplicated_directed",edges_by_kind:y,edge_share_by_kind:Object.fromEntries(Object.entries(y).map(([_,k])=>[_,k/l])),semantic_edges:p,semantic_edge_share:l===0?0:p/l,active_nodes:a.active,missing_nodes:a.missing,isolated_active_nodes:a.isolated,degree_leq_one_active_nodes:a.degreeLeqOne,coverage_by_type:Object.fromEntries([...a.byType.entries()].sort(([_],[k])=>_<k?-1:1)),articulation_points:b.articulationPoints.length,bridge_edges:b.bridges.length,...w,finding_subjects_by_code:Object.fromEntries(jt.map(_=>[_,0]))}}}function Bt(e,t={}){let n=t.isTerminal??(f=>f==="closed"||f==="canceled"),r=t.isBlocked??(f=>f==="blocked"),o=t.maxSampleSize??Yd;if(!Number.isInteger(o)||o<1)throw new TypeError(`Invalid audit sample bound: ${String(t.maxSampleSize)}`);let i=gi(t.exemptIsolates),s=gi(t.isolateExemptTypes),a=new Map(e.details.map(f=>[f.id,{id:f.id,status:f.status,missing:e.missingIdSet.has(f.id.toLowerCase()),terminal:n(f.status),...f.type===void 0?{}:{type:f.type}}]));t.signal?.throwIfAborted();let c={};for(let f of e.graph.edges())c[f.kind]=(c[f.kind]??0)+1;let d=ru(e,n,o);t.signal?.throwIfAborted(),d.push(...ou(e,o)),t.signal?.throwIfAborted(),d.push(...iu(e,a,r,o)),t.signal?.throwIfAborted(),d.push(...su(e,a,o),...au(e,o)),t.signal?.throwIfAborted();let u=mu(e,a,i,s,o,c,t.signal);d.push(...u.findings),d.sort((f,m)=>pi[f.severity]-pi[m.severity]||f.code.localeCompare(m.code)||f.sample[0].localeCompare(m.sample[0]));let l=u.profile.finding_subjects_by_code;for(let f of d)l[f.code]+=f.count;return{findings:d,profile:{...u.profile,finding_subjects_by_code:l}}}function On(e,t){let n=[...new Set([...Object.keys(e),...Object.keys(t)])].sort(),r={};for(let o of n){let i=(t[o]??0)-(e[o]??0);i!==0&&(r[o]=i)}return r}function hi(e){return e.profile.coverage_by_type??{}}function pu(e,t){let n={},r=hi(e),o=hi(t),i=[...new Set([...Object.keys(r),...Object.keys(o)])].sort();for(let s of i){let a=Object.assign({active:0,isolated:0,degree_leq_one:0},r[s]),c=Object.assign({active:0,isolated:0,degree_leq_one:0},o[s]),d={active:c.active-a.active,isolated:c.isolated-a.isolated,degree_leq_one:c.degree_leq_one-a.degree_leq_one};Object.values(d).some(u=>u!==0)&&(n[s]=d)}return n}function wi(e,t){let n=pu(e,t),{edge_share_by_kind:r={},semantic_edges:o=0,semantic_edge_share:i=0}=e.profile,{edge_share_by_kind:s={},semantic_edges:a=0,semantic_edge_share:c=0}=t.profile,d=e.profile.recorded_nodes??e.profile.nodes,u=t.profile.recorded_nodes??t.profile.nodes,l=e.profile.informative_edges??e.profile.edges,f=t.profile.informative_edges??t.profile.edges,m=e.profile.redundant_edges??0,y=t.profile.redundant_edges??0,p=e.profile.ordering_contradiction_edges??0,b=t.profile.ordering_contradiction_edges??0;return{baseline_saved_at:e.saved_at,same_snapshot:e.fingerprint===t.fingerprint,affected_subjects_by_code:On(e.affected_subjects_by_code,t.affected_subjects_by_code),profile:{nodes:t.profile.nodes-e.profile.nodes,recorded_nodes:u-d,edges:t.profile.edges-e.profile.edges,informative_edges:f-l,redundant_edges:y-m,ordering_contradiction_edges:b-p,active_nodes:t.profile.active_nodes-e.profile.active_nodes,missing_nodes:t.profile.missing_nodes-e.profile.missing_nodes,isolated_active_nodes:t.profile.isolated_active_nodes-e.profile.isolated_active_nodes,degree_leq_one_active_nodes:t.profile.degree_leq_one_active_nodes-e.profile.degree_leq_one_active_nodes,edges_by_kind:On(e.profile.edges_by_kind,t.profile.edges_by_kind),edge_share_by_kind:On(r,s),semantic_edges:a-o,semantic_edge_share:c-i,coverage_by_type:n}}}import bi 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]="9e4aa41d-fca4-5e55-ab2b-d99f06d90ae2")}catch{}})();var ki=1,Bn=500,gu=64,hu="graph-durable-cache";function vi(e){return De(e,hu,30,`graph-cache:${process.pid}`,!1,!1,3e3)}function We(e){return bi.join(e,"runtime","graph-cache.json")}function Ei(e){return bi.join(e,"runtime","graph-audit-baseline.json")}function Gn(e){if(e!==null)try{let t=JSON.parse(e);return typeof t!="object"||t===null||t.version!==ki||typeof t.fingerprint!="string"||typeof t.saved_at!="string"||typeof t.results!="object"||t.results===null||Array.isArray(t.results)?void 0:t}catch{return}}async function Kn(e,t){let n=await ie(We(e)),r=Gn(n),o=r?.fingerprint===t;return{exists:n!==null,fresh:o,results:o?r.results:{}}}async function zn(e,t,n,r,o){let i=await vi(e);try{let s=Gn(await ie(We(e))),a=s?.fingerprint===t?s.results:{};delete a[r],a[r]=o;let c=Object.keys(a);for(let d of c.slice(0,Math.max(0,c.length-gu)))delete a[d];await K(We(e),JSON.stringify({version:ki,fingerprint:t,saved_at:new Date().toISOString(),results:a})),n.results=a}finally{await i()}}async function Hn(e){let t=await vi(e);try{await Nr(We(e))}finally{await t()}}async function xi(e,t){let n=We(e),r=await ie(n),o=Gn(r);return o===void 0?{exists:r!==null,fresh:!1,entry_count:0}:{exists:!0,fresh:o.fingerprint===t,entry_count:Object.keys(o.results).length,fingerprint:o.fingerprint.slice(0,12),saved_at:o.saved_at,bytes:Buffer.byteLength(r,"utf8")}}function qn(e,t){return t||e>=Bn}function Gt(e){return Pe(e)&&Object.values(e).every(he)}function Pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function he(e){return Number.isInteger(e)&&Number(e)>=0}function Ii(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1}function qe(e,t){return e===void 0||t(e)}function yu(e){return Pe(e)&&Object.values(e).every(Ii)}function _u(e){return Pe(e)?Object.values(e).every(t=>Pe(t)&&[t.active,t.isolated,t.degree_leq_one].every(he)):!1}function wu(e,t,n){let r=["recorded_nodes","informative_edges","redundant_edges","ordering_contradiction_edges"],o=r.filter(s=>e[s]!==void 0).length;if(o!==0&&o!==r.length||!r.every(s=>qe(e[s],he)))return;let i={recorded_nodes:e.recorded_nodes??t,informative_edges:e.informative_edges??n,redundant_edges:e.redundant_edges??0,ordering_contradiction_edges:e.ordering_contradiction_edges??0};return i.recorded_nodes<=t&&i.informative_edges<=n&&i.redundant_edges<=n&&i.ordering_contradiction_edges<=n?i:void 0}function bu(e,t,n){let r=[...t,...n,"finding_subjects_by_code"],o=r.filter(i=>e[i]!==void 0).length;return o!==0&&o!==r.length?!1:t.every(i=>qe(e[i],he))&&n.every(i=>qe(e[i],he)&&(e[i]===void 0||Number(e[i])<=1e4))&&qe(e.finding_subjects_by_code,Gt)}function ku(e,t,n,r){let o=wu(e,n,r);if(o===void 0)return;let i=["articulation_points","bridge_edges","outcome_nodes","active_outcome_reachable_nodes","active_outcome_unreachable_nodes","terminal_nodes","terminal_outcome_reachable_nodes","terminal_outcome_unreachable_nodes","outcome_reachable_nodes","outcome_unreachable_nodes"],s=["active_outcome_reachability_basis_points","terminal_outcome_reachability_basis_points","outcome_reachability_basis_points"];if(!bu(e,i,s)||e.edge_basis!==void 0&&e.edge_basis!=="deduplicated_directed")return;let a=Gt(e.finding_subjects_by_code)?e.finding_subjects_by_code:{};return{edge_basis:"deduplicated_directed",...o,...Object.fromEntries(i.map(c=>[c,e[c]??0])),...Object.fromEntries(s.map(c=>[c,e[c]??0])),finding_subjects_by_code:Object.fromEntries(jt.map(c=>[c,a[c]??t[c]??0]))}}function vu(e,t,n,r,o){let i=[n,r,o],s=i.filter(d=>d!==void 0).length;if(s===0)return{edge_share_by_kind:{},semantic_edges:0,semantic_edge_share:0};if(s!==i.length||!yu(n)||!he(r)||!Ii(o))return;let a=Object.entries(t);if(a.reduce((d,[,u])=>d+u,0)!==e||Object.keys(n).length!==a.length||a.some(([d,u])=>n[d]!==(e===0?0:u/e)))return;let c=a.reduce((d,[u,l])=>d+(jn(u)?l:0),0);if(!(r!==c||o!==(e===0?0:c/e)))return{edge_share_by_kind:n,semantic_edges:r,semantic_edge_share:o}}function Eu(e){if(e!==null)try{let t=JSON.parse(e);if(!Pe(t))return;let n=t,r=n.profile;if(typeof n.saved_at!="string"||typeof n.fingerprint!="string")return;let o=n.affected_subjects_by_code;if(!Gt(o)||!Pe(r)||![r.nodes,r.edges,r.active_nodes,r.missing_nodes,r.isolated_active_nodes,r.degree_leq_one_active_nodes].every(he)||!Gt(r.edges_by_kind)||!qe(r.coverage_by_type,_u))return;let i=vu(r.edges,r.edges_by_kind,r.edge_share_by_kind,r.semantic_edges,r.semantic_edge_share);if(i===void 0)return;let s=ku(r,o,r.nodes,r.edges);if(s===void 0)return;let{coverage_by_type:a={}}=r;return{...n,profile:{...r,...i,...s,coverage_by_type:a}}}catch{return}}async function Ci(e){return Eu(await ie(Ei(e)))}async function Si(e,t){await K(Ei(e),JSON.stringify(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]="1eb0e2cb-084a-5a54-b41c-29dfdd6d2f34")}catch{}})();var xu={missing_reference_active:{op:"investigate",confidence:"medium",rationale:"Restore or re-create the referenced item, or remove/retype the reference on the active holder; the correct fix depends on why the target is absent."},missing_reference_terminal:{op:"waive",confidence:"high",rationale:"Terminal-holder reference to an absent item is historical debt; waive it or clean it up only in a dedicated changelog-safe closed-item batch."},legacy_no_blocker_sentinel:{op:"remove",confidence:"high",rationale:"The pre-structured-dependency no-active-blocker sentinel is retired and carries no information; blocker state derives from blocked_by edges."},ordering_cycle:{op:"investigate",confidence:"low",rationale:"Every cycle member is unschedulable until one ordering edge is removed or retyped; the planner never chooses which edge to cut."},legacy_ordering_cycle:{op:"waive",confidence:"high",rationale:"Terminal-only ordering cycles have no scheduling effect; repairing them would mutate closed history (changelog drag)."},ordering_storage_contradiction:{op:"remove",confidence:"high",rationale:"The structured ordering row asserts the opposite precedence from the same-target scalar blocker; remove that exact dependency row or replace both representations with one unambiguous edge."},legacy_ordering_storage_contradiction:{op:"remove",confidence:"high",rationale:"The terminal holder contains a proven contradictory structured ordering row; remove it in a dedicated changelog-safe batch while preserving the scalar blocker as history."},duplicate_edge:{op:"remove",confidence:"high",rationale:"Parallel same-family spellings state one relationship twice; remove all but one stored spelling, keeping the holder's canonical direction."},legacy_duplicate_edge:{op:"waive",confidence:"high",rationale:"Duplicated spellings between terminal items are historical noise; waive or batch changelog-safe cleanup."},duplicate_dependency_row:{op:"remove",confidence:"high",rationale:"The identical dependency row is stored more than once on the holder; drop the repeats so the row exists exactly once \u2014 graph semantics are unchanged."},legacy_duplicate_dependency_row:{op:"waive",confidence:"high",rationale:"Repeated identical rows on terminal holders are storage noise; waive or clean up only in a changelog-safe closed-item batch."},stale_lifecycle_block:{op:"investigate",confidence:"medium",rationale:`Add a local ordering edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status; only the holder's owner knows which is true.`},isolated_active_node:{op:"investigate",confidence:"medium",rationale:"Link the item to its parent, prerequisite, or origin \u2014 or register it as an explicitly exempt isolate; the audit never fabricates an edge."},sparse_active_node:{op:"investigate",confidence:"low",rationale:"Investigate for an honest second edge (story-to-task, defect family, cross-epic complement); sparse is not automatically defective."}};function Ti(e){return`${e.source} -${e.kind}-> ${e.target}`}function Iu(e){let[t,...n]=e.edges;return n.map(r=>({op:"remove",code:"duplicate_edge",subject:Ti(r),rationale:"This stored spelling restates the kept canonical edge of the same semantic family; removing it leaves the relationship stated exactly once.",evidence:[`keep: ${Ti(t)}`,`group: ${Ut(e)}`],confidence:"high"}))}function Cu(e,t){if(e.code==="duplicate_edge")return e.sample.flatMap(r=>Iu(t.get(r)));let n=xu[e.code];return e.sample.map(r=>({op:n.op,code:e.code,subject:r,rationale:n.rationale,evidence:[e.policy],confidence:n.confidence}))}function Di(e,t={}){let{redundancyLimit:n,...r}=t,o=Bt(e,r),i=new Map(Un(e).map(d=>[Ut(d),d])),s=o.findings.flatMap(d=>Cu(d,i)),a=o.findings.some(d=>d.sample_truncated);t.signal?.throwIfAborted();let c=$e(e.graph,{limit:n??t.maxSampleSize??25,...t.signal===void 0?{}:{signal:t.signal}});for(let d of c.value)s.push({op:"remove",code:"redundant_edge",subject:`${d.edge.source} -> ${d.edge.target} (${d.edge.kind})`,rationale:"The stored edge is implied by a longer same-family witness path; shortcut edges are sometimes deliberate emphasis, so confirm intent before removing.",evidence:[`witness: ${d.witness.join(" -> ")}`],confidence:"medium"});return a=a||c.meta.truncated,{steps:s,report:o,truncated:a,cost:{visitedNodes:c.meta.visitedNodes,inspectedEdges:c.meta.inspectedEdges}}}(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]="6c8bfb7a-687a-5fbb-b408-ffdbab1187a9")}catch{}})();var Fi=new Set(["ancestors","descendants","predecessors","successors","paths","impact","dominators"]),me=10;function Ri(e,t,n){return{...e,projection:{mode:t?"summary":"full",declared_field_groups:n===void 0?[]:[{name:n,restore_with:"--full"}],included_field_groups:n===void 0||t?[]:[n]}}}function Ai(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(t=>t.split(",")).map(t=>t.trim()).filter(t=>t.length>0)}function Su(e,t,n){let r=e.trim().toLowerCase();if(!pn.includes(r))throw Pr({command_path:"graph",token:r||"<empty>",allowed:pn});let o=r;if(Fi.has(o)&&!t?.trim())throw new h(`graph ${o} requires an item id.`,g.USAGE);if(o==="paths"&&!n?.trim())throw new h("graph paths requires a source and a target item id.",g.USAGE);return o}function Wn(e){throw e instanceof TypeError?new h(e.message,g.USAGE):e}function Vn(e){return{truncated:e.truncated,cost:{visited_nodes:e.visitedNodes,inspected_edges:e.inspectedEdges}}}function Li(e,t){let n=t.trim().toLowerCase();for(let r of e.details)if(r.id.trim().toLowerCase()===n&&!e.missingIdSet.has(r.id.toLowerCase()))return r.id;throw new h(`Item ${t} not found`,g.NOT_FOUND)}function Tu(e,t,n){let r={ancestors:ti,descendants:ni,predecessors:ri,successors:oi}[e],o;try{o=r(n.assembly.graph,t,{...n.kinds===void 0?{}:{kinds:n.kinds},...n.maxDepth===void 0?{}:{maxDepth:n.maxDepth},...n.limit===void 0?{}:{limit:n.limit},...n.after===void 0?{}:{after:n.after}})}catch(s){Wn(s)}let i=Vn(o.meta);return{subcommand:e,root:t,count:o.value.length,...i,...o.meta.nextCursor===void 0?{}:{next_cursor:o.meta.nextCursor},...n.summary?{}:{ids:o.value}}}function Du(e,t,n){let r=ii(n.assembly.graph,e,t,{direction:n.direction,...n.kinds===void 0?{}:{kinds:n.kinds},...n.maxDepth===void 0?{}:{maxDepth:n.maxDepth},...n.maxPaths===void 0?{}:{maxPaths:n.maxPaths}});return{subcommand:"paths",root:e,target:t,direction:n.direction,count:r.value.length,...Vn(r.meta),...n.summary?{}:{paths:r.value.map(o=>({nodes:o.nodes,kinds:o.edges.map(i=>i.kind),length:o.length}))}}}function Ru(e,t){let n;try{n=wt(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth},...t.unbounded?{}:{limit:t.limit??me},...t.after===void 0?{}:{after:t.after}})}catch(r){Wn(r)}return{subcommand:"impact",root:e,direction:t.direction,count:n.affected.length,truncated:n.truncated,...n.nextCursor===void 0?{}:{next_cursor:n.nextCursor},cost:{visited_nodes:n.cost.visitedNodes,inspected_edges:n.cost.inspectedEdges},...t.summary?{}:{affected:n.affected}}}function Au(e){let t=e.assembly.graph,n=e.limit??me,r=bt(t,{registry:t.registry()}),o=Po(t);return{subcommand:"analyze",node_count:t.nodes().length,edge_count:t.edges().length,edge_basis:"deduplicated_directed",sample_limit:n,execution:{acyclic:r.acyclic,ordered_node_count:r.order.length,layer_count:r.layers.length,frontier_count:r.frontier.length,critical_path_length:r.criticalPathLength,cycle_count:r.cycles.length,...e.summary?{}:{frontier:r.frontier.slice(0,n),critical_path:r.criticalPath.slice(0,n),cycles:r.cycles.slice(0,n)}},knowledge:{component_count:o.components.length,largest_component_size:o.components[0]?.length??0,orphan_count:o.orphans.length,...e.summary?{}:{orphans:o.orphans.slice(0,n),hubs:o.hubs.slice(0,n)}}}}function Lu(e,t){let n=Bt(e.assembly,{isTerminal:t,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),r={},o={},i={},s={};for(let a of n.findings)r[a.severity]=(r[a.severity]??0)+1,o[a.code]=(o[a.code]??0)+1,i[a.severity]=(i[a.severity]??0)+a.count,s[a.code]=(s[a.code]??0)+a.count;return{subcommand:"audit",finding_count:n.findings.length,findings_by_severity:r,findings_by_code:o,affected_subjects_by_severity:i,affected_subjects_by_code:s,profile:n.profile,legacy_alias_counts:e.assembly.legacyAliasCounts,...e.summary?{}:{findings:n.findings}}}function Fu(e){let t=e.limit??me,n={};e.kinds!==void 0&&(n.kinds=e.kinds);let r=ai(e.assembly.graph,n),o=r.value;return{subcommand:"communities",community_count:o.communities.length,largest_community_size:o.communities[0]?.size??0,iterations:o.iterations,converged:o.converged,truncated:!o.converged||o.communities.length>t,cost:{visited_nodes:r.meta.visitedNodes,inspected_edges:r.meta.inspectedEdges},...e.summary?{}:{communities:o.communities.slice(0,t).map(i=>({representative:i.representative,size:i.size,members:i.members.slice(0,t)}))}}}function Nu(e){let t;try{t=$e(e.assembly.graph,{...e.kinds===void 0?{}:{kinds:e.kinds},...e.maxDepth===void 0?{}:{maxDepth:e.maxDepth},...e.limit===void 0?{}:{limit:e.limit}})}catch(n){Wn(n)}return{subcommand:"redundancy",redundant_count:t.value.length,...Vn(t.meta),...e.summary?{}:{redundant:t.value.map(n=>({source:n.edge.source,target:n.edge.target,kind:n.edge.kind,witness:n.witness}))}}}function Mu(e,t){let n=t.limit??me,r=ci(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth}}),o=r.value.rows.filter(i=>i.dominatedCount>0);return{subcommand:"dominators",root:e,direction:t.direction,reachable_count:r.value.reachableCount,bottleneck_count:o.length,truncated:r.meta.truncated||o.length>n,cost:{visited_nodes:r.meta.visitedNodes,inspected_edges:r.meta.inspectedEdges},...t.summary?{}:{bottlenecks:o.slice(0,n).map(i=>({id:i.id,idom:i.idom,dominated_count:i.dominatedCount}))}}}function Ou(e){let t=e.limit??me,n=mi(e.assembly.graph),r=n.rows.filter(o=>o.critical).length;return{subcommand:"slack",acyclic:n.acyclic,makespan:n.makespan,scheduled_count:n.scheduledCount,critical_count:r,critical_path_length:n.criticalPathLength,cycle_count:n.cycles.length,truncated:n.rows.length>t,...e.summary?{}:{critical_path:n.criticalPath,rows:n.rows.slice(0,t).map(o=>({id:o.id,earliest_start:o.earliestStart,latest_start:o.latestStart,slack:o.slack,critical:o.critical}))}}}function $u(e){let t=e.limit??me,n=fi(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),r=n.value;return{subcommand:"centrality",node_count:r.nodeCount,edge_count:r.edgeCount,edge_basis:"simple_undirected",truncated:r.rows.length>t,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...e.summary?{}:{rows:r.rows.slice(0,t).map(o=>({id:o.id,degree:o.degree,in_degree:o.inDegree,out_degree:o.outDegree,betweenness:o.betweenness,closeness:o.closeness}))}}}function Pu(e){let t=e.limit??me,n=Pt(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),{articulationPoints:r,bridges:o}=n.value;return{subcommand:"articulation",articulation_count:r.length,bridge_count:o.length,truncated:r.length>t||o.length>t,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...e.summary?{}:{articulation_points:r.slice(0,t),bridges:o.slice(0,t)}}}function ju(e,t){let n=e.limit??me,r=Di(e.assembly,{isTerminal:t,redundancyLimit:n,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),o={},i={};for(let s of r.steps)o[s.op]=(o[s.op]??0)+1,i[s.code]=(i[s.code]??0)+1;return{subcommand:"plan",step_count:r.steps.length,steps_by_op:o,steps_by_code:i,finding_count:r.report.findings.length,truncated:r.truncated||r.steps.length>n,cost:{visited_nodes:r.cost.visitedNodes,inspected_edges:r.cost.inspectedEdges},...e.summary?{}:{steps:r.steps.slice(0,n)}}}function Ni(e,t,n,r){return JSON.stringify({subcommand:e,root:t??null,target:n??null,kinds:r.kinds??null,maxDepth:r.maxDepth??null,limit:r.limit??null,after:r.after??null,direction:r.direction,maxPaths:r.maxPaths??null,sample:r.sample??null,exemptIsolates:[...new Set(r.exemptIsolates.map(o=>o.toLowerCase()))].sort(),exemptIsolateTypes:[...new Set(r.exemptIsolateTypes.map(o=>o.toLowerCase()))].sort(),summary:r.summary,unbounded:r.unbounded})}function Mi(e,t,n,r,o){return e==="analyze"?Au(r):e==="audit"?Lu(r,o):e==="plan"?ju(r,o):e==="communities"?Fu(r):e==="redundancy"?Nu(r):e==="dominators"?Mu(t,r):e==="slack"?Ou(r):e==="centrality"?$u(r):e==="articulation"?Pu(r):e==="paths"?Du(t,n,r):e==="impact"?Ru(t,r):Tu(e,t,r)}function Uu(e,t){if(e!=="index"&&(t.rebuild===!0||t.clear===!0))throw new h("--rebuild and --clear apply only to graph index.",g.USAGE);if(e!=="audit"&&t.saveBaseline===!0)throw new h("--save-baseline applies only to graph audit.",g.USAGE);if(e==="slack"&&t.kind!==void 0)throw new h("graph slack analyzes every ordering kind; --kind is not supported.",g.USAGE);if(t.rebuild===!0&&t.clear===!0)throw new h("graph index accepts either --rebuild or --clear, not both.",g.USAGE);if(e==="impact"&&t.full===!0&&t.limit!==void 0)throw new h("graph impact accepts either --full or --limit, not both.",g.USAGE)}async function Bu(e,t,n,r,o,i){let s="status";if(i.clear===!0&&(await Hn(e),s="cleared"),i.rebuild===!0){await Hn(e);let c=await Kn(e,t),d={assembly:n.assembly,direction:"both",exemptIsolates:[],exemptIsolateTypes:[],saveBaseline:!1,summary:!0,unbounded:!1};for(let u of["analyze","audit"])await zn(e,t,c,Ni(u,void 0,void 0,d),Mi(u,void 0,void 0,d,o));s="rebuilt"}let a=await xi(e,t);return{subcommand:"index",action:s,state:a.exists?a.fresh?"fresh":"stale":"absent",entry_count:a.entry_count,item_count:r,min_items_threshold:Bn,persist_enabled:qn(r,a.exists),current_fingerprint:t.slice(0,12),...a.saved_at===void 0?{}:{saved_at:a.saved_at},...a.bytes===void 0?{}:{bytes:a.bytes}}}async function Gu(e,t,n,r){let o={saved_at:new Date().toISOString(),fingerprint:t,affected_subjects_by_code:n.affected_subjects_by_code,profile:n.profile},i=await Ci(e);return r&&await Si(e,o),i===void 0?n:{...n,baseline:wi(i,o)}}async function Ku(e,t,n,r,o){try{await zn(e,t,n,r,o)}catch{}}async function nw(e,t,n,r,o){let i=Su(e,t,n);ut(r.summary===!0,r.full===!0,"--summary");let s=S(process.cwd(),o.path);if(!await A($(s)))throw new h(`Tracker is not initialized at ${s}. Run pm init first.`,g.NOT_FOUND);let a=await T(s),c=O(a,L()),d=await ee(s,a.item_format,c.type_to_folder,void 0,a.schema),u=z(a.schema),l=U=>N(U,u);Uu(i,r);let f=ge(),m=Fn(r.kind,f),y=St().lookup(s,Ct(d,l,f),()=>Me(d,l,f)),p={assembly:y.assembly,...m===void 0?{}:{kinds:m},maxDepth:Dt(r.maxDepth),limit:te(r.limit,"limit"),after:r.after?.trim()||void 0,direction:Ln(r.direction),maxPaths:te(r.maxPaths,"max-paths"),sample:te(r.sample,"sample"),exemptIsolates:Ai(r.exemptIsolate),exemptIsolateTypes:Ai(r.exemptIsolateType),saveBaseline:r.saveBaseline===!0,summary:r.summary===!0,unbounded:r.full===!0};if(i==="index")return Ri(await Bu(s,y.fingerprint,p,d.length,l,r),!1);let b=Fi.has(i)?Li(p.assembly,t):void 0,w=i==="paths"?Li(p.assembly,n):void 0,_=Ni(i,b,w,p),k=await Kn(s,y.fingerprint),E=k.results[_],I=y.memoize(_,()=>E!==void 0?structuredClone(E):Mi(i,b,w,p,l)),P=qn(d.length,k.exists);!I.reused&&E===void 0&&P&&await Ku(s,y.fingerprint,k,_,I.value);let D=I.value.subcommand==="audit"?await Gu(s,y.fingerprint,I.value,p.saveBaseline):I.value;return D.cache={fingerprint:y.fingerprint.slice(0,12),assembly:y.assemblyReused?"hit":"miss",result:I.reused?"hit":"miss",durable:E!==void 0?"hit":P?"miss":"off"},Ri(D,p.summary,"result_rows")}(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]="de8a82e1-0b02-5d5a-9086-686529a1ccab")}catch{}})();var Oi="blocked_by",$i="blocks",zu=Object.freeze([Oi,$i]),Yn="no-active-blocker";function R(e){return e.trim().toLowerCase()}function ye(e){let t=new Set,n=typeof e.blocked_by=="string"?R(e.blocked_by):"";n.length>0&&n!==Yn&&t.add(n);for(let r of e.dependencies??[]){let o=typeof r.id=="string"?R(r.id):"";r.kind===Oi&&o.length>0&&o!==Yn&&t.add(o)}return[...t].sort((r,o)=>r.localeCompare(o))}function Kt(e){let t=new Map;for(let n of e){let r=R(n.id);r.length!==0&&t.set(r,new Set(ye(n)))}for(let n of e){let r=R(n.id);if(r.length!==0)for(let o of n.dependencies??[]){let i=o.kind===$i&&typeof o.id=="string"?R(o.id):"";if(i.length===0||i===Yn)continue;let s=t.get(i)??new Set;s.add(r),t.set(i,s)}}return new Map([...t].map(([n,r])=>[n,[...r].sort((o,i)=>o.localeCompare(i))]))}function Pi(e,t){let n=R(e.id);return n.length>0?Kt(t).get(n)??ye(e):ye(e)}function Xn(e,t,n,r){let o=e;return(typeof o.id=="string"?r?.get(R(o.id))??Pi(o,[...t.values()]):ye(e)).map(s=>{let a=t.get(R(s));return a?{id:s,title:a.title,status:a.status,resolved:N(a.status,n)}:{id:s,title:null,status:null,resolved:!1}})}function zt(e,t,n){return Xn(e,t,n)}function Ve(e,t){let n=new Map(e.map(s=>[R(s.id),s])),r=Kt(e),o=new Set([...ji(t),...t.blocked_statuses]),i=new Set;for(let s of e){let a=C(s.status,t);if(!o.has(a))continue;(t.blocked_statuses.has(a)||Xn(s,n,t,r).some(d=>!d.resolved))&&i.add(R(s.id))}return i}function ji(e){return e.active_statuses.size>0?e.active_statuses:new Set([e.open_status])}function Hu(e,t,n){let r=[R(e)],o=new Set;for(;r.length>0;){let i=r.pop();if(!o.has(i)){o.add(i);for(let s of t.get(i)??[]){if(!N(s.status,n))return!0;r.push(R(s.id))}}}return!1}function qu(e){let t=new Map,n=new Map,r=new Map,o=Kt(e);for(let i of e){t.set(R(i.id),i);let s=typeof i.parent=="string"?i.parent.trim():"";if(s.length>0){let a=R(s),c=n.get(a)??[];c.push(i),n.set(a,c)}for(let a of o.get(R(i.id))){let c=R(a),d=r.get(c)??[];d.push(i.id),r.set(c,d)}}return{itemsById:t,childrenByParent:n,blockedByReverse:r,blockerIdsByItem:o}}function Jn(e,t,n){let{itemsById:r,childrenByParent:o,blockedByReverse:i,blockerIdsByItem:s}=qu(t),a=new Set([...ji(n),...n.blocked_statuses]),c=new Set(t.filter(m=>!N(m.status,n)).map(m=>R(m.id))),d=[],u=[],l=0,f=0;for(let m of e){if(!a.has(C(m.status,n)))continue;if(l+=1,Hu(m.id,o,n)){f+=1;continue}let y=Xn(m,r,n,s).filter(_=>!_.resolved),p=(i.get(R(m.id))??[]).filter(_=>c.has(R(_))).sort((_,k)=>_.localeCompare(k)),b={item:m,open_blockers:y,unblocks:p},w=n.blocked_statuses.has(C(m.status,n));y.length===0&&!w?d.push(b):u.push(b)}return{ready:d,blocked:u,active_count:l,container_count:f}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="cc271a73-9767-54bb-a142-d4d4569e3c6a")}catch{}})();(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]="1035bd62-b012-5249-bd53-31b39f21b2d3")}catch{}})();function Qn(e,t){if(e===void 0)return;let n=[],r="";for(let s=0;s<e.length;s+=1){let a=e[s];if(a==="\\"){let c=e[s+1];if(c===","||c==="\\"){r+=c,s+=1;continue}r+=a;continue}if(a===","){n.push(r),r="";continue}r+=a}n.push(r);let o=n.map(s=>s.trim());if(o.some(s=>s.length===0))throw new h(`${t.label} requires at least one non-empty value`,g.USAGE);let i=o.map(s=>t.normalize?.(s)??s);return[...new Set(i)]}function Ye(e,t){let n=Qn(e,t);return n===void 0?void 0:new Set(n)}function Ui(e,t,n="--type"){let r=Qn(e,{label:n});if(r===void 0)return;let o=r.map(i=>{let s=ct(i,t);if(!s)throw new h(`${n} filter token "${i}" must be one of ${t.types.join("|")}`,g.USAGE);return s});return new Set(o)}function Bi(e,t="--priority"){let n=Qn(e,{label:t});if(n!==void 0)return new Set(n.map(r=>kt(r,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]="5bb71ec1-7eb1-558e-a965-acd779570c2e")}catch{}})();var Zn=["id","title","status","type","priority","parent","updated_at"],er=["id","status","type","title"],Wu={list:"brief","list-all":"full","list-draft":"full","list-open":"brief","list-in-progress":"brief","list-blocked":"brief","list-closed":"full","list-canceled":"full"},Vu=["tree_depth","tree_parent","tree_children","tree_title"];function tr(e=[]){return[...new Set([...cn,"body",...Vu,...e])].flatMap(t=>[t,`item.${t}`]).sort()}var pw=["brief","standard","deep"],Yu=["body","linked","claim_state","children","schedule"],Xu=["linked.files","linked.tests","linked.docs"],Ju=["claim_state.claimed","claim_state.assignee","claim_state.last_claim","claim_state.last_release"],Qu=["schedule.deadline","schedule.start_at","schedule.end_at","schedule.location","schedule.reminders","schedule.events"];function gw(e=[]){return[...[...new Set([...cn,...e,"notes_count","tests_count","collection_counts"])].flatMap(n=>[n,`item.${n}`]),...Yu,...Xu,...Ju,...Qu].sort()}var hw=["id","title","status","type","priority","updated_at","score","matched_fields"],Zu=["score","matched_fields","highlights"],Gi=["id","title","description","type","status","priority","tags","created_at","updated_at","deadline","assignee","author","estimated_minutes","acceptance_criteria","dependencies","comments","notes","learnings","reminders","events","files","tests","docs","close_reason","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result","affected_version","fixed_version","component","regression","customer_impact","definition_of_ready","order","rank","goal","objective","value","impact","outcome","why_now","plan"];function yw(e=[]){let t=[...new Set(e)];return[...Zu,...Gi,...Gi.map(n=>`item.${n}`),...t,...t.map(n=>`item.${n}`)].sort()}(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]="5b7b3eaf-a792-5f44-9981-8c82ce511070")}catch{}})();function Ki(e,t){let n=e.trim().toLowerCase();return t.alias_to_id.get(n)??n}function Wi(e){return{isTerminal(t){return e.terminal_statuses.has(Ki(t,e))},classify(t){let n=Ki(t,e);return e.terminal_canceled_statuses.has(n)?"canceled":e.terminal_statuses.has(n)?"closed":e.blocked_statuses.has(n)?"blocked":e.draft_statuses.has(n)?"draft":n===e.open_status?"open":e.active_statuses.has(n)?"in_progress":"other"}}}function nr(e){return j(e.acceptance_criteria)===void 0}function rr(e){return!Number.isFinite(e.estimated_minutes)}function Vi(e,t){return t.isTerminal(e.status)?j(e.resolution)===void 0:!1}function el(e){return j(e.reviewer)===void 0}function tl(e){return j(e.risk)===void 0}function nl(e){return typeof e.confidence=="number"?!Number.isFinite(e.confidence):j(e.confidence)===void 0}function rl(e){return j(e.sprint)===void 0}function ol(e){return j(e.release)===void 0}function or(e){return!!(e.acMissing||e.estimatesMissing||e.resolutionMissing||e.reviewerMissing||e.riskMissing||e.confidenceMissing||e.sprintMissing||e.releaseMissing||e.metadataMissing)}function il(e,t,n){return[[t.acMissing,nr(e)],[t.estimatesMissing,rr(e)],[t.resolutionMissing,Vi(e,n)],[t.reviewerMissing,el(e)],[t.riskMissing,tl(e)],[t.confidenceMissing,nl(e)],[t.sprintMissing,rl(e)],[t.releaseMissing,ol(e)]].every(([o,i])=>o!==!0||i)}function sl(e,t){return nr(e)||rr(e)||Vi(e,t)}function Yi(e,t,n){return or(t)?!(!il(e,t,n)||t.metadataMissing&&!sl(e,n)):!0}var ir=["acceptance_criteria","estimated_minutes","resolution","tags","parent"];function al(e,t){switch(t){case"acceptance_criteria":return!nr(e);case"estimated_minutes":return!rr(e);case"resolution":return j(e.resolution)!==void 0;case"tags":return Array.isArray(e.tags)&&e.tags.length>0;default:return j(e.parent)!==void 0}}function cl(e,t,n){return t==="resolution"?n.isTerminal(e.status):!0}function dl(e,t){return t===0?100:Math.round(e/t*1e3)/10}function zi(){let e={};for(let t of ir)e[t]={present:0,applicable:0,percent:100};return e}function Hi(e,t,n){for(let r of ir){if(!cl(t,r,n))continue;let o=e[r];o.applicable+=1,al(t,r)&&(o.present+=1)}}function qi(e){for(let t of ir){let n=e[t];n.percent=dl(n.present,n.applicable)}}function bw(e,t){let n=zi(),r={};for(let o of e){Hi(n,o,t);let i=r[o.type]??(r[o.type]=zi());Hi(i,o,t)}qi(n);for(let o of Object.values(r))qi(o);return{overall:n,by_type:r}}var ul={assignee:"(unassigned)",priority:"(no priority)",tag:"(untagged)",parent:"(unparented)",type:"(untyped)",status:"(no status)"};function ll(e){return ul[e]}function fl(){return{open:0,in_progress:0,blocked:0,draft:0,closed:0,canceled:0,other:0}}function ml(e,t,n){switch(t){case"assignee":return[j(e.assignee)??null];case"parent":return[j(e.parent)??null];case"type":return[j(e.type)??null];case"status":return[j(e.status)??null];case"priority":return[typeof e.priority=="number"?`P${e.priority}`:null];default:{let r=n.tagPrefix?.trim(),i=(Array.isArray(e.tags)?e.tags:[]).filter(s=>typeof s=="string"&&s.length>0&&(!r||s.startsWith(r)));return i.length>0?i:[null]}}}function kw(e,t,n,r={}){let o=new Map,i=0;for(let a of e){i+=1;let c=n.classify(a.status);for(let d of ml(a,t,r)){let u=d??"\0empty",l=o.get(u);l||(l={label:d??ll(t),key:d,buckets:fl(),total:0},o.set(u,l)),l.buckets[c]+=1,l.total+=1}}let s=[...o.values()].sort((a,c)=>c.total!==a.total?c.total-a.total:a.key===null?1:c.key===null?-1:a.label.localeCompare(c.label));return{dimension:t,rows:s,total_items:i}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="03824e4b-562b-5e12-a89a-9dd091ae7fd3")}catch{}})();var je=["notes","learnings","files","docs","tests","comments","deps","body","linked_command"];function _e(e){return Array.isArray(e)&&e.length>0}function pl(e){return typeof e=="string"&&e.trim().length>0}function gl(e){return Array.isArray(e)?e.some(t=>{if(typeof t!="object"||t===null)return!1;let n=t.command;return typeof n=="string"&&n.trim().length>0}):!1}function Ji(e,t){switch(t){case"notes":return _e(e.notes);case"learnings":return _e(e.learnings);case"files":return _e(e.files);case"docs":return _e(e.docs);case"tests":return _e(e.tests);case"comments":return _e(e.comments);case"deps":return _e(e.dependencies);case"body":return pl(e.body);case"linked_command":return gl(e.tests)}}function Qi(e){return je.some(t=>e[t]!==void 0)}function Zi(e,t){for(let n of je){let r=t[n];if(r===void 0)continue;let o=Ji(e,n);if(r==="present"&&!o||r==="absent"&&o)return!1}return!0}function es(e){return je.some(t=>t!=="body"&&e[t]!==void 0)}function ts(e){return e.body!==void 0}function Xi(e,t){return t===0?100:Math.round(e/t*1e3)/10}function hl(){let e={};for(let t of je)e[t]={present:0,total:0,percent:100};return e}function Ew(e){let t=hl(),n=e.length;for(let s of e)for(let a of je)Ji(s,a)&&(t[a].present+=1);for(let s of je)t[s].total=n,t[s].percent=Xi(t[s].present,n);let r=t.body,o=n-r.present,i={present:o,total:n,percent:Xi(o,n)};return{total_items:n,fields:t,body_populated:r,empty_body:i}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="67c5ff91-1c04-5506-ae5b-32f6552f1d07")}catch{}})();var yl=e=>({acMissing:e.filterAcMissing===!0,estimatesMissing:e.filterEstimatesMissing===!0,resolutionMissing:e.filterResolutionMissing===!0,metadataMissing:e.filterMetadataMissing===!0,reviewerMissing:e.filterReviewerMissing===!0,riskMissing:e.filterRiskMissing===!0,confidenceMissing:e.filterConfidenceMissing===!0,sprintMissing:e.filterSprintMissing===!0,releaseMissing:e.filterReleaseMissing===!0}),ns=[{field:"notes",presentKey:"hasNotes",absentKey:"noNotes",presentFlag:"--has-notes",absentFlag:"--no-notes"},{field:"learnings",presentKey:"hasLearnings",absentKey:"noLearnings",presentFlag:"--has-learnings",absentFlag:"--no-learnings"},{field:"files",presentKey:"hasFiles",absentKey:"noFiles",presentFlag:"--has-files",absentFlag:"--no-files"},{field:"docs",presentKey:"hasDocs",absentKey:"noDocs",presentFlag:"--has-docs",absentFlag:"--no-docs"},{field:"tests",presentKey:"hasTests",absentKey:"noTests",presentFlag:"--has-tests",absentFlag:"--no-tests"},{field:"comments",presentKey:"hasComments",absentKey:"noComments",presentFlag:"--has-comments",absentFlag:"--no-comments"},{field:"deps",presentKey:"hasDeps",absentKey:"noDeps",presentFlag:"--has-deps",absentFlag:"--no-deps"},{field:"body",presentKey:"hasBody",absentKey:"emptyBody",presentFlag:"--has-body",absentFlag:"--empty-body"},{field:"linked_command",presentKey:"hasLinkedCommand",absentKey:"noLinkedCommand",presentFlag:"--has-linked-command",absentFlag:"--no-linked-command"}],as=e=>{let t=ns.find(n=>e[n.presentKey]===!0&&e[n.absentKey]===!0);if(t)throw new h(`Cannot combine ${t.presentFlag} with ${t.absentFlag} for the same field.`,g.USAGE);return Object.fromEntries(ns.flatMap(n=>e[n.presentKey]===!0?[[n.field,"present"]]:e[n.absentKey]===!0?[[n.field,"absent"]]:[]))},rs=["priority","deadline","updated_at","created_at","title","parent"],os=["asc","desc"],cs=new Set(ho);function _l(e,t,n){let r=e.filter(s=>s.startsWith("item_list_item_read_failed:")).length,o=e.filter(s=>s.startsWith("item_list_directory_read_failed:")).length,i={status:t?"unchecked":r+o>0?"partial":"complete",unreadable_item_count:r,unreadable_directory_count:o};if(n&&i.status==="partial")throw new h(`List source is incomplete: ${r} item document(s) and ${o} item directory/directories could not be read.`,g.GENERIC_FAILURE,{code:"list_source_incomplete",why:"Strict list reads fail closed so agents and SDK consumers never treat an omitted item as a complete workspace.",nextSteps:["Run pm validate --check-storage-integrity to locate unreadable tracker artifacts.","Repair the reported files or align the installed decoder version, then retry."]});return i}function wl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length>0}var bl=[{key:"hasNotes",summaryKey:"has_notes"},{key:"hasLearnings",summaryKey:"has_learnings"},{key:"hasFiles",summaryKey:"has_files"},{key:"hasDocs",summaryKey:"has_docs"},{key:"hasTests",summaryKey:"has_tests"},{key:"hasComments",summaryKey:"has_comments"},{key:"hasDeps",summaryKey:"has_deps"},{key:"hasBody",summaryKey:"has_body"},{key:"hasLinkedCommand",summaryKey:"has_linked_command"},{key:"noNotes",summaryKey:"no_notes"},{key:"noLearnings",summaryKey:"no_learnings"},{key:"noFiles",summaryKey:"no_files"},{key:"noDocs",summaryKey:"no_docs"},{key:"noTests",summaryKey:"no_tests"},{key:"noComments",summaryKey:"no_comments"},{key:"noDeps",summaryKey:"no_deps"},{key:"emptyBody",summaryKey:"empty_body"},{key:"noLinkedCommand",summaryKey:"no_linked_command"}],kl=[{key:"filterReviewerMissing",summaryKey:"filter_reviewer_missing"},{key:"filterRiskMissing",summaryKey:"filter_risk_missing"},{key:"filterConfidenceMissing",summaryKey:"filter_confidence_missing"},{key:"filterSprintMissing",summaryKey:"filter_sprint_missing"},{key:"filterReleaseMissing",summaryKey:"filter_release_missing"}];function ds(e,t){for(let n of bl)t[n.key]===!0&&(e[n.summaryKey]=!0)}function us(e,t){for(let n of kl)t[n.key]===!0&&(e[n.summaryKey]=!0)}function vl(e,t,n){for(let r of n){let o=t[r.optionKey];o!==void 0&&(e[r.summaryKey]=r.normalize?r.normalize(o):o)}}function El(e){let t={};return ds(t,e),t}function xl(e){let t={};return us(t,e),t}var Il=[{optionKey:"type",summaryKey:"type"},{optionKey:"tag",summaryKey:"tag"},{optionKey:"priority",summaryKey:"priority"},{optionKey:"deadlineBefore",summaryKey:"deadline_before"},{optionKey:"deadlineAfter",summaryKey:"deadline_after"},{optionKey:"updatedAfter",summaryKey:"updated_after"},{optionKey:"updatedBefore",summaryKey:"updated_before"},{optionKey:"createdAfter",summaryKey:"created_after"},{optionKey:"createdBefore",summaryKey:"created_before"},{optionKey:"ids",summaryKey:"ids"},{optionKey:"assignee",summaryKey:"assignee"},{optionKey:"assigneeFilter",summaryKey:"assignee_filter"},{optionKey:"parent",summaryKey:"parent"},{optionKey:"sprint",summaryKey:"sprint"},{optionKey:"release",summaryKey:"release"}],Cl=[{optionKey:"type",summaryKey:"type"},{optionKey:"tag",summaryKey:"tag"},{optionKey:"priority",summaryKey:"priority"},{optionKey:"deadlineBefore",summaryKey:"deadline_before"},{optionKey:"deadlineAfter",summaryKey:"deadline_after"},{optionKey:"updatedAfter",summaryKey:"updated_after"},{optionKey:"updatedBefore",summaryKey:"updated_before"},{optionKey:"createdAfter",summaryKey:"created_after"},{optionKey:"createdBefore",summaryKey:"created_before"},{optionKey:"ids",summaryKey:"ids"},{optionKey:"assignee",summaryKey:"assignee"},{optionKey:"assigneeFilter",summaryKey:"assignee_filter"},{optionKey:"parent",summaryKey:"parent"},{optionKey:"sprint",summaryKey:"sprint"},{optionKey:"release",summaryKey:"release"},{optionKey:"limit",summaryKey:"limit"},{optionKey:"offset",summaryKey:"offset"},{optionKey:"includeBody",summaryKey:"include_body"},{optionKey:"compact",summaryKey:"compact"},{optionKey:"fields",summaryKey:"fields"}],Sl=[{key:"filterAcMissing",summaryKey:"filter_ac_missing"},{key:"filterEstimatesMissing",summaryKey:"filter_estimates_missing"},{key:"filterResolutionMissing",summaryKey:"filter_resolution_missing"},{key:"filterMetadataMissing",summaryKey:"filter_metadata_missing"}],Tl="-7d";function Dl(e){let{filtersStatus:t,options:n,treeEnabled:r,treeDepth:o,sortField:i,sortOrder:s,runtimeFieldFilters:a}=e,c={};return t!==null&&(c.status=t),n.dependencyBlocked===!0&&(c.blocked_semantics="status_or_dependency"),vl(c,n,Il),fs(c,n),n.filterAcMissing===!0&&(c.filter_ac_missing=!0),n.filterEstimatesMissing===!0&&(c.filter_estimates_missing=!0),n.filterResolutionMissing===!0&&(c.filter_resolution_missing=!0),n.filterMetadataMissing===!0&&(c.filter_metadata_missing=!0),us(c,n),ds(c,n),n.limit!==void 0&&(c.limit=n.limit),n.offset!==void 0&&(c.offset=n.offset),n.includeBody===!0&&(c.include_body=!0),n.fields!==void 0&&(c.fields=n.fields),r&&(c.tree=!0,o!==void 0&&(c.tree_depth=o)),i!==void 0&&(c.sort=i,c.order=s),wl(a)&&(c.runtime_filters=a),c}function ls(e,t,n){let r=N(e.status,n),o=N(t.status,n);if(r!==o)return r?1:-1;let i=e.priority-t.priority;if(i!==0)return i;let s=x(t.updated_at,e.updated_at);return s!==0?s:(e.id??"").localeCompare(t.id??"")}function Rl(e,t){return[...e].sort((n,r)=>ls(n,r,t))}function is(e,t){if(e!==void 0)return se(e,new Date,t)}function Xe(e,t){if(e==null)return;let n=String(e).trim();if(n.length!==0)return se(n,new Date,t)}function Al(e){let t=e.updatedAfter!=null&&String(e.updatedAfter).trim().length>0;if([e.today===!0,e.recent===!0,t].filter(r=>r).length>1)throw new h("Choose only one updated_at window: --today, --recent, or --updated-after.",g.USAGE);if(e.today===!0){let r=new Date;return r.setHours(0,0,0,0),r.toISOString()}return e.recent===!0?Xe(Tl,"recent"):Xe(e.updatedAfter,"updated-after")}function fs(e,t){t.today===!0&&(e.today=!0),t.recent===!0&&(e.recent=!0)}function Ll(e){if(e==null)return;let t=String(e).trim();if(t.length===0)throw new h("--ids requires at least one non-empty item ID",g.USAGE);let n=t.split(",").map(r=>r.trim()).filter(r=>r.length>0);if(n.length===0)throw new h("--ids requires at least one non-empty item ID",g.USAGE);return new Set(n)}function ms(e){if(e===void 0)return;let t=String(e).trim(),n=t.length===0?Number.NaN:Number(t);if(!Number.isInteger(n)||n<0)throw new h("Offset filter must be a non-negative integer",g.USAGE);return n}function Fl(e){if(e===void 0)return;let t=e.split(",").map(n=>n.trim()).filter(n=>n.length>0);if(t.length===0)throw new h("List --fields requires a comma-separated list of field names",g.USAGE);return[...new Set(t)]}function Nl(e,t=e.projectionCommand??"list"){let n=e.compact===!0,r=e.brief===!0,o=e.full===!0,i=Fl(e.fields);if(Number(n)+Number(r)+Number(o)+ +(i!==void 0)>1)throw new h("List projection options are mutually exclusive. Use one of --compact, --brief, --full, or --fields.",g.USAGE,{code:"projection_options_mutually_exclusive",recovery:{suggested_retry:`pm ${t} --brief`,suggested_retry_args:[t,"--brief"]}});return o?{mode:"full",fields:[]}:r?{mode:"brief",fields:[...er]}:n?{mode:"compact",fields:[...Zn]}:i?{mode:"fields",fields:[...new Set(i.map(a=>we(a)))]}:{mode:"full",fields:[]}}function we(e){return e.startsWith("item.")?e.slice(5):e}function Ml(e,t,n){if(e.mode!=="fields")return;let r=tr(t),o=new Set(r.map(s=>we(s))),i=e.fields.filter(s=>!o.has(we(s)));if(i.length>0)throw new h(`Unknown list --fields value(s): ${i.join(", ")}`,g.USAGE,{code:"unknown_field_projection",examples:["pm list-open --fields id,title,status,type,updated_at","pm list --fields id,title,parent,priority --limit 10","pm list-all --fields id,title,body --limit 5"],recovery:{allowed_values:r,suggested_retry:`pm ${n} --fields id,title,status --limit 10`,suggested_retry_args:[n,"--fields","id,title,status","--limit","10"]}})}var Ol=new Map([["updated","updated_at"],["update","updated_at"],["modified","updated_at"],["created","created_at"],["create","created_at"]]);function $l(e){if(e===void 0)return;let t=e.trim().toLowerCase(),n=Ol.get(t);if(n)return n;if(!rs.includes(t))throw new h(`Sort field must be one of ${rs.join("|")} (aliases: updated->updated_at, created->created_at)`,g.USAGE);return t}function Pl(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(!os.includes(t))throw new h(`Sort order must be one of ${os.join("|")}`,g.USAGE);return t}function jl(e){return V(e,"--tree-depth")}function Ul(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(!t)throw new h("Assignee filter must be one of assigned|unassigned",g.USAGE);if(t!=="assigned"&&t!=="unassigned")throw new h(`Invalid assignee filter "${e}". Allowed: assigned|unassigned`,g.USAGE);return t}function ss(e,t){return mo(e,t,{strict:!0})}function ps(e){return Ye(e,{label:"--tag",normalize:t=>t.toLowerCase()})}function Bl(e,t,n){let r=ps(t);if(r===void 0)return;let o=new Set(e.flatMap(s=>s.tags.map(a=>a.trim().toLowerCase()))),i=[...r].filter(s=>!o.has(s));i.length>0&&n.push(`unknown_tags:${i.join(",")}`)}function Gl(e,t){if(e&&[...e].some(n=>n.toLowerCase()==="none"||n.toLowerCase()==="null"))throw new h('--assignee no longer accepts "none" or "null". Use --assignee-filter unassigned.',g.USAGE);if(e!==void 0&&t==="unassigned")throw new h("Cannot combine --assignee with --assignee-filter unassigned",g.USAGE)}function Kl(e,t,n,r){let o=Ye(t.assignee,{label:"--assignee"}),i=Ul(t.assigneeFilter);Gl(o,i);let s=yl(t),a=as(t);return{idsFilter:Ll(t.ids),statusSet:e&&e.length>0?new Set(e):void 0,excludeTerminal:t.excludeTerminal===!0,typeFilter:Ui(t.type,n),tagFilters:ps(t.tag),priorityFilter:Bi(t.priority),deadlineBefore:is(t.deadlineBefore,"deadline-before"),deadlineAfter:is(t.deadlineAfter,"deadline-after"),updatedAfter:Al(t),updatedBefore:Xe(t.updatedBefore,"updated-before"),createdAfter:Xe(t.createdAfter,"created-after"),createdBefore:Xe(t.createdBefore,"created-before"),assigneeFilter:o,assigneeModeFilter:i,parentFilter:t.parent?.trim(),treeEnabled:t.tree===!0,sprintFilter:Ye(t.sprint,{label:"--sprint"}),releaseFilter:Ye(t.release,{label:"--release"}),missingMetadataFilters:s,missingMetadataActive:or(s),lifecycleClassifier:Wi(r),contentFieldFilters:a,contentFiltersActive:Qi(a)}}function zl(e,t,n){return Hl(e,t,n)&&ql(e,t)&&Wl(e,t)&&Vl(e,t)}function Hl(e,t,n){return t.idsFilter&&!t.idsFilter.has(e.id)||t.statusSet&&!t.statusSet.has(e.status)||t.excludeTerminal&&N(e.status,n)||t.typeFilter&&!t.typeFilter.has(e.type)||t.tagFilters&&![...t.tagFilters].some(r=>(e.tags??[]).some(o=>o.trim().toLowerCase()===r))?!1:t.priorityFilter===void 0||t.priorityFilter.has(e.priority)}function ql(e,t){return Or(e,t)}function Wl(e,t){return t.assigneeModeFilter==="assigned"&&!e.assignee||t.assigneeModeFilter==="unassigned"&&e.assignee?!1:t.assigneeFilter===void 0||e.assignee!==void 0&&t.assigneeFilter.has(e.assignee)}function Vl(e,t){return t.parentFilter!==void 0&&!t.treeEnabled&&e.parent!==t.parentFilter||t.sprintFilter!==void 0&&(e.sprint===void 0||!t.sprintFilter.has(e.sprint))?!1:t.releaseFilter===void 0||e.release!==void 0&&t.releaseFilter.has(e.release)}function Yl(e,t,n,r){return!(!zl(e,t,n)||t.missingMetadataActive&&!Yi(e,t.missingMetadataFilters,t.lifecycleClassifier)||t.contentFiltersActive&&!Zi(e,t.contentFieldFilters)||!ht(e,r))}function Xl(e,t,n,r,o,i){let s=Kl(t,n,r,o);return e.filter(a=>Yl(a,s,o,i))}function Ht(e){if(typeof e!="string")return;let t=e.trim();return t.length>0?t:void 0}function Jl(e,t,n){let r=e,o=typeof r.title=="string"?r.title:"",i=Ht(typeof r.parent=="string"?r.parent:void 0)??null;return{...e,tree_depth:t,tree_parent:i,tree_children:n,tree_title:`${" ".repeat(t)}${o}`}}function Ql(e,t,n){let r=new Map,o=new Map;for(let d of e){r.set(d.id,d);let u=Ht(d.parent);if(!u)continue;let l=o.get(u);l?l.push(d):o.set(u,[d])}let i=t?[...o.get(t)??[]]:e.filter(d=>{let u=Ht(d.parent);return!u||!r.has(u)}),s=[],a=new Set,c=(d,u)=>{if(a.has(d.id))return;a.add(d.id);let l=o.get(d.id)??[];if(s.push(Jl(d,u,l.length)),!(n!==void 0&&u>=n))for(let f of l)c(f,u+1)};for(let d of i)c(d,0);return s}function Zl(e,t){return e===t?0:e===null?1:t===null?-1:e.localeCompare(t)}function ef(e,t){return e===t?0:e===null?1:t===null?-1:x(e,t)}function tf(e,t,n){switch(n){case"priority":return e.priority-t.priority;case"deadline":return ef(e.deadline??null,t.deadline??null);case"updated_at":return x(e.updated_at,t.updated_at);case"created_at":return x(e.created_at,t.created_at);case"title":return(e.title??"").localeCompare(t.title??"");case"parent":return Zl(e.parent??null,t.parent??null);default:return 0}}function nf(e,t,n,r){return t?[...e].sort((o,i)=>{let s=tf(o,i,t);if(s!==0)return n==="desc"?-s:s;let a=ls(o,i,r);return n==="desc"?-a:a}):Rl(e,r)}function rf(e,t,n=!1){let r=we(t.trim());if(r.length===0)return null;let o=e;return n&&r==="title"&&typeof o.tree_title=="string"?o.tree_title:Object.prototype.hasOwnProperty.call(o,r)?o[r]??null:null}function gs(e,t,n=!1){return t.mode==="full"?e:e.map(r=>{let o={};for(let i of t.fields)o[i]=rf(r,i,n);return o})}function of(e){let t=[];for(let n of e)t.push(n.metadata_key);return t}function sf(e,t){if(e.noTruncate!==!0)return V(e.limit)??(t>=1e4?20:void 0)}function af(e,t,n){return t.after===void 0?ms(t.offset)??0:Se(e,t.after,n,r=>r.id)}function hs(e,t,n){return{...e!==void 0?{applied_limit:e}:{},has_more:t,truncated:t,next_cursor:n??null}}async function cf(e,t){let n=S(process.cwd(),t.path);if(!await A($(n)))throw new h(`Tracker is not initialized at ${n}. Run pm init first.`,g.NOT_FOUND);let r=await T(n),o=z(r.schema),i=dt(r.schema),s=e.projectionCommand??"list",a=Nl(e,s);return Ml(a,of(i.definitions),s),{pmRoot:n,settings:r,statusRegistry:o,runtimeFieldFilters:gt(e,i,"list"),typeRegistry:O(r,L()),projection:a}}async function df(e,t,n){let r=t.projection.fields.some(c=>we(c)==="body"),o=t.projection.mode==="full"||t.projection.fields.some(c=>cs.has(we(c))),i=as(e),s=es(i),a=ts(i);return e.includeBody||r||a?await bo(t.pmRoot,t.settings.item_format,t.typeRegistry.type_to_folder,n,t.settings.schema):o||s?await wo(t.pmRoot,t.settings.item_format,t.typeRegistry.type_to_folder,n,t.settings.schema):await ee(t.pmRoot,t.settings.item_format,t.typeRegistry.type_to_folder,n,t.settings.schema)}function uf(e){let t=$l(e.sort),n=Pl(e.order)??"asc",r=e.tree===!0;if(!r&&e.treeDepth!==void 0)throw new h("List --tree-depth requires --tree",g.USAGE);if(!t&&e.order!==void 0)throw new h("List --order requires --sort",g.USAGE);return{sortField:t,sortOrder:n,treeEnabled:r,treeDepth:r?jl(e.treeDepth):void 0,parentRoot:r?Ht(e.parent):void 0}}function lf(e,t,n){let r=ss(t.status,n),o=r??ss(e,n),i=fo(t.status),s=r||i?{...t,excludeTerminal:!1}:t,a=i?"all":o===void 0?s.excludeTerminal===!0?null:"all":o.length===1?o[0]:o;return{resolvedStatus:o,explicitAllStatuses:i,effectiveOptions:s,filtersStatus:a}}function ff(e,t,n,r,o){if(t.after!==void 0&&t.offset!==void 0)throw new h("List --after cannot be combined with --offset.",g.USAGE);let i=sf(t,e.length),s=af(e,t,o),a=i===void 0?e.slice(s):e.slice(s,s+i),c=gs(a,n,r),d=e.length,u=a.length>0&&s+a.length<d,l=u&&a.length>0?Z(o,a[a.length-1].id,s+a.length-1):void 0;return{projected:c,totalMatched:d,pageExtras:hs(i,u,l)}}function ys(e,t,n){return de("list",{status:e,options:lt(t,ko),sort:n.sortField??"default",order:n.sortOrder,tree:n.treeEnabled,tree_depth:n.treeDepth??null})}async function mf(e){let{options:t,runtime:n,statusSelection:r,ordering:o}=e,i=new Set(["status","limit","offset","compact","brief","full","fields","format","stream","includeBody","excludeTerminal","dependencyBlocked","noTruncate","projectionCommand","truncate","notes","learnings","files","docs","tests","comments","deps","linkedCommand"]),s=[n.projection.mode==="full",n.projection.fields.some(y=>{let p=we(y);return p==="body"||cs.has(p)})].includes(!0);if([t.limit===void 0,t.after!==void 0,t.noTruncate===!0,t.includeBody===!0,t.dependencyBlocked===!0,t.strictRead===!0,o.treeEnabled,o.sortField!==void 0,s,Kr(),Object.keys(n.runtimeFieldFilters).length>0,Object.entries(t).some(([y,p])=>p!==void 0&&!i.has(y))].includes(!0))return null;let c=await Re(n.pmRoot,[...new Set(Object.values(n.typeRegistry.type_to_folder))]);if(!c)return null;let d=V(t.limit),u=ms(t.offset)??0,l=await go({pmRoot:n.pmRoot,expectedSourceCursor:c.source_cursor,query:{statuses:r.resolvedStatus,excludeStatuses:r.resolvedStatus===void 0&&r.effectiveOptions.excludeTerminal===!0?[...n.statusRegistry.terminal_statuses]:void 0,terminalStatuses:[...n.statusRegistry.terminal_statuses],limit:d,offset:u}});if(!l)return null;let f=l.items.length>0&&u+l.items.length<l.total,m=f?Z(ys(r.filtersStatus,t,o),l.items.at(-1).id,u+l.items.length-1):void 0;return{projected:gs(l.items,n.projection,!1),totalMatched:l.total,pageExtras:hs(d,f,m)}}function pf(e){let{filtersStatus:t,options:n,noTruncate:r,treeEnabled:o,treeDepth:i,sortField:s,sortOrder:a,runtimeFieldFilters:c}=e,d={};t!==null&&(d.status=t),n.dependencyBlocked===!0&&(d.blocked_semantics="status_or_dependency");let u=n;for(let l of Cl){let f=u[l.optionKey];f!=null&&(d[l.summaryKey]=f)}for(let l of Sl)u[l.key]===!0&&(d[l.summaryKey]=!0);return Object.assign(d,xl(n),El(n)),fs(d,n),r&&(d.no_truncate=!0),n.strictRead===!0&&(d.strict_read=!0),o&&(d.tree=!0,i!==void 0&&(d.tree_depth=i)),s!==void 0&&(d.sort=s,d.order=a),d.runtime_filters=c,d}async function Je(e,t,n){let r=await cf(t,n),o=[],i=uf(t),s=lf(e,t,r.statusRegistry),a=t.noTruncate===!0,c=await mf({options:t,runtime:r,statusSelection:s,ordering:i}),d=c;if(!d){let p=await df(t,r,o);Bl(p,t.tag,o);let b=Xl(p,s.resolvedStatus,s.effectiveOptions,r.typeRegistry,r.statusRegistry,r.runtimeFieldFilters),w=t.dependencyBlocked===!0?(()=>{let E=Ve(p,r.statusRegistry);return b.filter(I=>E.has(I.id.trim().toLowerCase()))})():b,_=nf(w,i.sortField,i.sortOrder,r.statusRegistry),k=i.treeEnabled?Ql(_,i.parentRoot,i.treeDepth):_;d=ff(k,t,r.projection,i.treeEnabled,ys(s.filtersStatus,t,i))}let u=G(),l=[...new Set(o)].sort((p,b)=>p.localeCompare(b)),f=_l(l,c!==null,t.strictRead===!0),m=r.projection.mode==="full"?null:[...r.projection.fields];if(r.projection.mode==="compact"&&t.compact===!0){let p=Dl({filtersStatus:s.filtersStatus,options:t,treeEnabled:i.treeEnabled,treeDepth:i.treeDepth,sortField:i.sortField,sortOrder:i.sortOrder,runtimeFieldFilters:r.runtimeFieldFilters});return{items:d.projected,count:d.projected.length,total:d.totalMatched,...d.pageExtras,completeness:f,filters:p,projection:{mode:"compact",fields:m},...l.length>0?{warnings:l}:{}}}return{items:d.projected,count:d.projected.length,total:d.totalMatched,...d.pageExtras,completeness:f,filters:pf({filtersStatus:s.filtersStatus,options:t,noTruncate:a,treeEnabled:i.treeEnabled,treeDepth:i.treeDepth,sortField:i.sortField,sortOrder:i.sortOrder,runtimeFieldFilters:r.runtimeFieldFilters}),projection:{mode:r.projection.mode,fields:m},sorting:{sort:i.sortField??"default",order:i.sortField?i.sortOrder:"asc"},now:u,...l.length>0?{warnings:l}:{}}}import{encode as gf}from"@toon-format/toon";(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]="f1677c6e-872e-5c42-ae3d-f73f4ec73616")}catch{}})();var sr=["agenda","day","week","month"],ar=["markdown","toon","json"],hf=["sun","mon","tue","wed","thu","fri","sat"],yf=365,_f=365,bs=28,wf=1e3;function cr(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw new h(`${t} must be a non-negative integer`,g.USAGE);return n}function bf(e){if(!e)return new Set(["deadlines","reminders","events"]);let t=e.trim().toLowerCase();if(t==="all")return new Set(["deadlines","reminders","events"]);let n=t.split(/[|,]/).map(o=>o.trim()).filter(o=>o.length>0);if(n.length===0)throw new h("Calendar include filter must not be empty",g.USAGE);let r=new Set;for(let o of n){if(o==="deadlines"||o==="deadline"){r.add("deadlines");continue}if(o==="reminders"||o==="reminder"){r.add("reminders");continue}if(o==="events"||o==="event"||o==="scheduled"){r.add("events");continue}throw new h("Calendar include filter must be deadlines|reminders|events|scheduled|all",g.USAGE)}return r}function ks(e,t){let n;for(let r of t){let o=$r(e,r,2);o!==null&&(n===void 0||o<n.distance)&&(n={choice:r,distance:o})}return n?.choice}function kf(e){if(!e)return"agenda";let t=e.trim().toLowerCase();if(!sr.includes(t)){let n=ks(t,sr);throw new h(`Calendar view must be one of ${sr.join("|")}${n?`. Did you mean "${n}"?`:"."}`,g.USAGE)}return t}function vf(e){if(!e)return;let t=e.trim().toLowerCase();if(!ar.includes(t)){let n=ks(t,ar);throw new h(`Calendar format must be one of ${ar.join("|")}${n?`. Did you mean "${n}"?`:"."}`,g.USAGE)}return t}function nb(e,t){let n=vf(e.format);if(t.json&&n&&n!=="json")throw new h("Cannot combine --json with --format markdown|toon",g.USAGE);return t.json?"json":n??"markdown"}function Ef(e,t){if(e===void 0)return;let n=F(e,t);if(!n){let r=t.definitions.map(o=>o.id);throw new h(`Calendar status filter must be one of ${r.join("|")}`,g.USAGE)}return n}function xf(e){if(e===void 0)return;let t=e.trim().toLowerCase();if(!t)throw new h("Calendar assignee filter must be one of assigned|unassigned",g.USAGE);if(t!=="assigned"&&t!=="unassigned")throw new h(`Invalid calendar assignee filter "${e}". Allowed: assigned|unassigned`,g.USAGE);return t}function qt(e){return new Date(e).toISOString().slice(0,10)}function vs(e,t){if(!t||t==="UTC")return qt(e);try{let n=new Intl.DateTimeFormat("en-CA",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(new Date(e)),r=n.find(s=>s.type==="year")?.value,o=n.find(s=>s.type==="month")?.value,i=n.find(s=>s.type==="day")?.value;if(r&&o&&i)return`${r}-${o}-${i}`}catch{}return qt(e)}function fr(e){let t=new Date(e);return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),0,0,0,0)).toISOString()}function ae(e,t){let n=new Date(e);return new Date(n.getTime()+t*24*60*60*1e3).toISOString()}function Es(e){let t=new Date(fr(e)),n=t.getUTCDay(),r=n===0?-6:1-n;return ae(t.toISOString(),r)}function If(e){let t=new Date(e);return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1,0,0,0,0)).toISOString()}function Cf(e){let t=new Date(e);return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth()+1,1,0,0,0,0)).toISOString()}function Sf(e,t){return x(e,t)>=0?e:t}function _s(e){return Object.fromEntries([...e.entries()].sort(([t],[n])=>t.localeCompare(n)))}function ws(e,t){e.set(t,(e.get(t)??0)+1)}function Tf(e){if(!e)return null;let t=[`freq=${e.freq}`];if(e.interval!==void 0&&t.push(`interval=${e.interval}`),e.count!==void 0&&t.push(`count=${e.count}`),e.until&&t.push(`until=${e.until}`),e.by_weekday&&e.by_weekday.length>0){let n=[...e.by_weekday].sort((r,o)=>Ee(r)-Ee(o));t.push(`by_weekday=${n.join("|")}`)}if(e.by_month_day&&e.by_month_day.length>0){let n=[...e.by_month_day].sort((r,o)=>r-o);t.push(`by_month_day=${n.join("|")}`)}if(e.exdates&&e.exdates.length>0){let n=[...e.exdates].sort((r,o)=>r.localeCompare(o));t.push(`exdates=${n.join("|")}`)}return t.join(",")}function xs(e,t,n,r){let o=new Date(Date.UTC(e,t,n,r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),r.getUTCMilliseconds()));if(!(o.getUTCFullYear()!==e||o.getUTCMonth()!==t||o.getUTCDate()!==n))return o.toISOString()}function Is(e){return hf[new Date(e).getUTCDay()]}function Df(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toISOString():null}function Rf(e){let t=new Set;for(let n of e??[]){let r=Df(n);r&&t.add(r)}return t}function Af(e,t,n,r,o){let i=e??ae(n,-(r??_f)),s=t??ae(e??n,o??yf);return{start:i,end:x(s,i)>0?s:ae(i,1)}}function Lf(e,t,n,r){let o=t.by_weekday!==void 0?[...t.by_weekday]:[Is(e)],i=t.by_month_day!==void 0?[...t.by_month_day]:[new Date(e).getUTCDate()];return{startAt:e,startDate:new Date(e),window:n,maxOccurrences:r??wf,interval:t.interval??1,countLimit:t.count??Number.POSITIVE_INFINITY,until:t.until,excluded:Rf(t.exdates),weekdayFilter:t.by_weekday!==void 0?new Set(t.by_weekday):void 0,monthDayFilter:t.by_month_day!==void 0?new Set(t.by_month_day):void 0,sortedWeekdays:[...new Set(o)].sort((s,a)=>Ee(s)-Ee(a)),sortedMonthDays:[...new Set(i)].sort((s,a)=>s-a),occurrences:[],produced:0}}function Wt(e,t){return x(t,e.startAt)<0?"continue":e.until&&x(t,e.until)>0||x(t,e.window.end)>=0?"stop":e.excluded.has(t)?"continue":(e.produced+=1,x(t,e.window.start)>=0&&e.occurrences.push(t),e.produced>=e.countLimit||e.occurrences.length>=e.maxOccurrences?"stop":"continue")}function Vt(e,t){let n=Is(t),r=new Date(t).getUTCDate(),o=!e.weekdayFilter||e.weekdayFilter.has(n),i=!e.monthDayFilter||e.monthDayFilter.has(r);return o&&i}function Ff(e){let t=e.startAt;for(let n=0;n<e.maxOccurrences&&!(Vt(e,t)&&Wt(e,t)==="stop");n+=1)t=ae(t,e.interval);return e.occurrences}function Nf(e,t,n){let r=Ee(n),o=ae(t,r),i=new Date(o);return new Date(Date.UTC(i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate(),e.startDate.getUTCHours(),e.startDate.getUTCMinutes(),e.startDate.getUTCSeconds(),e.startDate.getUTCMilliseconds())).toISOString()}function Mf(e){let t=Es(e.startAt);for(let n=0;n<e.maxOccurrences;n+=1){let r=ae(t,n*e.interval*7);for(let o of e.sortedWeekdays){let i=Nf(e,r,o);if(Vt(e,i)&&Wt(e,i)==="stop")return e.occurrences}}return e.occurrences}function Of(e){let t=e.startDate.getUTCFullYear(),n=e.startDate.getUTCMonth();for(let r=0;r<e.maxOccurrences;r+=1){let o=new Date(Date.UTC(t,n+r*e.interval,1,0,0,0,0));for(let i of e.sortedMonthDays){let s=xs(o.getUTCFullYear(),o.getUTCMonth(),i,e.startDate);if(!(!s||!Vt(e,s))&&Wt(e,s)==="stop")return e.occurrences}}return e.occurrences}function $f(e){let t=e.startDate.getUTCFullYear(),n=e.startDate.getUTCMonth();for(let r=0;r<e.maxOccurrences;r+=1){let o=t+r*e.interval;for(let i of e.sortedMonthDays){let s=xs(o,n,i,e.startDate);if(!(!s||!Vt(e,s))&&Wt(e,s)==="stop")return e.occurrences}}return e.occurrences}function Pf(e,t,n,r){let o=Lf(e,t,n,r);return t.freq==="daily"?Ff(o):t.freq==="weekly"?Mf(o):t.freq==="monthly"?Of(o):$f(o)}function Cs(e){return[...e].sort((t,n)=>{let r=x(t.at,n.at);if(r!==0)return r;let o=t.item_priority-n.item_priority;if(o!==0)return o;let i=t.item_id.localeCompare(n.item_id);if(i!==0)return i;let s=t.kind.localeCompare(n.kind);if(s!==0)return s;let a=String(t.event_title).localeCompare(String(n.event_title));return a!==0?a:String(t.reminder_text).localeCompare(String(n.reminder_text))})}function mr(e){return{item_id:e.id,item_title:e.title,item_type:e.type,item_status:e.status,item_priority:e.priority,item_assignee:e.assignee??null,item_deadline:e.deadline??null,item_tags:e.tags}}function jf(e){return e.deadline?{at:e.deadline,date:qt(e.deadline),kind:"deadline",reminder_text:null,event_title:null,event_end:null,event_location:null,event_all_day:null,event_timezone:null,event_recurring:null,event_recurrence_rule:null,...mr(e),item_deadline:e.deadline}:null}function Uf(e){return(e.reminders??[]).map(t=>({at:t.at,date:qt(t.at),kind:"reminder",reminder_text:t.text,event_title:null,event_end:null,event_location:null,event_all_day:null,event_timezone:null,event_recurring:null,event_recurrence_rule:null,...mr(e)}))}function Bf(e,t){if(!t)return null;let n=Date.parse(t)-Date.parse(e);return Number.isFinite(n)&&n>0?n:null}function Gf(e,t,n){return t.recurrence&&n!==null?new Date(new Date(e).getTime()+n).toISOString():t.end_at??null}function Kf(e,t,n,r){let o=Tf(t.recurrence),i=Bf(t.start_at,t.end_at);return(t.recurrence?Pf(t.start_at,t.recurrence,n,r):[t.start_at]).map(a=>({at:a,date:t.all_day===!0?a.slice(0,10):vs(a,t.timezone),kind:"event",reminder_text:t.description??null,event_title:t.title??e.title,event_end:Gf(a,t,i),event_location:t.location??null,event_all_day:t.all_day??null,event_timezone:t.timezone??null,event_recurring:!!t.recurrence,event_recurrence_rule:o,...mr(e)}))}function zf(e,t,n,r){let o=[];for(let i of e){let s=n.has("deadlines")?jf(i):null;s&&o.push(s),n.has("reminders")&&o.push(...Uf(i));for(let a of n.has("events")?i.events??[]:[])o.push(...Kf(i,a,t,r))}return Cs(o)}function Hf(e,t,n,r,o){let i=jo(t.type,n),s=t.tag?.trim().toLowerCase(),a=kt(t.priority),c=Ef(t.status,r),d=t.assignee?.trim(),u=xf(t.assigneeFilter),l=t.sprint?.trim(),f=t.release?.trim();if(d&&(d.toLowerCase()==="none"||d.toLowerCase()==="null"))throw new h('--assignee no longer accepts "none" or "null". Use --assignee-filter unassigned.',g.USAGE);if(d!==void 0&&u==="unassigned")throw new h("Cannot combine --assignee with --assignee-filter unassigned",g.USAGE);return e.filter(m=>qf(m,{typeFilter:i,tagFilter:s,priorityFilter:a,statusFilter:c,assigneeFilter:d,assigneeModeFilter:u,sprintFilter:l,releaseFilter:f,runtimeFieldFilters:o}))}function qf(e,t){return Wf(e,t)&&Vf(e,t)&&ht(e,t.runtimeFieldFilters)}function Wf(e,t){return!(t.typeFilter&&e.type!==t.typeFilter||t.tagFilter&&!e.tags.some(n=>n.trim().toLowerCase()===t.tagFilter)||t.priorityFilter!==void 0&&e.priority!==t.priorityFilter||t.statusFilter&&e.status!==t.statusFilter)}function Vf(e,t){return!(t.assigneeModeFilter==="assigned"&&!e.assignee||t.assigneeModeFilter==="unassigned"&&e.assignee||t.assigneeFilter!==void 0&&e.assignee!==t.assigneeFilter||t.sprintFilter!==void 0&&e.sprint!==t.sprintFilter||t.releaseFilter!==void 0&&e.release!==t.releaseFilter)}function Yf(e,t,n){return!(t&&x(e.at,t)<0||n&&x(e.at,n)>=0)}function dr(e,t,n){return e.trim().toLowerCase()==="today"?fr(t):se(e,new Date(t),n)}function Xf(e,t,n){let r=t.date?dr(t.date,n,"--date"):n,o=t.past===!0,i=t.fullPeriod===!0,s=t.from?dr(t.from,n,"--from"):void 0,a=t.to?dr(t.to,n,"--to"):void 0;if(s&&a&&x(s,a)>=0)throw new h("Calendar --from must be before --to",g.USAGE);if(e!=="agenda"&&(t.from!==void 0||t.to!==void 0))throw new h("--from and --to are only supported for --view agenda",g.USAGE);if(e==="agenda")return Jf(r,t,n,o,i,s,a);if(e==="day"){let d=fr(r);return ur(r,n,o,i,d,ae(d,1))}if(e==="week"){let d=Es(r);return ur(r,n,o,i,d,ae(d,7))}let c=If(r);return ur(r,n,o,i,c,Cf(r))}function Jf(e,t,n,r,o,i,s){if(o)throw new h("--full-period is only supported for --view day|week|month. For agenda windows, use --from and --to.",g.USAGE);return{anchor:e,start:i??(t.date?e:r?void 0:n),end:s,fullPeriod:!1}}function ur(e,t,n,r,o,i){let s=n||r;return{anchor:e,start:s?o:Sf(o,t),end:i,periodStart:o,periodEnd:i,fullPeriod:s}}function Qf(e){let t=new Map;for(let n of e){let r=t.get(n.date)??[];r.push(n),t.set(n.date,r)}return[...t.entries()].sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>({date:n,count:r.length,events:Cs(r)}))}function Zf(e){let t=new Set,n=new Map,r=new Map,o=0,i=0,s=0,a=0;for(let c of e)t.add(c.item_id),ws(n,c.item_type),ws(r,c.item_status),c.kind==="deadline"?o+=1:c.kind==="reminder"?i+=1:(s+=1,c.event_recurring===!0&&(a+=1));return{events:e.length,items:t.size,deadlines:o,reminders:i,scheduled:s,by_kind:{deadline:o,reminder:i,event:s},by_type:_s(n),by_status:_s(r),recurring_events:a}}function em(e){let t=e.start??"unbounded",n=e.end??"unbounded";return`${t} -> ${n}`}function Ss(e,t){if(t&&t!=="UTC")try{let n=new Intl.DateTimeFormat("en-GB",{timeZone:t,hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).formatToParts(new Date(e)),r=n.find(i=>i.type==="hour")?.value,o=n.find(i=>i.type==="minute")?.value;if(r&&o)return`${r}:${o}`}catch{}return`${new Date(e).toISOString().slice(11,16)}Z`}function lr(e){let t=Object.entries(e);return t.length===0?"empty":t.map(([n,r])=>`${n}=${r}`).join(", ")}function tm(e){return e.event_end?e.event_all_day===!0?e.event_end.slice(0,10):e.date===vs(e.event_end,e.event_timezone)?Ss(e.event_end,e.event_timezone):e.event_end:null}function nm(e){let t=`${Ss(e.at,e.event_timezone)} [${e.kind}] ${e.item_id} type=${e.item_type} p${e.item_priority} ${e.item_status} ${e.item_title}`;if(e.kind==="reminder"){let n=e.reminder_text??"";return`${t} \u2014 ${n} reminder=${JSON.stringify(n)}`}if(e.kind==="event"){let n=[],r=e.event_title??e.item_title;e.event_title!==null&&e.event_title!==e.item_title&&(n.push(r),n.push(`title=${JSON.stringify(r)}`)),e.event_recurring&&(n.push("(recurring)"),n.push("recurring=true"));let i=tm(e);return i&&n.push(`end=${i}`),e.event_all_day!==null&&n.push(`all_day=${e.event_all_day?"true":"false"}`),e.event_timezone&&n.push(`timezone=${e.event_timezone}`),e.event_location&&(n.push(`@ ${e.event_location}`),n.push(`location=${JSON.stringify(e.event_location)}`)),e.event_recurrence_rule&&n.push(`recurrence=${e.event_recurrence_rule}`),e.reminder_text&&n.push(`description=${JSON.stringify(e.reminder_text)}`),`${t} \u2014 ${n.join(" ")}`}return t}function rb(e){let t=[];if(t.push(`# pm calendar (${e.view})`),t.push(""),t.push(`- now: ${e.now}`),t.push(`- window: ${em(e.range)}`),e.range.period_start&&e.range.period_end&&(t.push(`- period: ${e.range.period_start} -> ${e.range.period_end}`),t.push(`- period-mode: ${e.range.full_period?"full-period":"active-window"}`)),t.push(`- events: ${e.summary.events} (deadlines: ${e.summary.deadlines}, reminders: ${e.summary.reminders}, scheduled: ${e.summary.scheduled})`),t.push(`- items: ${e.summary.items}`),t.push(`- by-kind: ${lr(e.summary.by_kind)}`),t.push(`- by-type: ${lr(e.summary.by_type)}`),t.push(`- by-status: ${lr(e.summary.by_status)}`),t.push(`- recurring-events: ${e.summary.recurring_events}`),t.push(""),e.events.length===0)return t.push("No calendar events matched the selected filters."),t.join(`
|
|
2
|
-
`);for(let n of e.days){t.push(`## ${n.date} (${n.count})`);for(let r of n.events)t.push(`- ${nm(r)}`);t.push("")}if(e.warnings&&e.warnings.length>0){t.push("### warnings");for(let n of e.warnings)t.push(`- ${n}`);t.push("")}return rm(t.join(`
|
|
3
|
-
`))}function ob(e){return gf(e)}function rm(e){let t=e.length;for(;t>0&&e[t-1]===`
|
|
4
|
-
`;)t-=1;return e.slice(0,t)}function om(e){let t=G(),n=kf(e.view),r=Xf(n,e,t),o=V(e.limit),i=bf(e.include),s=cr(e.recurrenceLookaheadDays,"Calendar recurrence lookahead days"),a=cr(e.recurrenceLookbackDays,"Calendar recurrence lookback days"),c=cr(e.occurrenceLimit,"Calendar occurrence limit");if(c!==void 0&&c<1)throw new h("Calendar occurrence limit must be >= 1",g.USAGE);let d=i.has("events")&&!i.has("deadlines")&&!i.has("reminders"),u=e.to!==void 0||s!==void 0||a!==void 0||c!==void 0,l=d&&!u;return{nowValue:t,view:n,rangeBounds:r,limit:o,includeSources:i,occurrenceLimit:c,recurrenceLookaheadDays:l?bs:s,recurrenceLookbackWindowDays:l&&a===void 0?0:a,eventsOnlyCapApplied:l}}function im(e,t){t&&e.push(`recurring_events_default_cap_applied:lookback=0d,lookahead=${bs}d -- use --recurrence-lookback-days/--recurrence-lookahead-days or --to for wider range`)}function sm(e,t){return{type:e.type??null,tag:e.tag??null,priority:e.priority??null,status:e.status??null,assignee:e.assignee??null,assignee_filter:e.assigneeFilter??null,sprint:e.sprint??null,release:e.release??null,runtime_filters:t,limit:e.limit??null,include:e.include??null,full_period:e.fullPeriod===!0?"true":null,recurrence_lookahead_days:e.recurrenceLookaheadDays??null,recurrence_lookback_days:e.recurrenceLookbackDays??null,occurrence_limit:e.occurrenceLimit??null}}function am(e,t){return{start:t.start??null,end:t.end??null,period_start:t.periodStart??null,period_end:t.periodEnd??null,full_period:t.fullPeriod,past:e.past===!0,from:e.from??null,to:e.to??null}}async function Ts(e,t){let n=S(process.cwd(),t.path);if(!await A($(n)))throw new h(`Tracker is not initialized at ${n}. Run pm init first.`,g.NOT_FOUND);let r=om(e),o=await T(n),i=z(o.schema),s=dt(o.schema),a=gt(e,s,"calendar"),c=O(o,L()),d=[];im(d,r.eventsOnlyCapApplied);let u=await ee(n,o.item_format,c.type_to_folder,d,o.schema),l=Hf(u,e,c,i,a),f=Af(r.rangeBounds.start,r.rangeBounds.end,r.nowValue,r.recurrenceLookbackWindowDays,r.recurrenceLookaheadDays),y=zf(l,f,r.includeSources,r.occurrenceLimit).filter(_=>Yf(_,r.rangeBounds.start,r.rangeBounds.end)),p=r.limit===void 0?y:y.slice(0,r.limit),b=Qf(p),w=[...new Set(d)].sort((_,k)=>_.localeCompare(k));return{view:r.view,output_default:"markdown",now:r.nowValue,anchor:r.rangeBounds.anchor,range:am(e,r.rangeBounds),filters:sm(e,a),summary:Zf(p),events:p,days:b,...w.length>0?{warnings:w}:{}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7eefe5f0-364d-559a-b365-0e7d539ee19e")}catch{}})();var pr=["structural","recency","activity_density","graph_proximity","claim_focus","priority_pressure","risk_pressure","deadline_pressure","knowledge_density","author_affinity","usage_affinity","semantic_similarity"],cm=Symbol("no-context-author"),dm=Symbol("no-item-assignee");function Ds(e,t){if(typeof e!="string")return t;let n=e.trim().toLowerCase();return n.length>0?n:t}function um(e,t){let n=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(n)?1-Math.min(Math.max(n,0),t)/t:0}function lm(e,t){let n=typeof e=="string"?Date.parse(e):e instanceof Date?e.getTime():typeof e=="number"?e:Number.NaN;if(!Number.isFinite(n)||!Number.isFinite(t))return 0;let r=(n-t)/864e5;return r<=0?1:1/(1+r/30)}function fm(e){let t=typeof e=="string"?e.trim().toLowerCase():void 0;return t==="critical"||t==="high"?1:t==="medium"?.5:t==="low"?.1:0}function Yt(e,t,n){return e?.[t]??n}function Xt(e,t){let n=d=>{if(typeof d!="string")return"";try{return se(d,new Date(Number.NaN),"updated_at")}catch{return""}},r=[...e].sort((d,u)=>{let l=n(d.updated_at),f=n(u.updated_at);return x(f,l)||d.id.localeCompare(u.id)}),o=new Map(r.map((d,u)=>[d.id,u])),i=Math.max(e.length-1,1),s=Ds(t.author,cm),a=F("in_progress",t.statusRegistry),c=Date.parse(t.now);return e.map(d=>{let u=Ds(d.assignee,dm)===s,l=(d.comments?.length??0)+(d.notes?.length??0)+(d.learnings?.length??0);return{id:d.id,item:d,signals:{recency:e.length===1?1:1-o.get(d.id)/i,activity_density:t.activityDensity?.[d.id],graph_proximity:Yt(t.graphProximity,d.id,d.parent?.3:0),claim_focus:Yt(t.claimFocus,d.id,C(d.status,t.statusRegistry)===a?1:u?.75:0),priority_pressure:um(d.priority,4),risk_pressure:fm(d.risk),deadline_pressure:lm(d.deadline,c),knowledge_density:Yt(t.knowledgeDensity,d.id,Math.min(l/5,1)),author_affinity:Yt(t.authorAffinity,d.id,u?1:0),usage_affinity:t.usageAffinity?.[d.id],semantic_similarity:t.semanticSimilarity?.[d.id]}}})}var mm="context_relevance",pm={structural:.4,recency:.35,activity_density:.25,graph_proximity:.15,claim_focus:.6,priority_pressure:.35,risk_pressure:.2,deadline_pressure:.45,knowledge_density:.25,author_affinity:.2,usage_affinity:.3,semantic_similarity:.5},gm=new TextEncoder;function hm(e){let t=new Set;for(let n of e){if(typeof n.id!="string"||n.id.trim().length===0||t.has(n.id))throw new TypeError("Context relevance candidates require unique non-empty ids");t.add(n.id);for(let[r,o]of Object.entries(n.signals??{})){if(r==="structural"||!pr.includes(r))throw new TypeError(`Unknown context relevance signal: ${r}`);if(o!==void 0&&(!Number.isFinite(o)||o<0||o>1))throw new TypeError(`Context relevance signal ${r} must be a finite number from 0 to 1`)}}}function ym(e){let t={...pm};for(let[n,r]of Object.entries(e??{}))r!==void 0&&pr.includes(n)&&(t[n]=r);for(let[n,r]of Object.entries(t))if(!Number.isFinite(r)||r<0)throw new TypeError(`Context relevance weight ${n} must be a finite non-negative number`);return t}function As(e,t={}){hm(e);let n=ym(t.weights),r=Math.max(e.length-1,1),o=new Set(["structural"]);for(let a of e)for(let[c,d]of Object.entries(a.signals??{}))d!==void 0&&o.add(c);let i=pr.filter(a=>o.has(a)),s=e.map((a,c)=>{let d={structural:e.length===1?1:1-c/r,...a.signals},u={},l=0,f=0;for(let m of i){let y=d[m];if(y===void 0)continue;let p=y*n[m];u[m]=p,l+=p,f+=n[m]}return{...a,baseline_rank:c+1,rank:0,score:f===0?0:l/f,contributions:u}});return s.sort((a,c)=>c.score-a.score||a.baseline_rank-c.baseline_rank),s.forEach((a,c)=>{a.rank=c+1}),{model:"default-weighted-v1",available_signals:i,ranked:s}}async function _m(e,t={}){let n=As(e,t);if(!t.scorer)return n;let r=await t.scorer({candidates:e,default_report:n}),o=new Map;for(let s of r){if(o.has(s.id)||!Number.isFinite(s.score))throw new TypeError("Context relevance scorer must return one finite score for every candidate");o.set(s.id,s.score)}if(o.size!==e.length||e.some(s=>!o.has(s.id)))throw new TypeError("Context relevance scorer must return one finite score for every candidate");let i=n.ranked.map(s=>{let a=o.get(s.id);return{...s,score:a,contributions:{custom:a}}});return i.sort((s,a)=>a.score-s.score||s.baseline_rank-a.baseline_rank),i.forEach((s,a)=>{s.rank=a+1}),{model:"custom",available_signals:n.available_signals,ranked:i}}async function Jt(e,t,n={}){let r=As(t,n),o=await zr(mm,{surface:e,candidates:t,default_report:r});if(!o.handled)return o.warnings.length>0?{...r,warnings:o.warnings}:r;if(!Array.isArray(o.result)||!o.result.every(i=>typeof i=="object"&&i!==null&&typeof i.id=="string"&&typeof i.score=="number"&&Number.isFinite(i.score)))return{...r,warnings:[...o.warnings,"extension_context_relevance_invalid_result"]};try{let i=await _m(t,{...n,scorer:()=>o.result});return o.warnings.length>0?{...i,warnings:o.warnings}:i}catch{return{...r,warnings:[...o.warnings,"extension_context_relevance_invalid_result"]}}}var wm=["ndcg","reciprocal_rank","required_recall","continuity_coverage","token_budget_adherence"];function Rs(e,t){return e.length===0?1:e.filter(n=>t.has(n)).length/e.length}function bm(e){if(!Number.isFinite(e.actual_tokens)||e.actual_tokens<0||!Number.isFinite(e.token_budget)||e.token_budget<=0)throw new TypeError("Context ranking token counts require actual_tokens >= 0 and token_budget > 0");let t=e.judgments??{},n=e.ranked_ids.map(d=>Math.max(0,t[d]??0)),r=Object.values(t).map(d=>Math.max(0,d)).sort((d,u)=>u-d).slice(0,n.length||1),o=d=>d.reduce((u,l,f)=>u+(2**l-1)/Math.log2(f+2),0),i=o(r),s=n.findIndex(d=>d>0),a=new Set(e.ranked_ids),c=e.actual_tokens<=e.token_budget;return{ndcg:i===0?1:o(n)/i,reciprocal_rank:s<0?0:1/(s+1),required_recall:Rs(e.required_ids??[],a),continuity_coverage:Rs(e.continuity_ids??[],a),token_budget_adherence:c?1:e.token_budget/e.actual_tokens,within_token_budget:c}}function km(e){return Math.ceil(gm.encode(JSON.stringify(e)).byteLength/4)}function vm(e){return Math.round(e*1e4)/1e4}function Em(e,t){let n=t==="context"?[...e.high_level??[],...e.low_level??[],...e.blocked_fallback??[]].map(i=>i.id):[...e.recommended?[e.recommended]:[],...e.ready??[]].map(i=>i.id),r=new Set(n),o=(e.ranking?.items??[]).filter(i=>r.has(i.id)).map(i=>({id:i.id,contributions:i.contributions}));return{rankedIds:n,attribution:o}}async function xm(e,t){if(e.id.trim().length===0||e.rationale.trim().length===0)throw new TypeError("Context evaluation scenarios require non-empty id and rationale values");let n=e.surface==="context"?await t.context({...e.options,explainRanking:!0,outputBudget:"unbounded"}):await t.next({...e.options,explainRanking:!0,outputBudget:"unbounded"}),{rankedIds:r,attribution:o}=Em(n,e.surface),i={...n,ranking:void 0},s=km(i);return{id:e.id,surface:e.surface,rationale:e.rationale,ranked_ids:r,actual_tokens:s,metrics:bm({ranked_ids:r,judgments:e.judgments,required_ids:e.required_ids,continuity_ids:e.continuity_ids,actual_tokens:s,token_budget:e.token_budget}),attribution:o}}function Im(e,t){if(e.length===0)throw new TypeError("Context evaluation requires at least one scenario report");let n=wm;for(let i of n)if(!Number.isFinite(t[i]))throw new TypeError(`Context evaluation threshold ${i} must be a finite number`);let r=Object.fromEntries(n.map(i=>[i,vm(e.reduce((s,a)=>s+a.metrics[i],0)/e.length)])),o=n.filter(i=>r[i]<t[i]).map(i=>`${i}:${r[i]}<${t[i]}`);return{scenario_count:e.length,aggregate:r,scenarios:[...e],passed:o.length===0,failures:o}}async function db(e,t,n){let r=[];for(let o of e)r.push(await xm(o,t));return Im(r,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]="b5c90a16-c075-5dc6-a326-ad2da7a6ef6d")}catch{}})();var Cm={balanced:{redundancyPenalty:.35,uncertaintyPenalty:.2},context:{redundancyPenalty:.45,uncertaintyPenalty:.15},next:{redundancyPenalty:.25,uncertaintyPenalty:.3}},Sm=["identity","summary","full"];function Tm(e){if(!e.id.trim()||!Number.isInteger(e.rank)||e.rank<1)throw new TypeError("Context packing candidates require a non-empty id and positive integer rank");if(!Number.isFinite(e.score)||e.score<0)throw new TypeError("Context packing candidate scores must be finite and non-negative");let t=Sm.map(n=>e.token_costs[n]);if(t.some(n=>!Number.isInteger(n)||n<1)||t[0]>t[1]||t[1]>t[2])throw new TypeError("Context projection costs must be positive monotone integers");if(e.uncertainty!==void 0&&(!Number.isFinite(e.uncertainty)||e.uncertainty<0))throw new TypeError("Context packing uncertainty must be finite and non-negative")}function Dm(e){if(!Number.isInteger(e.tokenBudget)||e.tokenBudget<1)throw new TypeError("Context packing tokenBudget must be a positive integer");let t=e.profile??"balanced",n=Cm[t];if(!n)throw new TypeError("Unknown context packing profile");let r=e.redundancyPenalty??n.redundancyPenalty,o=e.uncertaintyPenalty??n.uncertaintyPenalty;if(!Number.isFinite(r)||r<0||r>1||!Number.isFinite(o)||o<0)throw new TypeError("Context packing penalties must be finite and within their supported ranges");if(e.latencyBudgetMs!==void 0&&(!Number.isFinite(e.latencyBudgetMs)||e.latencyBudgetMs<=0))throw new TypeError("Context packing latencyBudgetMs must be positive");return{redundancy:r,uncertainty:o,profile:t}}function Rm(e){let t=new Set;for(let n of e){if(Tm(n),t.has(n.id))throw new TypeError("Context packing candidates require unique ids");t.add(n.id)}return[...e].sort((n,r)=>n.rank-r.rank||n.id.localeCompare(r.id))}function Am(e,t,n,r,o){let i=-1,s=0;for(let a=0;a<e.length;a+=1){if(a%128===0&&o()>=r)return{index:i,evaluated:s,timedOut:!0};let c=e[a];if(c.token_costs.identity>t)continue;s+=1;let d=i<0?void 0:e[i],u=n(c)/c.token_costs.identity,l=d===void 0?Number.NEGATIVE_INFINITY:n(d)/d.token_costs.identity;(u>l||u===l&&d!==void 0&&(c.rank<d.rank||c.rank===d.rank&&c.id.localeCompare(d.id)<0))&&(i=a)}return{index:i,evaluated:s,timedOut:!1}}function Lm(e){let t=new Set,n=[],r=e.tokenBudget,o=d=>{let u=d.lineage??d.cluster,l=u&&t.has(u)?1-e.redundancyPenalty:1;return Math.max(0,(d.score-e.uncertaintyPenalty*(d.uncertainty??0))*l)},i=d=>{let u=d.token_costs.identity;n.push({...d,projection:"identity",tokens:u,marginal_value:o(d)}),r-=u;let l=d.lineage??d.cluster;l&&t.add(l)};for(let d of e.ordered.filter(u=>u.required))d.token_costs.identity<=r&&i(d);let s=e.ordered.filter(d=>!d.required),a=!0,c=0;for(;s.length>0;){let d=Am(s,r,o,e.deadline,e.readClock);if(c+=d.evaluated,d.timedOut&&(a=!1),d.index<0||d.timedOut)break;i(s.splice(d.index,1)[0])}return{included:n,remaining:r,selectionComplete:a,evaluatedCandidates:c}}function Fm(e,t){let n=t;for(let r of["summary","full"]){let o=r==="summary"?"identity":"summary",i=[...e].sort((s,a)=>{let c=s.token_costs[r]-s.token_costs[o],d=a.token_costs[r]-a.token_costs[o];return a.marginal_value/Math.max(d,1)-s.marginal_value/Math.max(c,1)||s.rank-a.rank||s.id.localeCompare(a.id)});for(let s of i){if(s.projection!==o)continue;let a=s.token_costs[r]-s.tokens;a>n||(s.projection=r,s.tokens+=a,n-=a)}}return n}function Ls(e,t){let n=Dm(t),r=Rm(e),o=t.readClock??performance.now.bind(performance),i=t.latencyBudgetMs===void 0?Number.POSITIVE_INFINITY:o()+t.latencyBudgetMs,s=Lm({ordered:r,tokenBudget:t.tokenBudget,redundancyPenalty:n.redundancy,uncertaintyPenalty:n.uncertainty,deadline:i,readClock:o}),{included:a}=s,c=Fm(a,s.remaining);a.sort((u,l)=>u.rank-l.rank||u.id.localeCompare(l.id));let d=new Set(a.map(u=>u.id));return{included:a,omitted_ids:r.filter(u=>!d.has(u.id)).map(u=>u.id),token_budget:t.tokenBudget,used_tokens:t.tokenBudget-c,remaining_tokens:c,complete:s.selectionComplete&&a.length===e.length&&a.every(u=>u.projection==="full"),selection_complete:s.selectionComplete,termination_reason:s.selectionComplete?"exhausted":"latency_budget",evaluated_candidates:s.evaluatedCandidates,latency_budget_ms:t.latencyBudgetMs??null,profile:n.profile,degradation_ladder:["full","summary","identity"]}}import{randomUUID as Nm}from"node:crypto";import{appendFile as Mm,mkdir as Om,readFile as $m,rename as Pm,stat as jm,writeFile as Um}from"node:fs/promises";import Fs 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]="5f4ccd28-a001-54aa-8378-893025c69b96")}catch{}})();var Ns=2048,Ms=30,Os=864e5,Bm=262144,Gm="context-usage-ledger",ne=class extends TypeError{code="context_usage_validation_failed";constructor(t){super(t),this.name="ContextUsageValidationError"}};function $s(e){return Fs.join(e,"runtime","context-usage.jsonl")}function Qe(e){let t=e.now??new Date().toISOString(),n=Date.parse(t);if(!Number.isFinite(n))throw new ne("Context usage now must be a valid timestamp");return{iso:new Date(n).toISOString(),ms:n}}async function Ps(e){try{let n=(await $m($s(e.pmRoot),"utf8")).split(`
|
|
5
|
-
`).filter(Boolean).flatMap(s=>{try{return[JSON.parse(s)]}catch{return[]}}),r=e.maxEvents??Ns,o=e.retentionDays??Ms,i=Qe(e).ms-o*Os;return n.filter(s=>Date.parse(s.at)>=i).slice(-r)}catch{return[]}}async function js(e,t){let n=e.maxEvents??Ns,r=e.retentionDays??Ms;if(!Number.isInteger(n)||n<1||!Number.isFinite(r)||r<=0)throw new ne("Context usage retention requires positive maxEvents and retentionDays");let o=$s(e.pmRoot),i=Fs.dirname(o),s=await De(e.pmRoot,Gm,30,`context-usage:${process.pid}`,!1,!1,3e3);try{if(await Om(i,{recursive:!0}),await Mm(o,t.map(u=>`${JSON.stringify(u)}
|
|
6
|
-
`).join(""),"utf8"),!(e.maxEvents!==void 0||e.retentionDays!==void 0)&&(await jm(o)).size<=Bm)return;let c=await Ps(e),d=`${o}.${process.pid}.${Nm()}.tmp`;await Um(d,`${c.map(u=>JSON.stringify(u)).join(`
|
|
7
|
-
`)}
|
|
8
|
-
`,"utf8"),await Pm(d,o)}finally{await s()}}async function Us(e,t){await js(e,[t])}async function Qt(e){if(!(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||e.enabled===!1)){if(!e.author.trim()||e.rows.some(t=>!t.id.trim()||!Number.isInteger(t.rank)||t.rank<1))throw new ne("Context usage serving requires an author and valid ranked rows");await Us(e,{kind:"serve",at:Qe(e).iso,author:e.author.trim(),surface:e.surface,profile:e.profile.trim()||"balanced",rows:e.rows})}}async function hb(e){if(!(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||e.enabled===!1)){if(!e.author.trim()||!e.itemId.trim()||!e.intent.trim())throw new ne("Context usage touch requires author, itemId, and intent");await Us(e,{kind:"touch",at:Qe(e).iso,author:e.author.trim(),item_id:e.itemId.trim(),intent:e.intent.trim()})}}async function yb(e){if(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||e.enabled===!1||e.itemIds.length===0)return;let t=e.author.trim(),n=e.intent.trim();if(!t||!n)throw new ne("Context usage touch requires author and intent");let r=new Set;for(let s of e.itemIds){if(typeof s!="string")throw new ne("Context usage touch requires string itemIds");let a=s.trim();if(!a)throw new ne("Context usage touch requires non-empty itemId");r.add(a)}let o=Qe(e).iso,i=[...r].map(s=>({kind:"touch",at:o,author:t,item_id:s,intent:n}));await js(e,i)}function Km(e,t,n,r){return e.find(({entry:o,time:i})=>o.item_id===t&&i>=n&&i-n<=r)?.time}async function Zt(e){if(process.env.PM_CONTEXT_USAGE_DISABLED==="1"||e.enabled===!1)return{affinity:{},positive_judgments:0,serving_events:0};let t=await Ps(e),n=Qe(e).ms,r=(e.horizonHours??24)*36e5;if(!Number.isFinite(r)||r<=0)throw new ne("Context usage horizonHours must be positive");let o=e.author.trim(),i=t.filter(l=>l.kind==="touch"&&l.author===o).map(l=>({entry:l,time:Date.parse(l.at)})),s=new Map,a=0,c=0;for(let l of t){if(l.kind!=="serve"||l.author!==o)continue;a+=1;let f=Date.parse(l.at);for(let m of l.rows){if(!m.included)continue;let y=Km(i,m.id,f,r);if(y===void 0)continue;c+=1;let p=Math.max(0,(n-y)/Os);s.set(m.id,(s.get(m.id)??0)+Math.exp(-p/14))}}let d=Math.max(0,...s.values());return{affinity:Object.fromEntries([...s.entries()].map(([l,f])=>[l,.05+.95*(d>0?f/d:0)])),positive_judgments:c,serving_events:a}}import Ze from"node:fs/promises";import et from"node:path";import{createHash as zm,randomUUID as Hm}from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="3d0a558b-6a01-5bca-a2f7-21766be6d67c")}catch{}})();var gr=1,hr=1,Bs=["recency","activity_density","graph_proximity","priority_pressure","risk_pressure","knowledge_density"],qm={context_signal_store_invalid:{code:"context_signal_store_invalid",meaning:"The persisted context-signal snapshot was unreadable or invalid and was rebuilt from authoritative items.",recovery_command:"pm context",recovery_effect:"Re-read context and confirm the rebuilt snapshot can be loaded without the warning."},context_signal_store_stale:{code:"context_signal_store_stale",meaning:"The persisted context-signal snapshot did not match the authoritative cursor or item corpus and was rebuilt.",recovery_command:"pm context",recovery_effect:"Re-read context and confirm the rebuilt snapshot is now fresh."},context_signal_store_write_failed:{code:"context_signal_store_write_failed",meaning:"Context signals were rebuilt in memory, but the derived snapshot could not be persisted.",recovery_command:"pm context",recovery_effect:"Retry the derived snapshot write and confirm the warning clears after storage access is restored."}};function en(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Gs(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1}function Wm(e){let t={};for(let n of Bs){let r=e[n];if(r!==void 0){if(!Gs(r))throw new TypeError(`Context relevance signal ${n} must be a finite number from 0 to 1`);t[n]=r}}return t}function Vm(e,t){let n=e.map(o=>[o.id,t(o)]),r=Math.max(0,...n.map(([,o])=>o));return Object.fromEntries(n.map(([o,i])=>[o,r===0?0:i/r]))}function Ym(e){let t=new Map(e.map(o=>[o.id,0])),n=o=>{t.set(o,(t.get(o)??0)+1)};for(let o of e){typeof o.parent=="string"&&o.parent.trim()&&(n(o.id),n(o.parent.trim()));for(let i of o.dependencies??[])typeof i.id!="string"||!i.id.trim()||(n(o.id),n(i.id.trim()))}let r=Math.max(0,...t.values());return Object.fromEntries(e.map(o=>[o.id,r===0?0:t.get(o.id)/r]))}function Xm(e,t){return{...t,activityDensity:t.activityDensity??Vm(e,n=>(n.comments?.length??0)+(n.notes?.length??0)+(n.learnings?.length??0)+(n.test_runs?.length??0)),graphProximity:t.graphProximity??Ym(e)}}function Jm(e){if(!en(e)||typeof e.id!="string"||!en(e.signals))return null;let t={},n=new Set(Bs);for(let[r,o]of Object.entries(e.signals)){if(!n.has(r)||!Gs(o))return null;t[r]=o}return{id:e.id,signals:t}}function Qm(e){if(!en(e)||e.format_version!==gr||e.signal_set_version!==hr||typeof e.source_cursor!="string"||e.source_cursor.trim().length===0||typeof e.generated_at!="string"||!Number.isFinite(Date.parse(e.generated_at))||e.source!=="derived_index"&&e.source!=="scan_fallback"||!Array.isArray(e.items))return null;let t=e.items.map(Jm);if(t.some(r=>r===null))return null;let n=t;return new Set(n.map(r=>r.id)).size!==n.length||n.some(r=>r.id.trim().length===0)?null:{format_version:gr,signal_set_version:hr,source_cursor:e.source_cursor,generated_at:e.generated_at,source:e.source,items:n.sort((r,o)=>r.id.localeCompare(o.id))}}function Zm(e,t){if(typeof t.sourceCursor!="string"||t.sourceCursor.trim().length===0)throw new TypeError("Context signal source cursor must be non-empty");if(!Number.isFinite(Date.parse(t.now)))throw new TypeError("Context signal snapshot clock must be a valid timestamp");if(t.source!=="derived_index"&&t.source!=="scan_fallback")throw new TypeError("Context signal snapshot source must be derived_index or scan_fallback");let n=Xt(e,Xm(e,t)).map(({id:r,signals:o})=>({id:r,signals:Wm(o)})).sort((r,o)=>r.id.localeCompare(o.id));return Object.freeze({format_version:gr,signal_set_version:hr,source_cursor:t.sourceCursor,generated_at:t.now,source:t.source,items:Object.freeze(n.map(r=>Object.freeze(r)))})}var yr=class{filePath;constructor(t){if(typeof t!="string"||t.trim().length===0)throw new TypeError("Context signal store path must be non-empty");this.filePath=et.resolve(t)}async read(){try{return JSON.parse(await Ze.readFile(this.filePath,"utf8"))}catch(t){if(en(t)&&st(t))return null;throw t}}async write(t){let n=et.dirname(this.filePath);await Ze.mkdir(n,{recursive:!0});let r=et.join(n,`.${et.basename(this.filePath)}.${Hm()}.tmp`);try{await Ze.writeFile(r,`${JSON.stringify(t)}
|
|
9
|
-
`,{encoding:"utf8",flag:"wx"}),await Ze.rename(r,this.filePath)}finally{try{await Ze.rm(r,{force:!0})}catch{}}}},_r=class{adapter;constructor(t){this.adapter=t}async readOrRebuild(t,n){let r=[],o=null;try{let l=await this.adapter.read();o=Qm(l),l!==null&&o===null&&r.push("context_signal_store_invalid")}catch{r.push("context_signal_store_invalid")}let i=t.map(l=>l.id).sort((l,f)=>l.localeCompare(f)),s=o?.items.map(l=>l.id)??[],a=o!==null&&o.source_cursor===n.sourceCursor&&o.source===n.source&&s.length===i.length&&s.every((l,f)=>l===i[f]),c;if(a&&o!==null)c=o;else{o!==null&&r.push("context_signal_store_stale"),c=Zm(t,n);try{await this.adapter.write(c)}catch{r.push("context_signal_store_write_failed")}}let d=new Map(c.items.map(l=>[l.id,l.signals])),u=Xt(t,n);return{snapshot:c,candidates:u.map(l=>({...l,signals:{...l.signals,...d.get(l.id)}})),cache_status:a?"fresh":"rebuilt",warnings:r,warning_details:r.map(l=>qm[l])}}};function ep(e){let t=zm("sha256");for(let n of[...e].sort((r,o)=>r.id.localeCompare(o.id)))t.update(JSON.stringify([n.id,n.updated_at,n.status,n.parent??null,n.priority??null,n.risk??null,(n.dependencies??[]).map(r=>r.id).sort(),n.comments?.length??0,n.notes?.length??0,n.learnings?.length??0,n.test_runs?.length??0]));return`scan:${t.digest("hex")}`}async function tn(e,t){let n=t.sourceCursor!==void 0,r=t.source!==void 0;if(n!==r)throw new TypeError("Context signal source and source cursor must be provided together");if(t.storeKey!==void 0&&!/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/u.test(t.storeKey))throw new TypeError("Context signal store key must be a filesystem-safe identifier");let o=n?null:await Re(t.pmRoot),i=t.sourceCursor??o?.source_cursor??ep(e),s=t.source??(o===null?"scan_fallback":"derived_index");return new _r(new yr(et.join(t.pmRoot,"runtime",t.storeKey?`context-signals-${t.storeKey}.json`:"context-signals.json"))).readOrRebuild(e,{...t,sourceCursor:i,source:s})}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a19662f9-f8b3-5988-bc04-1b5a5edaaaa5")}catch{}})();function tp(e){for(let t of e.patch){if(t.path==="/metadata/status"||t.path==="/front_matter/status"){if(typeof t.value=="string")return t.value.trim().toLowerCase();continue}if(t.path!==""||typeof t.value!="object")continue;let n=t.value,r=n.metadata??n.front_matter;if(typeof r?.status=="string")return r.status.trim().toLowerCase()}}function np(e,t,n){let r,o;for(let i of t){let s=tp(i);if(s===void 0)continue;let a=n.has(s)&&(r!==void 0&&!n.has(r)||r===void 0&&i.op==="create");r=s,a&&Number.isFinite(Date.parse(i.ts))&&(o={id:e,completed_at:i.ts,history_op:i.op})}return o}function Ks(e){return e.completed_at!==void 0?{resolved:!0,timestamp:e.completed_at,source:"completed_at",fallback:!1}:e.closed_at!==void 0?{resolved:!0,timestamp:e.closed_at,source:"closed_at",fallback:!0}:e.updated_at!==void 0?{resolved:!0,timestamp:e.updated_at,source:"updated_at",fallback:!0}:{resolved:!1}}function Cb(e,t,n){let r=[];for(let o of e){if(o.completed_at!==void 0||!n.has(o.status.trim().toLowerCase()))continue;let i=np(o.id,t.get(o.id)??[],n);i!==void 0&&r.push(i)}return r.sort((o,i)=>o.id.localeCompare(i.id))}import rp from"node:path";import{createHash as op}from"node:crypto";import ip from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ad77a79d-54da-55f1-8ac8-935366880d90")}catch{}})();var zs=1,sp=1e4,Hs=12;function ap(e){let t=new Date(e);return`${t.getUTCFullYear()}-Q${Math.floor(t.getUTCMonth()/3)+1}`}function cp(e,t){let n=new Set,r=e.parent;for(;r&&!n.has(r);){n.add(r);let o=t.get(r);if(!o)return;if(o.type.toLowerCase()==="epic")return o;r=o.parent}}function dp(e){let t=[...e.items].sort((o,i)=>i.completion.timestamp.localeCompare(o.completion.timestamp)||o.item.id.localeCompare(i.item.id)),n=new Set,r=0;for(let{item:o}of t){let i=o.resolution??o.close_reason;i?.trim()&&n.add(i.trim()),r+=(o.notes?.length??0)+(o.learnings?.length??0)}return{kind:e.kind,key:e.key,label:e.label,item_count:t.length,first_closed_at:t.at(-1).completion.timestamp,last_closed_at:t[0].completion.timestamp,representative_items:t.slice(0,5).map(({item:{id:o,title:i}})=>({id:o,title:i})),outcomes:[...n].sort().slice(0,5),knowledge_entries:r}}function up(e,t){if(!t.sourceCursor.trim())throw new TypeError("Workspace memory source cursor must be non-empty");if(!Number.isFinite(Date.parse(t.now)))throw new TypeError("Workspace memory clock must be a valid timestamp");let n=e.filter(i=>t.statusRegistry.terminal_done_statuses.has(C(i.status,t.statusRegistry))).map(i=>{let s=Ks(i);if(!s.resolved)throw new TypeError(`Completed item ${i.id} has no reporting timestamp`);return{item:i,completion:s}}),r=new Map(e.map(i=>[i.id,i])),o=new Map;for(let i of n){let{item:s,completion:a}=i,c=ap(a.timestamp),d=`epoch:${c}`,u=o.get(d)??{kind:"epoch",key:c,label:c,items:[]};u.items.push(i),o.set(d,u);let l=cp(s,r);if(l){let f=`epic:${l.id}`,m=o.get(f)??{kind:"epic",key:l.id,label:l.title,items:[]};m.items.push(i),o.set(f,m)}}return{format_version:zs,source_cursor:t.sourceCursor,source_item_count:e.length,generated_at:t.now,completion_time_sources:n.reduce((i,{completion:s})=>(i[s.source]+=1,i),{completed_at:0,closed_at:0,updated_at:0}),rollups:[...o.values()].map(dp).sort((i,s)=>s.last_closed_at.localeCompare(i.last_closed_at)||i.kind.localeCompare(s.kind)||i.key.localeCompare(s.key))}}function lp(e){return typeof e=="object"&&e!==null&&"id"in e&&typeof e.id=="string"&&e.id.length>0&&"title"in e&&typeof e.title=="string"}function fp(e){if(typeof e!="object"||e===null)return!1;let t=e,n=[t.key,t.label].every(o=>typeof o=="string"&&o.length>0),r=[t.first_closed_at,t.last_closed_at].every(o=>typeof o=="string"&&Number.isFinite(Date.parse(o)));return(t.kind==="epoch"||t.kind==="epic")&&n&&Number.isSafeInteger(t.item_count)&&t.item_count>0&&r&&Array.isArray(t.representative_items)&&t.representative_items.every(lp)&&Array.isArray(t.outcomes)&&t.outcomes.every(o=>typeof o=="string")&&Number.isSafeInteger(t.knowledge_entries)&&t.knowledge_entries>=0}function mp(e){if(typeof e!="object"||e===null||Array.isArray(e))return null;let t=e;return t.format_version!==zs||typeof t.source_cursor!="string"||!t.source_cursor.trim()||!Number.isSafeInteger(t.source_item_count)||t.source_item_count<0||typeof t.generated_at!="string"||!Number.isFinite(Date.parse(t.generated_at))||!Array.isArray(t.rollups)?null:t.rollups.every(fp)?t:null}function pp(e){return`scan:${op("sha256").update(xe(e.map(t=>[t.id,t.updated_at,t.status,t.parent]).sort(([t],[n])=>String(t).localeCompare(String(n))))).digest("hex")}`}async function gp(e,t,n){return n!==void 0?n:(await Re(t))?.source_cursor??pp(e)}async function hp(e){try{let t=mp(JSON.parse(await ip.readFile(e,"utf8")));return{snapshot:t,invalid:t===null}}catch(t){return{snapshot:null,invalid:!(typeof t=="object"&&t!==null&&"code"in t&&st(t))}}}async function qs(e,t){let n=Math.max(1,Math.floor(t.minimumItems??sp));if(e.length<n)return{snapshot:null,cache_status:"skipped",warnings:[]};let r=await gp(e,t.pmRoot,t.sourceCursor),o=rp.join(t.pmRoot,"runtime","workspace-memory.json"),i=[],s=await hp(o),a=s.snapshot;if(s.invalid&&i.push("workspace_memory_invalid"),a?.source_cursor===r&&a.source_item_count===e.length)return{snapshot:a,cache_status:"fresh",warnings:i};a&&i.push("workspace_memory_stale");let c=up(e,{statusRegistry:t.statusRegistry,sourceCursor:r,now:t.now});try{await K(o,`${JSON.stringify(c)}
|
|
10
|
-
`)}catch{i.push("workspace_memory_write_failed")}return{snapshot:c,cache_status:"rebuilt",warnings:i}}function yp(e,t,n=Hs){let r=Math.max(0,Math.floor(t)),o=0,i=[];for(let s of e.rollups){if(i.length>=Math.max(0,Math.floor(n)))break;let a=Math.ceil(JSON.stringify(s).length/4);o+a>r||(i.push(s),o+=a)}return i}function Ws(e,t,n=Hs){if(e.snapshot===null)return;let r=yp(e.snapshot,t,n);if(r.length!==0)return{cache_status:e.cache_status==="fresh"?"fresh":"rebuilt",source_cursor:e.snapshot.source_cursor,...e.snapshot.completion_time_sources?{completion_time_sources:{...e.snapshot.completion_time_sources}}:{},rollups:r}}function _p(e,t,n=5){if(e===null)return[];let r=t.trim().toLowerCase().split(/\s+/u).filter(Boolean);return r.length===0?[]:e.rollups.map(o=>({rollup:o,score:r.filter(i=>[o.key,o.label,...o.outcomes,...o.representative_items.flatMap(s=>[s.id,s.title])].join(" ").toLowerCase().includes(i)).length})).filter(({score:o})=>o>0).sort((o,i)=>i.score-o.score||i.rollup.last_closed_at.localeCompare(o.rollup.last_closed_at)||o.rollup.key.localeCompare(i.rollup.key)).slice(0,Math.max(0,Math.floor(n))).map(({rollup:o})=>o)}function Ob(e,t,n=5){let r=_p(e.snapshot,t,n);if(r.length!==0)return{cache_status:e.cache_status==="fresh"?"fresh":"rebuilt",matches:r}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="97c1e310-3cd9-5846-a54c-d019b0351541")}catch{}})();var Vs=16;async function Ys(e,t,n){let r=O(t,L()).type_to_folder,o=[],i=new Set,s=n;for(;s&&o.length<Vs;){let a=s.trim().toLowerCase();if(!a||i.has(a))break;i.add(a);let c=await le(e,s,t.id_prefix,t.item_format,r);if(!c)break;let d=await fe(c,{schema:t.schema});o.push(d.document.metadata.id),s=d.document.metadata.parent}return o}async function Gb(e){await Yr({pmRoot:e.pmRoot,principal:e.principal,itemId:e.itemId,lineageIds:await Ys(e.pmRoot,e.settings,e.itemId)})}async function Kb(e){await Xr(e)}async function zb(e){await Jr({pmRoot:e.pmRoot,principal:e.principal,...e.itemId?{itemId:e.itemId,lineageIds:await Ys(e.pmRoot,e.settings,e.itemId)}:{}})}var Hb={lineage_depth:Vs,active_items:64,evidence_rows:32};function Xs(e){if(!e)return;let t={};for(let n of e.active_item_ids)t[n]=1;e.focused_item_id&&(t[e.focused_item_id]=1);for(let n of e.evidence){let r=/^lineage:(.+)$/u.exec(n)?.[1];r&&t[r]===void 0&&(t[r]=.75)}return Object.keys(t).length>0?t: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]="ee5279f2-7489-59fb-8f96-f2e035434cce")}catch{}})();var wp=["markdown","toon","json","ndjson"],nt=new Set(["Epic","Feature"]),na=10,ra=1e4,oa=["hierarchy","activity","progress","recently_created","unparented","workload"],bp=[...oa,"blockers","files","staleness","tests"],kp=/^(\d{4})-(\d{2})-(\d{2})/,vp=/^(\d{4})(\d{2})(\d{2})(?:[T ]?\d{2}|$)/,Ep=/^(\d{4})(\d{2})(\d{2})$/,xp=/^(\d{4})(\d{2})(\d{2})(?:[T\s]?)(\d{2})(\d{2})(\d{2})?(Z|[+-]\d{2}:?\d{2})?$/i;function Ip(e){if(!e)return;let t=e.trim().toLowerCase();if(!wp.includes(t))throw new h("Context format must be one of markdown|toon|json|ndjson",g.USAGE);return t}var Js=new Set(["id","title","type","status","priority","order","deadline","assignee","tags","tags_inherited","updated_at","parent","children_total","children_closed","completion_pct","blocked","blocker_ids","created_at"]);function Cp(e){if(e===void 0)return;let t=[];for(let n of e.split(",")){let r=n.trim().toLowerCase();if(r.length!==0){if(!Js.has(r))throw new h(`Context --fields value not projectable: ${r} (valid: ${[...Js].join(", ")})`,g.USAGE);t.includes(r)||t.push(r)}}if(t.length===0)throw new h("Context --fields requires at least one field name",g.USAGE);return t}function tt(e,t){return e.map(n=>{let r={},o=n;for(let i of t)r[i]=o[i]??null;return r})}function uk(e,t){let n=Ip(e.format);if(t.json&&n&&n!=="json"&&n!=="ndjson")throw new h("Cannot combine --json with --format markdown|toon",g.USAGE);return t.json?n==="ndjson"?"ndjson":"json":n??"toon"}function Sp(e,t){return V(e,"--limit")??(t==="full"?Number.MAX_SAFE_INTEGER:na)}function kr(e,t){if(e===void 0)return t;let n=typeof e=="number"?e:Number(e);if(!Number.isInteger(n)||n<1)throw new h("--token-budget must be a positive integer",g.USAGE);return n}function Tp(e,t){return t>=ra&&e===Number.MAX_SAFE_INTEGER?na:e}function Dp(e,t){if(!e)return t.default_depth;let n=e.trim().toLowerCase();if(!dn.includes(n))throw new h(`Context --depth must be one of ${dn.join("|")}`,g.USAGE);return n}function Rp(e,t,n){if(e&&e.length>0){let o=[];for(let i of e){let s=i.trim().toLowerCase();if(!at.includes(s))throw new h(`Context --section must be one of ${at.join("|")}`,g.USAGE);o.includes(s)||o.push(s)}return o}return t==="brief"?[]:t==="full"?[...at]:(t==="deep"?bp:oa).filter(o=>n.sections[o])}function Ap(e,t){return e?V(e,"--activity-limit")??t.activity_limit:t.activity_limit}function Lp(e,t){if(!e)return t.stale_threshold_days;let n=e.trim().toLowerCase(),r=/^(\d+)d?$/.exec(n);if(!r)throw new h("--stale-threshold must be a number of days (e.g. 7 or 7d)",g.USAGE);let o=parseInt(r[1],10);if(o<=0)throw new h("--stale-threshold must be positive",g.USAGE);return o}function Qs(e,t){let n=C(e,t),r=F("in_progress",t),o=F("open",t),i=F("blocked",t),s=F("draft",t);return r&&n===r?0:o&&n===o?1:i&&n===i?2:s&&n===s?3:t.active_statuses.has(n)?4:t.blocked_statuses.has(n)?5:t.terminal_statuses.has(n)?7:6}function rt(e,t){let n=F("closed",t);return C(e,t)===n}function vr(e,t){let n=F("in_progress",t);return C(e,t)===n}function ia(e,t){let n=F("open",t);return C(e,t)===n}function Fp(e,t){return t.blocked_statuses.has(C(e,t))}var Np=["compact","brief","fields","includeBody","include_body","parent"];function Mp(e){let t={...e};for(let n of Np)delete t[n];return t}function Er(e,t){let n=t.trim().toLowerCase(),r=e.find(a=>a.id.trim().toLowerCase()===n);if(!r)return{ids:new Set,found:!1};let o=Ue(e),i=ot(r.id,o);return{ids:new Set([r.id,...i.map(a=>a.id)].map(a=>a.trim().toLowerCase())),found:!0}}function Op(e){if(e===void 0)return;let t=e.trim();if(t.length===0)throw new h("Context --parent requires an item id",g.USAGE);return t}function $p(e,t){let n=e??null,r=t??null;return n===null&&r===null?0:n===null?1:r===null?-1:n-r}function Pp(e,t){let n=e??null,r=t??null;return n===null&&r===null?0:n===null?1:r===null?-1:x(n,r)}function jp(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}function Up(e){let t=kp.exec(e)??vp.exec(e);if(!t)return!0;let n=Number.parseInt(t[1],10),r=Number.parseInt(t[2],10),o=Number.parseInt(t[3],10);return r>=1&&r<=12&&o>=1&&o<=jp(n,r-1)}function Bp(e){let t=Ep.exec(e);if(t)return`${t[1]}-${t[2]}-${t[3]}`;let n=xp.exec(e);if(n){let[,r,o,i,s,a,c,d]=n,u=c?`:${c}`:"",l=d&&d.length===5&&d!=="Z"?`${d.slice(0,3)}:${d.slice(3)}`:d??"";return`${r}-${o}-${i}T${s}:${a}${u}${l}`}return e}function sa(e){if(typeof e!="string")return Number.NaN;let t=e.trim();if(t.length===0||!Up(t))return Number.NaN;let n=Date.parse(Bp(t));return Number.isFinite(n)?n:Number.NaN}function br(e){let t=sa(e);return Number.isFinite(t)?new Date(t).toISOString():""}function Gp(e){let t=sa(e);return Number.isFinite(t)?new Date(t).toISOString().slice(0,10):"unknown"}function xr(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function be(e,t,n){let r=Qs(e.status,n)-Qs(t.status,n);if(r!==0)return r;let o=e.priority-t.priority;if(o!==0)return o;let i=$p(e.order,t.order);if(i!==0)return i;let s=Pp(e.deadline,t.deadline);if(s!==0)return s;let a=x(br(t.updated_at),br(e.updated_at)),c=e.id.localeCompare(t.id);return a!==0?a:c}function wr(e){return Math.max(1,Math.ceil(Buffer.byteLength(JSON.stringify(e),"utf8")/4))}function Ir(e,t,n=new Set,r="context"){return Ls(e.ranked.map(o=>({id:o.id,item:o.item,rank:o.rank,score:o.score,required:n.has(o.id),cluster:o.item.parent?.trim()||o.item.type,token_costs:{identity:wr({id:o.id,title:o.item.title}),summary:wr({id:o.id,title:o.item.title,type:o.item.type,status:o.item.status,priority:o.item.priority,parent:o.item.parent}),full:wr(o.item)}})),{tokenBudget:t,profile:r,latencyBudgetMs:25})}function Cr(e){return{...e,included:e.included.map(t=>({id:t.id,projection:t.projection,tokens:t.tokens}))}}function Sr(e,t,n){let r=n===void 0?e.ranked:e.ranked.filter(o=>n.has(o.id));return{model:e.model,available_signals:e.available_signals,items:r.map(o=>({id:o.id,rank:o.rank,baseline_rank:o.baseline_rank,score:o.score,contributions:o.contributions})),candidate_count:e.ranked.length,omitted_count:e.ranked.length-r.length,...t?{feature_store:{source:t.snapshot.source,cache_status:t.cache_status,source_cursor:t.snapshot.source_cursor,generated_at:t.snapshot.generated_at}}:{}}}function aa(e,t){return t>0?Math.round(e/t*100):0}function Ue(e){let t=new Map;for(let n of e){let r=xr(n.parent);if(!r)continue;let o=t.get(r)??[];o.push(n),t.set(r,o)}return t}function it(e,t,n){let r={id:e.id,title:e.title,type:e.type,status:e.status,priority:e.priority,order:e.order??null,deadline:e.deadline??null,assignee:e.assignee??null,tags:Array.isArray(e.tags)?[...e.tags]:[],updated_at:e.updated_at,parent:xr(e.parent)};if(t&&n){let o=ot(e.id,n),i=o.length;if(i>0){let s=o.filter(a=>rt(a.status,t)).length;r.children_total=i,r.children_closed=s,r.completion_pct=aa(s,i)}}return r}function Kp(e){let t=0,n=0,r=0,o=new Set;for(let i of e){if(o.add(i.item_id),i.kind==="deadline"){t+=1;continue}if(i.kind==="reminder"){n+=1;continue}r+=1}return{events:e.length,items:o.size,deadlines:t,reminders:n,scheduled:r}}function nn(...e){return[...new Set(e.flatMap(t=>t??[]))].sort((t,n)=>t.localeCompare(n))}function zp(e,t){return e.filter(n=>!t.terminal_statuses.has(C(n.item_status,t)))}function Hp(e,t,n,r){let o=new Map;for(let c of e)o.set(c.id,c);let i=Ue(e),s=new Set(t.filter(c=>nt.has(c.type)).map(c=>c.id)),a=[];for(let c of s){let d=o.get(c);if(!d)continue;let u=ot(c,i),l=i.get(c)??[],f=0,m=0,y=0,p=0;for(let w of u)rt(w.status,n)?f++:vr(w.status,n)?y++:Fp(w.status,n)?p++:ia(w.status,n)&&m++;let b=l.sort((w,_)=>be(w,_,n)).slice(0,r).map(w=>{let _=ot(w.id,i),k=_.filter(E=>rt(E.status,n)).length;return{id:w.id,title:w.title,type:w.type,status:w.status,children_total:_.length,children_closed:k}});a.push({id:d.id,title:d.title,type:d.type,status:d.status,children_total:u.length,children_closed:f,children_open:m,children_in_progress:y,children_blocked:p,children:b})}return a.sort((c,d)=>{let u=o.get(c.id),l=o.get(d.id);return be(u,l,n)}).slice(0,r)}function ot(e,t){let n=[],r=[e],o=new Set;for(;r.length>0;){let i=r.pop();if(o.has(i))continue;o.add(i);let s=t.get(i)??[];for(let a of s)n.push(a),r.push(a.id)}return n}async function qp(e,t){return(await zo({compact:!0,limit:String(e)},t)).compact_activity??[]}function Wp(e,t,n,r,o){let i=new Map;for(let c of e){if(!c.parent)continue;let d=i.get(c.parent)??[];d.push(c),i.set(c.parent,d)}let s=t.filter(c=>nt.has(c.type)),a=[];for(let c of s){let d=ot(c.id,i),u=d.length;if(u===0)continue;let l=0,f=0,m=0,y=0;for(let p of d)rt(p.status,r)?l++:n.has(p.id.trim().toLowerCase())?y++:vr(p.status,r)?m++:ia(p.status,r)&&f++;a.push({id:c.id,title:c.title,type:c.type,total:u,closed:l,open:f,in_progress:m,blocked:y,completion_pct:aa(l,u)})}return a.sort((c,d)=>c.completion_pct-d.completion_pct).slice(0,o)}function Vp(e,t,n,r){let o=new Map(t.map(i=>[i.id.trim().toLowerCase(),i]));return e.slice(0,r).map(i=>{let s=zt(i,o,n),a=s.find(d=>!d.resolved)?.id??s[0]?.id??null,c=a?o.get(a.trim().toLowerCase()):void 0;return{id:i.id,title:i.title,blocked_by:a,blocked_by_title:c?.title??null,blocked_by_status:c?.status??null,blocked_reason:i.blocked_reason??null,unblock_note:i.unblock_note??null}})}function Yp(e,t){let n=new Map;for(let r of e)for(let o of r.files??[]){let i=n.get(o.path)??new Set;i.add(r.id),n.set(o.path,i)}return[...n.entries()].map(([r,o])=>({path:r,references:o.size,items:[...o].sort()})).sort((r,o)=>o.references-r.references).slice(0,t)}function Xp(e,t,n){let r=new Map;for(let o of e){let i=o.assignee??null,s=r.get(i)??[];s.push(o),r.set(i,s)}return[...r.entries()].map(([o,i])=>({assignee:o,active:i.length,in_progress:i.filter(s=>vr(s.status,t)).length,items:i.map(s=>s.id).sort()})).sort((o,i)=>i.active-o.active).slice(0,n)}function Jp(e,t,n,r){let o=new Date(n).getTime()-t*24*60*60*1e3;return e.filter(i=>new Date(i.updated_at).getTime()<o).map(i=>({id:i.id,title:i.title,status:i.status,updated_at:i.updated_at,stale_days:Math.floor((new Date(n).getTime()-new Date(i.updated_at).getTime())/(1440*60*1e3))})).sort((i,s)=>s.stale_days-i.stale_days).slice(0,r)}function Qp(e,t,n,r){return e.map(o=>({item:o,sortKey:br(o.created_at)})).sort((o,i)=>{let s=x(i.sortKey,o.sortKey);return s!==0?s:o.item.id.localeCompare(i.item.id)}).slice(0,r).map(({item:o})=>({...it(o,t,n),created_at:o.created_at}))}function Zp(e,t,n,r){return e.filter(o=>!xr(o.parent)&&!nt.has(o.type)).sort((o,i)=>be(o,i,t)).slice(0,r).map(o=>it(o,t,n))}function eg(e){let t=0,n=0,r=0,o=0,i=0,s=[];for(let a of e){(a.tests??[]).length>0&&t++;let c=a.test_runs??[];if(c.length>0){n++;let d=!1;for(let u of c)r+=u.passed??0,o+=u.failed??0,i+=u.skipped??0,(u.failed??0)>0&&(d=!0);d&&s.push(a.id)}}return{items_with_tests:t,items_with_recent_runs:n,recent_runs:{passed:r,failed:o,skipped:i},items_failing:s.sort()}}function Zs(e){return`${new Date(e).toISOString().slice(11,16)}Z`}function ca(e){let t=e.order===null?"-":String(e.order),n=e.deadline??"-",r=e.parent?` parent:${e.parent}`:"",o=e.children_total!==void 0&&e.children_closed!==void 0&&e.completion_pct!==void 0?` children:${e.children_closed}/${e.children_total} done:${e.completion_pct}%`:"",i=e.blocked===!0?` blocked:${e.blocker_ids?.join(",")||"lifecycle"}`:"";return`${e.id} p${e.priority} ${e.status} ${e.type} order:${t} deadline:${n}${r}${o}${i} ${e.title}`}function tg(e,t){let n=e;return t.map(r=>{let o=n[r];return Array.isArray(o)?`${r}:${o.join(",")}`:`${r}:${o??"-"}`}).join(" ")}function ng(e){if("reference_only"in e){let n=e.kind==="reminder"?` \u2014 ${e.reminder_text??"reminder"}`:e.kind==="event"?` \u2014 ${e.event_title??"event"}${e.event_recurring?" (recurring)":""}`:"";return`${Zs(e.at)} [${e.kind}] ${e.item_id} (see focus item)${n}`}let t=`${Zs(e.at)} [${e.kind}] ${e.item_id} p${e.item_priority} ${e.item_status} ${e.item_title}`;if(e.kind==="reminder")return`${t} \u2014 ${e.reminder_text}`;if(e.kind==="event"){let n=e.event_recurring?" (recurring)":"",r=e.event_title??e.item_title;return`${t} \u2014 ${r}${n}`}return t}function ea(e,t,n,r,o){if(e.push(`## ${t}`),n.length===0)e.push(r);else for(let i of n)e.push(`- ${o(i)}`);e.push("")}function rg(e,t,n){if(t.blocked_fallback.length!==0){e.push("## Blocked fallback");for(let r of t.blocked_fallback)e.push(`- ${n(r)}`);e.push("")}}function og(e,t){if(e.push("## Agenda"),e.push(`- events: ${t.agenda.summary.events} (deadlines: ${t.agenda.summary.deadlines}, reminders: ${t.agenda.summary.reminders}, scheduled: ${t.agenda.summary.scheduled})`),t.agenda.events.length===0)e.push("No agenda events matched the selected filters.");else for(let n of t.agenda.events)e.push(`- ${ng(n)}`);e.push("")}function ig(e,t){if(!(!t.hierarchy||t.hierarchy.length===0)){e.push("## Hierarchy");for(let n of t.hierarchy){let r=n.children_total>0?Math.round(n.children_closed/n.children_total*100):0;e.push(`- ${n.id} ${n.type} ${n.status} "${n.title}" [${n.children_closed}/${n.children_total} done ${r}%]`);for(let o of n.children){let i=o.children_total>0?Math.round(o.children_closed/o.children_total*100):0;e.push(` - ${o.id} ${o.type} ${o.status} "${o.title}" [${o.children_closed}/${o.children_total} done ${i}%]`)}}e.push("")}}function sg(e,t){if(!(!t.progress||t.progress.length===0)){e.push("## Progress");for(let n of t.progress)e.push(`- ${n.id} "${n.title}" ${n.completion_pct}% (${n.closed}/${n.total} closed, ${n.in_progress} wip, ${n.open} open, ${n.blocked} blocked)`);e.push("")}}function ag(e,t,n,r){if(!(!t.recently_created||t.recently_created.length===0)){e.push("## Recently created");for(let o of t.recently_created)e.push(n?`- ${r(o)}`:`- ${Gp(o.created_at)} ${ca(o)}`);e.push("")}}function cg(e,t,n){if(!(!t.unparented||t.unparented.length===0)){e.push("## Unparented");for(let r of t.unparented)e.push(`- ${n(r)}`);e.push("")}}function dg(e,t){if(!(!t.activity||t.activity.length===0)){e.push("## Recent activity");for(let n of t.activity){let r=n.msg?` ${n.msg}`:"";e.push(`- ${n.ts.slice(0,16)}Z ${n.id} ${n.op} by:${n.author}${r}`)}e.push("")}}function ug(e,t){if(!(!t.blockers||t.blockers.length===0)){e.push("## Blockers");for(let n of t.blockers){let r=n.blocked_by?`blocked_by:${n.blocked_by}(${n.blocked_by_status??"?"})`:"blocked_by:-",o=n.blocked_reason?` reason:"${n.blocked_reason}"`:"",i=n.unblock_note?` unblock:"${n.unblock_note}"`:"";e.push(`- ${n.id} "${n.title}" ${r}${o}${i}`)}e.push("")}}function lg(e,t){if(!(!t.files||t.files.length===0)){e.push("## Hot files");for(let n of t.files)e.push(`- ${n.path} refs:${n.references} items:[${n.items.join(",")}]`);e.push("")}}function fg(e,t){if(!(!t.workload||t.workload.length===0)){e.push("## Workload");for(let n of t.workload){let r=n.assignee??"(unassigned)";e.push(`- ${r} active:${n.active} wip:${n.in_progress} items:[${n.items.join(",")}]`)}e.push("")}}function mg(e,t){if(!(!t.staleness||t.staleness.length===0)){e.push("## Stale items");for(let n of t.staleness)e.push(`- ${n.id} ${n.status} stale:${n.stale_days}d last:${n.updated_at.slice(0,10)} "${n.title}"`);e.push("")}}function pg(e,t){t.tests&&(e.push("## Test health"),e.push(`- items_with_tests: ${t.tests.items_with_tests}`),e.push(`- items_with_recent_runs: ${t.tests.items_with_recent_runs}`),e.push(`- passed: ${t.tests.recent_runs.passed}, failed: ${t.tests.recent_runs.failed}, skipped: ${t.tests.recent_runs.skipped}`),t.tests.items_failing.length>0&&e.push(`- items_failing: [${t.tests.items_failing.join(",")}]`),e.push(""))}function gg(e,t){t.summary.active_items===0&&t.summary.blocked===0&&t.agenda.summary.events===0&&(e.push("## Suggestions"),e.push("No active work items or upcoming events. Consider:"),e.push('- `pm create --type Task --title "..."` to add a new work item'),e.push("- `pm list --status closed --limit 5` to review recent completions"),e.push("- `pm search <keywords>` to find related past work"),e.push("- `pm aggregate` for a full project status overview"))}function lk(e){let t=[],n=e.focus_fields,r=i=>n?tg(i,n):ca(i);if(t.push("# pm context"),t.push(""),t.push(`- now: ${e.now}`),t.push(`- depth: ${e.depth}`),e.filters.parent&&t.push(`- scope: subtree of ${e.filters.parent}`),t.push(`- active_items: ${e.summary.active_items} (in_progress: ${e.summary.in_progress}, open: ${e.summary.open})`),e.summary.total_items!==void 0&&t.push(`- total_items: ${e.summary.total_items} (closed: ${e.summary.closed??0}, canceled: ${e.summary.canceled??0})`),t.push(`- agenda_events: ${e.summary.agenda_events}`),t.push(`- blocked_fallback_used: ${e.summary.blocked_fallback_used}`),e.extension_health){let i=e.extension_health.packages.filter(s=>s.status==="degraded").map(s=>s.name);t.push(`- extensions: ${e.extension_health.ok} ok, ${e.extension_health.degraded} degraded${i.length>0?` (${i.join(", ")})`:""}`)}let o=e.sections_included.filter(i=>i!=="blockers"||(e.blockers?.length??0)>0);if(o.length>0&&t.push(`- sections: ${o.join(", ")}`),t.push(""),ea(t,"High-level focus",e.high_level,"No high-level active items.",r),ea(t,"Low-level focus",e.low_level,"No low-level active items.",r),rg(t,e,r),og(t,e),e.workspace_memory){t.push("## Workspace memory");for(let i of e.workspace_memory.rollups)t.push(`- ${i.kind}:${i.key} \u2014 ${i.label} (${i.item_count} completed, latest ${i.last_closed_at})`);t.push("")}return ig(t,e),sg(t,e),ag(t,e,n,r),cg(t,e,r),dg(t,e),ug(t,e),lg(t,e),fg(t,e),mg(t,e),pg(t,e),gg(t,e),t.join(`
|
|
11
|
-
`)}async function hg(e,t){let n=S(process.cwd(),t.path),r=await T(n),o=r.context??Mr.context,i=z(r.schema),s=Dp(e.depth,o),a=Sp(e.limit??e.maxItems,s);return{settings:r,contextSettings:o,statusRegistry:i,depth:s,limit:a,sectionsIncluded:Rp(e.section,s,o),activityLimit:Ap(e.activityLimit,o),staleThresholdDays:Lp(e.staleThreshold,o),parentScope:Op(e.parent),focusFields:Cp(e.fields),baseListOptions:Mp(e)}}function Tr(e){return e.some(t=>["hierarchy","progress","blockers","staleness","recently_created","unparented"].includes(t))}function yg(e,t){return{...e,...t,noTruncate:!0,limit:void 0,offset:void 0,after:void 0}}async function _g(e,t){let n=Tr(t.sectionsIncluded),r=await Je(void 0,yg(t.baseListOptions,{excludeTerminal:!1}),e),o=r.items,i=o.filter(c=>!N(c.status,t.statusRegistry)),s=n||t.parentScope!==void 0?o:i,a=wg(t.parentScope,o);return a&&(i=i.filter(c=>a.has(c.id.trim().toLowerCase())),s=s.filter(c=>a.has(c.id.trim().toLowerCase()))),{listed:r,listedItemMetadata:i,allItems:s,fullCorpus:o,subtreeIds:a}}function wg(e,t){if(e===void 0)return;let n=Er(t,e);if(!n.found)throw new h(`Context --parent item not found: ${e}`,g.NOT_FOUND);return n.ids}async function bg(e,t,n,r,o,i,s,a,c,d,u,l,f,m,y){let p=[...e].sort((v,ve)=>be(v,ve,o)),b=await Zt({pmRoot:f,author:c,enabled:process.env.PM_CONTEXT_USAGE_DISABLED!=="1"}),w=await tn(p,{pmRoot:f,storeKey:"context",statusRegistry:o,now:a,author:c,usageAffinity:b.affinity,claimFocus:y}),_=await Jt("context",w.candidates),k=_.ranked.map(v=>v.item),E=o.active_statuses,I=k.filter(v=>E.has(C(v.status,o))),P=l?Se(I,d,u,v=>v.id):0,D=l?I.slice(P,P+s):I,U=l&&D.length>0&&P+D.length<I.length,ce=U&&D.length>0?Z(u,D[D.length-1].id,P+D.length-1):void 0,B=k.filter(v=>r.has(v.id.trim().toLowerCase())),M=new Set([...D.map(v=>v.id),...B.slice(0,s).map(v=>v.id)]),q=Ir({..._,ranked:_.ranked.filter(v=>M.has(v.id))},m,new Set(Object.entries(y??{}).filter(([,v])=>v>=1).map(([v])=>v))),X=q.included.map(v=>v.item),J=X.filter(v=>E.has(C(v.status,o))),ke=X.filter(v=>r.has(v.id.trim().toLowerCase())),Q=Ue(t),re=Tr(i)?Q:void 0,oe=new Map(n.map(v=>[v.id.trim().toLowerCase(),v])),sn=v=>{let ve=it(v,o,re);return r.has(v.id.trim().toLowerCase())&&(ve.blocked=!0,ve.blocker_ids=zt(v,oe,o).filter(an=>!an.resolved).map(an=>an.id)),ve},va=J.filter(v=>nt.has(v.type)).slice(0,l?D.length:s).map(sn),Ea=J.filter(v=>!nt.has(v.type)).slice(0,l?D.length:s).map(sn),Lr=I.length===0;return{activeItems:J,blockedItems:ke,highLevel:va,lowLevel:Ea,blockedFallback:Lr?ke.slice(0,s).map(sn):[],blockedFallbackUsed:Lr,ranking:_,packing:q,featureStore:w,pageExtras:{...l?{applied_limit:s}:{},...U?{has_more:!0,truncated:!0}:{},...ce?{next_cursor:ce}:{}}}}function kg(e){return de("context",lt(e,vo))}function vg(e,t){return e.limit!==void 0||e.maxItems!==void 0||e.after!==void 0||t>=ra}async function Eg(e,t,n,r){let o={...t.baseListOptions,view:"agenda",include:"all",limit:t.parentScope===void 0?String(t.limit):void 0},i=await Ts(o,e),s=n===void 0?i.events:i.events.filter(d=>n.has(d.item_id.trim().toLowerCase())),a=zp(s,t.statusRegistry).slice(0,t.limit),c=a.map(d=>r.has(d.item_id)?{at:d.at,date:d.date,kind:d.kind,item_id:d.item_id,reference_only:!0,...d.kind==="reminder"?{reminder_text:d.reminder_text}:{},...d.kind==="event"?{event_title:d.event_title,event_recurring:d.event_recurring}:{}}:d);return{agenda:i,agendaEvents:c,agendaSummary:Kp(a)}}function ta(e,t,n){let r=String(t);return e.filter(o=>C(o.status,n)===r).length}async function xg(e){let{runtime:t,allItems:n,fullCorpus:r,blockedIds:o,focusGroups:i,now:s,global:a}=e,c=Ue(n),d=n.filter(l=>!N(l.status,t.statusRegistry)),u=l=>t.sectionsIncluded.includes(l);return{hierarchy:u("hierarchy")?Hp(n,i.activeItems,t.statusRegistry,t.limit):void 0,activity:u("activity")?await qp(t.activityLimit,a):void 0,progress:u("progress")?Wp(n,i.activeItems,o,t.statusRegistry,t.limit):void 0,blockersSection:u("blockers")?Vp(i.blockedItems,r,t.statusRegistry,t.limit):void 0,recentlyCreated:u("recently_created")?Qp(d,t.statusRegistry,c,t.limit):void 0,unparented:u("unparented")?Zp(d,t.statusRegistry,c,t.limit):void 0,filesSection:u("files")?Yp(i.activeItems,t.limit):void 0,workload:u("workload")?Xp(i.activeItems,t.statusRegistry,t.limit):void 0,staleness:u("staleness")?Jp(d,t.staleThresholdDays,s,t.limit):void 0,tests:u("tests")?eg(i.activeItems):void 0}}function Ig(e,t,n){if(!e)return{};let r=F("canceled",n);return{total_items:t.length,closed:t.filter(o=>rt(o.status,n)).length,canceled:t.filter(o=>C(o.status,n)===r).length}}function Cg(e,t,n){t.hierarchy&&(e.hierarchy=t.hierarchy),t.activity&&(e.activity=t.activity),t.progress&&(e.progress=t.progress),t.blockersSection&&(e.blockers=t.blockersSection),t.recentlyCreated&&(e.recently_created=t.recentlyCreated),t.unparented&&(e.unparented=t.unparented),t.filesSection&&(e.files=t.filesSection),t.workload&&(e.workload=t.workload),t.staleness&&(e.staleness=t.staleness),t.tests&&(e.tests=t.tests),n!==void 0&&n.length>0&&(e.warning_details=n)}function Sg(e,t){t&&(e.focus_fields=t,e.high_level=tt(e.high_level,t),e.low_level=tt(e.low_level,t),e.blocked_fallback=tt(e.blocked_fallback,t),e.recently_created&&(e.recently_created=tt(e.recently_created,t)),e.unparented&&(e.unparented=tt(e.unparented,t)))}function Tg(e,t){let n=[e.high_level,e.low_level,e.blocked_fallback,e.recently_created??[],e.unparented??[]].flat();if(t){for(let i of n)delete i.tags,delete i.tags_inherited;return}let r=new Map(n.map(i=>[i.id,i])),o=new Map(n.map(i=>[i.id,i.tags?[...i.tags].sort().join("\0"):void 0]));for(let i of n){if(!i.parent||!i.tags)continue;let s=r.get(i.parent);s&&o.get(i.id)===o.get(s.id)&&(delete i.tags,i.tags_inherited=s.id)}}function Dg(e,t,n){t.length>0||n.length>0||e.agenda.events.length>0||(e.suggestions=['pm create --type Task --title "..." to add a new work item',"pm list --status closed --limit 5 to review recent completions","pm search <keywords> to find related past work","pm aggregate for a full project status overview"])}async function Rg(e,t,n,r){try{let o=new Set(t.packing.included.map(i=>i.id));await Qt({pmRoot:n,author:r,surface:"context",profile:t.packing.profile,rows:t.ranking.ranked.map(i=>({id:i.id,rank:i.rank,included:o.has(i.id)})),enabled:process.env.PM_CONTEXT_USAGE_DISABLED!=="1"})}catch{e.warnings=nn(e.warnings,["context_usage_feedback_write_failed"])}}async function Ag(e,t,n){if(e)return{};let o=(await Br({pmRoot:t,settings:n,cwd:process.cwd(),noExtensions:!1})).discovered.map(s=>({name:s.name??s.directory,status:s.status==="ok"?"ok":"degraded"})).sort((s,a)=>s.name.localeCompare(a.name)),i=o.filter(s=>s.status==="degraded").length;return o.length===0?{}:{extension_health:{total:o.length,ok:o.length-i,degraded:i,packages:o.slice(0,20),...o.length>20?{truncated:!0}:{}}}}async function Lg(e,t){let n=Qr(),r=await Wr(e),o=n.instance||Vr(t);return Xs(r.semantic_attribution?.[o])}async function fk(e,t){let n=S(process.cwd(),t.path),r=await hg(e,t),o=await _g(t,r),i=Tp(r.limit,o.fullCorpus.length),s={...r,limit:i,tokenBudget:kr(e.tokenBudget,Math.max(256,i*160))},a=pe(void 0,s.settings.author_default),c=await Lg(n,a),d=Ag(e.noExtensionHealth===!0,n,s.settings),u=Ve(o.fullCorpus,s.statusRegistry),l=await bg(o.listedItemMetadata,o.allItems,o.fullCorpus,u,s.statusRegistry,s.sectionsIncluded,s.limit,G(),a,e.after,kg(e),vg(e,o.fullCorpus.length),n,s.tokenBudget,c),f=await Eg(t,s,o.subtreeIds,new Set([...l.highLevel,...l.lowLevel,...l.blockedFallback].map(E=>E.id))),m=await qs(o.fullCorpus,{pmRoot:n,statusRegistry:s.statusRegistry,now:f.agenda.now}),y=nn(o.listed.warnings,f.agenda.warnings,l.ranking.warnings,[...l.featureStore.warnings],m.warnings),p=ta(l.activeItems,F("in_progress",s.statusRegistry),s.statusRegistry),b=ta(l.activeItems,F("open",s.statusRegistry),s.statusRegistry),w=await xg({runtime:s,allItems:o.allItems,fullCorpus:o.fullCorpus,blockedIds:u,focusGroups:l,now:f.agenda.now,global:t}),_=Ig(Tr(s.sectionsIncluded),o.allItems,s.statusRegistry),k={output_default:"toon",now:f.agenda.now,depth:s.depth,sections_included:s.sectionsIncluded,window:{anchor:f.agenda.anchor,start:f.agenda.range.start,end:f.agenda.range.end,past:f.agenda.range.past,from:f.agenda.range.from,to:f.agenda.range.to},filters:{type:e.type??null,tag:e.tag??null,priority:e.priority??null,assignee:e.assignee??null,assignee_filter:e.assigneeFilter??null,sprint:e.sprint??null,release:e.release??null,limit:e.limit??e.maxItems??null,parent:s.parentScope??null,token_budget:s.tokenBudget,runtime_filters:o.listed.filters.runtime_filters??f.agenda.filters.runtime_filters??{}},summary:{active_items:l.activeItems.length,in_progress:p,open:b,blocked:l.blockedItems.length,blocked_fallback_used:l.blockedFallbackUsed,high_level:l.highLevel.length,low_level:l.lowLevel.length,agenda_events:f.agendaSummary.events,..._},high_level:l.highLevel,low_level:l.lowLevel,blocked_fallback:l.blockedFallback,agenda:{summary:f.agendaSummary,events:f.agendaEvents},...l.pageExtras};return k.workspace_memory=Ws(m,Math.min(800,Math.floor(s.tokenBudget*.2))),Object.assign(k,await d),Cg(k,w,l.featureStore.warning_details),Tg(k,e.noTags===!0),e.explainRanking===!0&&(k.ranking=Sr(l.ranking,l.featureStore,new Set([...l.highLevel,...l.lowLevel,...l.blockedFallback].map(E=>E.id))),k.packing=Cr(l.packing)),Sg(k,s.focusFields),y.length>0&&(k.warnings=y),Dg(k,l.activeItems,l.blockedItems),await Rg(k,l,n,a),k}(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]="3431d4d4-e053-5416-b3d1-6dbfbed0142d")}catch{}})();var Fg=["markdown","toon","json"],Ng=5,Mg=1440*60*1e3;function Og(e){if(!e)return;let t=e.trim().toLowerCase();if(!Fg.includes(t))throw new h("Next format must be one of markdown|toon|json",g.USAGE);return t}function Ek(e,t){let n=Og(e.format);if(t.json&&n&&n!=="json")throw new h("Cannot combine --json with --format markdown|toon",g.USAGE);return t.json?"json":n??"toon"}function da(e,t,n){let r=V(e,t);return r===void 0||r<=0?n:r}function Dr(e,t,n,r){return{...it(e.item,t,n),open_blocker_count:e.open_blockers.length,blockers:e.open_blockers.map(o=>({id:o.id,title:o.title,status:o.status})),unblocks:e.unblocks,rank:r}}function $g(e,t,n,r){let o=e.item,i=[],s=F("in_progress",t);return i.push(C(o.status,t)===s?"in progress \u2014 resume to finish":"open and ready to start"),r&&i.push("completed container \u2014 governance closeout"),i.push(`priority p${o.priority}${o.priority===0?" (highest)":""}`),typeof o.deadline=="string"&&o.deadline.trim().length>0&&i.push(jg(o.deadline,n)),i.push(ye(o).length>0?"all blockers resolved":"no blockers"),typeof o.parent=="string"&&o.parent.trim().length>0&&i.push(`advances ${o.parent.trim()}`),e.unblocks.length>0&&i.push(`unblocks ${e.unblocks.length} item(s): ${e.unblocks.join(", ")}`),i}function la(e,t,n){let r=pe(n,t),o=[],i=[];for(let s of e){let a=typeof s.item.assignee=="string"?s.item.assignee.trim():"";a.length>0&&a!==r?i.push({id:s.item.id,assignee:a}):o.push(s)}return{available:o,held:i}}var xk={partitionCallerOwnedReady:la,resolveNextCallerAuthor:(e,t)=>fa(e,t)};function Pg(e,t){let n=e.filter(r=>r.item.type.trim().toLowerCase()==="decision");return{agent:t?e:e.filter(r=>r.item.type.trim().toLowerCase()!=="decision"),decisions:t?[]:n}}function jg(e,t){let n=Date.parse(e);if(!Number.isFinite(n))return`deadline ${e.trim()}`;let r=new Date(n).toISOString().slice(0,10),o=new Date(Date.parse(t)).toISOString().slice(0,10),i=Math.round((Date.parse(r)-Date.parse(o))/Mg);return i<0?`deadline ${r} (overdue ${-i}d)`:i===0?`deadline ${r} (due today)`:`deadline ${r} (in ${i}d)`}function Ug(e,t){let n=F("in_progress",t);return e.filter(r=>C(r.status,t)===n).length}function Rr(e,t){return(t.get(e.id.trim().toLowerCase())??[]).length>0}function Bg(e,t){return{type:e.type,tag:e.tag,priority:typeof e.priority=="number"?String(e.priority):e.priority,assignee:e.assignee,assigneeFilter:e.assigneeFilter,sprint:e.sprint,release:e.release,noTruncate:!0,...t}}function ua(e,t,n){return[...e].sort((r,o)=>{let i=Rr(r.item,t),s=Rr(o.item,t);return i!==s?Number(i)-Number(s):be(r.item,o.item,n)})}function Gg(e){return e.projectedReady.length===0?null:{...e.readyRows[0],reasons:$g(e.projectedReady[0],e.statusRegistry,e.now,e.completedContainer)}}function Kg(e,t){if(e===null){if(t.length>0){let n=t.find(r=>r.blockers.length>0);return[n?`${t.length} item(s) are blocked; unblock the top one by closing ${n.blockers.map(r=>r.id).join(", ")}`:`${t.length} item(s) are blocked; add blocker context or move the top item back to an active status`,"pm next --ready-only after a blocker closes to re-check ready work",'pm create --type Task --title "..." to add new ready work']}return['pm create --type Task --title "..." to add a new work item',"pm list --status in_progress to review work already underway","pm context --depth deep for the full project snapshot"]}}function zg(e,t,n){let r={};return e>n&&(r.decision_needed_total=e),t>n&&(r.held_by_others_total=t),Object.keys(r).length>0?r:void 0}async function Hg(e){try{let t=new Set(e.packing.included.map(n=>n.id));await Qt({pmRoot:e.pmRoot,author:e.author,surface:"next",profile:e.packing.profile,rows:e.ranking.ranked.map(n=>({id:n.id,rank:n.rank,included:t.has(n.id)})),enabled:process.env.PM_CONTEXT_USAGE_DISABLED!=="1"})}catch{e.result.warnings=nn(e.result.warnings,["context_usage_feedback_write_failed"])}}async function qg(e){let t=[...new Set([...e.candidatesWarnings??[],...e.corpusWarnings??[],...e.readyRanking.warnings??[],...e.featureStore.warnings])].sort((n,r)=>n.localeCompare(r));return t.length>0&&(e.result.warnings=t),e.explainRanking&&(e.result.ranking=Sr(e.readyRanking,e.featureStore),e.result.packing=Cr(e.packing)),e.result.suggestions=Kg(e.recommended,e.blockedRows),await Hg({result:e.result,pmRoot:e.pmRoot,author:e.author,packing:e.packing,ranking:e.readyRanking}),e.result}function Wg(e,t,n){if(!n)return e;let r=Er(t,n);if(!r.found)throw new h(`Next --parent item not found: ${n}`,g.NOT_FOUND);return e.filter(o=>r.ids.has(o.id.trim().toLowerCase()))}async function Vg(e,t,n,r,o,i,s){let a=e.filter(p=>!Rr(p.item,t)),c=a.length>0?a:e,d=await Zt({pmRoot:i,author:o,enabled:process.env.PM_CONTEXT_USAGE_DISABLED!=="1"}),u=await tn(c.map(p=>p.item),{pmRoot:i,storeKey:"next",statusRegistry:n,now:r,author:o,usageAffinity:d.affinity}),l=await Jt("next",u.candidates),f=Ir(l,s,new Set,"next"),m=new Map(c.map(p=>[p.item.id,p]));return{projectedReady:l.ranked.map(p=>m.get(p.id)).filter(p=>p!==void 0),ranking:l,completedContainer:a.length===0,packing:f,featureStore:u}}function fa(e,t){let n=e.assignee?.trim();return pe(e.callerAuthor??(n&&n.length>0?n:void 0),t)}async function Ik(e,t){let n=S(process.cwd(),t.path),r=await T(n),o=fa(e,r.author_default),i=z(r.schema),s=G(),a=da(e.limit,"--limit",Ng),c=kr(e.tokenBudget,Math.max(192,a*128)),d=da(e.blockedLimit,"--blocked-limit",a),u=e.readyOnly===!0,l=typeof e.parent=="string"?e.parent.trim():"",f=await Je(void 0,Bg(e,{excludeTerminal:!0}),t),m=await Je(void 0,{excludeTerminal:!1,noTruncate:!0},t),y=Wg(f.items,m.items,l),p=m.items,b=Jn(y,p,i),w=Ue(p),_=Pg(b.ready,e.includeDecisions===!0),k=la(_.agent,r.author_default,o),E=ua(k.available,w,i),I=[...b.blocked].sort((re,oe)=>be(re.item,oe.item,i)),{projectedReady:P,ranking:D,completedContainer:U,packing:ce,featureStore:B}=await Vg(E,w,i,s,o,n,c),M=P.map((re,oe)=>Dr(re,i,w,oe+1)),q=I.map((re,oe)=>Dr(re,i,w,oe+1)),X=ua(_.decisions,w,i).map((re,oe)=>Dr(re,i,w,oe+1)),J=Gg({projectedReady:P,readyRows:M,statusRegistry:i,now:s,completedContainer:U}),ke=zg(X.length,k.held.length,a),Q={output_default:"toon",now:s,recommended:J,ready:M.slice(1,a+1),decision_needed:X.slice(0,a),blocked:u?[]:q.slice(0,d),held_by_others:k.held.slice(0,a),summary:{recommended:J!==null,ready:M.length,blocked:q.length,in_progress:Ug(M,i),candidates:b.active_count,containers:b.container_count,decision_needed:X.length,held_by_others:k.held.length},filters:{type:e.type??null,tag:e.tag??null,priority:e.priority??null,assignee:e.assignee??null,assignee_filter:e.assigneeFilter??null,sprint:e.sprint??null,release:e.release??null,parent:l.length>0?l:null,limit:a,blocked_limit:d,ready_only:u,include_decisions:e.includeDecisions===!0,token_budget:c},truncation:ke};return qg({result:Q,recommended:J,blockedRows:q,candidatesWarnings:f.warnings,corpusWarnings:m.warnings,readyRanking:D,explainRanking:e.explainRanking===!0,pmRoot:n,author:o,packing:ce,featureStore:B})}function Ck(e){let t=["# pm next","",...Yg(e)];if(t.push(...rn("Recommended",Xg(e.recommended),"No ready work.")),t.push(...rn("Decision needed",(e.decision_needed??[]).map(n=>`- ${on(n)}`),"No human-gated decisions.")),t.push(...rn("Ready",e.ready.map(n=>`- ${on(n)}`),"No ready items.")),e.filters.ready_only||t.push(...rn("Blocked",e.blocked.map(n=>`- ${Jg(n)}`),"No blocked items.")),e.suggestions&&e.suggestions.length>0){t.push("## Suggestions");for(let n of e.suggestions)t.push(`- ${n}`)}return t.join(`
|
|
12
|
-
`).trimEnd()}function Yg(e){let t=[`- now: ${e.now}`,`- ready: ${e.summary.ready} (in_progress: ${e.summary.in_progress}), blocked: ${e.summary.blocked}, candidates: ${e.summary.candidates}`];return e.filters.parent&&t.push(`- scope: subtree of ${e.filters.parent}`),t.push(""),t}function Xg(e){return e?[`- ${on(e)}`,` why: ${e.reasons.join("; ")}`]:[]}function rn(e,t,n){return[`## ${e}`,...t.length===0?[n]:t,""]}function Jg(e){let t=e.blockers.map(n=>`${n.id}(${n.status??"?"})`).join(", ");return`${on(e)} blocked_by:${t}`}function on(e){let t=e.deadline??"-",n=e.parent?` parent:${e.parent}`:"",r=e.unblocks.length>0?` unblocks:${e.unblocks.length}`:"";return`${Number.isInteger(e.rank)?`#${e.rank} `:""}${e.id} p${e.priority} ${e.status} ${e.type} deadline:${t}${n}${r} ${e.title}`}import{createHash as Qg}from"node:crypto";import{setTimeout as Zg}from"node:timers/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e8cd5790-eacf-5ef7-bc0a-11ea3fe17d2d")}catch{}})();var pa=1,ga=/^[A-Za-z0-9_-]+$/,eh=100,ma=1e3,th=250,Pk=Object.freeze({batch_to_row_ratio:.6,fixture_events:200});function Y(e){if(e===void 0)return;let t=typeof e=="string"?[e]:e,n=[...new Set(t.flatMap(r=>r.split(",")).map(r=>r.trim()).filter(Boolean))].sort((r,o)=>r.localeCompare(o));return n.length===0?void 0:n}function ha(e){return Qg("sha256").update(xe({type:Y(e.type),author:Y(e.author),item:Y(e.item),harness:Y(e.harness),agent_instance:Y(e.agentInstance),provenance:Y(e.provenanceFilter)})).digest("hex").slice(0,24)}function Ar(e,t){let n={version:pa,fingerprint:t,ts:e.entry.ts,stream_id:e.stream_id,stream_offset:e.stream_offset};return Buffer.from(JSON.stringify(n),"utf8").toString("base64url")}function ya(e,t){if(typeof e!="object"||e===null)return!1;let n=e;return[n.version===pa,n.fingerprint===t,typeof n.ts=="string",typeof n.stream_id=="string",typeof n.stream_offset=="number",Number.isSafeInteger(n.stream_offset),Number(n.stream_offset)>=0].every(Boolean)}function _a(e,t){let n=e.trim();if(n.length===0||n.length>4096||!ga.test(n))throw new h("Invalid mutation event cursor.",g.USAGE,{code:"invalid_event_cursor"});let r;try{r=JSON.parse(Buffer.from(n,"base64url").toString("utf8"))}catch{throw new h("Invalid mutation event cursor.",g.USAGE,{code:"invalid_event_cursor"})}if(!ya(r,t))throw new h("Mutation event cursor does not match this query.",g.USAGE,{code:"event_cursor_query_mismatch"});return r}function wa(e){let t=e??eh;if(!Number.isSafeInteger(t)||t<0||t>ma)throw new h(`Mutation event limit must be an integer from 0 to ${ma}.`,g.USAGE,{code:"invalid_event_limit"});return t}function ba(e){return e instanceof Error&&e.name==="AbortError"}function ka(e,t){let n=e?.trim();if(!n)return{};if(ga.test(n))return{cursor:_a(n,t)};let r=Date.parse(n);if(!Number.isFinite(r))throw new h("Mutation event --since must be an event cursor or ISO timestamp.",g.USAGE,{code:"invalid_event_since"});return{sinceTimestamp:new Date(r).toISOString()}}async function nh(e,t){let n=await fn(e,t);if(n===null){if(!await Zr(e))return{...await eo(e,t),source:"authoritative_history"};n=await fn(e,t)}if(n===null)throw new h("Mutation event index could not be opened after rebuild.",g.GENERIC_FAILURE,{code:"event_index_unavailable"});return{...n,source:"derived_index"}}function rh(e){let t=e??"batch";if(t!=="batch"&&t!=="row")throw new h("Mutation event cursor mode must be batch or row.",g.USAGE,{code:"invalid_event_cursor_mode"});return t}async function oh(e={}){let t=S(e.cwd??process.cwd(),e.pmRoot);if(!await A($(t)))throw new h(`Tracker is not initialized at ${t}. Run pm init first.`,g.NOT_FOUND);let n=wa(e.limit),r=rh(e.cursorMode);if(e.full===!0&&e.provenance===!0)throw new h("Mutation event projections are mutually exclusive. Use --provenance or --full.",g.USAGE);let o=await T(t),i=o.agent_identity.identity_vocabulary,s=Et(o.agent_identity.harness_signals),a=En({provenance:e.provenanceFilter},s),c=Y(e.harness),d=ha(e),{cursor:u,sinceTimestamp:l}=ka(e.since,d),f={...u?{after_ts:u.ts,after_stream_id:u.stream_id,after_stream_offset:u.stream_offset}:l?{since_ts:l}:{},ops:Y(e.type),authors:Y(e.author),harnesses:c,harness_alias_authors:c?Object.entries(i.aliases).filter(([,p])=>c.includes(p)).map(([p])=>p):void 0,agent_instances:Y(e.agentInstance),provenance:[...a].map(([p,b])=>({dimension:p,values:[...b]})),stream_ids:Y(e.item),limit:n},m=await nh(t,f),y=m.events.map(p=>({...r==="row"?{cursor:Ar(p,d)}:{},item_id:p.stream_id,version:p.stream_offset+1,ts:p.entry.ts,author:p.entry.author,type:p.entry.op,...p.entry.message===void 0?{}:{message:p.entry.message},patch_count:p.entry.patch.length,...e.full===!0?{entry:p.entry}:{},...e.provenance===!0?{provenance:xt(p.entry,i,{itemId:p.stream_id,version:p.stream_offset+1})}:{}}));return{events:y,count:y.length,has_more:m.has_more,cursor_mode:r,...m.events.length===0?{}:{next_cursor:Ar(m.events[m.events.length-1],d)},source:m.source,...e.provenanceSummary===!0?{provenance_summary:It(m.events.map(p=>p.entry),i,s)}:{}}}async function*ih(e={}){let t=e.intervalMs??th;if(!Number.isSafeInteger(t)||t<10)throw new h("Mutation event follow interval must be an integer of at least 10ms.",g.USAGE,{code:"invalid_event_follow_interval"});let n=e.since;for(;e.signal?.aborted!==!0;){let r=await oh({...e,cursorMode:e.cursorMode??"batch",since:n});if(yield r.next_cursor===void 0&&n!==void 0?{...r,next_cursor:n}:r,r.events.length>0){n=r.next_cursor;continue}try{await Zg(t,void 0,{signal:e.signal})}catch(i){if(ba(i))return;throw i}}}async function*jk(e={}){for await(let t of ih({...e,cursorMode:"row"}))for(let n of t.events)yield n}var Uk={decodeMutationEventCursor:_a,encodeMutationEventCursor:Ar,eventQueryFingerprint:ha,isAbortError:ba,isMutationEventCursorEnvelope:ya,parseMutationEventLimit:wa,resolveMutationEventStart:ka};(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]="412fc2d2-daee-5d87-82ab-5411a1503087")}catch{}})();function Gk(e,t){let n=t??{};return e.filter(r=>n[r.id]!==r.updated_at).map(r=>r.id).sort((r,o)=>r.localeCompare(o))}export{Eo as a,xo as b,Ge as c,Io as d,Co as e,_h as f,So as g,kn as h,Uh as i,Bh as j,ty as k,ny as l,bt as m,wt as n,Po as o,sy as p,V as q,kt as r,jo as s,vt as t,Et as u,En as v,xt as w,hy as x,xn as y,It as z,Cy as A,zo as B,Ho as C,_c as D,Le as E,Dy as F,Ry as G,Cn as H,ge as I,bc as J,vc as K,Sn as L,Ec as M,Me as N,Ct as O,Tn as P,St as Q,jy as R,Vo as S,a_ as T,ti as U,ni as V,ri as W,oi as X,ii as Y,Nt as Z,ai as _,$e as $,ci as aa,fi as ba,Pt as ca,mi as da,nu as ea,_i as fa,Ut as ga,Un as ha,Bt as ia,wi as ja,ki as ka,Bn as la,We as ma,Ei as na,Kn as oa,zn as pa,Hn as qa,xi as ra,qn as sa,Ci as ta,Si as ua,Di as va,Su as wa,nw as xa,Gk as ya,zu as za,ye as Aa,Kt as Ba,Pi as Ca,zt as Da,Ve as Ea,Jn as Fa,Qn as Ga,Ye as Ha,Ui as Ia,Bi as Ja,Wi as Ka,or as La,Yi as Ma,bw as Na,kw as Oa,Qi as Pa,Zi as Qa,Ew as Ra,Zn as Sa,er as Ta,Wu as Ua,tr as Va,pw as Wa,gw as Xa,hw as Ya,yw as Za,yl as _a,as as $a,rs as ab,os as bb,vl as cb,El as db,xl as eb,Je as fb,nb as gb,rb as hb,ob as ib,Ts as jb,pr as kb,Xt as lb,mm as mb,As as nb,_m as ob,Jt as pb,wm as qb,bm as rb,xm as sb,Im as tb,db as ub,Cm as vb,Ls as wb,ne as xb,Qt as yb,hb as zb,yb as Ab,Zt as Bb,gr as Cb,hr as Db,qm as Eb,Qm as Fb,Zm as Gb,yr as Hb,_r as Ib,tn as Jb,Ks as Kb,Cb as Lb,sp as Mb,up as Nb,qs as Ob,yp as Pb,Ws as Qb,_p as Rb,Ob as Sb,Ys as Tb,Gb as Ub,Kb as Vb,zb as Wb,Hb as Xb,Xs as Yb,wp as Zb,Cp as _b,tt as $b,uk as ac,kr as bc,Dp as cc,Rp as dc,Er as ec,be as fc,Ir as gc,Cr as hc,Sr as ic,Ue as jc,it as kc,nn as lc,lk as mc,Tg as nc,fk as oc,Fg as pc,Ek as qc,xk as rc,Pg as sc,Ik as tc,Ck as uc,Pk as vc,oh as wc,ih as xc,jk as yc,Uk as zc};
|
|
13
|
-
//# sourceMappingURL=chunk-2RDVGYWE.js.map
|