@unbrained/pm-cli 2026.8.12 → 2026.8.14

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 (218) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +162 -111
  3. package/dist/cli/error-guidance.js +4 -8
  4. package/dist/cli/main.js +40 -3
  5. package/dist/cli/register-assurance.js +28 -17
  6. package/dist/cli-bundle/bundle-manifest.json +141 -173
  7. package/dist/cli-bundle/chunks/chunk-BBOFSVAK.js +197 -0
  8. package/dist/cli-bundle/chunks/chunk-BFALV3YP.js +5 -0
  9. package/dist/cli-bundle/chunks/{chunk-WLAHPSOX.js → chunk-FIW4P64F.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-BM5YJ2UW.js → chunk-G5JUB66K.js} +52 -52
  11. package/dist/cli-bundle/chunks/chunk-SBRKH6OR.js +2 -0
  12. package/dist/cli-bundle/chunks/chunk-TMJ7URWS.js +13 -0
  13. package/dist/cli-bundle/chunks/chunk-TXMEUUUY.js +8 -0
  14. package/dist/cli-bundle/chunks/{chunk-KOQMGCTA.js → chunk-XAVMOK6B.js} +50 -50
  15. package/dist/cli-bundle/chunks/chunk-YAMTJL6Y.js +34 -0
  16. package/dist/cli-bundle/chunks/chunk-YSVSMJ2B.js +2 -0
  17. package/dist/cli-bundle/chunks/{register-list-query-XPCJRUUD.js → register-list-query-T3EHHNNV.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-mutation-4RJCBKRS.js → register-mutation-E27WCLSZ.js} +2 -2
  19. package/dist/cli-bundle/chunks/register-operations-4R6I7CPY.js +2 -0
  20. package/dist/cli-bundle/chunks/{register-setup-LLHAKP2V.js → register-setup-3YXZ444E.js} +2 -2
  21. package/dist/cli-bundle/focused-chunks/{chunk-JAFRIWVF.js → chunk-4DQ2YERC.js} +4 -4
  22. package/dist/cli-bundle/focused-chunks/chunk-F43TT2QQ.js +8 -0
  23. package/dist/cli-bundle/focused-chunks/chunk-K7RWWOAG.js +4 -0
  24. package/dist/cli-bundle/focused-chunks/chunk-KFSZ3BP6.js +16 -0
  25. package/dist/cli-bundle/focused-chunks/{chunk-KHM2CS2C.js → chunk-KSEDUWVZ.js} +2 -2
  26. package/dist/cli-bundle/focused-chunks/chunk-KYUQGTSB.js +2 -0
  27. package/dist/cli-bundle/focused-chunks/{chunk-ZMGWAYH7.js → chunk-LZ4MV3RH.js} +2 -2
  28. package/dist/cli-bundle/focused-chunks/chunk-PGXJQLCT.js +155 -0
  29. package/dist/cli-bundle/focused-chunks/{chunk-RWPAWUOT.js → chunk-PPFGQDSI.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/chunk-Q4YY3XNF.js +2 -0
  31. package/dist/cli-bundle/focused-chunks/chunk-QK753U3U.js +46 -0
  32. package/dist/cli-bundle/focused-chunks/chunk-QUMB2J27.js +2 -0
  33. package/dist/cli-bundle/focused-chunks/chunk-SM7MTG27.js +2 -0
  34. package/dist/cli-bundle/focused-chunks/{chunk-GQW4BPUT.js → chunk-WCVE2NIG.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/chunk-XDNAW5OI.js +18 -0
  36. package/dist/cli-bundle/focused-chunks/{chunk-YIAXMC3T.js → chunk-YOOI3UZX.js} +2 -2
  37. package/dist/cli-bundle/focused-chunks/chunk-ZM6TZVHC.js +2 -0
  38. package/dist/cli-bundle/main.js +13 -13
  39. package/dist/cli-bundle/sdk-authoring.js +1 -1
  40. package/dist/cli-bundle/sdk-contracts.js +1 -1
  41. package/dist/cli-bundle/sdk-core.js +45 -41
  42. package/dist/cli-bundle/sdk-governance.js +1 -1
  43. package/dist/cli-bundle/sdk-graph.js +1 -1
  44. package/dist/cli-bundle/sdk-merge.js +109 -1
  45. package/dist/cli-bundle/sdk-query.js +1 -1
  46. package/dist/cli-bundle/sdk-runtime.js +1 -1
  47. package/dist/cli-bundle/sdk-testing.js +1 -1
  48. package/dist/cli-bundle/sdk.js +2 -2
  49. package/dist/core/checkpoint/checkpoint-gc.js +7 -12
  50. package/dist/core/extensions/activation-summary-markdown.js +5 -4
  51. package/dist/core/extensions/activation-summary.d.ts +2 -0
  52. package/dist/core/extensions/activation-summary.js +6 -2
  53. package/dist/core/extensions/capability-usage.d.ts +1 -1
  54. package/dist/core/extensions/capability-usage.js +4 -3
  55. package/dist/core/extensions/contribution-inventory.d.ts +1 -0
  56. package/dist/core/extensions/contribution-inventory.js +6 -2
  57. package/dist/core/extensions/extension-registries.js +3 -2
  58. package/dist/core/extensions/extension-types.d.ts +83 -1
  59. package/dist/core/extensions/extension-types.js +3 -2
  60. package/dist/core/extensions/loader.d.ts +2 -8
  61. package/dist/core/extensions/loader.js +53 -144
  62. package/dist/core/extensions/registration-values.d.ts +43 -0
  63. package/dist/core/extensions/registration-values.js +210 -0
  64. package/dist/core/extensions/runtime-registrations.d.ts +3 -1
  65. package/dist/core/extensions/runtime-registrations.js +12 -2
  66. package/dist/core/fs/fs-utils.d.ts +2 -0
  67. package/dist/core/fs/fs-utils.js +7 -3
  68. package/dist/core/history/drift-cache.js +4 -3
  69. package/dist/core/history/drift-scan.d.ts +6 -0
  70. package/dist/core/history/drift-scan.js +76 -58
  71. package/dist/core/history/workspace-history.d.ts +59 -0
  72. package/dist/core/history/workspace-history.js +197 -10
  73. package/dist/core/lock/lock-gc.js +8 -13
  74. package/dist/core/lock/lock.js +5 -4
  75. package/dist/core/output/output.js +12 -4
  76. package/dist/core/search/vector-stores.js +6 -11
  77. package/dist/core/store/item-metadata-cache.js +4 -4
  78. package/dist/core/telemetry/runtime.d.ts +6 -0
  79. package/dist/core/telemetry/runtime.js +101 -30
  80. package/dist/sdk/agent/command-recovery.d.ts +2 -0
  81. package/dist/sdk/agent/command-recovery.js +10 -2
  82. package/dist/sdk/annotations.js +4 -4
  83. package/dist/sdk/cli-contracts/completeness.js +9 -3
  84. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  85. package/dist/sdk/cli-contracts/flag-contracts.js +6 -3
  86. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +6 -1
  87. package/dist/sdk/cli-contracts/runtime-contracts.js +155 -60
  88. package/dist/sdk/cli-contracts/schemas/assurance-definition.d.ts +32 -0
  89. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +25 -2
  90. package/dist/sdk/cli-contracts/tool-parameter-tables.js +35 -5
  91. package/dist/sdk/cli-contracts/tool-schema.js +17 -2
  92. package/dist/sdk/cli-program.js +3 -3
  93. package/dist/sdk/comments.js +4 -3
  94. package/dist/sdk/compile-cache.js +4 -3
  95. package/dist/sdk/compose.d.ts +3 -1
  96. package/dist/sdk/compose.js +16 -2
  97. package/dist/sdk/context-relevance.js +12 -4
  98. package/dist/sdk/context-signal-store.js +4 -3
  99. package/dist/sdk/extension/install-runtime.js +4 -4
  100. package/dist/sdk/extension/managed-state.js +4 -3
  101. package/dist/sdk/extension-contracts.d.ts +1 -1
  102. package/dist/sdk/flag-invocation-contracts.js +5 -6
  103. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +14 -2
  104. package/dist/sdk/governance/assurance-action.d.ts +27 -3
  105. package/dist/sdk/governance/assurance-action.js +112 -28
  106. package/dist/sdk/governance/assurance-mutation-error.d.ts +7 -0
  107. package/dist/sdk/governance/assurance-mutation-error.js +25 -2
  108. package/dist/sdk/governance/assurance-presets.d.ts +54 -0
  109. package/dist/sdk/governance/assurance-presets.js +136 -0
  110. package/dist/sdk/governance/assurance-runtime.d.ts +4 -0
  111. package/dist/sdk/governance/assurance-runtime.js +109 -8
  112. package/dist/sdk/governance/assurance.d.ts +39 -0
  113. package/dist/sdk/governance/assurance.js +145 -6
  114. package/dist/sdk/governance/gc.js +5 -11
  115. package/dist/sdk/governance/health.js +18 -6
  116. package/dist/sdk/governance/validate-history-drift.d.ts +7 -0
  117. package/dist/sdk/governance/validate-history-drift.js +68 -0
  118. package/dist/sdk/governance/validate.js +6 -48
  119. package/dist/sdk/graph/assembly.d.ts +23 -0
  120. package/dist/sdk/graph/assembly.js +54 -2
  121. package/dist/sdk/graph/durable-cache.js +91 -3
  122. package/dist/sdk/graph/governance-contracts.d.ts +12 -0
  123. package/dist/sdk/graph/governance-contracts.js +29 -0
  124. package/dist/sdk/graph/governance.d.ts +51 -3
  125. package/dist/sdk/graph/governance.js +216 -35
  126. package/dist/sdk/graph/index.d.ts +2 -2
  127. package/dist/sdk/graph/index.js +4 -4
  128. package/dist/sdk/graph/mutation-advisory.js +15 -7
  129. package/dist/sdk/graph/remediation.js +12 -2
  130. package/dist/sdk/guide.js +4 -4
  131. package/dist/sdk/history-read.d.ts +8 -0
  132. package/dist/sdk/history-read.js +2 -2
  133. package/dist/sdk/index.d.ts +3 -2
  134. package/dist/sdk/index.js +5 -4
  135. package/dist/sdk/linked-artifacts.d.ts +2 -0
  136. package/dist/sdk/linked-artifacts.js +29 -4
  137. package/dist/sdk/merge/install.js +5 -4
  138. package/dist/sdk/query/activity.js +4 -3
  139. package/dist/sdk/query/history.js +20 -3
  140. package/dist/sdk/read-output-budget.d.ts +2 -0
  141. package/dist/sdk/read-output-budget.js +12 -5
  142. package/dist/sdk/read-output-contracts.d.ts +61 -5
  143. package/dist/sdk/read-output-contracts.js +210 -28
  144. package/dist/sdk/read-output-rows.d.ts +11 -0
  145. package/dist/sdk/read-output-rows.js +47 -2
  146. package/dist/sdk/relationship-history.js +5 -5
  147. package/dist/sdk/runtime-primitives.d.ts +1 -1
  148. package/dist/sdk/runtime-primitives.js +3 -3
  149. package/dist/sdk/runtime.js +5 -3
  150. package/dist/sdk/schema-migration.js +4 -4
  151. package/dist/sdk/test/execution.js +4 -4
  152. package/dist/sdk/workspace-memory.js +4 -4
  153. package/dist/sdk/workspace-snapshot.js +8 -14
  154. package/dist/sdk/workspace-transaction-gc.js +4 -9
  155. package/dist/sdk/workspace-transaction.js +4 -4
  156. package/dist/sdk/workspace.js +4 -3
  157. package/docs/ASSURANCE.md +163 -3
  158. package/docs/COMMANDS.md +31 -2
  159. package/docs/CONFIGURATION.md +2 -0
  160. package/docs/EXTENSIONS.md +11 -12
  161. package/docs/READ_OUTPUT_CONTRACTS.md +44 -8
  162. package/docs/RELATIONSHIP_GRAPH.md +34 -4
  163. package/docs/SDK.md +29 -8
  164. package/docs/SDK_CONTEXT_INTEGRITY.md +32 -1
  165. package/docs/TESTING.md +47 -16
  166. package/docs/performance/sdk-entrypoint-import-costs.md +20 -13
  167. package/marketplace.json +2 -2
  168. package/package.json +6 -6
  169. package/packages/pm-beads/extensions/beads/index.ts +1 -0
  170. package/packages/pm-beads/package.json +1 -1
  171. package/packages/pm-calendar/extensions/calendar/index.ts +1 -0
  172. package/packages/pm-calendar/package.json +1 -1
  173. package/packages/pm-command-kit/package.json +1 -1
  174. package/packages/pm-digital-twin/extensions/digital-twin/index.ts +7 -0
  175. package/packages/pm-digital-twin/package.json +1 -1
  176. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +4 -0
  177. package/packages/pm-governance-audit/package.json +1 -1
  178. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +5 -0
  179. package/packages/pm-guide-shell/package.json +1 -1
  180. package/packages/pm-kanban/package.json +1 -1
  181. package/packages/pm-lifecycle-hooks/package.json +1 -1
  182. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +6 -0
  183. package/packages/pm-linked-test-adapters/package.json +1 -1
  184. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -0
  185. package/packages/pm-search-advanced/package.json +1 -1
  186. package/packages/pm-templates/extensions/templates/index.ts +4 -0
  187. package/packages/pm-templates/package.json +1 -1
  188. package/packages/pm-todos/extensions/todos/index.ts +2 -0
  189. package/packages/pm-todos/package.json +1 -1
  190. package/packages/pm-vcs/extensions/vcs/index.ts +7 -0
  191. package/packages/pm-vcs/package.json +1 -1
  192. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  193. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  194. package/scripts/bundle-cli.mjs +17 -4
  195. package/sdk/public-surface.json +390 -60
  196. package/dist/cli-bundle/chunks/chunk-3PS7X6GS.js +0 -8
  197. package/dist/cli-bundle/chunks/chunk-7KL6KMWF.js +0 -13
  198. package/dist/cli-bundle/chunks/chunk-D55A5AEN.js +0 -33
  199. package/dist/cli-bundle/chunks/chunk-KIKDWECH.js +0 -196
  200. package/dist/cli-bundle/chunks/chunk-R76342NV.js +0 -2
  201. package/dist/cli-bundle/chunks/chunk-RBTK5EZV.js +0 -5
  202. package/dist/cli-bundle/chunks/chunk-VLUQOIDT.js +0 -2
  203. package/dist/cli-bundle/chunks/register-operations-2OGISOVR.js +0 -2
  204. package/dist/cli-bundle/focused-chunks/chunk-2DALMVF7.js +0 -5
  205. package/dist/cli-bundle/focused-chunks/chunk-5OQIMELN.js +0 -155
  206. package/dist/cli-bundle/focused-chunks/chunk-5TAGTDRE.js +0 -2
  207. package/dist/cli-bundle/focused-chunks/chunk-ECADZMVC.js +0 -18
  208. package/dist/cli-bundle/focused-chunks/chunk-EJGXRA6B.js +0 -2
  209. package/dist/cli-bundle/focused-chunks/chunk-FFGSZCPK.js +0 -16
  210. package/dist/cli-bundle/focused-chunks/chunk-ISKOBJCM.js +0 -2
  211. package/dist/cli-bundle/focused-chunks/chunk-KPSXVBDV.js +0 -2
  212. package/dist/cli-bundle/focused-chunks/chunk-KTLOKKCQ.js +0 -2
  213. package/dist/cli-bundle/focused-chunks/chunk-LGYK3NUF.js +0 -8
  214. package/dist/cli-bundle/focused-chunks/chunk-NBLUKITQ.js +0 -4
  215. package/dist/cli-bundle/focused-chunks/chunk-NYLOUPOB.js +0 -2
  216. package/dist/cli-bundle/focused-chunks/chunk-Q4T463SD.js +0 -31
  217. package/dist/cli-bundle/focused-chunks/chunk-QVZVY53N.js +0 -2
  218. package/dist/cli-bundle/focused-chunks/chunk-UTEWXDEQ.js +0 -17
@@ -1,2 +0,0 @@
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]="50ad61f1-6719-541c-b4e0-4a88468725cf")}catch{}})();var v=["commands","renderers","hooks","schema","importers","search","parser","preflight","services"],me=2,ge=Object.freeze({migration:"schema",validation:"schema"}),St=Object.freeze({version:me,capabilities:[...v],legacy_aliases:{...ge}}),B=["off","warn","enforce"],G=["off","warn","enforce"],z=["none","restricted","strict"],At=["block","warn"],X=["commands.override","commands.handler","hooks.beforecommand","hooks.beforemutation","hooks.aftercommand","hooks.onwrite","hooks.onread","hooks.onindex","schema.flags","schema.itemfields","schema.itemtypes","schema.relationshipkinds","schema.migrations","schema.profiles","parser.override","preflight.override","services.override","renderers.override","importers.importer","importers.exporter","search.provider","search.vectorstore"],Y=["output_format","error_format","help_format","lock_acquire","lock_release","history_append","item_store_write","item_store_delete","context_relevance","command_result"];function q(){return{mode:"off",trust_mode:"off",require_provenance:!1,trusted_extensions:[],default_sandbox_profile:"none",allowed_extensions:[],blocked_extensions:[],allowed_capabilities:[],blocked_capabilities:[],allowed_surfaces:[],blocked_surfaces:[],allowed_commands:[],blocked_commands:[],allowed_actions:[],blocked_actions:[],allowed_services:[],blocked_services:[],extension_overrides:[]}}(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]="8b39bc01-0325-5dc6-8492-585c98608076")}catch{}})();var Ee=["Epic","Feature","Task","Chore","Issue","Decision","Event","Reminder","Milestone","Meeting","Plan"],It=Ee,Nt=["draft","open","in_progress","blocked","closed","canceled"],wt=["draft","active","blocked","terminal","terminal_done","terminal_canceled","default_open","default_close","default_cancel"],kt=["string","number","boolean","string_array","array","object"],Rt=["create","update","update_many","list","search","calendar","context"],xt=["allow","warn","reject"],vt=["blocks","parent","child","parent_child","child_of","related","related_to","discovered_from","blocked_by","incident_from","epic","implements","supersedes","task","verifies"],Ct=["project","global"],Dt=["low","medium","high","critical"],Lt=["low","medium","high","critical"],Mt=["low","medium","high"];var Ut=["minimal","default","strict","custom"],Pt=["none","warn","strict"],jt=["progressive","strict"],Vt=["off","warn","strict"],Ft=["off","warn","strict"];var Kt=["daily","weekly","monthly","yearly"],be=["mon","tue","wed","thu","fri","sat","sun"];function Bt(e){return be.indexOf(e)}var Gt=["draft","research","review","approved","executing","paused","completed","superseded"],zt=["pending","in_progress","completed","blocked","skipped","superseded"],Xt=["codex","claude-code","cursor","generic"],Yt=["related","blocks","blocked_by","depends_on","discovered_from","implements","verifies","supersedes"],qt=["brief","standard","deep","full"],Wt=["hierarchy","activity","progress","recently_created","unparented","blockers","files","workload","staleness","tests"];(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]="36b908f0-ea19-5adc-8ccd-320ad3c3b1fe")}catch{}})();var ye=Object.freeze([{id:"draft",roles:["draft"]},{id:"open",roles:["active","default_open"]},{id:"in_progress",aliases:["in-progress"],roles:["active"]},{id:"blocked",roles:["blocked"]},{id:"closed",roles:["terminal","terminal_done","default_close"]},{id:"canceled",aliases:["cancelled"],roles:["terminal","terminal_canceled","default_cancel"]}]),he=Object.freeze({draft_status:"draft",open_status:"open",in_progress_status:"in_progress",blocked_status:"blocked",close_status:"closed",canceled_status:"canceled"}),Jt=".agents/pm",Zt="settings.json";var Oe=["","epics","features","tasks","chores","issues","schema","history","search","extensions","locks"],Se=["decisions","events","reminders","milestones","meetings","plans"],Qt=[...Oe,...Se],en={Epic:"epics",Feature:"features",Task:"tasks",Chore:"chores",Issue:"issues",Decision:"decisions",Event:"events",Reminder:"reminders",Milestone:"milestones",Meeting:"meetings",Plan:"plans"},Ae=["goal","objective","value","impact","outcome","why_now","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","unblock_note","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result"],tn=["id","title","description","type","pm_format_version","source_type","type_options","status","priority","tags","created_at","updated_at","deadline","reminders","events","closed_at","completed_at","assignee","claim_principal","source_owner","author","estimated_minutes","acceptance_criteria","design","external_ref","definition_of_ready","order",...Ae,"affected_version","fixed_version","component","regression","customer_impact","dependencies","comments","notes","learnings","files","tests","test_runs","docs","close_reason","duplicate_of","plan_mode","plan_scope","plan_harness","plan_resume_context","plan_validation","plan_decisions","plan_discoveries","plan_steps"],Te={minimal:{ownership_enforcement:"none",create_mode_default:"progressive",close_validation_default:"off",require_close_reason:!0,parent_reference:"strict_error",metadata_profile:"core",force_required_for_stale_lock:!1,duplicate_detection_mode:"off",duplicate_detection_threshold:.8,duplicate_detection_limit:3},default:{ownership_enforcement:"warn",create_mode_default:"progressive",close_validation_default:"warn",require_close_reason:!0,parent_reference:"strict_error",metadata_profile:"core",force_required_for_stale_lock:!0,duplicate_detection_mode:"strict",duplicate_detection_threshold:.8,duplicate_detection_limit:3},strict:{ownership_enforcement:"strict",create_mode_default:"strict",close_validation_default:"strict",require_close_reason:!0,parent_reference:"strict_error",metadata_profile:"strict",force_required_for_stale_lock:!0,duplicate_detection_mode:"strict",duplicate_detection_threshold:.8,duplicate_detection_limit:3}},Ie=["no active blocker","ready for planned execution sequencing","work completed","work is closed"],C={blocked_reason:["no active blocker because work is closed","work is closed"],resolution:["closed with implementation evidence","closed with verification evidence","work completed and recorded","work is closed"],actual_result:["closed and recorded","work completed","work completed and recorded"]};function W(e){return e?[...e]:void 0}var nn={version:1,id_prefix:"pm-",ids:{token_length:4},author_default:"",agent_identity:{probes_enabled:!0,identity_vocabulary:{version:1,aliases:{}},harness_signals:[]},mutation_guard:{require_attributed_author:!1,secret_guard:"advise",stale_in_progress_hours:72},item_format:"toon",locks:{ttl_seconds:1800,wait_ms:3e3},checkpoints:{retention_days:14},output:{default_format:"toon"},history:{missing_stream:"auto_create",compact_policy:{enabled:!1,max_entries:500,trigger:"health_warn"}},validation:{sprint_release_format:"warn",parent_reference:"warn",metadata_profile:"core",metadata_required_fields:[],lifecycle_stale_blocker_reason_patterns:[...Ie],lifecycle_closure_like_blocked_reason_patterns:[...C.blocked_reason],lifecycle_closure_like_resolution_patterns:[...C.resolution],lifecycle_closure_like_actual_result_patterns:[...C.actual_result],estimate_defaults_by_type:{}},governance:{preset:"minimal",...Te.minimal},workflow:{definition_of_done:[]},testing:{record_results_to_items:!1},telemetry:{enabled:!0,first_run_prompt_completed:!1,capture_level:"redacted",endpoint:"https://pm-cli.unbrained.dev/v1/events",installation_id:"",retention_days:365},agent_guidance:{prompt_completed:!1,declined:!1,declined_at:"",template_version:1,last_checked_files:[]},item_types:{definitions:[]},schema:{version:1,files:{types:"schema/types.json",statuses:"schema/statuses.json",fields:"schema/fields.json",workflows:"schema/workflows.json"},statuses:ye.map(e=>({...e,aliases:W(e.aliases),roles:W(e.roles)})),fields:[],workflow:{...he},unknown_field_policy:"allow"},extensions:{enabled:[],disabled:[],policy:q()},search:{score_threshold:0,hybrid_semantic_weight:.7,max_results:50,embedding_model:"",embedding_batch_size:32,embedding_timeout_ms:3e4,scanner_max_batch_retries:3,provider:"",mutation_refresh_policy:"semantic_configured",query_expansion:{enabled:!1,provider:""},rerank:{enabled:!1,model:"",top_k:20}},providers:{openai:{base_url:"",api_key:"",model:""},ollama:{base_url:"",model:""}},context:{default_depth:"brief",activity_limit:10,stale_threshold_days:7,sections:{hierarchy:!0,activity:!0,progress:!0,recently_created:!0,unparented:!0,blockers:!0,files:!0,workload:!0,staleness:!0,tests:!0}},vector_store:{adapter:"",collection_name:"pm_items",qdrant:{url:"",api_key:""},lancedb:{path:""}}},on={metadata:{},body:""},f={SUCCESS:0,GENERIC_FAILURE:1,USAGE:2,NOT_FOUND:3,CONFLICT:4,DEPENDENCY_FAILED:5,NO_EFFECT:6,PARTIAL_EFFECT:7},sn=Object.freeze({unknown_command:"usage",unknown_option:"usage",missing_required_option:"usage",missing_required_argument:"usage",invalid_command_usage:"usage",linked_test_value_not_quoted:"usage",invalid_argument_value:"validation",health_findings:"validation",validation_findings:"validation",close_through_update:"validation",no_update_fields:"validation",unsupported_update_option:"validation",tracker_not_initialized:"validation",item_not_found:"validation",ownership_conflict:"conflict",lock_conflict:"conflict",terminal_state_conflict:"conflict",dependency_failed:"runtime",init_gitignore_unwritable:"runtime",merge_git_config_unwritable:"runtime",command_failed:"runtime",unknown_error:"runtime"});(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]="62fb0ba7-643f-5b33-870b-df875559610a")}catch{}})();var _=class extends Error{exitCode;code;context;constructor(t,n,o={}){super(t),this.name="PmCliError",this.exitCode=n,this.context=o,this.code=o.code}};(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]="818ca284-2aaa-5d35-b280-8c963d443b0c")}catch{}})();var Ne=[...v],we=[...Y],ke=[...B],un=[...G],dn=[...z],Re=[...X],$=["init","config","extension","package","packages","install","upgrade","create","item","copy","focus","list","list-all","list-draft","list-open","list-in-progress","list-blocked","list-closed","list-canceled","aggregate","context","ctx","get","graph","search","duplicates","eval","next","history","events","history-redact","history-repair","history-compact","history-author-acknowledge","merge","schema","profile","activity","restore","update","update-many","close","close-many","delete","append","comments","notes","learnings","files","docs","deps","plan","test","test-all","telemetry","stats","health","validate","assurance","gc","workspace","contracts","claim","release","start-task","pause-task","close-task","meet","event","remind","help"],ln=["ancestors","descendants","predecessors","successors","paths","impact","analyze","audit","communities","redundancy","dominators","slack","centrality","articulation","plan","index"],xe=["init","install","uninstall","explore","manage","describe","reload","doctor","catalog","adopt","adopt-all","activate","deactivate"],H={help:"Commander help rendering has no SDK operation result.",item:"The item namespace only groups lifecycle subcommands already exposed as actions.",packages:"The plural package alias only renders package-oriented help."},J=Object.freeze($.flatMap(e=>e in H?[]:e==="extension"||e==="package"?[...xe.map(t=>`${e}-${t}`),e]:[e]));function _n(e=$,t=J,n=H){let o=new Set(t),s=new Set(e);return{missing_cli_actions:e.filter(r=>!o.has(r)&&n[r]===void 0),waived_cli_actions:e.filter(r=>!o.has(r)&&n[r]!==void 0),stale_waivers:Object.keys(n).filter(r=>!s.has(r)||o.has(r))}}function fn(e){return J.includes(e)}function pn(e){return Ne.includes(e)}function mn(e){return we.includes(e)}function gn(e){return ke.includes(e)}function En(e){return Re.includes(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]="ae6fbd4a-6c4e-5639-93ac-f107a336e95b")}catch{}})();function D(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ve(e,t){let n=e;for(let o of t.split(".")){if(!D(n))return;n=n[o]}return n}function Z(e,t,n){let o=t.split("."),s={...e},r=e,i=s;for(let a of o.slice(0,-1)){let c=r[a],u={...c};i[a]=u,r=c,i=u}return i[o.at(-1)]=n,s}function L(e){let t=e.row_contract;return D(t)&&Array.isArray(t.row_keys)?t.row_keys.filter(n=>typeof n=="string"&&n.trim().length>0):Object.entries(e).filter(([,n])=>Array.isArray(n)).map(([n])=>n)}function m(e){return L(e).flatMap(t=>{let n=ve(e,t);return Array.isArray(n)||D(n)?[{path:t,value:n}]:[]})}function A(e){return m(e).reduce((t,n)=>t+(Array.isArray(n.value)?n.value.length:Object.keys(n.value).length),0)}function T(e,t){let n=e;for(let o of m(n)){let s=Array.isArray(o.value)?o.value.map((r,i)=>t(r,o.path,i)):Object.fromEntries(Object.entries(o.value).map(([r,i],a)=>[r,t(i,o.path,a)]));n=Z(n,o.path,s)}return n}function Q(e,t){let n=e,o=!1;for(let s of m(n)){let r=Array.isArray(s.value)?s.value:Object.entries(s.value);if(r.length<=t)continue;o=!0;let i=Array.isArray(s.value)?r.slice(0,t):Object.fromEntries(r.slice(0,t));n=Z(n,s.path,i)}return{result:n,truncated: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]="642f6dec-c0b2-5377-a401-dfa4f8ef6a2a")}catch{}})();var M=256,U=1e4,Ce=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$/u,De=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u,Le=new Set(["version","id","token_budget","spent_tokens","seen_item_ids"]),Me=[{valid:e=>e.version===1,reason:"version must equal 1."},{valid:e=>typeof e.id=="string"&&Ce.test(e.id),reason:"id must be 1-64 portable identifier characters."},{valid:e=>Number.isSafeInteger(e.token_budget)&&e.token_budget>=M,reason:`token_budget must be a safe integer of at least ${M}.`},{valid:e=>Number.isSafeInteger(e.spent_tokens)&&e.spent_tokens>=0&&e.spent_tokens<=e.token_budget,reason:"spent_tokens must be a non-negative safe integer no larger than token_budget."},{valid:e=>Array.isArray(e.seen_item_ids)&&e.seen_item_ids.length<=U&&e.seen_item_ids.every(t=>typeof t=="string"&&De.test(t)),reason:`seen_item_ids must contain at most ${U} portable item identifiers.`}];function N(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function I(e){throw new _(`--output-session ${e}`,f.USAGE,{code:"invalid_read_output_session",field:"outputSession"})}function w(e){if(e===void 0)return;let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{I("must be a valid JSON object.")}N(t)||I("must be a JSON object.");let n=Object.keys(t).filter(r=>!Le.has(r));n.length>0&&I(`contains unknown field "${n.sort()[0]}".`);let o=Me.find(r=>!r.valid(t));o!==void 0&&I(o.reason);let s=[...new Set(t.seen_item_ids)].sort();return{version:1,id:t.id,token_budget:t.token_budget,spent_tokens:t.spent_tokens,seen_item_ids:s}}function ee(e){if(N(e))return typeof e.id=="string"?e.id:typeof e.item_id=="string"?e.item_id:N(e.item)&&typeof e.item.id=="string"?e.item.id:void 0}function Ue(e){let t=new Set,n=0;for(let o of m(e)){let s=Array.isArray(o.value)?o.value:Object.values(o.value);for(let r of s){if(!N(r))continue;if(typeof r.context_ref=="string"){n+=1;continue}let i=ee(r);i!==void 0&&t.add(i)}}return{deliveredIds:t,suppressedRepeatCount:n}}function te(e,t){let n=new Set(t.seen_item_ids);return T(e,o=>{let s=ee(o);return s!==void 0&&n.has(s)?{id:s,context_ref:`session:${t.id}:${s}`}:o})}function P(e,t){let{deliveredIds:n,suppressedRepeatCount:o}=Ue(e),s=new Set(t.seen_item_ids),r=[...n].filter(p=>!s.has(p)).sort(),i=r.slice(0,U-t.seen_item_ids.length),a=[...t.seen_item_ids,...i].sort(),c=r.length-i.length,u={contract_version:1,id:t.id,measurement_scope:"complete_read_envelope",estimator:"ceil(utf8_bytes / 4)",token_budget:t.token_budget,spent_before_tokens:t.spent_tokens,spent_this_call_tokens:0,charged_this_call_tokens:0,spent_total_tokens:t.spent_tokens,remaining_tokens:t.token_budget-t.spent_tokens,exhausted:!1,seen_before_count:t.seen_item_ids.length,new_item_count:n.size,...c===0?{}:{seen_item_overflow_count:c},suppressed_repeat_count:o,reference_format:"session:<session-id>:<item-id>",restore_reference_with:"pm get <item-id> --brief",next_state:{version:1,id:t.id,token_budget:t.token_budget,spent_tokens:t.spent_tokens,seen_item_ids:a}},l={...e,read_session:u},d=p=>{u.spent_this_call_tokens=p,u.charged_this_call_tokens=Math.min(t.token_budget-t.spent_tokens,p),u.spent_total_tokens=Math.min(t.token_budget,t.spent_tokens+u.charged_this_call_tokens),u.remaining_tokens=Math.max(0,t.token_budget-u.spent_total_tokens),u.exhausted=u.remaining_tokens<M,u.next_state.spent_tokens=u.spent_total_tokens},h=0,O=0;for(let p=0;p<8;p+=1){d(h);let x=Math.ceil(Buffer.byteLength(JSON.stringify(l),"utf8")/4);if(x===h)return l;O=Math.max(O,x),h=x}return d(O),l}function ne(e){return Math.max(0,e.token_budget-e.spent_tokens)}(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]="1726fdce-dc71-5707-ae75-b588691e813d")}catch{}})();var Pe=8,je=64;function Ve(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function j(e,t){return typeof e=="string"?e.length<=240?e:(t.compacted=!0,`${e.slice(0,240)}\u2026`):Array.isArray(e)?e.map(n=>j(n,t)):Ve(e)?Object.fromEntries(Object.entries(e).map(([n,o])=>[n,j(o,t)])):e}function g(e,t){let n=t.estimated_tokens;for(let o=0;o<Pe;o+=1){t.estimated_tokens=n;let s=Math.ceil(Buffer.byteLength(JSON.stringify(e),"utf8")/4);if(s===n)return;n=s}t.estimated_tokens=n}function Fe(e,t,n){for(let o=0;o<je;o+=1){if(g(e,t),t.estimated_tokens<=n)return;let s=m(e).filter(r=>(Array.isArray(r.value)?r.value.length:Object.keys(r.value).length)>1).map(r=>({collection:r,length:Array.isArray(r.value)?r.value.length:Object.keys(r.value).length})).sort((r,i)=>i.length-r.length||r.collection.path.localeCompare(i.collection.path))[0]?.collection;if(!s)return;if(Array.isArray(s.value))s.value.splice(-Math.max(1,Math.ceil(s.value.length/2)));else{let r=Object.keys(s.value);for(let i of r.slice(-Math.max(1,Math.ceil(r.length/2))))delete s.value[i]}t.rows_compacted=!0,e.has_more=!0,e.truncated=!0,typeof e.count=="number"&&(e.count=A(e))}}function oe(e,t,n){let o={compacted:!1},s=j(e,o);return t.strings_compacted=o.compacted,s.read_output=t,Fe(s,t,n),g(s,t),s}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0ab0c72c-cac0-5670-93d1-7a446f8a2301")}catch{}})();var E=["include","amount","cost","encoding"],ce=["list","context","search","get","next","health","deps","graph","history","activity","validate","events","contracts","comments","notes","files","docs","stats","aggregate","package-manage"],ue=["canonical","legacy","intent","default"],F={include:"--output-include",amount:"--output-limit",cost:"--output-budget",encoding:"--output-format"},vn=Object.freeze(E.map(e=>F[e])),Cn=Object.freeze(["--output-session","--output-row-contract"]),Ke={list:{include:["--brief","--compact","--fields","--full"],amount:["--after","--limit","--no-truncate"],cost:["--token-budget"],encoding:["--format","--stream"]},context:{include:["--fields","--section"],amount:["--after","--depth","--limit"],cost:["--token-budget"],encoding:["--format"]},search:{include:["--compact","--fields","--full"],amount:["--after","--limit"],cost:["--token-budget"],encoding:["--format"]},get:{include:["--fields","--full"],amount:["--depth"],cost:["--token-budget"],encoding:["--format"]},next:{amount:["--blocked-limit","--limit"],cost:["--token-budget"],encoding:["--format"]},health:{include:["--brief","--check-only","--full","--summary","--verbose"]},deps:{include:["--collapse","--full","--summary"],amount:["--edge-limit","--max-depth","--node-limit"],cost:["--token-budget"],encoding:["--format"]},graph:{include:["--full","--summary"],amount:["--after","--limit","--max-depth","--max-paths"]},history:{include:["--compact","--full"],amount:["--limit"],encoding:["--format"]},activity:{include:["--compact","--full"],amount:["--limit","--unbounded"],encoding:["--stream"]},validate:{include:["--counts","--full","--verbose"]},events:{include:["--full"],amount:["--limit"],encoding:["--follow"]},contracts:{include:["--full","--summary"]},comments:{amount:["--limit"]},notes:{amount:["--limit"]},files:{amount:["--limit","--no-truncate","--offset"]},docs:{},stats:{},aggregate:{},"package-manage":{}},Be=new Set(["--fields","--section"]),Ge=Object.freeze({"--after":"--after retains cursor-position semantics; use --output-limit <n> separately to bound returned rows.","--check-only":"--check-only retains health side-effect semantics; --output-include does not suppress vector refresh.","--depth":"--depth retains traversal or detail-depth semantics; --output-limit does not replace it.","--follow":"--follow retains event-tail semantics; --output-format does not enable following.","--max-depth":"--max-depth retains graph traversal-depth semantics; --output-limit does not replace it.","--max-paths":"--max-paths retains graph path-search semantics; use --output-limit separately to bound returned rows.","--offset":"--offset retains positional pagination semantics; use --output-limit separately to bound returned rows.","--stream":"--stream retains command streaming semantics; --output-format selects only static result encoding."});function de(e){return e.slice(2).replaceAll("-","_")}function ze(e,t){let n=Ge[e];if(n!==void 0)return n;let o=t==="include"?Be.has(e)?"<csv>":de(e):t==="amount"?"<n>":t==="cost"?"<tokens>":"<toon|json>";return`${e} is a compatibility alias; prefer ${F[t]} ${o}.`}function Xe(e){let t=Ke[e],n=Object.freeze(Object.fromEntries(E.map(o=>[o,Object.freeze({dimension:o,canonical_option:F[o],applicable:!0,inapplicable_reason:null,legacy_aliases:Object.freeze((t[o]??[]).map(s=>Object.freeze({flag:s,migration_hint:ze(s,o),visibility:"hidden_alias"})))})])));return Object.freeze({command:e,dimensions:n,precedence:ue})}var Ye=Object.freeze(ce.map(Xe)),qe=new Map(Ye.map(e=>[e.command,e]));function le(e){let t=e.trim().toLowerCase().replaceAll(/\s+/gu," "),n=t==="package manage"||t==="package-manage"?"package-manage":t.split(" ")[0],o=n.startsWith("list-")?"list":n==="ctx"?"context":n;return ce.includes(o)?o:void 0}var We=["outputInclude","output_include","outputLimit","output_limit","outputBudget","output_budget","outputFormat","output_format","outputSession","output_session","outputRowContract","output_row_contract"],$e={comments:["add","body","stdin","file","edit","delete"],notes:["add","addJson","stdin","file","edit","delete"],files:["add","addGlob","remove","migrate","apply","note"],docs:["add","addGlob","remove","migrate","note"]};function He(e){return We.some(t=>e[t]!==void 0)}var Je=[{keys:["outputInclude","output_include"],valid:e=>V(e)!==void 0,message:"--output-include requires at least one comma-separated field or section."},{keys:["outputLimit","output_limit"],valid:e=>e==="unbounded"||b(e)!==void 0,message:"--output-limit must be a positive integer or unbounded."},{keys:["outputBudget","output_budget"],valid:e=>b(e)!==void 0,message:"--output-budget must be a positive integer."},{keys:["outputFormat","output_format"],valid:e=>e==="toon"||e==="json",message:"--output-format must be toon or json."},{keys:["outputSession","output_session"],valid:e=>(w(e),!0),message:"--output-session must be a valid session-state object."}];function Dn(e,t){if(!He(t))return;let n=le(e);if(!n)throw new _(`Universal output controls apply only to read commands; ${e||"this command"} is not a read surface.`,f.USAGE);if(($e[n]??[]).some(o=>t[o]!==void 0&&t[o]!==!1))throw new _(`Universal output controls cannot be combined with a ${n} mutation.`,f.USAGE);for(let o of Je){let s=o.keys.map(r=>t[r]).find(r=>r!==void 0);if(s!==void 0&&!o.valid(s))throw new _(o.message,f.USAGE)}}function Ze(e){return e.slice(2).replace(/-([a-z])/gu,(t,n)=>n.toUpperCase())}function Qe(e,t){let n=Ze(t);if(Object.hasOwn(e,n))return e[n];let o=t.slice(2).replaceAll("-","_");if(Object.hasOwn(e,o))return e[o];if(t==="--no-truncate"&&e.truncate===!1)return!0}function et(e){return e!==void 0&&e!==!1&&e!==null}function V(e){let n=(Array.isArray(e)?e:[e]).flatMap(o=>typeof o=="string"?o.split(","):[]).map(o=>o.trim()).filter(Boolean);return n.length>0?[...new Set(n)]:void 0}function b(e){let t=typeof e=="number"?e:typeof e=="string"&&/^\d+$/u.test(e.trim())?Number(e):Number.NaN;return Number.isSafeInteger(t)&&t>0?t:void 0}function tt(e,t,n){for(let o of e.legacy_aliases){let s=Qe(t,o.flag),r={value:s,flag:o.flag};if(et(s)&&n(r))return r}}function se(e,t){let n=V(e);if(n)return{source:"canonical",value:n};if(t)return{source:"legacy",value:V(t.value)??[de(t.flag)]}}function re(e,t){if(e==="unbounded")return{source:"canonical",value:"unbounded"};let n=b(e);if(n!==void 0)return{source:"canonical",value:n};if(!t)return;if(t.flag==="--no-truncate"||t.flag==="--unbounded")return{source:"legacy",value:"unbounded"};let o=b(t.value);return o===void 0?void 0:{source:"legacy",value:o}}function ie(e,t){let n=b(e);if(n!==void 0)return{source:"canonical",value:n};if(!t)return;let o=b(t.value);return o===void 0?void 0:{source:"legacy",value:o}}function ae(e,t){if(e==="json"||e==="toon")return{source:"canonical",value:e};if(t)return t.flag==="--stream"||t.flag==="--follow"?{source:"legacy",value:"stream"}:t.value==="json"||t.value==="toon"?{source:"legacy",value:t.value}:void 0}function _e(e,t){let n=le(e);if(!n)return;let o=qe.get(n),s={include:c=>se(void 0,c),amount:c=>re(void 0,c),cost:c=>ie(void 0,c),encoding:c=>ae(void 0,c)},r=Object.fromEntries(E.map(c=>[c,tt(o.dimensions[c],t,u=>s[c](u)!==void 0)])),i=E.flatMap(c=>{let u=r[c];return u?[u.flag]:[]}),a=E.flatMap(c=>{let u=r[c];return u?[o.dimensions[c].legacy_aliases.find(d=>d.flag===u.flag).migration_hint]:[]});return{command:n,include:se(t.outputInclude??t.output_include,r.include),amount:re(t.outputLimit??t.output_limit,r.amount),cost:ie(t.outputBudget??t.output_budget,r.cost),encoding:ae(t.outputFormat??t.output_format,r.encoding),legacy_aliases_used:i,migration_hints:a,precedence:ue}}function y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var K=new Set(["applied_bound","applied_limit","completeness","continuation_contract","count","filters","has_more","next_cursor","now","omission_receipt","projection","row_contract","sorting","total","truncated"]),nt=["collection_counts","notes_count","tests_count"];function fe(e,t){let n=new Set(t.map(o=>o.split(".")[0]));return Object.fromEntries(Object.entries(e).filter(([o])=>n.has(o)))}function ot(e){let t=y(e.item)?e.item:{},n=[...new Set([...Object.keys(t),...nt.filter(s=>Object.hasOwn(t,s))])].sort((s,r)=>s.localeCompare(r)),o=Object.keys(e).filter(s=>s!=="item"&&s!=="read_output"&&!K.has(s)).sort((s,r)=>s.localeCompare(r));return{item:t,itemFields:n,sections:o,valid:[...n,"item",...n.map(s=>`item.${s}`),...o]}}function st(e,t){let n=ot(e),o=t.filter(d=>!n.valid.includes(d));if(o.length>0)throw new _(`Unknown --output-include selector(s) for get: ${o.join(", ")}. Valid selectors: ${n.valid.join(", ")}.`,f.USAGE);let s=t.includes("item"),r=t.flatMap(d=>d.startsWith("item.")?[d.slice(5)]:n.itemFields.includes(d)?[d]:[]).filter((d,h,O)=>O.indexOf(d)===h);if(s&&r.length>0)throw new _("--output-include cannot mix a full item with projected item fields; use item or item.<field>, not both.",f.USAGE);let i=new Set(t.filter(d=>n.sections.includes(d))),a=Object.fromEntries(Object.entries(e).filter(([d])=>K.has(d)||i.has(d)));s?a.item=n.item:r.length>0&&(a.item=fe(n.item,r));let c=[...s?[]:r.length>0?n.itemFields.filter(d=>!r.includes(d)).map(d=>({name:`item.${d}`,restore_with:`--output-include item.${d}`})):[{name:"item",restore_with:"--output-include item"}],...n.sections.filter(d=>!i.has(d)).map(d=>({name:d,restore_with:`--output-include ${d}`}))],l=[...y(a.omission_receipt)&&Array.isArray(a.omission_receipt.omitted_field_groups)?a.omission_receipt.omitted_field_groups:[],...c];return a.omission_receipt={has_omissions:l.length>0,omitted_field_group_count:l.length,omitted_field_groups:l},a}function rt(e,t,n){if(e==="get")return st(t,n);let o=L(t),s=n.flatMap(i=>o.flatMap(a=>i.startsWith(`${a}.`)?[i.slice(a.length+1)]:[])),r=n.some(i=>Object.hasOwn(t,i.split(".")[0])&&!o.some(a=>i.startsWith(`${a}.`)));if(o.length>0&&(!r||s.length>0)){let i={...t};return T(i,a=>y(a)?fe(a,s.length>0?s:n):a)}return Object.fromEntries(Object.entries(t).filter(([i])=>n.some(a=>a.split(".")[0]===i)||K.has(i)))}function it(e,t){if(t==="unbounded")return e;let{result:n,truncated:o}=Q(e,t);return o&&(n.has_more=!0,n.truncated=!0,typeof n.count=="number"&&(n.count=A(n)),n.applied_bound={kind:"output_limit",source:"explicit",value:t}),n}function at(e){return E.filter(t=>e[t]!==void 0)}function k(e,t,n){let o=P(e,t);for(let s=0;s<8;s+=1){let r=n.estimated_tokens,i=o.read_session.spent_this_call_tokens;g(o,n),o=P(o,t);let a=o.read_session.spent_this_call_tokens;if(n.estimated_tokens===r&&a===i)return o}return o}function Ln(e,t){if(!y(e.read_output))return e;let n=e.read_output,o=w(t.outputSession??t.output_session);return o===void 0?(g(e,n),e):k(e,o,n)}function ct(e,t,n){let o={...e};return t.include?.source==="canonical"&&(o=rt(t.command,o,t.include.value)),t.amount?.source==="canonical"&&(o=it(o,t.amount.value)),n===void 0?o:te(o,n)}function ut(e,t){let n=[...e.cost?.source==="canonical"?[e.cost.value]:[],...t===void 0?[]:[ne(t)]];return n.length===0?void 0:Math.min(...n)}function dt(e,t,n,o){let s={contract_version:1,command:e.command,requested_dimensions:t,precedence:e.precedence,legacy_aliases_used:[],migration_hints:[],estimated_tokens:0,within_budget:!1,strings_compacted:!1,rows_compacted:!1,result_omitted:!0},r={output_budget_exceeded:{omitted_result:!0,reason:"requested_budget_infeasible",restore_with:"Increase --output-budget or narrow the read."},read_output:s},i=n===void 0?r:k(r,n,s);if(n===void 0&&g(i,s),n!==void 0&&s.estimated_tokens>o)throw new _("The remaining output-session budget cannot fit its mandatory receipts; start a new session with a larger token_budget.",f.USAGE);return i}function Mn(e,t,n){let o=_e(e,t);if(!o)return n;let s=w(t.outputSession??t.output_session),r=at(o);if(r.filter(l=>o[l]?.source==="canonical").length===0&&s===void 0)return n;let a=ct(n,o,s),c={contract_version:1,command:o.command,requested_dimensions:r,precedence:o.precedence,legacy_aliases_used:o.legacy_aliases_used,migration_hints:o.migration_hints,estimated_tokens:0,within_budget:!0,strings_compacted:!1,rows_compacted:!1,result_omitted:!1};a.read_output=c,a=s===void 0?a:k(a,s,c),g(a,c);let u=ut(o,s);return u!==void 0&&c.estimated_tokens>u&&(a=oe(a,c,u),s!==void 0&&(a=k(a,s,c))),u!==void 0&&c.estimated_tokens>u?dt(o,r,s,u):a}function Un(e){return y(e)&&y(e.output_budget_exceeded)&&e.output_budget_exceeded.omitted_result===!0&&e.output_budget_exceeded.reason==="requested_budget_infeasible"}function Pn(e,t){let n=_e(e,t)?.encoding;return n?.value==="json"||n?.value==="toon"?n.value:void 0}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="f6e82c93-54e8-53a7-94df-10a573aae933")}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]="d4493313-8f07-585b-84c7-4141e1d0cba4")}catch{}})();var lt=Object.freeze([{flag:"--json"},{flag:"--lean"},{flag:"--token-accounting"},{flag:"--output-include",value_name:"fields"},{flag:"--output-limit",value_name:"count"},{flag:"--output-budget",value_name:"tokens"},{flag:"--output-format",value_name:"toon|json"},{flag:"--output-session",value_name:"state"},{flag:"--output-row-contract"},{flag:"--quiet"},{flag:"--no-changed-fields"},{flag:"--full-changed-fields"},{flag:"--id-only"},{flag:"--pm-path",aliases:["--path"]},{flag:"--no-extensions"},{flag:"--no-pager"},{flag:"--profile"},{flag:"--help"},{flag:"--author",value_name:"id"}]),Kn=new Set(lt.flatMap(e=>[e.flag,...e.aliases??[]]));import _t 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]="83232698-197a-5aef-be7c-aa37f3c56822")}catch{}})();function ft(e){if(e===null)return null;if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="bigint")return e.toString();if(e===void 0)return"undefined";if(typeof e=="symbol")return e.toString();if(typeof e=="function")return`[function:${e.name||"anonymous"}]`}function pt(e){let t=Object.keys(e).sort(),n={};for(let o of t){let s=e[o];s!==void 0&&(n[o]=R(s))}return n}function R(e){let t=ft(e);if(t!==void 0)return t;if(Array.isArray(e))return e.map(o=>R(o));if(e instanceof Date)return e.toISOString();let n=e;if(typeof n.toJSON=="function"){let o=n.toJSON();if(o!==e)return R(o)}return pt(e)}function zn(e){return JSON.stringify(R(e))}function pe(e,t,n,o){for(let s=0;s<t.length;s+=1)if(!n.has(s)&&o(e,t[s]))return n.add(s),!0;return!1}function mt(e,t){if(e instanceof RegExp||t instanceof RegExp)return e instanceof RegExp&&t instanceof RegExp&&e.toString()===t.toString()}function gt(e,t){if(e instanceof Date||t instanceof Date)return e instanceof Date&&t instanceof Date&&e.getTime()===t.getTime()}function Et(e,t){if(!(e instanceof Set||t instanceof Set))return;if(!(e instanceof Set&&t instanceof Set)||e.size!==t.size)return!1;let n=[...t],o=new Set;for(let s of e)if(!pe(s,n,o,S))return!1;return!0}function bt(e,t){if(!(e instanceof Map||t instanceof Map))return;if(!(e instanceof Map&&t instanceof Map)||e.size!==t.size)return!1;let n=[...t.entries()],o=new Set;for(let[s,r]of e.entries())if(!pe([s,r],n,o,([a,c],[u,l])=>S(a,u)&&S(c,l)))return!1;return!0}function yt(e,t){if(Array.isArray(e)||Array.isArray(t))return!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length?!1:e.every((n,o)=>S(n,t[o]))}function ht(e,t){let n=Object.keys(e).sort((s,r)=>s.localeCompare(r)),o=Object.keys(t).sort((s,r)=>s.localeCompare(r));if(n.length!==o.length)return!1;for(let s=0;s<n.length;s+=1){let r=n[s];if(r!==o[s]||!S(e[r],t[r]))return!1}return!0}var Ot=[mt,gt,Et,bt,yt];function S(e,t){if(Object.is(e,t))return!0;if(e===null||t===null||typeof e!="object"||typeof t!="object")return!1;for(let n of Ot){let o=n(e,t);if(o!==void 0)return o}return ht(e,t)}function Xn(e){return _t.createHash("sha256").update(e,"utf8").digest("hex")}function Yn(e,t){let n={};for(let s of t){let r=e[s];r!==void 0&&(n[s]=r)}let o=Object.keys(e).filter(s=>!t.includes(s)).sort((s,r)=>s.localeCompare(r));for(let s of o){let r=e[s];r!==void 0&&(n[s]=r)}return n}export{v as a,me as b,ge as c,St as d,B as e,G as f,z as g,At as h,X as i,Y as j,q as k,Ee as l,It as m,Nt as n,wt as o,kt as p,Rt as q,xt as r,vt as s,Ct as t,Dt as u,Lt as v,Mt as w,Ut as x,Pt as y,jt as z,Vt as A,Ft as B,Kt as C,be as D,Bt as E,Gt as F,zt as G,Xt as H,Yt as I,qt as J,Wt as K,ye as L,he as M,Jt as N,Zt as O,Oe as P,Qt as Q,en as R,tn as S,Te as T,Ie as U,C as V,nn as W,on as X,f as Y,_ as Z,lt as _,Kn as $,zn as aa,S as ba,Xn as ca,Yn as da,Ne as ea,we as fa,ke as ga,un as ha,dn as ia,Re as ja,$ as ka,ln as la,xe as ma,H as na,J as oa,_n as pa,fn as qa,pn as ra,mn as sa,gn as ta,En as ua,U as va,w as wa,te as xa,P as ya,ne as za,E as Aa,ce as Ba,vn as Ca,Cn as Da,Ye as Ea,le as Fa,Dn as Ga,_e as Ha,Ln as Ia,Mn as Ja,Un as Ka,Pn as La};
2
- //# sourceMappingURL=chunk-ISKOBJCM.js.map
@@ -1,2 +0,0 @@
1
- import{bb as D,k as I}from"./chunk-5OQIMELN.js";import{ca as h,ha as L}from"./chunk-NBLUKITQ.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="1b2f1ac3-82b3-58a2-9f40-2dd95ab1b2bc")}catch{}})();var x="global",v="external";function u(t){let e=t?.trim().toLowerCase();return e===x||e===v}function j(t){let e=t?.trim();if(e)return u(e)?x:e}function G(t,e,r){let n=t.trim();return u(r)?n:D(n,e)}(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="62ec8e0e-658e-5a32-b458-439d5ffd1229")}catch{}})();function y(t){if(typeof t!="string")return;let e=t.trim();if(!(!e||["none","null","n/a","na"].includes(e.toLowerCase())))return e}function b(t){let e=y(t);return e?.toLowerCase()==="no-active-blocker"?void 0:e}function E(){let t=h();for(let e of I()?.relationship_kinds??[])for(let r of e.definitions)t.register(r);return t}function k(t,e){let r=t.toLowerCase(),n=e.toLowerCase();return r!==n?r<n?-1:1:t!==e?t<e?-1:1:0}function z(t){let e=new Map;for(let r of t.dependencies??[]){if(typeof r!="object"||r===null)continue;let n=r,i=y(n.id);if(!i)continue;let c=typeof n.kind=="string"?n.kind:"related",a=`${c}\0${i.toLowerCase()}`,f=e.get(a);f?f.count+=1:e.set(a,{target_id:i,kind:c,count:1})}return e}function S(t,e=r=>r==="closed"||r==="canceled"){let r=[];for(let n of t)if(!(typeof n?.id!="string"||n.id.trim().length===0))for(let i of z(n).values())i.count<2||r.push({holder_id:n.id.trim(),target_id:i.target_id,kind:i.kind,occurrences:i.count,holder_status:n.status,legacy_terminal:e(n.status)});return r.sort((n,i)=>{let c=k(n.holder_id,i.holder_id);if(c!==0)return c;let a=k(n.target_id,i.target_id);return a!==0?a:k(n.kind,i.kind)})}function T(t,e=r=>r==="closed"||r==="canceled"){let r=t.filter(s=>typeof s?.id=="string"&&s.id.trim().length>0),n=new Set(r.map(s=>s.id.trim().toLowerCase())),i=new Map,c=(s,l,p,m)=>{let o=y(l);if(!o||n.has(o.toLowerCase()))return;let d={holder_id:s.id.trim(),target_id:o,kind:p,source:m,holder_status:s.status,legacy_terminal:e(s.status),no_active_blocker_sentinel:o.toLowerCase()==="no-active-blocker"};i.set(`${d.holder_id}::${d.target_id}::${d.kind}::${d.source}`,d)};for(let s of r){c(s,s.parent,"parent","parent"),c(s,s.blocked_by,"blocked_by","blocked_by");for(let l of s.dependencies??[]){if(typeof l!="object"||l===null)continue;let p=l;u(p.source_kind)||c(s,p.id,typeof p.kind=="string"?p.kind:"related","dependency")}}let a=[...i.values()].sort((s,l)=>s.holder_id.localeCompare(l.holder_id)||s.target_id.localeCompare(l.target_id)||s.kind.localeCompare(l.kind)||s.source.localeCompare(l.source)),f=a.filter(s=>s.legacy_terminal);return{active:a.filter(s=>!s.legacy_terminal),legacy_terminal:f,no_active_blocker_sentinels:a.filter(s=>s.no_active_blocker_sentinel)}}function $(t){let e=new Map;for(let r of[...t.active,...t.legacy_terminal]){if(r.no_active_blocker_sentinel)continue;let n=r.target_id.trim(),i=n.toLowerCase();e.has(i)||e.set(i,n)}return[...e.values()].sort((r,n)=>r.localeCompare(n))}function A(t){let e=new Map;for(let r of t)for(let n of r.dependencies??[]){if(typeof n!="object"||n===null||!u(n.source_kind))continue;let i=y(n.id);i&&!e.has(i.toLowerCase())&&e.set(i.toLowerCase(),i)}return[...e.values()].sort((r,n)=>r.localeCompare(n))}function K(t,e=E()){let r={};for(let n of t)for(let i of n.dependencies??[]){if(typeof i!="object"||i===null)continue;let c=i.kind;if(typeof c!="string")continue;let a=c.trim().toLowerCase().replaceAll("-","_"),f=e.resolve(c);f&&a!==f.kind&&(r[a]=(r[a]??0)+1)}return Object.fromEntries(Object.entries(r).sort(([n],[i])=>n.localeCompare(i)))}function X(t,e,r){let n=r??E(),i=t.filter(o=>typeof o?.id=="string"&&o.id.trim().length>0),c=new Map(i.map(o=>[o.id.trim().toLowerCase(),o.id.trim()])),a=T(i,e),f=$(a);for(let o of f)c.set(o.toLowerCase(),o);let s=A(i),l=new Set(c.keys()),p=new Map;for(let o of s){let d=o;for(;l.has(d.toLowerCase());)d=`external:${d}`;p.set(o.toLowerCase(),d),l.add(d.toLowerCase())}let m=i.map(o=>{let d=b(o.parent),C=b(o.blocked_by),R=(o.dependencies??[]).flatMap(_=>{if(typeof _!="object"||_===null)return[];let g=_,w=b(g.id);return w?[{id:u(g.source_kind)?p.get(w.toLowerCase()):c.get(w.toLowerCase()),kind:typeof g.kind=="string"?g.kind:"related"}]:[]});return{id:o.id.trim(),...d?{parent:c.get(d.toLowerCase())}:{},...C?{blocked_by:c.get(C.toLowerCase())}:{},dependencies:R}});return{graph:L.fromItems([...m,...f.map(o=>({id:o})),...s.map(o=>({id:p.get(o.toLowerCase())}))],n),details:[...i.map(o=>({id:o.id.trim(),title:o.title,status:o.status,...typeof o.type=="string"&&o.type.trim().length>0?{type:o.type.trim()}:{}})),...f.map(o=>({id:o,title:`[missing] ${o}`,status:"missing"})),...s.map(o=>({id:p.get(o.toLowerCase()),title:`[external] ${o}`,status:"external"}))],missingIdSet:new Set(f.map(o=>o.toLowerCase())),dangling:a,duplicateRows:S(i,e),legacyAliasCounts:K(i,n)}}export{u as a,j as b,G as c,b as d,E as e,S as f,T as g,$ as h,X as i};
2
- //# sourceMappingURL=chunk-KPSXVBDV.js.map
@@ -1,2 +0,0 @@
1
- import{Aa as K,Ca as _,Ea as d,Fa as L,Ja as Q,La as Z,Na as tt,T as V,U as S,Va as et,Xa as rt,Y as W,ab as nt,bb as ot,ib as it,k as z,kb as st,mb as P,n as C,na as Y,nb as D,oa as X,pa as J,va as p}from"./chunk-5OQIMELN.js";import{E as M,K as G,N as B,O as q,Q as j,p as k,r as H,s as m}from"./chunk-NBLUKITQ.js";import{Y as c,Z as l}from"./chunk-ISKOBJCM.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="47c087c2-124a-58b7-a5c9-09403235f4a2")}catch{}})();function yt(t,e){let n=-1;return t.forEach((r,o)=>{let i=Date.parse(r.ts);if(!Number.isFinite(i))throw new l(`History for this item contains invalid timestamp at entry ${o+1}.`,c.GENERIC_FAILURE);i<=e&&(n=o)}),n}function wt(t){let e=t[0]?.ts??null,n=t.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:e,last_timestamp:n}};return n!==null&&(r.examples=["1",String(t.length),n],r.valid_range.first_version=1,r.valid_range.last_version=t.length),{guidance:r,lastTimestamp:n}}function pt(t,e){let n={};if(e instanceof Error&&e.message.trim().length>0&&(n.reason=e.message.trim()),typeof e!="object"||e===null)return n;let r=e;if(typeof r.index=="number"&&Number.isInteger(r.index)&&r.index>=0&&(n.patchIndex=r.index),typeof r.operation=="object"&&r.operation!==null){let o=r.operation;Object.assign(n,Object.fromEntries(["op","path","from"].flatMap(i=>{let s=o[i];return typeof s=="string"?[[i,s]]:[]})))}if(n.patchIndex!==void 0){let o=t[n.patchIndex];o&&(n.op??=o.op,n.path??=o.path,n.from??=o.from)}return n}function Mt(t,e,n={}){let r=t.trim(),o=n.errorSubject??"history",i=o==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=wt(e);if(!r)throw new l(`Missing ${o} target. Use a timestamp or version number.`,c.USAGE,s);if(/^\d+$/.test(r)){let u=Number(r);if(!Number.isSafeInteger(u)||u<1||u>e.length)throw new l(`${i} version must be between 1 and ${e.length} for this item.`,c.USAGE,s);return{kind:"version",raw:r,historyIndex:u-1}}let h=Date.parse(r);if(!Number.isFinite(h))throw new l(`Invalid ${o} target "${t}". Use a positive version number or ISO timestamp.`,c.USAGE,s);let f=yt(e,h);if(f<0||n.allowFutureTimestamp!==!0&&h>Date.parse(a))throw new l(o==="restore"?`No history entries exist at or before timestamp ${r}.`:`No history entry exists at timestamp ${r}.`,c.USAGE,s);return{kind:"timestamp",raw:r,historyIndex:f}}function A(t,e,n,r){let o=Q(t,e);if(o.ok)return o.document;let i=pt(e,o.error),s=[`history_op=${r}`,i.patchIndex===void 0?null:`patch_index=${i.patchIndex}`,i.op?`op=${i.op}`:null,i.path?`path=${i.path}`:null,i.from?`from=${i.from}`:null].filter(a=>a!==null);throw new l(`Failed to apply history patch at entry ${n} (${s.join(", ")}). ${i.reason??String(o.error)}`,c.GENERIC_FAILURE)}function Gt(t,e){let n=structuredClone(_);for(let r=0;r<=e;r+=1){let o=t[r];if(!o)throw new l(`History target entry ${r+1} does not exist.`,c.USAGE);if(d(n)!==o.before_hash)throw new l(`History hash mismatch before replay at entry ${r+1}.`,c.GENERIC_FAILURE);if(n=A(n,o.patch,r+1,o.op),d(n)!==o.after_hash)throw new l(`History hash mismatch after replay at entry ${r+1}.`,c.GENERIC_FAILURE)}return n}function Bt(t,e){if(Object.keys(t.metadata).length>0)return t;throw new l(`History target ${e.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,c.USAGE)}import U from"node:fs/promises";import gt from"node:fs/promises";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="a2ec9f1a-aae2-59d5-8c9a-7acd8bf5a7a2")}catch{}})();function It(t){if(!t.itemDocument)return[];let e=t.itemDocument.metadata?.assignee?.trim();if(!e||e===t.author||t.force)return[];let n=et(t.settings);if(n.ownership_enforcement==="strict")throw new l(`Item ${t.subjectId} is assigned to ${e}. Use --force to override.`,c.CONFLICT);return n.ownership_enforcement==="warn"?[`ownership_warning:assignee_conflict:${t.subjectId}:${e}`]:[]}async function _t(t){let e=await H(t.subject.historyPath);if(e!==t.historyRawBeforeLock)throw new l(`History for ${t.subject.id} changed while waiting for lock; retry ${t.operation}.`,c.CONFLICT);let n=await P(t.pmRoot,t.subject.id,t.settings.id_prefix,t.settings.item_format,t.typeRegistry.type_to_folder),r=n?await D(n,{schema:t.settings.schema}):null;if((r?.raw??null)!==(t.currentItemRawBeforeLock??null))throw new l(`Item ${t.subject.id} changed while waiting for lock; retry ${t.operation}.`,c.CONFLICT);return{historyRawUnderLock:e,locatedUnderLock:n,loadedItemUnderLock:r}}async function Zt(t){let e=t.writeHistoryRaw??m;try{await e(t.historyPath,t.nextHistoryRaw),await p(t.historyPath)}catch(n){try{t.historyRawUnderLock===null?await gt.rm(t.historyPath,{force:!0}):await e(t.historyPath,t.historyRawUnderLock),await p(t.historyPath)}catch(r){throw new AggregateError([n,r],`History rewrite failed and rollback also failed: ${String(n)}`)}throw n}}async function at(t){let e=[...It({itemDocument:t.itemDocument,subjectId:t.subject.id,author:t.author,force:t.force,settings:t.settings})],n=await W(t.pmRoot,t.subject.id,t.settings.locks.ttl_seconds,t.author,!!t.force,t.settings.governance.force_required_for_stale_lock,t.settings.locks.wait_ms);try{let r=await _t({pmRoot:t.pmRoot,subject:t.subject,settings:t.settings,typeRegistry:t.typeRegistry,historyRawBeforeLock:t.historyRawBeforeLock,currentItemRawBeforeLock:t.currentItemRawBeforeLock,operation:t.operation});return await t.applyRewrite(r),t.applyPostRewrite&&e.push(...await t.applyPostRewrite(r)),e}finally{await n()}}(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="cd2a27ec-0f12-591d-ab34-529ddda05063")}catch{}})();function ct(t){return Array.isArray(t)?t:typeof t=="string"?[t]:[]}function xt(t){let e=[];for(let n of t)e.includes(n)||e.push(n);return e.includes("g")||e.push("g"),e.join("")}function bt(t){let e=t.trim();if(e.length===0)throw new l("history-redact --regex requires a non-empty pattern.",c.USAGE);let n=e,r="g";if(e.startsWith("/")&&e.length>1){let o=e.lastIndexOf("/");o>0&&(n=e.slice(1,o),r=xt(e.slice(o+1)))}if(n.length===0)throw new l("history-redact --regex cannot use an empty pattern.",c.USAGE);try{new RegExp(n,r)}catch{throw new l("Invalid --regex value; provide a valid JavaScript regular expression.",c.USAGE)}return{kind:"regex",source:n,flags:r}}function Rt(t,e){let n=[...new Set(ct(t).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),r=[...new Set(ct(e).map(i=>i.trim()))].filter(i=>i.length>0).map(bt),o=[...n,...r];if(o.length===0)throw new l("history-redact requires at least one matcher via --literal or --regex.",c.USAGE,{code:"missing_required_argument",required:"Provide --literal <value> and/or --regex <pattern>.",examples:['pm history-redact pm-a1b2 --literal "[redacted_path_prefix]/private"','pm history-redact pm-a1b2 --regex "/192\\\\.168\\\\.[0-9.]+/g" --replacement "[scrubbed_ip]"']});return o}function Et(t,e,n){if(e.length===0)return{value:t,replacements:0};let r=0,o=0;for(;r<=t.length;){let i=t.indexOf(e,r);if(i===-1)break;o+=1,r=i+Math.max(1,e.length)}return o===0?{value:t,replacements:0}:{value:t.split(e).join(n),replacements:o}}function vt(t,e,n){let r=new RegExp(e.source,e.flags),o=[...t.matchAll(r)];return o.length===0?{value:t,replacements:0}:{value:t.replace(r,n),replacements:o.length}}function lt(t,e,n){let r=t,o=0;for(let i of e){let s=i.kind==="literal"?Et(r,i.value,n):vt(r,i,n);r=s.value,o+=s.replacements}return{value:r,replacements:o}}function F(t,e,n){if(typeof t=="string")return lt(t,e,n);if(Array.isArray(t)){let r=0;return{value:t.map(i=>{let s=F(i,e,n);return r+=s.replacements,s.value}),replacements:r}}if(typeof t=="object"&&t!==null){let r=0,o={};for(let[i,s]of Object.entries(t)){let a=F(s,e,n);r+=a.replacements,o[i]=a.value}return{value:o,replacements:r}}return{value:t,replacements:0}}function kt(t){let e=structuredClone(_),n=0,r=0;for(let o=0;o<t.length;o+=1){let i=t[o];d(e)!==i.before_hash&&(n+=1),e=A(e,i.patch,o+1,i.op),d(e)!==i.after_hash&&(r+=1)}return{hashMismatchesBefore:n,hashMismatchesAfter:r,finalDocument:e}}function Ht(t,e,n){let r=0,o=!1,i=t.message;if(typeof t.message=="string"){let a=lt(t.message,e,n);i=a.value,r+=a.replacements,a.replacements>0&&(o=!0)}let s=t.patch.map(a=>{if(!Object.prototype.hasOwnProperty.call(a,"value"))return a;let h=F(a.value,e,n);return r+=h.replacements,h.replacements>0?(o=!0,{...a,value:h.value}):a});return{entry:{...t,message:i,patch:s},replacements:r,changed:o}}function Pt(t,e,n){let r=structuredClone(_),o=0,i=0,s=[];for(let a=0;a<t.length;a+=1){let h=Ht(t[a],e,n);i+=h.replacements,h.changed&&(o+=1);let f=d(r);r=A(r,h.entry.patch,a+1,h.entry.op);let u=d(r);s.push({...h.entry,before_hash:f,after_hash:u})}return{entries:s,finalDocument:r,entriesChanged:o,replacements:i}}function Dt(t){return Object.keys(t.metadata).length>0}async function At(t,e){let n=t.located?.itemPath??null;if(!t.located)return{raw:null,path:n,document:null};let r=await D(t.located,{schema:e.schema});return{raw:r.raw,path:n,document:r.document}}function Tt(t){if(!Dt(t.finalDocument))return{raw:null,path:null,document:null};let e=X(L(t.finalDocument),{schema:t.settings.schema});if(e.metadata.id!==t.subject.id)throw new l("history-redact would change the item id; narrow your patterns.",c.USAGE);return{document:e,path:q(t.pmRoot,e.metadata.type,t.subject.id,"toon",t.typeToFolder),raw:Y(e,{format:"toon",schema:t.settings.schema})}}function $t(t,e){return typeof t.message=="string"&&t.message.trim().length>0?t.message:`history-redact replaced ${e.replacements} match(es) across ${e.entriesChanged} entr${e.entriesChanged===1?"y":"ies"}.`}function jt(t){let e=[...t.rewritten.entries];if(t.dryRun||!t.changed)return{rewrittenEntries:e,auditEntryAdded:!1};let n=t.nextItemDocument??L(t.rewritten.finalDocument);return e.push(K({nowIso:S(),author:t.author,op:"history_redact",before:n,after:n,message:t.message})),{rewrittenEntries:e,auditEntryAdded:!0}}async function Ct(t){let e=[];return at({pmRoot:t.pmRoot,subject:t.subject,settings:t.settings,typeRegistry:t.typeRegistry,historyRawBeforeLock:t.historyRawBeforeLock,currentItemRawBeforeLock:t.currentItem.raw,operation:"history-redact",author:t.author,force:t.force,itemDocument:t.currentItem.document,applyRewrite:async({historyRawUnderLock:n})=>{let r=await it(t.pmRoot,t.author),o=new Set;t.currentItem.path&&o.add(t.currentItem.path),t.nextItem.path&&o.add(t.nextItem.path);let i=new Map;t.currentItem.path&&t.currentItem.raw!==null&&i.set(t.currentItem.path,t.currentItem.raw);let s=()=>{};try{try{t.nextItem.path&&t.nextItem.raw!==null&&t.nextItem.raw!==t.currentItem.raw&&await m(t.nextItem.path,t.nextItem.raw),t.currentItem.path&&(!t.nextItem.path||t.nextItem.path!==t.currentItem.path)&&await U.rm(t.currentItem.path,{force:!0}),await m(t.subject.historyPath,tt(t.rewrittenEntries))}catch(h){try{await St(t.subject.historyPath,n,o,i)}finally{await p(t.subject.historyPath)}throw h}await p(t.subject.historyPath);let a=t.nextItem.path??t.currentItem.path;a&&(e=await st({pmRoot:t.pmRoot,preferredFormat:t.settings.item_format,typeToFolder:t.typeRegistry.type_to_folder,schema:t.settings.schema,itemPath:a,...t.currentItem.path?{previousItemPath:t.currentItem.path}:{},document:t.nextItem.document}))}finally{await r().catch(a=>{s=()=>{throw a}})}s()},applyPostRewrite:async()=>[...e,...await Lt(t.subject.historyPath,[t.nextItem.path,t.currentItem.path])]})}async function St(t,e,n,r){e===null?await U.rm(t,{force:!0}):await m(t,e);for(let o of n){let i=r.get(o);i===void 0?await U.rm(o,{force:!0}):await m(o,i)}}async function Lt(t,e){let n=[],r=new Set(e.filter(o=>o!==null));for(let o of r)n.push(...await C({path:o,scope:"project",op:"history_redact"}));return n.push(...await C({path:t,scope:"project",op:"history_redact:history"})),n}async function Ut(t,e,n,r){let o=await P(t,e,n.id_prefix,n.item_format,r);if(o)return{id:o.id,historyPath:j(t,o.id),located:o};let i=ot(e,n.id_prefix),s=nt(e),a=i===s?[i]:[i,s];for(let h of a){let f=j(t,h);if(await k(f))return{id:h,historyPath:f,located:null}}throw new l(`Item ${e} not found`,c.NOT_FOUND)}async function xe(t,e,n){let r=G(process.cwd(),n.path);if(!await k(B(r)))throw new l(`Tracker is not initialized at ${r}. Run pm init first.`,c.NOT_FOUND);let o=await rt(r),i=M(o,z()),s=e.replacement??"",a=s.length===0,h=a?"[redacted]":s,f=Rt(e.literal,e.regex),u=await Ut(r,t,o,i.type_to_folder);if(!await k(u.historyPath))throw new l(`No history stream exists for ${u.id}.`,c.NOT_FOUND);let ht=await H(u.historyPath),x=await J(u.historyPath,u.id);if(x.length===0)throw new l(`No history entries exist for ${u.id}; nothing to redact.`,c.USAGE);let b=kt(x),y=Pt(x,f,h),T=b.hashMismatchesBefore+b.hashMismatchesAfter,$=!!e.dryRun,R=y.replacements>0,E=[];T>0&&E.push(`history_redact_preexisting_hash_mismatches:${T}`),R||E.push("history_redact_no_matches");let g=await At(u,o),w=Tt({pmRoot:r,subject:u,settings:o,typeToFolder:i.type_to_folder,finalDocument:y.finalDocument}),ut=(g.path??null)!==(w.path??null)||(g.raw??null)!==(w.raw??null),N=V(e.author,o.author_default),ft=$t(e,y),{rewrittenEntries:O,auditEntryAdded:dt}=jt({rewritten:y,dryRun:$,changed:R,nextItemDocument:w.document,author:N,message:ft}),v=Z(O);if(!v.ok)throw new l(`history-redact produced an invalid rewritten chain (${v.errors.join(", ")}).`,c.GENERIC_FAILURE);return!$&&R&&E.push(...await Ct({pmRoot:r,subject:u,settings:o,typeRegistry:i,historyRawBeforeLock:ht,currentItem:g,nextItem:w,author:N,force:e.force,rewrittenEntries:O})),{id:u.id,dry_run:$,changed:R,patterns:{literal_count:f.filter(I=>I.kind==="literal").length,regex_count:f.filter(I=>I.kind==="regex").length,total_count:f.length,replacement_is_default:a},history:{path:u.historyPath,entries_scanned:x.length,entries_changed:y.entriesChanged,replacements:y.replacements,hash_mismatches_before:b.hashMismatchesBefore,hash_mismatches_after:b.hashMismatchesAfter,preexisting_hash_mismatches:T,audit_entry_added:dt,verify_ok:v.ok,verify_errors:v.errors},item:{existed_before:g.path!==null,exists_after:w.path!==null,path_before:g.path,path_after:w.path,changed:ut},warnings:[...new Set(E)].sort((I,mt)=>I.localeCompare(mt)),generated_at:S()}}export{Mt as a,A as b,Gt as c,Bt as d,Zt as e,at as f,Ut as g,xe as h};
2
- //# sourceMappingURL=chunk-KTLOKKCQ.js.map
@@ -1,8 +0,0 @@
1
- import{d as gt,e as N,g as mt,i as A}from"./chunk-KPSXVBDV.js";import{Xa as ie,Y as re,ja as R,k as se,mb as ft,nb as pt,pb as oe,sa as Oe,vb as ht}from"./chunk-5OQIMELN.js";import{E as J,K as X,N as Y,Qa as Z,ca as x,ha as Q,p as H,r as F,s as G,u as at}from"./chunk-NBLUKITQ.js";import{h as ee,j as te,l as De,n as L,o as ne,p as ct,q as dt,r as ut,s as lt}from"./chunk-5TAGTDRE.js";import{Y as y,Z as b,aa as q,la as Re}from"./chunk-ISKOBJCM.js";import{constants as B}from"node:fs";import{lstat as yt,mkdir as Ne,open as _t}from"node:fs/promises";import T 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]="c53bb1b7-12b9-5370-a85b-cdd8bef57936")}catch{}})();function Le(e,t){if(typeof e!="string"||e.trim().length===0)throw new TypeError(`Relationship event ${t} must be non-empty`);return e.trim()}function Ae(e,t){let s=t.require(e.kind),n=s.direction==="undirected"?[e.source,e.target].sort().join("\0"):`${e.source}\0${e.target}`;return`${s.kind}\0${n}`}function vn(e){return Object.freeze({...e,...e.payload===void 0?{}:{payload:Object.freeze(structuredClone(e.payload))}})}function xn(e,t,s,n){let r=s.require(e.kind),i=n.outgoingOne.get(`${r.kind}\0${e.source}`);if(i!==void 0&&i!==t)throw new TypeError(`Relationship outgoing cardinality exceeded for ${r.kind}`);let o=n.incomingOne.get(`${r.kind}\0${e.target}`);if(o!==void 0&&o!==t)throw new TypeError(`Relationship incoming cardinality exceeded for ${r.kind}`);let a=Ae(e,s),c=n.identities.get(a);if(c!==void 0&&c!==t)throw new TypeError(`Relationship edge already active: ${a}`)}function En(e){let t=new Map;for(let s of e)s.action==="remove"?t.delete(s.relationshipId):t.set(s.relationshipId,s.edge);return t}function In(e,t,s){if(e.expectedVersion!==void 0&&e.expectedVersion!==t)throw new TypeError(`Relationship event version conflict: expected ${e.expectedVersion}, current ${t}`);let n=Le(e.eventId,"eventId");if(s.has(n))throw new TypeError(`Relationship event already exists: ${n}`);if(e.action!=="add"&&e.action!=="remove"&&e.action!=="supersede")throw new TypeError(`Unknown relationship event action: ${e.action}`);if(!Number.isFinite(Date.parse(e.timestamp)))throw new TypeError("Relationship event timestamp must be valid");return{eventId:n,relationshipId:Le(e.relationshipId,"relationshipId"),author:Le(e.author,"author"),timestamp:new Date(e.timestamp).toISOString()}}function Tn(e,t,s,n,r,i){let o=s.has(t);if(e.action==="add"&&o)throw new TypeError(`Relationship is already active: ${t}`);if(e.action!=="add"&&!o)throw new TypeError(`Relationship is not active: ${t}`);if(e.action==="remove")return;if(!e.edge)throw new TypeError(`Relationship ${e.action} event requires an edge`);let a=typeof e.edge.source=="string"?e.edge.source.trim():"",c=typeof e.edge.target=="string"?e.edge.target.trim():"";if(!n.has(a)||!n.has(c))throw new TypeError(`Relationship endpoint not found: ${a} -> ${c}`);let d=new Q([a,c],[e.edge],r).edges()[0];return xn(d,t,r,i),vn(d)}var Me=class{#e;#n;#s=[];#i=new Set;#t=new Map;#r={identities:new Map,outgoingOne:new Map,incomingOne:new Map};constructor(t,s={}){this.#e=new Set([...t].filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean)),this.#n=s.registry??x()}get version(){return this.#s.length}events(){return Object.freeze([...this.#s])}*stream(t={}){let s=t.fromVersion??1,n=t.toVersion??this.version,r=t.batchSize??100;if(!Number.isInteger(s)||s<1)throw new TypeError("Relationship event stream fromVersion must be positive");if(!Number.isInteger(n)||n<0||n>this.version)throw new TypeError(`Relationship event stream toVersion out of range: ${n}`);if(!Number.isInteger(r)||r<1)throw new TypeError("Relationship event stream batchSize must be positive");if(s>n+1)throw new TypeError("Relationship event stream fromVersion exceeds the selected prefix");for(let i=s-1;i<n;i+=r)yield Object.freeze(this.#s.slice(i,Math.min(i+r,n)))}project(t,s,n={}){if(typeof s!="function")throw new TypeError("Relationship event projection requires a reducer");let r=t,i=0,o;for(let a of this.stream({...n,batchSize:256}))for(let c of a)r=s(r,c),i+=1,o=c;return Object.freeze({state:r,version:o?.sequence??Math.max(0,(n.fromVersion??1)-1),processed:i,...o===void 0?{}:{asOf:o.timestamp}})}#o(t,s){let n=this.#n.require(s.kind);this.#r.identities.set(Ae(s,this.#n),t),n.outgoing==="one"&&this.#r.outgoingOne.set(`${n.kind}\0${s.source}`,t),n.incoming==="one"&&this.#r.incomingOne.set(`${n.kind}\0${s.target}`,t)}#a(t){let s=this.#n.require(t.kind);this.#r.identities.delete(Ae(t,this.#n)),s.outgoing==="one"&&this.#r.outgoingOne.delete(`${s.kind}\0${t.source}`),s.incoming==="one"&&this.#r.incomingOne.delete(`${s.kind}\0${t.target}`)}append(t){let s=In(t,this.version,this.#i),n=this.#t.get(s.relationshipId),r=Tn(t,s.relationshipId,this.#t,this.#e,this.#n,this.#r),i=Object.freeze({eventId:s.eventId,relationshipId:s.relationshipId,action:t.action,...r===void 0?{}:{edge:r},author:s.author,timestamp:s.timestamp,...t.reason?.trim()?{reason:t.reason.trim()}:{},sequence:this.version+1});return this.#s.push(i),this.#i.add(s.eventId),n&&this.#a(n),t.action==="remove"?this.#t.delete(s.relationshipId):(this.#t.set(s.relationshipId,r),this.#o(s.relationshipId,r)),i}snapshot(t={}){if(t.atVersion!==void 0&&t.atTimestamp!==void 0)throw new TypeError("Relationship snapshot accepts one target");let s;if(t.atTimestamp!==void 0){let i=Date.parse(t.atTimestamp);if(!Number.isFinite(i))throw new TypeError("Relationship snapshot timestamp must be valid");s=this.#s.filter(o=>Date.parse(o.timestamp)<=i)}else{let i=t.atVersion??this.version;if(!Number.isInteger(i)||i<0||i>this.version)throw new TypeError(`Relationship snapshot version out of range: ${i}`);s=this.#s.slice(0,i)}let n=En(s),r=new Q(this.#e,n.values(),this.#n);return Object.freeze({version:s.at(-1)?.sequence??0,...s.at(-1)?{asOf:s.at(-1).timestamp}:{},edges:r.edges(),graph:r})}page(t){if(!Number.isInteger(t.limit)||t.limit<1)throw new TypeError("Relationship event page limit must be positive");let s=L("relationship-events",{order:"append-sequence"}),n=t.cursor===void 0?this.version:Number(ct(t.cursor,s).snapshot);if(!Number.isSafeInteger(n)||n<0||n>this.version)throw new TypeError("Relationship event cursor snapshot version is invalid");let r=lt(this.#s.slice(0,n),{cursor:t.cursor,fingerprint:s,limit:t.limit,readId:i=>i.eventId,snapshot:String(n)});return{version:n,events:r.rows,hasMore:r.has_more,...r.next_cursor?{nextCursor:r.next_cursor}:{}}}},Sn="relationship-event-store",wt=B.O_NOFOLLOW;function ae(e){return re(e,Sn,30,`relationship-store:${process.pid}`,!1,!1,3e3)}async function D(e,t="relationships/events.jsonl"){let s=T.resolve(e),n=T.resolve(s,t),r=T.relative(s,n);if(r.length===0)throw new TypeError("Relationship event path must name a file within the tracker root");if(r===".."||r.startsWith(`..${T.sep}`)||T.isAbsolute(r))throw new TypeError("Relationship event path must stay within the tracker root");if(await Ne(s,{recursive:!0}),(await yt(s)).isSymbolicLink())throw new TypeError("Relationship event tracker root must not be a symbolic link");let o=s;for(let a of r.split(T.sep)){o=T.join(o,a);try{if((await yt(o)).isSymbolicLink())throw new TypeError("Relationship event path must not contain symbolic links")}catch(c){if(c.code==="ENOENT")break;throw c}}return n}async function ce(e,t,s){let n=new Me(t,{registry:s}),r,i;try{i=await _t(e,B.O_RDONLY|wt),r=await i.readFile("utf8")}catch(a){if(a.code==="ENOENT")return{log:n,raw:""};throw a}finally{await i?.close()}let o=r.split(`
2
- `);for(let a=0;a<o.length;a+=1){let c=o[a].trim();if(!c)continue;let d;try{d=JSON.parse(c)}catch{throw new TypeError(`Invalid relationship event JSONL at line ${a+1}`)}if(d.sequence!==n.version+1)throw new TypeError(`Invalid relationship event sequence at line ${a+1}`);n.append({eventId:d.eventId,relationshipId:d.relationshipId,action:d.action,...d.edge===void 0?{}:{edge:d.edge},author:d.author,timestamp:d.timestamp,...d.reason===void 0?{}:{reason:d.reason},expectedVersion:n.version})}return{log:n,raw:r}}function Cn(e,t,s,n){let r=Date.parse(t.timestamp),i;return t.action!=="remove"&&t.edge!==void 0&&(i=new Q(s,[t.edge],n).edges()[0]),e.eventId===t.eventId.trim()&&e.relationshipId===t.relationshipId.trim()&&e.action===t.action&&e.author===t.author.trim()&&Number.isFinite(r)&&e.timestamp===new Date(r).toISOString()&&e.reason===(t.reason?.trim()||void 0)&&q(e.edge)===q(i)}var bt=class e{#e;#n;#s;#i;#t;constructor(t,s,n,r){this.#e=t.pmRoot,this.#n=s,this.#s=t.registry,this.#i=n,this.#t=r}static async open(t){let s=Object.freeze([...t.nodes]),n=await D(t.pmRoot,t.relativePath),r=await ae(t.pmRoot);try{await D(t.pmRoot,n);let{log:i}=await ce(n,s,t.registry);return new e(t,s,n,i)}finally{await r()}}get path(){return this.#i}async currentVersion(){return this.#t=await this.#r(),this.#t.version}async append(t){let s=await ae(this.#e);try{let n=await D(this.#e,this.#i),{log:r}=await ce(n,this.#n,this.#s),i=r.append(t);await Ne(T.dirname(n),{recursive:!0}),await D(this.#e,n);let o=await _t(n,B.O_APPEND|B.O_CREAT|B.O_WRONLY|wt);try{await o.appendFile(`${JSON.stringify(i)}
3
- `,"utf8")}finally{await o.close()}return this.#t=r,i}finally{await s()}}async appendBatch(t,s={}){let n=await ae(this.#e);try{let r=await D(this.#e,this.#i),{log:i,raw:o}=await ce(r,this.#n,this.#s),a=i.version,c=new Map(i.events().map(l=>[l.eventId,l])),d=[],u=[];for(let l of t){let f=l.eventId.trim(),p=c.get(f);if(p!==void 0){if(s.existingEventPolicy==="skip_identical"&&Cn(p,l,this.#n,this.#s)){u.push(p.eventId);continue}if(s.existingEventPolicy==="skip_identical")throw new TypeError(`Relationship event id collision with different content: ${f}`)}let h=i.append(l);c.set(h.eventId,h),d.push(h)}if(d.length>0){let l=o.length===0||o.endsWith(`
4
- `)?o:`${o}
5
- `;await Ne(T.dirname(r),{recursive:!0}),await D(this.#e,r),await G(r,`${l}${d.map(f=>JSON.stringify(f)).join(`
6
- `)}
7
- `)}return this.#t=i,Object.freeze({version_before:a,version_after:i.version,appended:Object.freeze(d),skipped_event_ids:Object.freeze(u)})}finally{await n()}}async snapshot(t={}){return this.#t=await this.#r(),this.#t.snapshot(t)}async page(t){return this.#t=await this.#r(),this.#t.page(t)}async*stream(t={}){this.#t=await this.#r(),yield*this.#t.stream(t)}async project(t,s,n={}){return this.#t=await this.#r(),this.#t.project(t,s,n)}async#r(){let t=await ae(this.#e);try{let s=await D(this.#e,this.#i);return(await ce(s,this.#n,this.#s)).log}finally{await 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]="3a33af50-3d2c-57bb-884a-4d5394599ba2")}catch{}})();function Rn(e,t,s,n,r,i){if(e.seen.has(t))return"skip";if(e.cursorFound&&e.affected.length>=i)return"truncate";e.seen.add(t),e.parents.set(t,s.id);let o=s.depth+1;return e.queue.push({id:t,depth:o}),e.cursorFound?(e.affected.push({id:t,distance:o,path:Pn(n,t,e.parents)}),"continue"):(e.cursorFound=t===r,"skip")}function Dn(e,t,s,n){let r=L("graph impact",{root:e,direction:s,kinds:[...t.kinds??[]].sort(),max_depth:Number.isFinite(n)?n:"unbounded"});return{fingerprint:r,after:t.after===void 0?void 0:dt(t.after,r)}}function z(e,t,s){e.get(t).add(s)}function ue(e){return new Map(e.map(t=>[t,new Set]))}function vt(e){for(let t of e)t.sort();return e.sort((t,s)=>s.length-t.length||t[0].localeCompare(s[0]))}function de(e){if(Array.isArray(e))return e.map(s=>de(s));if(e===null||typeof e!="object")return e;let t=e.toJSON;return typeof t=="function"?de(t.call(e)):Object.fromEntries(Object.entries(e).sort(([s],[n])=>s.localeCompare(n)).map(([s,n])=>[s,de(n)]))}function kt(e){return JSON.stringify(de(e))}function On(e,t,s,n){let r=[{id:e,expanded:!1}];for(;r.length>0;){let i=r.pop();if(i.expanded){n.push(i.id);continue}if(s.has(i.id))continue;s.add(i.id),r.push({id:i.id,expanded:!0});let o=[...t.get(i.id)].sort().reverse();for(let a of o)s.has(a)||r.push({id:a,expanded:!1})}}function Ln(e,t){let s=new Set,n=[];for(let r of e)s.has(r)||On(r,t,s,n);return n}function Nn(e,t){let s=new Set,n=[];for(let r of[...e].reverse()){if(s.has(r))continue;let i=[],o=[r];for(s.add(r);o.length>0;){let a=o.pop();i.push(a);for(let c of t.get(a))s.has(c)||(s.add(c),o.push(c))}n.push(i)}return vt(n)}function xt(e,t){let s=ue(e);for(let[n,r]of t)for(let i of r)z(s,i,n);return Nn(Ln(e,t),s)}function An(e,t){let s=ue(e.nodes());for(let n of e.edges()){let r=t.require(n.kind);if(!r.ordering)continue;let i=(r.precedence??"source_before_target")==="source_before_target";z(s,i?n.source:n.target,i?n.target:n.source)}return s}function Mn(e,t){let s=new Map(e.map(i=>[i,0]));for(let i of t.values())for(let o of i)s.set(o,s.get(o)+1);let n=e.filter(i=>s.get(i)===0).sort(),r=[];for(;n.length>0;){r.push(n);let i=[];for(let o of n)for(let a of t.get(o)){let c=s.get(a)-1;s.set(a,c),c===0&&i.push(a)}n=i.sort()}return r}function $n(e,t){let s=new Map(e.map(o=>[o,0])),n=new Map;for(let o of e)for(let a of t.get(o)){if(!s.has(a))continue;let c=s.get(o)+1,d=n.get(a);(c>s.get(a)||c===s.get(a)&&(d===void 0||o.localeCompare(d)<0))&&(s.set(a,c),n.set(a,o))}let r=[...e].sort((o,a)=>s.get(a)-s.get(o)||o.localeCompare(a))[0],i=r===void 0?[]:[r];for(;i[0]!==void 0&&n.has(i[0]);)i.unshift(n.get(i[0]));return{depth:Object.fromEntries(s),path:i}}function Pn(e,t,s){let n=[t],r=t;for(;r!==e;)r=s.get(r),n.push(r);return n.reverse()}function le(e,t={}){let s=t.registry??x(),n=[...e.nodes()],r=An(e,s),i=Mn(n,r),o=i.flat(),a=o.length===n.length,c=a?[]:xt(n,r).filter(u=>u.length>1||r.get(u[0]).has(u[0])),d=$n(o,r);return{exact:!0,acyclic:a,order:o,layers:i,frontier:i[0]??[],depth:d.depth,criticalPath:d.path,criticalPathLength:Math.max(0,d.path.length-1),cycles:c,provenance:{algorithm:"kahn-longest-path",edgeFamily:"ordering"}}}function Et(e,t,s={}){let n=s.direction??"outgoing",r=s.maxDepth??Number.POSITIVE_INFINITY,i=s.limit??Number.POSITIVE_INFINITY,{fingerprint:o,after:a}=Dn(t,s,n,r),c={queue:[{id:t,depth:0}],seen:new Set([t]),parents:new Map,affected:[],cursorFound:a===void 0||a===t},d=0,u=0,l=!1,f=!1;e:for(let p=0;p<c.queue.length;p+=1){s.signal?.throwIfAborted();let h=c.queue[p];d+=1;let g=e.adjacency(h.id,{direction:n,kinds:s.kinds,signal:s.signal});if(u+=g.meta.inspectedEdges,h.depth>=r){g.value.some(m=>!c.seen.has(m))&&(l=!0);continue}for(let m of g.value)if(Rn(c,m,h,t,a,i)==="truncate"){l=!0,f=!0;break e}}if(!c.cursorFound)throw new TypeError(`Unknown impact cursor item: ${a}`);return{root:t,affected:c.affected,exact:!0,truncated:l,...f?{nextCursor:ne(o,c.affected.at(-1)?.id??t)}:{},cost:{visitedNodes:d,inspectedEdges:u}}}function It(e){let t=[...e.nodes()],s=ue(t),n=ue(t);for(let c of e.edges())z(s,c.source,c.target),z(s,c.target,c.source),z(n,c.source,c.target);let r=[],i=new Set;for(let c of t){if(i.has(c))continue;let d=[],u=[c];for(i.add(c);u.length>0;){let l=u.pop();d.push(l);for(let f of s.get(l))i.has(f)||(i.add(f),u.push(f))}r.push(d)}let o=t.map(c=>({id:c,degree:s.get(c).size})),a=Math.max(0,...o.map(({degree:c})=>c));return{components:vt(r),stronglyConnected:xt(t,n),orphans:o.filter(({degree:c})=>c===0).map(({id:c})=>c),hubs:o.filter(({degree:c})=>c>0&&c===a),exact:!0,provenance:{algorithm:"component-degree",edgeFamily:"all"}}}function ci(e,t){let s=new Map(e.edges.map(r=>[kt(r),r])),n=new Map(t.edges.map(r=>[kt(r),r]));return{fromVersion:e.version,toVersion:t.version,added:[...n].filter(([r])=>!s.has(r)).map(([,r])=>r),removed:[...s].filter(([r])=>!n.has(r)).map(([,r])=>r),unchangedCount:[...s.keys()].filter(r=>n.has(r)).length,exact:!0}}import{createHash as jn}from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="dea35fb9-9f9f-56ce-afc0-f4dc993012c3")}catch{}})();var Fn=64,Gn=8;function qn(e,t){let s=(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??"",s].join("\0")}function fe(e,t=n=>n==="closed"||n==="canceled",s=x()){let n=e.filter(i=>typeof i?.id=="string"&&i.id.trim().length>0).map(i=>qn(i,t)).sort(),r=s.list().map(i=>q(i)).sort();return jn("sha256").update(n.join("")).update("").update(r.join("")).digest("hex")}function Tt(e,t,s){let n=t??s;if(!Number.isInteger(n)||n<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`);return n}var $e=class{#e=new Map;#n;#s;constructor(t={}){this.#n=Tt("maxResultsPerWorkspace",t.maxResultsPerWorkspace,Fn),this.#s=Tt("maxWorkspaces",t.maxWorkspaces,Gn)}lookup(t,s,n){let r=this.#e.get(t),i=!0;(r===void 0||r.fingerprint!==s)&&(r={fingerprint:s,assembly:n(),results:new Map},i=!1,!this.#e.has(t)&&this.#e.size>=this.#s&&this.#e.delete(this.#e.keys().next().value)),this.#e.delete(t),this.#e.set(t,r);let o=r,a=this.#n;return{assembly:o.assembly,assemblyReused:i,fingerprint:s,memoize(c,d){let u=o.results.get(c);if(u!==void 0||o.results.has(c))return o.results.delete(c),o.results.set(c,u),{value:structuredClone(u),reused:!0};let l=d();return o.results.size>=a&&o.results.delete(o.results.keys().next().value),o.results.set(c,structuredClone(l)),{value:l,reused:!1}}}}clear(){this.#e.clear()}},St=new $e;function pe(){return St}function pi(){St.clear()}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="31a800f7-1374-5e7c-ad23-ae3d8ebcebe0")}catch{}})();var Bn=["prerequisite","dependent","ancestor","descendant","provenance","related"],zn=new TextEncoder;function Pe(e,t,s){let n=e??t;if(!Number.isInteger(n)||n<1)throw new TypeError(`Relationship context ${s} must be positive`);return n}function he(e){return Math.max(1,Math.ceil(zn.encode(JSON.stringify(e)).byteLength/4))}function je(e,t,s){let n=s.resolve(e.kind);if(n?.ordering){let i=(n.precedence??"source_before_target")==="source_before_target"?e.source:e.target;return t===i?"prerequisite":"dependent"}if(n?.hierarchy){let i=(n.hierarchyDirection??"source_parent")==="source_parent"?e.source:e.target;return t===i?"ancestor":"descendant"}return e.kind==="discovered_from"||e.kind==="incident_from"?"provenance":"related"}function Un(e,t,s,n){let r=e.filter(i=>i.source===t&&i.target===s||i.target===t&&i.source===s).map(i=>je(i,s,n));return[...new Set(r)].sort()}function Kn(e){return Bn.find(t=>e.includes(t))}function Wn(e,t,s,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 o=new Set([t]),a=[{id:t,distance:0}],c=[],d=0,u=!1;for(let l=0;l<a.length;l+=1){n.signal?.throwIfAborted();let f=a[l];if(f.distance>=i&&u)continue;let p=e.neighborEdges(f.id,{direction:r,kinds:n.kinds,signal:n.signal});if(d+=p.meta.inspectedEdges,f.distance>=i){p.value.some(h=>!o.has(h.id))&&(u=!0);continue}for(let{id:h,edge:g}of p.value){if(o.has(h))continue;o.add(h);let m={id:h,distance:f.distance+1,via:f.id,role:je(g,h,s)};c.push(m),a.push(m)}}return c.sort((l,f)=>l.distance-f.distance||l.id.localeCompare(f.id)),{rows:c,visitedNodes:a.length,inspectedEdges:d,depthTruncated:u}}function Vn(e,t,s,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:o,edge:a}of i)r[je(a,o,s)]+=1;return{directEdges:r,directTotal:i.length,rootEdges:i.map(({edge:o})=>o)}}function Hn(e){let t=[],s=e.initialTokens;for(let n of e.candidates){if(t.length>=e.nodeLimit)break;let r=n.distance===1?Un(e.rootEdges,e.rootId,n.id,e.registry):[],i={...e.details.get(n.id)??{id:n.id},distance:n.distance,role:r.length>0?Kn(r):n.role,via:n.via,reasons:r.length>0?r:[`${n.role} via ${n.via} (depth ${n.distance})`]},o=he(i);if(s+o>e.tokenBudget)break;t.push(i),s+=o}if(e.candidates.length>0&&t.length===0)throw new TypeError("Relationship context tokenBudget cannot fit one node");return{nodes:t,usedTokens:s}}function Jn(e){let t=e.options.kinds?new Set(e.options.kinds.map(i=>e.registry.require(i).kind)):void 0,s=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 o=e.registry.resolve(i.kind)?.inverse;return o!==void 0&&t.has(o)}),n=[],r=e.initialTokens;for(let i of s){if(n.length>=e.edgeLimit)break;let o=he(i);if(r+o>e.tokenBudget)break;n.push(i),r+=o}return{edges:n,usedTokens:r,candidateCount:s.length}}function Ct(e,t,s,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"),o=Pe(n.tokenBudget,1200,"tokenBudget"),a=n.registry??x(),c=new Map(s.map(O=>[O.id,O])),d=c.get(t)??{id:t},{evidence:u=[],...l}=d,f=[...u],p=Wn(e,t,a,n),{rootEdges:h,...g}=Vn(e,t,a,n),m=L("relationship-context",{rootId:t,direction:n.direction??"both",kinds:[...n.kinds??[]].sort(),maxDepth:n.maxDepth??3}),_=ut(p.rows,n.cursor,m,({id:O})=>O),v=p.rows.slice(_),w=he(l)+he(f);if(w>o)throw new TypeError("Relationship context tokenBudget cannot fit root and evidence");let C=Hn({candidates:v,details:c,rootEdges:h,rootId:t,registry:a,nodeLimit:r,tokenBudget:o,initialTokens:w}),{nodes:k}=C,W=new Set([t,...k.map(({id:O})=>O)]),P=Jn({graph:e,included:W,options:n,registry:a,edgeLimit:i,tokenBudget:o,initialTokens:C.usedTokens}),{edges:j,usedTokens:wn}=P,V=_+k.length,Se=V<p.rows.length,it=k.at(-1),Ce=P.candidateCount-j.length,ot=p.depthTruncated||Se||Ce>0,kn={rootId:t,...l.status===void 0?{}:{rootStatus:l.status},...g,discoveredNodes:p.rows.length,returnedNodes:k.length,returnedEdges:j.length,omittedNodes:p.rows.length-V,omittedEdges:Ce,evidenceCount:f.length,hasMore:Se};return{root:l,summary:kn,nodes:k,edges:j,evidence:f,meta:{exact:!0,truncated:ot,completeness:ot?"truncated":"complete",nodeLimit:r,edgeLimit:i,tokenBudget:o,usedTokens:wn,visitedNodes:p.visitedNodes,inspectedEdges:p.inspectedEdges,omittedNodes:p.rows.length-V,omittedEdges:Ce,...Se&&it?{nextCursor:ne(m,it.id,V-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]="c0fb747e-1f9f-55c4-808b-b77d3a881f87")}catch{}})();var Xn=5,Yn=1e4,Qn=8;function Fe(e,t){if(!Number.isFinite(t)||!Number.isInteger(t)||t<0)throw new TypeError(`Invalid path ${e} bound: ${String(t)}`)}function ge(e,t){return t.hierarchyDirection==="target_parent"?e.target:e.source}function U(e,t){return(t.precedence??"source_before_target")==="target_before_source"?e.target:e.source}function me(e,t){let s=U(e,t);return{predecessor:s,successor:s===e.source?e.target:e.source}}function Zn(e,t,s){if(t===void 0)return;let n=e.registry(),r=new Set;for(let i of t){let o=n.require(i);if(!o[s])throw new TypeError(`Relationship kind ${o.kind} is not a ${s} kind`);r.add(o.kind)}return r}function es(e,t,s,n,r){let i=e.registry(),o=e.neighborEdges(t,{direction:"both",...s===void 0?{}:{kinds:[...s]}}),a=[],c=new Set;for(let d of o.value){let u=i.require(d.edge.kind);u[n]&&r(d,u,t)&&(c.has(d.id)||(c.add(d.id),a.push(d.id)))}return{neighbors:a,inspectedEdges:o.meta.inspectedEdges}}function ts(e,t,s,n,r,i){if(t>=s)return e.neighbors.some(o=>!i.seen.has(o))&&(i.truncated=!0),!1;for(let o of e.neighbors)if(!i.seen.has(o)){if(i.seen.add(o),i.queue.push({id:o,depth:t+1}),!i.resumed){o===r&&(i.resumed=!0);continue}if(i.value.length>=n)return i.truncated=!0,!0;i.value.push(o)}return!1}function ye(e,t,s,n,r){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`);let i=Zn(e,s.kinds,n),o=s.limit??Number.POSITIVE_INFINITY,a=s.maxDepth??Number.POSITIVE_INFINITY,c=s.after,d={seen:new Set([t]),value:[],queue:[{id:t,depth:0}],resumed:c===void 0,truncated:!1},u=0,l=0;for(let f=0;f<d.queue.length;f+=1){s.signal?.throwIfAborted();let p=d.queue[f];u+=1;let h=es(e,p.id,i,n,r);if(l+=h.inspectedEdges,ts(h,p.depth,a,o,c,d))break}if(!d.resumed)throw new TypeError(`Traversal cursor not found in sequence: ${c}`);return{value:d.value,meta:{visitedNodes:u,inspectedEdges:l,truncated:d.truncated,nextCursor:d.value.at(-1)}}}function Rt(e,t){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`)}function Dt(e,t,s,n,r){let i=e.neighborEdges(t.nodes.at(-1),{direction:n,...s.kinds===void 0?{}:{kinds:s.kinds}});return r.inspectedEdges+=i.meta.inspectedEdges,i.value.filter(o=>!t.nodeSet.has(o.id))}function ns(e,t,s,n,r,i,o){for(let a of Dt(e,t,n,r,o)){let c=[...t.nodes,a.id],d=new Set(t.nodeSet).add(a.id),u=[...t.edges,a.edge];if(a.id===s){if(o.value.push({nodes:c,edges:u,length:u.length}),o.value.length>=i)return!0}else o.queue.push({nodes:c,nodeSet:d,edges:u})}return!1}function Ot(e,t,s={}){return ye(e,t,s,"hierarchy",(n,r)=>ge(n.edge,r)===n.id)}function Lt(e,t,s={}){return ye(e,t,s,"hierarchy",(n,r,i)=>ge(n.edge,r)===i)}function Nt(e,t,s={}){return ye(e,t,s,"ordering",(n,r)=>U(n.edge,r)===n.id)}function At(e,t,s={}){return ye(e,t,s,"ordering",(n,r,i)=>U(n.edge,r)===i)}function ss(e,t,s,n,r,i,o,a){let c={value:[],queue:[{nodes:[t],nodeSet:new Set([t]),edges:[]}],inspectedEdges:0},d=0,u=!1,l=r+1;for(let f=0;f<c.queue.length;f+=1){if(n.signal?.throwIfAborted(),c.value.length>=l||d>=i){u=!0;break}let p=c.queue[f];if(d+=1,p.edges.length>=o){Dt(e,p,n,a,c).length>0&&(u=!0);continue}if(ns(e,p,s,n,a,l,c)){u=!0;break}}return{value:c.value.slice(0,r),meta:{visitedNodes:d,inspectedEdges:c.inspectedEdges,truncated:u}}}function Mt(e,t,s,n={}){Rt(e,t),Rt(e,s);let r=n.maxPaths??Xn,i=n.maxVisitedPaths??Yn,o=n.maxDepth??Qn;Fe("maxPaths",r),Fe("maxVisitedPaths",i),Fe("maxDepth",o);let a=n.direction??"outgoing";n.signal?.throwIfAborted();for(let c of n.kinds??[])e.registry().require(c);return t===s?r===0?{value:[],meta:{visitedNodes:1,inspectedEdges:0,truncated:!0}}:{value:[{nodes:[t],edges:[],length:0}],meta:{visitedNodes:1,inspectedEdges:0,truncated:!1}}:ss(e,t,s,n,r,i,o,a)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="24898402-1568-5b05-9072-f89dd91f25a6")}catch{}})();var rs=16,is=2,os=8;function be(e,t){if(!Number.isInteger(t)||t<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`)}function _e(e,t,s){let n=e.registry(),r=t===void 0?void 0:new Set(t.map(i=>n.require(i).kind));for(let i of e.edges()){if(i.source===i.target)continue;let o=n.require(i.kind);r!==void 0&&!(r.has(o.kind)||o.inverse!==void 0&&r.has(o.inverse))||s(i,o)}}function as(e,t){let s=new Map;_e(e,t,n=>{$t(s,n.source,n.target),$t(s,n.target,n.source)});for(let n of s.values())n.sort();return s}function $t(e,t,s){let n=e.get(t);n===void 0?e.set(t,[s]):n.push(s)}function cs(e,t){let s=new Map;for(let i of e){let o=t.get(i);s.set(o,(s.get(o)??0)+1)}let n,r=0;for(let[i,o]of s)(o>r||o===r&&i<n)&&(n=i,r=o);return n}function ds(e,t){let s=new Map;for(let[r,i]of e){let o=s.get(i);o===void 0?s.set(i,[r]):o.push(r)}let n=[];for(let r of s.values())r.length<t||(r.sort(),n.push({representative:r[0],size:r.length,members:r}));return n.sort((r,i)=>i.size-r.size||r.representative.localeCompare(i.representative))}function Pt(e,t={}){let s=t.maxIterations??rs,n=t.minSize??is;be("maxIterations",s),be("minSize",n);let r=as(e,t.kinds),i=e.nodes(),o=new Map(i.map(l=>[l,l])),a=0,c=!1,d=0,u=0;for(;a<s&&!c;){t.signal?.throwIfAborted(),a+=1,c=!0;for(let l of i){d+=1;let f=r.get(l);if(f===void 0)continue;u+=f.length;let p=cs(f,o);p!==o.get(l)&&(o.set(l,p),c=!1)}}return{value:{communities:ds(o,n),iterations:a,converged:c},meta:{visitedNodes:d,inspectedEdges:u,truncated:!c}}}function we(e){return e.direction==="directed"&&(e.ordering||e.hierarchy)}function ke(e){return e.inverse!==void 0&&e.inverse<e.kind?e.inverse:e.kind}function Ge(e,t){return(t.hierarchy?ge(e,t):e.source===U(e,t)?e.target:e.source)===e.target?{from:e.source,to:e.target}:{from:e.target,to:e.source}}function us(e,t){if(t===void 0)return;let s=e.registry(),n=new Set;for(let r of t){let i=s.require(r);if(!we(i))throw new TypeError(`Relationship kind ${i.kind} is not a directed ordering or hierarchy kind`);n.add(ke(i))}return n}function ls(e,t){let s=e.registry(),n=new Map;for(let r of e.edges()){let i=s.require(r.kind);if(!we(i))continue;let o=ke(i);if(t!==void 0&&!t.has(o))continue;let a=Ge(r,i);if(a.from===a.to)continue;let c=n.get(o);c===void 0&&(c={adjacency:new Map,records:[]},n.set(o,c));let d=c.adjacency.get(a.from);d===void 0?c.adjacency.set(a.from,new Set([a.to])):d.add(a.to),c.records.push({...a,edge:r})}return n}function fs(e){let t=new Map;for(let[s,n]of e.adjacency)t.set(s,[...n].sort());return t}function ps(e,t,s,n){let r=[n];for(let i=s;i!==t;i=e.get(i))r.push(i);return r.push(t),r.reverse()}function hs(e,t,s,n,r,i){for(let o of e.get(s.id)??[])if(i.inspectedEdges+=1,!(s.depth===0&&o===t.to)&&!n.has(o)){if(n.set(o,s.id),o===t.to)return ps(n,t.from,s.id,o);r.push({id:o,depth:s.depth+1})}}function gs(e,t,s,n){let r=new Map([[t.from,t.from]]),i=[{id:t.from,depth:0}];for(let o=0;o<i.length;o+=1){let a=i[o];if(n.visitedNodes+=1,a.depth>=s)continue;let c=hs(e,t,a,r,i,n);if(c!==void 0)return c}}function ve(e,t={}){let s=t.maxDepth??os;be("maxDepth",s),t.limit!==void 0&&be("limit",t.limit);let n=t.limit??Number.POSITIVE_INFINITY,r=us(e,t.kinds),i=ls(e,r),o=[],a={visitedNodes:0,inspectedEdges:0},c=!1;e:for(let d of[...i.keys()].sort()){let u=i.get(d),l=fs(u);for(let f of u.records){t.signal?.throwIfAborted();let p=gs(l,f,s,a);if(p!==void 0){if(o.length>=n){c=!0;break e}o.push({edge:f.edge,witness:p})}}}return{value:o,meta:{visitedNodes:a.visitedNodes,inspectedEdges:a.inspectedEdges,truncated:c}}}function ms(e,t,s,n,r){let i=new Set,o=[];for(let a of s){if(a.id===e||i.has(a.id))continue;if(!r.seen.has(a.id)){if(t>=n){r.truncated=!0;continue}r.seen.add(a.id),r.queue.push({id:a.id,depth:t+1})}i.add(a.id),o.push(a.id);let c=r.predecessors.get(a.id);c===void 0&&(c=new Set,r.predecessors.set(a.id,c)),c.add(e)}return o}function ys(e,t,s){let n=s.direction??"outgoing",r=s.maxDepth??Number.POSITIVE_INFINITY,i=[],o=new Map,a={seen:new Set([t]),queue:[{id:t,depth:0}],predecessors:new Map,truncated:!1},c=0;for(let d=0;d<a.queue.length;d+=1){s.signal?.throwIfAborted();let{id:u,depth:l}=a.queue[d];i.push(u);let f=e.neighborEdges(u,{direction:n,...s.kinds===void 0?{}:{kinds:s.kinds}});c+=f.meta.inspectedEdges,o.set(u,ms(u,l,f.value,r,a))}return{order:i,successors:o,predecessors:a.predecessors,inspectedEdges:c,truncated:a.truncated}}function bs(e,t){let s=[],n=new Set([t]),r=[{id:t,index:0}];for(;r.length>0;){let i=r.at(-1),o=e.successors.get(i.id);if(i.index<o.length){let a=o[i.index];i.index+=1,n.has(a)||(n.add(a),r.push({id:a,index:0}))}else s.push(i.id),r.pop()}return s.reverse()}function _s(e,t,s,n){let r=e,i=t;for(;r!==i;){for(;n.get(r)>n.get(i);)r=s.get(r);for(;n.get(i)>n.get(r);)i=s.get(i)}return r}function ws(e,t,s){let n;for(let r of[...e].sort())t.has(r)&&(n=n===void 0?r:_s(n,r,t,s));return n}function ks(e,t,s,n,r){let i=new Map([[t,t]]),o=!0;for(;o;){o=!1;for(let a of s){if(r?.throwIfAborted(),a===t)continue;let c=ws(e.predecessors.get(a),i,n);c!==void 0&&i.get(a)!==c&&(i.set(a,c),o=!0)}}return i}function jt(e,t,s={}){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`);if(s.maxDepth!==void 0&&(!Number.isInteger(s.maxDepth)||s.maxDepth<0))throw new TypeError(`Invalid maxDepth bound: ${String(s.maxDepth)}`);let n=ys(e,t,s),r=bs(n,t),i=new Map(r.map((d,u)=>[d,u])),o=ks(n,t,r,i,s.signal),a=new Map(r.map(d=>[d,1]));for(let d=r.length-1;d>=0;d-=1){let u=r[d];if(u===t)continue;let l=o.get(u);a.set(l,a.get(l)+a.get(u))}let c=r.filter(d=>d!==t).map(d=>({id:d,idom:o.get(d),dominatedCount:a.get(d)-1})).sort((d,u)=>u.dominatedCount-d.dominatedCount||d.id.localeCompare(u.id));return{value:{root:t,reachableCount:n.order.length,rows:c},meta:{visitedNodes:n.order.length,inspectedEdges:n.inspectedEdges,truncated:n.truncated}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="348c9246-2fb9-529e-b627-f60c901a6cf2")}catch{}})();function Ft(e){return Math.round(e*1e6)/1e6}function Gt(e,t,s){let n=e.get(t);n===void 0?e.set(t,new Set([s])):n.add(s)}function qt(e,t){let s=new Map(e.nodes().map(r=>[r,new Set]));_e(e,t,r=>{s.get(r.source).add(r.target),s.get(r.target).add(r.source)});let n=new Map;for(let[r,i]of s)n.set(r,[...i].sort());return n}function vs(e,t){let s=new Map,n=new Map;return _e(e,t,(r,i)=>{if(!i.ordering)return;let{predecessor:o,successor:a}=me(r,i);Gt(n,o,a),Gt(s,a,o)}),{incoming:s,outgoing:n}}function xs(e,t,s){let n=new Map([[e,0]]),r=new Map([[e,1]]),i=new Map,o=[],a=[e],c=0,d=0;for(let u=0;u<a.length;u+=1){let l=a[u];s.visitedNodes+=1,o.push(l);let f=n.get(l);l!==e&&(c+=1,d+=f);for(let p of t.get(l))if(s.inspectedEdges+=1,n.has(p)||(n.set(p,f+1),a.push(p)),n.get(p)===f+1){r.set(p,(r.get(p)??0)+r.get(l));let h=i.get(p);h===void 0?i.set(p,[l]):h.push(l)}}return{stack:o,sigma:r,predecessors:i,reachableCount:c,distanceSum:d}}function Es(e,t,s){let n=new Map;for(let r=e.stack.length-1;r>=0;r-=1){let i=e.stack[r],o=(1+(n.get(i)??0))/e.sigma.get(i);for(let a of e.predecessors.get(i)??[])n.set(a,(n.get(a)??0)+e.sigma.get(a)*o);i!==t&&s.set(i,(s.get(i)??0)+(n.get(i)??0))}}function Is(e,t){return t<=1||e.reachableCount===0?0:e.reachableCount/(t-1)*(e.reachableCount/e.distanceSum)}function Ts(e,t,s,n,r){return{id:e,degree:t.get(e).length,inDegree:s.incoming.get(e)?.size??0,outDegree:s.outgoing.get(e)?.size??0,betweenness:Ft((n.get(e)??0)/2),closeness:Ft(r.get(e))}}function Bt(e,t={}){let s=qt(e,t.kinds),n=vs(e,t.kinds),r=e.nodes(),i=new Map,o=new Map,a={visitedNodes:0,inspectedEdges:0};for(let u of r){t.signal?.throwIfAborted();let l=xs(u,s,a);o.set(u,Is(l,r.length)),Es(l,u,i)}let c=0;for(let u of s.values())c+=u.length;let d=r.map(u=>Ts(u,s,n,i,o)).sort((u,l)=>l.betweenness-u.betweenness||l.degree-u.degree||u.id.localeCompare(l.id));return{value:{nodeCount:r.length,edgeCount:c/2,rows:d},meta:{visitedNodes:a.visitedNodes,inspectedEdges:a.inspectedEdges,truncated:!1}}}function Ss(e,t){return e<=t?{source:e,target:t}:{source:t,target:e}}function Cs(e,t,s){let r=t.get(e.node)[e.neighborIndex];if(e.neighborIndex+=1,s.inspectedEdges+=1,r!==e.parent){if(s.discovery.has(r)){s.low.set(e.node,Math.min(s.low.get(e.node),s.discovery.get(r)));return}return e.children+=1,s.discovery.set(r,s.timer),s.low.set(r,s.timer),s.timer+=1,{node:r,parent:e.node,neighborIndex:0,children:0}}}function Rs(e,t,s){if(e.parent===null){e.children>1&&s.articulation.add(e.node);return}let n=e.parent,r=s.low.get(e.node);s.low.set(n,Math.min(s.low.get(n),r)),n!==t&&r>=s.discovery.get(n)&&s.articulation.add(n),r>s.discovery.get(n)&&s.bridges.push(Ss(n,e.node))}function Ds(e,t,s,n){s.discovery.set(e,s.timer),s.low.set(e,s.timer),s.timer+=1;let r=[{node:e,parent:null,neighborIndex:0,children:0}];for(;r.length>0;){n?.throwIfAborted();let i=r.at(-1);if(i.neighborIndex<t.get(i.node).length){let o=Cs(i,t,s);o!==void 0&&r.push(o)}else Rs(i,e,s),r.pop()}}function zt(e,t={}){let s=qt(e,t.kinds),n={discovery:new Map,low:new Map,timer:0,articulation:new Set,bridges:[],inspectedEdges:0};for(let r of e.nodes())n.discovery.has(r)||Ds(r,s,n,t.signal);return{value:{articulationPoints:[...n.articulation].sort(),bridges:n.bridges.sort((r,i)=>r.source.localeCompare(i.source)||r.target.localeCompare(i.target))},meta:{visitedNodes:n.discovery.size,inspectedEdges:n.inspectedEdges,truncated:!1}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="f155ac72-64eb-5316-b016-954abd48c0e7")}catch{}})();function Os(e){let t=e.registry(),s=new Map,n=new Set;for(let r of e.edges()){let i=t.require(r.kind);if(!i.ordering)continue;let{predecessor:o,successor:a}=me(r,i);if(n.add(o),n.add(a),o===a)continue;let c=s.get(o);c===void 0?s.set(o,new Set([a])):c.add(a)}return{forward:s,participants:n}}function Ls(e,t,s,n){if(e===void 0)return n;let r=n;for(let i of e)t.has(i)&&(r=Math.min(r,s.get(i)));return r}function Ns(e,t,s){let n=s-t;return{id:e,earliestStart:t,earliestFinish:t+1,latestStart:s,latestFinish:s+1,slack:n,critical:n===0}}function As(e,t,s,n,r){let i=new Map;for(let o=e.length-1;o>=0;o-=1){let a=e[o],c=Ls(t.forward.get(a),n,i,r);i.set(a,c-1)}return e.map(o=>Ns(o,s[o],i.get(o))).sort((o,a)=>o.slack-a.slack||o.earliestStart-a.earliestStart||o.id.localeCompare(a.id))}function Ut(e,t={}){t.signal?.throwIfAborted();let s=le(e,{registry:e.registry()}),n=Os(e),r=new Set(s.order),i=s.order.filter(d=>n.participants.has(d)),o=i.reduce((d,u)=>Math.max(d,s.depth[u]+1),0),a=As(i,n,s.depth,r,o),c=a.length>0;return{exact:!0,acyclic:s.acyclic,makespan:o,scheduledCount:a.length,criticalPath:c?s.criticalPath:[],criticalPathLength:c?s.criticalPathLength:0,cycles:s.cycles,rows:a,provenance:{algorithm:"critical-path-method",edgeFamily:"ordering",weighting:"unit"}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="996cfe8f-1b9b-534e-9e22-ede6f76d7cac")}catch{}})();var Ms=25,$s=new Set(["discovered_from","incident_from","supersedes","verifies"]);function Ke(e){return $s.has(e)}var Kt={error:0,warning:1,info:2};function ze(e,t,s,n,r,i,o){let a=[...r].sort((c,d)=>c.localeCompare(d));return{code:e,severity:t,policy:s,message:n(a.length),count:a.length,sample:a.slice(0,i),sample_truncated:a.length>i,remediation:o}}function Ps(e){let t=e.graph.registry(),s=new Map;for(let n of e.graph.edges()){let r=t.require(n.kind);if(!r.ordering)continue;let[i,o]=(r.precedence??"source_before_target")==="target_before_source"?[n.target,n.source]:[n.source,n.target],a=s.get(i);a?a.push(o):s.set(i,[o])}for(let n of s.values())n.sort((r,i)=>r.localeCompare(i));return s}function Vt(e,t){t.indexes.set(e,t.nextIndex),t.lowLinks.set(e,t.nextIndex),t.nextIndex+=1,t.stack.push(e),t.onStack.add(e)}function js(e,t,s,n){let r=s.get(e.node)??[];if(e.neighborIndex>=r.length)return!1;let i=r[e.neighborIndex];return e.neighborIndex+=1,n.indexes.has(i)?n.onStack.has(i)&&n.lowLinks.set(e.node,Math.min(n.lowLinks.get(e.node),n.indexes.get(i))):(Vt(i,n),t.push({node:i,neighborIndex:0})),!0}function Fs(e,t,s,n){t.pop();let r=t.at(-1);if(r&&n.lowLinks.set(r.node,Math.min(n.lowLinks.get(r.node),n.lowLinks.get(e.node))),n.lowLinks.get(e.node)!==n.indexes.get(e.node))return;let i=[];for(;;){let o=n.stack.pop();if(n.onStack.delete(o),i.push(o),o===e.node)break}(i.length>1||i.length===1&&s.get(i[0])?.includes(i[0]))&&n.components.push(i.sort((o,a)=>o.localeCompare(a)))}function We(e){let t={indexes:new Map,lowLinks:new Map,onStack:new Set,stack:[],components:[],nextIndex:0},s=[...e.keys()].sort((n,r)=>n.localeCompare(r));for(let n of s){if(t.indexes.has(n))continue;let r=[{node:n,neighborIndex:0}];for(Vt(n,t);r.length>0;){let i=r.at(-1);js(i,r,e,t)||Fs(i,r,e,t)}}return t.components.sort((n,r)=>n[0].localeCompare(r[0]))}function qe(e){return`${e.holder_id} -> ${e.target_id} (${e.kind})`}function E(e,t,s,n,r,i,o,a){t.length!==0&&e.push(ze(n,r,i,o,t,s,a))}function Gs(e,t,s){let n=[],r=[...e.dangling.active,...e.dangling.legacy_terminal].filter(i=>!i.no_active_blocker_sentinel);return E(n,r.filter(i=>!t(i.holder_status)).map(qe),s,"missing_reference_active","error","Active items must not reference absent targets; missing prerequisites distort scheduling.",i=>`${i} active dangling reference(s) to absent items`,"Restore or re-create the referenced item, or remove/retype the reference on the holder."),E(n,r.filter(i=>t(i.holder_status)).map(qe),s,"missing_reference_terminal","info","Terminal items may retain historical references, but absent targets remain unexplainable context.",i=>`${i} terminal dangling reference(s) to absent items`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),E(n,e.dangling.no_active_blocker_sentinels.map(qe),s,"legacy_no_blocker_sentinel","info","The pre-structured-dependency no-active-blocker sentinel is retired; real edges carry blocker state.",i=>`${i} legacy no-active-blocker sentinel reference(s)`,"Delete the sentinel reference; blocker state is derived from blocked_by edges."),n}function Ue(e,t){let s=t.get(e);return s?!s.terminal:!0}function qs(e,t,s,n){let r=[],i=Ps(e);for(let c of We(i)){let d=c.some(u=>Ue(u,t));r.push(d?ze("ordering_cycle","error","Order-bearing relationship kinds must stay acyclic; a cycle makes every member unschedulable.",u=>`execution-order cycle across ${u} item(s)`,c,n,"Remove or retype one ordering edge inside the cycle, or split the work so precedence is linear."):ze("legacy_ordering_cycle","info","Ordering cycles between exclusively terminal items are historical contradictions with no scheduling effect.",u=>`terminal-only execution-order cycle across ${u} item(s)`,c,n,"Leave as history debt, or clean up in a dedicated changelog-safe closed-item batch; never repair closed items ad hoc."))}let o=new Map;for(let[c,d]of i)for(let u of d){let l=o.get(u);l?l.push(c):o.set(u,[c])}let a=[...t.values()].filter(c=>!c.missing&&!c.terminal&&s(c.status)&&!(o.get(c.id)??[]).some(d=>{let u=t.get(d);return u===void 0||!u.terminal})).map(c=>c.id);return E(r,a,n,"stale_lifecycle_block","warning","A blocked lifecycle status must be backed by at least one open ordering predecessor.",c=>`${c} status-blocked item(s) with no open blocker edge`,'Add a local blocker edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status.'),r}function xe(e){let t=e.edges.map(s=>s.kind).sort((s,n)=>s.localeCompare(n));return`${e.from} -> ${e.to} (${t.join(" + ")})`}function Ve(e){let t=e.graph.registry(),s=new Map;for(let r of e.graph.edges()){let i=t.require(r.kind);if(!we(i))continue;let o=Ge(r,i);if(o.from===o.to)continue;let a=`${ke(i)}::${o.from}::${o.to}`,c=s.get(a);c?c.edges.push(r):s.set(a,{...o,edges:[r]})}let n=[...s.values()].filter(r=>r.edges.length>=2);for(let r of n)r.edges.sort((i,o)=>i.kind.localeCompare(o.kind));return n.sort((r,i)=>r.from.localeCompare(i.from)||r.to.localeCompare(i.to))}function Bs(e,t,s){let n=[],r=[];for(let o of Ve(e))(Ue(o.from,t)||Ue(o.to,t)?n:r).push(xe(o));let i=[];return E(i,n,s,"duplicate_edge","info","One semantic relationship should be stored once; parallel same-family spellings (reciprocal inverse pairs included) add no information and skew degree metrics.",o=>`${o} duplicated relationship(s) between active endpoints`,"Remove all but one stored spelling of the relationship; keep the canonical direction the holder declared first."),E(i,r,s,"legacy_duplicate_edge","info","Duplicated spellings between exclusively terminal items are historical noise with no scheduling effect.",o=>`${o} duplicated relationship(s) between terminal endpoints`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),i}function zs(e,t){let s=[],n=[];for(let i of e.duplicateRows??[])(i.legacy_terminal?n:s).push(`${i.holder_id} -> ${i.target_id} (${i.kind} x${i.occurrences})`);let r=[];return E(r,s,t,"duplicate_dependency_row","warning","One dependency row must be stored once per holder; identical repeated rows are a storage-layer defect invisible to the assembled graph.",i=>`${i} exactly duplicated stored dependency row(s) on active holder(s)`,"Remove the repeated rows so the dependency is stored exactly once; graph semantics are unchanged."),E(r,n,t,"legacy_duplicate_dependency_row","info","Identical repeated dependency rows on terminal holders are historical storage noise with no scheduling effect.",i=>`${i} exactly duplicated stored dependency row(s) on terminal holder(s)`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),r}function Us(e,t,s,n,r){e.active+=1;let i=t.type??"(untyped)",o=e.byType.get(i);o||(o={active:0,isolated:0,degree_leq_one:0},e.byType.set(i,o)),o.active+=1,!(s>1)&&(e.degreeLeqOne+=1,o.degree_leq_one+=1,s===0&&(e.isolated+=1,o.isolated+=1),!(n.has(t.id.toLowerCase())||r.has(i.toLowerCase()))&&(s===0?e.isolates.push(t.id):e.sparse.push(t.id)))}function Ks(e,t,s,n,r,i){let o={active:0,missing:0,isolated:0,degreeLeqOne:0,isolates:[],sparse:[],byType:new Map};for(let p of e.graph.nodes()){let h=t.get(p);if(h){if(h.missing){o.missing+=1;continue}h.terminal||Us(o,h,e.graph.incidentEdges(p).length,s,n)}}let{isolates:a,sparse:c}=o,d=[];E(d,a,r,"isolated_active_node","warning","Active work should be reachable from the graph unless explicitly declared a valid isolate.",p=>`${p} active item(s) with no relationships`,"Link the item to its parent, prerequisite, or origin \u2014 or register it as an exempt isolate."),E(d,c,r,"sparse_active_node","info","Active items with a single edge often miss an honest semantic partner; sparse is not automatically defective.",p=>`${p} active item(s) with exactly one relationship`,"Investigate for an honest second edge (story->task, defect family, cross-epic complement); do not fabricate one.");let u=e.graph.edges().length,l=Object.fromEntries(Object.entries(i).sort(([p],[h])=>p.localeCompare(h))),f=Object.entries(l).reduce((p,[h,g])=>p+(Ke(h)?g:0),0);return{findings:d,profile:{nodes:e.graph.nodes().length,edges:u,edge_basis:"deduplicated_directed",edges_by_kind:l,edge_share_by_kind:Object.fromEntries(Object.entries(l).map(([p,h])=>[p,h/u])),semantic_edges:f,semantic_edge_share:u===0?0:f/u,active_nodes:o.active,missing_nodes:o.missing,isolated_active_nodes:o.isolated,degree_leq_one_active_nodes:o.degreeLeqOne,coverage_by_type:Object.fromEntries([...o.byType.entries()].sort(([p],[h])=>p<h?-1:1))}}}function Ee(e,t={}){let s=t.isTerminal??(l=>l==="closed"||l==="canceled"),n=t.isBlocked??(l=>l==="blocked"),r=t.maxSampleSize??Ms;if(!Number.isInteger(r)||r<1)throw new TypeError(`Invalid audit sample bound: ${String(t.maxSampleSize)}`);let i=new Set((t.exemptIsolates??[]).filter(l=>typeof l=="string").map(l=>l.trim().toLowerCase())),o=new Set((t.isolateExemptTypes??[]).filter(l=>typeof l=="string").map(l=>l.trim().toLowerCase())),a=new Map(e.details.map(l=>[l.id,{id:l.id,status:l.status,missing:e.missingIdSet.has(l.id.toLowerCase()),terminal:s(l.status),...l.type===void 0?{}:{type:l.type}}]));t.signal?.throwIfAborted();let c={};for(let l of e.graph.edges())c[l.kind]=(c[l.kind]??0)+1;let d=Gs(e,s,r);t.signal?.throwIfAborted(),d.push(...qs(e,a,n,r)),t.signal?.throwIfAborted(),d.push(...Bs(e,a,r),...zs(e,r)),t.signal?.throwIfAborted();let u=Ks(e,a,i,o,r,c);return d.push(...u.findings),d.sort((l,f)=>Kt[l.severity]-Kt[f.severity]||l.code.localeCompare(f.code)||l.sample[0].localeCompare(f.sample[0])),{findings:d,profile:u.profile}}function Be(e,t){let s=[...new Set([...Object.keys(e),...Object.keys(t)])].sort(),n={};for(let r of s){let i=(t[r]??0)-(e[r]??0);i!==0&&(n[r]=i)}return n}function Wt(e){return e.profile.coverage_by_type??{}}function Ht(e,t){let s={},n=Wt(e),r=Wt(t),i=[...new Set([...Object.keys(n),...Object.keys(r)])].sort();for(let f of i){let p=Object.assign({active:0,isolated:0,degree_leq_one:0},n[f]),h=Object.assign({active:0,isolated:0,degree_leq_one:0},r[f]),g={active:h.active-p.active,isolated:h.isolated-p.isolated,degree_leq_one:h.degree_leq_one-p.degree_leq_one};Object.values(g).some(m=>m!==0)&&(s[f]=g)}let{edge_share_by_kind:o={},semantic_edges:a=0,semantic_edge_share:c=0}=e.profile,{edge_share_by_kind:d={},semantic_edges:u=0,semantic_edge_share:l=0}=t.profile;return{baseline_saved_at:e.saved_at,same_snapshot:e.fingerprint===t.fingerprint,affected_subjects_by_code:Be(e.affected_subjects_by_code,t.affected_subjects_by_code),profile:{nodes:t.profile.nodes-e.profile.nodes,edges:t.profile.edges-e.profile.edges,active_nodes:t.profile.active_nodes-e.profile.active_nodes,missing_nodes:t.profile.missing_nodes-e.profile.missing_nodes,isolated_active_nodes:t.profile.isolated_active_nodes-e.profile.isolated_active_nodes,degree_leq_one_active_nodes:t.profile.degree_leq_one_active_nodes-e.profile.degree_leq_one_active_nodes,edges_by_kind:Be(e.profile.edges_by_kind,t.profile.edges_by_kind),edge_share_by_kind:Be(o,d),semantic_edges:u-a,semantic_edge_share:l-c,coverage_by_type:s}}}import Xt 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]="4cb399d6-7311-5e2d-a8d2-e0140530ec72")}catch{}})();var Yt=1,He=500,Ws=64,Vs="graph-durable-cache";function Qt(e){return re(e,Vs,30,`graph-cache:${process.pid}`,!1,!1,3e3)}function K(e){return Xt.join(e,"runtime","graph-cache.json")}function Zt(e){return Xt.join(e,"runtime","graph-audit-baseline.json")}function Je(e){if(e!==null)try{let t=JSON.parse(e);return typeof t!="object"||t===null||t.version!==Yt||typeof t.fingerprint!="string"||typeof t.saved_at!="string"||typeof t.results!="object"||t.results===null||Array.isArray(t.results)?void 0:t}catch{return}}async function Xe(e,t){let s=await F(K(e)),n=Je(s),r=n?.fingerprint===t;return{exists:s!==null,fresh:r,results:r?n.results:{}}}async function Ye(e,t,s,n,r){let i=await Qt(e);try{let o=Je(await F(K(e))),a=o?.fingerprint===t?o.results:{};delete a[n],a[n]=r;let c=Object.keys(a);for(let d of c.slice(0,Math.max(0,c.length-Ws)))delete a[d];await G(K(e),JSON.stringify({version:Yt,fingerprint:t,saved_at:new Date().toISOString(),results:a})),s.results=a}finally{await i()}}async function Qe(e){let t=await Qt(e);try{await at(K(e))}finally{await t()}}async function en(e,t){let s=K(e),n=await F(s),r=Je(n);return r===void 0?{exists:n!==null,fresh:!1,entry_count:0}:{exists:!0,fresh:r.fingerprint===t,entry_count:Object.keys(r.results).length,fingerprint:r.fingerprint.slice(0,12),saved_at:r.saved_at,bytes:Buffer.byteLength(n,"utf8")}}function Ze(e,t){return t||e>=He}function Jt(e){return M(e)&&Object.values(e).every(Ie)}function M(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ie(e){return Number.isInteger(e)&&Number(e)>=0}function tn(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1}function Hs(e,t){return e===void 0||t(e)}function Js(e){return M(e)&&Object.values(e).every(tn)}function Xs(e){return M(e)?Object.values(e).every(t=>M(t)&&[t.active,t.isolated,t.degree_leq_one].every(Ie)):!1}function Ys(e,t,s,n,r){let i=[s,n,r],o=i.filter(d=>d!==void 0).length;if(o===0)return{edge_share_by_kind:{},semantic_edges:0,semantic_edge_share:0};if(o!==i.length||!Js(s)||!Ie(n)||!tn(r))return;let a=Object.entries(t);if(a.reduce((d,[,u])=>d+u,0)!==e||Object.keys(s).length!==a.length||a.some(([d,u])=>s[d]!==(e===0?0:u/e)))return;let c=a.reduce((d,[u,l])=>d+(Ke(u)?l:0),0);if(!(n!==c||r!==(e===0?0:c/e)))return{edge_share_by_kind:s,semantic_edges:n,semantic_edge_share:r}}function Qs(e){if(e!==null)try{let t=JSON.parse(e);if(!M(t))return;let s=t,n=s.profile;if(typeof s.saved_at!="string"||typeof s.fingerprint!="string"||!Jt(s.affected_subjects_by_code)||!M(n)||![n.nodes,n.edges,n.active_nodes,n.missing_nodes,n.isolated_active_nodes,n.degree_leq_one_active_nodes].every(Ie)||!Jt(n.edges_by_kind)||!Hs(n.coverage_by_type,Xs))return;let r=Ys(n.edges,n.edges_by_kind,n.edge_share_by_kind,n.semantic_edges,n.semantic_edge_share);if(r===void 0)return;let{coverage_by_type:i={}}=n;return{...s,profile:{...n,...r,coverage_by_type:i}}}catch{return}}async function nn(e){return Qs(await F(Zt(e)))}async function sn(e,t){await G(Zt(e),JSON.stringify(t))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="9b8e22ad-6268-515d-994e-6b98a062ba93")}catch{}})();var Zs={missing_reference_active:{op:"investigate",confidence:"medium",rationale:"Restore or re-create the referenced item, or remove/retype the reference on the active holder; the correct fix depends on why the target is absent."},missing_reference_terminal:{op:"waive",confidence:"high",rationale:"Terminal-holder reference to an absent item is historical debt; waive it or clean it up only in a dedicated changelog-safe closed-item batch."},legacy_no_blocker_sentinel:{op:"remove",confidence:"high",rationale:"The pre-structured-dependency no-active-blocker sentinel is retired and carries no information; blocker state derives from blocked_by edges."},ordering_cycle:{op:"investigate",confidence:"low",rationale:"Every cycle member is unschedulable until one ordering edge is removed or retyped; the planner never chooses which edge to cut."},legacy_ordering_cycle:{op:"waive",confidence:"high",rationale:"Terminal-only ordering cycles have no scheduling effect; repairing them would mutate closed history (changelog drag)."},duplicate_edge:{op:"remove",confidence:"high",rationale:"Parallel same-family spellings state one relationship twice; remove all but one stored spelling, keeping the holder's canonical direction."},legacy_duplicate_edge:{op:"waive",confidence:"high",rationale:"Duplicated spellings between terminal items are historical noise; waive or batch changelog-safe cleanup."},duplicate_dependency_row:{op:"remove",confidence:"high",rationale:"The identical dependency row is stored more than once on the holder; drop the repeats so the row exists exactly once \u2014 graph semantics are unchanged."},legacy_duplicate_dependency_row:{op:"waive",confidence:"high",rationale:"Repeated identical rows on terminal holders are storage noise; waive or clean up only in a changelog-safe closed-item batch."},stale_lifecycle_block:{op:"investigate",confidence:"medium",rationale:`Add a local ordering edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status; only the holder's owner knows which is true.`},isolated_active_node:{op:"investigate",confidence:"medium",rationale:"Link the item to its parent, prerequisite, or origin \u2014 or register it as an explicitly exempt isolate; the audit never fabricates an edge."},sparse_active_node:{op:"investigate",confidence:"low",rationale:"Investigate for an honest second edge (story-to-task, defect family, cross-epic complement); sparse is not automatically defective."}};function rn(e){return`${e.source} -${e.kind}-> ${e.target}`}function er(e){let[t,...s]=e.edges;return s.map(n=>({op:"remove",code:"duplicate_edge",subject:rn(n),rationale:"This stored spelling restates the kept canonical edge of the same semantic family; removing it leaves the relationship stated exactly once.",evidence:[`keep: ${rn(t)}`,`group: ${xe(e)}`],confidence:"high"}))}function tr(e,t){if(e.code==="duplicate_edge")return e.sample.flatMap(n=>er(t.get(n)));let s=Zs[e.code];return e.sample.map(n=>({op:s.op,code:e.code,subject:n,rationale:s.rationale,evidence:[e.policy],confidence:s.confidence}))}function on(e,t={}){let{redundancyLimit:s,...n}=t,r=Ee(e,n),i=new Map(Ve(e).map(d=>[xe(d),d])),o=r.findings.flatMap(d=>tr(d,i)),a=r.findings.some(d=>d.sample_truncated);t.signal?.throwIfAborted();let c=ve(e.graph,{limit:s??t.maxSampleSize??25,...t.signal===void 0?{}:{signal:t.signal}});for(let d of c.value)o.push({op:"remove",code:"redundant_edge",subject:`${d.edge.source} -> ${d.edge.target} (${d.edge.kind})`,rationale:"The stored edge is implied by a longer same-family witness path; shortcut edges are sometimes deliberate emphasis, so confirm intent before removing.",evidence:[`witness: ${d.witness.join(" -> ")}`],confidence:"medium"});return a=a||c.meta.truncated,{steps:o,report:r,truncated:a,cost:{visitedNodes:c.meta.visitedNodes,inspectedEdges:c.meta.inspectedEdges}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ee0547d9-ae0f-5762-8bff-e25f0a3cd4d5")}catch{}})();var nr=["tree","graph","context"],sr=["none","repeated"],rr=["outgoing","incoming","both"],ir=32,or=200,ar=400,cr=16e3;function dr(e){let t=e?.trim().toLowerCase()??"tree";if(nr.includes(t))return t;throw new b(`Invalid --format value "${e}". Use "tree", "graph", or "context".`,y.USAGE)}function I(e,t){if(e===void 0)return;let s=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(s)||s<1)throw new b(`Invalid --${t} value "${e}". Use a positive integer.`,y.USAGE);return s}function Te(e){if(e===void 0)return;let t=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(t)||t<0)throw new b(`Invalid --max-depth value "${e}". Use a non-negative integer.`,y.USAGE);return t}function ur(e){let t=e?.trim().toLowerCase()??"none";if(sr.includes(t))return t;throw new b(`Invalid --collapse value "${e}". Use "none" or "repeated".`,y.USAGE)}function tt(e){let t=e?.trim().toLowerCase()??"both";if(rr.includes(t))return t;throw new b(`Invalid --direction value "${e}". Use "outgoing", "incoming", or "both".`,y.USAGE)}function nt(e,t=x()){if(e===void 0)return;let s=(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);if(s.length===0)return;let n=new Set;for(let r of s){let i=t.resolve(r);if(!i){let o=t.list().map(a=>a.kind).join(", ");throw new b(`Invalid --kind value "${r}". Registered kinds: ${o}.`,y.USAGE)}n.add(i.kind)}return[...n].sort()}function lr(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)}),s=new Map;for(let n of t){let r=`${n.kind.toLowerCase()}::${n.id.toLowerCase()}`;s.has(r)||s.set(r,{id:n.id,kind:n.kind})}return[...s.values()]}function fr(e){return{id:e.id,title:e.title,type:e.type,status:e.status,dependencies:lr(e.dependencies)}}function pr(e){return ee(new TextEncoder().encode(JSON.stringify({...e,dependencies:void 0})).byteLength)}function hr(e,t,s,n,r,i,o,a,c){for(let d of t.dependencies){let u=Math.max(1,Math.ceil(JSON.stringify({from:e.id,to:d.id,kind:d.kind}).length/3));if(a.nodes>=a.nodeLimit){e.truncated=!0,a.reasons.add("node_limit");break}if(a.edges>=a.edgeLimit){e.truncated=!0,a.reasons.add("edge_limit");break}if(a.estimatedTokens+u>=a.tokenBudget){e.truncated=!0,a.reasons.add("token_budget");break}a.edges+=1,a.estimatedTokens+=u,e.dependencies.push(cn(d.id,s,n,r,i,o,a,c+1,d.kind))}}function gr(e,t,s,n,r,i,o,a){return o.estimatedTokens>=o.tokenBudget&&t?.dependencies.length?(e.truncated=!0,o.reasons.add("token_budget"),!0):!t||e.cycle?!0:n!==void 0&&a>=n?(t.dependencies.length>0&&(e.truncated=!0,o.reasons.add("max_depth")),!0):r==="repeated"&&i.has(s)?(e.collapsed=!0,!0):!1}function cn(e,t,s,n,r,i,o,a=0,c){let d=e.trim().toLowerCase(),u=t.get(d),l={id:u?.id??e,title:u?.title,type:u?.type,status:u?.status,via:c,missing:!u,cycle:s.has(d),dependencies:[]};if(o.nodes+=1,o.estimatedTokens+=pr(l),gr(l,u,d,n,r,i,o,a))return l;r==="repeated"&&i.add(d);let f=new Set(s);return f.add(d),hr(l,u,t,f,n,r,i,o,a),l}function an(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 mr(e){let t=new Map,s=new Map,n=[e];for(;n.length>0;){let a=n.pop();t.set(a.id,an(t.get(a.id),{id:a.id,title:a.title,type:a.type,status:a.status,missing:a.missing}));for(let c of a.dependencies){t.set(c.id,an(t.get(c.id),{id:c.id,title:c.title,type:c.type,status:c.status,missing:c.missing}));let d=c.via??"related",u=`${a.id}::${c.id}::${d}`;s.has(u)||s.set(u,{from:a.id,to:c.id,kind:d}),c.cycle||n.push(c)}}let r=[...t.values()].sort((a,c)=>a.id.localeCompare(c.id)),i=[...s.values()].sort((a,c)=>{let d=a.from.localeCompare(c.from);if(d!==0)return d;let u=a.to.localeCompare(c.to);return u!==0?u:a.kind.localeCompare(c.kind)}),o=r.filter(a=>a.missing).map(a=>a.id);return{root_id:e.id,nodes:r,edges:i,missing_ids:o}}function dn(e,t,s){let n=new Set,r=new Set,i=new Set,o=new Set,a=[{id:e,depth:0}],c=0;for(;c<a.length;){let d=a[c++],u=d.id.trim().toLowerCase();n.add(u);let l=t.get(u);if(!l){i.add(u);continue}if(!(s!==void 0&&d.depth>=s)&&!o.has(u)){o.add(u);for(let f of l.dependencies)r.add(`${u}::${f.id.trim().toLowerCase()}::${f.kind}`),a.push({id:f.id,depth:d.depth+1})}}return{node_count:n.size,edge_count:r.size,edge_basis:"deduplicated_directed",missing_count:i.size}}function yr(e,t=x()){let s=Te(e.maxDepth),n=I(e.nodeLimit,"node-limit"),r=I(e.edgeLimit,"edge-limit"),i=I(e.tokenBudget,"token-budget"),o=nt(e.kind,t);return{direction:tt(e.direction),...o===void 0?{}:{kinds:o},...s===void 0?{}:{maxDepth:s},...n===void 0?{}:{nodeLimit:n},...r===void 0?{}:{edgeLimit:r},...i===void 0?{}:{tokenBudget:i},...e.cursor?.trim()?{cursor:e.cursor.trim()}:{}}}function br(e,t,s,n){return Ct(e.graph,t,e.details.map(r=>r.id===t&&n.length>0?{...r,evidence:n}:r),s)}function et(e,t,s,n){for(let r of s.slice(0,n)){let i=r?.trim();i&&e.push(`${t}:${i}`)}}async function _r(e,t,s,n){let r=await ft(e,t,s.id_prefix,s.item_format,n);if(!r)return[];let{document:i}=await pt(r,{schema:s.schema}),o=i.metadata,a=o.files??[],c=o.tests??[],d=o.docs??[],u=[["files",a.length],["tests",c.length],["docs",d.length],["comments",(o.comments??[]).length],["notes",(o.notes??[]).length],["learnings",(o.learnings??[]).length]];if(u.every(([,f])=>f===0))return[];let l=[`linked:${u.map(([f,p])=>`${f}=${p}`).join(",")}`];return et(l,"file",a.map(f=>f.path),3),et(l,"test",c.map(f=>f.command??f.path),2),et(l,"doc",d.map(f=>f.path),2),l}function wr(e){let{canonicalId:t,context:s,missingCount:n,missingReferences:r,referenceLimit:i,summaryOnly:o}=e;return{id:t,format:"context",node_count:s.nodes.length+1,edge_count:s.edges.length,edge_basis:"deduplicated_directed",missing_count:n,missing_scope:"traversal",missing_reference_count:r.length,...o?{}:{missing_references:r.slice(0,i),context:s}}}function kr(e){let{row:t,missingReachableSet:s,packetIds:n,filteredKinds:r,registry:i}=e;if(t.no_active_blocker_sentinel||!s.has(t.target_id.trim().toLowerCase())||!n.has(t.holder_id))return!1;if(r===void 0)return!0;let o=i.resolve(t.kind);return o!==void 0&&(r.has(o.kind)||o.inverse!==void 0&&r.has(o.inverse))}function un(e,t,s){let n;for(;;){let r=ee(new TextEncoder().encode(Oe(De("deps",e),t)).byteLength);if(r===n)return r;s(r),n=r}}function vr(e){return e instanceof TypeError&&e.message.startsWith("Relationship context tokenBudget cannot fit ")}function xr(e){try{return br(e.assembly,e.canonicalId,{...e.contextOptions,...e.internalTokenBudget===void 0?{}:{tokenBudget:e.internalTokenBudget}},e.rootEvidence)}catch(t){if(e.smallestResult!==void 0&&vr(t))return e.smallestResult;throw t}}function Er(e){let{assembly:t,canonicalId:s,contextOptions:n,rootEvidence:r,summaryOnly:i,outputFormat:o,missingCount:a,missingReferences:c}=e,u=n.edgeLimit??40,l=n.tokenBudget,f,p;for(;;){let h=xr({assembly:t,canonicalId:s,contextOptions:n,internalTokenBudget:l,rootEvidence:r,smallestResult:p});if("format"in h)return h;let g=h;f??=g.meta.tokenBudget,l??=f;let m=wr({canonicalId:s,context:g,missingCount:a,missingReferences:c,referenceLimit:u,summaryOnly:i});if(p=m,i||(g.meta.tokenBudget=f,g.meta.usedTokens=un($(m,!1),o,w=>{g.meta.usedTokens=w}),g.meta.usedTokens<=f))return m;if(u>0){u-=1;continue}let _=l,v=_*f/g.meta.usedTokens;l=Math.min(_-1,Math.max(1,Math.floor(v*.9)))}}function Ir(e){let{assembly:t,canonicalId:s,options:n,rootEvidence:r,summaryOnly:i,outputFormat:o}=e,a=yr(n,t.graph.registry()),c=t.graph.closure(s,{direction:a.direction,...a.kinds===void 0?{}:{kinds:a.kinds},maxDepth:a.maxDepth??3}),d=c.value.filter(g=>t.missingIdSet.has(g.toLowerCase())),u=new Set(d.map(g=>g.toLowerCase())),l=t.graph.registry(),f=a.kinds?new Set(a.kinds.map(g=>l.require(g).kind)):void 0,p=new Set([s,...c.value]),h=[...t.dangling.active,...t.dangling.legacy_terminal].filter(g=>kr({row:g,missingReachableSet:u,packetIds:p,filteredKinds:f,registry:l}));return Er({assembly:t,canonicalId:s,contextOptions:a,rootEvidence:r,summaryOnly:i,outputFormat:o,missingCount:d.length,missingReferences:h})}function Tr(e){let t=[e],s;for(;t.length>0;){let n=t.pop();n.dependencies.length>0&&(s=n,t.push(...n.dependencies))}return s?(s.dependencies.pop(),s.truncated=!0,!0):!1}function Sr(e,t,s,n,r,i,o){let a=r??ir,c=I(s.nodeLimit,"node-limit")??or,d=I(s.edgeLimit,"edge-limit")??ar,u=I(s.tokenBudget,"token-budget")??cr,l={nodeLimit:c,edgeLimit:d,tokenBudget:u,nodes:0,edges:0,estimatedTokens:0,reasons:new Set},f=cn(e,n,new Set,a,t==="graph"?"repeated":i,new Set,l),p=dn(e,n,void 0),h;for(;;){let g=mr(f),m=l.reasons.size===0?void 0:{reasons:[...l.reasons].sort(),limits:{max_depth:a,node_limit:c,edge_limit:d,token_budget:u},estimated_tokens:0,total_node_count:p.node_count,total_edge_count:p.edge_count,omitted_node_count:Math.max(0,p.node_count-g.nodes.length),omitted_edge_count:Math.max(0,p.edge_count-g.edges.length)},_={id:e,format:t,node_count:g.nodes.length,edge_count:g.edges.length,edge_basis:"deduplicated_directed",missing_count:g.missing_ids.length,...m?{truncation:m}:{}};if(h=t==="tree"?{..._,tree:f}:{..._,graph:g},(h.truncation===void 0?ee(new TextEncoder().encode(Oe(De("deps",$(h,!1)),o)).byteLength):un($(h,!1),o,w=>{h.truncation.estimated_tokens=w}))<=u)return h;if(!Tr(f))return l.reasons.add("token_budget"),h;l.reasons.add("token_budget")}}function $(e,t,s={}){let n={name:e.format==="tree"?"dependency_tree":e.format==="graph"?"dependency_graph":"relationship_context",restore_with:"--full"};return{...e,legacy_alias_counts:s,projection:{mode:t?"summary":"full",declared_field_groups:[n],included_field_groups:t?[]:[n.name]}}}async function eo(e,t,s){let n=X(process.cwd(),s.path);if(!await H(Y(n)))throw new b(`Tracker is not initialized at ${n}. Run pm init first.`,y.NOT_FOUND);let r=dr(t.format),i=Te(t.maxDepth),o=ur(t.collapse);te(t.summary===!0,t.full===!0,"--summary");let a=t.summary===!0,c=await ie(n),d=J(c,se()),u=await oe(n,c.item_format,d.type_to_folder,void 0,c.schema),l=Z(c.schema),f=new Map(u.map(h=>[h.id.trim().toLowerCase(),fr(h)])),p=mt(u,h=>R(h,l));for(let h of[...p.active,...p.legacy_terminal]){let g=f.get(h.holder_id.trim().toLowerCase()),m=h.kind.trim().toLowerCase();g&&!g.dependencies.some(_=>_.id.trim().toLowerCase()===h.target_id.trim().toLowerCase()&&_.kind===m)&&g.dependencies.push({id:h.target_id,kind:m})}if(!f.has(e.trim().toLowerCase()))throw new b(`Item ${e} not found`,y.NOT_FOUND);if(r==="context"){let h=f.get(e.trim().toLowerCase()).id,g=a?[]:await _r(n,h,c,d.type_to_folder),m=w=>R(w,l),_=N(),v=pe().lookup(n,fe(u,m,_),()=>A(u,m,_));return $(Ir({assembly:v.assembly,canonicalId:h,options:t,rootEvidence:g,summaryOnly:a,outputFormat:s.json===!0?"json":"toon"}),a,v.assembly.legacyAliasCounts)}return a?$({id:e,format:r,...dn(e,f,i)},!0,Object.fromEntries(Object.entries(A(u,h=>R(h,l)).legacyAliasCounts))):$(Sr(e,r,t,f,i,o,s.json===!0?"json":"toon"),!1,Object.fromEntries(Object.entries(A(u,h=>R(h,l)).legacyAliasCounts)))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6c8bfb7a-687a-5fbb-b408-ffdbab1187a9")}catch{}})();var hn=new Set(["ancestors","descendants","predecessors","successors","paths","impact","dominators"]),S=10;function ln(e,t,s){return{...e,projection:{mode:t?"summary":"full",declared_field_groups:s===void 0?[]:[{name:s,restore_with:"--full"}],included_field_groups:s===void 0||t?[]:[s]}}}function fn(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(t=>t.split(",")).map(t=>t.trim()).filter(t=>t.length>0)}function Cr(e,t,s){let n=e.trim().toLowerCase();if(!Re.includes(n))throw ht({command_path:"graph",token:n||"<empty>",allowed:Re});let r=n;if(hn.has(r)&&!t?.trim())throw new b(`graph ${r} requires an item id.`,y.USAGE);if(r==="paths"&&!s?.trim())throw new b("graph paths requires a source and a target item id.",y.USAGE);return r}function st(e){throw e instanceof TypeError?new b(e.message,y.USAGE):e}function rt(e){return{truncated:e.truncated,cost:{visited_nodes:e.visitedNodes,inspected_edges:e.inspectedEdges}}}function pn(e,t){let s=t.trim().toLowerCase();for(let n of e.details)if(n.id.trim().toLowerCase()===s&&!e.missingIdSet.has(n.id.toLowerCase()))return n.id;throw new b(`Item ${t} not found`,y.NOT_FOUND)}function Rr(e,t,s){let n={ancestors:Ot,descendants:Lt,predecessors:Nt,successors:At}[e],r;try{r=n(s.assembly.graph,t,{...s.kinds===void 0?{}:{kinds:s.kinds},...s.maxDepth===void 0?{}:{maxDepth:s.maxDepth},...s.limit===void 0?{}:{limit:s.limit},...s.after===void 0?{}:{after:s.after}})}catch(o){st(o)}let i=rt(r.meta);return{subcommand:e,root:t,count:r.value.length,...i,...r.meta.nextCursor===void 0?{}:{next_cursor:r.meta.nextCursor},...s.summary?{}:{ids:r.value}}}function Dr(e,t,s){let n=Mt(s.assembly.graph,e,t,{direction:s.direction,...s.kinds===void 0?{}:{kinds:s.kinds},...s.maxDepth===void 0?{}:{maxDepth:s.maxDepth},...s.maxPaths===void 0?{}:{maxPaths:s.maxPaths}});return{subcommand:"paths",root:e,target:t,direction:s.direction,count:n.value.length,...rt(n.meta),...s.summary?{}:{paths:n.value.map(r=>({nodes:r.nodes,kinds:r.edges.map(i=>i.kind),length:r.length}))}}}function Or(e,t){let s;try{s=Et(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth},...t.unbounded?{}:{limit:t.limit??S},...t.after===void 0?{}:{after:t.after}})}catch(n){st(n)}return{subcommand:"impact",root:e,direction:t.direction,count:s.affected.length,truncated:s.truncated,...s.nextCursor===void 0?{}:{next_cursor:s.nextCursor},cost:{visited_nodes:s.cost.visitedNodes,inspected_edges:s.cost.inspectedEdges},...t.summary?{}:{affected:s.affected}}}function Lr(e){let t=e.assembly.graph,s=e.limit??S,n=le(t,{registry:t.registry()}),r=It(t);return{subcommand:"analyze",node_count:t.nodes().length,edge_count:t.edges().length,edge_basis:"deduplicated_directed",sample_limit:s,execution:{acyclic:n.acyclic,ordered_node_count:n.order.length,layer_count:n.layers.length,frontier_count:n.frontier.length,critical_path_length:n.criticalPathLength,cycle_count:n.cycles.length,...e.summary?{}:{frontier:n.frontier.slice(0,s),critical_path:n.criticalPath.slice(0,s),cycles:n.cycles.slice(0,s)}},knowledge:{component_count:r.components.length,largest_component_size:r.components[0]?.length??0,orphan_count:r.orphans.length,...e.summary?{}:{orphans:r.orphans.slice(0,s),hubs:r.hubs.slice(0,s)}}}}function Nr(e,t){let s=Ee(e.assembly,{isTerminal:t,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),n={},r={},i={},o={};for(let a of s.findings)n[a.severity]=(n[a.severity]??0)+1,r[a.code]=(r[a.code]??0)+1,i[a.severity]=(i[a.severity]??0)+a.count,o[a.code]=(o[a.code]??0)+a.count;return{subcommand:"audit",finding_count:s.findings.length,findings_by_severity:n,findings_by_code:r,affected_subjects_by_severity:i,affected_subjects_by_code:o,profile:s.profile,legacy_alias_counts:e.assembly.legacyAliasCounts,...e.summary?{}:{findings:s.findings}}}function Ar(e){let t=e.limit??S,s={};e.kinds!==void 0&&(s.kinds=e.kinds);let n=Pt(e.assembly.graph,s),r=n.value;return{subcommand:"communities",community_count:r.communities.length,largest_community_size:r.communities[0]?.size??0,iterations:r.iterations,converged:r.converged,truncated:!r.converged||r.communities.length>t,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...e.summary?{}:{communities:r.communities.slice(0,t).map(i=>({representative:i.representative,size:i.size,members:i.members.slice(0,t)}))}}}function Mr(e){let t;try{t=ve(e.assembly.graph,{...e.kinds===void 0?{}:{kinds:e.kinds},...e.maxDepth===void 0?{}:{maxDepth:e.maxDepth},...e.limit===void 0?{}:{limit:e.limit}})}catch(s){st(s)}return{subcommand:"redundancy",redundant_count:t.value.length,...rt(t.meta),...e.summary?{}:{redundant:t.value.map(s=>({source:s.edge.source,target:s.edge.target,kind:s.edge.kind,witness:s.witness}))}}}function $r(e,t){let s=t.limit??S,n=jt(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth}}),r=n.value.rows.filter(i=>i.dominatedCount>0);return{subcommand:"dominators",root:e,direction:t.direction,reachable_count:n.value.reachableCount,bottleneck_count:r.length,truncated:n.meta.truncated||r.length>s,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...t.summary?{}:{bottlenecks:r.slice(0,s).map(i=>({id:i.id,idom:i.idom,dominated_count:i.dominatedCount}))}}}function Pr(e){let t=e.limit??S,s=Ut(e.assembly.graph),n=s.rows.filter(r=>r.critical).length;return{subcommand:"slack",acyclic:s.acyclic,makespan:s.makespan,scheduled_count:s.scheduledCount,critical_count:n,critical_path_length:s.criticalPathLength,cycle_count:s.cycles.length,truncated:s.rows.length>t,...e.summary?{}:{critical_path:s.criticalPath,rows:s.rows.slice(0,t).map(r=>({id:r.id,earliest_start:r.earliestStart,latest_start:r.latestStart,slack:r.slack,critical:r.critical}))}}}function jr(e){let t=e.limit??S,s=Bt(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),n=s.value;return{subcommand:"centrality",node_count:n.nodeCount,edge_count:n.edgeCount,edge_basis:"simple_undirected",truncated:n.rows.length>t,cost:{visited_nodes:s.meta.visitedNodes,inspected_edges:s.meta.inspectedEdges},...e.summary?{}:{rows:n.rows.slice(0,t).map(r=>({id:r.id,degree:r.degree,in_degree:r.inDegree,out_degree:r.outDegree,betweenness:r.betweenness,closeness:r.closeness}))}}}function Fr(e){let t=e.limit??S,s=zt(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),{articulationPoints:n,bridges:r}=s.value;return{subcommand:"articulation",articulation_count:n.length,bridge_count:r.length,truncated:n.length>t||r.length>t,cost:{visited_nodes:s.meta.visitedNodes,inspected_edges:s.meta.inspectedEdges},...e.summary?{}:{articulation_points:n.slice(0,t),bridges:r.slice(0,t)}}}function Gr(e,t){let s=e.limit??S,n=on(e.assembly,{isTerminal:t,redundancyLimit:s,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),r={},i={};for(let o of n.steps)r[o.op]=(r[o.op]??0)+1,i[o.code]=(i[o.code]??0)+1;return{subcommand:"plan",step_count:n.steps.length,steps_by_op:r,steps_by_code:i,finding_count:n.report.findings.length,truncated:n.truncated||n.steps.length>s,cost:{visited_nodes:n.cost.visitedNodes,inspected_edges:n.cost.inspectedEdges},...e.summary?{}:{steps:n.steps.slice(0,s)}}}function gn(e,t,s,n){return JSON.stringify({subcommand:e,root:t??null,target:s??null,kinds:n.kinds??null,maxDepth:n.maxDepth??null,limit:n.limit??null,after:n.after??null,direction:n.direction,maxPaths:n.maxPaths??null,sample:n.sample??null,exemptIsolates:[...new Set(n.exemptIsolates.map(r=>r.toLowerCase()))].sort(),exemptIsolateTypes:[...new Set(n.exemptIsolateTypes.map(r=>r.toLowerCase()))].sort(),summary:n.summary,unbounded:n.unbounded})}function mn(e,t,s,n,r){return e==="analyze"?Lr(n):e==="audit"?Nr(n,r):e==="plan"?Gr(n,r):e==="communities"?Ar(n):e==="redundancy"?Mr(n):e==="dominators"?$r(t,n):e==="slack"?Pr(n):e==="centrality"?jr(n):e==="articulation"?Fr(n):e==="paths"?Dr(t,s,n):e==="impact"?Or(t,n):Rr(e,t,n)}function qr(e,t){if(e!=="index"&&(t.rebuild===!0||t.clear===!0))throw new b("--rebuild and --clear apply only to graph index.",y.USAGE);if(e!=="audit"&&t.saveBaseline===!0)throw new b("--save-baseline applies only to graph audit.",y.USAGE);if(e==="slack"&&t.kind!==void 0)throw new b("graph slack analyzes every ordering kind; --kind is not supported.",y.USAGE);if(t.rebuild===!0&&t.clear===!0)throw new b("graph index accepts either --rebuild or --clear, not both.",y.USAGE);if(e==="impact"&&t.full===!0&&t.limit!==void 0)throw new b("graph impact accepts either --full or --limit, not both.",y.USAGE)}async function Br(e,t,s,n,r,i){let o="status";if(i.clear===!0&&(await Qe(e),o="cleared"),i.rebuild===!0){await Qe(e);let c=await Xe(e,t),d={assembly:s.assembly,direction:"both",exemptIsolates:[],exemptIsolateTypes:[],saveBaseline:!1,summary:!0,unbounded:!1};for(let u of["analyze","audit"])await Ye(e,t,c,gn(u,void 0,void 0,d),mn(u,void 0,void 0,d,r));o="rebuilt"}let a=await en(e,t);return{subcommand:"index",action:o,state:a.exists?a.fresh?"fresh":"stale":"absent",entry_count:a.entry_count,item_count:n,min_items_threshold:He,persist_enabled:Ze(n,a.exists),current_fingerprint:t.slice(0,12),...a.saved_at===void 0?{}:{saved_at:a.saved_at},...a.bytes===void 0?{}:{bytes:a.bytes}}}async function zr(e,t,s,n){let r={saved_at:new Date().toISOString(),fingerprint:t,affected_subjects_by_code:s.affected_subjects_by_code,profile:s.profile},i=await nn(e);return n&&await sn(e,r),i===void 0?s:{...s,baseline:Ht(i,r)}}async function Ur(e,t,s,n,r){try{await Ye(e,t,s,n,r)}catch{}}async function So(e,t,s,n,r){let i=Cr(e,t,s);te(n.summary===!0,n.full===!0,"--summary");let o=X(process.cwd(),r.path);if(!await H(Y(o)))throw new b(`Tracker is not initialized at ${o}. Run pm init first.`,y.NOT_FOUND);let a=await ie(o),c=J(a,se()),d=await oe(o,a.item_format,c.type_to_folder,void 0,a.schema),u=Z(a.schema),l=j=>R(j,u);qr(i,n);let f=N(),p=nt(n.kind,f),h=pe().lookup(o,fe(d,l,f),()=>A(d,l,f)),g={assembly:h.assembly,...p===void 0?{}:{kinds:p},maxDepth:Te(n.maxDepth),limit:I(n.limit,"limit"),after:n.after?.trim()||void 0,direction:tt(n.direction),maxPaths:I(n.maxPaths,"max-paths"),sample:I(n.sample,"sample"),exemptIsolates:fn(n.exemptIsolate),exemptIsolateTypes:fn(n.exemptIsolateType),saveBaseline:n.saveBaseline===!0,summary:n.summary===!0,unbounded:n.full===!0};if(i==="index")return ln(await Br(o,h.fingerprint,g,d.length,l,n),!1);let m=hn.has(i)?pn(g.assembly,t):void 0,_=i==="paths"?pn(g.assembly,s):void 0,v=gn(i,m,_,g),w=await Xe(o,h.fingerprint),C=w.results[v],k=h.memoize(v,()=>C!==void 0?structuredClone(C):mn(i,m,_,g,l)),W=Ze(d.length,w.exists);!k.reused&&C===void 0&&W&&await Ur(o,h.fingerprint,w,v,k.value);let P=k.value.subcommand==="audit"?await zr(o,h.fingerprint,k.value,g.saveBaseline):k.value;return P.cache={fingerprint:h.fingerprint.slice(0,12),assembly:h.assemblyReused?"hit":"miss",result:k.reused?"hit":"miss",durable:C!==void 0?"hit":W?"miss":"off"},ln(P,g.summary,"result_rows")}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4198a3b2-2541-50eb-bec5-93ac58601f40")}catch{}})();function yn(e){return[...e].sort().join("\0")}function Kr(e,t,s){let n=e.successors.get(t);n?n.push(s):e.successors.set(t,[s]);let r=e.predecessors.get(s);r?r.push(t):e.predecessors.set(s,[t])}function bn(e,t,s,n,r){let i=t.resolve(r);if(i?.ordering!==!0)return;let o=gt(n),a=o===void 0?void 0:e.canonicalIds.get(o.toLowerCase());if(a===void 0)return;let c=(i.precedence??"source_before_target")==="source_before_target";Kr(e,c?s:a,c?a:s)}function Wr(e,t){let s={successors:new Map,predecessors:new Map,canonicalIds:new Map},n=e.filter(r=>typeof r?.id=="string"&&r.id.trim().length>0);for(let r of n){let i=r.id.trim();s.canonicalIds.set(i.toLowerCase(),i)}for(let r of n){let i=r.id.trim();bn(s,t,i,r.blocked_by,"blocked_by");for(let o of r.dependencies??[])typeof o!="object"||o===null||bn(s,t,i,o.id,typeof o.kind=="string"?o.kind:"related")}for(let r of[s.successors,s.predecessors])for(let i of r.values())i.sort();return s}function Vr(e,t){let s=new Set([t]),n=[t];for(;n.length>0;){let r=n.pop();for(let i of[e.successors,e.predecessors])for(let o of i.get(r)??[])s.has(o)||(s.add(o),n.push(o))}return s}function Hr(e,t){let s=new Map;for(let n of t){let r=(e.successors.get(n)??[]).filter(i=>t.has(i));r.length>0&&s.set(n,r)}return s}function _n(e,t,s){let n=Wr(e,t),r=n.canonicalIds.get(s.trim().toLowerCase());if(r===void 0)return{cycles:[],successors:new Map,canonical:s};let i=Hr(n,Vr(n,r));return{cycles:We(i).filter(o=>o.includes(r)),successors:i,canonical:r}}function Jr(e,t,s){let n=new Set(t),r=n.has(s)?s:t[0];if(e.get(r)?.includes(r))return[r,r];for(let i of e.get(r)??[]){if(!n.has(i))continue;let o=Xr(e,n,r,i);if(o)return o}return[...t,t[0]]}function Xr(e,t,s,n){let r=[[n]],i=new Set([s,n]);for(;r.length>0;){let o=r.shift(),a=o.at(-1);for(let c of e.get(a)??[]){if(c===s)return[s,...o,s];!t.has(c)||i.has(c)||(i.add(c),r.push([...o,c]))}}}function Oo(e,t,s){let n=N(),r=_n(e,n,s),i=_n(t,n,s),o=new Set(r.cycles.map(yn));return i.cycles.filter(a=>!o.has(yn(a))).map(a=>`ordering_cycle_created:${Jr(i.successors,a,i.canonical).join(" -> ")}:items_will_not_be_ready:run_pm_graph_audit`)}export{Me as a,bt as b,le as c,Et as d,It as e,ci as f,fe as g,$e as h,pe as i,pi as j,Ct as k,eo as l,Ot as m,Lt as n,Nt as o,At as p,Mt as q,_e as r,Pt as s,ve as t,jt as u,Bt as v,zt as w,Ut as x,We as y,xe as z,Ve as A,Ee as B,Ht as C,Yt as D,He as E,K as F,Zt as G,Xe as H,Ye as I,Qe as J,en as K,Ze as L,nn as M,sn as N,on as O,Cr as P,So as Q,Oo as R};
8
- //# sourceMappingURL=chunk-LGYK3NUF.js.map