@unbrained/pm-cli 2026.10.19 → 2026.10.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +33 -0
- package/dist/cli/error-guidance.d.ts +7 -0
- package/dist/cli/error-guidance.js +2 -2
- package/dist/cli/register-structured-mutation.js +1 -1
- package/dist/cli-bundle/bundle-manifest.json +1 -1
- package/dist/cli-bundle/chunks/{chunk-QBNEZII5.js → chunk-2GGGOD7P.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-4CXQSRSP.js → chunk-7NHA5K77.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NX7Q4LGN.js → chunk-7ZOIZ2AZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6DS5CAN2.js → chunk-GHJOMRSF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-O2ZRRLAP.js → chunk-KU4Q3MSI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-DMFM5R4G.js → chunk-LS55VKRK.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QG4LMU7A.js → chunk-PNPE2OVJ.js} +43 -43
- package/dist/cli-bundle/chunks/chunk-PTL3TBT6.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-LBEMB3BW.js → chunk-QETMESEB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4MJ6WBMA.js → chunk-QMZ73FCW.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-QQYCB2LO.js +2 -0
- package/dist/cli-bundle/chunks/chunk-TZU6U5ZE.js +3 -0
- package/dist/cli-bundle/chunks/{chunk-H3XYP24A.js → chunk-VLJLWZBO.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-XAWE4EAK.js +2 -0
- package/dist/cli-bundle/chunks/chunk-YECCKB4E.js +3 -0
- package/dist/cli-bundle/chunks/{chunk-5GZSX5HU.js → chunk-YT2Z3JPC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-4XFVAXA4.js → chunk-YTHI5DTH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-D3EDNAN7.js → chunk-YW6SIKYP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XH7C3A5N.js → chunk-ZA3XXHEE.js} +6 -6
- package/dist/cli-bundle/chunks/context-budget-recovery-L2WP5S26.js +2 -0
- package/dist/cli-bundle/{focused-chunks/indexed-receipt-blobs-QW2VWWJE.js → chunks/indexed-receipt-blobs-U7VGKIYC.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-WQUVDJIH.js → register-list-query-NNDV6F6I.js} +3 -3
- package/dist/cli-bundle/chunks/{register-mutation-IWIBQIO3.js → register-mutation-3GCBSNQS.js} +4 -4
- package/dist/cli-bundle/chunks/register-operations-YKDGNKUL.js +2 -0
- package/dist/cli-bundle/chunks/register-setup-AOUZQQWB.js +2 -0
- package/dist/cli-bundle/chunks/{settlement-hook-UNFMCKKQ.js → settlement-hook-CLRGA6O7.js} +2 -2
- package/dist/cli-bundle/chunks/stage-6QXYRMSU.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-WZTEFFQI.js → chunk-37SU7BZI.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-5YTOYBTZ.js → chunk-6IU7BESB.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-AS3MOBO3.js +25 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PXDR77TO.js → chunk-AW35RDKA.js} +22 -22
- package/dist/cli-bundle/focused-chunks/{chunk-RLRMNFLF.js → chunk-E4II2D2B.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-FEN7WOOP.js → chunk-F7FD25TG.js} +12 -12
- package/dist/cli-bundle/focused-chunks/{chunk-JDBO7SMR.js → chunk-GYHZ7W6O.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-EOQ6W25I.js → chunk-H5Q2HUU6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-3TEIACFU.js → chunk-HUZAXSIJ.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-JBJJW2WL.js → chunk-J6EYUGAR.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-JEXZEIAX.js +91 -0
- package/dist/cli-bundle/focused-chunks/{chunk-ENZMATOY.js → chunk-KDGUIIRU.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-H6BVQ63U.js → chunk-KKRFSI2N.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-GWTV45SB.js → chunk-LJPUJ2KK.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-MQ42BFGX.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-HYMYAGSY.js → chunk-NI6NS44Q.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-L4PL3GZR.js → chunk-VAYS754X.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-SKYLOPU2.js → chunk-VLSER3XW.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-JCLC6HKT.js → chunk-VS6VTWTZ.js} +3 -3
- package/dist/cli-bundle/focused-chunks/{chunk-OV2WVLUR.js → chunk-ZGEK57KD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/context-budget-recovery-5MKOCGY5.js +2 -0
- package/dist/cli-bundle/{chunks/indexed-receipt-blobs-BVSHK4WQ.js → focused-chunks/indexed-receipt-blobs-H2G6CCGO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{settlement-hook-X4FNHTOD.js → settlement-hook-5SNBBT7C.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{stage-MZSVQYO4.js → stage-EMTISXR7.js} +2 -2
- package/dist/cli-bundle/main.js +21 -21
- 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 +21 -21
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +55 -55
- 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 +8 -8
- package/dist/core/fs/fs-utils.d.ts +2 -2
- package/dist/core/fs/fs-utils.js +1 -1
- package/dist/core/history/event-index.js +2 -2
- package/dist/core/output/output.d.ts +7 -2
- package/dist/core/output/output.js +5 -5
- package/dist/core/shared/errors.d.ts +48 -0
- package/dist/core/shared/errors.js +1 -1
- package/dist/core/store/settings.js +2 -2
- package/dist/mcp/server.js +1 -1
- package/dist/sdk/core.d.ts +1 -1
- package/dist/sdk/core.js +1 -1
- package/dist/sdk/dependencies/context-budget-recovery.d.ts +21 -0
- package/dist/sdk/dependencies/context-budget-recovery.js +2 -0
- package/dist/sdk/dependencies.js +1 -1
- package/dist/sdk/errors.d.ts +4 -1
- package/dist/sdk/errors.js +1 -1
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/item-transaction.d.ts +13 -0
- package/dist/sdk/item-transaction.js +1 -1
- package/dist/sdk/lifecycle/structured-mutation-plan.d.ts +14 -1
- package/dist/sdk/lifecycle/structured-mutation-plan.js +1 -1
- package/dist/sdk/output/list-envelope.d.ts +7 -0
- package/dist/sdk/output/list-envelope.js +2 -0
- package/dist/sdk/output.d.ts +1 -0
- package/dist/sdk/output.js +2 -2
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/relationship-context.d.ts +2 -0
- package/dist/sdk/relationship-context.js +1 -1
- package/dist/sdk/structured-mutations.d.ts +2 -0
- package/dist/sdk/structured-mutations.js +1 -1
- package/docs/COMMANDS.md +14 -0
- package/docs/PR_REVIEW_LOOP.md +32 -12
- package/docs/SCRIPTING.md +10 -0
- package/docs/SDK.md +77 -0
- package/docs/TESTING.md +25 -1
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/package.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +1 -1
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +1 -1
- package/dist/cli-bundle/chunks/chunk-4ICKT4GH.js +0 -3
- package/dist/cli-bundle/chunks/chunk-OEJ3G7XT.js +0 -20
- package/dist/cli-bundle/chunks/chunk-QKAAZWGC.js +0 -3
- package/dist/cli-bundle/chunks/chunk-TK3G3GAP.js +0 -2
- package/dist/cli-bundle/chunks/register-operations-SUWOZNDU.js +0 -2
- package/dist/cli-bundle/chunks/register-setup-QGM5YJW7.js +0 -2
- package/dist/cli-bundle/chunks/stage-7DELI4Z5.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-2IEWB6MB.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-BJMPRB7A.js +0 -91
- package/dist/cli-bundle/focused-chunks/chunk-KLJN44VY.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-Y54ONBEX.js +0 -25
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import{$ as En,C as wn,Fa as ft,Ha as Oe,P as lt,Pa as kn,Q as bn,V as ae,W as B,Wa as Cn,_ as De,_a as Tn,aa as ce,bb as xn,ca as vn,cb as Ne,db as Rn,ea as In,ua as ut,va as mt,xa as de}from"./chunk-AW35RDKA.js";import{b as ke}from"./chunk-LJPUJ2KK.js";import{j as rn}from"./chunk-E4II2D2B.js";import{h as _n}from"./chunk-YLVHHWHN.js";import{b as P,c as S}from"./chunk-AK2CI2GI.js";import{$d as hn,Aa as nt,Ba as ot,Ca as A,Dc as j,Fa as Zt,Gd as Se,Na as en,Oc as se,R as M,Ra as tn,Sa as nn,Ub as on,Uc as an,W as Kt,Zc as cn,a as Ie,ae as yn,cd as dn,gd as ln,ic as F,jc as sn,ka as Gt,kc as it,ke as gn,lc as xe,ma as Yt,mc as G,na as qt,nc as rt,nd as un,oc as Re,od as mn,pc as st,qa as Ce,sa as Vt,sc as at,sd as fn,va as Te,vd as pn,wa as Jt,wd as dt,xa as Qt,xc as ct}from"./chunk-AS3MOBO3.js";import{A as Xt,B as ie,D as re,H as $,s as X,x as zt,y as _,z as g}from"./chunk-HUZAXSIJ.js";import Do from"node:crypto";import Le 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]="664124e5-715d-5f86-ae69-89f203db76c3")}catch{}})();function Dn(e){let t=[],n=!1;for(let o of(e??"").toLowerCase()){let i=o.charCodeAt(0),r=i>=48&&i<=57,s=i>=97&&i<=122;if(!r&&!s){n=t.length>0;continue}n&&(t.push("-"),n=!1),t.push(o)}return t.length===0?"pm-":`${t.join("")}-`}function le(e){let t=e.trim().toLowerCase();return t.startsWith("#")&&(t=t.slice(1)),t}function Y(e,t){let n=Dn(t),o=le(e);return o.startsWith(n)?o:`${n}${o}`}function Oo(e){let t=pn(e);if(t!==void 0)return t;let n="";for(let o=0;o<e;o+=1)n+=Do.randomInt(0,36).toString(36);return n}async function No(e,t,n){let o=[...new Set(Object.values(n))].flatMap(i=>[Le.join(e,i,`${t}.md`),Le.join(e,i,`${t}.toon`)]);return o.push(Le.join(e,"history",`${t}.jsonl`)),(await Promise.all(o.map(i=>ie(i)))).some(Boolean)}var Sn=4,On=12;function Lo(e){return typeof e!="number"||!Number.isFinite(e)?Sn:Math.min(On,Math.max(Sn,Math.trunc(e)))}async function Cs(e,t,n={}){let o=Lo(n.tokenLength),i=Math.min(o+6,On),r=0;for(;o<=i;){for(let s=0;s<32;s+=1){let a=`${Dn(t)}${Oo(o)}`;if(!await(n.probeExisting===!1?ie(Le.join(e,"history",`${a}.jsonl`)):No(e,a,n.typeToFolder??X)))return a;r+=1}o+=1}throw new Error(`Unable to generate unique id after ${r} attempts`)}import Nn from"node:fs/promises";import ue from"node:path";import{isUtf8 as Mo}from"node:buffer";(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]="7db1d069-0038-57f8-8c3e-0b0ba66579ca")}catch{}})();var Ao=1048576,Fo=4194304;async function Ln(e,t){let n=ue.dirname(e);for(;n!==ue.parse(e).root;){let i=await Nn.stat(n).catch(r=>{if(re(r))return null;throw r});if(i!==null){if(!i.isDirectory())throw new g("Workflow policy storage ancestor must be a directory.",_.CONFLICT,{code:"workflow_policy_input_unreadable",nextSteps:["Restore the policy or approval history directory before retrying."]});break}n=ue.dirname(n)}let o=await Nn.open(e,"r").catch(i=>{if(re(i))return null;throw i});if(o===null)return null;try{let i=(await o.stat()).size,r=Buffer.alloc(Math.min(t,i)+1),s=0;for(;s<r.length;){let a=await o.read(r,s,r.length-s,s);if(a.bytesRead===0)break;s+=a.bytesRead}if(s===r.length||!Mo(r.subarray(0,s)))throw new g("Workflow policy input exceeds its byte bound or is not valid UTF-8.",_.CONFLICT,{code:"workflow_policy_input_unreadable",nextSteps:["Inspect the policy and approval history; reduce the declaration or use verified history compaction before retrying."]});return r.toString("utf8",0,s)}finally{await o.close()}}function Po(e){if(e===null)return{version:1,enforcement:"advise",policies:[]};let t;try{t=JSON.parse(e)}catch{throw new g("schema/policies.json must contain valid JSON.",_.CONFLICT,{code:"workflow_policy_registry_invalid",nextSteps:["Restore valid policy JSON before retrying the mutation."]})}return en(t)}async function $o(e){return Po(await Ln(ue.join(e,"schema","policies.json"),Ao))}async function jo(e,t){let n=await Ln(A(e,t),Fo);if(n===null)return[];let o;try{if(o=n.split(/\r?\n/).filter(i=>i.trim()).map(i=>JSON.parse(i)),!Oe(o).ok)throw new Error("invalid chain")}catch{throw new g("Approval evidence requires a valid item history chain.",_.CONFLICT,{code:"workflow_policy_approval_history_invalid",nextSteps:[`Run pm history ${t} --verify before recording or using an approval.`]})}return o.flatMap(i=>{let r=i.context?.workflow_approval;if(i.op!=="policy_approve"||i.record_hash_version!==1||typeof i.record_hash!="string"||typeof r!="object"||r===null)return[];let s=r;return typeof s.policy_fingerprint!="string"||typeof s.content_fingerprint!="string"?[]:[{policy_fingerprint:s.policy_fingerprint,content_fingerprint:s.content_fingerprint,author:i.author}]})}async function Bo(e,t,n){let o=n.before?.status!==n.after?.status&&t.policies.some(s=>s.rule.kind==="approval"&&tn(s,n)),i=n.before?.id??n.after?.id,r=o&&typeof i=="string"?await jo(e,i):[];return nn(t,{...n,approvals:r})}async function pt(e){let t=await $o(e.pmRoot),n=await Bo(e.pmRoot,t,{operation:e.operation,author:e.author,before:e.before?{...e.before.metadata,body:e.before.body}:null,after:e.after?{...e.after.metadata,body:e.after.body}:null});if(n.allowed)return n;let o=n.decisions.filter(d=>!d.satisfied&&d.effect==="refuse");if(!e.dryRun)try{await kn({pmRoot:e.pmRoot,op:"policy_refused",author:e.author,context:{item_id:e.after?.metadata.id??e.before?.metadata.id,operation:e.operation,workflow_policies:n.decisions},message:"Workflow policy refused a proposed item mutation.",lockTtlSeconds:e.settings.locks.ttl_seconds,lockWaitMs:e.settings.locks.wait_ms})}catch(d){let u=new g("Workflow policy refusal could not be recorded in workspace history.",_.CONFLICT,{code:"workflow_policy_audit_failed",nextSteps:["Resolve workspace-history lock or storage failures, then retry the refused mutation; no item changes were written."]});throw u.cause=d,u}let i=o.slice(0,3).map(d=>({policy_id:d.policy_id,rule:d.rule,description:t.policies.find(u=>u.id===d.policy_id).description,missing_fields:d.missing_fields})),r=[...new Set(i.flatMap(d=>d.missing_fields))],s=i.map(d=>`${d.policy_id} (${d.rule})`).join(", "),a=o.length>3?` and ${o.length-3} more`:"",c=e.after?.metadata.id??e.before.metadata.id,l=r.map(d=>{if(e.before===null)return`Supply ${d} in the original ${e.operation} request, then retry; the item was not created.`;let u=Yt("update",d);return u===void 0?`Supply ${d} using its declared SDK or package mutation contract, then retry.`:j(["update",c,qt("update",u),`<${d}>`,"--pm-path",ue.resolve(e.pmRoot)])});throw new g(`Workflow policy refused ${e.operation}: ${s}${a}.${r.length?` Missing: ${r.join(", ")}.`:""}`,_.CONFLICT,{code:"workflow_policy_refused",reason:i.map(d=>d.policy_id).join(","),policy_violations:i,policy_violation_count:o.length,required:r.length?`Supply missing fields: ${r.join(", ")}, then retry the refused mutation.`:"Satisfy the declared workflow policy before retrying.",why:i.map(d=>d.description).filter(Boolean).join(" ")||void 0,recovery:{missing_required_fields:r},nextSteps:[...l,...new Set(o.slice(0,3).filter(d=>d.missing_fields.length===0).map(d=>d.remediation)),...o.length>3?[`Inspect all policies with pm schema policies before retrying ${e.operation}.`]:[]]})}import{AsyncLocalStorage as Uo}from"node:async_hooks";import{channel as Ho}from"node:diagnostics_channel";(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]="b2b2d49a-bb8c-54d7-89d2-1dbe76879129")}catch{}})();var ht=new Uo,yt=Ho("@unbrained/pm-cli/item-metadata-enumeration/v1");function Me(e){yt.publish(e)}async function Hs(e){let t={enumeration_calls:0,metadata_rows:0},n=o=>{ht.getStore()?.includes(t)&&(t.enumeration_calls+=1,t.metadata_rows+=o)};yt.subscribe(n);try{return{result:await ht.run([...ht.getStore()??[],t],e),work:{...t}}}finally{yt.unsubscribe(n)}}import q from"node:fs/promises";import An from"node:path";import{randomUUID as Wo}from"node:crypto";import{createRequire as zo}from"node:module";(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]="84a3dae8-69b6-589d-a8ec-11f77c1d103a")}catch{}})();var Ko="metadata-query-index.sqlite",me="5",gt;function fe(){return gt!==void 0||(gt=In(process.versions.node,zo(import.meta.url))),gt}function Mn(e,t){return Math.max(0,Math.floor(e===void 0?t:e))}function Q(e){return An.join(e,"runtime",Ko)}function Xo(e){e.exec(`
|
|
2
|
+
PRAGMA foreign_keys = ON;
|
|
3
|
+
PRAGMA journal_mode = OFF;
|
|
4
|
+
PRAGMA synchronous = OFF;
|
|
5
|
+
CREATE TABLE metadata (
|
|
6
|
+
key TEXT PRIMARY KEY,
|
|
7
|
+
value TEXT NOT NULL
|
|
8
|
+
) STRICT;
|
|
9
|
+
CREATE TABLE items (
|
|
10
|
+
id TEXT PRIMARY KEY,
|
|
11
|
+
relative_path TEXT NOT NULL UNIQUE,
|
|
12
|
+
metadata_json TEXT NOT NULL,
|
|
13
|
+
status TEXT NOT NULL,
|
|
14
|
+
type TEXT NOT NULL,
|
|
15
|
+
priority INTEGER NOT NULL,
|
|
16
|
+
updated_at TEXT NOT NULL,
|
|
17
|
+
created_at TEXT NOT NULL,
|
|
18
|
+
parent TEXT,
|
|
19
|
+
assignee TEXT,
|
|
20
|
+
sprint TEXT,
|
|
21
|
+
release TEXT
|
|
22
|
+
) STRICT;
|
|
23
|
+
CREATE INDEX items_default_order
|
|
24
|
+
ON items(priority, updated_at DESC, id);
|
|
25
|
+
CREATE INDEX items_status_default_order
|
|
26
|
+
ON items(status, priority, updated_at DESC, id);
|
|
27
|
+
CREATE INDEX items_type_default_order
|
|
28
|
+
ON items(type, priority, updated_at DESC, id);
|
|
29
|
+
CREATE INDEX items_parent_default_order
|
|
30
|
+
ON items(parent, priority, updated_at DESC, id);
|
|
31
|
+
CREATE TABLE item_metadata_keys (
|
|
32
|
+
item_id TEXT NOT NULL,
|
|
33
|
+
key TEXT NOT NULL,
|
|
34
|
+
PRIMARY KEY(item_id, key),
|
|
35
|
+
FOREIGN KEY(item_id) REFERENCES items(id) ON DELETE CASCADE
|
|
36
|
+
) STRICT;
|
|
37
|
+
CREATE INDEX item_metadata_keys_key_item
|
|
38
|
+
ON item_metadata_keys(key, item_id);
|
|
39
|
+
CREATE TABLE item_linked_files (
|
|
40
|
+
item_id TEXT NOT NULL,
|
|
41
|
+
path TEXT NOT NULL,
|
|
42
|
+
scope TEXT NOT NULL,
|
|
43
|
+
note TEXT,
|
|
44
|
+
PRIMARY KEY(item_id, path, scope),
|
|
45
|
+
FOREIGN KEY(item_id) REFERENCES items(id) ON DELETE CASCADE
|
|
46
|
+
) STRICT;
|
|
47
|
+
CREATE INDEX item_linked_files_path_scope_item
|
|
48
|
+
ON item_linked_files(path, scope, item_id);
|
|
49
|
+
CREATE VIRTUAL TABLE item_search USING fts5(
|
|
50
|
+
id UNINDEXED,
|
|
51
|
+
title,
|
|
52
|
+
description,
|
|
53
|
+
tags,
|
|
54
|
+
tokenize = 'unicode61'
|
|
55
|
+
);
|
|
56
|
+
`)}function Fe(e,t,n){e.prepare("INSERT INTO metadata(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(t,n)}function Fn(e,t){let n=t.metadata;e.prepare(`INSERT INTO items(
|
|
57
|
+
id, relative_path, metadata_json, status, type, priority,
|
|
58
|
+
updated_at, created_at, parent, assignee, sprint, release
|
|
59
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
60
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
61
|
+
relative_path = excluded.relative_path,
|
|
62
|
+
metadata_json = excluded.metadata_json,
|
|
63
|
+
status = excluded.status,
|
|
64
|
+
type = excluded.type,
|
|
65
|
+
priority = excluded.priority,
|
|
66
|
+
updated_at = excluded.updated_at,
|
|
67
|
+
created_at = excluded.created_at,
|
|
68
|
+
parent = excluded.parent,
|
|
69
|
+
assignee = excluded.assignee,
|
|
70
|
+
sprint = excluded.sprint,
|
|
71
|
+
release = excluded.release`).run(n.id,t.relativePath,JSON.stringify(n),n.status,n.type,n.priority,n.updated_at,n.created_at,n.parent??null,n.assignee??null,n.sprint??null,n.release??null),e.prepare("DELETE FROM item_metadata_keys WHERE item_id = ?").run(n.id),e.prepare("DELETE FROM item_linked_files WHERE item_id = ?").run(n.id),e.prepare("DELETE FROM item_search WHERE rowid = (SELECT rowid FROM items WHERE id = ?)").run(n.id),e.prepare("INSERT INTO item_search(rowid, id, title, description, tags) SELECT rowid, ?, ?, ?, ? FROM items WHERE id = ?").run(n.id,n.title,n.description,n.tags.join(" "),n.id);let o=e.prepare("INSERT INTO item_metadata_keys(item_id, key) VALUES (?, ?)");for(let r of Object.keys(n))o.run(n.id,r);let i=e.prepare("INSERT INTO item_linked_files(item_id, path, scope, note) VALUES (?, ?, ?, ?)");for(let r of t.linkedFiles??[])i.run(n.id,r.path,r.scope,r.note??null)}async function Pn(e){let t=Q(e.pmRoot),n=fe();if(!n){await q.rm(t,{force:!0});return}await q.mkdir(An.dirname(t),{recursive:!0});let o=`${t}.${Wo()}.tmp`,i;try{i=new n(o),Xo(i),i.exec("BEGIN IMMEDIATE"),Fe(i,"version",me),Fe(i,"context_fingerprint",e.contextFingerprint),Fe(i,"source_cursor",e.sourceCursor);for(let r of e.rows)Fn(i,r);i.exec("COMMIT"),i.close(),i=void 0,await q.rm(t,{force:!0}),await q.rename(o,t)}catch(r){throw i?.close(),await Promise.allSettled([q.rm(o,{force:!0})]),r}}function Pe(e){return Object.fromEntries(e.prepare("SELECT key, value FROM metadata").all().map(t=>[String(t.key),String(t.value)]))}async function $n(e){let t=fe();if(!t)return!1;let n=Q(e.pmRoot),o;try{await q.access(n),o=new t(n),o.exec("PRAGMA foreign_keys = ON");let i=Pe(o);if(i.version!==me||i.context_fingerprint!==e.contextFingerprint||i.source_cursor!==e.expectedSourceCursor)return o.close(),!1;o.exec("BEGIN IMMEDIATE");let r=o.prepare("DELETE FROM items WHERE relative_path = ?"),s=o.prepare("SELECT rowid FROM items WHERE relative_path = ?"),a=o.prepare("DELETE FROM item_search WHERE rowid = ?");for(let c of e.deletedRelativePaths??[]){let l=s.get(c);r.run(c),l&&a.run(l.rowid)}return e.row&&Fn(o,e.row),Fe(o,"source_cursor",e.sourceCursor),o.exec("COMMIT"),o.close(),!0}catch{try{o?.exec("ROLLBACK")}catch{}return o?.close(),!1}}function Ae(e,t,n,o,i){!o||o.length===0||(e.push(`${n} ${i} (${o.map(()=>"?").join(", ")})`),t.push(...o))}function Go(e){let t=[],n=[];Ae(t,n,"status",e.statuses,"IN"),Ae(t,n,"status",e.excludeStatuses,"NOT IN"),Ae(t,n,"type",e.types,"IN"),Ae(t,n,"id",e.ids,"IN");for(let o of e.metadataKeys??[])t.push("EXISTS (SELECT 1 FROM item_metadata_keys AS indexed_key WHERE indexed_key.item_id = items.id AND indexed_key.key = ?)"),n.push(o);for(let[o,i]of[["parent",e.parent],["assignee",e.assignee],["sprint",e.sprint],["release",e.release]])i!==void 0&&(t.push(`${o} = ?`),n.push(i));return e.priority!==void 0&&(t.push("priority = ?"),n.push(e.priority)),{where:t.length===0?"":` WHERE ${t.join(" AND ")}`,parameters:n}}async function Vs(e){let t=fe();if(!t)return null;let n=e.query??{},{where:o,parameters:i}=Go(n),r;try{r=new t(Q(e.pmRoot),{readOnly:!0});let s=Pe(r);if(s.version!==me||s.source_cursor!==e.expectedSourceCursor)return r.close(),null;let a=r.prepare(`SELECT COUNT(*) AS count FROM items${o}`).get(...i),c=[],l="";n.limit!==void 0?(l+=" LIMIT ?",c.push(Math.max(0,Math.floor(n.limit))),n.offset!==void 0&&(l+=" OFFSET ?",c.push(Math.max(0,Math.floor(n.offset))))):n.offset!==void 0&&(l+=" LIMIT -1 OFFSET ?",c.push(Math.max(0,Math.floor(n.offset))));let d=r.prepare(`SELECT metadata_json FROM items${o}
|
|
72
|
+
ORDER BY ${n.terminalStatuses&&n.terminalStatuses.length>0?`CASE WHEN status IN (${n.terminalStatuses.map(()=>"?").join(", ")}) THEN 1 ELSE 0 END ASC, `:""}priority ASC, updated_at DESC, id ASC${l}`).all(...i,...n.terminalStatuses??[],...c).map(u=>{let m=JSON.parse(String(u.metadata_json));if(!m.id)throw new TypeError("Indexed metadata row has no id");return m});return r.close(),{source_cursor:s.source_cursor,total:Number(a.count),items:d}}catch{return r?.close(),null}}async function Js(e){let t=fe();if(!t||e.paths.length===0)return null;let n;try{n=new t(Q(e.pmRoot),{readOnly:!0});let o=Pe(n);if(o.version!==me||o.source_cursor!==e.expectedSourceCursor)return n.close(),null;let i=e.paths.map(()=>"?").join(", "),r=e.scope===void 0?"":" AND scope = ?",s=[...e.paths,...e.scope===void 0?[]:[e.scope]],a=`path IN (${i})${r}`,c=n.prepare(`SELECT COUNT(DISTINCT item_id) AS count
|
|
73
|
+
FROM item_linked_files
|
|
74
|
+
WHERE ${a}`).get(...s),l=Mn(e.limit,50),d=Mn(e.offset,0),u=n.prepare(`SELECT items.id, items.metadata_json
|
|
75
|
+
FROM items
|
|
76
|
+
WHERE EXISTS (
|
|
77
|
+
SELECT 1 FROM item_linked_files
|
|
78
|
+
WHERE item_linked_files.item_id = items.id AND ${a}
|
|
79
|
+
)
|
|
80
|
+
ORDER BY items.priority ASC, items.updated_at DESC, items.id ASC
|
|
81
|
+
LIMIT ? OFFSET ?`).all(...s,l,d),m=[];if(u.length>0){let p=u.map(h=>String(h.id)),f=n.prepare(`SELECT item_id, path, scope, note
|
|
82
|
+
FROM item_linked_files
|
|
83
|
+
WHERE item_id IN (${p.map(()=>"?").join(", ")})
|
|
84
|
+
AND ${a}
|
|
85
|
+
ORDER BY path ASC, scope ASC`).all(...p,...s),y=new Map(p.map(h=>[h,[]]));for(let h of f){let w=String(h.item_id),v=y.get(w);v.push({path:String(h.path),scope:String(h.scope),...h.note===null?{}:{note:String(h.note)}}),y.set(w,v)}for(let h of u){let w=JSON.parse(String(h.metadata_json));m.push({item:w,files:y.get(String(h.id))})}}return n.close(),{source_cursor:o.source_cursor,total:Number(c.count),matches:m}}catch{return n?.close(),null}}async function Qs(e){let t=fe();if(!t)return null;let n;try{n=new t(Q(e.pmRoot),{readOnly:!0});let o=Pe(n);if(o.version!==me||o.source_cursor!==e.expectedSourceCursor)return n.close(),null;let i=n.prepare(`SELECT items.metadata_json
|
|
86
|
+
FROM item_search
|
|
87
|
+
JOIN items ON items.id = item_search.id
|
|
88
|
+
WHERE item_search MATCH ?
|
|
89
|
+
ORDER BY bm25(item_search), items.priority, items.updated_at DESC, items.id
|
|
90
|
+
LIMIT ?`).all(e.query,Math.max(0,Math.floor(e.limit))).map(r=>JSON.parse(String(r.metadata_json)));return n.close(),{source_cursor:o.source_cursor,items:i}}catch{return n?.close(),null}}async function $e(e){await q.rm(Q(e),{force:!0})}import T from"node:fs/promises";import I from"node:path";import{createHash as Yo,randomUUID as Wn}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]="846c1c5d-8a5c-56ee-832a-bfc780283e70")}catch{}})();var D=8,zn=500,qo="metadata-derived-index",Vo="metadata-cache.json",Jo="metadata-cache-bodies.json",Qo="metadata-cache-collections.json",Zo="metadata-cache-delta.json",ei="metadata-cache-manifest.json",jn=4,ti=["comments","notes","learnings","files","tests","test_runs","docs"];function Kn(){return ke(F())}function Be(e){let t={...e},n={};for(let o of ti)o in t&&(n[o]=t[o],delete t[o]);return{light:t,heavy:n}}function Xn(e,t){return!t||Object.keys(t).length===0?e:{...e,...t}}function Gn(e,t,n,o){let i=Yo("sha256");i.update(`format:${e??"default"}`);let r=Object.entries(t).sort(([s],[a])=>s.localeCompare(a)).map(([s,a])=>`${s}=${a}`).join(",");return i.update(`|types:${r}`),n&&i.update(`|schema:${JSON.stringify(n)}`),o.length>0&&i.update(`|extension_fields:${o.join(",")}`),i.digest("hex").slice(0,16)}function Ue(e){return I.join(e,"runtime",Vo)}function He(e){return I.join(e,"runtime",Jo)}function We(e){return I.join(e,"runtime",Qo)}function wt(e){return I.join(e,"runtime",Zo)}function bt(e){return I.join(e,"runtime",ei)}function ze(e,t){let n=I.extname(e);return`${e.slice(0,-n.length)}.${t}${n}`}var ni=24,R=new Map,Ke=new WeakMap;function Et(e){return Ke.get(e)??e.source_cursor}function oi(e,t){let n=Et(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Ke.set(e,n);for(let[o,i]of Object.entries(t.changes))i.entry?e.entries[o]=i.entry:delete e.entries[o];e.directory_signatures=t.directory_signatures,e.source_cursor=t.source_cursor}}function ii(e,t){if(!e)return;let n=Et(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Ke.set(e,n);for(let[o,i]of Object.entries(t.changes))i.body?e.bodies[o]=i.body:delete e.bodies[o];e.source_cursor=t.source_cursor}}function ri(e,t){if(!e)return;let n=Et(e);if(!(t.base_source_cursor!==n||e.source_cursor===t.source_cursor)){Ke.set(e,n);for(let[o,i]of Object.entries(t.changes))i.collections?e.collections[o]=i.collections:delete e.collections[o];e.source_cursor=t.source_cursor}}function si(e,t,n,o){!e||!o||e.context_fingerprint!==o.context_fingerprint||(oi(e,o),ii(t,o),ri(n,o))}function _t(e,t){R.size>=ni&&!R.has(e)&&on(R),R.set(e,t)}async function U(e,t){let n;try{n=await T.stat(e)}catch{return R.delete(e),null}let o=R.get(e);if(o&&pe(o.signature,n.mtimeMs,n.ctimeMs,n.size))return R.delete(e),R.set(e,o),o.envelope;let i;try{i=t(await T.readFile(e,"utf8"))}catch{i=null}return _t(e,{signature:{mtime_ms:n.mtimeMs,ctime_ms:n.ctimeMs,size:n.size},envelope:i}),i}async function ai(e,t,n){let o=a=>{let c=JSON.parse(a);return c.version!==D||typeof c.source_cursor!="string"||typeof c.entries!="object"||c.entries===null?null:c},i=Ue(e),r=await U(i,o);if(!t||r===null||r.context_fingerprint===t)return r;let s=await U(ze(i,t),o);return s===null&&ge(n,`metadata_cache_context_changed:${r.context_fingerprint}->${t}`),s}async function ci(e,t){let n=r=>{let s=JSON.parse(r);return s.version!==D||typeof s.source_cursor!="string"||typeof s.bodies!="object"||s.bodies===null?null:s},o=He(e),i=await U(o,n);return t&&i?.context_fingerprint!==t?await U(ze(o,t),n):i}async function di(e,t){let n=r=>{let s=JSON.parse(r);return s.version!==D||typeof s.source_cursor!="string"||typeof s.collections!="object"||s.collections===null?null:s},o=We(e),i=await U(o,n);return t&&i?.context_fingerprint!==t?await U(ze(o,t),n):i}async function vt(e){let t=wt(e),n=await U(t,o=>{let i=JSON.parse(o);return i.version!==D||typeof i.base_source_cursor!="string"||typeof i.source_cursor!="string"||typeof i.changes!="object"||i.changes===null?null:i});if(n)return{envelope:n,invalid:!1};try{return await T.stat(t),{envelope:null,invalid:!0}}catch{return{envelope:null,invalid:!1}}}async function It(e){let t=bt(e),n=await U(t,o=>{let i=JSON.parse(o);return i.version!==D||typeof i.context_fingerprint!="string"||typeof i.source_cursor!="string"||!Number.isInteger(i.entry_count)||i.entry_count<0||typeof i.directory_signatures!="object"||i.directory_signatures===null?null:i});if(n)return n;try{await T.stat(t),await Z(e)}catch{}return null}async function he(e,t){await T.mkdir(I.dirname(e),{recursive:!0}),await $(e,JSON.stringify(t));try{let o=await T.stat(e);_t(e,{signature:{mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size},envelope:t})}catch{R.delete(e)}let n=I.dirname(I.dirname(e));if(e===Ue(n)||e===He(n)||e===We(n)){let o=ze(e,t.context_fingerprint);await $(o,JSON.stringify(t));try{let c=await T.stat(o);_t(o,{signature:{mtime_ms:c.mtimeMs,ctime_ms:c.ctimeMs,size:c.size},envelope:t})}catch{R.delete(o)}let i=I.dirname(e),r=I.extname(e),s=I.basename(e,r),a=(await T.readdir(i,{withFileTypes:!0}).catch(()=>[])).filter(c=>c.isFile()&&c.name!==I.basename(e)&&c.name.startsWith(`${s}.`)&&c.name.endsWith(r)).map(c=>I.join(i,c.name));if(a.length>jn){let c=(await Promise.all(a.map(async l=>{try{return{path:l,mtime:(await T.stat(l)).mtimeMs}}catch{return null}}))).filter(l=>l!==null);for(let l of c.sort((d,u)=>d.mtime-u.mtime).slice(0,Math.max(0,c.length-jn)))await T.rm(l.path,{force:!0}),R.delete(l.path)}}}function li(e,t,n){return n?t===n&&e!==n:t==="toon"&&e!=="toon"}function Yn(e,t,n){return e===void 0||li(e,t,n)}function ge(e,t){e&&!e.includes(t)&&e.push(t)}function pe(e,t,n,o){return e.mtime_ms===t&&e.ctime_ms===n&&e.size===o}async function ui(e,t,n){let o=I.join(e,t);try{let i=await T.readdir(o);return{folder:t,dirPath:o,files:i}}catch(i){return typeof i=="object"&&i!==null&&"code"in i&&!re(i)&&ge(n,`item_list_directory_read_failed:${t}`),{folder:t,dirPath:o,files:[]}}}async function mi(e,t){try{let n=await T.stat(I.join(e,t));return[t,{exists:!0,mtime_ms:n.mtimeMs,ctime_ms:n.ctimeMs,size:n.size}]}catch{return[t,{exists:!1,mtime_ms:0,ctime_ms:0,size:0}]}}async function je(e,t){return Object.fromEntries(await Promise.all(t.map(async n=>await mi(e,n))))}function ye(e,t){return!e||Object.keys(e).length!==Object.keys(t).length?!1:Object.entries(t).every(([n,o])=>{let i=e[n];return i!==void 0&&i.exists===o.exists&&pe(i,o.mtime_ms,o.ctime_ms,o.size)})}function fi(e){return Te.some(t=>e.toLowerCase().endsWith(t))}function pi(e,t,n,o,i,r){o||(e.metadata=!0),t&&!i&&(e.body=!0),n&&!r&&(e.collections=!0)}async function hi(e,t,n){if(n)for(let o of await Re({path:e,scope:"project"}))ge(t,o)}function Bn(e,t,n,o){if(e)return t&&n?n.collections:o}async function yi(e,t,n){let o=await T.stat(e),i=o.mtimeMs,r=o.ctimeMs,{size:s}=o,a=ot(e);await hi(e,n.warnings,n.dispatchReadHooks);let c=n.previousEntries[t],l=!n.forceSourceRead&&c!==void 0&&pe(c,i,r,s),d=n.previousBodies[t],u=!n.forceSourceRead&&d!==void 0&&pe(d,i,r,s),m=n.previousCollections[t],p=!n.forceSourceRead&&m!==void 0&&pe(m,i,r,s);if(!(!l||n.includeBody&&!u||n.includeCollections&&!p))return{mtimeMs:i,ctimeMs:r,size:s,itemFormat:a,lightMetadata:c.metadata,heavyMetadata:Bn(n.includeCollections,p,m,void 0),bodyLength:c.body_length,body:n.includeBody?d.body:void 0};let f=await T.readFile(e,"utf8"),y=De(f,{format:a,schema:n.schema,extensionFieldNames:n.extensionFieldNames,onWarning:w=>ge(n.warnings,w)}),h=Be(y.metadata);return pi(n.state.misses,n.includeBody,n.includeCollections,l,u,p),{mtimeMs:i,ctimeMs:r,size:s,itemFormat:a,lightMetadata:l?c.metadata:h.light,heavyMetadata:Bn(n.includeCollections,p,m,h.heavy),bodyLength:l?c.body_length:y.body.length,body:n.includeBody?y.body:void 0}}function gi(e,t,n,o){n.state.newEntries[t]={mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size,metadata:o.lightMetadata,body_length:o.bodyLength},n.includeBody&&o.body!==void 0&&(n.state.newBodies[t]={mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size,body:o.body}),n.includeCollections&&o.heavyMetadata!==void 0&&(n.state.newCollections[t]={mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size,collections:o.heavyMetadata});let i=n.includeCollections?Xn(o.lightMetadata,o.heavyMetadata):o.lightMetadata,r=n.state.documentsById.get(i.id),s={metadata:i,body:o.body,item_format:o.itemFormat,item_path:e};Yn(r?.itemFormat,o.itemFormat,n.preferredFormat)&&n.state.documentsById.set(i.id,{candidate:s,itemFormat:o.itemFormat})}async function _i(e,t,n,o){try{let i=await yi(t,n,o);gi(t,n,o,i)}catch{ge(o.warnings,`item_list_item_read_failed:${e}/${I.basename(t)}`)}}function wi(e,t){return e&&e.context_fingerprint===t?e.entries:{}}function bi(e,t){return e&&e.context_fingerprint===t?e.bodies:{}}function Ei(e,t){return e&&e.context_fingerprint===t?e.collections:{}}function vi(){return{newEntries:{},newBodies:{},newCollections:{},documentsById:new Map,misses:{metadata:!1,body:!1,collections:!1}}}async function Ii(e,t){let n=[];for(let{folder:o,dirPath:i,files:r}of e)for(let s of r){if(!fi(s))continue;let a=I.join(i,s),c=I.relative(t.pmRoot,a);n.push(_i(o,a,c,t)),n.length===32&&(await Promise.all(n),n.length=0)}await Promise.all(n)}async function ki(e){if(!(!(e.state.misses.metadata||Object.keys(e.previousEntries).length!==Object.keys(e.state.newEntries).length||!ye(e.existingCache?.directory_signatures,e.directorySignatures))&&e.existingCache!==null&&e.existingCache.context_fingerprint===e.contextFingerprint))try{await he(Ue(e.pmRoot),{version:D,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,directory_signatures:e.directorySignatures,entries:e.state.newEntries}),await he(bt(e.pmRoot),{version:D,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,entry_count:Object.keys(e.state.newEntries).length,directory_signatures:e.directorySignatures});let t=[...e.state.documentsById.values()].map(({candidate:n})=>({relativePath:I.relative(e.pmRoot,n.item_path),metadata:Be(n.metadata).light,linkedFiles:n.metadata.files??[]}));t.length>=e.minimumIndexedItems?await Pn({pmRoot:e.pmRoot,contextFingerprint:e.contextFingerprint,sourceCursor:e.sourceCursor,rows:t}):await $e(e.pmRoot)}catch{}}async function Ci(e){!(e.state.misses.body||Object.keys(e.previousBodies).length!==Object.keys(e.state.newBodies).length)&&e.existingBodyCache!==null&&e.existingBodyCache.context_fingerprint===e.contextFingerprint||await he(He(e.pmRoot),{version:D,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,bodies:e.state.newBodies}).catch(()=>{})}async function Ti(e){!(e.state.misses.collections||Object.keys(e.previousCollections).length!==Object.keys(e.state.newCollections).length)&&e.existingCollectionsCache!==null&&e.existingCollectionsCache.context_fingerprint===e.contextFingerprint||await he(We(e.pmRoot),{version:D,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,collections:e.state.newCollections}).catch(()=>{})}async function kt(e,t,n={}){let o=await It(e);return n.required!==!0&&(o===null||o.entry_count<zn)?async()=>{}:Se(e,qo,30,t,!1,!1,3e3)}async function ua(e,t){let n=await It(e);if(n===null)return null;let o=await vt(e);if(o.invalid)return await Z(e),null;let i=o.envelope?.context_fingerprint===n.context_fingerprint&&o.envelope.base_source_cursor===n.source_cursor?o.envelope.source_cursor:n.source_cursor,r=o.envelope?.context_fingerprint===n.context_fingerprint&&o.envelope.base_source_cursor===n.source_cursor?o.envelope.directory_signatures:n.directory_signatures;return t&&!ye(r,await je(e,t))?null:{source_cursor:i,entry_count:n.entry_count}}function Un(e,t){let n=I.relative(e,t);return n===""||n===".."||n.startsWith(`..${I.sep}`)||I.isAbsolute(n)?null:n}async function Z(e){await Promise.all([Ue(e),He(e),We(e),wt(e),bt(e)].map(async t=>{await T.rm(t,{force:!0}),R.delete(t)})),await $e(e)}async function xi(e){if(e.mutation.document===null)return{entry:null,body:null,collections:null};let t=await T.stat(e.mutation.itemPath),n=Be(e.mutation.document.metadata),o={mtime_ms:t.mtimeMs,ctime_ms:t.ctimeMs,size:t.size};return{entry:{...o,metadata:n.light,body_length:e.mutation.document.body.length},body:{...o,body:e.mutation.document.body},collections:{...o,collections:n.heavy}}}function Ri(e,t,n){return e?.context_fingerprint===t&&e.base_source_cursor===n?structuredClone(e.changes):{}}async function Ct(e){let t=Un(e.pmRoot,e.itemPath),n=e.previousItemPath?Un(e.pmRoot,e.previousItemPath):void 0;if(t===null||n===null)return await Z(e.pmRoot),["metadata_derived_index_path_invalidated"];try{let o=Gn(e.preferredFormat,e.typeToFolder,e.schema,Kn()),i=await It(e.pmRoot);if(i===null||i.context_fingerprint!==o)return[];let r=i.source_cursor,s=await vt(e.pmRoot);if(s.invalid)return await Z(e.pmRoot),["metadata_derived_index_refresh_failed"];let a=Ri(s.envelope,o,r),c=s.envelope?.context_fingerprint===o&&s.envelope.base_source_cursor===r?s.envelope.source_cursor:r;n!==void 0&&(a[n]={entry:null,body:null,collections:null}),a[t]=await xi({mutation:e});let l=Wn();return await he(wt(e.pmRoot),{version:D,context_fingerprint:o,base_source_cursor:r,source_cursor:l,directory_signatures:await je(e.pmRoot,[...new Set(Object.values(e.typeToFolder))]),changes:a}),await $n({pmRoot:e.pmRoot,contextFingerprint:o,expectedSourceCursor:c,sourceCursor:l,row:e.document===null?null:{relativePath:t,metadata:Be(e.document.metadata).light,linkedFiles:e.document.metadata.files},deletedRelativePaths:[...n===void 0?[]:[n],...e.document===null?[t]:[]]})||await $e(e.pmRoot),[]}catch{return await Z(e.pmRoot).catch(()=>{}),["metadata_derived_index_refresh_failed"]}}function Si(e){return[...e.documentsById.values()].sort((t,n)=>t.candidate.metadata.id.localeCompare(n.candidate.metadata.id)).map(t=>t.candidate)}function Hn(e,t,n){return e?.context_fingerprint===t&&e.source_cursor===n}function Di(e,t,n,o,i){return e.every(r=>(!t||o[r]!==void 0)&&(!n||i[r]!==void 0))}function Oi(e){let t=new Map;for(let[n,o]of Object.entries(e.previousEntries)){let i=ot(n);if(!i)continue;let r=e.includeCollections?Xn(o.metadata,e.previousCollections[n]?.collections):o.metadata,s=t.get(r.id);Yn(s?.itemFormat,i,e.preferredFormat)&&t.set(r.id,{itemFormat:i,candidate:{metadata:r,body:e.includeBody?e.previousBodies[n]?.body:void 0,item_format:i,item_path:I.join(e.pmRoot,n)}})}return[...t.values()].sort((n,o)=>n.candidate.metadata.id.localeCompare(o.candidate.metadata.id)).map(n=>n.candidate)}function Ni(e){return e.forceSourceScan||st()||e.existingCache?.context_fingerprint!==e.contextFingerprint||e.entryKeys.length<e.minimumIndexedItems||!ye(e.existingCache?.directory_signatures,e.directorySignatures)?!1:[!e.includeBody||Hn(e.existingBodyCache,e.contextFingerprint,e.existingCache.source_cursor),!e.includeCollections||Hn(e.existingCollectionsCache,e.contextFingerprint,e.existingCache.source_cursor)].every(Boolean)&&Di(e.entryKeys,e.includeBody,e.includeCollections,e.previousBodies,e.previousCollections)}async function Xe(e,t,n,o,i,r={}){let s=r.includeBody!==!1,a=r.includeCollections!==!1,c=Kn(),l=Gn(t,n,i,c),d=await vt(e);d.invalid&&await Z(e);let u=await ai(e,l,r.cacheDiagnostics),m=s?await ci(e,l):null,p=a?await di(e,l):null;si(u,m,p,d.envelope);let f=wi(u,l),y=bi(m,l),h=Ei(p,l),w=[...new Set(Object.values(n))],v=await je(e,w),E=Object.keys(f),C=Math.max(1,Math.floor(r.derivedIndexMinimumItems??zn));if(Ni({forceSourceScan:r.forceSourceScan===!0,contextFingerprint:l,existingCache:u,existingBodyCache:m,existingCollectionsCache:p,directorySignatures:v,entryKeys:E,minimumIndexedItems:C,includeBody:s,includeCollections:a,previousBodies:y,previousCollections:h}))return Oi({pmRoot:e,preferredFormat:t,includeBody:s,includeCollections:a,previousEntries:f,previousBodies:y,previousCollections:h});let b=await Promise.all(w.map(V=>ui(e,V,o))),W=st(),x=vi(),z={pmRoot:e,preferredFormat:t,warnings:o,schema:i,extensionFieldNames:c,includeBody:s,includeCollections:a,forceSourceRead:r.forceSourceScan===!0,dispatchReadHooks:W,previousEntries:f,previousBodies:y,previousCollections:h,state:x};await Ii(b,z);let K=await je(e,w),N=ye(v,K)?K:{},L=x.misses.metadata||Object.keys(f).length!==Object.keys(x.newEntries).length||!ye(u?.directory_signatures,N)||u===null?Wn():u.source_cursor;return await ki({pmRoot:e,contextFingerprint:l,sourceCursor:L,existingCache:u,previousEntries:f,directorySignatures:N,state:x,minimumIndexedItems:C}),s&&await Ci({pmRoot:e,contextFingerprint:l,sourceCursor:L,existingBodyCache:m,previousBodies:y,state:x}),a&&await Ti({pmRoot:e,contextFingerprint:l,sourceCursor:L,existingCollectionsCache:p,previousCollections:h,state:x}),Si(x)}async function qn(e,t,n,o,i){return(await Xe(e,t,n,o,i,{includeBody:!1})).map(r=>({metadata:r.metadata,body:r.body??""}))}async function Vn(e,t,n,o,i){return(await Xe(e,t,n,o,i,{includeBody:!1,includeCollections:!1})).map(r=>({metadata:r.metadata,body:r.body??""}))}(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]="1745a409-0f91-5f5a-8d2a-e5e61ff667a0")}catch{}})();function xt(e,t){return(t===void 0?void 0:Vt(e,t))?.execution_role??Gt[e.trim().toLowerCase()]??"agent"}var Rt="blocked_by",Jn="blocks",Li=Object.freeze([Rt,Jn]),Tt="no-active-blocker";function k(e){return e.trim().toLowerCase()}function Ge(e,t){return t?`external:${e}`:`local:${k(e)}`}function _e(e){let t=new Map,n=typeof e.blocked_by=="string"?e.blocked_by.trim():"";if(n.length>0&&k(n)!==Tt){let o=P(n);t.set(Ge(n,o),o?n:k(n))}for(let o of e.dependencies??[]){let i=typeof o.id=="string"?o.id.trim():"";if(o.kind===Rt&&i.length>0&&k(i)!==Tt){let r=P(i)||S(o.source_kind);t.set(Ge(i,r),r?i:k(i))}}return[...t.values()].sort((o,i)=>o.localeCompare(i))}function Ye(e){let t=new Map;for(let n of e){let o=k(n.id);o.length!==0&&t.set(o,new Set(_e(n)))}for(let n of e){let o=k(n.id);if(o.length!==0)for(let i of n.dependencies??[]){let r=i.kind===Jn&&typeof i.id=="string"?k(i.id):"";if(r.length===0||r===Tt)continue;let s=t.get(r)??new Set;s.add(o),t.set(r,s)}}return new Map([...t].map(([n,o])=>[n,[...o].sort((i,r)=>i.localeCompare(r))]))}function Qn(e,t){let n=k(e.id);return n.length>0?Ye(t).get(n)??_e(e):_e(e)}function St(e,t,n,o){let i=e,r=typeof i.id=="string"?o?.get(k(i.id))??Qn(i,[...t.values()]):_e(e),s=new Set((e.dependencies??[]).filter(a=>a.kind===Rt&&S(a.source_kind)&&typeof a.id=="string"&&a.id.trim().length>0).map(a=>Ge(a.id.trim(),!0)));return r.map(a=>{if(P(a)||s.has(Ge(a,!0)))return{id:a,title:null,status:null,resolved:!1,external:!0,...typeof e.updated_at=="string"?{blocked_since:e.updated_at}:{},resolver:null};let c=t.get(k(a));return c?{id:a,title:c.title,status:c.status,resolved:B(c.status,n)}:{id:a,title:null,status:null,resolved:!1}})}function Mi(e,t,n){return St(e,t,n)}function Ai(e,t){let n=new Map(e.map(s=>[k(s.id),s])),o=Ye(e),i=new Set([...Zn(t),...t.blocked_statuses]),r=new Set;for(let s of e){let a=ae(s.status,t);i.has(a)&&(t.blocked_statuses.has(a)||St(s,n,t,o).some(c=>!c.resolved))&&r.add(k(s.id))}return r}function Fi(e,t,n={},o){let i=[...e.ready,...e.decisions,...e.gates];n.includeContainers===!0&&i.push(...e.containers.filter(s=>s.open_blockers.length===0&&!t.blocked_statuses.has(ae(s.item.status,t))));let r={ready:[],decisions:[],gates:[]};for(let s of i){let a=xt(s.item.type,o);a==="human"&&n.includeDecisions!==!0?r.decisions.push(s):a==="gate"&&n.includeGates!==!0?r.gates.push(s):r.ready.push(s)}return r}function Zn(e){return e.active_statuses.size>0?e.active_statuses:new Set([e.open_status])}function Pi(e,t,n){let o=[k(e)],i=new Set;for(;o.length>0;){let r=o.pop();if(!i.has(r)){i.add(r);for(let s of t.get(r)??[]){if(!B(s.status,n))return!0;o.push(k(s.id))}}}return!1}function $i(e){let t=new Map,n=new Map,o=new Map,i=Ye(e);for(let r of e){t.set(k(r.id),r);let s=typeof r.parent=="string"?r.parent.trim():"";if(s.length>0){let a=k(s),c=n.get(a)??[];c.push(r),n.set(a,c)}for(let a of i.get(k(r.id))){let c=k(a),l=o.get(c)??[];l.push(r.id),o.set(c,l)}}return{itemsById:t,childrenByParent:n,blockedByReverse:o,blockerIdsByItem:i}}function ji(e,t,n,o){let{itemsById:i,childrenByParent:r,blockedByReverse:s,blockerIdsByItem:a}=$i(t),c=new Set([...Zn(n),...n.blocked_statuses]),l=new Set(t.filter(h=>!B(h.status,n)).map(h=>k(h.id))),d=[],u=[],m=[],p=[],f=[],y=0;for(let h of e){if(!c.has(ae(h.status,n)))continue;y+=1;let w=St(h,i,n,a).filter(b=>!b.resolved),v=(s.get(k(h.id))??[]).filter(b=>l.has(k(b))).sort((b,W)=>b.localeCompare(W)),E={item:h,open_blockers:w,unblocks:v};if(Pi(h.id,r,n)){m.push(E);continue}let C=n.blocked_statuses.has(ae(h.status,n));if(w.length===0&&!C){let b=xt(h.type,o);b==="human"?p.push(E):b==="gate"?f.push(E):d.push(E)}else u.push(E)}return{ready:d,blocked:u,containers:m,decisions:p,gates:f,active_count:y,container_count:m.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]="ae1c56b3-148d-502d-9450-e807fdfab4da")}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]="283dfa35-9a8e-524c-b6e2-d433d51215ca")}catch{}})();function O(){let e=M();for(let t of F()?.relationship_kinds??[])for(let n of t.definitions)e.register(n);return e}(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]="8b57e560-4ac4-53b6-9fb1-eebb1f30562a")}catch{}})();function we(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();return t.length>0?t:void 0}function qe(e){return[e.parent_id,e.child_id,e.source,e.kind,e.holder_id,e.target_id??""].join("\0")}function Bi(e,t){let n=new Set,o=[];for(let i of[...e].sort()){if(n.has(i))continue;n.add(i);let r=[{nodeId:i,children:[...t.get(i)??[]].sort(),nextChild:0}];for(;r.length>0;){let s=r.at(-1),a=s.children[s.nextChild];a===void 0?(o.push(s.nodeId),r.pop()):(s.nextChild+=1,n.has(a)||(n.add(a),r.push({nodeId:a,children:[...t.get(a)??[]].sort(),nextChild:0})))}}return o}function Ui(e,t){let n=[...e].sort(),o=Bi(n,t),i=new Set,r=Hi(n,t),s=[];for(let a of o.reverse()){if(i.has(a))continue;let c=Wi(a,r,i);(c.length>1||t.get(c[0])?.has(c[0]))&&s.push(c)}return s.sort((a,c)=>a.join("\0").localeCompare(c.join("\0")))}function Hi(e,t){let n=new Map(e.map(o=>[o,new Set]));for(let[o,i]of t)for(let r of i)n.get(r)?.add(o);return n}function Wi(e,t,n){let o=[],i=[e];for(n.add(e);i.length>0;){let r=i.pop();o.push(r);for(let s of[...t.get(r)].sort())n.has(s)||(n.add(s),i.push(s))}return o.sort()}function eo(e){let t=new Map;for(let n of e){let o=we(n?.id);o&&!t.has(o)&&t.set(o,n)}return t}function zi(e,t,n){let o=we(t.parent);if(!(!o||!n.has(o)))return{parent_id:o,child_id:e,source:"scalar_parent",kind:"parent",holder_id:e,child_cardinality:"one"}}function Ki(e,t,n,o){let i=we(t?.id),r=o.resolve(t?.kind);if(!i||!n.has(i)||!r?.hierarchy)return;let s=r.hierarchyDirection==="source_parent";return{parent_id:s?e:i,child_id:s?i:e,source:"dependency",kind:r.kind,holder_id:e,target_id:i,child_cardinality:s?r.incoming:r.outgoing}}function to(e,t){let n=new Map;for(let[o,i]of e){let r=zi(o,i,e);r&&n.set(qe(r),r);for(let s of i.dependencies??[]){let a=Ki(o,s,e,t);a&&n.set(qe(a),a)}}return[...n.values()].sort((o,i)=>qe(o).localeCompare(qe(i)))}function Ca(e,t=O()){return to(eo(e),t)}function Xi(e,t,n){let o=new Set(e.filter(i=>i.child_cardinality==="one").map(i=>i.child_id));return[...t].filter(([i,r])=>r.length>1&&o.has(i)).map(([i,r])=>({child_id:i,parent_ids:[...r],legacy_terminal:n.has(i)&&r.every(s=>n.has(s))})).sort((i,r)=>i.child_id.localeCompare(r.child_id))}function Gi(e,t,n){let o=new Map;for(let r of t){if(r.source!=="dependency")continue;let s=o.get(r.child_id)??new Set;s.add(r.parent_id),o.set(r.child_id,s)}let i=[];for(let[r,s]of e){let a=we(s.parent);if(!a||!e.has(a))continue;let c=[...o.get(r)??[]].filter(l=>l!==a).sort();c.length!==0&&i.push({child_id:r,scalar_parent_id:a,dependency_parent_ids:c,legacy_terminal:n.has(r)&&n.has(a)&&c.every(l=>n.has(l))})}return i.sort((r,s)=>r.child_id.localeCompare(s.child_id))}function Ve(e,t=o=>o==="closed"||o==="canceled",n=O()){let o=eo(e),i=to(o,n),r=Yi(i),s=new Set([...o].filter(([,c])=>t(c.status)).map(([c])=>c)),a=Ui([...o.keys()],new Map([...r.children_by_parent].map(([c,l])=>[c,new Set(l)]))).map(c=>({item_ids:c,legacy_terminal:c.every(l=>s.has(l))}));return{relations:i,cycles:a,cardinality_violations:Xi(i,r.parents_by_child,s),divergences:Gi(o,i,s)}}function Ta(e){return e.source==="scalar_parent"?`${e.parent_id} -> ${e.child_id} (scalar parent on ${e.holder_id})`:`${e.parent_id} -> ${e.child_id} (${e.kind} dependency on ${e.holder_id})`}function Yi(e){let t=new Map,n=new Map;for(let o of e){let i=t.get(o.child_id)??new Set;i.add(o.parent_id),t.set(o.child_id,i);let r=n.get(o.parent_id)??new Set;r.add(o.child_id),n.set(o.parent_id,r)}return{parents_by_child:new Map([...t].map(([o,i])=>[o,[...i].sort()])),children_by_parent:new Map([...n].map(([o,i])=>[o,[...i].sort()]))}}function Dt(e,t){let n=new Set(t);return e.every(o=>n.has(o))}function xa(e,t,n,o,i){let r=we(n);if(!r)return;let s=Ve(e,o,i),a=Ve(t,o,i),c=a.divergences.find(u=>!s.divergences.some(m=>m.child_id===u.child_id&&m.scalar_parent_id===u.scalar_parent_id&&Dt(u.dependency_parent_ids,m.dependency_parent_ids)));if(c){let u=[c.scalar_parent_id,...c.dependency_parent_ids].sort();throw new g(`Hierarchy mutation would assign ${c.child_id} to multiple parents: ${u.join(", ")}.`,_.CONFLICT,{code:"hierarchy_parent_divergence_created",source_id:r,target_id:c.child_id,verification_errors:u})}let l=a.cardinality_violations.find(u=>(u.child_id===r||u.parent_ids.includes(r))&&!s.cardinality_violations.some(m=>m.child_id===u.child_id&&Dt(u.parent_ids,m.parent_ids)));if(l)throw new g(`Hierarchy mutation would assign ${l.child_id} to multiple parents: ${l.parent_ids.join(", ")}.`,_.CONFLICT,{code:"hierarchy_cardinality_created",source_id:r,target_id:l.child_id,verification_errors:l.parent_ids});let d=a.cycles.find(u=>u.item_ids.includes(r)&&!s.cycles.some(m=>Dt(u.item_ids,m.item_ids)));if(d)throw new g(`Hierarchy mutation would create a cycle: ${d.item_ids.join(" -> ")}.`,_.CONFLICT,{code:"hierarchy_cycle_created",source_id:r,verification_errors:d.item_ids})}(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]="6c580b70-76eb-51db-8587-99b73dd20875")}catch{}})();var qi="global";function Na(e){let t=e?.trim();if(t)return S(t)?qi:t}function La(e,t,n){return Vi(e,t,n)}function Vi(e,t,n){let o=e.trim();return S(n)||P(o)?o:Y(o,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]="41f814be-ee87-5cae-b674-69c2e7f42655")}catch{}})();function te(e){if(typeof e!="string")return;let t=e.trim();if(!(!t||["none","null","n/a","na"].includes(t.toLowerCase())))return t}function be(e){let t=te(e);return t?.toLowerCase()==="no-active-blocker"?void 0:t}function Ee(e,t,n=!0){let o=te(e);return n&&(S(t)||o!==void 0&&P(o))}function Ot(e,t){return Ee(e,t)?`external\0${e}`:`local\0${e.toLowerCase()}`}function no(e,t,n,o){return Ee(e,t)?o.get(e):n.get(e.toLowerCase())}function ee(e,t){let n=e.toLowerCase(),o=t.toLowerCase();return n!==o?n<o?-1:1:e!==t?e<t?-1:1:0}function Ji(e){let t=new Map;for(let n of e.dependencies??[]){if(typeof n!="object"||n===null)continue;let o=n,i=te(o.id);if(!i)continue;let r=typeof o.kind=="string"?o.kind:"related",s=`${r}\0${Ot(i,o.source_kind)}`,a=t.get(s);a?a.count+=1:t.set(s,{target_id:i,kind:r,count:1})}return t}function Qi(e,t=n=>n==="closed"||n==="canceled"){let n=[];for(let o of e)if(!(typeof o?.id!="string"||o.id.trim().length===0))for(let i of Ji(o).values())i.count<2||n.push({holder_id:o.id.trim(),target_id:i.target_id,kind:i.kind,occurrences:i.count,holder_status:o.status,legacy_terminal:t(o.status)});return n.sort((o,i)=>{let r=ee(o.holder_id,i.holder_id);if(r!==0)return r;let s=ee(o.target_id,i.target_id);return s!==0?s:ee(o.kind,i.kind)})}function Zi(e,t,n,o,i){if(typeof n!="object"||n===null)return;let r=te(n.id);if(!r||Ot(r,n.source_kind)!==Ot(t))return;let s=i.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:r,dependency_kind:s.kind,holder_status:e.status,legacy_terminal:o(e.status)}}function er(e,t=o=>o==="closed"||o==="canceled",n=O()){let o=new Map;for(let i of e){if(typeof i?.id!="string"||i.id.trim().length===0)continue;let r=te(i.blocked_by);if(r)for(let s of i.dependencies??[]){let a=Zi(i,r,s,t,n);a&&o.set(`${a.holder_id.toLowerCase()}\0${a.target_id.toLowerCase()}\0${a.dependency_kind}`,a)}}return[...o.values()].sort((i,r)=>{let s=ee(i.holder_id,r.holder_id);if(s!==0)return s;let a=ee(i.target_id,r.target_id);return a!==0?a:ee(i.dependency_kind,r.dependency_kind)})}function Nt(e,t=n=>n==="closed"||n==="canceled"){let n=e.filter(c=>typeof c?.id=="string"&&c.id.trim().length>0),o=new Set(n.map(c=>c.id.trim().toLowerCase())),i=new Map,r=(c,l,d,u,m)=>{let p=te(l);if(!p||o.has(p.toLowerCase())||Ee(p,void 0,m))return;let f={holder_id:c.id.trim(),target_id:p,kind:d,source:u,holder_status:c.status,legacy_terminal:t(c.status),no_active_blocker_sentinel:p.toLowerCase()==="no-active-blocker"};i.set(`${f.holder_id}::${f.target_id}::${f.kind}::${f.source}`,f)};for(let c of n){r(c,c.parent,"parent","parent",!1),r(c,c.blocked_by,"blocked_by","blocked_by",!0);for(let l of c.dependencies??[]){if(typeof l!="object"||l===null)continue;let d=l;S(d.source_kind)||r(c,d.id,typeof d.kind=="string"?d.kind:"related","dependency",!0)}}let s=[...i.values()].sort((c,l)=>c.holder_id.localeCompare(l.holder_id)||c.target_id.localeCompare(l.target_id)||c.kind.localeCompare(l.kind)||c.source.localeCompare(l.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 tr(e){let t=new Map;for(let n of[...e.active,...e.legacy_terminal]){if(n.no_active_blocker_sentinel)continue;let o=n.target_id.trim(),i=o.toLowerCase();t.has(i)||t.set(i,o)}return[...t.values()].sort((n,o)=>n.localeCompare(o))}function nr(e){let t=new Map;for(let n of e){let o=be(n.blocked_by);o&&Ee(o)&&!t.has(o)&&t.set(o,o);for(let i of n.dependencies??[]){if(typeof i!="object"||i===null||!Ee(i.id,i.source_kind))continue;let r=be(i.id);r&&!t.has(r)&&t.set(r,r)}}return[...t.values()].sort((n,o)=>n.localeCompare(o))}var oo=new WeakMap;function Ba(e){return e.hierarchyIntegrity??oo.get(e)}function or(e,t=O()){let n={};for(let o of e)for(let i of o.dependencies??[]){if(typeof i!="object"||i===null)continue;let r=i.kind;if(typeof r!="string")continue;let s=r.trim().toLowerCase().replaceAll("-","_"),a=t.resolve(r);a&&s!==a.kind&&(n[s]=(n[s]??0)+1)}return Object.fromEntries(Object.entries(n).sort(([o],[i])=>o.localeCompare(i)))}function Lt(e,t,n){let o=n??O(),i=e.filter(f=>typeof f?.id=="string"&&f.id.trim().length>0),r=new Map(i.map(f=>[f.id.trim().toLowerCase(),f.id.trim()])),s=Nt(i,t),a=tr(s);for(let f of a)r.set(f.toLowerCase(),f);let c=nr(i),l=new Set(r.keys()),d=new Map;for(let f of c){let y=f;for(;l.has(y.toLowerCase());)y=`external:${y}`;d.set(f,y),l.add(y.toLowerCase())}let u=i.map(f=>{let y=be(f.parent),h=be(f.blocked_by),w=(f.dependencies??[]).flatMap(v=>{if(typeof v!="object"||v===null)return[];let E=v,C=be(E.id);return C?[{id:no(C,E.source_kind,r,d),kind:typeof E.kind=="string"?E.kind:"related"}]:[]});return{id:f.id.trim(),...y?{parent:r.get(y.toLowerCase())}:{},...h?{blocked_by:no(h,void 0,r,d)}:{},dependencies:w}}),m=Ve(i,t,o),p={graph:Kt.fromItems([...u,...a.map(f=>({id:f})),...c.map(f=>({id:d.get(f)}))],o),details:[...i.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:d.get(f),title:`[external] ${f}`,status:"external"}))],missingIdSet:new Set(a.map(f=>f.toLowerCase())),dangling:s,duplicateRows:Qi(i,t),orderingContradictions:er(i,t,o),legacyAliasCounts:or(i,o),hierarchyIntegrity:m};return oo.set(p,m),p}(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]="cf5a7b37-5b40-52b4-a19c-18b08de649c4")}catch{}})();function Mt(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function za(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;if(!Mt(t.requested_tokens)||t.basis!=="canonical_retry")return!1;switch(t.minimum_status){case"exact":return Mt(t.minimum_feasible_tokens)&&t.feasible_tokens===t.minimum_feasible_tokens&&t.reason===void 0;case"feasible_only":return t.minimum_feasible_tokens===null&&Mt(t.feasible_tokens)&&t.reason===void 0;case"unavailable":return t.minimum_feasible_tokens===null&&t.feasible_tokens===null&&["query_cost_limit","search_limit","output_constraints"].includes(t.reason);default:return!1}}var ir="PmCliError";function Ka(e){if(!sr(e)||e.code!=="item_already_exists"||e.exitCode!==_.CONFLICT)return!1;let t=e.context;return typeof t=="object"&&t!==null&&t.code==="item_already_exists"&&typeof t.id=="string"&&t.id.trim().length>0&&typeof t.path=="string"&&t.path.trim().length>0}function rr(e){if(!Number.isFinite(e))throw new TypeError("createPmCliExpectedError options.exitCode must be a finite number");let t=Math.trunc(e);if(t<=_.SUCCESS)throw new TypeError("createPmCliExpectedError options.exitCode must be a positive exit code");return t}function io(e,t={}){if(typeof e!="string"||e.trim().length===0)throw new TypeError("createPmCliExpectedError message must be a non-empty string");let n=new g(e,rr(t.exitCode??_.USAGE),t.context??{});return"cause"in t&&Object.defineProperty(n,"cause",{value:t.cause,enumerable:!1,configurable:!0,writable:!0}),n}function sr(e){if(!(e instanceof Error)||e.name!==ir)return!1;let t=e;return typeof t.exitCode=="number"&&Number.isFinite(t.exitCode)}import{createHash as ar}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]="e31ef0fb-e803-500b-b1e5-db9edfc880c4")}catch{}})();var cr=64,dr=8;function lr(e,t){let n=(e.dependencies??[]).map(o=>{if(typeof o!="object"||o===null)return"";let i=o;return`${typeof i.kind=="string"?i.kind:"related"}:${typeof i.id=="string"?i.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 so(e,t=o=>o==="closed"||o==="canceled",n=M()){let o=e.filter(r=>typeof r?.id=="string"&&r.id.trim().length>0).map(r=>lr(r,t)).sort(),i=n.list().map(r=>Zt(r)).sort();return ar("sha256").update(o.join("")).update("").update(i.join("")).digest("hex")}function ro(e,t,n){let o=t??n;if(!Number.isInteger(o)||o<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`);return o}var At=class{#e=new Map;#t;#n;constructor(t={}){this.#t=ro("maxResultsPerWorkspace",t.maxResultsPerWorkspace,cr),this.#n=ro("maxWorkspaces",t.maxWorkspaces,dr)}lookup(t,n,o){let i=this.#e.get(t),r=!0;(i===void 0||i.fingerprint!==n)&&(i={fingerprint:n,assembly:o(),results:new Map},r=!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,i);let s=i,a=this.#t;return{assembly:s.assembly,assemblyReused:r,fingerprint:n,memoize(c,l){let d=s.results.get(c);if(d!==void 0||s.results.has(c))return s.results.delete(c),s.results.set(c,d),{value:structuredClone(d),reused:!0};let u=l();return s.results.size>=a&&s.results.delete(s.results.keys().next().value),s.results.set(c,structuredClone(u)),{value:u,reused:!1}}}}clear(){this.#e.clear()}},ao=new At;function co(){return ao}function Va(){ao.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]="5a56b848-63e7-5499-bed3-ee2b2d65e200")}catch{}})();var Qe=1200,ur=["prerequisite","dependent","ancestor","descendant","provenance","related"],mr=new TextEncoder;function Ft(e,t,n){let o=e??t;if(!Number.isInteger(o)||o<1)throw new TypeError(`Relationship context ${n} must be positive`);return o}function Je(e){return Math.max(1,Math.ceil(mr.encode(JSON.stringify(e)).byteLength/4))}function Pt(e,t,n){let o=n.resolve(e.kind);if(o?.ordering){let i=(o.precedence??"source_before_target")==="source_before_target"?e.source:e.target;return t===i?"prerequisite":"dependent"}if(o?.hierarchy){let i=o.hierarchyDirection==="source_parent"?e.source:e.target;return t===i?"ancestor":"descendant"}return e.kind==="discovered_from"||e.kind==="incident_from"?"provenance":"related"}function fr(e,t,n,o){let i=e.filter(r=>r.source===t&&r.target===n||r.target===t&&r.source===n).map(r=>Pt(r,n,o));return[...new Set(i)].sort()}function pr(e){return ur.find(t=>e.includes(t))}function hr(e,t,n,o){let i=o.direction??"both",r=o.maxDepth??3;if(!Number.isInteger(r)||r<0)throw new TypeError("Relationship context maxDepth must be non-negative");let s=new Set([t]),a=[{id:t,distance:0}],c=[],l=0,d=!1;for(let u=0;u<a.length;u+=1){o.signal?.throwIfAborted();let m=a[u];if(m.distance>=r&&d)continue;let p=e.neighborEdges(m.id,{direction:i,kinds:o.kinds,signal:o.signal});if(l+=p.meta.inspectedEdges,m.distance>=r){p.value.some(f=>!s.has(f.id))&&(d=!0);continue}for(let{id:f,edge:y}of p.value){if(s.has(f))continue;s.add(f);let h={id:f,distance:m.distance+1,via:m.id,role:Pt(y,f,n)};c.push(h),a.push(h)}}return c.sort((u,m)=>u.distance-m.distance||u.id.localeCompare(m.id)),{rows:c,visitedNodes:a.length,inspectedEdges:l,depthTruncated:d}}function yr(e,t,n,o){let i={prerequisite:0,dependent:0,ancestor:0,descendant:0,provenance:0,related:0},r=e.neighborEdges(t,{direction:o.direction??"both",kinds:o.kinds,signal:o.signal}).value;for(let{id:s,edge:a}of r)i[Pt(a,s,n)]+=1;return{directEdges:i,directTotal:r.length,rootEdges:r.map(({edge:s})=>s)}}function gr(e){let t=[],n=e.initialTokens;for(let o of e.candidates){if(t.length>=e.nodeLimit)break;let i=o.distance===1?fr(e.rootEdges,e.rootId,o.id,e.registry):[],r={...e.details.get(o.id)??{id:o.id},distance:o.distance,role:i.length>0?pr(i):o.role,via:o.via,reasons:i.length>0?i:[`${o.role} via ${o.via} (depth ${o.distance})`]},s=Je(r);if(n+s>e.tokenBudget)break;t.push(r),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 _r(e){let t=e.options.kinds?new Set(e.options.kinds.map(r=>e.registry.require(r).kind)):void 0,n=e.graph.edges().filter(r=>{if(!e.included.has(r.source)||!e.included.has(r.target))return!1;if(t===void 0||t.has(r.kind))return!0;let s=e.registry.resolve(r.kind)?.inverse;return s!==void 0&&t.has(s)}),o=[],i=e.initialTokens;for(let r of n){if(o.length>=e.edgeLimit)break;let s=Je(r);if(i+s>e.tokenBudget)break;o.push(r),i+=s}return{edges:o,usedTokens:i,candidateCount:n.length}}function lo(e,t,n,o={}){if(!e.nodes().includes(t))throw new TypeError(`Relationship node not found: ${t}`);let i=Ft(o.nodeLimit,20,"nodeLimit"),r=Ft(o.edgeLimit,40,"edgeLimit"),s=Ft(o.tokenBudget,Qe,"tokenBudget"),a=o.registry??M(),c=new Map(n.map(J=>[J.id,J])),l=c.get(t)??{id:t},{evidence:d=[],...u}=l,m=[...d],p=hr(e,t,a,o),{rootEdges:f,...y}=yr(e,t,a,o),h=un("relationship-context",{rootId:t,direction:o.direction??"both",kinds:[...o.kinds??[]].sort(),maxDepth:o.maxDepth??3}),w=fn(p.rows,o.cursor,h,({id:J})=>J),v=p.rows.slice(w),E=Je(u)+Je(m);if(E>s)throw new TypeError("Relationship context tokenBudget cannot fit root and evidence");let C=gr({candidates:v,details:c,rootEdges:f,rootId:t,registry:a,nodeLimit:i,tokenBudget:s,initialTokens:E}),{nodes:b}=C,W=new Set([t,...b.map(({id:J})=>J)]),x=_r({graph:e,included:W,options:o,registry:a,edgeLimit:r,tokenBudget:s,initialTokens:C.usedTokens}),{edges:z,usedTokens:K}=x,N=w+b.length,L=N<p.rows.length,V=b.at(-1),tt=x.candidateCount-z.length,Wt=p.depthTruncated||L||tt>0,So={rootId:t,...u.status===void 0?{}:{rootStatus:u.status},...y,discoveredNodes:p.rows.length,returnedNodes:b.length,returnedEdges:z.length,omittedNodes:p.rows.length-N,omittedEdges:tt,evidenceCount:m.length,hasMore:L};return{root:u,summary:So,nodes:b,edges:z,evidence:m,meta:{exact:!0,truncated:Wt,completeness:Wt?"truncated":"complete",nodeLimit:i,edgeLimit:r,tokenBudget:s,usedTokens:K,visitedNodes:p.visitedNodes,inspectedEdges:p.inspectedEdges,omittedNodes:p.rows.length-N,omittedEdges:tt,...L&&V?{nextCursor:mn(h,V.id,N-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]="e23f9ca6-9fa6-566b-9bfb-7cbe6d449a59")}catch{}})();function wr(e,t){let n=e.trim().toLowerCase();if(n.length===0)return;let o=Math.floor(n.length/3);return t.map(i=>({candidate:i,distance:Ie(n,i.toLowerCase(),o)??Number.POSITIVE_INFINITY})).filter(({distance:i})=>Number.isFinite(i)).sort((i,r)=>i.distance!==r.distance?i.distance-r.distance:i.candidate.localeCompare(r.candidate))[0]?.candidate}function uo(e){return["pm",...e].map(t=>/^[A-Za-z0-9_./:@=-]+$/u.test(t)?t:JSON.stringify(t)).join(" ")}function ic(e){let t=e.command_path.trim().replaceAll(/\s+/gu," "),n=e.token.trim(),o=n.length===0?"<empty>":n,i=[...new Set(e.allowed.map(m=>m.trim()))].filter(Boolean).sort((m,p)=>m.localeCompare(p));if(t.length===0||o.length===0||i.length===0)throw new TypeError("Unknown-subcommand contracts require a path, token, and allowed set");let r=t.split(" "),s=e.trailing_args??[],a=e.display_name??`pm ${t}`,c=e.token_kind??"subcommand",l=e.retry_command?void 0:wr(o,i),d=uo([...r,o,...s]),u=e.retry_command??(l?uo([...r,l,...s]):void 0);return new g(`Unknown ${a} ${c} "${o}". Allowed: ${i.join(", ")}${e.message_suffix??""}`,e.exit_code??_.USAGE,{code:"unknown_subcommand",reason:"unknown_positional_token",value:o,examples:[...u?[u]:[],...e.examples??[],`pm ${t} --help`],nextSteps:u?[`Retry with the suggested command: ${u}`]:["Choose one value from recovery.allowed_values."],recovery:{attempted_command:d,allowed_values:i,suggested_retry:u,fallback_candidates:e.fallback_candidates}})}import br from"node:fs/promises";import Er 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]="1d746e4d-ff6c-54ec-a94f-4ec4cb8f77b5")}catch{}})();function vr(e){return[...new Set(e.filter(t=>t.trim().length>0))].sort((t,n)=>t.localeCompare(n))}function Ir(e,t){return new g(`Missing history stream for ${e}. ${t} requires history streams when settings.history.missing_stream is strict_error.`,_.NOT_FOUND)}async function kr(e,t){return await Xt(Er.dirname(e)),await(await br.open(e,"a")).close(),G({path:e,scope:"project",op:`${t}:history:auto_create`})}async function $t(e){return Cr({pmRoot:e.pmRoot,settings:e.settings,itemIds:[e.itemId],commandLabel:e.commandLabel})}async function Cr(e){let t=vr(e.itemIds),n=[],o=[];for(let i of t){let r=A(e.pmRoot,i);if(!await ie(r)){if(e.settings.history.missing_stream==="strict_error")throw Ir(i,e.commandLabel);o.push(...await kr(r,e.commandLabel)),o.push(`history_stream_auto_created:${i}`),n.push(i)}}return{auto_created_ids:n,warnings:o}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="5db05e2f-4742-526b-b1c8-b97ff302b40e")}catch{}})();function ve(e,t=!1){let n=e[0];if(n?.op!=="history_compact_baseline")return 0;let o=n.context?.history_compaction,i=typeof o=="object"&&o!==null&&"version_offset"in o?o.version_offset:void 0;if(typeof i=="number"&&Number.isSafeInteger(i)&&i>=0&&Number.isSafeInteger(i+e.length))return i;if(t)return null;throw new g("This compacted stream has no trustworthy version offset; numeric history addresses are unavailable.",_.USAGE,{code:"history_version_mapping_unavailable",required:"Use a retained timestamp or recover the pre-compaction stream from version control.",nextSteps:["Run pm history <id> --full to inspect the retained timestamps and checkpoint evidence."]})}(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]="ddc5bb8f-83bc-5121-a628-a501e7ed5a73")}catch{}})();function Tr(e,t){let n=-1;return e.forEach((o,i)=>{let r=Date.parse(o.ts);if(!Number.isFinite(r))throw new g(`History for this item contains invalid timestamp at entry ${i+1}.`,_.GENERIC_FAILURE);r<=t&&(n=i)}),n}function xr(e,t){let n=e[0]?.ts??null,o=e.at(-1)?.ts??null,i={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:n,last_timestamp:o}};return o!==null&&(i.examples=[o],t!==null&&(i.examples.unshift(String(t+1),String(t+e.length)),i.valid_range.first_version=t+1,i.valid_range.last_version=t+e.length)),{guidance:i,lastTimestamp:o}}function Rr(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 o=t;if(typeof o.index=="number"&&Number.isInteger(o.index)&&o.index>=0&&(n.patchIndex=o.index),typeof o.operation=="object"&&o.operation!==null){let i=o.operation;Object.assign(n,Object.fromEntries(["op","path","from"].flatMap(r=>{let s=i[r];return typeof s=="string"?[[r,s]]:[]})))}if(n.patchIndex!==void 0){let i=e[n.patchIndex];i&&(n.op??=i.op,n.path??=i.path,n.from??=i.from)}return n}function mo(e,t,n={}){let o=e.trim(),i=n.errorSubject??"history",r=i==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=xr(t,ve(t,!0));if(!o)throw new g(`Missing ${i} target. Use a timestamp or version number.`,_.USAGE,s);if(/^\d+$/.test(o)){let d=ve(t),u=Number(o);if(u>=1&&u<=d)throw new g(`History version ${u} was pruned by compaction.`,_.USAGE,{...s,code:"history_version_pruned"});if(!Number.isSafeInteger(u)||u<1||u>d+t.length)throw new g(`${r} version must be between ${d+1} and ${d+t.length} for this item.`,_.USAGE,s);return{kind:"version",raw:o,historyIndex:u-d-1}}let c=Date.parse(o);if(!Number.isFinite(c))throw new g(`Invalid ${i} target "${e}". Use a positive version number or ISO timestamp.`,_.USAGE,s);let l=Tr(t,c);if(l<0||n.allowFutureTimestamp!==!0&&c>Date.parse(a))throw new g(i==="restore"?`No history entries exist at or before timestamp ${o}.`:`No history entry exists at timestamp ${o}.`,_.USAGE,s);return{kind:"timestamp",raw:o,historyIndex:l}}function jt(e,t,n,o){let i=ft(e,t);if(i.ok)return i.document;let r=Rr(t,i.error),s=[`history_op=${o}`,r.patchIndex===void 0?null:`patch_index=${r.patchIndex}`,r.op?`op=${r.op}`:null,r.path?`path=${r.path}`:null,r.from?`from=${r.from}`:null].filter(a=>a!==null);throw new g(`Failed to apply history patch at entry ${n} (${s.join(", ")}). ${r.reason??String(i.error)}`,_.GENERIC_FAILURE)}function fo(e,t){let n=e[0];if(n&&n.op!=="create"&&n.op!=="history_compact_baseline"){let s=ft(de,n.patch);if(!s.ok||typeof s.document.metadata.id!="string")throw new g("History starts without a reconstructable item baseline.",_.GENERIC_FAILURE,{code:"history_baseline_unavailable",required:"Recover the original create entry or a complete checkpoint from version control.",nextSteps:["Run pm history <id> --full to inspect the missing baseline."]})}let o=e.slice(0,t+1),i=Oe([...o]),r=structuredClone(de);for(let s=0;s<=t;s+=1){let a=e[s];if(!a)throw new g(`History target entry ${s+1} does not exist.`,_.USAGE);r=jt(r,a.patch,s+1,a.op)}if(!i.ok)throw new g(`History cannot be replayed: ${i.errors.join(", ")}.`,_.GENERIC_FAILURE,{code:"history_replay_invalid",verification_errors:i.errors,required:"Inspect the history integrity findings before attempting recovery.",nextSteps:["Run pm history <id> --verify --full."]});return r}function Ec(e,t){if(Object.keys(e.metadata).length>0){if(typeof e.metadata.id!="string"||!Array.isArray(e.metadata.tags))throw new g("History has no complete item baseline for this target.",_.GENERIC_FAILURE,{code:"history_baseline_unavailable",required:"Recover the original create entry or a complete checkpoint from version control.",nextSteps:["Run pm history <id> --full to inspect the first recorded state."]});return e}throw new g(`History target ${t.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,_.USAGE)}import ne from"node:fs/promises";import{statSync as Sr}from"node:fs";(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]="be69f1e8-4543-5cf5-abb0-9d38ca1d0cc6")}catch{}})();function Dr(e,t){let n=-1,o=structuredClone(de);for(let[a,c]of e.entries()){if(o=jt(o,c.patch,a+1,c.op),o.metadata.id!==void 0&&o.metadata.id!==t)throw new g(`History belongs to item ${String(o.metadata.id)}, expected ${t}.`,_.GENERIC_FAILURE,{code:"history_replay_invalid",required:"Recover the correct history stream for this item before attempting restoration."});o.metadata.id===t&&Array.isArray(o.metadata.tags)&&(n=a)}let i=ve(e,!0),r=n<0||i===null?null:i+n+1,s=r===null?void 0:String(r);if(n>=0&&s===void 0){let a=e[n].ts;mo(a,e).historyIndex===n&&(s=a)}return{version:r,target:s}}async function po(e,t,n){let o=new Set([Y(t,n),le(t)]);for(let i of o){let r=A(e,i);if(!Sr(r,{throwIfNoEntry:!1})?.isFile())continue;let s=await vn(r,i),a=-1;if(s.forEach((p,f)=>{p.op==="delete"&&(a=f)}),a<0)continue;let c=fo(s,s.length-1);if(Object.keys(c.metadata).length!==0)continue;let{version:l,target:d}=Dr(s,i),u=d===void 0?["history",i,"--verify"]:["get",i,"--at",d],m=j(u);return new g(`Item ${i} was deleted at ${s[a].ts}; its history is retained.`,_.NOT_FOUND,{code:"item_deleted",required:"Read a retained materialized version, then restore it if the item should exist again.",item_id:i,tombstone:{deleted:!0,deleted_at:s[a].ts,recoverable:d!==void 0,last_materialized_version:l},nextSteps:[m,...d===void 0?["Recover the pre-compaction history from version control."]:[j(["restore",i,d])]],recovery:{suggested_retry:m,suggested_retry_args:u}})}}import{AsyncLocalStorage as Or}from"node:async_hooks";import Nr 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]="53df109f-bd64-5879-96a6-39f70334910e")}catch{}})();var Lr=new Or;function ho(e,t){for(let n of Lr.getStore()??[])n.pmRoot===Nr.resolve(e)&&n.id===t.metadata.id&&n.validate(t)}import Bt from"node:path";import{isUtf8 as Mr}from"node:buffer";(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]="018adb6c-4e3c-58d5-b636-04dbf4307d7a")}catch{}})();async function Ar(e){try{return await ne.access(e),!0}catch{return!1}}function Fr(e,t){e&&(e.includes(t)||e.push(t))}function yo(e){return e??ke(F())}function Pr(e){return e==="toon"?["toon","json_markdown"]:e==="json_markdown"?["json_markdown","toon"]:["toon","json_markdown"]}async function Ze(e,t,n="pm-",o,i=X){let r=t.trim(),s=r.startsWith("#")?r.slice(1):r;if(s.length===0)return null;let a=Y(t,n),c=le(t),l=[...new Set([s,a,c])].filter(m=>m.length>0),d=Object.entries(i),u=Pr(o);for(let m of l){let p=new Map;for(let[f]of d)for(let y of u){let h=nt(e,f,m,y,i);await Ar(h)&&p.set(h,p.get(h)??{id:m,type:f,itemPath:h,item_format:y})}if(p.size>1){let f=[...p.keys()].map(y=>Bt.relative(e,y).split(Bt.sep).join("/")).sort();throw new g(`Item ${m} has ambiguous identity across ${f.join(", ")}. Preserve both documents and inspect pm ops validate --check-storage-integrity before resolving the collision.`,_.CONFLICT,{code:"item_identity_ambiguous",item_id:m,paths:f})}for(let f of p.values())return f}return null}async function et(e,t={}){let n=await $r(e,t);if(n.error!==null)throw n.error;return{raw:n.raw,document:n.document}}async function $r(e,t={}){let n=await ne.readFile(e.itemPath);if(!Mr(n))throw new g("Item contains invalid UTF-8; preserve a binary backup before recovering it.",_.CONFLICT,{code:"item_document_encoding_invalid",item_id:e.id,item_path:e.itemPath,byte_length:n.length,empty:!1});let o=n.toString("utf8");await Re({path:e.itemPath,scope:"project"});let i;try{i=De(o,{format:e.item_format,requireSupportedFormat:!0,schema:t.schema,extensionFieldNames:yo(t.extensionFieldNames),onWarning:r=>Fr(t.warnings,r)})}catch(r){if(r instanceof g&&r.code==="item_format_version_unsupported")throw new g(`Item ${e.id}: ${r.message}`,r.exitCode,{...r.context,item_id:e.id,item_path:e.itemPath});if(r instanceof g&&r.code==="item_document_invalid")return{raw:o,document:null,error:new g(`Cannot read ${e.id} at ${e.itemPath}${n.length===0?" (zero-length file)":""}: ${r.message}`,r.exitCode,{...r.context,item_id:e.id,item_path:e.itemPath,byte_length:n.length,empty:n.length===0,nextSteps:[`Run pm history ${e.id} --full, then pm restore ${e.id} <version> to recover a recorded state.`]})};throw r}return{raw:o,document:i,error:null}}async function jr(e,t,n=X,o,i){await Ne(e);let r=await qn(e,t,n,o,i);return Me(r.length),r.map(s=>s.metadata)}async function go(e,t,n=X,o,i){await Ne(e);let r=await Vn(e,t,n,o,i);return Me(r.length),r.map(s=>s.metadata)}async function ud(e,t,n=X,o,i,r={}){await Ne(e);let s=await Xe(e,t,n,o,i,{includeBody:!0,forceSourceScan:r.forceSourceScan});return Me(s.length),s.map(a=>({...a.metadata,body:a.body}))}function _o(e){return{async get(t){let n=await Ze(e.pmRoot,t,e.settings.id_prefix,e.settings.item_format,e.typeToFolder);if(!n)return null;let{document:o}=await et(n,{schema:e.settings.schema});return{item:o.metadata,body:o.body}},list:()=>jr(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema)}}async function Br(e,t){let n=new Set(Object.values(t)),o=[];return await Promise.all([...n].map(async i=>{try{let r=await ne.readdir(Bt.join(e,i));for(let s of r)for(let a of Te)if(s.toLowerCase().endsWith(a)){o.push(s.slice(0,-a.length));break}}catch{}})),o}async function Ur(e,t,n,o){let i=Y(t,n),r=await Br(e,o);if(r.length===0)return[];let s=Math.max(3,Math.floor(i.length/2));return r.map(a=>({id:a,distance:Ie(a,i,s)})).filter(a=>a.distance!==null).sort((a,c)=>a.distance-c.distance).slice(0,3).map(a=>a.id)}async function Hr(e,t,n,o){let i=await po(e,t,n);if(i)return i;let r=await Ur(e,t,n,o),s=["Confirm the active --path/PM_PATH scope, then retry with a valid id."];return r.length>0&&s.unshift(`Did you mean one of: ${r.join(", ")}?`),new g(`Item ${t} not found`,_.NOT_FOUND,{nextSteps:s})}function Wr(e,t){return e==="claim"||t===!0&&(e==="comment_add"||e==="comment_edit"||e==="comment_delete"||e==="note_add"||e==="learning_add"||e==="release"||e==="update"||e==="update_ownership_bypass"||e==="update_audit")}async function wo(e){let t=e.typeToFolder??Ce(e.settings,F()).type_to_folder,n=await Ze(e.pmRoot,e.id,e.settings.id_prefix,e.settings.item_format,t);if(!n)throw await Hr(e.pmRoot,e.id,e.settings.id_prefix,t);let o=await Se(e.pmRoot,n.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 i=[],{raw:r,document:s}=await et(n,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames,warnings:i}),a=s.metadata.assignee?.trim(),c=s.metadata.claim_principal?.trim()||a,l=wn(e.author),d=Cn(e.settings);if(a&&c!==l&&!e.force&&!Wr(e.op,e.bypassAssigneeConflict)){if(d.ownership_enforcement==="strict")throw new g(`Item ${n.id} is assigned to ${a}. Use --force to override.`,_.CONFLICT);d.ownership_enforcement==="warn"&&i.push(`ownership_warning:assignee_conflict:${n.id}:${a}`)}return{typeToFolder:t,located:n,originalRaw:r,document:s,warnings:i,releaseLock:o}}catch(i){throw await o(),i}}function zr(e,t,n){if(!e.handled||typeof e.result!="object"||e.result===null)return{effectiveTargetItemPath:t,effectiveSerializedAfter:n,skipItemWrite:!1};let o=e.result;return{effectiveTargetItemPath:typeof o.target_item_path=="string"&&o.target_item_path.trim().length>0?o.target_item_path:t,effectiveSerializedAfter:typeof o.contents=="string"?o.contents:n,skipItemWrite:o.skip_write===!0}}async function Kr(e){if(!e.skipItemWrite){if(e.effectiveTargetItemPath!==e.originalItemPath){await $(e.originalItemPath,e.originalRaw),await ne.rm(e.effectiveTargetItemPath,{force:!0});return}await $(e.originalItemPath,e.originalRaw)}}async function bo(e){_n(e.op);let t=await wo({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:e.op,author:e.author,force:e.force,bypassAssigneeConflict:e.bypassAssigneeConflict,extensionFieldNames:e.extensionFieldNames,typeToFolder:e.typeToFolder}),{typeToFolder:n,located:o,originalRaw:i,document:r,warnings:s,releaseLock:a}=t;try{ho(e.pmRoot,r);let c=ce(r,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),l=ce(structuredClone(r),{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),d=await e.mutate(l);if(e.skipNoop===!0&&d.changedFields.length===0)return{item:c.metadata,body:c.body,changedFields:[],warnings:[...s,...d.warnings??[]]};let u=e.resolveHistoryContext?.(),m=Math.max(lt(c.metadata),lt(l.metadata));xn(Qt(e.pmRoot),m),m>bn(l.metadata)&&(l.metadata.pm_format_version=m,d.changedFields.push("pm_format_version")),l.metadata.updated_at=dt();let p=ce(l,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),f=await pt({pmRoot:e.pmRoot,settings:e.settings,operation:e.op,author:e.author,before:c,after:p});await rt({pm_root:e.pmRoot,operation:e.op,before:c,after:p,changed_fields:d.changedFields,sdk:_o({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:n})});let y=await $t({pmRoot:e.pmRoot,settings:e.settings,itemId:o.id,commandLabel:e.op}),h="toon",w=En(p,{format:h,schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),v=nt(e.pmRoot,p.metadata.type,o.id,h,n),E=A(e.pmRoot,o.id),C=await at("item_store_write",{op:e.op,pm_root:e.pmRoot,item_id:o.id,source_item_path:o.itemPath,target_item_path:v,history_path:E,item_format:h,before:c,after:p,contents:w}),{effectiveTargetItemPath:b,effectiveSerializedAfter:W,skipItemWrite:x}=zr(C,v,w),z=await kt(e.pmRoot,e.author),K=[];try{x||await $(b,W),!x&&b!==o.itemPath&&await ne.rm(o.itemPath);let L=ut({nowIso:p.metadata.updated_at,author:e.author,op:e.op,before:c,after:p,message:e.message,context:f.decisions.length===0?u:{...u,workflow_policies:f.decisions}});try{await mt(E,L)}catch(V){throw await Kr({skipItemWrite:x,effectiveTargetItemPath:b,originalItemPath:o.itemPath,originalRaw:i}),V}x||(K=await Ct({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:n,schema:e.settings.schema,itemPath:b,previousItemPath:o.itemPath,document:p}))}finally{await z()}let N=[...await G({path:b,scope:"project",op:e.op,item_id:p.metadata.id,item_type:p.metadata.type,before:c,after:p,changed_fields:d.changedFields}),...await G({path:E,scope:"project",op:`${e.op}:history`,item_id:p.metadata.id,item_type:p.metadata.type,before:c,after:p,changed_fields:d.changedFields})];return it({id:p.metadata.id,op:e.op,item_type:p.metadata.type,previous_status:c.metadata.status,status:p.metadata.status,previous:xe(c.metadata,d.changedFields),current:xe(p.metadata,d.changedFields),changed_fields:d.changedFields}),{item:p.metadata,body:p.body,changedFields:d.changedFields,warnings:[...s,...d.warnings??[],...f.warnings,...y.warnings,...C.warnings,...K,...N]}}finally{await a()}}async function md(e){return bo(e)}async function fd(e){return bo(e)}async function pd(e){let t=await wo({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:"delete",author:e.author,force:e.force}),{located:n,originalRaw:o,document:i,warnings:r,releaseLock:s}=t;try{let a=yo(void 0),c=ce(i,{schema:e.settings.schema,extensionFieldNames:a}),l=await pt({pmRoot:e.pmRoot,settings:e.settings,operation:"delete",author:e.author,before:c,after:null,dryRun:e.dryRun});await rt({pm_root:e.pmRoot,operation:"delete",before:c,after:null,changed_fields:["deleted"],sdk:_o({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:t.typeToFolder})});let d=await $t({pmRoot:e.pmRoot,settings:e.settings,itemId:n.id,commandLabel:"delete"}),u=dt(),m=zt,p=ut({nowIso:u,author:e.author,op:"delete",before:c,after:m,message:e.message,context:l.decisions.length===0?void 0:{workflow_policies:l.decisions}}),f=A(e.pmRoot,n.id),y=await at("item_store_delete",{op:"delete",pm_root:e.pmRoot,item_id:n.id,item_path:n.itemPath,history_path:f,before:c}),h=n.itemPath,w=!1;if(y.handled&&typeof y.result=="object"&&y.result!==null){let b=y.result;typeof b.item_path=="string"&&b.item_path.trim().length>0&&(h=b.item_path),b.skip_delete===!0&&(w=!0)}if(e.dryRun===!0)return{item:c.metadata,changedFields:["deleted"],targetPath:h,warnings:[...r,...l.warnings,...d.warnings,...y.warnings]};let v=await kt(e.pmRoot,e.author),E=[];try{w||await ne.rm(h);try{await mt(f,p)}catch(b){throw w||await $(h,o),b}w||(E=await Ct({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:t.typeToFolder,schema:e.settings.schema,itemPath:h,document:null}))}finally{await v()}let C=[...await G({path:h,scope:"project",op:"delete",item_id:c.metadata.id,item_type:c.metadata.type,before:c,after:m,changed_fields:["deleted"]}),...await G({path:f,scope:"project",op:"delete:history",item_id:c.metadata.id,item_type:c.metadata.type,before:c,after:m,changed_fields:["deleted"]})];return it({id:c.metadata.id,op:"delete",item_type:c.metadata.type,previous_status:c.metadata.status,previous:xe(c.metadata,Object.keys(c.metadata)),changed_fields:["deleted"]}),{item:c.metadata,changedFields:["deleted"],warnings:[...r,...l.warnings,...d.warnings,...y.warnings,...E,...C]}}finally{await s()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e574946e-ad2d-5465-a021-205300ab3596")}catch{}})();var Xr=["tree","graph","context"],Gr=["none","repeated"],Yr=["outgoing","incoming","both"],qr=32,Vr=200,Jr=400,Qr=16e3;function Zr(e){let t=e?.trim().toLowerCase()??"tree";if(Xr.includes(t))return t;throw new g(`Invalid --format value "${e}". Use "tree", "graph", or "context".`,_.USAGE)}function oe(e,t){if(e===void 0)return;let n=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(n)||n<1)throw new g(`Invalid --${t} value "${e}". Use a positive integer.`,_.USAGE);return n}function vo(e){if(e===void 0)return;let t=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(t)||t<0)throw new g(`Invalid --max-depth value "${e}". Use a non-negative integer.`,_.USAGE);return t}function es(e){let t=e?.trim().toLowerCase()??"none";if(Gr.includes(t))return t;throw new g(`Invalid --collapse value "${e}". Use "none" or "repeated".`,_.USAGE)}function ts(e){let t=e?.trim().toLowerCase()??"both";if(Yr.includes(t))return t;throw new g(`Invalid --direction value "${e}". Use "outgoing", "incoming", or "both".`,_.USAGE)}function ns(e,t=M()){if(e===void 0)return;let n=(Array.isArray(e)?e:[e]).flatMap(i=>i.split(",")).map(i=>i.trim()).filter(i=>i.length>0);if(n.length===0)return;let o=new Set;for(let i of n){let r=t.resolve(i);if(!r){let s=t.list().map(a=>a.kind).join(", ");throw new g(`Invalid --kind value "${i}". Registered kinds: ${s}.`,_.USAGE)}o.add(r.kind)}return[...o].sort()}function os(e){if(!e||e.length===0)return[];let t=e.map(({id:o,kind:i})=>({id:o.trim(),kind:i.trim().toLowerCase()})).sort((o,i)=>{let r=o.kind.localeCompare(i.kind);return r!==0?r:o.id.localeCompare(i.id)}),n=new Map;for(let o of t){let i=`${o.kind.toLowerCase()}::${o.id.toLowerCase()}`;n.has(i)||n.set(i,{id:o.id,kind:o.kind})}return[...n.values()]}function is(e){return{id:e.id,title:e.title,type:e.type,status:e.status,dependencies:os(e.dependencies)}}function rs(e){return se(new TextEncoder().encode(JSON.stringify({...e,dependencies:void 0})).byteLength)}function ss(e,t,n,o,i,r,s,a,c){for(let l of t.dependencies){let d=Math.max(1,Math.ceil(JSON.stringify({from:e.id,to:l.id,kind:l.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+d>=a.tokenBudget){e.truncated=!0,a.reasons.add("token_budget");break}a.edges+=1,a.estimatedTokens+=d,e.dependencies.push(Io(l.id,n,o,i,r,s,a,c+1,l.kind))}}function as(e,t,n,o,i,r,s,a){return s.estimatedTokens>=s.tokenBudget&&t?.dependencies.length?(e.truncated=!0,s.reasons.add("token_budget"),!0):!t||e.cycle?!0:o!==void 0&&a>=o?(t.dependencies.length>0&&(e.truncated=!0,s.reasons.add("max_depth")),!0):i==="repeated"&&r.has(n)?(e.collapsed=!0,!0):!1}function Io(e,t,n,o,i,r,s,a=0,c){let l=e.trim().toLowerCase(),d=t.get(l),u={id:d?.id??e,title:d?.title,type:d?.type,status:d?.status,via:c,missing:!d,cycle:n.has(l),dependencies:[]};if(s.nodes+=1,s.estimatedTokens+=rs(u),as(u,d,l,o,i,r,s,a))return u;i==="repeated"&&r.add(l);let m=new Set(n);return m.add(l),ss(u,d,t,m,o,i,r,s,a),u}function Eo(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 cs(e){let t=new Map,n=new Map,o=[e];for(;o.length>0;){let a=o.pop();t.set(a.id,Eo(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,Eo(t.get(c.id),{id:c.id,title:c.title,type:c.type,status:c.status,missing:c.missing}));let l=c.via??"related",d=`${a.id}::${c.id}::${l}`;n.has(d)||n.set(d,{from:a.id,to:c.id,kind:l}),c.cycle||o.push(c)}}let i=[...t.values()].sort((a,c)=>a.id.localeCompare(c.id)),r=[...n.values()].sort((a,c)=>{let l=a.from.localeCompare(c.from);if(l!==0)return l;let d=a.to.localeCompare(c.to);return d!==0?d:a.kind.localeCompare(c.kind)}),s=i.filter(a=>a.missing).map(a=>a.id);return{root_id:e.id,nodes:i,edges:r,missing_ids:s}}function ko(e,t,n){let o=new Set,i=new Set,r=new Set,s=new Set,a=[{id:e,depth:0}],c=0;for(;c<a.length;){let l=a[c++],d=l.id.trim().toLowerCase();o.add(d);let u=t.get(d);if(!u){r.add(d);continue}if(!(n!==void 0&&l.depth>=n)&&!s.has(d)){s.add(d);for(let m of u.dependencies)i.add(`${d}::${m.id.trim().toLowerCase()}::${m.kind}`),a.push({id:m.id,depth:l.depth+1})}}return{node_count:o.size,edge_count:i.size,edge_basis:"deduplicated_directed",missing_count:r.size}}function ds(e,t=M()){let n=vo(e.maxDepth),o=oe(e.nodeLimit,"node-limit"),i=oe(e.edgeLimit,"edge-limit"),r=oe(e.tokenBudget,"token-budget"),s=ns(e.kind,t);return{direction:ts(e.direction),...s===void 0?{}:{kinds:s},...n===void 0?{}:{maxDepth:n},...o===void 0?{}:{nodeLimit:o},...i===void 0?{}:{edgeLimit:i},...r===void 0?{}:{tokenBudget:r},...e.cursor?.trim()?{cursor:e.cursor.trim()}:{}}}function ls(e,t,n,o){return lo(e.graph,t,e.details.map(i=>i.id===t&&o.length>0?{...i,evidence:o}:i),n)}function Ut(e,t,n,o){for(let i of n.slice(0,o)){let r=i?.trim();r&&e.push(`${t}:${r}`)}}async function us(e,t,n,o){let i=await Ze(e,t,n.id_prefix,n.item_format,o);if(!i)return[];let{document:r}=await et(i,{schema:n.schema}),s=r.metadata,a=s.files??[],c=s.tests??[],l=s.docs??[],d=[["files",a.length],["tests",c.length],["docs",l.length],["comments",(s.comments??[]).length],["notes",(s.notes??[]).length],["learnings",(s.learnings??[]).length]];if(d.every(([,m])=>m===0))return[];let u=[`linked:${d.map(([m,p])=>`${m}=${p}`).join(",")}`];return Ut(u,"file",a.map(m=>m.path),3),Ut(u,"test",c.map(m=>m.command??m.path),2),Ut(u,"doc",l.map(m=>m.path),2),u}function ms(e){let{canonicalId:t,context:n,missingCount:o,missingReferences:i,referenceLimit:r,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:o,missing_scope:"traversal",missing_reference_count:i.length,...s?{}:{missing_references:i.slice(0,r),context:n}}}function fs(e){let{row:t,missingReachableSet:n,packetIds:o,filteredKinds:i,registry:r}=e;if(t.no_active_blocker_sentinel||!n.has(t.target_id.trim().toLowerCase())||!o.has(t.holder_id))return!1;if(i===void 0)return!0;let s=r.resolve(t.kind);return s!==void 0&&(i.has(s.kind)||s.inverse!==void 0&&i.has(s.inverse))}function Co(e,t){let n=sn(),o=t.commandOptionsOverride??(n?.command==="deps"?n.options:t.commandOptions);return hn("deps",{...o,...t.global,resolvedOutputFormat:t.format},e)}function Ht(e,t){let n=Co(e,t),o=i=>gn(i,t.format,t.global.lean===!0);return o(t.global.tokenAccounting===!0?yn(n,o):n)}function To(e,t,n){let o;for(;;){let i=se(new TextEncoder().encode(Ht(e,t)).byteLength);if(i===o)return i;n(i),o=i}}function xo(e){return e instanceof TypeError&&e.message.startsWith("Relationship context tokenBudget cannot fit ")}function Ro(e){let{assembly:t,canonicalId:n,contextOptions:o,rootEvidence:i,summaryOnly:r,rendering:s,missingCount:a,missingReferences:c}=e,l=o.edgeLimit??40,d=Math.min(l,c.length),u=o.tokenBudget,m;for(;;){let p=ls(t,n,{...o,...u===void 0?{}:{tokenBudget:u}},i);m??=p.meta.tokenBudget,u??=m;let f=ms({canonicalId:n,context:p,missingCount:a,missingReferences:c,referenceLimit:d,summaryOnly:r});if(r){if(se(new TextEncoder().encode(Ht(H(f,!0,s.legacyAliasCounts),s)).byteLength)>m)throw new TypeError("Relationship context tokenBudget cannot fit the rendered summary");return f}if(p.meta.tokenBudget=m,p.meta.usedTokens=To(H(f,!1,s.legacyAliasCounts),s,w=>{p.meta.usedTokens=w}),p.meta.usedTokens<=m)return f;if(d>0){d-=1;continue}let y=u,h=y*m/p.meta.usedTokens;u=Math.min(y-1,Math.max(1,Math.floor(h*.9)))}}function ps(e,t){let n=e.contextOptions,o={...e.rendering.global,outputFormat:e.rendering.format},i=["--pm-path",e.pmRoot,"item","deps",e.canonicalId,"--format","context","--output-format",e.rendering.format,"--token-budget"],r=i.length;i.push(String(t));let s=new Set(["--pm-path","--format","--output-format","--token-budget"]),a={format:"context",tokenBudget:t,kind:n.kinds},c=[["--max-depth","maxDepth",n.maxDepth],["--node-limit","nodeLimit",n.nodeLimit],["--edge-limit","edgeLimit",n.edgeLimit],["--direction","direction",n.direction],["--cursor","cursor",n.cursor],["--output-include","outputInclude",o.outputInclude],["--output-limit","outputLimit",o.outputLimit],["--output-budget","outputBudget",o.outputBudget],["--output-session","outputSession",o.outputSession],["--output-cursor","outputCursor",o.outputCursor]];for(let[u,m,p]of c)p!==void 0&&(i.push(u,String(p)),s.add(u),a[m]=p);for(let u of n.kinds??[])i.push("--kind",u),s.add("--kind");let l=[["--summary","summary",e.summaryOnly],["--full","full",e.rendering.commandOptions.full],["--json","json",o.json],["--lean","lean",o.lean],["--output-row-contract","outputRowContract",o.outputRowContract],["--token-accounting","tokenAccounting",o.tokenAccounting],["--no-extensions","noExtensions",o.noExtensions],["--no-pager","noPager",o.noPager]];for(let[u,m,p]of l)p===!0&&(i.push(u),s.add(u),a[m]=!0);let d=cn.find(u=>u.command==="deps");return Reflect.set(a,an,{canonical_include_modes:[],cli_invocation_observed:!0,explicit_legacy_aliases:Object.values(d.dimensions).flatMap(u=>u.legacy_aliases.flatMap(m=>s.has(m.flag)?[m.flag]:[]))}),dn("deps",a),ct(a.summary===!0,a.full===!0,"--summary"),o.outputInclude=a.outputInclude,{args:i,budgetIndex:r,summaryOnly:a.summary===!0,rendering:{...e.rendering,global:o,commandOptionsOverride:a}}}function hs(e,t,n){let o={...t.rendering,commandOptionsOverride:{...t.rendering.commandOptionsOverride,tokenBudget:n}},i;try{i=Ro({...e,contextOptions:{...e.contextOptions,tokenBudget:n},summaryOnly:t.summaryOnly,rootEvidence:t.summaryOnly?[]:e.rootEvidence,rendering:o})}catch(s){if(!xo(s))throw s;return"native_floor"}let r=Co(H(i,t.summaryOnly,o.legacyAliasCounts),o);return ln(r)?"output_constraints":"fits"}async function ys(e,t){let n=e.contextOptions.tokenBudget??Qe,o=ps(e,n),i=(o.summaryOnly?1:1+Math.min(e.contextOptions.edgeLimit??40,e.missingReferences.length))*(e.assembly.details.reduce((u,m)=>u+m.id.length+m.title.length+m.status.length+(m.type?.length??0),e.assembly.graph.edges().length+e.missingReferences.length)+(o.summaryOnly?[]:e.rootEvidence).reduce((u,m)=>u+m.length,0)),{findContextBudgetRecovery:r}=await import("./context-budget-recovery-5MKOCGY5.js"),s=r({requested:n,initialBudget:Qe,workUnits:i,probe:u=>hs(e,o,u)}),a=["--pm-path",e.pmRoot,"item","deps",e.canonicalId,"--format","tree","--summary"],c=j(a),l=s.feasible_tokens===null?a:[...o.args];s.feasible_tokens!==null&&(l[o.budgetIndex]=String(s.feasible_tokens));let d=j(l);return io("Relationship context tokenBudget cannot fit the required rendered packet",{exitCode:_.USAGE,cause:t,context:{code:"invalid_argument_value",field:"tokenBudget",value:String(n),required:s.feasible_tokens===null?"Inspect the compact summary and review the output constraints.":"Retry the preserved context query with --token-budget "+s.feasible_tokens+".",why:"Budget advice is verified against the current query. A minimum is reported only after every smaller positive budget is checked.",examples:[d,c],nextSteps:[d],recovery:{recovery_mode:"compact",suggested_flags:["--token-budget"],token_budget:s,suggested_retry_args:l,suggested_retry:d,next_best_command:c,fallback_candidates:[{source:"relationship_summary",command:c,reason:"Inspect bounded counts separately from context rows."}]}}})}async function gs(e){let{pmRoot:t,assembly:n,canonicalId:o,options:i,rootEvidence:r,summaryOnly:s,rendering:a}=e,c=ds(i,n.graph.registry()),l=n.graph.closure(o,{direction:c.direction,...c.kinds===void 0?{}:{kinds:c.kinds},maxDepth:c.maxDepth??3}),d=l.value.filter(w=>n.missingIdSet.has(w.toLowerCase())),u=new Set(d.map(w=>w.toLowerCase())),m=n.graph.registry(),p=c.kinds?new Set(c.kinds.map(w=>m.require(w).kind)):void 0,f=new Set([o,...l.value]),y=[...n.dangling.active,...n.dangling.legacy_terminal].filter(w=>fs({row:w,missingReachableSet:u,packetIds:f,filteredKinds:p,registry:m})),h={pmRoot:t,assembly:n,canonicalId:o,contextOptions:c,rootEvidence:r,summaryOnly:s,rendering:a,missingCount:d.length,missingReferences:y};try{return Ro(h)}catch(w){throw xo(w)?await ys(h,w):w}}function _s(e){let t=[e],n;for(;t.length>0;){let o=t.pop();o.dependencies.length>0&&(n=o,t.push(...o.dependencies))}return n?(n.dependencies.pop(),n.truncated=!0,!0):!1}function ws(e,t,n,o,i,r,s){let a=i??qr,c=oe(n.nodeLimit,"node-limit")??Vr,l=oe(n.edgeLimit,"edge-limit")??Jr,d=oe(n.tokenBudget,"token-budget")??Qr,u={nodeLimit:c,edgeLimit:l,tokenBudget:d,nodes:0,edges:0,estimatedTokens:0,reasons:new Set},m=Io(e,o,new Set,a,t==="graph"?"repeated":r,new Set,u),p=ko(e,o,void 0),f;for(;;){let y=cs(m),h=u.reasons.size===0?void 0:{reasons:[...u.reasons].sort(),limits:{max_depth:a,node_limit:c,edge_limit:l,token_budget:d},estimated_tokens:0,total_node_count:p.node_count,total_edge_count:p.edge_count,omitted_node_count:Math.max(0,p.node_count-y.nodes.length),omitted_edge_count:Math.max(0,p.edge_count-y.edges.length)},w={id:e,format:t,node_count:y.nodes.length,edge_count:y.edges.length,edge_basis:"deduplicated_directed",missing_count:y.missing_ids.length,...h?{truncation:h}:{}};if(f=t==="tree"?{...w,tree:m}:{...w,graph:y},(f.truncation===void 0?se(new TextEncoder().encode(Ht(H(f,!1,s.legacyAliasCounts),s)).byteLength):To(H(f,!1,s.legacyAliasCounts),s,v=>{f.truncation.estimated_tokens=v}))<=d)return f;if(!_s(m))return u.reasons.add("token_budget"),f;u.reasons.add("token_budget")}}function H(e,t,n={}){let o={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:[o],included_field_groups:t?[]:[o.name]}}}async function jd(e,t,n){let o=Jt(process.cwd(),n.path);await Rn(o);let i=Zr(t.format),r=vo(t.maxDepth),s=es(t.collapse);ct(t.summary===!0,t.full===!0,"--summary");let a=t.summary===!0,c=await Tn(o),l=Ce(c,F()),d=await go(o,c.item_format,l.type_to_folder,void 0,c.schema),u=rn(c.schema),m=new Map(d.map(h=>[h.id.trim().toLowerCase(),is(h)])),p=Nt(d,h=>B(h,u));for(let h of[...p.active,...p.legacy_terminal]){let w=m.get(h.holder_id.trim().toLowerCase()),v=h.kind.trim().toLowerCase();w&&!w.dependencies.some(E=>E.id.trim().toLowerCase()===h.target_id.trim().toLowerCase()&&E.kind===v)&&w.dependencies.push({id:h.target_id,kind:v})}if(!m.has(e.trim().toLowerCase()))throw new g(`Item ${e} not found`,_.NOT_FOUND);let f=n.outputFormat??(n.json===!0||n.json===void 0&&n.defaultOutputFormat==="json"?"json":"toon");if(i==="context"){let h=m.get(e.trim().toLowerCase()).id,w=a?[]:await us(o,h,c,l.type_to_folder),v=b=>B(b,u),E=O(),C=co().lookup(o,so(d,v,E),()=>Lt(d,v,E));return H(await gs({pmRoot:o,assembly:C.assembly,canonicalId:h,options:t,rootEvidence:w,summaryOnly:a,rendering:{format:f,global:n,commandOptions:t,legacyAliasCounts:C.assembly.legacyAliasCounts}}),a,C.assembly.legacyAliasCounts)}let y=Object.fromEntries(Object.entries(Lt(d,h=>B(h,u)).legacyAliasCounts));return a?H({id:e,format:i,...ko(e,m,r)},!0,y):H(ws(e,i,t,m,r,s,{format:f,global:n,commandOptions:t,legacyAliasCounts:y}),!1,y)}export{ic as a,$t as b,Cr as c,Dn as d,le as e,Y as f,Cs as g,ve as h,mo as i,jt as j,fo as k,Ec as l,Ao as m,Po as n,$o as o,jo as p,Bo as q,pt as r,Hs as s,Vs as t,Js as u,Qs as v,zn as w,ti as x,kt as y,ua as z,Ct as A,Xe as B,Ze as C,et as D,$r as E,jr as F,go as G,ud as H,_o as I,Hr as J,md as K,fd as L,pd as M,xt as N,Li as O,_e as P,Ye as Q,Qn as R,Mi as S,Ai as T,Fi as U,ji as V,Na as W,La as X,Vi as Y,O as Z,Ca as _,Ve as $,Ta as aa,Yi as ba,xa as ca,be as da,Qi as ea,er as fa,Nt as ga,tr as ha,Ba as ia,Lt as ja,za as ka,ir as la,Ka as ma,io as na,sr as oa,so as pa,At as qa,co as ra,Va as sa,Qe as ta,lo as ua,oe as va,vo as wa,ts as xa,ns as ya,jd as za};
|
|
91
|
+
//# sourceMappingURL=chunk-JEXZEIAX.js.map
|