@unbrained/pm-cli 2026.11.1 → 2026.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +32 -0
  3. package/CONTRIBUTING.md +1 -1
  4. package/dist/cli/error-guidance.d.ts +9 -0
  5. package/dist/cli/error-guidance.js +4 -3
  6. package/dist/cli/main.js +1 -1
  7. package/dist/cli/migration-gates.js +1 -1
  8. package/dist/cli/runtime/field-route-retry.d.ts +15 -0
  9. package/dist/cli/runtime/field-route-retry.js +2 -0
  10. package/dist/cli-bundle/bundle-manifest.json +1 -1
  11. package/dist/cli-bundle/chunks/{chunk-2GK2IVU5.js → chunk-2CBHQXYJ.js} +3 -3
  12. package/dist/cli-bundle/chunks/chunk-32BCU6HN.js +115 -0
  13. package/dist/cli-bundle/chunks/{chunk-MTRIGD7M.js → chunk-5IPXDZKU.js} +42 -42
  14. package/dist/cli-bundle/chunks/{chunk-O56O7NIE.js → chunk-5JZMF4M5.js} +2 -2
  15. package/dist/cli-bundle/chunks/{chunk-TYERATXH.js → chunk-7ZEFHFAU.js} +2 -2
  16. package/dist/cli-bundle/chunks/chunk-B6UTLYLM.js +3 -0
  17. package/dist/cli-bundle/chunks/{chunk-N45IXPCA.js → chunk-DEJHTFEF.js} +2 -2
  18. package/dist/cli-bundle/chunks/{chunk-ICT6E4IW.js → chunk-HBKD5HZB.js} +2 -2
  19. package/dist/cli-bundle/chunks/{chunk-6PKWKVS6.js → chunk-JPKIUWLG.js} +2 -2
  20. package/dist/cli-bundle/chunks/{chunk-WFBYKDB2.js → chunk-L6LCLC37.js} +2 -2
  21. package/dist/cli-bundle/chunks/{chunk-Y7CKVU56.js → chunk-MQJXZX3Q.js} +2 -2
  22. package/dist/cli-bundle/chunks/chunk-NR4KABHC.js +31 -0
  23. package/dist/cli-bundle/chunks/{chunk-WX25MU4N.js → chunk-O4ZLEN4T.js} +3 -3
  24. package/dist/cli-bundle/chunks/{chunk-F3ECOBKA.js → chunk-PWD5RY2D.js} +2 -2
  25. package/dist/cli-bundle/chunks/{chunk-SBVX5CMV.js → chunk-RSAN2YUU.js} +2 -2
  26. package/dist/cli-bundle/chunks/{chunk-NILQ2ZMV.js → chunk-TZ3D3DPQ.js} +2 -2
  27. package/dist/cli-bundle/chunks/{chunk-MRUA2Z43.js → chunk-UJMQP2HP.js} +2 -2
  28. package/dist/cli-bundle/chunks/{chunk-TMPO4CTZ.js → chunk-UYNMKUGA.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-UUN3WNMQ.js → chunk-XRMYA4R7.js} +3 -3
  30. package/dist/cli-bundle/chunks/{chunk-UEEG47TU.js → chunk-Y7H55PCY.js} +2 -2
  31. package/dist/cli-bundle/chunks/{chunk-5KW4WUAK.js → chunk-YWS4XV4I.js} +4 -4
  32. package/dist/cli-bundle/chunks/chunk-ZOAJNPBL.js +129 -0
  33. package/dist/cli-bundle/chunks/{indexed-receipt-blobs-KGMJVFH2.js → indexed-receipt-blobs-I6RQGD6Y.js} +2 -2
  34. package/dist/cli-bundle/chunks/item-transaction-ZHLJTBD7.js +2 -0
  35. package/dist/cli-bundle/chunks/{mutation-admission-BOOCJPCU.js → mutation-admission-ZQMRMGIB.js} +2 -2
  36. package/dist/cli-bundle/chunks/{register-list-query-23OX36Q3.js → register-list-query-I6AZA3IX.js} +2 -2
  37. package/dist/cli-bundle/chunks/{register-mutation-JPJ5YNDX.js → register-mutation-3DAXCLXR.js} +2 -2
  38. package/dist/cli-bundle/chunks/{register-operations-IGR7ERY5.js → register-operations-G3QGGQ5Z.js} +2 -2
  39. package/dist/cli-bundle/chunks/{register-setup-BMIFKZZP.js → register-setup-LDXHMNOT.js} +2 -2
  40. package/dist/cli-bundle/chunks/{settlement-hook-YWSWFOZY.js → settlement-hook-JHXLUBEN.js} +2 -2
  41. package/dist/cli-bundle/chunks/{stage-ON7CYYPM.js → stage-7H36OTDJ.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/chunk-3XGKBVJ3.js +2 -0
  43. package/dist/cli-bundle/focused-chunks/{chunk-WX2RVS2Y.js → chunk-4HY6EGPB.js} +2 -2
  44. package/dist/cli-bundle/focused-chunks/{chunk-3NYWMUX3.js → chunk-D4XQOMG4.js} +3 -3
  45. package/dist/cli-bundle/focused-chunks/{chunk-UQIBGLDR.js → chunk-F3X6UWMI.js} +2 -2
  46. package/dist/cli-bundle/focused-chunks/{chunk-JLXGRDTG.js → chunk-G6ERMFJ5.js} +3 -3
  47. package/dist/cli-bundle/focused-chunks/{chunk-VFQAZLKO.js → chunk-HJ27QLZV.js} +2 -2
  48. package/dist/cli-bundle/focused-chunks/{chunk-5TWS5KOM.js → chunk-HOXIIZEO.js} +2 -2
  49. package/dist/cli-bundle/focused-chunks/chunk-HUXZCPWT.js +26 -0
  50. package/dist/cli-bundle/focused-chunks/{chunk-LVA76N27.js → chunk-I5FODKYB.js} +2 -2
  51. package/dist/cli-bundle/focused-chunks/{chunk-DFUTCKUF.js → chunk-IDAYTYNN.js} +2 -2
  52. package/dist/cli-bundle/focused-chunks/{chunk-2Y77HWIX.js → chunk-IKXJ57XA.js} +2 -2
  53. package/dist/cli-bundle/focused-chunks/{chunk-RPUDOJVB.js → chunk-LKN2WGGB.js} +2 -2
  54. package/dist/cli-bundle/focused-chunks/chunk-MOY6KZGJ.js +44 -0
  55. package/dist/cli-bundle/focused-chunks/{chunk-PAT6QF63.js → chunk-PWUTFKSI.js} +2 -2
  56. package/dist/cli-bundle/focused-chunks/chunk-PZRB7IXH.js +91 -0
  57. package/dist/cli-bundle/focused-chunks/chunk-RY4QEMAE.js +2 -0
  58. package/dist/cli-bundle/focused-chunks/{chunk-6GMYW42K.js → chunk-TYHDZUL4.js} +2 -2
  59. package/dist/cli-bundle/focused-chunks/chunk-WSYPVBKS.js +80 -0
  60. package/dist/cli-bundle/focused-chunks/{chunk-Z7GIVH6B.js → chunk-WXLG7HZ5.js} +2 -2
  61. package/dist/cli-bundle/focused-chunks/{chunk-5WCQFH6D.js → chunk-WZDFCVLX.js} +2 -2
  62. package/dist/cli-bundle/focused-chunks/{chunk-VS2ZFPXD.js → chunk-YGO3FWA2.js} +2 -2
  63. package/dist/cli-bundle/focused-chunks/chunk-YVLAP3BL.js +23 -0
  64. package/dist/cli-bundle/focused-chunks/{chunk-6OKPYCLU.js → chunk-ZQRCVRGS.js} +54 -54
  65. package/dist/cli-bundle/focused-chunks/chunk-ZYXQACPB.js +2 -0
  66. package/dist/cli-bundle/focused-chunks/{indexed-receipt-blobs-KHWT44EK.js → indexed-receipt-blobs-7XGVHYAO.js} +2 -2
  67. package/dist/cli-bundle/focused-chunks/{item-transaction-7VLPA2SU.js → item-transaction-PZ2FQ6B2.js} +2 -2
  68. package/dist/cli-bundle/focused-chunks/{mutation-admission-2DH27R5Y.js → mutation-admission-XOOK6XFH.js} +2 -2
  69. package/dist/cli-bundle/focused-chunks/{settlement-hook-SJV52ZTV.js → settlement-hook-H56537UV.js} +2 -2
  70. package/dist/cli-bundle/focused-chunks/{stage-FYOBWQA7.js → stage-4SQHVI3O.js} +2 -2
  71. package/dist/cli-bundle/main.js +30 -29
  72. package/dist/cli-bundle/sdk-authoring.js +1 -1
  73. package/dist/cli-bundle/sdk-contracts.js +1 -1
  74. package/dist/cli-bundle/sdk-core.js +1 -1
  75. package/dist/cli-bundle/sdk-governance.js +1 -1
  76. package/dist/cli-bundle/sdk-graph.js +1 -1
  77. package/dist/cli-bundle/sdk-merge.js +57 -57
  78. package/dist/cli-bundle/sdk-query.js +1 -1
  79. package/dist/cli-bundle/sdk-runtime.js +1 -1
  80. package/dist/cli-bundle/sdk-testing.js +1 -1
  81. package/dist/cli-bundle/sdk.js +11 -11
  82. package/dist/core/extensions/extension-hook-runtime.js +1 -1
  83. package/dist/core/extensions/extension-types.d.ts +5 -0
  84. package/dist/core/extensions/extension-types.js +1 -1
  85. package/dist/core/extensions/item-fields.d.ts +1 -1
  86. package/dist/core/extensions/item-fields.js +1 -1
  87. package/dist/core/item/parse.js +2 -2
  88. package/dist/core/lock/lock-confinement.d.ts +55 -0
  89. package/dist/core/lock/lock-confinement.js +2 -0
  90. package/dist/core/lock/lock-gc.js +1 -1
  91. package/dist/core/lock/lock.js +2 -2
  92. package/dist/core/schema/runtime-field-values.d.ts +30 -0
  93. package/dist/core/schema/runtime-field-values.js +1 -1
  94. package/dist/core/sentry/helpers.js +1 -1
  95. package/dist/core/sentry/instrument.js +1 -1
  96. package/dist/core/shared/error-details.d.ts +98 -0
  97. package/dist/core/shared/error-details.js +2 -0
  98. package/dist/core/shared/errors.d.ts +43 -0
  99. package/dist/core/shared/errors.js +1 -1
  100. package/dist/core/store/settings-sections.d.ts +61 -0
  101. package/dist/core/store/settings-sections.js +3 -0
  102. package/dist/core/store/settings-validator.d.ts +4 -0
  103. package/dist/core/store/settings-validator.js +1 -1
  104. package/dist/core/store/settings.d.ts +29 -2
  105. package/dist/core/store/settings.js +4 -3
  106. package/dist/core/telemetry/consent.js +2 -2
  107. package/dist/core/telemetry/runtime.js +2 -2
  108. package/dist/core/test/background-runs.js +3 -3
  109. package/dist/mcp/server.js +2 -2
  110. package/dist/sdk/config.js +1 -1
  111. package/dist/sdk/errors.d.ts +6 -2
  112. package/dist/sdk/errors.js +1 -1
  113. package/dist/sdk/extension-command-context.js +2 -2
  114. package/dist/sdk/generated/error-code-catalog-rows.d.ts +39 -0
  115. package/dist/sdk/generated/error-code-catalog-rows.js +2 -0
  116. package/dist/sdk/generated/generated-error-code-catalog-part-1.d.ts +3 -3
  117. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  118. package/dist/sdk/generated/generated-error-code-catalog-part-2.d.ts +3 -3
  119. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  120. package/dist/sdk/generated-error-code-catalog.js +1 -1
  121. package/dist/sdk/index.d.ts +1 -1
  122. package/dist/sdk/index.js +1 -1
  123. package/dist/sdk/lifecycle/core-field-recovery.d.ts +26 -0
  124. package/dist/sdk/lifecycle/core-field-recovery.js +1 -1
  125. package/dist/sdk/lifecycle/create.js +1 -1
  126. package/dist/sdk/lifecycle/update.js +2 -2
  127. package/dist/sdk/mcp/discovery.js +1 -1
  128. package/dist/sdk/public-surface.json +1 -1
  129. package/dist/sdk/runtime-primitives.d.ts +2 -1
  130. package/dist/sdk/runtime-primitives.js +1 -1
  131. package/dist/sdk/runtime.d.ts +1 -1
  132. package/dist/sdk/runtime.js +1 -1
  133. package/dist/sdk/test/entry.d.ts +5 -0
  134. package/dist/sdk/test/entry.js +2 -2
  135. package/dist/sdk/test/execution.d.ts +1 -2
  136. package/dist/sdk/test/execution.js +2 -2
  137. package/dist/sdk/test/linked-command-detection.d.ts +10 -0
  138. package/dist/sdk/test/linked-command-detection.js +1 -1
  139. package/dist/sdk/test/update.d.ts +2 -0
  140. package/dist/sdk/test/update.js +1 -1
  141. package/docs/AGENT_EVIDENCE_CONSISTENCY.md +10 -0
  142. package/docs/CONFIGURATION.md +9 -0
  143. package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +9 -6
  144. package/docs/EXTENSIONS.md +2 -2
  145. package/docs/LINKED_TEST_EDITS.md +38 -5
  146. package/docs/RELEASING.md +22 -2
  147. package/docs/SDK.md +103 -1
  148. package/docs/SDK_CONFIGURATION_SAFETY.md +55 -0
  149. package/docs/TESTING.md +2 -1
  150. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +15 -3
  151. package/marketplace.json +1 -1
  152. package/package.json +9 -3
  153. package/packages/pm-beads/package.json +1 -1
  154. package/packages/pm-calendar/package.json +1 -1
  155. package/packages/pm-command-kit/package.json +1 -1
  156. package/packages/pm-digital-twin/package.json +1 -1
  157. package/packages/pm-governance-audit/package.json +1 -1
  158. package/packages/pm-guide-shell/package.json +1 -1
  159. package/packages/pm-kanban/package.json +1 -1
  160. package/packages/pm-lifecycle-hooks/package.json +1 -1
  161. package/packages/pm-linked-test-adapters/package.json +1 -1
  162. package/packages/pm-search-advanced/package.json +1 -1
  163. package/packages/pm-templates/package.json +1 -1
  164. package/packages/pm-todos/package.json +1 -1
  165. package/packages/pm-vcs/package.json +1 -1
  166. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  167. package/plugins/pm-claude/package.json +1 -1
  168. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  169. package/plugins/pm-codex/package.json +1 -1
  170. package/plugins/pm-codex/plugin.json +1 -1
  171. package/runtime-dependencies.json +1 -1
  172. package/dist/cli-bundle/chunks/chunk-5WVE7XBS.js +0 -114
  173. package/dist/cli-bundle/chunks/chunk-E74BORFX.js +0 -128
  174. package/dist/cli-bundle/chunks/chunk-MP2DQJH2.js +0 -3
  175. package/dist/cli-bundle/chunks/chunk-O6TFUV6M.js +0 -31
  176. package/dist/cli-bundle/chunks/item-transaction-Q5S5YLEJ.js +0 -2
  177. package/dist/cli-bundle/focused-chunks/chunk-3Z53POXU.js +0 -2
  178. package/dist/cli-bundle/focused-chunks/chunk-7WJDRZOR.js +0 -22
  179. package/dist/cli-bundle/focused-chunks/chunk-AL7SOFUL.js +0 -2
  180. package/dist/cli-bundle/focused-chunks/chunk-CIQ6YWCW.js +0 -26
  181. package/dist/cli-bundle/focused-chunks/chunk-GE755ODZ.js +0 -2
  182. package/dist/cli-bundle/focused-chunks/chunk-JCR32IAO.js +0 -91
  183. package/dist/cli-bundle/focused-chunks/chunk-M22TI7LP.js +0 -79
  184. package/dist/cli-bundle/focused-chunks/chunk-SXZM4PSS.js +0 -44
@@ -1,2 +1,2 @@
1
- import{F as Ke,G as Ue,J as je,U as ze,f as Me}from"./chunk-JCR32IAO.js";import{$a as $e,eb as Pe,s as $,t as D}from"./chunk-M22TI7LP.js";import{j as Ee}from"./chunk-VFQAZLKO.js";import{b as T,c as C}from"./chunk-AK2CI2GI.js";import{Ce as Ne,Fa as Ie,Fd as Se,Gd as Le,Hc as ne,Kd as Oe,Nc as X,R,T as H,W as _e,_c as M,ka as ke,kd as xe,pd as Re,qa as be,sa as ve,sc as W,tc as Ce,ud as Te,wa as we,xe as Ae,yd as De,ye as Be}from"./chunk-CIQ6YWCW.js";import{A as v,z as I}from"./chunk-JLXGRDTG.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a319e7d9-e248-573b-bf1f-35217ce49fd0")}catch{}})();function re(e,t){return(t===void 0?void 0:ve(e,t))?.execution_role??ke[e.trim().toLowerCase()]??"agent"}var ie="blocked_by",Fe="blocks",ft=Object.freeze([ie,Fe]),oe="no-active-blocker";function _(e){return e.trim().toLowerCase()}function q(e,t){return t?`external:${e}`:`local:${_(e)}`}function P(e){let t=new Map,o=typeof e.blocked_by=="string"?e.blocked_by.trim():"";if(o.length>0&&_(o)!==oe){let n=T(o);t.set(q(o,n),n?o:_(o))}for(let n of e.dependencies??[]){let r=typeof n.id=="string"?n.id.trim():"";if(H(n.kind)===ie&&r.length>0&&_(r)!==oe){let i=T(r)||C(n.source_kind);t.set(q(r,i),i?r:_(r))}}return[...t.values()].sort((n,r)=>n.localeCompare(r))}function Y(e){let t=new Map;for(let o of e){let n=_(o.id);n.length!==0&&t.set(n,new Set(P(o)))}for(let o of e){let n=_(o.id);if(n.length!==0)for(let r of o.dependencies??[]){let i=H(r.kind)===Fe&&typeof r.id=="string"?_(r.id):"";if(i.length===0||i===oe)continue;let s=t.get(i)??new Set;s.add(n),t.set(i,s)}}return new Map([...t].map(([o,n])=>[o,[...n].sort((r,i)=>r.localeCompare(i))]))}function Ge(e,t){let o=_(e.id);return o.length>0?Y(t).get(o)??P(e):P(e)}function se(e,t,o,n){let r=e,i=typeof r.id=="string"?n?.get(_(r.id))??Ge(r,[...t.values()]):P(e),s=new Set((e.dependencies??[]).filter(d=>H(d.kind)===ie&&C(d.source_kind)&&typeof d.id=="string"&&d.id.trim().length>0).map(d=>q(d.id.trim(),!0)));return i.map(d=>{if(T(d)||s.has(q(d,!0)))return{id:d,title:null,status:null,resolved:!1,external:!0,...typeof e.updated_at=="string"?{blocked_since:e.updated_at}:{},resolver:null};let c=t.get(_(d));return c?{id:d,title:c.title,status:c.status,resolved:D(c.status,o)}:{id:d,title:null,status:null,resolved:!1}})}function mt(e,t,o){return se(e,t,o)}function gt(e,t){let o=new Map(e.map(s=>[_(s.id),s])),n=Y(e),r=new Set([...He(t),...t.blocked_statuses]),i=new Set;for(let s of e){let d=$(s.status,t);r.has(d)&&(t.blocked_statuses.has(d)||se(s,o,t,n).some(c=>!c.resolved))&&i.add(_(s.id))}return i}function ht(e,t,o={},n){let r=[...e.ready,...e.decisions,...e.gates];o.includeContainers===!0&&r.push(...e.containers.filter(s=>s.open_blockers.length===0&&!t.blocked_statuses.has($(s.item.status,t))));let i={ready:[],decisions:[],gates:[]};for(let s of r){let d=re(s.item.type,n);d==="human"&&o.includeDecisions!==!0?i.decisions.push(s):d==="gate"&&o.includeGates!==!0?i.gates.push(s):i.ready.push(s)}return i}function He(e){return e.active_statuses.size>0?e.active_statuses:new Set([e.open_status])}function yt(e,t,o){let n=[_(e)],r=new Set;for(;n.length>0;){let i=n.pop();if(!r.has(i)){r.add(i);for(let s of t.get(i)??[]){if(!D(s.status,o))return!0;n.push(_(s.id))}}}return!1}function _t(e){let t=new Map,o=new Map,n=new Map,r=Y(e);for(let i of e){t.set(_(i.id),i);let s=typeof i.parent=="string"?i.parent.trim():"";if(s.length>0){let d=_(s),c=o.get(d)??[];c.push(i),o.set(d,c)}for(let d of r.get(_(i.id))){let c=_(d),l=n.get(c)??[];l.push(i.id),n.set(c,l)}}return{itemsById:t,childrenByParent:o,blockedByReverse:n,blockerIdsByItem:r}}function kt(e,t,o,n){let{itemsById:r,childrenByParent:i,blockedByReverse:s,blockerIdsByItem:d}=_t(t),c=new Set([...He(o),...o.blocked_statuses]),l=new Set(t.filter(m=>!D(m.status,o)).map(m=>_(m.id))),u=[],a=[],p=[],g=[],f=[],y=0;for(let m of e){if(!c.has($(m.status,o)))continue;y+=1;let h=se(m,r,o,d).filter(w=>!w.resolved),b=(s.get(_(m.id))??[]).filter(w=>l.has(_(w))).sort((w,L)=>w.localeCompare(L)),k={item:m,open_blockers:h,unblocks:b};if(yt(m.id,i,o)){p.push(k);continue}let E=o.blocked_statuses.has($(m.status,o));if(h.length===0&&!E){let w=re(m.type,n);w==="human"?g.push(k):w==="gate"?f.push(k):u.push(k)}else a.push(k)}return{ready:u,blocked:a,containers:p,decisions:g,gates:f,active_count:y,container_count:p.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 x(){let e=R();for(let t of W()?.relationship_kinds??[])for(let o of t.definitions)e.register(o);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 K(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();return t.length>0?t:void 0}function V(e){return[e.parent_id,e.child_id,e.source,e.kind,e.holder_id,e.target_id??""].join("\0")}function bt(e,t){let o=new Set,n=[];for(let r of[...e].sort()){if(o.has(r))continue;o.add(r);let i=[{nodeId:r,children:[...t.get(r)??[]].sort(),nextChild:0}];for(;i.length>0;){let s=i.at(-1),d=s.children[s.nextChild];d===void 0?(n.push(s.nodeId),i.pop()):(s.nextChild+=1,o.has(d)||(o.add(d),i.push({nodeId:d,children:[...t.get(d)??[]].sort(),nextChild:0})))}}return n}function vt(e,t){let o=[...e].sort(),n=bt(o,t),r=new Set,i=wt(o,t),s=[];for(let d of n.reverse()){if(r.has(d))continue;let c=It(d,i,r);(c.length>1||t.get(c[0])?.has(c[0]))&&s.push(c)}return s.sort((d,c)=>d.join("\0").localeCompare(c.join("\0")))}function wt(e,t){let o=new Map(e.map(n=>[n,new Set]));for(let[n,r]of t)for(let i of r)o.get(i)?.add(n);return o}function It(e,t,o){let n=[],r=[e];for(o.add(e);r.length>0;){let i=r.pop();n.push(i);for(let s of[...t.get(i)].sort())o.has(s)||(o.add(s),r.push(s))}return n.sort()}function We(e){let t=new Map;for(let o of e){let n=K(o?.id);n&&!t.has(n)&&t.set(n,o)}return t}function Et(e,t,o){let n=K(t.parent);if(!(!n||!o.has(n)))return{parent_id:n,child_id:e,source:"scalar_parent",kind:"parent",holder_id:e,child_cardinality:"one"}}function Ct(e,t,o,n){let r=K(t?.id),i=n.resolve(t?.kind);if(!r||!o.has(r)||!i?.hierarchy)return;let s=i.hierarchyDirection==="source_parent";return{parent_id:s?e:r,child_id:s?r:e,source:"dependency",kind:i.kind,holder_id:e,target_id:r,child_cardinality:s?i.incoming:i.outgoing}}function Xe(e,t){let o=new Map;for(let[n,r]of e){let i=Et(n,r,e);i&&o.set(V(i),i);for(let s of r.dependencies??[]){let d=Ct(n,s,e,t);d&&o.set(V(d),d)}}return[...o.values()].sort((n,r)=>V(n).localeCompare(V(r)))}function Kn(e,t=x()){return Xe(We(e),t)}function xt(e,t,o){let n=new Set(e.filter(r=>r.child_cardinality==="one").map(r=>r.child_id));return[...t].filter(([r,i])=>i.length>1&&n.has(r)).map(([r,i])=>({child_id:r,parent_ids:[...i],legacy_terminal:o.has(r)&&i.every(s=>o.has(s))})).sort((r,i)=>r.child_id.localeCompare(i.child_id))}function Rt(e,t,o){let n=new Map;for(let i of t){if(i.source!=="dependency")continue;let s=n.get(i.child_id)??new Set;s.add(i.parent_id),n.set(i.child_id,s)}let r=[];for(let[i,s]of e){let d=K(s.parent);if(!d||!e.has(d))continue;let c=[...n.get(i)??[]].filter(l=>l!==d).sort();c.length!==0&&r.push({child_id:i,scalar_parent_id:d,dependency_parent_ids:c,legacy_terminal:o.has(i)&&o.has(d)&&c.every(l=>o.has(l))})}return r.sort((i,s)=>i.child_id.localeCompare(s.child_id))}function J(e,t=n=>n==="closed"||n==="canceled",o=x()){let n=We(e),r=Xe(n,o),i=Tt(r),s=new Set([...n].filter(([,c])=>t(c.status)).map(([c])=>c)),d=vt([...n.keys()],new Map([...i.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:r,cycles:d,cardinality_violations:xt(r,i.parents_by_child,s),divergences:Rt(n,r,s)}}function Un(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 Tt(e){let t=new Map,o=new Map;for(let n of e){let r=t.get(n.child_id)??new Set;r.add(n.parent_id),t.set(n.child_id,r);let i=o.get(n.parent_id)??new Set;i.add(n.child_id),o.set(n.parent_id,i)}return{parents_by_child:new Map([...t].map(([n,r])=>[n,[...r].sort()])),children_by_parent:new Map([...o].map(([n,r])=>[n,[...r].sort()]))}}function de(e,t){let o=new Set(t);return e.every(n=>o.has(n))}function jn(e,t,o,n,r){let i=K(o);if(!i)return;let s=J(e,n,r),d=J(t,n,r),c=d.divergences.find(a=>!s.divergences.some(p=>p.child_id===a.child_id&&p.scalar_parent_id===a.scalar_parent_id&&de(a.dependency_parent_ids,p.dependency_parent_ids)));if(c){let a=[c.scalar_parent_id,...c.dependency_parent_ids].sort();throw new v(`Hierarchy mutation would assign ${c.child_id} to multiple parents: ${a.join(", ")}.`,I.CONFLICT,{code:"hierarchy_parent_divergence_created",source_id:i,target_id:c.child_id,verification_errors:a})}let l=d.cardinality_violations.find(a=>(a.child_id===i||a.parent_ids.includes(i))&&!s.cardinality_violations.some(p=>p.child_id===a.child_id&&de(a.parent_ids,p.parent_ids)));if(l)throw new v(`Hierarchy mutation would assign ${l.child_id} to multiple parents: ${l.parent_ids.join(", ")}.`,I.CONFLICT,{code:"hierarchy_cardinality_created",source_id:i,target_id:l.child_id,verification_errors:l.parent_ids});let u=d.cycles.find(a=>a.item_ids.includes(i)&&!s.cycles.some(p=>de(a.item_ids,p.item_ids)));if(u)throw new v(`Hierarchy mutation would create a cycle: ${u.item_ids.join(" -> ")}.`,I.CONFLICT,{code:"hierarchy_cycle_created",source_id:i,verification_errors:u.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 Dt="global";function Wn(e){let t=e?.trim();if(t)return C(t)?Dt:t}function Xn(e,t,o){return St(e,t,o)}function St(e,t,o){let n=e.trim();return C(o)||T(n)?n:Me(n,t)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="41f814be-ee87-5cae-b674-69c2e7f42655")}catch{}})();function B(e){if(typeof e!="string")return;let t=e.trim();if(!(!t||["none","null","n/a","na"].includes(t.toLowerCase())))return t}function U(e){let t=B(e);return t?.toLowerCase()==="no-active-blocker"?void 0:t}function j(e,t,o=!0){let n=B(e);return o&&(C(t)||n!==void 0&&T(n))}function ce(e,t){return j(e,t)?`external\0${e}`:`local\0${e.toLowerCase()}`}function qe(e,t,o,n){return j(e,t)?n.get(e):o.get(e.toLowerCase())}function A(e,t){let o=e.toLowerCase(),n=t.toLowerCase();return o!==n?o<n?-1:1:e!==t?e<t?-1:1:0}function Lt(e){let t=new Map;for(let o of e.dependencies??[]){if(typeof o!="object"||o===null)continue;let n=o,r=B(n.id);if(!r)continue;let i=typeof n.kind=="string"?n.kind:"related",s=`${i}\0${ce(r,n.source_kind)}`,d=t.get(s);d?d.count+=1:t.set(s,{target_id:r,kind:i,count:1})}return t}function Ot(e,t=o=>o==="closed"||o==="canceled"){let o=[];for(let n of e)if(!(typeof n?.id!="string"||n.id.trim().length===0))for(let r of Lt(n).values())r.count<2||o.push({holder_id:n.id.trim(),target_id:r.target_id,kind:r.kind,occurrences:r.count,holder_status:n.status,legacy_terminal:t(n.status)});return o.sort((n,r)=>{let i=A(n.holder_id,r.holder_id);if(i!==0)return i;let s=A(n.target_id,r.target_id);return s!==0?s:A(n.kind,r.kind)})}function At(e,t,o,n,r){if(typeof o!="object"||o===null)return;let i=B(o.id);if(!i||ce(i,o.source_kind)!==ce(t))return;let s=r.resolve(typeof o.kind=="string"?o.kind:"related");if(!(s?.ordering!==!0||(s.precedence??"source_before_target")!=="source_before_target"))return{holder_id:e.id.trim(),target_id:i,dependency_kind:s.kind,holder_status:e.status,legacy_terminal:n(e.status)}}function Bt(e,t=n=>n==="closed"||n==="canceled",o=x()){let n=new Map;for(let r of e){if(typeof r?.id!="string"||r.id.trim().length===0)continue;let i=B(r.blocked_by);if(i)for(let s of r.dependencies??[]){let d=At(r,i,s,t,o);d&&n.set(`${d.holder_id.toLowerCase()}\0${d.target_id.toLowerCase()}\0${d.dependency_kind}`,d)}}return[...n.values()].sort((r,i)=>{let s=A(r.holder_id,i.holder_id);if(s!==0)return s;let d=A(r.target_id,i.target_id);return d!==0?d:A(r.dependency_kind,i.dependency_kind)})}function ae(e,t=o=>o==="closed"||o==="canceled"){let o=e.filter(c=>typeof c?.id=="string"&&c.id.trim().length>0),n=new Set(o.map(c=>c.id.trim().toLowerCase())),r=new Map,i=(c,l,u,a,p)=>{let g=B(l);if(!g||n.has(g.toLowerCase())||j(g,void 0,p))return;let f={holder_id:c.id.trim(),target_id:g,kind:u,source:a,holder_status:c.status,legacy_terminal:t(c.status),no_active_blocker_sentinel:g.toLowerCase()==="no-active-blocker"};r.set(`${f.holder_id}::${f.target_id}::${f.kind}::${f.source}`,f)};for(let c of o){i(c,c.parent,"parent","parent",!1),i(c,c.blocked_by,"blocked_by","blocked_by",!0);for(let l of c.dependencies??[]){if(typeof l!="object"||l===null)continue;let u=l;C(u.source_kind)||i(c,u.id,typeof u.kind=="string"?u.kind:"related","dependency",!0)}}let s=[...r.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)),d=s.filter(c=>c.legacy_terminal);return{active:s.filter(c=>!c.legacy_terminal),legacy_terminal:d,no_active_blocker_sentinels:s.filter(c=>c.no_active_blocker_sentinel)}}function Nt(e){let t=new Map;for(let o of[...e.active,...e.legacy_terminal]){if(o.no_active_blocker_sentinel)continue;let n=o.target_id.trim(),r=n.toLowerCase();t.has(r)||t.set(r,n)}return[...t.values()].sort((o,n)=>o.localeCompare(n))}function Mt(e){let t=new Map;for(let o of e){let n=U(o.blocked_by);n&&j(n)&&!t.has(n)&&t.set(n,n);for(let r of o.dependencies??[]){if(typeof r!="object"||r===null||!j(r.id,r.source_kind))continue;let i=U(r.id);i&&!t.has(i)&&t.set(i,i)}}return[...t.values()].sort((o,n)=>o.localeCompare(n))}var Ye=new WeakMap;function eo(e){return e.hierarchyIntegrity??Ye.get(e)}function $t(e,t=x()){let o={};for(let n of e)for(let r of n.dependencies??[]){if(typeof r!="object"||r===null)continue;let i=r.kind;if(typeof i!="string")continue;let s=i.trim().toLowerCase().replaceAll("-","_"),d=t.resolve(i);d&&s!==d.kind&&(o[s]=(o[s]??0)+1)}return Object.fromEntries(Object.entries(o).sort(([n],[r])=>n.localeCompare(r)))}function le(e,t,o){let n=o??x(),r=e.filter(f=>typeof f?.id=="string"&&f.id.trim().length>0),i=new Map(r.map(f=>[f.id.trim().toLowerCase(),f.id.trim()])),s=ae(r,t),d=Nt(s);for(let f of d)i.set(f.toLowerCase(),f);let c=Mt(r),l=new Set(i.keys()),u=new Map;for(let f of c){let y=f;for(;l.has(y.toLowerCase());)y=`external:${y}`;u.set(f,y),l.add(y.toLowerCase())}let a=r.map(f=>{let y=U(f.parent),m=U(f.blocked_by),h=(f.dependencies??[]).flatMap(b=>{if(typeof b!="object"||b===null)return[];let k=b,E=U(k.id);return E?[{id:qe(E,k.source_kind,i,u),kind:typeof k.kind=="string"?k.kind:"related"}]:[]});return{id:f.id.trim(),...y?{parent:i.get(y.toLowerCase())}:{},...m?{blocked_by:qe(m,void 0,i,u)}:{},dependencies:h}}),p=J(r,t,n),g={graph:_e.fromItems([...a,...d.map(f=>({id:f})),...c.map(f=>({id:u.get(f)}))],n),details:[...r.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()}:{}})),...d.map(f=>({id:f,title:`[missing] ${f}`,status:"missing"})),...c.map(f=>({id:u.get(f),title:`[external] ${f}`,status:"external"}))],missingIdSet:new Set(d.map(f=>f.toLowerCase())),dangling:s,duplicateRows:Ot(r,t),orderingContradictions:Bt(r,t,n),legacyAliasCounts:$t(r,n),hierarchyIntegrity:p};return Ye.set(g,p),g}import{createHash as Pt}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 Kt=64,Ut=8;function jt(e,t){let o=(e.dependencies??[]).map(n=>{if(typeof n!="object"||n===null)return"";let r=n;return`${typeof r.kind=="string"?r.kind:"related"}:${typeof r.id=="string"?r.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??"",o].join("\0")}function Je(e,t=n=>n==="closed"||n==="canceled",o=R()){let n=e.filter(i=>typeof i?.id=="string"&&i.id.trim().length>0).map(i=>jt(i,t)).sort(),r=o.list().map(i=>Ie(i)).sort();return Pt("sha256").update(n.join("")).update("").update(r.join("")).digest("hex")}function Ve(e,t,o){let n=t??o;if(!Number.isInteger(n)||n<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`);return n}var ue=class{#e=new Map;#t;#n;constructor(t={}){this.#t=Ve("maxResultsPerWorkspace",t.maxResultsPerWorkspace,Kt),this.#n=Ve("maxWorkspaces",t.maxWorkspaces,Ut)}lookup(t,o,n){let r=this.#e.get(t),i=!0;(r===void 0||r.fingerprint!==o)&&(r={fingerprint:o,assembly:n(),results:new Map},i=!1,!this.#e.has(t)&&this.#e.size>=this.#n&&this.#e.delete(this.#e.keys().next().value)),this.#e.delete(t),this.#e.set(t,r);let s=r,d=this.#t;return{assembly:s.assembly,assemblyReused:i,fingerprint:o,memoize(c,l){let u=s.results.get(c);if(u!==void 0||s.results.has(c))return s.results.delete(c),s.results.set(c,u),{value:structuredClone(u),reused:!0};let a=l();return s.results.size>=d&&s.results.delete(s.results.keys().next().value),s.results.set(c,structuredClone(a)),{value:a,reused:!1}}}}clear(){this.#e.clear()}},Qe=new ue;function Ze(){return Qe}function io(){Qe.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]="3b494263-6359-57e9-8f34-b0bdcdeda93f")}catch{}})();var F=1200,zt=["prerequisite","dependent","ancestor","descendant","provenance","related"],Ft=new TextEncoder;function pe(e,t,o){let n=e??t;if(!Number.isInteger(n)||n<1)throw new TypeError(`Relationship context ${o} must be positive`);return n}function z(e){return Math.max(1,Math.ceil(Ft.encode(JSON.stringify(e)).byteLength/4))}function Q(e,t,o){let n=o.resolve(e.kind);if(n?.ordering){let r=(n.precedence??"source_before_target")==="source_before_target"?e.source:e.target;return t===r?"prerequisite":"dependent"}if(n?.hierarchy){let r=n.hierarchyDirection==="source_parent"?e.source:e.target;return t===r?"ancestor":"descendant"}return e.kind==="discovered_from"||e.kind==="incident_from"?"provenance":"related"}function Gt(e,t,o,n){let r=e.filter(i=>i.source===t&&i.target===o||i.target===t&&i.source===o).map(i=>Q(i,o,n));return[...new Set(r)].sort()}function Ht(e){return zt.find(t=>e.includes(t))}function Wt(e,t,o,n){let r=n.direction??"both",i=n.maxDepth??3;if(!Number.isInteger(i)||i<0)throw new TypeError("Relationship context maxDepth must be non-negative");let s=new Set([t]),d=[{id:t,distance:0}],c=[],l=0,u=!1;for(let a=0;a<d.length;a+=1){n.signal?.throwIfAborted();let p=d[a];if(p.distance>=i&&u)continue;let g=e.neighborEdges(p.id,{direction:r,kinds:n.kinds,signal:n.signal});if(l+=g.meta.inspectedEdges,p.distance>=i){g.value.some(f=>!s.has(f.id))&&(u=!0);continue}for(let{id:f,edge:y}of g.value){if(s.has(f))continue;s.add(f);let m={id:f,distance:p.distance+1,via:p.id,role:Q(y,f,o)};c.push(m),d.push(m)}}return{rows:c,visitedNodes:d.length,inspectedEdges:l,depthTruncated:u}}function Xt(e,t,o,n){let r={prerequisite:0,dependent:0,ancestor:0,descendant:0,provenance:0,related:0},i=e.neighborEdges(t,{direction:n.direction??"both",kinds:n.kinds,signal:n.signal}).value;for(let{id:s,edge:d}of i)r[Q(d,s,o)]+=1;return{directEdges:r,directTotal:i.length,rootEdges:i.map(({edge:s})=>s)}}function qt(e,t,o,n){let r=new Set;for(let i of t){let s=i.source===o?i.target:i.source,d=Q(i,s,n);(d==="prerequisite"||d==="ancestor")&&r.add(s)}return[...e].sort((i,s)=>Number(r.has(s.id))-Number(r.has(i.id))||i.distance-s.distance||i.id.localeCompare(s.id))}function Yt(e,t){let o=e.distance===1?Gt(t.rootEdges,t.rootId,e.id,t.registry):[];return{...t.details.get(e.id)??{id:e.id},distance:e.distance,role:o.length>0?Ht(o):e.role,via:e.via,reasons:o.length>0?o:[`${e.role} via ${e.via} (depth ${e.distance})`]}}function Vt(e){let t=[],o=e.initialTokens,n=0;for(let r of e.candidates){if(t.length>=e.nodeLimit)break;let i=Yt(r,e),s=z(i);if(o+s>e.tokenBudget)break;let d=e.rootEdges.filter(c=>c.source===r.id||c.target===r.id).reduce((c,l)=>c+z(l),0);if(o+n+s+d>e.tokenBudget){if(t.length>0)break}else n+=d;t.push(i),o+=s}if(e.candidates.length>0&&t.length===0)throw new TypeError("Relationship context tokenBudget cannot fit one node");return{nodes:t,usedTokens:o}}function Jt(e){let t=e.options.kinds?new Set(e.options.kinds.map(i=>e.registry.require(i).kind)):void 0,o=e.graph.edges().filter(i=>{if(!e.included.has(i.source)||!e.included.has(i.target))return!1;if(t===void 0||t.has(i.kind))return!0;let s=e.registry.resolve(i.kind)?.inverse;return s!==void 0&&t.has(s)}).sort((i,s)=>+(s.source===e.rootId||s.target===e.rootId)-+(i.source===e.rootId||i.target===e.rootId)),n=[],r=e.initialTokens;for(let i of o){if(n.length>=e.edgeLimit)break;let s=z(i);r+s>e.tokenBudget||(n.push(i),r+=s)}return{edges:n,usedTokens:r,candidateCount:o.length}}function et(e,t,o,n={}){if(!e.nodes().includes(t))throw new TypeError(`Relationship node not found: ${t}`);let r=pe(n.nodeLimit,20,"nodeLimit"),i=pe(n.edgeLimit,40,"edgeLimit"),s=pe(n.tokenBudget,F,"tokenBudget"),d=n.registry??R(),c=new Map(o.map(O=>[O.id,O])),l=c.get(t)??{id:t},{evidence:u=[],...a}=l,p=[...u],g=Wt(e,t,d,n),{rootEdges:f,...y}=Xt(e,t,d,n),m=qt(g.rows,f,t,d),h=Se("relationship-context",{rootId:t,direction:n.direction??"both",kinds:[...n.kinds??[]].sort(),maxDepth:n.maxDepth??3,ordering:"required-root-evidence-first-v1"}),b=Oe(m,n.cursor,h,({id:O})=>O,"--cursor"),k=m.slice(b),E=z(a)+z(p);if(E>s)throw new TypeError("Relationship context tokenBudget cannot fit root and evidence");let w=Vt({candidates:k,details:c,rootEdges:f,rootId:t,registry:d,nodeLimit:r,tokenBudget:s,initialTokens:E}),{nodes:L}=w,lt=new Set([t,...L.map(({id:O})=>O)]),ge=Jt({graph:e,rootId:t,included:lt,options:n,registry:d,edgeLimit:i,tokenBudget:s,initialTokens:w.usedTokens}),{edges:Z,usedTokens:ut}=ge,G=b+L.length,ee=G<m.length,he=L.at(-1),te=ge.candidateCount-Z.length,ye=g.depthTruncated||ee||te>0,pt={rootId:t,...a.status===void 0?{}:{rootStatus:a.status},...y,discoveredNodes:m.length,returnedNodes:L.length,returnedEdges:Z.length,omittedNodes:m.length-G,omittedEdges:te,evidenceCount:p.length,hasMore:ee};return{root:a,summary:pt,nodes:L,edges:Z,evidence:p,meta:{exact:!0,truncated:ye,completeness:ye?"truncated":"complete",nodeLimit:r,edgeLimit:i,tokenBudget:s,usedTokens:ut,visitedNodes:g.visitedNodes,inspectedEdges:g.inspectedEdges,omittedNodes:m.length-G,omittedEdges:te,...ee&&he?{nextCursor:Le(h,he.id,G-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]="196b7f2d-b09b-5432-b4ef-9cdf82e92731")}catch{}})();var Qt=["tree","graph","context"],Zt=["none","repeated"],en=["outgoing","incoming","both"],tn=32,nn=200,on=400,rn=16e3;function sn(e){let t=e?.trim().toLowerCase()??"tree";if(Qt.includes(t))return t;throw new v(`Invalid --format value "${e}". Use "tree", "graph", or "context".`,I.USAGE)}function N(e,t){if(e===void 0)return;let o=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(o)||o<1)throw new v(`Invalid --${t} value "${e}". Use a positive integer.`,I.USAGE);return o}function nt(e){if(e===void 0)return;let t=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(t)||t<0)throw new v(`Invalid --max-depth value "${e}". Use a non-negative integer.`,I.USAGE);return t}function dn(e){let t=e?.trim().toLowerCase()??"none";if(Zt.includes(t))return t;throw new v(`Invalid --collapse value "${e}". Use "none" or "repeated".`,I.USAGE)}function cn(e){let t=e?.trim().toLowerCase()??"both";if(en.includes(t))return t;throw new v(`Invalid --direction value "${e}". Use "outgoing", "incoming", or "both".`,I.USAGE)}function an(e,t=R()){if(e===void 0)return;let o=(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);if(o.length===0)return;let n=new Set;for(let r of o){let i=t.resolve(r);if(!i){let s=t.list().map(d=>d.kind).join(", ");throw new v(`Invalid --kind value "${r}". Registered kinds: ${s}.`,I.USAGE)}n.add(i.kind)}return[...n].sort()}function ln(e){if(!e||e.length===0)return[];let t=e.map(({id:n,kind:r})=>({id:n.trim(),kind:r.trim().toLowerCase()})).sort((n,r)=>{let i=n.kind.localeCompare(r.kind);return i!==0?i:n.id.localeCompare(r.id)}),o=new Map;for(let n of t){let r=`${n.kind.toLowerCase()}::${n.id.toLowerCase()}`;o.has(r)||o.set(r,{id:n.id,kind:n.kind})}return[...o.values()]}function un(e){return{id:e.id,title:e.title,type:e.type,status:e.status,dependencies:ln(e.dependencies)}}function pn(e){return M(new TextEncoder().encode(JSON.stringify({...e,dependencies:void 0})).byteLength)}function fn(e,t,o,n,r,i,s,d,c){for(let l of t.dependencies){let u=Math.max(1,Math.ceil(JSON.stringify({from:e.id,to:l.id,kind:l.kind}).length/3));if(d.nodes>=d.nodeLimit){e.truncated=!0,d.reasons.add("node_limit");break}if(d.edges>=d.edgeLimit){e.truncated=!0,d.reasons.add("edge_limit");break}if(d.estimatedTokens+u>=d.tokenBudget){e.truncated=!0,d.reasons.add("token_budget");break}d.edges+=1,d.estimatedTokens+=u,e.dependencies.push(ot(l.id,o,n,r,i,s,d,c+1,l.kind))}}function mn(e,t,o,n,r,i,s,d){return s.estimatedTokens>=s.tokenBudget&&t?.dependencies.length?(e.truncated=!0,s.reasons.add("token_budget"),!0):!t||e.cycle?!0:n!==void 0&&d>=n?(t.dependencies.length>0&&(e.truncated=!0,s.reasons.add("max_depth")),!0):r==="repeated"&&i.has(o)?(e.collapsed=!0,!0):!1}function ot(e,t,o,n,r,i,s,d=0,c){let l=e.trim().toLowerCase(),u=t.get(l),a={id:u?.id??e,title:u?.title,type:u?.type,status:u?.status,via:c,missing:!u,cycle:o.has(l),dependencies:[]};if(s.nodes+=1,s.estimatedTokens+=pn(a),mn(a,u,l,n,r,i,s,d))return a;r==="repeated"&&i.add(l);let p=new Set(o);return p.add(l),fn(a,u,t,p,n,r,i,s,d),a}function tt(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 gn(e){let t=new Map,o=new Map,n=[e];for(;n.length>0;){let d=n.pop();t.set(d.id,tt(t.get(d.id),{id:d.id,title:d.title,type:d.type,status:d.status,missing:d.missing}));for(let c of d.dependencies){t.set(c.id,tt(t.get(c.id),{id:c.id,title:c.title,type:c.type,status:c.status,missing:c.missing}));let l=c.via??"related",u=`${d.id}::${c.id}::${l}`;o.has(u)||o.set(u,{from:d.id,to:c.id,kind:l}),c.cycle||n.push(c)}}let r=[...t.values()].sort((d,c)=>d.id.localeCompare(c.id)),i=[...o.values()].sort((d,c)=>{let l=d.from.localeCompare(c.from);if(l!==0)return l;let u=d.to.localeCompare(c.to);return u!==0?u:d.kind.localeCompare(c.kind)}),s=r.filter(d=>d.missing).map(d=>d.id);return{root_id:e.id,nodes:r,edges:i,missing_ids:s}}function rt(e,t,o){let n=new Set,r=new Set,i=new Set,s=new Set,d=[{id:e,depth:0}],c=0;for(;c<d.length;){let l=d[c++],u=l.id.trim().toLowerCase();n.add(u);let a=t.get(u);if(!a){i.add(u);continue}if(!(o!==void 0&&l.depth>=o)&&!s.has(u)){s.add(u);for(let p of a.dependencies)r.add(`${u}::${p.id.trim().toLowerCase()}::${p.kind}`),d.push({id:p.id,depth:l.depth+1})}}return{node_count:n.size,edge_count:r.size,edge_basis:"deduplicated_directed",missing_count:i.size}}function hn(e,t=R()){let o=nt(e.maxDepth),n=N(e.nodeLimit,"node-limit"),r=N(e.edgeLimit,"edge-limit"),i=N(e.tokenBudget,"token-budget"),s=an(e.kind,t);return{direction:cn(e.direction),...s===void 0?{}:{kinds:s},...o===void 0?{}:{maxDepth:o},...n===void 0?{}:{nodeLimit:n},...r===void 0?{}:{edgeLimit:r},...i===void 0?{}:{tokenBudget:i},...e.cursor?.trim()?{cursor:e.cursor.trim()}:{}}}function yn(e,t,o,n){return et(e.graph,t,e.details.map(r=>r.id===t&&n.length>0?{...r,evidence:n}:r),o)}function fe(e,t,o,n){for(let r of o.slice(0,n)){let i=r?.trim();i&&e.push(`${t}:${i}`)}}async function _n(e,t,o,n){let r=await Ke(e,t,o.id_prefix,o.item_format,n);if(!r)return[];let{document:i}=await Ue(r,{schema:o.schema}),s=i.metadata,d=s.files??[],c=s.tests??[],l=s.docs??[],u=[["files",d.length],["tests",c.length],["docs",l.length],["comments",(s.comments??[]).length],["notes",(s.notes??[]).length],["learnings",(s.learnings??[]).length]];if(u.every(([,p])=>p===0))return[];let a=[`linked:${u.map(([p,g])=>`${p}=${g}`).join(",")}`];return fe(a,"file",d.map(p=>p.path),3),fe(a,"test",c.map(p=>p.command??p.path),2),fe(a,"doc",l.map(p=>p.path),2),a}function kn(e){let{canonicalId:t,context:o,missingCount:n,missingReferences:r,referenceLimit:i,summaryOnly:s}=e;return{id:t,format:"context",node_count:o.nodes.length+1,edge_count:o.edges.length,edge_basis:"deduplicated_directed",missing_count:n,missing_scope:"traversal",missing_reference_count:r.length,...s?{}:{missing_references:r.slice(0,i),context:o}}}function bn(e){let{row:t,missingReachableSet:o,packetIds:n,filteredKinds:r,registry:i}=e;if(t.no_active_blocker_sentinel||!o.has(t.target_id.trim().toLowerCase())||!n.has(t.holder_id))return!1;if(r===void 0)return!0;let s=i.resolve(t.kind);return s!==void 0&&(r.has(s.kind)||s.inverse!==void 0&&r.has(s.inverse))}function it(e,t){let o=Ce(),n=t.commandOptionsOverride??(o?.command==="deps"?o.options:t.commandOptions);return Ae("deps",{...n,...t.global,resolvedOutputFormat:t.format},e)}function me(e,t){let o=it(e,t),n=r=>Ne(r,t.format,t.global.lean===!0);return n(t.global.tokenAccounting===!0?Be(o,n):o)}function st(e,t,o){let n;for(;;){let r=M(new TextEncoder().encode(me(e,t)).byteLength);if(r===n)return r;o(r),n=r}}function dt(e){return e instanceof TypeError&&e.message.startsWith("Relationship context tokenBudget cannot fit ")}function ct(e){let{assembly:t,canonicalId:o,contextOptions:n,rootEvidence:r,summaryOnly:i,rendering:s,missingCount:d,missingReferences:c}=e,l=n.edgeLimit??40,u=Math.min(l,c.length),a=n.tokenBudget,p;for(;;){let g=yn(t,o,{...n,...a===void 0?{}:{tokenBudget:a}},r);p??=g.meta.tokenBudget,a??=p;let f=kn({canonicalId:o,context:g,missingCount:d,missingReferences:c,referenceLimit:u,summaryOnly:i});if(i){if(M(new TextEncoder().encode(me(S(f,!0,s.legacyAliasCounts),s)).byteLength)>p)throw new TypeError("Relationship context tokenBudget cannot fit the rendered summary");return f}if(g.meta.tokenBudget=p,g.meta.usedTokens=st(S(f,!1,s.legacyAliasCounts),s,h=>{g.meta.usedTokens=h}),g.meta.usedTokens<=p)return f;if(u>0){u-=1;continue}let y=a,m=y*p/g.meta.usedTokens;a=Math.min(y-1,Math.max(1,Math.floor(m*.9)))}}function at(e,t){let o=e.contextOptions,n={...e.rendering.global,outputFormat:e.rendering.format},r=["--pm-path",e.pmRoot,"item","deps",e.canonicalId,"--format","context","--output-format",e.rendering.format,"--token-budget"],i=r.length;r.push(String(t));let s=new Set(["--pm-path","--format","--output-format","--token-budget"]),d={format:"context",tokenBudget:t,kind:o.kinds},c=[["--max-depth","maxDepth",o.maxDepth],["--node-limit","nodeLimit",o.nodeLimit],["--edge-limit","edgeLimit",o.edgeLimit],["--direction","direction",o.direction],["--cursor","cursor",o.cursor],["--output-include","outputInclude",n.outputInclude],["--output-limit","outputLimit",n.outputLimit],["--output-budget","outputBudget",n.outputBudget],["--output-session","outputSession",n.outputSession],["--output-cursor","outputCursor",n.outputCursor]];for(let[a,p,g]of c)g!==void 0&&(r.push(a,String(g)),s.add(a),d[p]=g);for(let a of o.kinds??[])r.push("--kind",a),s.add("--kind");let l=[["--summary","summary",e.summaryOnly],["--full","full",e.rendering.commandOptions.full],["--json","json",n.json],["--lean","lean",n.lean],["--output-row-contract","outputRowContract",n.outputRowContract],["--token-accounting","tokenAccounting",n.tokenAccounting],["--no-extensions","noExtensions",n.noExtensions],["--no-pager","noPager",n.noPager]];for(let[a,p,g]of l)g===!0&&(r.push(a),s.add(a),d[p]=!0);let u=Re.find(a=>a.command==="deps");return Reflect.set(d,xe,{canonical_include_modes:[],cli_invocation_observed:!0,explicit_legacy_aliases:Object.values(u.dimensions).flatMap(a=>a.legacy_aliases.flatMap(p=>s.has(p.flag)?[p.flag]:[]))}),Te("deps",d),ne(d.summary===!0,d.full===!0,"--summary"),n.outputInclude=d.outputInclude,{args:r,budgetIndex:i,summaryOnly:d.summary===!0,rendering:{...e.rendering,global:n,commandOptionsOverride:d}}}function vn(e,t,o){let n={...t.rendering,commandOptionsOverride:{...t.rendering.commandOptionsOverride,tokenBudget:o}},r;try{r=ct({...e,contextOptions:{...e.contextOptions,tokenBudget:o},summaryOnly:t.summaryOnly,rootEvidence:t.summaryOnly?[]:e.rootEvidence,rendering:n})}catch(s){if(!dt(s))throw s;return"native_floor"}let i=it(S(r,t.summaryOnly,n.legacyAliasCounts),n);return De(i)?"output_constraints":"fits"}async function wn(e,t){let o=e.contextOptions.tokenBudget??F,n=at(e,o),r=(n.summaryOnly?1:1+Math.min(e.contextOptions.edgeLimit??40,e.missingReferences.length))*(e.assembly.details.reduce((a,p)=>a+p.id.length+p.title.length+p.status.length+(p.type?.length??0),e.assembly.graph.edges().length+e.missingReferences.length)+(n.summaryOnly?[]:e.rootEvidence).reduce((a,p)=>a+p.length,0)),{findContextBudgetRecovery:i}=await import("./context-budget-recovery-5MKOCGY5.js"),s=i({requested:o,initialBudget:F,workUnits:r,probe:a=>vn(e,n,a)}),d=["--pm-path",e.pmRoot,"item","deps",e.canonicalId,"--format","tree","--summary"],c=X(d),l=s.feasible_tokens===null?d:[...n.args];s.feasible_tokens!==null&&(l[n.budgetIndex]=String(s.feasible_tokens));let u=X(l);return ze("Relationship context tokenBudget cannot fit the required rendered packet",{exitCode:I.USAGE,cause:t,context:{code:"invalid_argument_value",field:"tokenBudget",value:String(o),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:[u,c],nextSteps:[u],recovery:{recovery_mode:"compact",suggested_flags:["--token-budget"],token_budget:s,suggested_retry_args:l,suggested_retry:u,next_best_command:c,fallback_candidates:[{source:"relationship_summary",command:c,reason:"Inspect bounded counts separately from context rows."}]}}})}async function In(e){let{pmRoot:t,assembly:o,canonicalId:n,options:r,rootEvidence:i,summaryOnly:s,rendering:d}=e,c=hn(r,o.graph.registry()),l=o.graph.closure(n,{direction:c.direction,...c.kinds===void 0?{}:{kinds:c.kinds},maxDepth:c.maxDepth??3}),u=l.value.filter(h=>o.missingIdSet.has(h.toLowerCase())),a=new Set(u.map(h=>h.toLowerCase())),p=o.graph.registry(),g=c.kinds?new Set(c.kinds.map(h=>p.require(h).kind)):void 0,f=new Set([n,...l.value]),y=[...o.dangling.active,...o.dangling.legacy_terminal].filter(h=>bn({row:h,missingReachableSet:a,packetIds:f,filteredKinds:g,registry:p})),m={pmRoot:t,assembly:o,canonicalId:n,contextOptions:c,rootEvidence:i,summaryOnly:s,rendering:d,missingCount:u.length,missingReferences:y};try{return ct(m)}catch(h){if(h instanceof v&&h.code==="invalid_query_cursor"){let b=at({...m,contextOptions:{...c,cursor:void 0},rendering:{...d,global:{...d.global,outputCursor:void 0}}},c.tokenBudget??F),k=X(b.args);throw new v(h.message,h.exitCode,{...h.context,nextSteps:[...h.context.nextSteps,k],recovery:{suggested_retry:k,suggested_retry_args:b.args}})}throw dt(h)?await wn(m,h):h}}function En(e){let t=[e],o;for(;t.length>0;){let n=t.pop();n.dependencies.length>0&&(o=n,t.push(...n.dependencies))}return o?(o.dependencies.pop(),o.truncated=!0,!0):!1}function Cn(e,t,o,n,r,i,s){let d=r??tn,c=N(o.nodeLimit,"node-limit")??nn,l=N(o.edgeLimit,"edge-limit")??on,u=N(o.tokenBudget,"token-budget")??rn,a={nodeLimit:c,edgeLimit:l,tokenBudget:u,nodes:0,edges:0,estimatedTokens:0,reasons:new Set},p=ot(e,n,new Set,d,t==="graph"?"repeated":i,new Set,a),g=rt(e,n,void 0),f;for(;;){let y=gn(p),m=a.reasons.size===0?void 0:{reasons:[...a.reasons].sort(),limits:{max_depth:d,node_limit:c,edge_limit:l,token_budget:u},estimated_tokens:0,total_node_count:g.node_count,total_edge_count:g.edge_count,omitted_node_count:Math.max(0,g.node_count-y.nodes.length),omitted_edge_count:Math.max(0,g.edge_count-y.edges.length)},h={id:e,format:t,node_count:y.nodes.length,edge_count:y.edges.length,edge_basis:"deduplicated_directed",missing_count:y.missing_ids.length,...m?{truncation:m}:{}};if(f=t==="tree"?{...h,tree:p}:{...h,graph:y},(f.truncation===void 0?M(new TextEncoder().encode(me(S(f,!1,s.legacyAliasCounts),s)).byteLength):st(S(f,!1,s.legacyAliasCounts),s,b=>{f.truncation.estimated_tokens=b}))<=u)return f;if(!En(p))return a.reasons.add("token_budget"),f;a.reasons.add("token_budget")}}function S(e,t,o={}){let n={name:e.format==="tree"?"dependency_tree":e.format==="graph"?"dependency_graph":"relationship_context",restore_with:"--full"},r=e.context?.meta.truncated?[{name:"relationship_context_bounds",restore_with:"--token-budget <n> --node-limit <n> --edge-limit <n> --max-depth <n>"}]:[];return{...e,legacy_alias_counts:o,projection:{mode:t?"summary":"full",declared_field_groups:[n,...r],included_field_groups:t?[]:[n.name]}}}async function Bo(e,t,o){let n=we(process.cwd(),o.path);await Pe(n);let r=sn(t.format),i=nt(t.maxDepth),s=dn(t.collapse);ne(t.summary===!0,t.full===!0,"--summary");let d=t.summary===!0,c=await $e(n),l=be(c,W()),u=await je(n,c.item_format,l.type_to_folder,void 0,c.schema),a=Ee(c.schema),p=new Map(u.map(m=>[m.id.trim().toLowerCase(),un(m)])),g=ae(u,m=>D(m,a));for(let m of[...g.active,...g.legacy_terminal]){let h=p.get(m.holder_id.trim().toLowerCase()),b=m.kind.trim().toLowerCase();h&&!h.dependencies.some(k=>k.id.trim().toLowerCase()===m.target_id.trim().toLowerCase()&&k.kind===b)&&h.dependencies.push({id:m.target_id,kind:b})}if(!p.has(e.trim().toLowerCase()))throw new v(`Item ${e} not found`,I.NOT_FOUND);let f=o.outputFormat??(o.json===!0||o.json===void 0&&o.defaultOutputFormat==="json"?"json":"toon");if(r==="context"){let m=p.get(e.trim().toLowerCase()).id,h=d?[]:await _n(n,m,c,l.type_to_folder),b=w=>D(w,a),k=x(),E=Ze().lookup(n,Je(u,b,k),()=>le(u,b,k));return S(await In({pmRoot:n,assembly:E.assembly,canonicalId:m,options:t,rootEvidence:h,summaryOnly:d,rendering:{format:f,global:o,commandOptions:t,legacyAliasCounts:E.assembly.legacyAliasCounts}}),d,E.assembly.legacyAliasCounts)}let y=Object.fromEntries(Object.entries(le(u,m=>D(m,a)).legacyAliasCounts));return d?S({id:e,format:r,...rt(e,p,i)},!0,y):S(Cn(e,r,t,p,i,s,{format:f,global:o,commandOptions:t,legacyAliasCounts:y}),!1,y)}export{re as a,ft as b,P as c,Y as d,Ge as e,mt as f,gt as g,ht as h,kt as i,Wn as j,Xn as k,St as l,x as m,Kn as n,J as o,Un as p,Tt as q,jn as r,U as s,Ot as t,Bt as u,ae as v,Nt as w,eo as x,le as y,Je as z,ue as A,Ze as B,io as C,F as D,et as E,N as F,nt as G,cn as H,an as I,Bo as J};
2
- //# sourceMappingURL=chunk-PAT6QF63.js.map
1
+ import{F as Ke,G as Ue,J as je,U as ze,f as Me}from"./chunk-PZRB7IXH.js";import{fb as $e,kb as Pe,w as $,x as D}from"./chunk-WSYPVBKS.js";import{j as Ee}from"./chunk-HJ27QLZV.js";import{b as T,c as C}from"./chunk-AK2CI2GI.js";import{De as Ne,Fa as Ie,Fd as Se,Gd as Le,Hc as ne,Kd as Oe,Nc as X,R,T as H,W as _e,_c as M,ka as ke,kd as xe,pd as Re,qa as be,sa as ve,uc as W,ud as Te,vc as Ce,wa as we,yd as De,ye as Ae,ze as Be}from"./chunk-HUXZCPWT.js";import{A as v,z as I}from"./chunk-G6ERMFJ5.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a319e7d9-e248-573b-bf1f-35217ce49fd0")}catch{}})();function re(e,t){return(t===void 0?void 0:ve(e,t))?.execution_role??ke[e.trim().toLowerCase()]??"agent"}var ie="blocked_by",Fe="blocks",ft=Object.freeze([ie,Fe]),oe="no-active-blocker";function _(e){return e.trim().toLowerCase()}function q(e,t){return t?`external:${e}`:`local:${_(e)}`}function P(e){let t=new Map,o=typeof e.blocked_by=="string"?e.blocked_by.trim():"";if(o.length>0&&_(o)!==oe){let n=T(o);t.set(q(o,n),n?o:_(o))}for(let n of e.dependencies??[]){let r=typeof n.id=="string"?n.id.trim():"";if(H(n.kind)===ie&&r.length>0&&_(r)!==oe){let i=T(r)||C(n.source_kind);t.set(q(r,i),i?r:_(r))}}return[...t.values()].sort((n,r)=>n.localeCompare(r))}function Y(e){let t=new Map;for(let o of e){let n=_(o.id);n.length!==0&&t.set(n,new Set(P(o)))}for(let o of e){let n=_(o.id);if(n.length!==0)for(let r of o.dependencies??[]){let i=H(r.kind)===Fe&&typeof r.id=="string"?_(r.id):"";if(i.length===0||i===oe)continue;let s=t.get(i)??new Set;s.add(n),t.set(i,s)}}return new Map([...t].map(([o,n])=>[o,[...n].sort((r,i)=>r.localeCompare(i))]))}function Ge(e,t){let o=_(e.id);return o.length>0?Y(t).get(o)??P(e):P(e)}function se(e,t,o,n){let r=e,i=typeof r.id=="string"?n?.get(_(r.id))??Ge(r,[...t.values()]):P(e),s=new Set((e.dependencies??[]).filter(d=>H(d.kind)===ie&&C(d.source_kind)&&typeof d.id=="string"&&d.id.trim().length>0).map(d=>q(d.id.trim(),!0)));return i.map(d=>{if(T(d)||s.has(q(d,!0)))return{id:d,title:null,status:null,resolved:!1,external:!0,...typeof e.updated_at=="string"?{blocked_since:e.updated_at}:{},resolver:null};let c=t.get(_(d));return c?{id:d,title:c.title,status:c.status,resolved:D(c.status,o)}:{id:d,title:null,status:null,resolved:!1}})}function mt(e,t,o){return se(e,t,o)}function gt(e,t){let o=new Map(e.map(s=>[_(s.id),s])),n=Y(e),r=new Set([...He(t),...t.blocked_statuses]),i=new Set;for(let s of e){let d=$(s.status,t);r.has(d)&&(t.blocked_statuses.has(d)||se(s,o,t,n).some(c=>!c.resolved))&&i.add(_(s.id))}return i}function ht(e,t,o={},n){let r=[...e.ready,...e.decisions,...e.gates];o.includeContainers===!0&&r.push(...e.containers.filter(s=>s.open_blockers.length===0&&!t.blocked_statuses.has($(s.item.status,t))));let i={ready:[],decisions:[],gates:[]};for(let s of r){let d=re(s.item.type,n);d==="human"&&o.includeDecisions!==!0?i.decisions.push(s):d==="gate"&&o.includeGates!==!0?i.gates.push(s):i.ready.push(s)}return i}function He(e){return e.active_statuses.size>0?e.active_statuses:new Set([e.open_status])}function yt(e,t,o){let n=[_(e)],r=new Set;for(;n.length>0;){let i=n.pop();if(!r.has(i)){r.add(i);for(let s of t.get(i)??[]){if(!D(s.status,o))return!0;n.push(_(s.id))}}}return!1}function _t(e){let t=new Map,o=new Map,n=new Map,r=Y(e);for(let i of e){t.set(_(i.id),i);let s=typeof i.parent=="string"?i.parent.trim():"";if(s.length>0){let d=_(s),c=o.get(d)??[];c.push(i),o.set(d,c)}for(let d of r.get(_(i.id))){let c=_(d),l=n.get(c)??[];l.push(i.id),n.set(c,l)}}return{itemsById:t,childrenByParent:o,blockedByReverse:n,blockerIdsByItem:r}}function kt(e,t,o,n){let{itemsById:r,childrenByParent:i,blockedByReverse:s,blockerIdsByItem:d}=_t(t),c=new Set([...He(o),...o.blocked_statuses]),l=new Set(t.filter(m=>!D(m.status,o)).map(m=>_(m.id))),u=[],a=[],p=[],g=[],f=[],y=0;for(let m of e){if(!c.has($(m.status,o)))continue;y+=1;let h=se(m,r,o,d).filter(w=>!w.resolved),b=(s.get(_(m.id))??[]).filter(w=>l.has(_(w))).sort((w,L)=>w.localeCompare(L)),k={item:m,open_blockers:h,unblocks:b};if(yt(m.id,i,o)){p.push(k);continue}let E=o.blocked_statuses.has($(m.status,o));if(h.length===0&&!E){let w=re(m.type,n);w==="human"?g.push(k):w==="gate"?f.push(k):u.push(k)}else a.push(k)}return{ready:u,blocked:a,containers:p,decisions:g,gates:f,active_count:y,container_count:p.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 x(){let e=R();for(let t of W()?.relationship_kinds??[])for(let o of t.definitions)e.register(o);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 K(e){if(typeof e!="string")return;let t=e.trim().toLowerCase();return t.length>0?t:void 0}function V(e){return[e.parent_id,e.child_id,e.source,e.kind,e.holder_id,e.target_id??""].join("\0")}function bt(e,t){let o=new Set,n=[];for(let r of[...e].sort()){if(o.has(r))continue;o.add(r);let i=[{nodeId:r,children:[...t.get(r)??[]].sort(),nextChild:0}];for(;i.length>0;){let s=i.at(-1),d=s.children[s.nextChild];d===void 0?(n.push(s.nodeId),i.pop()):(s.nextChild+=1,o.has(d)||(o.add(d),i.push({nodeId:d,children:[...t.get(d)??[]].sort(),nextChild:0})))}}return n}function vt(e,t){let o=[...e].sort(),n=bt(o,t),r=new Set,i=wt(o,t),s=[];for(let d of n.reverse()){if(r.has(d))continue;let c=It(d,i,r);(c.length>1||t.get(c[0])?.has(c[0]))&&s.push(c)}return s.sort((d,c)=>d.join("\0").localeCompare(c.join("\0")))}function wt(e,t){let o=new Map(e.map(n=>[n,new Set]));for(let[n,r]of t)for(let i of r)o.get(i)?.add(n);return o}function It(e,t,o){let n=[],r=[e];for(o.add(e);r.length>0;){let i=r.pop();n.push(i);for(let s of[...t.get(i)].sort())o.has(s)||(o.add(s),r.push(s))}return n.sort()}function We(e){let t=new Map;for(let o of e){let n=K(o?.id);n&&!t.has(n)&&t.set(n,o)}return t}function Et(e,t,o){let n=K(t.parent);if(!(!n||!o.has(n)))return{parent_id:n,child_id:e,source:"scalar_parent",kind:"parent",holder_id:e,child_cardinality:"one"}}function Ct(e,t,o,n){let r=K(t?.id),i=n.resolve(t?.kind);if(!r||!o.has(r)||!i?.hierarchy)return;let s=i.hierarchyDirection==="source_parent";return{parent_id:s?e:r,child_id:s?r:e,source:"dependency",kind:i.kind,holder_id:e,target_id:r,child_cardinality:s?i.incoming:i.outgoing}}function Xe(e,t){let o=new Map;for(let[n,r]of e){let i=Et(n,r,e);i&&o.set(V(i),i);for(let s of r.dependencies??[]){let d=Ct(n,s,e,t);d&&o.set(V(d),d)}}return[...o.values()].sort((n,r)=>V(n).localeCompare(V(r)))}function Kn(e,t=x()){return Xe(We(e),t)}function xt(e,t,o){let n=new Set(e.filter(r=>r.child_cardinality==="one").map(r=>r.child_id));return[...t].filter(([r,i])=>i.length>1&&n.has(r)).map(([r,i])=>({child_id:r,parent_ids:[...i],legacy_terminal:o.has(r)&&i.every(s=>o.has(s))})).sort((r,i)=>r.child_id.localeCompare(i.child_id))}function Rt(e,t,o){let n=new Map;for(let i of t){if(i.source!=="dependency")continue;let s=n.get(i.child_id)??new Set;s.add(i.parent_id),n.set(i.child_id,s)}let r=[];for(let[i,s]of e){let d=K(s.parent);if(!d||!e.has(d))continue;let c=[...n.get(i)??[]].filter(l=>l!==d).sort();c.length!==0&&r.push({child_id:i,scalar_parent_id:d,dependency_parent_ids:c,legacy_terminal:o.has(i)&&o.has(d)&&c.every(l=>o.has(l))})}return r.sort((i,s)=>i.child_id.localeCompare(s.child_id))}function J(e,t=n=>n==="closed"||n==="canceled",o=x()){let n=We(e),r=Xe(n,o),i=Tt(r),s=new Set([...n].filter(([,c])=>t(c.status)).map(([c])=>c)),d=vt([...n.keys()],new Map([...i.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:r,cycles:d,cardinality_violations:xt(r,i.parents_by_child,s),divergences:Rt(n,r,s)}}function Un(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 Tt(e){let t=new Map,o=new Map;for(let n of e){let r=t.get(n.child_id)??new Set;r.add(n.parent_id),t.set(n.child_id,r);let i=o.get(n.parent_id)??new Set;i.add(n.child_id),o.set(n.parent_id,i)}return{parents_by_child:new Map([...t].map(([n,r])=>[n,[...r].sort()])),children_by_parent:new Map([...o].map(([n,r])=>[n,[...r].sort()]))}}function de(e,t){let o=new Set(t);return e.every(n=>o.has(n))}function jn(e,t,o,n,r){let i=K(o);if(!i)return;let s=J(e,n,r),d=J(t,n,r),c=d.divergences.find(a=>!s.divergences.some(p=>p.child_id===a.child_id&&p.scalar_parent_id===a.scalar_parent_id&&de(a.dependency_parent_ids,p.dependency_parent_ids)));if(c){let a=[c.scalar_parent_id,...c.dependency_parent_ids].sort();throw new v(`Hierarchy mutation would assign ${c.child_id} to multiple parents: ${a.join(", ")}.`,I.CONFLICT,{code:"hierarchy_parent_divergence_created",source_id:i,target_id:c.child_id,verification_errors:a})}let l=d.cardinality_violations.find(a=>(a.child_id===i||a.parent_ids.includes(i))&&!s.cardinality_violations.some(p=>p.child_id===a.child_id&&de(a.parent_ids,p.parent_ids)));if(l)throw new v(`Hierarchy mutation would assign ${l.child_id} to multiple parents: ${l.parent_ids.join(", ")}.`,I.CONFLICT,{code:"hierarchy_cardinality_created",source_id:i,target_id:l.child_id,verification_errors:l.parent_ids});let u=d.cycles.find(a=>a.item_ids.includes(i)&&!s.cycles.some(p=>de(a.item_ids,p.item_ids)));if(u)throw new v(`Hierarchy mutation would create a cycle: ${u.item_ids.join(" -> ")}.`,I.CONFLICT,{code:"hierarchy_cycle_created",source_id:i,verification_errors:u.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 Dt="global";function Wn(e){let t=e?.trim();if(t)return C(t)?Dt:t}function Xn(e,t,o){return St(e,t,o)}function St(e,t,o){let n=e.trim();return C(o)||T(n)?n:Me(n,t)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="41f814be-ee87-5cae-b674-69c2e7f42655")}catch{}})();function B(e){if(typeof e!="string")return;let t=e.trim();if(!(!t||["none","null","n/a","na"].includes(t.toLowerCase())))return t}function U(e){let t=B(e);return t?.toLowerCase()==="no-active-blocker"?void 0:t}function j(e,t,o=!0){let n=B(e);return o&&(C(t)||n!==void 0&&T(n))}function ce(e,t){return j(e,t)?`external\0${e}`:`local\0${e.toLowerCase()}`}function qe(e,t,o,n){return j(e,t)?n.get(e):o.get(e.toLowerCase())}function A(e,t){let o=e.toLowerCase(),n=t.toLowerCase();return o!==n?o<n?-1:1:e!==t?e<t?-1:1:0}function Lt(e){let t=new Map;for(let o of e.dependencies??[]){if(typeof o!="object"||o===null)continue;let n=o,r=B(n.id);if(!r)continue;let i=typeof n.kind=="string"?n.kind:"related",s=`${i}\0${ce(r,n.source_kind)}`,d=t.get(s);d?d.count+=1:t.set(s,{target_id:r,kind:i,count:1})}return t}function Ot(e,t=o=>o==="closed"||o==="canceled"){let o=[];for(let n of e)if(!(typeof n?.id!="string"||n.id.trim().length===0))for(let r of Lt(n).values())r.count<2||o.push({holder_id:n.id.trim(),target_id:r.target_id,kind:r.kind,occurrences:r.count,holder_status:n.status,legacy_terminal:t(n.status)});return o.sort((n,r)=>{let i=A(n.holder_id,r.holder_id);if(i!==0)return i;let s=A(n.target_id,r.target_id);return s!==0?s:A(n.kind,r.kind)})}function At(e,t,o,n,r){if(typeof o!="object"||o===null)return;let i=B(o.id);if(!i||ce(i,o.source_kind)!==ce(t))return;let s=r.resolve(typeof o.kind=="string"?o.kind:"related");if(!(s?.ordering!==!0||(s.precedence??"source_before_target")!=="source_before_target"))return{holder_id:e.id.trim(),target_id:i,dependency_kind:s.kind,holder_status:e.status,legacy_terminal:n(e.status)}}function Bt(e,t=n=>n==="closed"||n==="canceled",o=x()){let n=new Map;for(let r of e){if(typeof r?.id!="string"||r.id.trim().length===0)continue;let i=B(r.blocked_by);if(i)for(let s of r.dependencies??[]){let d=At(r,i,s,t,o);d&&n.set(`${d.holder_id.toLowerCase()}\0${d.target_id.toLowerCase()}\0${d.dependency_kind}`,d)}}return[...n.values()].sort((r,i)=>{let s=A(r.holder_id,i.holder_id);if(s!==0)return s;let d=A(r.target_id,i.target_id);return d!==0?d:A(r.dependency_kind,i.dependency_kind)})}function ae(e,t=o=>o==="closed"||o==="canceled"){let o=e.filter(c=>typeof c?.id=="string"&&c.id.trim().length>0),n=new Set(o.map(c=>c.id.trim().toLowerCase())),r=new Map,i=(c,l,u,a,p)=>{let g=B(l);if(!g||n.has(g.toLowerCase())||j(g,void 0,p))return;let f={holder_id:c.id.trim(),target_id:g,kind:u,source:a,holder_status:c.status,legacy_terminal:t(c.status),no_active_blocker_sentinel:g.toLowerCase()==="no-active-blocker"};r.set(`${f.holder_id}::${f.target_id}::${f.kind}::${f.source}`,f)};for(let c of o){i(c,c.parent,"parent","parent",!1),i(c,c.blocked_by,"blocked_by","blocked_by",!0);for(let l of c.dependencies??[]){if(typeof l!="object"||l===null)continue;let u=l;C(u.source_kind)||i(c,u.id,typeof u.kind=="string"?u.kind:"related","dependency",!0)}}let s=[...r.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)),d=s.filter(c=>c.legacy_terminal);return{active:s.filter(c=>!c.legacy_terminal),legacy_terminal:d,no_active_blocker_sentinels:s.filter(c=>c.no_active_blocker_sentinel)}}function Nt(e){let t=new Map;for(let o of[...e.active,...e.legacy_terminal]){if(o.no_active_blocker_sentinel)continue;let n=o.target_id.trim(),r=n.toLowerCase();t.has(r)||t.set(r,n)}return[...t.values()].sort((o,n)=>o.localeCompare(n))}function Mt(e){let t=new Map;for(let o of e){let n=U(o.blocked_by);n&&j(n)&&!t.has(n)&&t.set(n,n);for(let r of o.dependencies??[]){if(typeof r!="object"||r===null||!j(r.id,r.source_kind))continue;let i=U(r.id);i&&!t.has(i)&&t.set(i,i)}}return[...t.values()].sort((o,n)=>o.localeCompare(n))}var Ye=new WeakMap;function eo(e){return e.hierarchyIntegrity??Ye.get(e)}function $t(e,t=x()){let o={};for(let n of e)for(let r of n.dependencies??[]){if(typeof r!="object"||r===null)continue;let i=r.kind;if(typeof i!="string")continue;let s=i.trim().toLowerCase().replaceAll("-","_"),d=t.resolve(i);d&&s!==d.kind&&(o[s]=(o[s]??0)+1)}return Object.fromEntries(Object.entries(o).sort(([n],[r])=>n.localeCompare(r)))}function le(e,t,o){let n=o??x(),r=e.filter(f=>typeof f?.id=="string"&&f.id.trim().length>0),i=new Map(r.map(f=>[f.id.trim().toLowerCase(),f.id.trim()])),s=ae(r,t),d=Nt(s);for(let f of d)i.set(f.toLowerCase(),f);let c=Mt(r),l=new Set(i.keys()),u=new Map;for(let f of c){let y=f;for(;l.has(y.toLowerCase());)y=`external:${y}`;u.set(f,y),l.add(y.toLowerCase())}let a=r.map(f=>{let y=U(f.parent),m=U(f.blocked_by),h=(f.dependencies??[]).flatMap(b=>{if(typeof b!="object"||b===null)return[];let k=b,E=U(k.id);return E?[{id:qe(E,k.source_kind,i,u),kind:typeof k.kind=="string"?k.kind:"related"}]:[]});return{id:f.id.trim(),...y?{parent:i.get(y.toLowerCase())}:{},...m?{blocked_by:qe(m,void 0,i,u)}:{},dependencies:h}}),p=J(r,t,n),g={graph:_e.fromItems([...a,...d.map(f=>({id:f})),...c.map(f=>({id:u.get(f)}))],n),details:[...r.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()}:{}})),...d.map(f=>({id:f,title:`[missing] ${f}`,status:"missing"})),...c.map(f=>({id:u.get(f),title:`[external] ${f}`,status:"external"}))],missingIdSet:new Set(d.map(f=>f.toLowerCase())),dangling:s,duplicateRows:Ot(r,t),orderingContradictions:Bt(r,t,n),legacyAliasCounts:$t(r,n),hierarchyIntegrity:p};return Ye.set(g,p),g}import{createHash as Pt}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 Kt=64,Ut=8;function jt(e,t){let o=(e.dependencies??[]).map(n=>{if(typeof n!="object"||n===null)return"";let r=n;return`${typeof r.kind=="string"?r.kind:"related"}:${typeof r.id=="string"?r.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??"",o].join("\0")}function Je(e,t=n=>n==="closed"||n==="canceled",o=R()){let n=e.filter(i=>typeof i?.id=="string"&&i.id.trim().length>0).map(i=>jt(i,t)).sort(),r=o.list().map(i=>Ie(i)).sort();return Pt("sha256").update(n.join("")).update("").update(r.join("")).digest("hex")}function Ve(e,t,o){let n=t??o;if(!Number.isInteger(n)||n<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`);return n}var ue=class{#e=new Map;#t;#n;constructor(t={}){this.#t=Ve("maxResultsPerWorkspace",t.maxResultsPerWorkspace,Kt),this.#n=Ve("maxWorkspaces",t.maxWorkspaces,Ut)}lookup(t,o,n){let r=this.#e.get(t),i=!0;(r===void 0||r.fingerprint!==o)&&(r={fingerprint:o,assembly:n(),results:new Map},i=!1,!this.#e.has(t)&&this.#e.size>=this.#n&&this.#e.delete(this.#e.keys().next().value)),this.#e.delete(t),this.#e.set(t,r);let s=r,d=this.#t;return{assembly:s.assembly,assemblyReused:i,fingerprint:o,memoize(c,l){let u=s.results.get(c);if(u!==void 0||s.results.has(c))return s.results.delete(c),s.results.set(c,u),{value:structuredClone(u),reused:!0};let a=l();return s.results.size>=d&&s.results.delete(s.results.keys().next().value),s.results.set(c,structuredClone(a)),{value:a,reused:!1}}}}clear(){this.#e.clear()}},Qe=new ue;function Ze(){return Qe}function io(){Qe.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]="3b494263-6359-57e9-8f34-b0bdcdeda93f")}catch{}})();var F=1200,zt=["prerequisite","dependent","ancestor","descendant","provenance","related"],Ft=new TextEncoder;function pe(e,t,o){let n=e??t;if(!Number.isInteger(n)||n<1)throw new TypeError(`Relationship context ${o} must be positive`);return n}function z(e){return Math.max(1,Math.ceil(Ft.encode(JSON.stringify(e)).byteLength/4))}function Q(e,t,o){let n=o.resolve(e.kind);if(n?.ordering){let r=(n.precedence??"source_before_target")==="source_before_target"?e.source:e.target;return t===r?"prerequisite":"dependent"}if(n?.hierarchy){let r=n.hierarchyDirection==="source_parent"?e.source:e.target;return t===r?"ancestor":"descendant"}return e.kind==="discovered_from"||e.kind==="incident_from"?"provenance":"related"}function Gt(e,t,o,n){let r=e.filter(i=>i.source===t&&i.target===o||i.target===t&&i.source===o).map(i=>Q(i,o,n));return[...new Set(r)].sort()}function Ht(e){return zt.find(t=>e.includes(t))}function Wt(e,t,o,n){let r=n.direction??"both",i=n.maxDepth??3;if(!Number.isInteger(i)||i<0)throw new TypeError("Relationship context maxDepth must be non-negative");let s=new Set([t]),d=[{id:t,distance:0}],c=[],l=0,u=!1;for(let a=0;a<d.length;a+=1){n.signal?.throwIfAborted();let p=d[a];if(p.distance>=i&&u)continue;let g=e.neighborEdges(p.id,{direction:r,kinds:n.kinds,signal:n.signal});if(l+=g.meta.inspectedEdges,p.distance>=i){g.value.some(f=>!s.has(f.id))&&(u=!0);continue}for(let{id:f,edge:y}of g.value){if(s.has(f))continue;s.add(f);let m={id:f,distance:p.distance+1,via:p.id,role:Q(y,f,o)};c.push(m),d.push(m)}}return{rows:c,visitedNodes:d.length,inspectedEdges:l,depthTruncated:u}}function Xt(e,t,o,n){let r={prerequisite:0,dependent:0,ancestor:0,descendant:0,provenance:0,related:0},i=e.neighborEdges(t,{direction:n.direction??"both",kinds:n.kinds,signal:n.signal}).value;for(let{id:s,edge:d}of i)r[Q(d,s,o)]+=1;return{directEdges:r,directTotal:i.length,rootEdges:i.map(({edge:s})=>s)}}function qt(e,t,o,n){let r=new Set;for(let i of t){let s=i.source===o?i.target:i.source,d=Q(i,s,n);(d==="prerequisite"||d==="ancestor")&&r.add(s)}return[...e].sort((i,s)=>Number(r.has(s.id))-Number(r.has(i.id))||i.distance-s.distance||i.id.localeCompare(s.id))}function Yt(e,t){let o=e.distance===1?Gt(t.rootEdges,t.rootId,e.id,t.registry):[];return{...t.details.get(e.id)??{id:e.id},distance:e.distance,role:o.length>0?Ht(o):e.role,via:e.via,reasons:o.length>0?o:[`${e.role} via ${e.via} (depth ${e.distance})`]}}function Vt(e){let t=[],o=e.initialTokens,n=0;for(let r of e.candidates){if(t.length>=e.nodeLimit)break;let i=Yt(r,e),s=z(i);if(o+s>e.tokenBudget)break;let d=e.rootEdges.filter(c=>c.source===r.id||c.target===r.id).reduce((c,l)=>c+z(l),0);if(o+n+s+d>e.tokenBudget){if(t.length>0)break}else n+=d;t.push(i),o+=s}if(e.candidates.length>0&&t.length===0)throw new TypeError("Relationship context tokenBudget cannot fit one node");return{nodes:t,usedTokens:o}}function Jt(e){let t=e.options.kinds?new Set(e.options.kinds.map(i=>e.registry.require(i).kind)):void 0,o=e.graph.edges().filter(i=>{if(!e.included.has(i.source)||!e.included.has(i.target))return!1;if(t===void 0||t.has(i.kind))return!0;let s=e.registry.resolve(i.kind)?.inverse;return s!==void 0&&t.has(s)}).sort((i,s)=>+(s.source===e.rootId||s.target===e.rootId)-+(i.source===e.rootId||i.target===e.rootId)),n=[],r=e.initialTokens;for(let i of o){if(n.length>=e.edgeLimit)break;let s=z(i);r+s>e.tokenBudget||(n.push(i),r+=s)}return{edges:n,usedTokens:r,candidateCount:o.length}}function et(e,t,o,n={}){if(!e.nodes().includes(t))throw new TypeError(`Relationship node not found: ${t}`);let r=pe(n.nodeLimit,20,"nodeLimit"),i=pe(n.edgeLimit,40,"edgeLimit"),s=pe(n.tokenBudget,F,"tokenBudget"),d=n.registry??R(),c=new Map(o.map(O=>[O.id,O])),l=c.get(t)??{id:t},{evidence:u=[],...a}=l,p=[...u],g=Wt(e,t,d,n),{rootEdges:f,...y}=Xt(e,t,d,n),m=qt(g.rows,f,t,d),h=Se("relationship-context",{rootId:t,direction:n.direction??"both",kinds:[...n.kinds??[]].sort(),maxDepth:n.maxDepth??3,ordering:"required-root-evidence-first-v1"}),b=Oe(m,n.cursor,h,({id:O})=>O,"--cursor"),k=m.slice(b),E=z(a)+z(p);if(E>s)throw new TypeError("Relationship context tokenBudget cannot fit root and evidence");let w=Vt({candidates:k,details:c,rootEdges:f,rootId:t,registry:d,nodeLimit:r,tokenBudget:s,initialTokens:E}),{nodes:L}=w,lt=new Set([t,...L.map(({id:O})=>O)]),ge=Jt({graph:e,rootId:t,included:lt,options:n,registry:d,edgeLimit:i,tokenBudget:s,initialTokens:w.usedTokens}),{edges:Z,usedTokens:ut}=ge,G=b+L.length,ee=G<m.length,he=L.at(-1),te=ge.candidateCount-Z.length,ye=g.depthTruncated||ee||te>0,pt={rootId:t,...a.status===void 0?{}:{rootStatus:a.status},...y,discoveredNodes:m.length,returnedNodes:L.length,returnedEdges:Z.length,omittedNodes:m.length-G,omittedEdges:te,evidenceCount:p.length,hasMore:ee};return{root:a,summary:pt,nodes:L,edges:Z,evidence:p,meta:{exact:!0,truncated:ye,completeness:ye?"truncated":"complete",nodeLimit:r,edgeLimit:i,tokenBudget:s,usedTokens:ut,visitedNodes:g.visitedNodes,inspectedEdges:g.inspectedEdges,omittedNodes:m.length-G,omittedEdges:te,...ee&&he?{nextCursor:Le(h,he.id,G-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]="196b7f2d-b09b-5432-b4ef-9cdf82e92731")}catch{}})();var Qt=["tree","graph","context"],Zt=["none","repeated"],en=["outgoing","incoming","both"],tn=32,nn=200,on=400,rn=16e3;function sn(e){let t=e?.trim().toLowerCase()??"tree";if(Qt.includes(t))return t;throw new v(`Invalid --format value "${e}". Use "tree", "graph", or "context".`,I.USAGE)}function N(e,t){if(e===void 0)return;let o=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(o)||o<1)throw new v(`Invalid --${t} value "${e}". Use a positive integer.`,I.USAGE);return o}function nt(e){if(e===void 0)return;let t=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(t)||t<0)throw new v(`Invalid --max-depth value "${e}". Use a non-negative integer.`,I.USAGE);return t}function dn(e){let t=e?.trim().toLowerCase()??"none";if(Zt.includes(t))return t;throw new v(`Invalid --collapse value "${e}". Use "none" or "repeated".`,I.USAGE)}function cn(e){let t=e?.trim().toLowerCase()??"both";if(en.includes(t))return t;throw new v(`Invalid --direction value "${e}". Use "outgoing", "incoming", or "both".`,I.USAGE)}function an(e,t=R()){if(e===void 0)return;let o=(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);if(o.length===0)return;let n=new Set;for(let r of o){let i=t.resolve(r);if(!i){let s=t.list().map(d=>d.kind).join(", ");throw new v(`Invalid --kind value "${r}". Registered kinds: ${s}.`,I.USAGE)}n.add(i.kind)}return[...n].sort()}function ln(e){if(!e||e.length===0)return[];let t=e.map(({id:n,kind:r})=>({id:n.trim(),kind:r.trim().toLowerCase()})).sort((n,r)=>{let i=n.kind.localeCompare(r.kind);return i!==0?i:n.id.localeCompare(r.id)}),o=new Map;for(let n of t){let r=`${n.kind.toLowerCase()}::${n.id.toLowerCase()}`;o.has(r)||o.set(r,{id:n.id,kind:n.kind})}return[...o.values()]}function un(e){return{id:e.id,title:e.title,type:e.type,status:e.status,dependencies:ln(e.dependencies)}}function pn(e){return M(new TextEncoder().encode(JSON.stringify({...e,dependencies:void 0})).byteLength)}function fn(e,t,o,n,r,i,s,d,c){for(let l of t.dependencies){let u=Math.max(1,Math.ceil(JSON.stringify({from:e.id,to:l.id,kind:l.kind}).length/3));if(d.nodes>=d.nodeLimit){e.truncated=!0,d.reasons.add("node_limit");break}if(d.edges>=d.edgeLimit){e.truncated=!0,d.reasons.add("edge_limit");break}if(d.estimatedTokens+u>=d.tokenBudget){e.truncated=!0,d.reasons.add("token_budget");break}d.edges+=1,d.estimatedTokens+=u,e.dependencies.push(ot(l.id,o,n,r,i,s,d,c+1,l.kind))}}function mn(e,t,o,n,r,i,s,d){return s.estimatedTokens>=s.tokenBudget&&t?.dependencies.length?(e.truncated=!0,s.reasons.add("token_budget"),!0):!t||e.cycle?!0:n!==void 0&&d>=n?(t.dependencies.length>0&&(e.truncated=!0,s.reasons.add("max_depth")),!0):r==="repeated"&&i.has(o)?(e.collapsed=!0,!0):!1}function ot(e,t,o,n,r,i,s,d=0,c){let l=e.trim().toLowerCase(),u=t.get(l),a={id:u?.id??e,title:u?.title,type:u?.type,status:u?.status,via:c,missing:!u,cycle:o.has(l),dependencies:[]};if(s.nodes+=1,s.estimatedTokens+=pn(a),mn(a,u,l,n,r,i,s,d))return a;r==="repeated"&&i.add(l);let p=new Set(o);return p.add(l),fn(a,u,t,p,n,r,i,s,d),a}function tt(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 gn(e){let t=new Map,o=new Map,n=[e];for(;n.length>0;){let d=n.pop();t.set(d.id,tt(t.get(d.id),{id:d.id,title:d.title,type:d.type,status:d.status,missing:d.missing}));for(let c of d.dependencies){t.set(c.id,tt(t.get(c.id),{id:c.id,title:c.title,type:c.type,status:c.status,missing:c.missing}));let l=c.via??"related",u=`${d.id}::${c.id}::${l}`;o.has(u)||o.set(u,{from:d.id,to:c.id,kind:l}),c.cycle||n.push(c)}}let r=[...t.values()].sort((d,c)=>d.id.localeCompare(c.id)),i=[...o.values()].sort((d,c)=>{let l=d.from.localeCompare(c.from);if(l!==0)return l;let u=d.to.localeCompare(c.to);return u!==0?u:d.kind.localeCompare(c.kind)}),s=r.filter(d=>d.missing).map(d=>d.id);return{root_id:e.id,nodes:r,edges:i,missing_ids:s}}function rt(e,t,o){let n=new Set,r=new Set,i=new Set,s=new Set,d=[{id:e,depth:0}],c=0;for(;c<d.length;){let l=d[c++],u=l.id.trim().toLowerCase();n.add(u);let a=t.get(u);if(!a){i.add(u);continue}if(!(o!==void 0&&l.depth>=o)&&!s.has(u)){s.add(u);for(let p of a.dependencies)r.add(`${u}::${p.id.trim().toLowerCase()}::${p.kind}`),d.push({id:p.id,depth:l.depth+1})}}return{node_count:n.size,edge_count:r.size,edge_basis:"deduplicated_directed",missing_count:i.size}}function hn(e,t=R()){let o=nt(e.maxDepth),n=N(e.nodeLimit,"node-limit"),r=N(e.edgeLimit,"edge-limit"),i=N(e.tokenBudget,"token-budget"),s=an(e.kind,t);return{direction:cn(e.direction),...s===void 0?{}:{kinds:s},...o===void 0?{}:{maxDepth:o},...n===void 0?{}:{nodeLimit:n},...r===void 0?{}:{edgeLimit:r},...i===void 0?{}:{tokenBudget:i},...e.cursor?.trim()?{cursor:e.cursor.trim()}:{}}}function yn(e,t,o,n){return et(e.graph,t,e.details.map(r=>r.id===t&&n.length>0?{...r,evidence:n}:r),o)}function fe(e,t,o,n){for(let r of o.slice(0,n)){let i=r?.trim();i&&e.push(`${t}:${i}`)}}async function _n(e,t,o,n){let r=await Ke(e,t,o.id_prefix,o.item_format,n);if(!r)return[];let{document:i}=await Ue(r,{schema:o.schema}),s=i.metadata,d=s.files??[],c=s.tests??[],l=s.docs??[],u=[["files",d.length],["tests",c.length],["docs",l.length],["comments",(s.comments??[]).length],["notes",(s.notes??[]).length],["learnings",(s.learnings??[]).length]];if(u.every(([,p])=>p===0))return[];let a=[`linked:${u.map(([p,g])=>`${p}=${g}`).join(",")}`];return fe(a,"file",d.map(p=>p.path),3),fe(a,"test",c.map(p=>p.command??p.path),2),fe(a,"doc",l.map(p=>p.path),2),a}function kn(e){let{canonicalId:t,context:o,missingCount:n,missingReferences:r,referenceLimit:i,summaryOnly:s}=e;return{id:t,format:"context",node_count:o.nodes.length+1,edge_count:o.edges.length,edge_basis:"deduplicated_directed",missing_count:n,missing_scope:"traversal",missing_reference_count:r.length,...s?{}:{missing_references:r.slice(0,i),context:o}}}function bn(e){let{row:t,missingReachableSet:o,packetIds:n,filteredKinds:r,registry:i}=e;if(t.no_active_blocker_sentinel||!o.has(t.target_id.trim().toLowerCase())||!n.has(t.holder_id))return!1;if(r===void 0)return!0;let s=i.resolve(t.kind);return s!==void 0&&(r.has(s.kind)||s.inverse!==void 0&&r.has(s.inverse))}function it(e,t){let o=Ce(),n=t.commandOptionsOverride??(o?.command==="deps"?o.options:t.commandOptions);return Ae("deps",{...n,...t.global,resolvedOutputFormat:t.format},e)}function me(e,t){let o=it(e,t),n=r=>Ne(r,t.format,t.global.lean===!0);return n(t.global.tokenAccounting===!0?Be(o,n):o)}function st(e,t,o){let n;for(;;){let r=M(new TextEncoder().encode(me(e,t)).byteLength);if(r===n)return r;o(r),n=r}}function dt(e){return e instanceof TypeError&&e.message.startsWith("Relationship context tokenBudget cannot fit ")}function ct(e){let{assembly:t,canonicalId:o,contextOptions:n,rootEvidence:r,summaryOnly:i,rendering:s,missingCount:d,missingReferences:c}=e,l=n.edgeLimit??40,u=Math.min(l,c.length),a=n.tokenBudget,p;for(;;){let g=yn(t,o,{...n,...a===void 0?{}:{tokenBudget:a}},r);p??=g.meta.tokenBudget,a??=p;let f=kn({canonicalId:o,context:g,missingCount:d,missingReferences:c,referenceLimit:u,summaryOnly:i});if(i){if(M(new TextEncoder().encode(me(S(f,!0,s.legacyAliasCounts),s)).byteLength)>p)throw new TypeError("Relationship context tokenBudget cannot fit the rendered summary");return f}if(g.meta.tokenBudget=p,g.meta.usedTokens=st(S(f,!1,s.legacyAliasCounts),s,h=>{g.meta.usedTokens=h}),g.meta.usedTokens<=p)return f;if(u>0){u-=1;continue}let y=a,m=y*p/g.meta.usedTokens;a=Math.min(y-1,Math.max(1,Math.floor(m*.9)))}}function at(e,t){let o=e.contextOptions,n={...e.rendering.global,outputFormat:e.rendering.format},r=["--pm-path",e.pmRoot,"item","deps",e.canonicalId,"--format","context","--output-format",e.rendering.format,"--token-budget"],i=r.length;r.push(String(t));let s=new Set(["--pm-path","--format","--output-format","--token-budget"]),d={format:"context",tokenBudget:t,kind:o.kinds},c=[["--max-depth","maxDepth",o.maxDepth],["--node-limit","nodeLimit",o.nodeLimit],["--edge-limit","edgeLimit",o.edgeLimit],["--direction","direction",o.direction],["--cursor","cursor",o.cursor],["--output-include","outputInclude",n.outputInclude],["--output-limit","outputLimit",n.outputLimit],["--output-budget","outputBudget",n.outputBudget],["--output-session","outputSession",n.outputSession],["--output-cursor","outputCursor",n.outputCursor]];for(let[a,p,g]of c)g!==void 0&&(r.push(a,String(g)),s.add(a),d[p]=g);for(let a of o.kinds??[])r.push("--kind",a),s.add("--kind");let l=[["--summary","summary",e.summaryOnly],["--full","full",e.rendering.commandOptions.full],["--json","json",n.json],["--lean","lean",n.lean],["--output-row-contract","outputRowContract",n.outputRowContract],["--token-accounting","tokenAccounting",n.tokenAccounting],["--no-extensions","noExtensions",n.noExtensions],["--no-pager","noPager",n.noPager]];for(let[a,p,g]of l)g===!0&&(r.push(a),s.add(a),d[p]=!0);let u=Re.find(a=>a.command==="deps");return Reflect.set(d,xe,{canonical_include_modes:[],cli_invocation_observed:!0,explicit_legacy_aliases:Object.values(u.dimensions).flatMap(a=>a.legacy_aliases.flatMap(p=>s.has(p.flag)?[p.flag]:[]))}),Te("deps",d),ne(d.summary===!0,d.full===!0,"--summary"),n.outputInclude=d.outputInclude,{args:r,budgetIndex:i,summaryOnly:d.summary===!0,rendering:{...e.rendering,global:n,commandOptionsOverride:d}}}function vn(e,t,o){let n={...t.rendering,commandOptionsOverride:{...t.rendering.commandOptionsOverride,tokenBudget:o}},r;try{r=ct({...e,contextOptions:{...e.contextOptions,tokenBudget:o},summaryOnly:t.summaryOnly,rootEvidence:t.summaryOnly?[]:e.rootEvidence,rendering:n})}catch(s){if(!dt(s))throw s;return"native_floor"}let i=it(S(r,t.summaryOnly,n.legacyAliasCounts),n);return De(i)?"output_constraints":"fits"}async function wn(e,t){let o=e.contextOptions.tokenBudget??F,n=at(e,o),r=(n.summaryOnly?1:1+Math.min(e.contextOptions.edgeLimit??40,e.missingReferences.length))*(e.assembly.details.reduce((a,p)=>a+p.id.length+p.title.length+p.status.length+(p.type?.length??0),e.assembly.graph.edges().length+e.missingReferences.length)+(n.summaryOnly?[]:e.rootEvidence).reduce((a,p)=>a+p.length,0)),{findContextBudgetRecovery:i}=await import("./context-budget-recovery-5MKOCGY5.js"),s=i({requested:o,initialBudget:F,workUnits:r,probe:a=>vn(e,n,a)}),d=["--pm-path",e.pmRoot,"item","deps",e.canonicalId,"--format","tree","--summary"],c=X(d),l=s.feasible_tokens===null?d:[...n.args];s.feasible_tokens!==null&&(l[n.budgetIndex]=String(s.feasible_tokens));let u=X(l);return ze("Relationship context tokenBudget cannot fit the required rendered packet",{exitCode:I.USAGE,cause:t,context:{code:"invalid_argument_value",field:"tokenBudget",value:String(o),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:[u,c],nextSteps:[u],recovery:{recovery_mode:"compact",suggested_flags:["--token-budget"],token_budget:s,suggested_retry_args:l,suggested_retry:u,next_best_command:c,fallback_candidates:[{source:"relationship_summary",command:c,reason:"Inspect bounded counts separately from context rows."}]}}})}async function In(e){let{pmRoot:t,assembly:o,canonicalId:n,options:r,rootEvidence:i,summaryOnly:s,rendering:d}=e,c=hn(r,o.graph.registry()),l=o.graph.closure(n,{direction:c.direction,...c.kinds===void 0?{}:{kinds:c.kinds},maxDepth:c.maxDepth??3}),u=l.value.filter(h=>o.missingIdSet.has(h.toLowerCase())),a=new Set(u.map(h=>h.toLowerCase())),p=o.graph.registry(),g=c.kinds?new Set(c.kinds.map(h=>p.require(h).kind)):void 0,f=new Set([n,...l.value]),y=[...o.dangling.active,...o.dangling.legacy_terminal].filter(h=>bn({row:h,missingReachableSet:a,packetIds:f,filteredKinds:g,registry:p})),m={pmRoot:t,assembly:o,canonicalId:n,contextOptions:c,rootEvidence:i,summaryOnly:s,rendering:d,missingCount:u.length,missingReferences:y};try{return ct(m)}catch(h){if(h instanceof v&&h.code==="invalid_query_cursor"){let b=at({...m,contextOptions:{...c,cursor:void 0},rendering:{...d,global:{...d.global,outputCursor:void 0}}},c.tokenBudget??F),k=X(b.args);throw new v(h.message,h.exitCode,{...h.context,nextSteps:[...h.context.nextSteps,k],recovery:{suggested_retry:k,suggested_retry_args:b.args}})}throw dt(h)?await wn(m,h):h}}function En(e){let t=[e],o;for(;t.length>0;){let n=t.pop();n.dependencies.length>0&&(o=n,t.push(...n.dependencies))}return o?(o.dependencies.pop(),o.truncated=!0,!0):!1}function Cn(e,t,o,n,r,i,s){let d=r??tn,c=N(o.nodeLimit,"node-limit")??nn,l=N(o.edgeLimit,"edge-limit")??on,u=N(o.tokenBudget,"token-budget")??rn,a={nodeLimit:c,edgeLimit:l,tokenBudget:u,nodes:0,edges:0,estimatedTokens:0,reasons:new Set},p=ot(e,n,new Set,d,t==="graph"?"repeated":i,new Set,a),g=rt(e,n,void 0),f;for(;;){let y=gn(p),m=a.reasons.size===0?void 0:{reasons:[...a.reasons].sort(),limits:{max_depth:d,node_limit:c,edge_limit:l,token_budget:u},estimated_tokens:0,total_node_count:g.node_count,total_edge_count:g.edge_count,omitted_node_count:Math.max(0,g.node_count-y.nodes.length),omitted_edge_count:Math.max(0,g.edge_count-y.edges.length)},h={id:e,format:t,node_count:y.nodes.length,edge_count:y.edges.length,edge_basis:"deduplicated_directed",missing_count:y.missing_ids.length,...m?{truncation:m}:{}};if(f=t==="tree"?{...h,tree:p}:{...h,graph:y},(f.truncation===void 0?M(new TextEncoder().encode(me(S(f,!1,s.legacyAliasCounts),s)).byteLength):st(S(f,!1,s.legacyAliasCounts),s,b=>{f.truncation.estimated_tokens=b}))<=u)return f;if(!En(p))return a.reasons.add("token_budget"),f;a.reasons.add("token_budget")}}function S(e,t,o={}){let n={name:e.format==="tree"?"dependency_tree":e.format==="graph"?"dependency_graph":"relationship_context",restore_with:"--full"},r=e.context?.meta.truncated?[{name:"relationship_context_bounds",restore_with:"--token-budget <n> --node-limit <n> --edge-limit <n> --max-depth <n>"}]:[];return{...e,legacy_alias_counts:o,projection:{mode:t?"summary":"full",declared_field_groups:[n,...r],included_field_groups:t?[]:[n.name]}}}async function Bo(e,t,o){let n=we(process.cwd(),o.path);await Pe(n);let r=sn(t.format),i=nt(t.maxDepth),s=dn(t.collapse);ne(t.summary===!0,t.full===!0,"--summary");let d=t.summary===!0,c=await $e(n),l=be(c,W()),u=await je(n,c.item_format,l.type_to_folder,void 0,c.schema),a=Ee(c.schema),p=new Map(u.map(m=>[m.id.trim().toLowerCase(),un(m)])),g=ae(u,m=>D(m,a));for(let m of[...g.active,...g.legacy_terminal]){let h=p.get(m.holder_id.trim().toLowerCase()),b=m.kind.trim().toLowerCase();h&&!h.dependencies.some(k=>k.id.trim().toLowerCase()===m.target_id.trim().toLowerCase()&&k.kind===b)&&h.dependencies.push({id:m.target_id,kind:b})}if(!p.has(e.trim().toLowerCase()))throw new v(`Item ${e} not found`,I.NOT_FOUND);let f=o.outputFormat??(o.json===!0||o.json===void 0&&o.defaultOutputFormat==="json"?"json":"toon");if(r==="context"){let m=p.get(e.trim().toLowerCase()).id,h=d?[]:await _n(n,m,c,l.type_to_folder),b=w=>D(w,a),k=x(),E=Ze().lookup(n,Je(u,b,k),()=>le(u,b,k));return S(await In({pmRoot:n,assembly:E.assembly,canonicalId:m,options:t,rootEvidence:h,summaryOnly:d,rendering:{format:f,global:o,commandOptions:t,legacyAliasCounts:E.assembly.legacyAliasCounts}}),d,E.assembly.legacyAliasCounts)}let y=Object.fromEntries(Object.entries(le(u,m=>D(m,a)).legacyAliasCounts));return d?S({id:e,format:r,...rt(e,p,i)},!0,y):S(Cn(e,r,t,p,i,s,{format:f,global:o,commandOptions:t,legacyAliasCounts:y}),!1,y)}export{re as a,ft as b,P as c,Y as d,Ge as e,mt as f,gt as g,ht as h,kt as i,Wn as j,Xn as k,St as l,x as m,Kn as n,J as o,Un as p,Tt as q,jn as r,U as s,Ot as t,Bt as u,ae as v,Nt as w,eo as x,le as y,Je as z,ue as A,Ze as B,io as C,F as D,et as E,N as F,nt as G,cn as H,an as I,Bo as J};
2
+ //# sourceMappingURL=chunk-PWUTFKSI.js.map
@@ -0,0 +1,91 @@
1
+ import{Aa as Be,B as ye,Ba as J,C as Tt,D as q,Ja as Ue,La as pe,Ta as Ot,ab as Dt,ea as St,ha as xt,ib as kt,ja as Rt,jb as he,q as He,r as Ct,za as We}from"./chunk-WSYPVBKS.js";import{b as le}from"./chunk-RY4QEMAE.js";import{h as vt}from"./chunk-4PW5XWVI.js";import{Aa as Me,Ac as fe,Ba as Ae,Bc as Le,Ca as O,Ec as je,Na as ht,Nc as K,Nd as bt,Od as $e,Ra as _t,Sa as gt,a as de,be as Et,ce as It,ec as wt,ma as mt,na as ft,qa as yt,uc as G,va as ue,wc as Fe,xa as pt,xc as me,yc as L,zc as Pe}from"./chunk-HUXZCPWT.js";import{A as y,B as ut,C as Y,E as P,I as N,t as F,y as lt,z as h}from"./chunk-G6ERMFJ5.js";import Si from"node:crypto";import _e 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 Mt(e){let t=[],i=!1;for(let o of(e??"").toLowerCase()){let r=o.charCodeAt(0),n=r>=48&&r<=57,a=r>=97&&r<=122;if(!n&&!a){i=t.length>0;continue}i&&(t.push("-"),i=!1),t.push(o)}return t.length===0?"pm-":`${t.join("")}-`}function V(e){let t=e.trim().toLowerCase();return t.startsWith("#")&&(t=t.slice(1)),t}function Q(e,t){let i=Mt(t),o=V(e);return o.startsWith(i)?o:`${i}${o}`}function xi(e){let t=bt(e);if(t!==void 0)return t;let i="";for(let o=0;o<e;o+=1)i+=Si.randomInt(0,36).toString(36);return i}async function Ri(e,t,i){let o=[...new Set(Object.values(i))].flatMap(r=>[_e.join(e,r,`${t}.md`),_e.join(e,r,`${t}.toon`)]);return o.push(_e.join(e,"history",`${t}.jsonl`)),(await Promise.all(o.map(r=>Y(r)))).some(Boolean)}var Nt=4,At=12;function Oi(e){return typeof e!="number"||!Number.isFinite(e)?Nt:Math.min(At,Math.max(Nt,Math.trunc(e)))}async function _r(e,t,i={}){let o=Oi(i.tokenLength),r=Math.min(o+6,At),n=0;for(;o<=r;){for(let a=0;a<32;a+=1){let s=`${Mt(t)}${xi(o)}`;if(!await(i.probeExisting===!1?Y(_e.join(e,"history",`${s}.jsonl`)):Ri(e,s,i.typeToFolder??F)))return s;n+=1}o+=1}throw new Error(`Unable to generate unique id after ${n} attempts`)}(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 Z(e,t=!1){let i=e[0];if(i?.op!=="history_compact_baseline")return 0;let o=i.context?.history_compaction,r=typeof o=="object"&&o!==null&&"version_offset"in o?o.version_offset:void 0;if(typeof r=="number"&&Number.isSafeInteger(r)&&r>=0&&Number.isSafeInteger(r+e.length))return r;if(t)return null;throw new y("This compacted stream has no trustworthy version offset; numeric history addresses are unavailable.",h.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."]})}import Ft from"node:fs/promises";import ee from"node:path";import{isUtf8 as Di}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]="697f1dbe-8315-5901-ab11-e0c5211dbdbf")}catch{}})();var ki=1048576,Ni=4194304;async function Pt(e,t){let i=ee.dirname(e);for(;i!==ee.parse(e).root;){let r=await Ft.stat(i).catch(n=>{if(P(n))return null;throw n});if(r!==null){if(!r.isDirectory())throw new y("Workflow policy storage ancestor must be a directory.",h.CONFLICT,{code:"workflow_policy_input_unreadable",nextSteps:["Restore the policy or approval history directory before retrying."]});break}i=ee.dirname(i)}let o=await Ft.open(e,"r").catch(r=>{if(P(r))return null;throw r});if(o===null)return null;try{let r=(await o.stat()).size,n=Buffer.alloc(Math.min(t,r)+1),a=0;for(;a<n.length;){let s=await o.read(n,a,n.length-a,a);if(s.bytesRead===0)break;a+=s.bytesRead}if(a===n.length||!Di(n.subarray(0,a)))throw new y("Workflow policy input exceeds its byte bound or is not valid UTF-8.",h.CONFLICT,{code:"workflow_policy_input_unreadable",nextSteps:["Inspect the policy and approval history; reduce the declaration or use verified history compaction before retrying."]});return n.toString("utf8",0,a)}finally{await o.close()}}function Mi(e){if(e===null)return{version:1,enforcement:"advise",policies:[]};let t;try{t=JSON.parse(e)}catch{throw new y("schema/policies.json must contain valid JSON.",h.CONFLICT,{code:"workflow_policy_registry_invalid",nextSteps:["Restore valid policy JSON before retrying the mutation."]})}return ht(t)}async function Ai(e){return Mi(await Pt(ee.join(e,"schema","policies.json"),ki))}async function Fi(e,t){let i=await Pt(O(e,t),Ni);if(i===null)return[];let o;try{if(o=i.split(/\r?\n/).filter(r=>r.trim()).map(r=>JSON.parse(r)),!pe(o).ok)throw new Error("invalid chain")}catch{throw new y("Approval evidence requires a valid item history chain.",h.CONFLICT,{code:"workflow_policy_approval_history_invalid",nextSteps:[`Run pm history ${t} --verify before recording or using an approval.`]})}return o.flatMap(r=>{let n=r.context?.workflow_approval;if(r.op!=="policy_approve"||r.record_hash_version!==1||typeof r.record_hash!="string"||typeof n!="object"||n===null)return[];let a=n;return typeof a.policy_fingerprint!="string"||typeof a.content_fingerprint!="string"?[]:[{policy_fingerprint:a.policy_fingerprint,content_fingerprint:a.content_fingerprint,author:r.author}]})}async function Pi(e,t,i){let o=i.before?.status!==i.after?.status&&t.policies.some(a=>a.rule.kind==="approval"&&_t(a,i)),r=i.before?.id??i.after?.id,n=o&&typeof r=="string"?await Fi(e,r):[];return gt(t,{...i,approvals:n})}async function ze(e){let t=await Ai(e.pmRoot),i=await Pi(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(i.allowed)return i;let o=i.decisions.filter(l=>!l.satisfied&&l.effect==="refuse"),r=[],n="";if(!e.dryRun)try{let l=await Ot({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:i.decisions},message:"Workflow policy refused a proposed item mutation.",lockTtlSeconds:e.settings.locks.ttl_seconds,lockWaitMs:e.settings.locks.wait_ms});r.push({path:"history/_workspace.jsonl",op:"policy_refused",record_hash:l.entry.record_hash}),n=" Audit appended to tracker-relative history/_workspace.jsonl; retain it with the workspace changes. Each refused attempt records its own audit event."}catch(l){let p=new y("Workflow policy refusal could not be recorded in workspace history.",h.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 p.cause=l,p}let a=o.slice(0,3).map(l=>({policy_id:l.policy_id,rule:l.rule,description:t.policies.find(p=>p.id===l.policy_id).description,missing_fields:l.missing_fields})),s=[...new Set(a.flatMap(l=>l.missing_fields))],d=a.map(l=>`${l.policy_id} (${l.rule})`).join(", "),c=o.length>3?` and ${o.length-3} more`:"",m=e.after?.metadata.id??e.before.metadata.id,u=s.map(l=>{if(e.before===null)return`Supply ${l} in the original ${e.operation} request, then retry; the item was not created.`;let p=mt("update",l);return p===void 0?`Supply ${l} using its declared SDK or package mutation contract, then retry.`:K(["update",m,ft("update",p),`<${l}>`,"--pm-path",ee.resolve(e.pmRoot)])});throw new y(`Workflow policy refused ${e.operation}: ${d}${c}.${s.length?` Missing: ${s.join(", ")}.`:""}${n}`,h.CONFLICT,{code:"workflow_policy_refused",side_effects:r,reason:a.map(l=>l.policy_id).join(","),policy_violations:a,policy_violation_count:o.length,required:s.length?`Supply missing fields: ${s.join(", ")}, then retry the refused mutation.`:"Satisfy the declared workflow policy before retrying.",why:a.map(l=>l.description).filter(Boolean).join(" ")||void 0,recovery:{missing_required_fields:s},nextSteps:[...u,...new Set(o.slice(0,3).filter(l=>l.missing_fields.length===0).map(l=>l.remediation)),...o.length>3?[`Inspect all policies with pm schema policies before retrying ${e.operation}.`]:[]]})}import{AsyncLocalStorage as Li}from"node:async_hooks";import{channel as ji}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 Xe=new Li,Ye=ji("@unbrained/pm-cli/item-metadata-enumeration/v1");function ge(e){Ye.publish(e)}async function Lr(e){let t={enumeration_calls:0,metadata_rows:0},i=o=>{Xe.getStore()?.includes(t)&&(t.enumeration_calls+=1,t.metadata_rows+=o)};Ye.subscribe(i);try{return{result:await Xe.run([...Xe.getStore()??[],t],e),work:{...t}}}finally{Ye.unsubscribe(i)}}import{AsyncLocalStorage as $i}from"node:async_hooks";import we 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]="39bf765c-1374-5ba5-b8a9-44137f80c976")}catch{}})();var te=new $i;function Wr(e,t){return te.run([...te.getStore()??[],{...e,pmRoot:we.resolve(e.pmRoot)}],t)}function Ge(e,t){for(let i of te.getStore()??[])i.pmRoot===we.resolve(e)&&i.id===t.metadata.id&&i.validate(t)}function Lt(e,t){for(let i of te.getStore()??[])i.pmRoot===we.resolve(e)&&i.id===t.metadata.id&&i.committed?.(t)}function jt(e,t){return Object.assign({},...(te.getStore()??[]).filter(i=>i.pmRoot===we.resolve(e)&&i.id===t.metadata.id).map(i=>i.historyContext))}import j from"node:fs/promises";import Ht from"node:path";import{randomUUID as Hi}from"node:crypto";import{createRequire as Wi}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 Bi="metadata-query-index.sqlite",ie="5",Ke;function oe(){return Ke!==void 0||(Ke=Rt(process.versions.node,Wi(import.meta.url))),Ke}function $t(e,t){return Math.max(0,Math.floor(e===void 0?t:e))}function B(e){return Ht.join(e,"runtime",Bi)}function Ui(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 Ee(e,t,i){e.prepare("INSERT INTO metadata(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(t,i)}function Wt(e,t){let i=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(i.id,t.relativePath,JSON.stringify(i),i.status,i.type,i.priority,i.updated_at,i.created_at,i.parent??null,i.assignee??null,i.sprint??null,i.release??null),e.prepare("DELETE FROM item_metadata_keys WHERE item_id = ?").run(i.id),e.prepare("DELETE FROM item_linked_files WHERE item_id = ?").run(i.id),e.prepare("DELETE FROM item_search WHERE rowid = (SELECT rowid FROM items WHERE id = ?)").run(i.id),e.prepare("INSERT INTO item_search(rowid, id, title, description, tags) SELECT rowid, ?, ?, ?, ? FROM items WHERE id = ?").run(i.id,i.title,i.description,i.tags.join(" "),i.id);let o=e.prepare("INSERT INTO item_metadata_keys(item_id, key) VALUES (?, ?)");for(let n of Object.keys(i))o.run(i.id,n);let r=e.prepare("INSERT INTO item_linked_files(item_id, path, scope, note) VALUES (?, ?, ?, ?)");for(let n of t.linkedFiles??[])r.run(i.id,n.path,n.scope,n.note??null)}async function Bt(e){let t=B(e.pmRoot),i=oe();if(!i){await j.rm(t,{force:!0});return}await j.mkdir(Ht.dirname(t),{recursive:!0});let o=`${t}.${Hi()}.tmp`,r;try{r=new i(o),Ui(r),r.exec("BEGIN IMMEDIATE"),Ee(r,"version",ie),Ee(r,"context_fingerprint",e.contextFingerprint),Ee(r,"source_cursor",e.sourceCursor);for(let n of e.rows)Wt(r,n);r.exec("COMMIT"),r.close(),r=void 0,await j.rm(t,{force:!0}),await j.rename(o,t)}catch(n){throw r?.close(),await Promise.allSettled([j.rm(o,{force:!0})]),n}}function Ie(e){return Object.fromEntries(e.prepare("SELECT key, value FROM metadata").all().map(t=>[String(t.key),String(t.value)]))}async function Ut(e){let t=oe();if(!t)return!1;let i=B(e.pmRoot),o;try{await j.access(i),o=new t(i),o.exec("PRAGMA foreign_keys = ON");let r=Ie(o);if(r.version!==ie||r.context_fingerprint!==e.contextFingerprint||r.source_cursor!==e.expectedSourceCursor)return o.close(),!1;o.exec("BEGIN IMMEDIATE");let n=o.prepare("DELETE FROM items WHERE relative_path = ?"),a=o.prepare("SELECT rowid FROM items WHERE relative_path = ?"),s=o.prepare("DELETE FROM item_search WHERE rowid = ?");for(let d of e.deletedRelativePaths??[]){let c=a.get(d);n.run(d),c&&s.run(c.rowid)}return e.row&&Wt(o,e.row),Ee(o,"source_cursor",e.sourceCursor),o.exec("COMMIT"),o.close(),!0}catch{try{o?.exec("ROLLBACK")}catch{}return o?.close(),!1}}function be(e,t,i,o,r){!o||o.length===0||(e.push(`${i} ${r} (${o.map(()=>"?").join(", ")})`),t.push(...o))}function zi(e){let t=[],i=[];be(t,i,"status",e.statuses,"IN"),be(t,i,"status",e.excludeStatuses,"NOT IN"),be(t,i,"type",e.types,"IN"),be(t,i,"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 = ?)"),i.push(o);for(let[o,r]of[["parent",e.parent],["assignee",e.assignee],["sprint",e.sprint],["release",e.release]])r!==void 0&&(t.push(`${o} = ?`),i.push(r));return e.priority!==void 0&&(t.push("priority = ?"),i.push(e.priority)),{where:t.length===0?"":` WHERE ${t.join(" AND ")}`,parameters:i}}async function qr(e){let t=oe();if(!t)return null;let i=e.query??{},{where:o,parameters:r}=zi(i),n;try{n=new t(B(e.pmRoot),{readOnly:!0});let a=Ie(n);if(a.version!==ie||a.source_cursor!==e.expectedSourceCursor)return n.close(),null;let s=n.prepare(`SELECT COUNT(*) AS count FROM items${o}`).get(...r),d=[],c="";i.limit!==void 0?(c+=" LIMIT ?",d.push(Math.max(0,Math.floor(i.limit))),i.offset!==void 0&&(c+=" OFFSET ?",d.push(Math.max(0,Math.floor(i.offset))))):i.offset!==void 0&&(c+=" LIMIT -1 OFFSET ?",d.push(Math.max(0,Math.floor(i.offset))));let m=n.prepare(`SELECT metadata_json FROM items${o}
72
+ ORDER BY ${i.terminalStatuses&&i.terminalStatuses.length>0?`CASE WHEN status IN (${i.terminalStatuses.map(()=>"?").join(", ")}) THEN 1 ELSE 0 END ASC, `:""}priority ASC, updated_at DESC, id ASC${c}`).all(...r,...i.terminalStatuses??[],...d).map(u=>{let l=JSON.parse(String(u.metadata_json));if(!l.id)throw new TypeError("Indexed metadata row has no id");return l});return n.close(),{source_cursor:a.source_cursor,total:Number(s.count),items:m}}catch{return n?.close(),null}}async function Jr(e){let t=oe();if(!t||e.paths.length===0)return null;let i;try{i=new t(B(e.pmRoot),{readOnly:!0});let o=Ie(i);if(o.version!==ie||o.source_cursor!==e.expectedSourceCursor)return i.close(),null;let r=e.paths.map(()=>"?").join(", "),n=e.scope===void 0?"":" AND scope = ?",a=[...e.paths,...e.scope===void 0?[]:[e.scope]],s=`path IN (${r})${n}`,d=i.prepare(`SELECT COUNT(DISTINCT item_id) AS count
73
+ FROM item_linked_files
74
+ WHERE ${s}`).get(...a),c=$t(e.limit,50),m=$t(e.offset,0),u=i.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 ${s}
79
+ )
80
+ ORDER BY items.priority ASC, items.updated_at DESC, items.id ASC
81
+ LIMIT ? OFFSET ?`).all(...a,c,m),l=[];if(u.length>0){let p=u.map(_=>String(_.id)),f=i.prepare(`SELECT item_id, path, scope, note
82
+ FROM item_linked_files
83
+ WHERE item_id IN (${p.map(()=>"?").join(", ")})
84
+ AND ${s}
85
+ ORDER BY path ASC, scope ASC`).all(...p,...a),g=new Map(p.map(_=>[_,[]]));for(let _ of f){let b=String(_.item_id),S=g.get(b);S.push({path:String(_.path),scope:String(_.scope),..._.note===null?{}:{note:String(_.note)}}),g.set(b,S)}for(let _ of u){let b=JSON.parse(String(_.metadata_json));l.push({item:b,files:g.get(String(_.id))})}}return i.close(),{source_cursor:o.source_cursor,total:Number(d.count),matches:l}}catch{return i?.close(),null}}async function Vr(e){let t=oe();if(!t)return null;let i;try{i=new t(B(e.pmRoot),{readOnly:!0});let o=Ie(i);if(o.version!==ie||o.source_cursor!==e.expectedSourceCursor)return i.close(),null;let r=i.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(n=>JSON.parse(String(n.metadata_json)));return i.close(),{source_cursor:o.source_cursor,items:r}}catch{return i?.close(),null}}async function ve(e){await j.rm(B(e),{force:!0})}import E from"node:fs/promises";import w from"node:path";import{createHash as Xi,randomUUID as Kt}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 R=8,qt=500,Yi="metadata-derived-index",Gi="metadata-cache.json",Ki="metadata-cache-bodies.json",qi="metadata-cache-collections.json",Ji="metadata-cache-delta.json",Vi="metadata-cache-manifest.json",zt=4,Qi=["comments","notes","learnings","files","tests","test_runs","docs"];function Jt(){return le(G())}function Te(e){let t={...e},i={};for(let o of Qi)o in t&&(i[o]=t[o],delete t[o]);return{light:t,heavy:i}}function Vt(e,t){return!t||Object.keys(t).length===0?e:{...e,...t}}function Qt(e,t,i,o){let r=Xi("sha256");r.update(`format:${e??"default"}`);let n=Object.entries(t).sort(([a],[s])=>a.localeCompare(s)).map(([a,s])=>`${a}=${s}`).join(",");return r.update(`|types:${n}`),i&&r.update(`|schema:${JSON.stringify(i)}`),o.length>0&&r.update(`|extension_fields:${o.join(",")}`),r.digest("hex").slice(0,16)}function Se(e){return w.join(e,"runtime",Gi)}function xe(e){return w.join(e,"runtime",Ki)}function Re(e){return w.join(e,"runtime",qi)}function Je(e){return w.join(e,"runtime",Ji)}function Ve(e){return w.join(e,"runtime",Vi)}function Oe(e,t){let i=w.extname(e);return`${e.slice(0,-i.length)}.${t}${i}`}var Zi=24,C=new Map,De=new WeakMap;function Qe(e){return De.get(e)??e.source_cursor}function eo(e,t){let i=Qe(e);if(!(t.base_source_cursor!==i||e.source_cursor===t.source_cursor)){De.set(e,i);for(let[o,r]of Object.entries(t.changes))r.entry?e.entries[o]=r.entry:delete e.entries[o];e.directory_signatures=t.directory_signatures,e.source_cursor=t.source_cursor}}function to(e,t){if(!e)return;let i=Qe(e);if(!(t.base_source_cursor!==i||e.source_cursor===t.source_cursor)){De.set(e,i);for(let[o,r]of Object.entries(t.changes))r.body?e.bodies[o]=r.body:delete e.bodies[o];e.source_cursor=t.source_cursor}}function io(e,t){if(!e)return;let i=Qe(e);if(!(t.base_source_cursor!==i||e.source_cursor===t.source_cursor)){De.set(e,i);for(let[o,r]of Object.entries(t.changes))r.collections?e.collections[o]=r.collections:delete e.collections[o];e.source_cursor=t.source_cursor}}function oo(e,t,i,o){!e||!o||e.context_fingerprint!==o.context_fingerprint||(eo(e,o),to(t,o),io(i,o))}function qe(e,t){C.size>=Zi&&!C.has(e)&&wt(C),C.set(e,t)}async function M(e,t){let i;try{i=await E.stat(e)}catch{return C.delete(e),null}let o=C.get(e);if(o&&re(o.signature,i.mtimeMs,i.ctimeMs,i.size))return C.delete(e),C.set(e,o),o.envelope;let r;try{r=t(await E.readFile(e,"utf8"))}catch{r=null}return qe(e,{signature:{mtime_ms:i.mtimeMs,ctime_ms:i.ctimeMs,size:i.size},envelope:r}),r}async function ro(e,t,i){let o=s=>{let d=JSON.parse(s);return d.version!==R||typeof d.source_cursor!="string"||typeof d.entries!="object"||d.entries===null?null:d},r=Se(e),n=await M(r,o);if(!t||n===null||n.context_fingerprint===t)return n;let a=await M(Oe(r,t),o);return a===null&&se(i,`metadata_cache_context_changed:${n.context_fingerprint}->${t}`),a}async function no(e,t){let i=n=>{let a=JSON.parse(n);return a.version!==R||typeof a.source_cursor!="string"||typeof a.bodies!="object"||a.bodies===null?null:a},o=xe(e),r=await M(o,i);return t&&r?.context_fingerprint!==t?await M(Oe(o,t),i):r}async function ao(e,t){let i=n=>{let a=JSON.parse(n);return a.version!==R||typeof a.source_cursor!="string"||typeof a.collections!="object"||a.collections===null?null:a},o=Re(e),r=await M(o,i);return t&&r?.context_fingerprint!==t?await M(Oe(o,t),i):r}async function Ze(e){let t=Je(e),i=await M(t,o=>{let r=JSON.parse(o);return r.version!==R||typeof r.base_source_cursor!="string"||typeof r.source_cursor!="string"||typeof r.changes!="object"||r.changes===null?null:r});if(i)return{envelope:i,invalid:!1};try{return await E.stat(t),{envelope:null,invalid:!0}}catch{return{envelope:null,invalid:!1}}}async function et(e){let t=Ve(e),i=await M(t,o=>{let r=JSON.parse(o);return r.version!==R||typeof r.context_fingerprint!="string"||typeof r.source_cursor!="string"||!Number.isInteger(r.entry_count)||r.entry_count<0||typeof r.directory_signatures!="object"||r.directory_signatures===null?null:r});if(i)return i;try{await E.stat(t),await U(e)}catch{}return null}async function ne(e,t){await E.mkdir(w.dirname(e),{recursive:!0}),await N(e,JSON.stringify(t));try{let o=await E.stat(e);qe(e,{signature:{mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size},envelope:t})}catch{C.delete(e)}let i=w.dirname(w.dirname(e));if(e===Se(i)||e===xe(i)||e===Re(i)){let o=Oe(e,t.context_fingerprint);await N(o,JSON.stringify(t));try{let d=await E.stat(o);qe(o,{signature:{mtime_ms:d.mtimeMs,ctime_ms:d.ctimeMs,size:d.size},envelope:t})}catch{C.delete(o)}let r=w.dirname(e),n=w.extname(e),a=w.basename(e,n),s=(await E.readdir(r,{withFileTypes:!0}).catch(()=>[])).filter(d=>d.isFile()&&d.name!==w.basename(e)&&d.name.startsWith(`${a}.`)&&d.name.endsWith(n)).map(d=>w.join(r,d.name));if(s.length>zt){let d=(await Promise.all(s.map(async c=>{try{return{path:c,mtime:(await E.stat(c)).mtimeMs}}catch{return null}}))).filter(c=>c!==null);for(let c of d.sort((m,u)=>m.mtime-u.mtime).slice(0,Math.max(0,d.length-zt)))await E.rm(c.path,{force:!0}),C.delete(c.path)}}}function so(e,t,i){return i?t===i&&e!==i:t==="toon"&&e!=="toon"}function Zt(e,t,i){return e===void 0||so(e,t,i)}function se(e,t){e&&!e.includes(t)&&e.push(t)}function re(e,t,i,o){return e.mtime_ms===t&&e.ctime_ms===i&&e.size===o}async function co(e,t,i){let o=w.join(e,t);try{let r=await E.readdir(o);return{folder:t,dirPath:o,files:r}}catch(r){return typeof r=="object"&&r!==null&&"code"in r&&!P(r)&&se(i,`item_list_directory_read_failed:${t}`),{folder:t,dirPath:o,files:[]}}}async function lo(e,t){try{let i=await E.stat(w.join(e,t));return[t,{exists:!0,mtime_ms:i.mtimeMs,ctime_ms:i.ctimeMs,size:i.size}]}catch{return[t,{exists:!1,mtime_ms:0,ctime_ms:0,size:0}]}}async function Ce(e,t){return Object.fromEntries(await Promise.all(t.map(async i=>await lo(e,i))))}function ae(e,t){return!e||Object.keys(e).length!==Object.keys(t).length?!1:Object.entries(t).every(([i,o])=>{let r=e[i];return r!==void 0&&r.exists===o.exists&&re(r,o.mtime_ms,o.ctime_ms,o.size)})}function uo(e){return ue.some(t=>e.toLowerCase().endsWith(t))}function mo(e,t,i,o,r,n){o||(e.metadata=!0),t&&!r&&(e.body=!0),i&&!n&&(e.collections=!0)}async function fo(e,t,i){if(i)for(let o of await fe({path:e,scope:"project"}))se(t,o)}function Xt(e,t,i,o){if(e)return t&&i?i.collections:o}async function yo(e,t,i){let o=await E.stat(e),r=o.mtimeMs,n=o.ctimeMs,{size:a}=o,s=Ae(e);await fo(e,i.warnings,i.dispatchReadHooks);let d=i.previousEntries[t],c=!i.forceSourceRead&&d!==void 0&&re(d,r,n,a),m=i.previousBodies[t],u=!i.forceSourceRead&&m!==void 0&&re(m,r,n,a),l=i.previousCollections[t],p=!i.forceSourceRead&&l!==void 0&&re(l,r,n,a);if(!(!c||i.includeBody&&!u||i.includeCollections&&!p))return{mtimeMs:r,ctimeMs:n,size:a,itemFormat:s,lightMetadata:d.metadata,heavyMetadata:Xt(i.includeCollections,p,l,void 0),bodyLength:d.body_length,body:i.includeBody?m.body:void 0};let f=await E.readFile(e,"utf8"),g=ye(f,{format:s,schema:i.schema,extensionFieldNames:i.extensionFieldNames,onWarning:b=>se(i.warnings,b)}),_=Te(g.metadata);return mo(i.state.misses,i.includeBody,i.includeCollections,c,u,p),{mtimeMs:r,ctimeMs:n,size:a,itemFormat:s,lightMetadata:c?d.metadata:_.light,heavyMetadata:Xt(i.includeCollections,p,l,_.heavy),bodyLength:c?d.body_length:g.body.length,body:i.includeBody?g.body:void 0}}function po(e,t,i,o){i.state.newEntries[t]={mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size,metadata:o.lightMetadata,body_length:o.bodyLength},i.includeBody&&o.body!==void 0&&(i.state.newBodies[t]={mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size,body:o.body}),i.includeCollections&&o.heavyMetadata!==void 0&&(i.state.newCollections[t]={mtime_ms:o.mtimeMs,ctime_ms:o.ctimeMs,size:o.size,collections:o.heavyMetadata});let r=i.includeCollections?Vt(o.lightMetadata,o.heavyMetadata):o.lightMetadata,n=i.state.documentsById.get(r.id),a={metadata:r,body:o.body,item_format:o.itemFormat,item_path:e};Zt(n?.itemFormat,o.itemFormat,i.preferredFormat)&&i.state.documentsById.set(r.id,{candidate:a,itemFormat:o.itemFormat})}async function ho(e,t,i,o){try{let r=await yo(t,i,o);po(t,i,o,r)}catch{se(o.warnings,`item_list_item_read_failed:${e}/${w.basename(t)}`)}}function _o(e,t){return e&&e.context_fingerprint===t?e.entries:{}}function go(e,t){return e&&e.context_fingerprint===t?e.bodies:{}}function wo(e,t){return e&&e.context_fingerprint===t?e.collections:{}}function bo(){return{newEntries:{},newBodies:{},newCollections:{},documentsById:new Map,misses:{metadata:!1,body:!1,collections:!1}}}async function Eo(e,t){let i=[];for(let{folder:o,dirPath:r,files:n}of e)for(let a of n){if(!uo(a))continue;let s=w.join(r,a),d=w.relative(t.pmRoot,s);i.push(ho(o,s,d,t)),i.length===32&&(await Promise.all(i),i.length=0)}await Promise.all(i)}async function Io(e){if(!(!(e.state.misses.metadata||Object.keys(e.previousEntries).length!==Object.keys(e.state.newEntries).length||!ae(e.existingCache?.directory_signatures,e.directorySignatures))&&e.existingCache!==null&&e.existingCache.context_fingerprint===e.contextFingerprint))try{await ne(Se(e.pmRoot),{version:R,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,directory_signatures:e.directorySignatures,entries:e.state.newEntries}),await ne(Ve(e.pmRoot),{version:R,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:i})=>({relativePath:w.relative(e.pmRoot,i.item_path),metadata:Te(i.metadata).light,linkedFiles:i.metadata.files??[]}));t.length>=e.minimumIndexedItems?await Bt({pmRoot:e.pmRoot,contextFingerprint:e.contextFingerprint,sourceCursor:e.sourceCursor,rows:t}):await ve(e.pmRoot)}catch{}}async function vo(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 ne(xe(e.pmRoot),{version:R,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,bodies:e.state.newBodies}).catch(()=>{})}async function Co(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 ne(Re(e.pmRoot),{version:R,context_fingerprint:e.contextFingerprint,source_cursor:e.sourceCursor,collections:e.state.newCollections}).catch(()=>{})}async function tt(e,t,i={}){let o=await et(e);return i.required!==!0&&(o===null||o.entry_count<qt)?async()=>{}:Et(e,Yi,30,t,!1,!1,3e3)}async function un(e,t){let i=await et(e);if(i===null)return null;let o=await Ze(e);if(o.invalid)return await U(e),null;let r=o.envelope?.context_fingerprint===i.context_fingerprint&&o.envelope.base_source_cursor===i.source_cursor?o.envelope.source_cursor:i.source_cursor,n=o.envelope?.context_fingerprint===i.context_fingerprint&&o.envelope.base_source_cursor===i.source_cursor?o.envelope.directory_signatures:i.directory_signatures;return t&&!ae(n,await Ce(e,t))?null:{source_cursor:r,entry_count:i.entry_count}}function Yt(e,t){let i=w.relative(e,t);return i===""||i===".."||i.startsWith(`..${w.sep}`)||w.isAbsolute(i)?null:i}async function U(e){await Promise.all([Se(e),xe(e),Re(e),Je(e),Ve(e)].map(async t=>{await E.rm(t,{force:!0}),C.delete(t)})),await ve(e)}async function To(e){if(e.mutation.document===null)return{entry:null,body:null,collections:null};let t=await E.stat(e.mutation.itemPath),i=Te(e.mutation.document.metadata),o={mtime_ms:t.mtimeMs,ctime_ms:t.ctimeMs,size:t.size};return{entry:{...o,metadata:i.light,body_length:e.mutation.document.body.length},body:{...o,body:e.mutation.document.body},collections:{...o,collections:i.heavy}}}function So(e,t,i){return e?.context_fingerprint===t&&e.base_source_cursor===i?structuredClone(e.changes):{}}async function it(e){let t=Yt(e.pmRoot,e.itemPath),i=e.previousItemPath?Yt(e.pmRoot,e.previousItemPath):void 0;if(t===null||i===null)return await U(e.pmRoot),["metadata_derived_index_path_invalidated"];try{let o=Qt(e.preferredFormat,e.typeToFolder,e.schema,Jt()),r=await et(e.pmRoot);if(r===null||r.context_fingerprint!==o)return[];let n=r.source_cursor,a=await Ze(e.pmRoot);if(a.invalid)return await U(e.pmRoot),["metadata_derived_index_refresh_failed"];let s=So(a.envelope,o,n),d=a.envelope?.context_fingerprint===o&&a.envelope.base_source_cursor===n?a.envelope.source_cursor:n;i!==void 0&&(s[i]={entry:null,body:null,collections:null}),s[t]=await To({mutation:e});let c=Kt();return await ne(Je(e.pmRoot),{version:R,context_fingerprint:o,base_source_cursor:n,source_cursor:c,directory_signatures:await Ce(e.pmRoot,[...new Set(Object.values(e.typeToFolder))]),changes:s}),await Ut({pmRoot:e.pmRoot,contextFingerprint:o,expectedSourceCursor:d,sourceCursor:c,row:e.document===null?null:{relativePath:t,metadata:Te(e.document.metadata).light,linkedFiles:e.document.metadata.files},deletedRelativePaths:[...i===void 0?[]:[i],...e.document===null?[t]:[]]})||await ve(e.pmRoot),[]}catch{return await U(e.pmRoot).catch(()=>{}),["metadata_derived_index_refresh_failed"]}}function xo(e){return[...e.documentsById.values()].sort((t,i)=>t.candidate.metadata.id.localeCompare(i.candidate.metadata.id)).map(t=>t.candidate)}function Gt(e,t,i){return e?.context_fingerprint===t&&e.source_cursor===i}function Ro(e,t,i,o,r){return e.every(n=>(!t||o[n]!==void 0)&&(!i||r[n]!==void 0))}function Oo(e){let t=new Map;for(let[i,o]of Object.entries(e.previousEntries)){let r=Ae(i);if(!r)continue;let n=e.includeCollections?Vt(o.metadata,e.previousCollections[i]?.collections):o.metadata,a=t.get(n.id);Zt(a?.itemFormat,r,e.preferredFormat)&&t.set(n.id,{itemFormat:r,candidate:{metadata:n,body:e.includeBody?e.previousBodies[i]?.body:void 0,item_format:r,item_path:w.join(e.pmRoot,i)}})}return[...t.values()].sort((i,o)=>i.candidate.metadata.id.localeCompare(o.candidate.metadata.id)).map(i=>i.candidate)}function Do(e){return e.forceSourceScan||Le()||e.existingCache?.context_fingerprint!==e.contextFingerprint||e.entryKeys.length<e.minimumIndexedItems||!ae(e.existingCache?.directory_signatures,e.directorySignatures)?!1:[!e.includeBody||Gt(e.existingBodyCache,e.contextFingerprint,e.existingCache.source_cursor),!e.includeCollections||Gt(e.existingCollectionsCache,e.contextFingerprint,e.existingCache.source_cursor)].every(Boolean)&&Ro(e.entryKeys,e.includeBody,e.includeCollections,e.previousBodies,e.previousCollections)}async function ke(e,t,i,o,r,n={}){let a=n.includeBody!==!1,s=n.includeCollections!==!1,d=Jt(),c=Qt(t,i,r,d),m=await Ze(e);m.invalid&&await U(e);let u=await ro(e,c,n.cacheDiagnostics),l=a?await no(e,c):null,p=s?await ao(e,c):null;oo(u,l,p,m.envelope);let f=_o(u,c),g=go(l,c),_=wo(p,c),b=[...new Set(Object.values(i))],S=await Ce(e,b),H=Object.keys(f),D=Math.max(1,Math.floor(n.derivedIndexMinimumItems??qt));if(Do({forceSourceScan:n.forceSourceScan===!0,contextFingerprint:c,existingCache:u,existingBodyCache:l,existingCollectionsCache:p,directorySignatures:S,entryKeys:H,minimumIndexedItems:D,includeBody:a,includeCollections:s,previousBodies:g,previousCollections:_}))return Oo({pmRoot:e,preferredFormat:t,includeBody:a,includeCollections:s,previousEntries:f,previousBodies:g,previousCollections:_});let v=await Promise.all(b.map(W=>co(e,W,o))),A=Le(),T=bo(),z={pmRoot:e,preferredFormat:t,warnings:o,schema:r,extensionFieldNames:d,includeBody:a,includeCollections:s,forceSourceRead:n.forceSourceScan===!0,dispatchReadHooks:A,previousEntries:f,previousBodies:g,previousCollections:_,state:T};await Eo(v,z);let k=await Ce(e,b),x=ae(S,k)?k:{},X=T.misses.metadata||Object.keys(f).length!==Object.keys(T.newEntries).length||!ae(u?.directory_signatures,x)||u===null?Kt():u.source_cursor;return await Io({pmRoot:e,contextFingerprint:c,sourceCursor:X,existingCache:u,previousEntries:f,directorySignatures:x,state:T,minimumIndexedItems:D}),a&&await vo({pmRoot:e,contextFingerprint:c,sourceCursor:X,existingBodyCache:l,previousBodies:g,state:T}),s&&await Co({pmRoot:e,contextFingerprint:c,sourceCursor:X,existingCollectionsCache:p,previousCollections:_,state:T}),xo(T)}async function ei(e,t,i,o,r){return(await ke(e,t,i,o,r,{includeBody:!1})).map(n=>({metadata:n.metadata,body:n.body??""}))}async function ti(e,t,i,o,r){return(await ke(e,t,i,o,r,{includeBody:!1,includeCollections:!1})).map(n=>({metadata:n.metadata,body:n.body??""}))}import $ from"node:fs/promises";import{statSync as Ao}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]="ddc5bb8f-83bc-5121-a628-a501e7ed5a73")}catch{}})();function ko(e,t){let i=-1;return e.forEach((o,r)=>{let n=Date.parse(o.ts);if(!Number.isFinite(n))throw new y(`History for this item contains invalid timestamp at entry ${r+1}.`,h.GENERIC_FAILURE);n<=t&&(i=r)}),i}function No(e,t){let i=e[0]?.ts??null,o=e.at(-1)?.ts??null,r={code:"history_target_out_of_range",required:"Choose a target within the available item history.",why:"Point-in-time reads and restores can only reconstruct recorded versions.",examples:[],nextSteps:["Run pm history <id> to inspect available versions and timestamps."],valid_range:{first_version:null,last_version:null,first_timestamp:i,last_timestamp:o}};return o!==null&&(r.examples=[o],t!==null&&(r.examples.unshift(String(t+1),String(t+e.length)),r.valid_range.first_version=t+1,r.valid_range.last_version=t+e.length)),{guidance:r,lastTimestamp:o}}function Mo(e,t){let i={};if(t instanceof Error&&t.message.trim().length>0&&(i.reason=t.message.trim()),typeof t!="object"||t===null)return i;let o=t;if(typeof o.index=="number"&&Number.isInteger(o.index)&&o.index>=0&&(i.patchIndex=o.index),typeof o.operation=="object"&&o.operation!==null){let r=o.operation;Object.assign(i,Object.fromEntries(["op","path","from"].flatMap(n=>{let a=r[n];return typeof a=="string"?[[n,a]]:[]})))}if(i.patchIndex!==void 0){let r=e[i.patchIndex];r&&(i.op??=r.op,i.path??=r.path,i.from??=r.from)}return i}function ii(e,t,i={}){let o=e.trim(),r=i.errorSubject??"history",n=r==="restore"?"Restore":"History",{guidance:a,lastTimestamp:s}=No(t,Z(t,!0));if(!o)throw new y(`Missing ${r} target. Use a timestamp or version number.`,h.USAGE,a);if(/^\d+$/.test(o)){let m=Z(t),u=Number(o);if(u>=1&&u<=m)throw new y(`History version ${u} was pruned by compaction.`,h.USAGE,{...a,code:"history_version_pruned"});if(!Number.isSafeInteger(u)||u<1||u>m+t.length)throw new y(`${n} version must be between ${m+1} and ${m+t.length} for this item.`,h.USAGE,a);return{kind:"version",raw:o,historyIndex:u-m-1}}let d=Date.parse(o);if(!Number.isFinite(d))throw new y(`Invalid ${r} target "${e}". Use a positive version number or ISO timestamp.`,h.USAGE,a);let c=ko(t,d);if(c<0||i.allowFutureTimestamp!==!0&&d>Date.parse(s))throw new y(r==="restore"?`No history entries exist at or before timestamp ${o}.`:`No history entry exists at timestamp ${o}.`,h.USAGE,a);return{kind:"timestamp",raw:o,historyIndex:c}}function ot(e,t,i,o){let r=Ue(e,t);if(r.ok)return r.document;let n=Mo(t,r.error),a=[`history_op=${o}`,n.patchIndex===void 0?null:`patch_index=${n.patchIndex}`,n.op?`op=${n.op}`:null,n.path?`path=${n.path}`:null,n.from?`from=${n.from}`:null].filter(s=>s!==null);throw new y(`Failed to apply history patch at entry ${i} (${a.join(", ")}). ${n.reason??String(r.error)}`,h.GENERIC_FAILURE)}function oi(e,t){let i=e[0];if(i&&i.op!=="create"&&i.op!=="history_compact_baseline"){let a=Ue(J,i.patch);if(!a.ok||typeof a.document.metadata.id!="string")throw new y("History starts without a reconstructable item baseline.",h.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),r=pe([...o]),n=structuredClone(J);for(let a=0;a<=t;a+=1){let s=e[a];if(!s)throw new y(`History target entry ${a+1} does not exist.`,h.USAGE);n=ot(n,s.patch,a+1,s.op)}if(!r.ok)throw new y(`History cannot be replayed: ${r.errors.join(", ")}.`,h.GENERIC_FAILURE,{code:"history_replay_invalid",verification_errors:r.errors,required:"Inspect the history integrity findings before attempting recovery.",nextSteps:["Run pm history <id> --verify --full."]});return n}function _n(e,t){if(Object.keys(e.metadata).length>0){if(typeof e.metadata.id!="string"||!Array.isArray(e.metadata.tags))throw new y("History has no complete item baseline for this target.",h.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 y(`History target ${t.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,h.USAGE)}(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 Fo(e,t){let i=-1,o=structuredClone(J);for(let[s,d]of e.entries()){if(o=ot(o,d.patch,s+1,d.op),o.metadata.id!==void 0&&o.metadata.id!==t)throw new y(`History belongs to item ${String(o.metadata.id)}, expected ${t}.`,h.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)&&(i=s)}let r=Z(e,!0),n=i<0||r===null?null:r+i+1,a=n===null?void 0:String(n);if(i>=0&&a===void 0){let s=e[i].ts;ii(s,e).historyIndex===i&&(a=s)}return{version:n,target:a}}async function ri(e,t,i){let o=new Set([Q(t,i),V(t)]);for(let r of o){let n=O(e,r);if(!Ao(n,{throwIfNoEntry:!1})?.isFile())continue;let a=await xt(n,r),s=-1;if(a.forEach((p,f)=>{p.op==="delete"&&(s=f)}),s<0)continue;let d=oi(a,a.length-1);if(Object.keys(d.metadata).length!==0)continue;let{version:c,target:m}=Fo(a,r),u=m===void 0?["history",r,"--verify"]:["get",r,"--at",m],l=K(u);return new y(`Item ${r} was deleted at ${a[s].ts}; its history is retained.`,h.NOT_FOUND,{code:"item_deleted",required:"Read a retained materialized version, then restore it if the item should exist again.",item_id:r,tombstone:{deleted:!0,deleted_at:a[s].ts,recoverable:m!==void 0,last_materialized_version:c},nextSteps:[l,...m===void 0?["Recover the pre-compaction history from version control."]:[K(["restore",r,m])]],recovery:{suggested_retry:l,suggested_retry_args:u}})}}import{AsyncLocalStorage as Po}from"node:async_hooks";import ni 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]="c343ed33-0135-5d3a-94a4-67314b295168")}catch{}})();var ai=new Po;function Nn(e,t){return ai.run({...e,pmRoot:ni.resolve(e.pmRoot)},t)}function si(e,t){let i=ai.getStore();return i?.pmRoot===ni.resolve(e)&&i.itemId===t?{bulk_checkpoint:i.checkpointId}:void 0}import nt from"node:path";import Lo from"node:fs/promises";import jo 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 $o(e){return[...new Set(e.filter(t=>t.trim().length>0))].sort((t,i)=>t.localeCompare(i))}function Ho(e,t){return new y(`Missing history stream for ${e}. ${t} requires history streams when settings.history.missing_stream is strict_error.`,h.NOT_FOUND)}async function Wo(e,t){return await ut(jo.dirname(e)),await(await Lo.open(e,"a")).close(),L({path:e,scope:"project",op:`${t}:history:auto_create`})}async function rt(e){return Bo({pmRoot:e.pmRoot,settings:e.settings,itemIds:[e.itemId],commandLabel:e.commandLabel})}async function Bo(e){let t=$o(e.itemIds),i=[],o=[];for(let r of t){let n=O(e.pmRoot,r);if(!await Y(n)){if(e.settings.history.missing_stream==="strict_error")throw Ho(r,e.commandLabel);o.push(...await Wo(n,e.commandLabel)),o.push(`history_stream_auto_created:${r}`),i.push(r)}}return{auto_created_ids:i,warnings:o}}import{isUtf8 as Uo}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]="8266acd6-5564-5d56-8025-82608136296d")}catch{}})();async function zo(e){try{return await $.access(e),!0}catch{return!1}}function Xo(e,t){e&&(e.includes(t)||e.push(t))}function ci(e){return e??le(G())}function Yo(e){return e==="toon"?["toon","json_markdown"]:e==="json_markdown"?["json_markdown","toon"]:["toon","json_markdown"]}async function di(e,t,i="pm-",o,r=F){let n=t.trim(),a=n.startsWith("#")?n.slice(1):n;if(a.length===0)return null;let s=Q(t,i),d=V(t),c=[...new Set([a,s,d])].filter(l=>l.length>0),m=Object.entries(r),u=Yo(o);for(let l of c){let p=new Map;for(let[f]of m)for(let g of u){let _=Me(e,f,l,g,r);await zo(_)&&p.set(_,p.get(_)??{id:l,type:f,itemPath:_,item_format:g})}if(p.size>1){let f=[...p.keys()].map(g=>nt.relative(e,g).split(nt.sep).join("/")).sort();throw new y(`Item ${l} has ambiguous identity across ${f.join(", ")}. Preserve both documents and inspect pm ops validate --check-storage-integrity before resolving the collision.`,h.CONFLICT,{code:"item_identity_ambiguous",item_id:l,paths:f})}for(let f of p.values())return f}return null}async function li(e,t={}){let i=await Go(e,t);if(i.error!==null)throw i.error;return{raw:i.raw,document:i.document}}async function Go(e,t={}){let i=await $.readFile(e.itemPath);if(!Uo(i))throw new y("Item contains invalid UTF-8; preserve a binary backup before recovering it.",h.CONFLICT,{code:"item_document_encoding_invalid",item_id:e.id,item_path:e.itemPath,byte_length:i.length,empty:!1});let o=i.toString("utf8");await fe({path:e.itemPath,scope:"project"});let r;try{r=ye(o,{format:e.item_format,requireSupportedFormat:!0,schema:t.schema,extensionFieldNames:ci(t.extensionFieldNames),onWarning:n=>Xo(t.warnings,n)})}catch(n){if(n instanceof y&&n.code==="item_format_version_unsupported")throw new y(`Item ${e.id}: ${n.message}`,n.exitCode,{...n.context,item_id:e.id,item_path:e.itemPath});if(n instanceof y&&n.code==="item_document_invalid")return{raw:o,document:null,error:new y(`Cannot read ${e.id} at ${e.itemPath}${i.length===0?" (zero-length file)":""}: ${n.message}`,n.exitCode,{...n.context,item_id:e.id,item_path:e.itemPath,byte_length:i.length,empty:i.length===0,nextSteps:[`Run pm history ${e.id} --full, then pm restore ${e.id} <version> to recover a recorded state.`]})};throw n}return{raw:o,document:r,error:null}}async function Ko(e,t,i=F,o,r){await he(e);let n=await ei(e,t,i,o,r);return ge(n.length),n.map(a=>a.metadata)}async function _a(e,t,i=F,o,r){await he(e);let n=await ti(e,t,i,o,r);return ge(n.length),n.map(a=>a.metadata)}async function ga(e,t,i=F,o,r,n={}){await he(e);let a=await ke(e,t,i,o,r,{includeBody:!0,forceSourceScan:n.forceSourceScan});return ge(a.length),a.map(s=>({...s.metadata,body:s.body}))}function ui(e){return{async get(t){let i=await di(e.pmRoot,t,e.settings.id_prefix,e.settings.item_format,e.typeToFolder);if(!i)return null;let{document:o}=await li(i,{schema:e.settings.schema});return{item:o.metadata,body:o.body}},list:()=>Ko(e.pmRoot,e.settings.item_format,e.typeToFolder,void 0,e.settings.schema)}}async function qo(e,t){let i=new Set(Object.values(t)),o=[];return await Promise.all([...i].map(async r=>{try{let n=await $.readdir(nt.join(e,r));for(let a of n)for(let s of ue)if(a.toLowerCase().endsWith(s)){o.push(a.slice(0,-s.length));break}}catch{}})),o}async function Jo(e,t,i,o){let r=Q(t,i),n=await qo(e,o);if(n.length===0)return[];let a=Math.max(3,Math.floor(r.length/2));return n.map(s=>({id:s,distance:de(s,r,a)})).filter(s=>s.distance!==null).sort((s,d)=>s.distance-d.distance).slice(0,3).map(s=>s.id)}async function Vo(e,t,i,o){let r=await ri(e,t,i);if(r)return r;let n=await Jo(e,t,i,o),a=["Confirm the active --path/PM_PATH scope, then retry with a valid id."];return n.length>0&&a.unshift(`Did you mean one of: ${n.join(", ")}?`),new y(`Item ${t} not found`,h.NOT_FOUND,{code:"item_not_found",id:t,nextSteps:a})}function Qo(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 mi(e){let t=e.typeToFolder??yt(e.settings,G()).type_to_folder,i=await di(e.pmRoot,e.id,e.settings.id_prefix,e.settings.item_format,t);if(!i)throw await Vo(e.pmRoot,e.id,e.settings.id_prefix,t);let o=await It(e.pmRoot,i.id,e.settings.locks.ttl_seconds,e.author,!!e.force,e.settings.governance.force_required_for_stale_lock,e.settings.locks.wait_ms,{waitPolicy:"progress"}),r=o.release;try{let n=[],{raw:a,document:s}=await li(i,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames,warnings:n}),d=s.metadata.assignee?.trim(),c=s.metadata.claim_principal?.trim()||d,m=St(e.author),u=Dt(e.settings);if(d&&c!==m&&!e.force&&!Qo(e.op,e.bypassAssigneeConflict)){if(u.ownership_enforcement==="strict")throw new y(`Item ${i.id} is assigned to ${d}. Use --force to override.`,h.CONFLICT);u.ownership_enforcement==="warn"&&n.push(`ownership_warning:assignee_conflict:${i.id}:${d}`)}return{typeToFolder:t,located:i,originalRaw:a,document:s,warnings:n,releaseLock:r,lease:o}}catch(n){throw await r(),n}}async function fi(e,t,i,o){return e.fence(async()=>{let r;try{r=await $.readFile(t.itemPath,"utf8")}catch(n){if(!P(n))throw n;r=null}if(r!==i)throw new y(`Item ${t.id} changed after this mutation read it; refusing to overwrite the newer revision. Nothing was written.`,h.CONFLICT,{code:"stale_revision",item_id:t.id,reason:r===null?"item_removed":"item_revision_changed",required:"Re-read the item and apply the mutation again; the newer stored revision was kept."});return o()})}function Zo(e,t,i){if(!e.handled||typeof e.result!="object"||e.result===null)return{effectiveTargetItemPath:t,effectiveSerializedAfter:i,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:i,skipItemWrite:o.skip_write===!0}}async function er(e){let t=await je("item_store_delete",e),i=t.handled&&typeof t.result=="object"&&t.result!==null?t.result:{};return{effectiveItemPath:typeof i.item_path=="string"&&i.item_path.trim().length>0?i.item_path:e.item_path,skipDelete:i.skip_delete===!0,warnings:t.warnings}}async function tr(e){if(!e.skipItemWrite){if(e.effectiveTargetItemPath!==e.originalItemPath){await N(e.originalItemPath,e.originalRaw),await $.rm(e.effectiveTargetItemPath,{force:!0});return}await N(e.originalItemPath,e.originalRaw)}}async function at(e){vt(e.op);let t=await mi({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:i,located:o,originalRaw:r,document:n,warnings:a,releaseLock:s,lease:d}=t;try{Ge(e.pmRoot,n);let c=q(n,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),m=q(structuredClone(n),{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),u=await e.mutate(m);if(e.skipNoop===!0&&u.changedFields.length===0)return{item:c.metadata,body:c.body,changedFields:[],warnings:[...a,...u.warnings??[]]};let l={...e.resolveHistoryContext?.(),...si(e.pmRoot,o.id),...jt(e.pmRoot,n)},p=Math.max(He(c.metadata),He(m.metadata));kt(pt(e.pmRoot),p),p>Ct(m.metadata)&&(m.metadata.pm_format_version=p,u.changedFields.push("pm_format_version")),m.metadata.updated_at=$e();let f=q(m,{schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),g=await ze({pmRoot:e.pmRoot,settings:e.settings,operation:e.op,author:e.author,before:c,after:f});await Pe({pm_root:e.pmRoot,operation:e.op,before:c,after:f,changed_fields:u.changedFields,sdk:ui({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:i})});let _=await rt({pmRoot:e.pmRoot,settings:e.settings,itemId:o.id,commandLabel:e.op}),b="toon",S=Tt(f,{format:b,schema:e.settings.schema,extensionFieldNames:e.extensionFieldNames}),H=Me(e.pmRoot,f.metadata.type,o.id,b,i),D=O(e.pmRoot,o.id),v=await fi(d,o,r,async()=>{let k=await je("item_store_write",{op:e.op,pm_root:e.pmRoot,item_id:o.id,source_item_path:o.itemPath,target_item_path:H,history_path:D,item_format:b,before:c,after:f,contents:S}),{effectiveTargetItemPath:x,effectiveSerializedAfter:X,skipItemWrite:W}=Zo(k,H,S),vi=await tt(e.pmRoot,e.author),dt=[];try{W||await N(x,X),!W&&x!==o.itemPath&&await $.rm(o.itemPath);let Ci=We({nowIso:f.metadata.updated_at,author:e.author,op:e.op,before:c,after:f,message:e.message,context:g.decisions.length===0?Object.keys(l).length===0?void 0:l:{...l,workflow_policies:g.decisions}});try{await Be(D,Ci)}catch(Ti){throw await tr({skipItemWrite:W,effectiveTargetItemPath:x,originalItemPath:o.itemPath,originalRaw:r}),Ti}W||(dt=await it({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:i,schema:e.settings.schema,itemPath:x,previousItemPath:o.itemPath,document:f}))}finally{await vi()}return{derivedIndexWarnings:dt,effectiveTargetItemPath:x,overrideWarnings:k.warnings}}),{derivedIndexWarnings:A,effectiveTargetItemPath:T}=v;Lt(e.pmRoot,f);let z=[...await L({path:T,scope:"project",op:e.op,item_id:f.metadata.id,item_type:f.metadata.type,before:c,after:f,changed_fields:u.changedFields}),...await L({path:D,scope:"project",op:`${e.op}:history`,item_id:f.metadata.id,item_type:f.metadata.type,before:c,after:f,changed_fields:u.changedFields})];return Fe({id:f.metadata.id,op:e.op,item_type:f.metadata.type,previous_status:c.metadata.status,status:f.metadata.status,previous:me(c.metadata,u.changedFields),current:me(f.metadata,u.changedFields),changed_fields:u.changedFields}),{item:f.metadata,body:f.body,changedFields:u.changedFields,warnings:[...a,...u.warnings??[],...g.warnings,..._.warnings,...v.overrideWarnings,...A,...z]}}finally{await s()}}async function wa(e){let{historyContext:t,...i}=e;return at({...i,resolveHistoryContext:()=>t})}async function ba(e){return at(e)}async function Ea(e){return at(e)}async function Ia(e){let t=await mi({pmRoot:e.pmRoot,settings:e.settings,id:e.id,op:"delete",author:e.author,force:e.force}),{located:i,originalRaw:o,document:r,warnings:n,releaseLock:a,lease:s}=t;try{Ge(e.pmRoot,r);let d=ci(void 0),c=q(r,{schema:e.settings.schema,extensionFieldNames:d}),m=await ze({pmRoot:e.pmRoot,settings:e.settings,operation:"delete",author:e.author,before:c,after:null,dryRun:e.dryRun});await Pe({pm_root:e.pmRoot,operation:"delete",before:c,after:null,changed_fields:["deleted"],sdk:ui({pmRoot:e.pmRoot,settings:e.settings,typeToFolder:t.typeToFolder})});let u=await rt({pmRoot:e.pmRoot,settings:e.settings,itemId:i.id,commandLabel:"delete"}),l=$e(),p=lt,f=We({nowIso:l,author:e.author,op:"delete",before:c,after:p,message:e.message,context:m.decisions.length===0?void 0:{workflow_policies:m.decisions}}),g=O(e.pmRoot,i.id),_=()=>er({op:"delete",pm_root:e.pmRoot,item_id:i.id,item_path:i.itemPath,history_path:g,before:c});if(e.dryRun===!0){let v=await _();return{item:c.metadata,changedFields:["deleted"],targetPath:v.effectiveItemPath,warnings:[...n,...m.warnings,...u.warnings,...v.warnings]}}let b=await fi(s,i,o,async()=>{let{effectiveItemPath:v,skipDelete:A,warnings:T}=await _(),z=await tt(e.pmRoot,e.author),k=[];try{A||await $.rm(v);try{await Be(g,f)}catch(x){throw A||await N(v,o),x}A||(k=await it({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:t.typeToFolder,schema:e.settings.schema,itemPath:v,document:null}))}finally{await z()}return{derivedIndexWarnings:k,effectiveItemPath:v,overrideWarnings:T}}),{derivedIndexWarnings:S,effectiveItemPath:H}=b,D=[...await L({path:H,scope:"project",op:"delete",item_id:c.metadata.id,item_type:c.metadata.type,before:c,after:p,changed_fields:["deleted"]}),...await L({path:g,scope:"project",op:"delete:history",item_id:c.metadata.id,item_type:c.metadata.type,before:c,after:p,changed_fields:["deleted"]})];return Fe({id:c.metadata.id,op:"delete",item_type:c.metadata.type,previous_status:c.metadata.status,previous:me(c.metadata,Object.keys(c.metadata)),changed_fields:["deleted"]}),{item:c.metadata,changedFields:["deleted"],warnings:[...n,...m.warnings,...u.warnings,...b.overrideWarnings,...S,...D]}}finally{await a()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a483f454-e261-5232-bae0-da3cdb8c0518")}catch{}})();var ce=Object.freeze({max_bytes:4096,max_depth:8}),yi=160;var pi=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u,ir=new Set(["__proto__"]),I=class extends Error{reason;path;constructor(t,i){super(t),this.reason=t,this.path=i}};function hi(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function or(e,t){return/^[A-Za-z_$][\w$]*$/u.test(t)?`${e}.${t}`:`${e}[${JSON.stringify(t)}]`}function rr(e){if(Buffer.byteLength(e,"utf8")<=yi)return e;let t="",i=Buffer.byteLength("\u2026","utf8");for(let o of e){if(i+=Buffer.byteLength(o,"utf8"),i>yi)break;t+=o}return`${t}\u2026`}function Ne(e,t,i){if(e.bytes+=t,!(e.bytes<=ce.max_bytes))throw new I("byte_limit",i)}function _i(e,t,i){if(e.bytes+t>ce.max_bytes)throw new I("byte_limit",i)}function st(e,t,i){let o=Object.getOwnPropertyDescriptor(e,t);if(o===void 0||!("value"in o))throw new I("unsupported_value",i);return o.value}function nr(e,t,i){if(typeof e=="number"&&!Number.isFinite(e))throw new I("non_finite_number",t);if(typeof e=="string"&&(_i(i,e.length+2,t),pi.test(e)))throw new I("malformed_unicode",t);if(e!==null&&!["boolean","number","string"].includes(typeof e))throw new I("unsupported_value",t);return Ne(i,Buffer.byteLength(JSON.stringify(e),"utf8"),t),e}function gi(e,t,i,o){if(typeof e!="object"||e===null)return nr(e,t,o);if(i>=ce.max_depth)throw new I("depth_limit",t);if(Array.isArray(e)){let r=st(e,"length",t);if(typeof r!="number"||!Number.isSafeInteger(r)||r<0)throw new I("unsupported_value",t);Ne(o,r>0?r+1:2,t);let n=[];for(let a=0;a<r;a+=1){let s=`${t}[${a}]`;n.push(gi(st(e,String(a),s),s,i+1,o))}return n}if(!hi(e))throw new I("unsupported_value",t);return wi(e,t,i+1,o)}function wi(e,t,i,o){let r=Object.keys(e);Ne(o,r.length>0?r.length+1:2,t);let n={};for(let a of r){_i(o,a.length+3,t);let s=or(t,a);if(ir.has(a))throw new I("reserved_key",s);if(pi.test(a))throw new I("malformed_unicode",s);Ne(o,Buffer.byteLength(JSON.stringify(a),"utf8")+1,s),n[a]=gi(st(e,a,s),s,i,o)}return n}function ar(e){try{if(e instanceof I)return e}catch{}return new I("unsupported_value","details")}function bi(e){let t=ce.max_bytes,i={bytes:0};try{if(!hi(e))throw new I("not_plain_object","details");return{ok:!0,details:wi(e,"details",0,i),byte_length:i.bytes}}catch(o){let r=ar(o);return{ok:!1,omission:r.reason==="byte_limit"?{reason:"byte_limit",byte_limit:t}:{reason:r.reason,path:rr(r.path),byte_limit: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]="e82bc812-181f-57ab-a29a-61703e8bec1b")}catch{}})();function ct(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>0}function Aa(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e;if(!ct(t.requested_tokens)||t.basis!=="canonical_retry")return!1;switch(t.minimum_status){case"exact":return ct(t.minimum_feasible_tokens)&&t.feasible_tokens===t.minimum_feasible_tokens&&t.reason===void 0;case"feasible_only":return t.minimum_feasible_tokens===null&&ct(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 sr="PmCliError";function Fa(e){if(!lr(e)||e.code!=="item_already_exists"||e.exitCode!==h.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 cr(e){if(!Number.isFinite(e))throw new TypeError("createPmCliExpectedError options.exitCode must be a finite number");let t=Math.trunc(e);if(t<=h.SUCCESS)throw new TypeError("createPmCliExpectedError options.exitCode must be a positive exit code");return t}function dr(e){if(e==null)return{};if(!Object.hasOwn(e,"details"))return e;let t=Object.getOwnPropertyDescriptor(e,"details");if(!("value"in t))throw Ei("unsupported_value","details");if(t.value===void 0)return e;let i=bi(t.value);if(i.ok)return{...e,details:i.details};if(i.omission.reason==="byte_limit"){let{details:o,...r}=e;return{...r,details_omitted:i.omission}}throw Ei(i.omission.reason,i.omission.path)}function Ei(e,t){let i=new TypeError(`createPmCliExpectedError options.context.details must be plain JSON (${e})`);return Object.defineProperty(i,"path",{value:t,enumerable:!1}),i}function Pa(e,t={}){if(typeof e!="string"||e.trim().length===0)throw new TypeError("createPmCliExpectedError message must be a non-empty string");let i=new y(e,cr(t.exitCode??h.USAGE),dr(t.context));return"cause"in t&&Object.defineProperty(i,"cause",{value:t.cause,enumerable:!1,configurable:!0,writable:!0}),i}function lr(e){try{if(!(e instanceof Error)||e.name!==sr)return!1;let t=e;return typeof t.exitCode=="number"&&Number.isFinite(t.exitCode)&&typeof t.context=="object"&&t.context!==null&&!Array.isArray(t.context)}catch{return!1}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e23f9ca6-9fa6-566b-9bfb-7cbe6d449a59")}catch{}})();function ur(e,t){let i=e.trim().toLowerCase();if(i.length===0)return;let o=Math.floor(i.length/3);return t.map(r=>({candidate:r,distance:de(i,r.toLowerCase(),o)??Number.POSITIVE_INFINITY})).filter(({distance:r})=>Number.isFinite(r)).sort((r,n)=>r.distance!==n.distance?r.distance-n.distance:r.candidate.localeCompare(n.candidate))[0]?.candidate}function Ii(e){return["pm",...e].map(t=>/^[A-Za-z0-9_./:@=-]+$/u.test(t)?t:JSON.stringify(t)).join(" ")}function Wa(e){let t=e.command_path.trim().replaceAll(/\s+/gu," "),i=e.token.trim(),o=i.length===0?"<empty>":i,r=[...new Set(e.allowed.map(l=>l.trim()))].filter(Boolean).sort((l,p)=>l.localeCompare(p));if(t.length===0||o.length===0||r.length===0)throw new TypeError("Unknown-subcommand contracts require a path, token, and allowed set");let n=t.split(" "),a=e.trailing_args??[],s=e.display_name??`pm ${t}`,d=e.token_kind??"subcommand",c=e.retry_command?void 0:ur(o,r),m=Ii([...n,o,...a]),u=e.retry_command??(c?Ii([...n,c,...a]):void 0);return new y(`Unknown ${s} ${d} "${o}". Allowed: ${r.join(", ")}${e.message_suffix??""}`,e.exit_code??h.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:m,allowed_values:r,suggested_retry:u,fallback_candidates:e.fallback_candidates}})}export{Wa as a,rt as b,Bo as c,Mt as d,V as e,Q as f,_r as g,Z as h,ii as i,ot as j,oi as k,_n as l,ki as m,Mi as n,Ai as o,Fi as p,Pi as q,ze as r,Lr as s,Wr as t,Ge as u,Nn as v,qr as w,Jr as x,Vr as y,qt as z,Qi as A,tt as B,un as C,it as D,ke as E,di as F,li as G,Go as H,Ko as I,_a as J,ga as K,ui as L,Vo as M,wa as N,ba as O,Ea as P,Ia as Q,Aa as R,sr as S,Fa as T,Pa as U,lr as V};
91
+ //# sourceMappingURL=chunk-PZRB7IXH.js.map
@@ -0,0 +1,2 @@
1
+ import{G as h}from"./chunk-HUXZCPWT.js";import{A as l,m as y,z as f}from"./chunk-G6ERMFJ5.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4e02447f-3fb0-5f7c-9512-be2b348fd082")}catch{}})();var d=new Set(y),u=Object.freeze({get size(){return d.size},has(e){return d.has(e)},entries(){return d.entries()},keys(){return d.keys()},values(){return d.values()},forEach(e,t){d.forEach(n=>e.call(t,n,n,u))},[Symbol.iterator](){return d.values()}});function g(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}function b(e){return typeof e!="string"?null:h(e)}function w(e){try{return structuredClone(e)}catch{return e}}function A(e){let t=e.trim(),n=t.indexOf("=");if(n<=0)throw new l(`--field entries must use name=value syntax, received: ${e}`,f.USAGE);let i=t.slice(0,n).trim(),r=t.slice(n+1);return{key:i,value:r}}function E(e,t,n){try{let i=JSON.parse(e);if(n==="array"&&Array.isArray(i)||n==="object"&&typeof i=="object"&&i!==null&&!Array.isArray(i))return i}catch{}throw new l(`--field ${t}=... must be valid JSON ${n}`,f.USAGE)}function x(e,t,n){if(t==="string")return n;if(t==="number"){let i=n.trim();if(i.length===0)throw new l(`--field ${e}=... must be a number`,f.USAGE);let r=Number(i);if(!Number.isFinite(r))throw new l(`--field ${e}=... must be a number`,f.USAGE);return r}if(t==="boolean"){let i=n.trim().toLowerCase();if(i==="true"||i==="1"||i==="yes")return!0;if(i==="false"||i==="0"||i==="no")return!1;throw new l(`--field ${e}=... must be one of true|false|1|0|yes|no`,f.USAGE)}return t==="string_array"?n.split(/[\n,|]/u).map(i=>i.trim()).filter(i=>i.length>0):E(n,e,t)}function p(e){let t=new Map;if(!e)return t;for(let n of e.item_fields)for(let i of n.fields){let r=g(i.name),o=b(i.type);if(!r||!o)continue;let s=t.get(r);if(s&&s.type!==o)throw new l(`Extension item field "${r}" is declared with conflicting types: ${s.type}, ${o}`,f.USAGE,{code:"extension_item_field_type_conflict",nextSteps:["Make every active extension declaration for this field use the same type."]});t.set(r,{name:r,type:o})}return t}function _(e){if(u.has(e))throw new l(`Extension item field "${e}" collides with built-in item metadata "${e}"; rename the extension field with an extension-specific prefix. Reserved fields: ${[...u].sort((t,n)=>t.localeCompare(n)).join(", ")}.`,f.USAGE,{code:"extension_item_field_reserved",nextSteps:["Rename the extension item field, preferably with an extension-specific prefix."]})}function U(e){return[...p(e).keys()].sort((t,n)=>t.localeCompare(n))}function j(e,t,n,i){if(!e||e.length===0)return{};let r=p(t),o={};for(let s of e){let{key:a,value:m}=A(s),c=r.get(a);if(!c)throw $(a,r,n,i);_(c.name),o[c.name]=x(c.name,c.type,m)}return o}function $(e,t,n,i){if(u.has(e)){let s=n?.(e)??{recovery:{provided_fields:[e]},nextSteps:["Core metadata has no generic --field mutation path. Use the owning lifecycle, evidence, or importer API; inspect pm update <id> --help for declared mutation flags."]};return new l(`--field ${e} is a core item field, not an extension field`,f.USAGE,{code:"core_item_field_requires_dedicated_flag",field:e,...s})}let r=i?.(e);if(r!==void 0){let s=r.recovery?.suggested_flags?.[0];return new l(s===void 0?`--field ${e} is a project-schema field, not an extension field`:`--field ${e} is a project-schema field; set it with its declared flag ${s}`,f.USAGE,{code:"project_schema_field_requires_declared_flag",field:e,changed:!1,...r})}let o=[...t.keys()].sort((s,a)=>s.localeCompare(a));return new l(`--field ${e} is not declared by an active extension item-field registration`,f.USAGE,{code:"extension_item_field_unknown",field:e,recovery:{provided_fields:[e]},nextSteps:o.length>0?[`Use one of the declared fields: ${o.join(", ")}`]:["Activate an extension that calls registerItemFields before setting extension fields."]})}function S(e,t){return t==="string"?typeof e=="string":t==="number"?typeof e=="number"&&Number.isFinite(e):t==="boolean"?typeof e=="boolean":t==="array"?Array.isArray(e):t==="string_array"?Array.isArray(e)&&e.every(n=>typeof n=="string"):typeof e=="object"&&e!==null&&!Array.isArray(e)}function v(e,t){return!t||t.length===0?!0:t.some(n=>Object.is(n,e))}function D(e,t,n={}){if(t){p(t);for(let i of t.item_fields)for(let r of i.fields){let o=g(r.name);if(!o)continue;_(o),!(o in e)&&!n.skipDefaultFields?.has(o)&&Object.prototype.hasOwnProperty.call(r,"default")&&(e[o]=w(r.default));let s=e[o];if(s===void 0)continue;let a=b(r.type);if(a&&!S(s,a))throw new TypeError(`Item field "${o}" must be of type ${a}`);let m=Array.isArray(r.values)?r.values:void 0;if(!v(s,m))throw new TypeError(`Item field "${o}" must match one of the configured allowed values`)}}}export{u as a,U as b,j as c,D as d};
2
+ //# sourceMappingURL=chunk-RY4QEMAE.js.map
@@ -1,3 +1,3 @@
1
- import{a as c}from"./chunk-VFQAZLKO.js";import{g as d,oa as w,pa as u}from"./chunk-CIQ6YWCW.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="158d5065-075c-5355-a65c-f3edc9c5f1f0")}catch{}})();var _=new Map(d.map(e=>[e.toLowerCase(),e])),$=/^[A-Za-z][A-Za-z0-9_-]*$/;function g(e,t){if(!$.test(e))throw new Error(`${t} "${e}" is not a valid identifier. Use a single letter-led token of letters, digits, hyphen, or underscore with no spaces or punctuation (e.g. "Spike" or "code-review").`)}function y(e){return _.get(e.trim().toLowerCase())}function A(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function I(e){return e.replace(/[\\"`$]/g,t=>`\\${t}`)}function b(e){let t=new Map;for(let o of e){let n=o.trim();if(n.length===0)continue;let i=n.toLowerCase();t.has(i)||t.set(i,n)}return[...t.values()].sort((o,n)=>o.localeCompare(n))}function S(e){let t=(e.name??"").trim();if(t.length===0)throw new Error("Type name must not be empty.");g(t,"Type name");let o=y(t);if(o)throw new Error(`Cannot redefine built-in item type "${o}". Built-in types are reserved: ${d.join(", ")}.`);let n=e.description?.trim(),i=e.defaultStatus?.trim(),r=e.folder?.trim(),a=r&&r.length>0?u(r):void 0,s=b(e.aliases??[]);for(let l of s){g(l,"Alias");let f=y(l);if(f)throw new Error(`Alias "${l}" collides with built-in item type "${f}". Built-in types are reserved: ${d.join(", ")}.`)}return{name:t,description:n&&n.length>0?n:void 0,defaultStatus:i&&i.length>0?i:void 0,folder:a,aliases:s}}function x(e,t){let o=e.name.toLowerCase(),n=new Map;for(let r of t.definitions){if(typeof r.name!="string")continue;let a=r.name.trim();if(!(a.length===0||a.toLowerCase()===o)){n.set(a.toLowerCase(),a);for(let s of A(r.aliases))s.trim().length>0&&n.set(s.trim().toLowerCase(),a)}}let i=n.get(o);if(i)throw new Error(`Type name "${e.name}" collides with an alias of existing item type "${i}".`);for(let r of e.aliases){let a=n.get(r.toLowerCase());if(a)throw new Error(`Alias "${r}" already maps to existing item type "${a}".`)}}function h(e,t){return typeof t=="string"&&t.trim().length>0?u(t).toLowerCase():w(e).toLowerCase()}function D(e,t,o){let n=e.name.toLowerCase(),i=h(e.name,e.folder),r=s=>{throw new Error(`Item type "${e.name}" would store items in folder "${i}", which already belongs to existing item type "${s}". Pass a distinct --folder to keep their storage separate.`)};for(let s of t.definitions){if(typeof s.name!="string")continue;let l=s.name.trim();l.length===0||l.toLowerCase()===n||h(l,s.folder)===i&&r(l)}let a=o?.get(i);a!==void 0&&a.toLowerCase()!==n&&r(a)}function j(e){if(e==null||e.trim().length===0)return{definitions:[]};let t;try{t=JSON.parse(e)}catch{throw new Error("schema/types.json contains invalid JSON.")}return{definitions:L(t)}}function L(e){let t=C(e);if(!t)return[];let o=[];for(let n of t){if(typeof n!="object"||n===null||Array.isArray(n))continue;let i=n;typeof i.name!="string"||i.name.trim().length===0||o.push(i)}return o}function C(e){if(Array.isArray(e))return e;if(typeof e!="object"||e===null)return;let t=e;if(Array.isArray(t.definitions))return t.definitions;if(typeof t.item_types=="object"&&t.item_types!==null){let o=t.item_types;if(Array.isArray(o.definitions))return o.definitions}}function z(e,t){let o=t.name.toLowerCase(),n=e.definitions.slice(),i=n.findIndex(l=>typeof l.name=="string"&&l.name.trim().toLowerCase()===o),r=i>=0?n[i]:void 0,a=b([...A(r?.aliases),...t.aliases]),s={...r,name:t.name};return t.folder!==void 0&&(s.folder=t.folder),a.length>0?s.aliases=a:s.aliases!==void 0&&delete s.aliases,T(s,"description",t.description),T(s,"default_status",t.defaultStatus),i>=0?n[i]=s:n.push(s),n.sort((l,f)=>l.name.localeCompare(f.name)),{file:{definitions:n},definition:s,replaced:i>=0,...r&&typeof r.name=="string"?{previousName:r.name}:{}}}function F(e,t){let o=(t??"").trim();if(o.length===0)throw new Error("Type name must not be empty.");let n=y(o);if(n)throw new Error(`Cannot remove built-in item type "${n}". Built-in types are reserved: ${d.join(", ")}.`);let i=o.toLowerCase(),r=e.definitions.slice(),a=r.findIndex(l=>typeof l.name=="string"&&l.name.trim().toLowerCase()===i);if(a<0)return{file:{definitions:r},removed:!1};let[s]=r.splice(a,1);return{file:{definitions:r},removed:!0,definition:s}}function T(e,t,o){let n=e;o!==void 0&&(n[t]=o)}function M(e){return`${JSON.stringify({definitions:e.definitions},null,2)}
1
+ import{a as c}from"./chunk-HJ27QLZV.js";import{g as d,oa as w,pa as u}from"./chunk-HUXZCPWT.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="158d5065-075c-5355-a65c-f3edc9c5f1f0")}catch{}})();var _=new Map(d.map(e=>[e.toLowerCase(),e])),$=/^[A-Za-z][A-Za-z0-9_-]*$/;function g(e,t){if(!$.test(e))throw new Error(`${t} "${e}" is not a valid identifier. Use a single letter-led token of letters, digits, hyphen, or underscore with no spaces or punctuation (e.g. "Spike" or "code-review").`)}function y(e){return _.get(e.trim().toLowerCase())}function A(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function I(e){return e.replace(/[\\"`$]/g,t=>`\\${t}`)}function b(e){let t=new Map;for(let o of e){let n=o.trim();if(n.length===0)continue;let i=n.toLowerCase();t.has(i)||t.set(i,n)}return[...t.values()].sort((o,n)=>o.localeCompare(n))}function S(e){let t=(e.name??"").trim();if(t.length===0)throw new Error("Type name must not be empty.");g(t,"Type name");let o=y(t);if(o)throw new Error(`Cannot redefine built-in item type "${o}". Built-in types are reserved: ${d.join(", ")}.`);let n=e.description?.trim(),i=e.defaultStatus?.trim(),r=e.folder?.trim(),a=r&&r.length>0?u(r):void 0,s=b(e.aliases??[]);for(let l of s){g(l,"Alias");let f=y(l);if(f)throw new Error(`Alias "${l}" collides with built-in item type "${f}". Built-in types are reserved: ${d.join(", ")}.`)}return{name:t,description:n&&n.length>0?n:void 0,defaultStatus:i&&i.length>0?i:void 0,folder:a,aliases:s}}function x(e,t){let o=e.name.toLowerCase(),n=new Map;for(let r of t.definitions){if(typeof r.name!="string")continue;let a=r.name.trim();if(!(a.length===0||a.toLowerCase()===o)){n.set(a.toLowerCase(),a);for(let s of A(r.aliases))s.trim().length>0&&n.set(s.trim().toLowerCase(),a)}}let i=n.get(o);if(i)throw new Error(`Type name "${e.name}" collides with an alias of existing item type "${i}".`);for(let r of e.aliases){let a=n.get(r.toLowerCase());if(a)throw new Error(`Alias "${r}" already maps to existing item type "${a}".`)}}function h(e,t){return typeof t=="string"&&t.trim().length>0?u(t).toLowerCase():w(e).toLowerCase()}function D(e,t,o){let n=e.name.toLowerCase(),i=h(e.name,e.folder),r=s=>{throw new Error(`Item type "${e.name}" would store items in folder "${i}", which already belongs to existing item type "${s}". Pass a distinct --folder to keep their storage separate.`)};for(let s of t.definitions){if(typeof s.name!="string")continue;let l=s.name.trim();l.length===0||l.toLowerCase()===n||h(l,s.folder)===i&&r(l)}let a=o?.get(i);a!==void 0&&a.toLowerCase()!==n&&r(a)}function j(e){if(e==null||e.trim().length===0)return{definitions:[]};let t;try{t=JSON.parse(e)}catch{throw new Error("schema/types.json contains invalid JSON.")}return{definitions:L(t)}}function L(e){let t=C(e);if(!t)return[];let o=[];for(let n of t){if(typeof n!="object"||n===null||Array.isArray(n))continue;let i=n;typeof i.name!="string"||i.name.trim().length===0||o.push(i)}return o}function C(e){if(Array.isArray(e))return e;if(typeof e!="object"||e===null)return;let t=e;if(Array.isArray(t.definitions))return t.definitions;if(typeof t.item_types=="object"&&t.item_types!==null){let o=t.item_types;if(Array.isArray(o.definitions))return o.definitions}}function z(e,t){let o=t.name.toLowerCase(),n=e.definitions.slice(),i=n.findIndex(l=>typeof l.name=="string"&&l.name.trim().toLowerCase()===o),r=i>=0?n[i]:void 0,a=b([...A(r?.aliases),...t.aliases]),s={...r,name:t.name};return t.folder!==void 0&&(s.folder=t.folder),a.length>0?s.aliases=a:s.aliases!==void 0&&delete s.aliases,T(s,"description",t.description),T(s,"default_status",t.defaultStatus),i>=0?n[i]=s:n.push(s),n.sort((l,f)=>l.name.localeCompare(f.name)),{file:{definitions:n},definition:s,replaced:i>=0,...r&&typeof r.name=="string"?{previousName:r.name}:{}}}function F(e,t){let o=(t??"").trim();if(o.length===0)throw new Error("Type name must not be empty.");let n=y(o);if(n)throw new Error(`Cannot remove built-in item type "${n}". Built-in types are reserved: ${d.join(", ")}.`);let i=o.toLowerCase(),r=e.definitions.slice(),a=r.findIndex(l=>typeof l.name=="string"&&l.name.trim().toLowerCase()===i);if(a<0)return{file:{definitions:r},removed:!1};let[s]=r.splice(a,1);return{file:{definitions:r},removed:!0,definition:s}}function T(e,t,o){let n=e;o!==void 0&&(n[t]=o)}function M(e){return`${JSON.stringify({definitions:e.definitions},null,2)}
2
2
  `}function E(e,t){let o=e.trim().length>0?e.trim():e,n=t?.trim()||".agents/pm/schema/types.json";return`To register a custom type, run: pm schema add-type "${I(o)}" (writes ${n}).`}function O(e,t,o){return`Invalid type value "${e}". Allowed: ${t.join(", ")}. ${E(e,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]="77a7b77a-907c-541d-ac55-e06174dbbf11")}catch{}})();function v(e){return typeof e=="string"?e.trim().toLowerCase():""}function m(e,t){let o=c(e);return o.length===0?"":t?.alias_to_id?.get(o)??o}function U(e){let t=Array.isArray(e?.type_workflows)?e.type_workflows:[],o=new Map;for(let n of t){let i=v(n?.type);if(i.length===0||!Array.isArray(n?.allowed_transitions))continue;let r=n.allowed_transitions,a=o.get(i)??{pairs:[],denyAll:!1};r.length===0&&(a.denyAll=!0);for(let s of r){if(!Array.isArray(s)||s.length!==2)continue;let l=c(s[0]),f=c(s[1]);l.length===0||f.length===0||a.pairs.some(p=>p[0]===l&&p[1]===f)||a.pairs.push([l,f])}o.set(i,a)}return[...o.entries()].filter(([,n])=>n.pairs.length>0||n.denyAll).map(([n,i])=>({type:n,allowed_transitions:i.pairs})).sort((n,i)=>n.type.localeCompare(i.type))}function J(e){let t=v(e.typeName),o=e.typeWorkflows.find(r=>r.type===t);if(!o)return{allowed:!0,hasRule:!1,allowedTransitions:[]};let n=m(e.fromStatus,e.statusRegistry),i=m(e.toStatus,e.statusRegistry);return n.length>0&&n===i?{allowed:!0,hasRule:!0,allowedTransitions:o.allowed_transitions}:{allowed:o.allowed_transitions.some(r=>{let a=m(r[0],e.statusRegistry),s=m(r[1],e.statusRegistry);return a===n&&s===i}),hasRule:!0,allowedTransitions:o.allowed_transitions}}function W(e){return e.length===0?"(no transitions allowed)":e.map(t=>`${t[0]} -> ${t[1]}`).join(", ")}export{y as a,I as b,S as c,x as d,D as e,j as f,z as g,F as h,M as i,O as j,U as k,J as l,W as m};
3
- //# sourceMappingURL=chunk-6GMYW42K.js.map
3
+ //# sourceMappingURL=chunk-TYHDZUL4.js.map