@unbrained/pm-cli 2026.8.25 → 2026.8.27

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 (206) hide show
  1. package/.agents/skills/HARNESS_COMPATIBILITY.md +32 -0
  2. package/.agents/skills/README.md +47 -0
  3. package/.agents/skills/pm-developer/SKILL.md +117 -0
  4. package/.agents/skills/pm-developer/references/COMMAND_PLAYBOOK.md +49 -0
  5. package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +91 -0
  6. package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +72 -0
  7. package/.agents/skills/pm-developer/references/PROMPTS.md +17 -0
  8. package/.agents/skills/pm-developer/references/SCRIPTING_COMPOSITION.md +82 -0
  9. package/.agents/skills/pm-developer/references/TOKEN_BUDGETS.md +85 -0
  10. package/.agents/skills/pm-extensions/SKILL.md +106 -0
  11. package/.agents/skills/pm-extensions/references/AUTHORING.md +95 -0
  12. package/.agents/skills/pm-extensions/references/LIFECYCLE.md +40 -0
  13. package/.agents/skills/pm-extensions/references/TROUBLESHOOTING.md +25 -0
  14. package/.agents/skills/pm-sdk/SKILL.md +107 -0
  15. package/.agents/skills/pm-sdk/references/DOMAIN_MODELING.md +78 -0
  16. package/.agents/skills/pm-sdk/references/INTEGRATION_CHECKLIST.md +31 -0
  17. package/.agents/skills/pm-sdk/references/PROMPTS.md +13 -0
  18. package/.agents/skills/pm-sdk/references/SURFACE_MAP.md +82 -0
  19. package/.agents/skills/pm-user/SKILL.md +111 -0
  20. package/.agents/skills/pm-user/references/BACKLOG_SHAPING.md +105 -0
  21. package/.agents/skills/pm-user/references/PROMPTS.md +17 -0
  22. package/.agents/skills/pm-user/references/WORKFLOWS.md +35 -0
  23. package/.claude-plugin/marketplace.json +2 -2
  24. package/CHANGELOG.md +58 -3
  25. package/README.md +8 -5
  26. package/dist/cli/commander-usage.js +11 -7
  27. package/dist/cli/error-guidance.js +3 -3
  28. package/dist/cli/help-content.d.ts +2 -0
  29. package/dist/cli/help-content.js +53 -17
  30. package/dist/cli/help-json-payload.d.ts +8 -2
  31. package/dist/cli/help-json-payload.js +46 -12
  32. package/dist/cli/main.js +52 -74
  33. package/dist/cli/register-annotations.js +27 -21
  34. package/dist/cli/register-setup.js +98 -57
  35. package/dist/cli-bundle/bundle-manifest.json +156 -156
  36. package/dist/cli-bundle/chunks/chunk-3OO3W6FW.js +202 -0
  37. package/dist/cli-bundle/chunks/chunk-52EKTW6V.js +3 -0
  38. package/dist/cli-bundle/chunks/{chunk-QLUORNIB.js → chunk-CVBBGWW5.js} +62 -44
  39. package/dist/cli-bundle/chunks/chunk-MFNTKMTI.js +13 -0
  40. package/dist/cli-bundle/chunks/chunk-OS27HHBN.js +35 -0
  41. package/dist/cli-bundle/chunks/chunk-QTO7USTH.js +2 -0
  42. package/dist/cli-bundle/chunks/{chunk-5I5RWIJC.js → chunk-R4ETAOJC.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-OWHNAR2B.js → chunk-SH6P7FXI.js} +2 -2
  44. package/dist/cli-bundle/chunks/chunk-SHMDY36D.js +8 -0
  45. package/dist/cli-bundle/chunks/{chunk-244MI4GS.js → chunk-SKXLJIEK.js} +60 -60
  46. package/dist/cli-bundle/chunks/chunk-TNX6HC54.js +3 -0
  47. package/dist/cli-bundle/chunks/{register-list-query-XVN2ZLI7.js → register-list-query-EUWM6VII.js} +2 -2
  48. package/dist/cli-bundle/chunks/{register-mutation-QCKAEGIJ.js → register-mutation-FD4HSAVU.js} +4 -4
  49. package/dist/cli-bundle/chunks/{register-operations-SDEAXE7E.js → register-operations-HRMNFEC3.js} +2 -2
  50. package/dist/cli-bundle/chunks/register-setup-33GNICLX.js +2 -0
  51. package/dist/cli-bundle/focused-chunks/{chunk-IBZZZGK3.js → chunk-2AGZ5BRT.js} +2 -2
  52. package/dist/cli-bundle/focused-chunks/chunk-4BR5UU52.js +50 -0
  53. package/dist/cli-bundle/focused-chunks/{chunk-OHIHZ7HS.js → chunk-6GCRSLPG.js} +2 -2
  54. package/dist/cli-bundle/focused-chunks/{chunk-OVJL6NZE.js → chunk-AD6ULRAF.js} +4 -4
  55. package/dist/cli-bundle/focused-chunks/{chunk-7YCDTCBC.js → chunk-AQ5IYEZZ.js} +2 -2
  56. package/dist/cli-bundle/focused-chunks/{chunk-YO3ZF3FI.js → chunk-EKX37ZHA.js} +2 -2
  57. package/dist/cli-bundle/focused-chunks/{chunk-N7W67YIG.js → chunk-FC2AXLB5.js} +2 -2
  58. package/dist/cli-bundle/focused-chunks/{chunk-H5JZEIQV.js → chunk-HC7ODMH3.js} +2 -2
  59. package/dist/cli-bundle/focused-chunks/{chunk-NOOZGIXP.js → chunk-HVQ22RC4.js} +2 -2
  60. package/dist/cli-bundle/focused-chunks/{chunk-A644DUFQ.js → chunk-MEASX544.js} +2 -2
  61. package/dist/cli-bundle/focused-chunks/{chunk-RAFKLNZX.js → chunk-MXTYGECH.js} +2 -2
  62. package/dist/cli-bundle/focused-chunks/{chunk-2UIWOP3O.js → chunk-SUBSWYW3.js} +2 -2
  63. package/dist/cli-bundle/focused-chunks/{chunk-VXWATRFL.js → chunk-XDPYBQCF.js} +9 -9
  64. package/dist/cli-bundle/focused-chunks/{chunk-XUQPEKRN.js → chunk-Y3JJXRVK.js} +2 -2
  65. package/dist/cli-bundle/focused-chunks/{chunk-GQR3WH3F.js → chunk-Y5A7SJJ7.js} +2 -2
  66. package/dist/cli-bundle/focused-chunks/chunk-YHWHX6YY.js +2 -0
  67. package/dist/cli-bundle/focused-chunks/{chunk-ONYQCALA.js → chunk-YVVZ3LQ6.js} +6 -6
  68. package/dist/cli-bundle/focused-chunks/chunk-Z2USIBR2.js +5 -0
  69. package/dist/cli-bundle/main.js +15 -14
  70. package/dist/cli-bundle/sdk-authoring.js +1 -1
  71. package/dist/cli-bundle/sdk-contracts.js +2 -2
  72. package/dist/cli-bundle/sdk-core.js +31 -31
  73. package/dist/cli-bundle/sdk-governance.js +1 -1
  74. package/dist/cli-bundle/sdk-graph.js +1 -1
  75. package/dist/cli-bundle/sdk-merge.js +31 -31
  76. package/dist/cli-bundle/sdk-query.js +1 -1
  77. package/dist/cli-bundle/sdk-runtime.js +1 -1
  78. package/dist/cli-bundle/sdk-testing.js +1 -1
  79. package/dist/cli-bundle/sdk.js +32 -6
  80. package/dist/core/extensions/manifest-schema.d.ts +20 -0
  81. package/dist/core/extensions/manifest-schema.js +28 -10
  82. package/dist/core/governance/issue-codes.d.ts +11 -2
  83. package/dist/core/governance/issue-codes.js +29 -10
  84. package/dist/core/item/item-format.js +3 -3
  85. package/dist/core/store/item-store.js +12 -5
  86. package/dist/mcp/http-server.d.ts +60 -0
  87. package/dist/mcp/http-server.js +451 -0
  88. package/dist/mcp/legacy-adapter.d.ts +50 -0
  89. package/dist/mcp/legacy-adapter.js +64 -0
  90. package/dist/mcp/server.d.ts +42 -9
  91. package/dist/mcp/server.js +572 -59
  92. package/dist/mcp/tool-definitions.d.ts +2 -0
  93. package/dist/mcp/tool-definitions.js +2 -2
  94. package/dist/sdk/agent/closed-domain-contracts.d.ts +1 -1
  95. package/dist/sdk/agent/closed-domain-contracts.js +24 -2
  96. package/dist/sdk/agent/refusal-closure-census.d.ts +6 -2
  97. package/dist/sdk/agent/refusal-closure-census.js +16 -8
  98. package/dist/sdk/agent-capability-contracts.js +6 -2
  99. package/dist/sdk/cli-bootstrap.js +3 -2
  100. package/dist/sdk/cli-contracts/command-aliases.js +15 -2
  101. package/dist/sdk/cli-contracts/enum-contracts.d.ts +4 -1
  102. package/dist/sdk/cli-contracts/enum-contracts.js +7 -2
  103. package/dist/sdk/cli-contracts/flag-contracts.js +9 -5
  104. package/dist/sdk/cli-contracts/grammar-contracts.d.ts +3 -3
  105. package/dist/sdk/cli-contracts/grammar-contracts.js +24 -17
  106. package/dist/sdk/cli-contracts/runtime-contracts.js +13 -11
  107. package/dist/sdk/cli-contracts/tool-schema.js +18 -15
  108. package/dist/sdk/cli-contracts.d.ts +1 -1
  109. package/dist/sdk/cli-contracts.js +3 -3
  110. package/dist/sdk/cli-program.js +3 -2
  111. package/dist/sdk/completion.js +40 -13
  112. package/dist/sdk/compose.d.ts +4 -1
  113. package/dist/sdk/compose.js +23 -36
  114. package/dist/sdk/extension/author-manifest.d.ts +22 -0
  115. package/dist/sdk/extension/author-manifest.js +93 -0
  116. package/dist/sdk/extension.js +6 -3
  117. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +20 -5
  118. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +18 -3
  119. package/dist/sdk/governance/health.js +7 -2
  120. package/dist/sdk/governance/upgrade.d.ts +2 -0
  121. package/dist/sdk/governance/upgrade.js +30 -8
  122. package/dist/sdk/governance/validate.js +8 -6
  123. package/dist/sdk/guide-topics.js +6 -6
  124. package/dist/sdk/index.d.ts +10 -2
  125. package/dist/sdk/index.js +11 -3
  126. package/dist/sdk/mcp/apps.d.ts +70 -0
  127. package/dist/sdk/mcp/apps.js +154 -0
  128. package/dist/sdk/mcp/authorization.d.ts +134 -0
  129. package/dist/sdk/mcp/authorization.js +405 -0
  130. package/dist/sdk/mcp/interactions.d.ts +118 -0
  131. package/dist/sdk/mcp/interactions.js +337 -0
  132. package/dist/sdk/mcp/protocol.d.ts +142 -0
  133. package/dist/sdk/mcp/protocol.js +174 -0
  134. package/dist/sdk/mcp/skills.d.ts +127 -0
  135. package/dist/sdk/mcp/skills.js +390 -0
  136. package/dist/sdk/mcp/subscriptions.d.ts +65 -0
  137. package/dist/sdk/mcp/subscriptions.js +212 -0
  138. package/dist/sdk/mcp/tasks.d.ts +107 -0
  139. package/dist/sdk/mcp/tasks.js +431 -0
  140. package/dist/sdk/mcp/transport.d.ts +30 -0
  141. package/dist/sdk/mcp/transport.js +261 -0
  142. package/dist/sdk/merge/receipts.d.ts +16 -0
  143. package/dist/sdk/merge/receipts.js +9 -8
  144. package/dist/sdk/read-output-contracts.js +16 -3
  145. package/dist/sdk/runtime-action-aliases.js +7 -3
  146. package/dist/sdk/runtime-input.js +12 -4
  147. package/dist/sdk/runtime-primitives.d.ts +2 -2
  148. package/dist/sdk/runtime-primitives.js +4 -4
  149. package/dist/sdk/test/execution.d.ts +6 -0
  150. package/dist/sdk/test/execution.js +32 -3
  151. package/docs/AGENT_PROVENANCE_ADR.md +6 -4
  152. package/docs/AGENT_RUNTIME_PRIMITIVES.md +6 -5
  153. package/docs/CLAUDE_CODE_PLUGIN.md +12 -5
  154. package/docs/CLI_GRAMMAR.md +7 -1
  155. package/docs/COMMANDS.md +2 -2
  156. package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +8 -0
  157. package/docs/EXTENSIONS.md +36 -36
  158. package/docs/MCP_2026_07_28.md +160 -0
  159. package/docs/MCP_2026_07_28_CONFORMANCE.md +30 -0
  160. package/docs/MCP_REMOTE_TRANSPORT_SECURITY.md +180 -0
  161. package/docs/MCP_SKILLS_AND_APPS.md +107 -0
  162. package/docs/QUICKSTART.md +15 -15
  163. package/docs/README.md +5 -0
  164. package/docs/RELEASING.md +12 -3
  165. package/docs/SDK.md +22 -1
  166. package/docs/SDK_AGENT_SESSION_CONTEXT.md +18 -13
  167. package/docs/SDK_CONTEXT_INTEGRITY.md +6 -0
  168. package/docs/SDK_EVIDENCE_TRACEABILITY.md +9 -1
  169. package/docs/SDK_MCP_INTERACTIONS.md +227 -0
  170. package/docs/TESTING.md +4 -0
  171. package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
  172. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +13 -11
  173. package/marketplace.json +2 -2
  174. package/package.json +15 -11
  175. package/packages/pm-beads/README.md +12 -6
  176. package/packages/pm-beads/docs/MIGRATION.md +53 -0
  177. package/packages/pm-beads/extensions/beads/index.ts +8 -0
  178. package/packages/pm-beads/extensions/beads/runtime.ts +671 -112
  179. package/packages/pm-beads/package.json +1 -1
  180. package/packages/pm-calendar/package.json +1 -1
  181. package/packages/pm-command-kit/package.json +1 -1
  182. package/packages/pm-digital-twin/package.json +1 -1
  183. package/packages/pm-governance-audit/package.json +1 -1
  184. package/packages/pm-guide-shell/package.json +1 -1
  185. package/packages/pm-kanban/package.json +1 -1
  186. package/packages/pm-lifecycle-hooks/package.json +1 -1
  187. package/packages/pm-linked-test-adapters/package.json +1 -1
  188. package/packages/pm-search-advanced/package.json +1 -1
  189. package/packages/pm-templates/package.json +1 -1
  190. package/packages/pm-todos/package.json +1 -1
  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/finalize-build.mjs +1 -0
  195. package/sdk/public-surface.json +902 -54
  196. package/dist/cli-bundle/chunks/chunk-2F3LUFMW.js +0 -8
  197. package/dist/cli-bundle/chunks/chunk-65MHLHAA.js +0 -2
  198. package/dist/cli-bundle/chunks/chunk-6C7GIMIL.js +0 -13
  199. package/dist/cli-bundle/chunks/chunk-QKGMHGEI.js +0 -202
  200. package/dist/cli-bundle/chunks/chunk-T2ENPRXF.js +0 -3
  201. package/dist/cli-bundle/chunks/chunk-TPQIBSL2.js +0 -3
  202. package/dist/cli-bundle/chunks/chunk-YQMYF3YD.js +0 -35
  203. package/dist/cli-bundle/chunks/register-setup-LXVBRCJ3.js +0 -2
  204. package/dist/cli-bundle/focused-chunks/chunk-42S3GGZ7.js +0 -50
  205. package/dist/cli-bundle/focused-chunks/chunk-7I23XGWO.js +0 -2
  206. package/dist/cli-bundle/focused-chunks/chunk-LMKG3DFE.js +0 -5
@@ -1,4 +1,4 @@
1
- import{Bb as ke,Da as ee,Ia as at,Ka as fe,La as Zt,Ma as z,Na as Ae,Ra as ve,Ta as ct,Wa as er,Y as Ie,Z as v,da as xe,db as tr,ea as Qt,eb as Ce,fa as Jt,fb as C,gb as Re,kb as dt,l as ce,lb as te,o as q,oa as de,pb as lt,qa as ot,sb as ut,ta as it,tb as ft,ua as le,ub as mt,va as st,wa as ue,xb as rr,yb as B,zb as G}from"./chunk-VXWATRFL.js";import{$ as Xt,G as F,M as H,O as tt,P as rt,Q as se,R as Kt,S as Se,Sa as Te,V as w,X as ae,Y as Z,Z as b,a as Ze,q as P,s as ie,t as T,u as S,w as be}from"./chunk-OVJL6NZE.js";import{S as et,Y as u,Z as f,ba as nt}from"./chunk-LMKG3DFE.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="b9581c92-5e8a-589d-9681-d4d014e6902b")}catch{}})();function Ln(e,t="--limit"){if(e===void 0)return;let r=Number(e);if(!Number.isFinite(r)||r<0)throw new f(`${t} must be a non-negative number`,u.USAGE);return Math.floor(r)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7775a1f2-5167-5853-a2c5-a44d46f8e80e")}catch{}})();var Mn=/\b(?:gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b/,Nn=/\bnpm_[A-Za-z0-9]{36}\b/,On=/\bxox[baprs]-(?=[A-Za-z0-9-]{20,80}\b)(?=[A-Za-z0-9-]*\d)[A-Za-z0-9-]{20,80}\b/,Pn=/-----BEGIN (?:[A-Z0-9]+ )?PRIVATE KEY-----/,$n=/\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/,nr=/\b(?:token|secret|password|passwd|api[_-]?key)\s*[:=]\s*["']?([A-Za-z0-9+/=_-]{24,})/gi,Fn=[{action:"append",history_scope:"item"},{action:"claim",history_scope:"item"},{action:"close",history_scope:"item"},{action:"close-many",history_scope:"item"},{action:"close-task",history_scope:"item"},{action:"comments",history_scope:"conditional"},{action:"config",history_scope:"conditional"},{action:"copy",history_scope:"item"},{action:"create",history_scope:"item"},{action:"delete",history_scope:"item"},{action:"deps",history_scope:"conditional"},{action:"discover",history_scope:"item"},{action:"docs",history_scope:"conditional"},{action:"files",history_scope:"conditional"},{action:"focus",history_scope:"conditional"},{action:"gc",history_scope:"conditional"},{action:"history-compact",history_scope:"history"},{action:"history-author-acknowledge",history_scope:"workspace"},{action:"history-redact",history_scope:"history"},{action:"history-repair",history_scope:"history"},{action:"init",history_scope:"workspace"},{action:"install",history_scope:"conditional"},{action:"learnings",history_scope:"conditional"},{action:"notes",history_scope:"conditional"},{action:"package",history_scope:"conditional"},{action:"pause-task",history_scope:"item"},{action:"plan",history_scope:"conditional"},{action:"profile",history_scope:"conditional"},{action:"release",history_scope:"item"},{action:"restore",history_scope:"item"},{action:"schema",history_scope:"conditional"},{action:"start-task",history_scope:"item"},{action:"templates",history_scope:"conditional"},{action:"test",history_scope:"conditional"},{action:"test-all",history_scope:"conditional"},{action:"update",history_scope:"item"},{action:"update-many",history_scope:"item"},{action:"upgrade",history_scope:"conditional"}],ht=new Map(Fn.map(e=>[e.action,e]));function zn(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);let r=0;for(let n of t.values()){let o=n/e.length;r-=o*Math.log2(o)}return r}function pt(e,t="$",r=new WeakSet){return typeof e=="string"?[{path:t,value:e}]:typeof e!="object"||e===null?[]:r.has(e)?[]:(r.add(e),Array.isArray(e)?e.flatMap((n,o)=>pt(n,`${t}[${o}]`,r)):Object.entries(e).flatMap(([n,o])=>pt(o,`${t}.${n}`,r)))}function or(e){let t=[];for(let r of pt(e)){Mn.test(r.value)&&t.push({rule:"github_token",path:r.path}),Nn.test(r.value)&&t.push({rule:"npm_token",path:r.path}),On.test(r.value)&&t.push({rule:"slack_token",path:r.path}),Pn.test(r.value)&&t.push({rule:"private_key",path:r.path}),$n.test(r.value)&&t.push({rule:"aws_access_key",path:r.path}),nr.lastIndex=0;for(let n of r.value.matchAll(nr)){let o=n[1];if(zn(o)>=3.5){t.push({rule:"high_entropy_assignment",path:r.path});break}}}return t.filter((r,n,o)=>o.findIndex(i=>i.rule===r.rule&&i.path===r.path)===n)}function Un(e){let t=e.author.trim()||"unknown";if(e.settings.require_attributed_author&&t.toLowerCase()==="unknown")throw new f("Mutation author is required by workspace policy.",u.USAGE,{code:"mutation_author_required",required:"Pass --author <id>, set PM_AUTHOR, or configure author_default.",nextSteps:["Retry with --author <stable-agent-id>.","Set PM_AUTHOR for this agent session."]});if(e.settings.secret_guard==="off")return{author:t,findings:[],warnings:[],override_applied:!1};let r;try{r=or(e.payload)}catch{return{author:t,findings:[],warnings:["secret_guard_scan_failed_open"],override_applied:!1}}if(r.length===0)return{author:t,findings:r,warnings:[],override_applied:!1};let n=[...new Set(r.map(o=>o.rule))].sort().join(",");if(e.settings.secret_guard==="block"&&e.force!==!0)throw new f(`Mutation blocked by secret guard (${n}). No detected value was logged.`,u.CONFLICT,{code:"mutation_secret_guard_blocked",required:"Remove the credential-shaped content or retry with --force after explicit review.",nextSteps:["Replace the value with a secret-manager reference.","Use pm history-redact if equivalent content already entered history."],recovery:{recovery_mode:"compact",attempted_command:"pm <mutation> [REDACTED]",normalized_args:["[REDACTED]"],suggested_retry:"Remove credential-shaped content, then retry the mutation."}});return{author:t,findings:r,warnings:[`secret_guard_detected:${r.length}:rules=${n}`,...e.settings.secret_guard==="block"&&e.force===!0?["secret_guard_force_override"]:[]],override_applied:e.settings.secret_guard==="block"&&e.force===!0}}function Vn(e){return ht.has(e.trim().toLowerCase())}function jn(){return[...ht.keys()].sort((e,t)=>e.localeCompare(t))}function mc(e){return ht.get(e.trim().toLowerCase())}(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]="3ad30a32-0f83-5473-b0a3-349e271d8378")}catch{}})();function Hn(e){return e.trim().toLowerCase().replace(/\s+/g," ")}function hc(e){return Hn(e).split(/[^a-z0-9]+/).filter(t=>t.length>0)}function me(e,t){if(e.length===0&&t.length===0)return 1;if(e.length===0||t.length===0)return 0;let r=new Set(e),n=new Set(t),o=0;for(let s of r)n.has(s)&&(o+=1);let i=new Set([...r,...n]).size;return o/i}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="dff9b113-2b29-5154-afbf-f191f2f556a6")}catch{}})();var qn=/\b[a-z][a-z0-9]*-\d+(?:-[a-z0-9]+)*\b/giu;function De(e){return e.trim().toLowerCase().replace(/\s+/g," ")}function he(e){return[...new Set(De(e).match(/[\p{L}\p{N}]+/gu)??[])]}function pe(e){let t=De(e);return{normalized:t,tokens:he(t),issueCodes:[...new Set(t.match(qn)?.map(r=>r.toLowerCase())??[])]}}function Le(e,t){return Me(pe(e),pe(t))}function Me(e,t){if(e.normalized===t.normalized)return{score:1,reason:"exact_title"};let r=new Set(e.issueCodes);return t.issueCodes.some(n=>r.has(n))?{score:.99,reason:"issue_code"}:{score:me(e.tokens,t.tokens),reason:"title_token_jaccard"}}import Bn 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]="376bb9d2-e202-57e7-86c8-d70a7d3fa7ab")}catch{}})();function Ne(e){return(e??"in_progress").trim().toLowerCase().replaceAll("-","_")}function Gn(e,t){return[e.updated_at,t].map(n=>({value:n,time:Date.parse(n??"")})).filter(n=>typeof n.value=="string"&&Number.isFinite(n.time)).sort((n,o)=>o.time-n.time)[0]?.value??e.updated_at}function ir(e,t){let r=Math.max(1,Math.trunc(t.threshold_hours)),n=(t.now??new Date).getTime(),o=Ne(t.in_progress_status),i=[];for(let s of e){if(Ne(String(s.status))!==o||(s.assignee?.trim().length??0)>0)continue;let a=Gn(s,t.last_history_activity?.(s)),c=Date.parse(a);if(!Number.isFinite(c))continue;let d=Math.max(0,Math.floor((n-c)/36e5));d>=r&&i.push({id:s.id,last_activity_at:a,age_hours:d})}return i.sort((s,a)=>a.age_hours-s.age_hours||s.id.localeCompare(a.id)),{threshold_hours:r,count:i.length,items:i,remediation:"Claim active work with `pm claim <id>` or return abandoned work to open with `pm update <id> --status open`."}}async function Yn(e,t,r){let n=new Map;return await Promise.all(t.filter(o=>Ne(String(o.status))===Ne(r.in_progress_status)&&(o.assignee?.trim().length??0)===0).map(async o=>{let i;try{i=await ue(Bn.join(e,"history",`${o.id}.jsonl`),o.id)}catch{return}let s=i.map(a=>a.ts).filter(a=>Number.isFinite(Date.parse(a))).sort((a,c)=>Date.parse(c)-Date.parse(a))[0];s&&n.set(o.id,s)})),ir(t,{...r,last_history_activity:o=>n.get(o.id)})}import{mkdir as Wn,readFile as Kn}from"node:fs/promises";import sr 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]="71a8cd89-54fc-5f8a-b93b-9e4a79bb34b6")}catch{}})();function Xn(e){let t=e.trim();if(!t)throw new f("--rollback requires a non-empty checkpoint ID",u.USAGE);if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new f("--rollback checkpoint ID must match [a-zA-Z0-9._-]+",u.USAGE);return t}function Qn(e,t){let r=t.replace(/[-:.TZ]/g,"").slice(0,14),n=Math.random().toString(36).slice(2,8);return`${e}-${r}-${n}`}function ar(e,t){return sr.join(e,"checkpoints",t)}function cr(e,t,r){return sr.join(ar(e,t),`${r}.json`)}async function Jn(e,t,r,n){let o=ar(e,t);await Wn(o,{recursive:!0});let i=cr(e,t,r);return await S(i,`${JSON.stringify(n,null,2)}
1
+ import{Bb as ke,Da as te,Ia as at,Ka as fe,La as Zt,Ma as z,Na as Ae,Ra as ve,Ta as ct,Wa as er,Y as Ie,Z as v,da as xe,db as tr,ea as Qt,eb as Ce,fa as Jt,fb as C,gb as Re,kb as dt,l as ce,lb as re,o as q,oa as de,pb as lt,qa as ot,sb as ut,ta as it,tb as ft,ua as le,ub as mt,va as st,wa as ue,xb as rr,yb as B,zb as G}from"./chunk-XDPYBQCF.js";import{H as F,N as H,P as tt,Q as rt,R as se,S as Kt,T as Se,Ta as Te,W as w,Y as ae,Z as ee,_ as b,a as Ze,aa as Xt,r as P,t as Z,u as T,v as S,x as be}from"./chunk-AD6ULRAF.js";import{S as et,Y as u,Z as f,ba as nt}from"./chunk-Z2USIBR2.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="b9581c92-5e8a-589d-9681-d4d014e6902b")}catch{}})();function Ln(e,t="--limit"){if(e===void 0)return;let r=Number(e);if(!Number.isFinite(r)||r<0)throw new f(`${t} must be a non-negative number`,u.USAGE);return Math.floor(r)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7775a1f2-5167-5853-a2c5-a44d46f8e80e")}catch{}})();var Mn=/\b(?:gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b/,Nn=/\bnpm_[A-Za-z0-9]{36}\b/,On=/\bxox[baprs]-(?=[A-Za-z0-9-]{20,80}\b)(?=[A-Za-z0-9-]*\d)[A-Za-z0-9-]{20,80}\b/,Pn=/-----BEGIN (?:[A-Z0-9]+ )?PRIVATE KEY-----/,$n=/\b(?:AKIA|ASIA)[A-Z0-9]{16}\b/,nr=/\b(?:token|secret|password|passwd|api[_-]?key)\s*[:=]\s*["']?([A-Za-z0-9+/=_-]{24,})/gi,Fn=[{action:"append",history_scope:"item"},{action:"claim",history_scope:"item"},{action:"close",history_scope:"item"},{action:"close-many",history_scope:"item"},{action:"close-task",history_scope:"item"},{action:"comments",history_scope:"conditional"},{action:"config",history_scope:"conditional"},{action:"copy",history_scope:"item"},{action:"create",history_scope:"item"},{action:"delete",history_scope:"item"},{action:"deps",history_scope:"conditional"},{action:"discover",history_scope:"item"},{action:"docs",history_scope:"conditional"},{action:"files",history_scope:"conditional"},{action:"focus",history_scope:"conditional"},{action:"gc",history_scope:"conditional"},{action:"history-compact",history_scope:"history"},{action:"history-author-acknowledge",history_scope:"workspace"},{action:"history-redact",history_scope:"history"},{action:"history-repair",history_scope:"history"},{action:"init",history_scope:"workspace"},{action:"install",history_scope:"conditional"},{action:"learnings",history_scope:"conditional"},{action:"notes",history_scope:"conditional"},{action:"package",history_scope:"conditional"},{action:"pause-task",history_scope:"item"},{action:"plan",history_scope:"conditional"},{action:"profile",history_scope:"conditional"},{action:"release",history_scope:"item"},{action:"restore",history_scope:"item"},{action:"schema",history_scope:"conditional"},{action:"start-task",history_scope:"item"},{action:"templates",history_scope:"conditional"},{action:"test",history_scope:"conditional"},{action:"test-all",history_scope:"conditional"},{action:"update",history_scope:"item"},{action:"update-many",history_scope:"item"},{action:"upgrade",history_scope:"conditional"}],ht=new Map(Fn.map(e=>[e.action,e]));function zn(e){let t=new Map;for(let n of e)t.set(n,(t.get(n)??0)+1);let r=0;for(let n of t.values()){let o=n/e.length;r-=o*Math.log2(o)}return r}function pt(e,t="$",r=new WeakSet){return typeof e=="string"?[{path:t,value:e}]:typeof e!="object"||e===null?[]:r.has(e)?[]:(r.add(e),Array.isArray(e)?e.flatMap((n,o)=>pt(n,`${t}[${o}]`,r)):Object.entries(e).flatMap(([n,o])=>pt(o,`${t}.${n}`,r)))}function or(e){let t=[];for(let r of pt(e)){Mn.test(r.value)&&t.push({rule:"github_token",path:r.path}),Nn.test(r.value)&&t.push({rule:"npm_token",path:r.path}),On.test(r.value)&&t.push({rule:"slack_token",path:r.path}),Pn.test(r.value)&&t.push({rule:"private_key",path:r.path}),$n.test(r.value)&&t.push({rule:"aws_access_key",path:r.path}),nr.lastIndex=0;for(let n of r.value.matchAll(nr)){let o=n[1];if(zn(o)>=3.5){t.push({rule:"high_entropy_assignment",path:r.path});break}}}return t.filter((r,n,o)=>o.findIndex(i=>i.rule===r.rule&&i.path===r.path)===n)}function Un(e){let t=e.author.trim()||"unknown";if(e.settings.require_attributed_author&&t.toLowerCase()==="unknown")throw new f("Mutation author is required by workspace policy.",u.USAGE,{code:"mutation_author_required",required:"Pass --author <id>, set PM_AUTHOR, or configure author_default.",nextSteps:["Retry with --author <stable-agent-id>.","Set PM_AUTHOR for this agent session."]});if(e.settings.secret_guard==="off")return{author:t,findings:[],warnings:[],override_applied:!1};let r;try{r=or(e.payload)}catch{return{author:t,findings:[],warnings:["secret_guard_scan_failed_open"],override_applied:!1}}if(r.length===0)return{author:t,findings:r,warnings:[],override_applied:!1};let n=[...new Set(r.map(o=>o.rule))].sort().join(",");if(e.settings.secret_guard==="block"&&e.force!==!0)throw new f(`Mutation blocked by secret guard (${n}). No detected value was logged.`,u.CONFLICT,{code:"mutation_secret_guard_blocked",required:"Remove the credential-shaped content or retry with --force after explicit review.",nextSteps:["Replace the value with a secret-manager reference.","Use pm history-redact if equivalent content already entered history."],recovery:{recovery_mode:"compact",attempted_command:"pm <mutation> [REDACTED]",normalized_args:["[REDACTED]"],suggested_retry:"Remove credential-shaped content, then retry the mutation."}});return{author:t,findings:r,warnings:[`secret_guard_detected:${r.length}:rules=${n}`,...e.settings.secret_guard==="block"&&e.force===!0?["secret_guard_force_override"]:[]],override_applied:e.settings.secret_guard==="block"&&e.force===!0}}function Vn(e){return ht.has(e.trim().toLowerCase())}function jn(){return[...ht.keys()].sort((e,t)=>e.localeCompare(t))}function mc(e){return ht.get(e.trim().toLowerCase())}(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]="3ad30a32-0f83-5473-b0a3-349e271d8378")}catch{}})();function Hn(e){return e.trim().toLowerCase().replace(/\s+/g," ")}function hc(e){return Hn(e).split(/[^a-z0-9]+/).filter(t=>t.length>0)}function me(e,t){if(e.length===0&&t.length===0)return 1;if(e.length===0||t.length===0)return 0;let r=new Set(e),n=new Set(t),o=0;for(let s of r)n.has(s)&&(o+=1);let i=new Set([...r,...n]).size;return o/i}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="dff9b113-2b29-5154-afbf-f191f2f556a6")}catch{}})();var qn=/\b[a-z][a-z0-9]*-\d+(?:-[a-z0-9]+)*\b/giu;function De(e){return e.trim().toLowerCase().replace(/\s+/g," ")}function he(e){return[...new Set(De(e).match(/[\p{L}\p{N}]+/gu)??[])]}function pe(e){let t=De(e);return{normalized:t,tokens:he(t),issueCodes:[...new Set(t.match(qn)?.map(r=>r.toLowerCase())??[])]}}function Le(e,t){return Me(pe(e),pe(t))}function Me(e,t){if(e.normalized===t.normalized)return{score:1,reason:"exact_title"};let r=new Set(e.issueCodes);return t.issueCodes.some(n=>r.has(n))?{score:.99,reason:"issue_code"}:{score:me(e.tokens,t.tokens),reason:"title_token_jaccard"}}import Bn 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]="376bb9d2-e202-57e7-86c8-d70a7d3fa7ab")}catch{}})();function Ne(e){return(e??"in_progress").trim().toLowerCase().replaceAll("-","_")}function Gn(e,t){return[e.updated_at,t].map(n=>({value:n,time:Date.parse(n??"")})).filter(n=>typeof n.value=="string"&&Number.isFinite(n.time)).sort((n,o)=>o.time-n.time)[0]?.value??e.updated_at}function ir(e,t){let r=Math.max(1,Math.trunc(t.threshold_hours)),n=(t.now??new Date).getTime(),o=Ne(t.in_progress_status),i=[];for(let s of e){if(Ne(String(s.status))!==o||(s.assignee?.trim().length??0)>0)continue;let a=Gn(s,t.last_history_activity?.(s)),c=Date.parse(a);if(!Number.isFinite(c))continue;let d=Math.max(0,Math.floor((n-c)/36e5));d>=r&&i.push({id:s.id,last_activity_at:a,age_hours:d})}return i.sort((s,a)=>a.age_hours-s.age_hours||s.id.localeCompare(a.id)),{threshold_hours:r,count:i.length,items:i,remediation:"Claim active work with `pm claim <id>` or return abandoned work to open with `pm update <id> --status open`."}}async function Yn(e,t,r){let n=new Map;return await Promise.all(t.filter(o=>Ne(String(o.status))===Ne(r.in_progress_status)&&(o.assignee?.trim().length??0)===0).map(async o=>{let i;try{i=await ue(Bn.join(e,"history",`${o.id}.jsonl`),o.id)}catch{return}let s=i.map(a=>a.ts).filter(a=>Number.isFinite(Date.parse(a))).sort((a,c)=>Date.parse(c)-Date.parse(a))[0];s&&n.set(o.id,s)})),ir(t,{...r,last_history_activity:o=>n.get(o.id)})}import{mkdir as Wn,readFile as Kn}from"node:fs/promises";import sr 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]="71a8cd89-54fc-5f8a-b93b-9e4a79bb34b6")}catch{}})();function Xn(e){let t=e.trim();if(!t)throw new f("--rollback requires a non-empty checkpoint ID",u.USAGE);if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new f("--rollback checkpoint ID must match [a-zA-Z0-9._-]+",u.USAGE);return t}function Qn(e,t){let r=t.replace(/[-:.TZ]/g,"").slice(0,14),n=Math.random().toString(36).slice(2,8);return`${e}-${r}-${n}`}function ar(e,t){return sr.join(e,"checkpoints",t)}function cr(e,t,r){return sr.join(ar(e,t),`${r}.json`)}async function Jn(e,t,r,n){let o=ar(e,t);await Wn(o,{recursive:!0});let i=cr(e,t,r);return await S(i,`${JSON.stringify(n,null,2)}
2
2
  `),i}function Zn(e,t){if(!Array.isArray(e.items))throw new f(`Checkpoint ${t} is missing items`,u.GENERIC_FAILURE);return e.items.map(r=>{if(!r||typeof r!="object")throw new f(`Checkpoint ${t} contains an invalid item entry`,u.GENERIC_FAILURE);let n=r;if(typeof n.id!="string"||n.id.trim().length===0)throw new f(`Checkpoint ${t} contains an item entry without ID`,u.GENERIC_FAILURE);if(typeof n.target_updated_at!="string"||n.target_updated_at.trim().length===0)throw new f(`Checkpoint ${t} contains an item entry without target_updated_at`,u.GENERIC_FAILURE);return{id:n.id.trim(),target_updated_at:n.target_updated_at.trim()}})}async function eo(e,t,r,n){let o=Xn(r),i=cr(e,t,o);if(!await P(i))throw new f(`Checkpoint ${o} not found`,u.NOT_FOUND);let s=await Kn(i,"utf8"),a;try{a=JSON.parse(s)}catch(l){throw new f(`Checkpoint ${o} contains invalid JSON: ${b(l)}`,u.GENERIC_FAILURE)}if(!a||typeof a!="object")throw new f(`Checkpoint ${o} is invalid`,u.GENERIC_FAILURE);let c=a;if(c.schema_version!==n)throw new f(`Checkpoint ${o} has unsupported schema version`,u.GENERIC_FAILURE);let d=Zn(c,o);return{record:c,items:d,path:i,id:typeof c.id=="string"?c.id:o,created_at:typeof c.created_at=="string"?c.created_at:v(),author:typeof c.author=="string"?c.author:"unknown"}}async function to(e,t){let r=[],n=[];for(let o of e)try{let i=await t(o.id,o.target_updated_at);r.push({id:o.id,status:"restored",changed_fields:i.changed_fields,warnings:i.warnings}),n.push(o.id)}catch(i){r.push({id:o.id,status:"failed",error:b(i)})}return{rows:r,restored_ids:n,failed_count:r.filter(o=>o.status==="failed").length}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ab276268-7a98-5f97-b3f5-300dfd1b5ed5")}catch{}})();function U(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase();return t.length>0?t:null}function Dc(e,t){let r=U(t);return!e||!r?null:[...e.assurance_providers??[]].reverse().find(n=>U(n.definition.id)===r)??null}function ro(e,t){let r=U(t);return!e||!r?null:[...e.search_providers].reverse().find(o=>(U(o.runtime_definition?.name)??U(o.definition?.name))===r)??null}function no(e,t){let r=U(t);return!e||!r?null:[...e.vector_store_adapters].reverse().find(o=>(U(o.runtime_definition?.name)??U(o.definition?.name))===r)??null}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2252cfb9-37ea-57f1-b7ea-2b0c0f87ecb2")}catch{}})();var $="-",dr=new Set(["actual_result","body","cmd","command","customer_impact","description","environment","expected_result","impact","location","message","note","outcome","repro_steps","resolution","text","title","unblock_note","value","why_now"]);function lr(e){let t=e.trim();if(t==="")return[];let n=(co(t)??t.split(",")).map(o=>o.trim()).filter(Boolean).map(o=>o.toLowerCase());return Array.from(new Set(n)).sort((o,i)=>o.localeCompare(i))}function ur(e){if(!Array.isArray(e)||e.length===0)return[];let t=[];for(let r of e)if(typeof r=="string")for(let n of lr(r))t.push(n);return Array.from(new Set(t)).sort((r,n)=>r.localeCompare(n))}function fr(e){return Array.isArray(e)?e.filter(t=>typeof t=="string").map(t=>t.trim().toLowerCase()).filter(Boolean):[]}function oo(e){return typeof e!="string"?[]:e.split(";").map(t=>t.trim()).filter(Boolean)}function io(e,t,r){let n=e.map(s=>s.trim()).filter(Boolean);for(let s of t??[]){let a=s.trim();if(a.includes(";"))throw new f('Acceptance criteria added with --add-ac cannot contain ";" because semicolons delimit stored criteria',u.USAGE,{code:"acceptance_criteria_semicolon_forbidden",required:"Pass one semicolon-free criterion per --add-ac value",why:"A semicolon inside one criterion would be re-read as multiple criteria",nextSteps:["Split the text into repeated --add-ac values, or replace the semicolon with punctuation that is not the storage delimiter"]});a.length>0&&!n.includes(a)&&n.push(a)}let o=[],i=n;for(let s of r??[]){let a=s.trim();if(a.length!==0){if(!i.includes(a)){o.push(a);continue}i=i.filter(c=>c!==a)}}return{criteria:i,unmatchedRemovals:o}}function so(e,t){let r=fr(e);if(!t||t.length===0)return Array.from(new Set(r)).sort((o,i)=>o.localeCompare(i));let n=new Set(r);for(let o of ur(t))n.add(o);return Array.from(n).sort((o,i)=>o.localeCompare(i))}function ao(e,t){let r=Array.from(new Set(fr(e))).sort((o,i)=>o.localeCompare(i));if(!t||t.length===0)return r;let n=new Set(ur(t));return n.size===0?r:r.filter(o=>!n.has(o))}function co(e){if(!e.startsWith("["))return null;let t;try{t=JSON.parse(e)}catch{return null}return t.map(n=>typeof n=="string"||typeof n=="number"||typeof n=="boolean"?String(n):"").filter(n=>n.length>0)}function _t(e){return e.replace(/\r\n/g,`
3
3
  `)}function mr(e){let t=_t(e).trim();if(!t.startsWith("```"))return e;let r=t.split(`
4
4
  `);return r.length<2||r.at(-1)?.trim()!=="```"?e:r.slice(1,-1).join(`
@@ -6,14 +6,14 @@ import{Bb as ke,Da as ee,Ia as at,Ka as fe,La as Zt,Ma as z,Na as Ae,Ra as ve,Ta
6
6
  `)&&!t.startsWith("-")&&!t.startsWith("*")&&!t.startsWith("+"))return null;let r={},n,o=_t(t).split(`
7
7
  `).map(i=>i.trim()).filter(i=>i.length>0);for(let i of o){let s=i.match(/^(?:[-*+]\s+)?([a-zA-Z0-9_.-]+)\s*(=|:)\s*(.*)$/);if(s){let a=s[1].trim();r[a]=pr(s[3].trim()),n=a;continue}if(n&&dr.has(n.toLowerCase())){r[n]=`${r[n]}
8
8
  ${i}`;continue}return null}return r}function ho(e,t){let r=mr(e).trim();if(!r)throw new f(`${t} cannot be empty`,u.USAGE);let n=po(r);if(n)return n;let o={},i,s=lo(r);for(let a of s){let c=uo(a);if(c>0){let d=a.slice(0,c).trim(),l=pr(a.slice(c+1).trim());o[d]=l,i=d;continue}if(i&&dr.has(i.toLowerCase())){o[i]=`${o[i]},${a.trim()}`;continue}throw new f(mo(e,t),u.USAGE)}return o}var _o=/^[A-Za-z]:[\\/]/,yo=/^(?:[-*+]\s+)?[A-Za-z_][A-Za-z0-9_.-]*\s*=/;function go(e){let t=e.trim();return _o.test(t)?!1:yo.test(t)}function wo(e,t,r){let n=new Set(r.map(i=>i.toLowerCase())),o=Object.keys(e).filter(i=>!n.has(i.toLowerCase()));if(o.length>0)throw new f(`${t} does not recognize key${o.length>1?"s":""} ${o.map(i=>`"${i}"`).join(", ")}. Allowed keys: ${r.join(", ")}.`,u.USAGE);for(let i of Object.keys(e)){let s=i.toLowerCase();if(s!==i){if(Object.hasOwn(e,s))throw new f(`${t} provides key "${i}" more than once after case normalization.`,u.USAGE);e[s]=e[i],delete e[i]}}}async function Eo(e){if(process.stdin.isTTY===!0)throw new f(`${e} value "${$}" requires piped stdin input. Pipe content into the command, or end manual stdin with Ctrl+D (Unix/macOS) or Ctrl+Z then Enter (Windows).`,u.USAGE);return process.stdin.setEncoding("utf8"),await new Promise((t,r)=>{let n="";process.stdin.on("data",o=>{n+=o}),process.stdin.on("end",()=>{t(_t(n))}),process.stdin.on("error",o=>{r(o)})})}var Y=Symbol("all-mutation-stdin-fields"),R=new WeakMap;function hr(e){return R.set(e,Y),e}function bo(e,t){let r=R.get(e);return r===Y||R.set(e,new Set([...r??[],...t])),e}function So(e,t){let r=R.get(e);return r===void 0||R.set(t,r===Y?r:new Set(r)),t}function Oc(e,t){let r=R.get(e),n=R.get(t);return r===void 0||n===Y?t:r===Y?(R.set(t,r),t):(R.set(t,new Set([...n??[],...r])),t)}function To(e){return R.get(e)!==Y}function Oe(e,t){let r=R.get(e);return r!==Y&&!r?.has(t)}function Io(e){let t;for(let r of e){if(r.resolveToken===!1||r.value===void 0)continue;let o=(Array.isArray(r.value)?r.value:[r.value]).filter(i=>i.trim()===$).length;if(o>1)throw new f(`${r.optionName} accepts "${$}" stdin token at most once per command invocation`,u.USAGE);if(o!==0){if(t!==void 0&&t!==r.optionName)throw new f(`Only one option may use "${$}" stdin token per command invocation. Already used by ${t}.`,u.USAGE);t=r.optionName}}}async function Pc(e,t,r){let n=e,o=[...t,...r];Io(o.map(([a,c])=>({value:n[a],optionName:c,resolveToken:Oe(e,a)})));let i=Pe(),s={...n};for(let[a,c]of t)s[a]=await i.resolveValue(n[a],c,Oe(e,a));for(let[a,c]of r)s[a]=await i.resolveList(n[a],c,Oe(e,a));return hr(s)}function Pe(){let e,t,r=async i=>{if(t&&t!==i)throw new f(`Only one option may use "${$}" stdin token per command invocation. Already used by ${t}.`,u.USAGE);return t=i,e||(e=Eo(i)),await e};return{resolveValue:async(i,s,a=!0)=>{if(!a)return i;if(i!==void 0)return i.trim()!==$?i:await r(s)},resolveList:async(i,s,a=!0)=>{if(!a)return i;if(!i)return;let c=i.map((m,h)=>m.trim()===$?h:-1).filter(m=>m>=0);if(c.length===0)return i;if(c.length>1)throw new f(`${s} accepts "${$}" stdin token at most once per command invocation`,u.USAGE);let d=await r(s),l=[...i];return l[c[0]]=d,l}}}function xo(e,t){let r=Number(e);if(!Number.isFinite(r))throw new f(`Invalid ${t} value "${e}"`,u.USAGE);return r}function Ao(e,t){let r=e.trim(),n=Number(r);if(r===""||!Number.isInteger(n)||n<0)throw new f(`Invalid ${t} value "${e}". Expected a non-negative integer.`,u.USAGE);return n}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="411f4336-eb02-5167-9dce-ea99822a8a14")}catch{}})();function yt(e){return[...new Set(e.split(/[,\r\n]+/).map(t=>t.trim()).filter(t=>t.length>0))]}function vo(e){let t=[];for(let n of e)if(typeof n=="string")t.push(n);else if(typeof n=="number"&&Number.isFinite(n))t.push(String(n));else return"";let r=yt(t.join(`
9
- `));return r.length>0?r.join(","):""}function Co(e){if(e===void 0)return;if(typeof e=="number")return Number.isFinite(e)?String(e):"";if(Array.isArray(e))return vo(e);if(typeof e!="string")return"";let t=yt(e);return t.length>0?t.join(","):""}(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]="19ff592c-0746-54e8-a304-2006f4845da2")}catch{}})();function _r(e){return e.replaceAll("~1","/").replaceAll("~0","~")}function gt(e){if(e==="/body"||e.startsWith("/body/"))return"body";if(e==="/metadata"||e.startsWith("/metadata/")||e==="/front_matter"||e.startsWith("/front_matter/")){let r=e.replace(/^\/(?:metadata|front_matter)\/?/,"").split("/")[0];return r?_r(r):"metadata"}let t=e.replace(/^\//,"").split("/")[0];return t?_r(t):"root"}function $e(e,t){return t==="body"?e.body:t==="metadata"?e.metadata:t==="root"?e:e.metadata[t]}function Ro(e,t){let r=t?.windowStartIndex??0,n=t?.field;if(e.length===0||r>=e.length)return[];let o=Zt(),i=[];for(let s=0;s<e.length;s+=1){let a=e[s],c=o,d=ve(o,a.patch),l;d.ok?(l=d.document,o=l):l=c;let m=new Set;for(let p of a.patch)m.add(gt(p.path)),p.from!==void 0&&m.add(gt(p.from));let h=[...m].sort((p,_)=>p.localeCompare(_));if(s>=r)if(n!==void 0){if(!m.has(n))continue;let p={field:n,before:$e(c,n),after:$e(l,n)};i.push({index:s+1,ts:a.ts,op:a.op,author:a.author,patch_ops:a.patch.length,changed_fields:[n],changes:[p]})}else{let p=h.map(_=>({field:_,before:$e(c,_),after:$e(l,_)}));i.push({index:s+1,ts:a.ts,op:a.op,author:a.author,patch_ops:a.patch.length,changed_fields:h,changes:p})}}return i}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a97ee152-4d20-54f1-add9-fdb991ab6b33")}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]="4a376062-2e23-5991-80a5-27183909caf3")}catch{}})();var ko=new Set(["none","null","undefined"]);function Qc(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="warn"||t==="strict_error")return t;if(t==="strict")return"strict_error";throw new f("Config set parent-reference-policy requires --policy with one of: warn, strict_error (alias: strict)",u.USAGE)}function Do(e){if(typeof e!="string")throw new f("--parent must be a string. Use --unset parent to clear this field.",u.USAGE);let t=e.trim();if(t.length===0)throw new f("--parent must not be empty. Use --parent none to unset.",u.USAGE);if(yr(t))throw new f(`--parent must not use placeholder token "${t}". Use --unset parent to clear this field.`,u.USAGE);return t}function yr(e){return ko.has(e.trim().toLowerCase())}function Lo(e,t){if(t==="strict_error")throw new f(`Parent item "${e}" was not found. Create it first or use --parent none.`,u.USAGE);return{warnings:[`validation_warning:parent_reference_missing:${e}`]}}function Mo(e,t,r){let n=te(e,r),o=te(t,r);if(n!==o)return;let i=t!==o||e!==n?` (normalized from parent "${t}" and item "${e}")`:"";throw new f(`Parent item "${o}" cannot be the same as item "${n}"${i}. Use --unset parent to clear this field.`,u.USAGE)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="806bf35f-dc7e-55a8-9bb9-64be87111c22")}catch{}})();var wt={critical:0,high:1,medium:2,low:3,minimal:4},No=Object.keys(wt),Oo=`numbers 0..4 (0=critical, 1=high, 2=medium, 3=low, 4=minimal) or names (${No.join(", ")}), case-insensitive`;function Fe(e){return new f(`Invalid priority "${e}". Accepted values: ${Oo}.`,u.USAGE)}function Po(e){if(typeof e=="number"){if(Number.isInteger(e)&&e>=0&&e<=4)return e;throw Fe(String(e))}if(typeof e!="string")throw Fe(String(e));let t=e.trim();if(t.length===0)throw Fe(e);let r=t.toLowerCase();if(Object.prototype.hasOwnProperty.call(wt,r))return wt[r];if(/^[0-4]$/.test(t))return Number(t);throw Fe(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]="bf76a01e-7292-59df-94ca-1e41aaff7365")}catch{}})();var $o=/^[A-Za-z0-9][A-Za-z0-9._/-]*$/,Fo=64;function od(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="warn"||t==="strict_error")return t;if(t==="strict")return"strict_error";throw new f("Config set sprint-release-format-policy requires --policy with one of: warn, strict_error (alias: strict)",u.USAGE)}function zo(e,t,r){let n=t.trim();if(n.length===0)throw new f(`--${e} must not be empty. Use --${e} none to unset.`,u.USAGE);if(n.length<=Fo&&$o.test(n))return{value:n,warnings:[]};let i="Expected 1-64 characters matching [A-Za-z0-9][A-Za-z0-9._/-]* (no spaces).";if(r==="strict_error")throw new f(`Invalid --${e} value "${n}". ${i}`,u.USAGE);return{value:n,warnings:[`validation_warning:${e}_format:${n}`]}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d0e997bc-8bdb-5602-8606-73ecf77b2a35")}catch{}})();var gr={open:"open_status",closed:"close_status",canceled:"canceled_status",cancelled:"canceled_status"},wr="all";function ld(e){if(typeof e!="string")return!1;let t=e.split(",").map(r=>r.trim().toLowerCase()).filter(r=>r.length>0);return t.length===1&&t[0]===wr}function Uo(e,t){let r=e.trim().toLowerCase();if(r.length===0)return;let n=gr[r];return n?t[n]:de(e,t)}function Vo(e){let t=new Set(Object.keys(gr));for(let r of e.definitions){t.add(r.id);for(let n of r.aliases)t.add(n)}return[...t]}function jo(e,t){let r=e.trim().toLowerCase(),n,o=Number.POSITIVE_INFINITY;for(let i of Vo(t)){let s=Ze(r,i.toLowerCase(),2);s!==null&&s<o&&(n=i,o=s)}return n}function Ho(e,t,r){if(typeof e!="string")return;let n=r?.strict===!0,o=r?.flagLabel??"--status",i=e.split(",").map(c=>c.trim()).filter(c=>c.length>0);if(i.length===0)return;if(i.filter(c=>c.trim().toLowerCase()===wr).length>0){if(i.length===1)return;throw new f(`Invalid ${o} value "all". Use it by itself, or omit ${o} to search every status.`,u.USAGE)}let a=[];for(let c of i){let d=Uo(c,t);if(d===void 0){if(n){let l=jo(c,t);throw new f(`Invalid ${o} value "${c}". Use open|closed|canceled or a configured status id${l?`. Did you mean "${l}"?`:"."}`,u.USAGE)}a.push(c);continue}a.push(d)}return[...new Set(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]="b7a167e0-3041-5056-a672-ea0a054ed8df")}catch{}})();var qo={bug:"Issue",bugfix:"Issue",defect:"Issue",incident:"Issue",enhancement:"Feature",story:"Feature",userstory:"Feature","user-story":"Feature","user story":"Feature",change:"Chore",ticket:"Task",todo:"Task"};function Bo(e){if(e!==void 0)return qo[e.trim().toLowerCase()]}(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]="6d11dc0f-e313-5b39-965d-6bc84ad52966")}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]="43a56374-808c-5fa6-bd6c-5d93175df0d2")}catch{}})();function Er(e,t){return nt(e,t)}function Go(e,t,r){let n={};for(let o of t.command_to_fields.get(r)??[]){let i=Qt(e,o);i!==void 0&&(n[o.metadata_key]=Jt(o,i))}return n}function Yo(e,t){for(let[r,n]of Object.entries(t)){let o=e[r];if(Array.isArray(n)){if(Array.isArray(o)){let i=o.map(a=>String(a));if(!n.map(a=>String(a)).every(a=>i.includes(a)))return!1;continue}if(!Er(o,n[n.length-1]))return!1;continue}if(!Er(o,n))return!1}return!0}import{spawnSync as Sr}from"node:child_process";(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]="12bfc6e7-8979-58e8-8276-98cc859f3e32")}catch{}})();var Wo="PM_DISABLE_OLLAMA_AUTO_DEFAULTS",Ko="PM_OLLAMA_MODEL",Xo="http://localhost:11434",Qo="qwen3-embedding:0.6b",Jo=".agents/pm/search/lancedb/",Zo=1500,ei=2500,ti=/qwen.*(?:embed|embedding)|(?:embed|embedding).*qwen/i,ri=/embed|embedding/i,D=w;function ni(){let e=D(process.env[Wo]);if(!e)return!1;let t=e.toLowerCase();return t==="1"||t==="true"||t==="yes"}function br(e){return e.some(t=>D(t)!==null)}function oi(e){let t=D(e);return!!(t&&t.toLowerCase()!=="ollama")}function ii(e){let t=D(e);return!!(t&&t.toLowerCase()!=="lancedb")}function si(e){return oi(e.search?.provider)||ii(e.vector_store?.adapter)||br([e.providers?.openai?.base_url,e.providers?.openai?.model,e.providers?.openai?.api_key])?!0:br([e.vector_store?.qdrant?.url,e.vector_store?.qdrant?.api_key])}function ai(){let e=Sr("ollama",["--version"],{encoding:"utf8",timeout:Zo});return e.error?!1:e.status===0}function ci(e){let t=e.split(/\r?\n/).map(i=>i.trim()).filter(i=>i.length>0);if(t.length===0)return null;let r=t.map(i=>i.split(/\s+/)[0]?.trim()).filter(i=>!!(i&&i.length>0)).filter(i=>i.toUpperCase()!=="NAME");if(r.length===0)return null;let n=r.find(i=>ti.test(i));return n||(r.find(i=>ri.test(i))??null)}function di(e){let t=D(e.providers?.ollama?.model);if(t)return t;let r=D(process.env[Ko]);if(r)return r;let n=Sr("ollama",["list"],{encoding:"utf8",timeout:ei});if(!n.error&&n.status===0){let o=ci(typeof n.stdout=="string"?n.stdout:"");if(o)return o}return null}function li(e){return{baseUrl:D(e.providers?.ollama?.base_url)===null,model:D(e.providers?.ollama?.model)===null,lancedbPath:D(e.vector_store?.lancedb?.path)===null,embeddingModel:D(e.search?.embedding_model)===null}}function ui(e){return e.baseUrl||e.model||e.lancedbPath||e.embeddingModel}function fi(e,t,r){if(!t.baseUrl&&!t.model)return;let n=e.providers??={},o=n.ollama??={};t.baseUrl&&(o.base_url=Xo),t.model&&(o.model=r)}function mi(e,t){if(!t.lancedbPath)return;let r=e.vector_store??={},n=r.lancedb??={};n.path=Jo}function pi(e,t,r){if(!t.embeddingModel)return;let n=e.search??={};n.embedding_model=r}function ze(e){let t={settings:e,auto_ollama_defaults_applied:!1};if(ni()||si(e))return t;let r=li(e);if(!ui(r)||r.model&&!ai())return t;let n=structuredClone(e),o=di(n);return o?(fi(n,r,o),mi(n,r),pi(n,r,o),{settings:n,auto_ollama_defaults_applied:!0}):{...t,auto_ollama_defaults_skipped_reason:"no_installed_embedding_model",auto_ollama_defaults_remediation:`Run ollama pull ${Qo} or configure providers.ollama.model explicitly (and search.embedding_model if you need an override).`}}(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]="d8d5f7e9-5293-564b-bc44-f5ba30336893")}catch{}})();var hi="reindex";import $r 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]="b5ce7132-0024-5d42-9cb8-585933beb7c7")}catch{}})();var _i=3e4;function W(e,t,r=_i){let n=e??r;if(!Number.isFinite(n)||n<=0)throw new Error(`${t} timeout must be a positive finite number`);return Math.floor(n)}function K(e,t){if(e)return e;if(typeof globalThis.fetch=="function")return globalThis.fetch.bind(globalThis);throw new Error(`${t} execution requires a fetch implementation`)}async function yi(e){try{return(await e.text()).replaceAll(/\s+/g," ").trim()}catch(t){return`(failed to read response body: ${b(t)})`}}async function Ue(e){let t=new AbortController,r=setTimeout(()=>{t.abort()},e.timeoutMs);try{let n;try{n=await e.fetcher(e.endpoint,{method:e.method,headers:e.headers,body:JSON.stringify(e.body),signal:t.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?new Error(`${e.requestLabel} timed out after ${e.timeoutMs}ms`):new Error(`${e.requestLabel} execution failed: ${b(o)}`)}if(!n.ok){let o=await yi(n),i=o.length>0?`: ${o}`:"";throw new Error(`${e.requestLabel} failed with status ${n.status} ${n.statusText}${i}`)}try{return await n.json()}catch(o){throw new Error(`${e.responseLabel} JSON parse failed: ${b(o)}`)}}finally{clearTimeout(r)}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="af754be6-8026-530a-8a20-b03d4ed742e1")}catch{}})();function Ld(e,t){let r=w(e);if(!r)return"unconfigured";let n=w(t);return n&&n.toLowerCase()===r.toLowerCase()?"configured":"auto-detected"}function gi(e){let t=ae(e),r=t.toLowerCase();return r.endsWith("/embeddings")?t:r.endsWith("/v1")?`${t}/embeddings`:`${t}/v1/embeddings`}function xr(e){let t=e.search?.embedding_model;return w(t)||null}function wi(e){let t=w(e.providers?.openai?.base_url),r=w(e.providers?.openai?.model);if(!t||!r)return null;let n=xr(e),o=w(e.providers?.openai?.api_key);return{name:"openai",base_url:t,model:n??r,...o?{api_key:o}:{}}}function Ei(e){let t=w(e.providers?.ollama?.base_url),r=w(e.providers?.ollama?.model);if(!t||!r)return null;let n=xr(e);return{name:"ollama",base_url:t,model:n??r}}function Ar(e){let t=(Array.isArray(e)?e:[e]).map(r=>r.trim()).filter(r=>r.length>0);if(t.length===0)throw new Error("Embedding input must include at least one non-empty string");return t}function bi(e){let t=[],r=[],n=new Map;for(let o of e){let i=n.get(o);if(i===void 0){let s=t.length;t.push(o),n.set(o,s),r.push(s);continue}r.push(i)}return{uniqueInputs:t,originalToUniqueIndex:r}}function Si(e){let t=e.map((n,o)=>({embedding:n.embedding,index:n.index,position:o}));if(t.some(n=>n.index!==void 0)){for(let n of t)if(!Number.isInteger(n.index))throw new TypeError(`OpenAI embedding response entry at position ${n.position} is missing a valid integer index`);return[...t].sort((n,o)=>{let i=n.index-o.index;return i!==0?i:n.position-o.position})}return t}function Et(e){let t=wi(e),r=Ei(e),n=[t,r].filter(a=>a!==null),o=w(e.search?.provider),i=o?o.toLowerCase():null;return{active:(i?n.find(a=>a.name===i):void 0)??n[0]??null,available:n}}function Ir(e){let t=ae(e.base_url);return e.name==="openai"?{provider:"openai",endpoint:gi(t),model:e.model}:{provider:"ollama",endpoint:`${t}/api/embed`,model:e.model}}function Ti(e,t){let r=Ar(t);return e.name==="openai"?{target:Ir(e),method:"POST",headers:{"content-type":"application/json",...e.api_key?{authorization:`Bearer ${e.api_key}`}:{}},body:{model:e.model,input:r.length===1?r[0]:r}}:{target:Ir(e),method:"POST",headers:{"content-type":"application/json"},body:{model:e.model,input:r}}}function Ii(e,t){if(e.name==="openai"){let o=t.data;if(!Array.isArray(o)||o.length===0)throw new Error("OpenAI embedding response must include a non-empty data array");return Si(o).map((s,a)=>{let c=s.embedding;if(!Z(c))throw new Error(`OpenAI embedding response entry at index ${a} is missing a numeric embedding vector`);return[...c]})}let r=t.embedding;if(Z(r))return[[...r]];let n=t.embeddings;if(Array.isArray(n)&&n.length>0)return n.map((o,i)=>{if(!Z(o))throw new Error(`Ollama embedding response entry at index ${i} is missing a numeric embedding vector`);return[...o]});throw new Error("Ollama embedding response must include embedding or embeddings vectors")}async function vr(e,t,r={}){let n=W(r.timeout_ms,"Embedding request"),o=K(r.fetcher,"Embedding request"),i=Ar(t),s=bi(i),a=Ti(e,s.uniqueInputs),c=await Ue({endpoint:a.target.endpoint,method:a.method,headers:a.headers,body:a.body,timeoutMs:n,fetcher:o,requestLabel:"Embedding request",responseLabel:"Embedding response"}),d=Ii(e,c);if(d.length!==s.uniqueInputs.length)throw new Error(`Embedding response cardinality mismatch: expected ${s.uniqueInputs.length} vector(s), received ${d.length}`);return s.originalToUniqueIndex.map(l=>[...d[l]])}(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]="61c0153b-8fa5-5c26-aa88-ca9807f2d160")}catch{}})();var Ve=["title","description","tags","status","type","priority","assignee","parent","goal","value","why_now","risk","confidence","estimated_minutes","acceptance_criteria","resolution","expected_result","actual_result","body","comments","notes","learnings","reminders","events","dependencies","plan"];function bt(e){let t=e?.search?.corpus_fields;if(!Array.isArray(t))return[...Ve];let r=new Set(Ve),n=Array.from(new Set(t.filter(o=>typeof o=="string").map(o=>o.trim()).filter(o=>o.length>0&&r.has(o))));return n.length>0?n:[...Ve]}var xi=8e3,St=3200,X="...[semantic corpus truncated]",Ai="search_embedding_corpus_max_characters_invalid:using_provider_default";function M(e){return e.map(t=>t==null?"":String(t).trim()).filter(t=>t.length>0).join(" ")}function vi(e){return(e.reminders??[]).map(t=>M([t.at,t.text]))}function Ci(e){return(e.events??[]).map(t=>M([t.start_at,t.end_at,t.title,t.description,t.location,t.all_day===!0?"all day":void 0,t.timezone,t.recurrence?.freq,t.recurrence?.interval,t.recurrence?.count,t.recurrence?.until,t.recurrence?.by_weekday?.join(" "),t.recurrence?.by_month_day?.join(" "),t.recurrence?.exdates?.join(" ")]))}function Ri(e,t){e.push(t.title,t.body,t.status,t.owner,t.evidence,t.blocked_reason,t.superseded_by);for(let r of t.linked_items??[])e.push(`${r.kind} ${r.id}`,r.note);for(let r of t.files??[])e.push(r.path,r.note);for(let r of t.tests??[])e.push(r.command,r.path,r.note);for(let r of t.docs??[])e.push(r.path,r.note)}function ki(e,t){for(let r of t.plan_decisions??[])e.push(r.decision,r.rationale,r.evidence);for(let r of t.plan_discoveries??[])e.push(r.text);for(let r of t.plan_validation??[])e.push(r.text,r.command,r.expected)}function Od(e){let t=[];t.push(e.plan_mode,e.plan_scope,e.plan_harness,e.plan_resume_context);for(let r of e.plan_steps??[])Ri(t,r);return ki(t,e),t.filter(r=>typeof r=="string"&&r.length>0).join(" ")}function Di(e){let t=(e.plan_steps??[]).map(s=>M([s.order,s.id,s.title,s.body,s.status,s.owner,s.evidence,s.blocked_reason,s.superseded_by,(s.linked_items??[]).map(a=>M([a.kind,a.id,a.note])).join(" "),(s.files??[]).map(a=>M([a.path,a.note])).join(" "),(s.tests??[]).map(a=>M([a.command,a.path,a.note])).join(" "),(s.docs??[]).map(a=>M([a.path,a.note])).join(" ")])),r=(e.plan_decisions??[]).map(s=>M([s.decision,s.rationale,s.evidence,s.step_id])),n=(e.plan_discoveries??[]).map(s=>M([s.text,s.step_id])),o=(e.plan_validation??[]).map(s=>M([s.text,s.command,s.expected]));if([e.plan_mode,e.plan_scope,e.plan_harness,e.plan_resume_context,...t,...r,...n,...o].some(s=>s!==void 0))return{mode:e.plan_mode,scope:e.plan_scope,harness:e.plan_harness,resume_context:e.plan_resume_context,steps:t,decisions:r,discoveries:n,validation:o}}function L(e){return typeof e=="string"&&e.trim().length>0}var Li={title:e=>e.metadata.title,description:e=>e.metadata.description,tags:e=>e.metadata.tags,status:e=>e.metadata.status,type:e=>e.metadata.type,priority:e=>typeof e.metadata.priority=="number"?e.metadata.priority:void 0,assignee:e=>L(e.metadata.assignee)?e.metadata.assignee:void 0,parent:e=>L(e.metadata.parent)?e.metadata.parent:void 0,goal:e=>L(e.metadata.goal)?e.metadata.goal:void 0,value:e=>L(e.metadata.value)?e.metadata.value:void 0,why_now:e=>L(e.metadata.why_now)?e.metadata.why_now:void 0,risk:e=>L(e.metadata.risk)?e.metadata.risk:void 0,confidence:e=>e.metadata.confidence!==void 0&&e.metadata.confidence!==null?e.metadata.confidence:void 0,estimated_minutes:e=>typeof e.metadata.estimated_minutes=="number"?e.metadata.estimated_minutes:void 0,acceptance_criteria:e=>L(e.metadata.acceptance_criteria)?e.metadata.acceptance_criteria:void 0,resolution:e=>L(e.metadata.resolution)?e.metadata.resolution:void 0,expected_result:e=>L(e.metadata.expected_result)?e.metadata.expected_result:void 0,actual_result:e=>L(e.metadata.actual_result)?e.metadata.actual_result:void 0,body:e=>e.body,comments:e=>(e.metadata.comments??[]).map(t=>t.text),notes:e=>(e.metadata.notes??[]).map(t=>t.text),learnings:e=>(e.metadata.learnings??[]).map(t=>t.text),reminders:e=>vi(e.metadata),events:e=>Ci(e.metadata),dependencies:e=>(e.metadata.dependencies??[]).map(t=>({id:t.id,kind:t.kind})),plan:e=>Di(e.metadata)};function Cr(e,t={}){let r=t.fields??Ve,n={};for(let o of r){let i=Li[o];if(!i)continue;let s=i(e);s!==void 0&&(n[o]=s)}return n}function Mi(e){return e?.trim().toLowerCase()==="ollama"?St:xi}function re(e,t){let r=Mi(e),n=Xt(t);return n!==null?{maxCharacters:n,warning:null}:{maxCharacters:r,warning:t==null?null:Ai}}function Tt(e,t={}){let r=JSON.stringify(Cr(e,{fields:t.fields})),n=re(t.providerName,t.maxCharacters).maxCharacters;if(r.length<=n)return r;if(n<=X.length)return X.slice(0,n);let o=Math.max(0,n-X.length);return`${r.slice(0,o)}${X}`}(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]="2c518b97-bc75-5e3f-91e8-d6779d565558")}catch{}})();function Ni(e,t){let r=e.search.embedding_batch_size,n=e.search.embedding_timeout_ms,o=e.search.scanner_max_batch_retries,i=Number.isFinite(r)&&r>0?Math.floor(r):1,s=Number.isFinite(n)&&n>0?Math.floor(n):3e4,a=Number.isFinite(o)&&o>=0?Math.floor(o):0;return{batchSize:i,timeoutMs:s,maxRetries:a,maxBatchInputCharacters:Number.POSITIVE_INFINITY,maxInputCharacters:t}}function Oi(e,t,r){let n=[],o=[],i=0;for(let s of e){let a=o.length>=t,c=o.length>0&&Number.isFinite(r)&&i+s.length>r;(a||c)&&(n.push(o),o=[],i=0),o.push(s),i+=s.length}return n.push(o),n}function Pi(e,t){return e.name!=="ollama"?t:{...t,maxBatchInputCharacters:St}}function $i(e,t){if(!Number.isFinite(t)||t<=0||e.length<=t)return e;let r=Math.max(0,t-X.length);return`${e.slice(0,r)}${X}`.slice(0,t)}function Rr(e){let t=b(e).toLowerCase();return t.includes("timed out")||t.includes("timeout")}function Fi(e,t,r,n,o,i){let s=`Embedding batch ${t} failed after ${o} attempt(s): ${b(i)}`,a=`provider=${e.name} model=${e.model} batch_size=${r} timeout_ms=${n}`;return Rr(i)?`${s} (${a}; guidance=check provider availability or lower search.embedding_batch_size, raise search.embedding_timeout_ms, or run keyword search while semantic indexing catches up)`:`${s} (${a})`}async function It(e,t,r,n,o,i){let s=null;for(let a=0;a<=o;a+=1)try{let c=await vr(e,t,{timeout_ms:n});return a>0&&i.push(`search_embedding_batch_retry_succeeded:batch=${r}:attempt=${a+1}:size=${t.length}`),c}catch(c){if(s=c,Rr(c)&&t.length>1){let d=Math.ceil(t.length/2),l=t.slice(0,d),m=t.slice(d);return i.push(`search_embedding_batch_split_after_timeout:batch=${r}:size=${t.length}:parts=${l.length}|${m.length}`),[...await It(e,l,`${r}.1`,n,o,i),...await It(e,m,`${r}.2`,n,o,i)]}if(a<o){let d=Math.min(1e3*2**a,8e3);await new Promise(l=>setTimeout(l,d))}}throw new Error(Fi(e,r,t.length,n,o+1,s))}async function xt(e,t,r,n={}){if(r.length===0)return{vectors:[],warnings:[]};let o=[],i=re(e.name,t.search.embedding_corpus_max_characters);i.warning&&o.push(i.warning);let s=Pi(e,Ni(t,i.maxCharacters)),a=0,c=r.map(h=>{let p=$i(h,s.maxInputCharacters);return p.length<h.length&&(a+=1),p});a>0&&o.push(`search_embedding_input_truncated:count=${a}:max_characters=${s.maxInputCharacters}`);let d=Oi(c,s.batchSize,s.maxBatchInputCharacters),l=[],m=0;for(let h=0;h<d.length;h+=1){let p=d[h];n.onProgress?.({batch_index:h+1,batch_total:d.length,batch_size:p.length,completed_inputs:m,total_inputs:c.length,phase:"start"}),l.push(...await It(e,p,String(h+1),s.timeoutMs,s.maxRetries,o)),m+=p.length,n.onProgress?.({batch_index:h+1,batch_total:d.length,batch_size:p.length,completed_inputs:m,total_inputs:c.length,phase:"complete"})}return{vectors:l,warnings:o}}import{mkdir as zi,readFile as Ui,stat as Ct,unlink as Vi}from"node:fs/promises";import{basename as kr,dirname as At,isAbsolute as ji,join as Hi,resolve as Rt}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]="98c8d03c-bdde-5ac4-b80d-395d885f7442")}catch{}})();var kt="pm_items",qi=/[^a-zA-Z0-9_-]/g,Bi=128,Gi=".pm-cli-local-vectors",vt=1,Q=new Map;function ye(e){return(w(e.collection_name)??kt).replaceAll(qi,"_").slice(0,Bi)}function je(e){if(!Z(e)||e.length===0)throw new Error("Vector values must be a non-empty numeric array");return[...e]}function Lr(e){if(!Number.isFinite(e)||e<=0)throw new Error("Vector query limit must be a positive number");return Math.floor(e)}function Yi(e){let t=e.result;if(!Array.isArray(t))throw new TypeError("Qdrant query response must include a result array");let r=t.map((n,o)=>{let i=n.id,s=typeof i=="number"?String(i):i,a=w(s);if(!a)throw new Error(`Qdrant query response entry at index ${o} is missing a non-empty id`);let c=n.score;if(typeof c!="number"||!Number.isFinite(c))throw new TypeError(`Qdrant query response entry at index ${o} is missing a finite numeric score`);let d=n.payload;if(d!==void 0&&(typeof d!="object"||d===null||Array.isArray(d)))throw new Error(`Qdrant query response entry at index ${o} must provide payload as an object when set`);return{id:a,score:c,...d?{payload:d}:{}}});return r.sort((n,o)=>n.score!==o.score?o.score-n.score:n.id.localeCompare(o.id)),r}function Dt(e){let t=w(e.result?.status);if(t)return{status:t};let r=w(e.status);if(r)return{status:r};throw new Error("Qdrant upsert response must include status metadata")}async function _e(e,t,r,n,o){return await Ue({endpoint:e,method:t.method,headers:t.headers,body:t.body,timeoutMs:r,fetcher:n,requestLabel:`Vector ${o} request`,responseLabel:`Vector ${o} response`})}function Wi(e){let t=w(e.vector_store?.qdrant?.url);if(!t)return null;let r=w(e.vector_store?.collection_name),n=w(e.vector_store?.qdrant?.api_key);return{name:"qdrant",url:t,...r&&r!==kt?{collection_name:r}:{},...n?{api_key:n}:{}}}function Ki(e){let t=Rt(e),r=At(t);return kr(t)==="pm"&&kr(r)===".agents"?At(r):t}function Xi(e,t){return!t||ji(e)?e:Rt(Ki(t),e)}function Qi(e,t){let r=w(e.vector_store?.lancedb?.path);if(!r)return null;let n=w(e.vector_store?.collection_name);return{name:"lancedb",path:Xi(r,t),...n&&n!==kt?{collection_name:n}:{}}}function Ji(e){if(!Array.isArray(e)||e.length===0)throw new Error("Vector upsert records must include at least one entry");return e.map((t,r)=>{let n=w(t.id);if(!n)throw new Error(`Vector upsert record at index ${r} is missing a non-empty id`);let o=je(t.vector),i=t.payload;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw new Error(`Vector upsert record at index ${r} must provide payload as an object when set`);return{id:n,vector:o,...i?{payload:i}:{}}})}function Zi(e){if(!Array.isArray(e)||e.length===0)throw new Error("Vector delete ids must include at least one entry");let t=e.map((n,o)=>{let i=w(n);if(!i)throw new Error(`Vector delete id at index ${o} is missing a non-empty value`);return i}).sort((n,o)=>n.localeCompare(o)),r=[];for(let n of t)r.at(-1)!==n&&r.push(n);return r}function es(e){return e.replace(/\/points\?wait=true$/,"/points/delete?wait=true")}function ts(e){return e.replace(/\/points\?wait=true$/,"")}function He(e){return{"content-type":"application/json",...e.api_key?{"api-key":e.api_key}:{}}}function qe(e,t){return ne(e,t)}function ne(e,t){return Hi(Rt(e),Gi,`${t}.json`)}function rs(e,t,r){let n=w(e.id);if(!n)throw new Error(`LanceDB local snapshot '${r}' record at index ${t} is missing a non-empty id`);let o=je(e.vector),i=e.payload;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw new Error(`LanceDB local snapshot '${r}' record '${n}' must provide payload as an object when set`);return{id:n,vector:o,...i?{payload:i}:{}}}function ns(e,t,r){let n;try{n=JSON.parse(r)}catch(c){throw new Error(`LanceDB local snapshot at '${e}' is not valid JSON: ${b(c)}`)}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`LanceDB local snapshot at '${e}' must be a JSON object`);if(n.version!==vt)throw new Error(`LanceDB local snapshot at '${e}' must include version=${vt}`);let i=w(n.table);if(!i)throw new Error(`LanceDB local snapshot at '${e}' must include a non-empty table value`);if(i!==t)throw new Error(`LanceDB local snapshot at '${e}' table mismatch: expected '${t}', received '${i}'`);let s=n.records;if(!Array.isArray(s))throw new TypeError(`LanceDB local snapshot at '${e}' must include a records array`);let a=new Map;for(let c=0;c<s.length;c+=1){let d=rs(s[c],c,e);a.set(d.id,d)}return a}async function os(e){try{let t=await Ct(e);return{mtimeMs:t.mtimeMs,size:t.size}}catch(t){if(!ie(t))throw t;return null}}function is(e,t){if(!t)return null;if(t.mtimeMs===null&&t.size===null&&t.records.size===0)return t.records;let r=new Map;return Q.set(e,{records:r,mtimeMs:null,size:null}),r}function ss(e,t){return e!==void 0&&t!==null&&e.mtimeMs===t.mtimeMs&&e.size===t.size}async function Lt(e,t){let r=qe(e,t),n=ne(e,t),o=await os(n),i=Q.get(r);if(!o){let a=is(r,i);if(a)return a}if(ss(i,o))return i.records;let s=new Map;try{let a=await Ui(n,"utf8");s=ns(n,t,a)}catch(a){if(!ie(a))throw a}return Q.set(r,{records:s,mtimeMs:o?.mtimeMs??null,size:o?.size??null}),s}function as(e){let t=[...e.values()];return t.sort((r,n)=>r.id.localeCompare(n.id)),t.map(r=>({id:r.id,vector:[...r.vector],...r.payload?{payload:r.payload}:{}}))}async function Mr(e){try{await Vi(e)}catch(t){if(!ie(t))throw new Error(`LanceDB local snapshot delete failed at '${e}': ${b(t)}`)}}async function Nr(e,t,r){let n=ne(e,t);if(r.size===0){await Mr(n);return}let o=At(n);try{await zi(o,{recursive:!0})}catch(s){throw new Error(`LanceDB local snapshot directory create failed at '${o}': ${b(s)}`)}let i=`${JSON.stringify({version:vt,table:t,records:as(r)})}
10
- `;try{await S(n,i)}catch(s){throw new Error(`LanceDB local snapshot write failed at '${n}': ${b(s)}`)}}async function cs(e,t){let r=qe(e,t),n=ne(e,t);await Mr(n),Q.delete(r)}function Dr(e){let t=0;for(let r=0;r<e.length;r+=1)t+=e[r]*e[r];return Math.sqrt(t)}function ds(e,t){let r=0;for(let i=0;i<e.length;i+=1)r+=e[i]*t[i];let n=Dr(e),o=Dr(t);return n===0||o===0?0:r/(n*o)}function Mt(e,t){let r=Wi(e),n=Qi(e,t),o=[r,n].filter(c=>c!==null),i=w(e.vector_store?.adapter),s=i?i.toLowerCase():null;return{active:(s?o.find(c=>c.name===s):void 0)??o[0]??null,available:o}}function Be(e){let t=ye(e);if(e.name==="qdrant"){let o=ae(e.url),i=encodeURIComponent(t);return{store:"qdrant",query_target:`${o}/collections/${i}/points/search`,upsert_target:`${o}/collections/${i}/points?wait=true`}}let r=encodeURIComponent(e.path),n=encodeURIComponent(t);return{store:"lancedb",query_target:`lancedb://${r}#${n}`,upsert_target:`lancedb://${r}#${n}`}}function ls(e,t,r){let n=Be(e),o=je(t),i=Lr(r);return e.name==="qdrant"?{target:n,method:"POST",headers:He(e),body:{vector:o,limit:i,with_payload:!0}}:{target:n,method:"LOCAL",headers:{},body:{table:ye(e),vector:o,limit:i}}}function us(e,t){let r=Be(e),n=Ji(t);return e.name==="qdrant"?{target:r,method:"POST",headers:He(e),body:{points:n}}:{target:r,method:"LOCAL",headers:{},body:{table:ye(e),records:n}}}function fs(e,t){let r=Be(e),n=Zi(t);return e.name==="qdrant"?{target:r,method:"POST",headers:He(e),body:{points:n}}:{target:r,method:"LOCAL",headers:{},body:{table:ye(e),ids:n}}}async function Gd(e,t,r,n={}){let o=ls(e,t,r);if(o.method==="LOCAL"){let c=e,d=o.body,l=await Lt(c.path,d.table);if(l.size===0)return[];let m=je(d.vector),h=Lr(d.limit),p=[],_=0;for(let y of l.values()){if(y.vector.length!==m.length){_++;continue}p.push({id:y.id,score:ds(m,y.vector),...y.payload?{payload:y.payload}:{}})}return _>0&&n.warnings&&n.warnings.push(`vector_dimension_mismatch:${_} records skipped (expected ${m.length} dimensions)`),p.sort((y,g)=>y.score!==g.score?g.score-y.score:y.id.localeCompare(g.id)),p.slice(0,h)}let i=W(n.timeout_ms,"Vector request"),s=K(n.fetcher,"Vector request"),a=await _e(o.target.query_target,{method:"POST",headers:o.headers,body:o.body},i,s,"query");return Yi(a)}async function Nt(e,t,r={}){let n=us(e,t);if(n.method==="LOCAL"){let a=e,c=n.body,d=qe(a.path,c.table),l=await Lt(a.path,c.table);for(let p of c.records)l.set(p.id,p);await Nr(a.path,c.table,l);let m=ne(a.path,c.table),h=await Ct(m);return Q.set(d,{records:l,mtimeMs:h.mtimeMs,size:h.size}),{status:"ok"}}let o=W(r.timeout_ms,"Vector request"),i=K(r.fetcher,"Vector request"),s=await _e(n.target.upsert_target,{method:"POST",headers:n.headers,body:n.body},o,i,"upsert");return Dt(s)}async function Ge(e,t,r={}){let n=fs(e,t);if(n.method==="LOCAL"){let a=e,c=n.body,d=qe(a.path,c.table),l=await Lt(a.path,c.table);if(l.size===0)return{status:"ok"};for(let m of c.ids)l.delete(m);if(await Nr(a.path,c.table,l),l.size===0)Q.delete(d);else{let m=ne(a.path,c.table),h=await Ct(m);Q.set(d,{records:l,mtimeMs:h.mtimeMs,size:h.size})}return{status:"ok"}}let o=W(r.timeout_ms,"Vector request"),i=K(r.fetcher,"Vector request"),s=await _e(es(n.target.upsert_target),{method:"POST",headers:n.headers,body:n.body},o,i,"delete");return Dt(s)}async function Or(e,t=[],r={},n){if(e.name==="lancedb")return await cs(e.path,ye(e)),{status:"ok"};if(n!==void 0){if(!Number.isInteger(n)||n<=0)throw new Error("Vector reset dimension must be a positive integer when provided");let i=Be(e),s=ts(i.upsert_target),a=W(r.timeout_ms,"Vector request"),c=K(r.fetcher,"Vector request"),d=He(e);try{await _e(s,{method:"DELETE",headers:d,body:{}},a,c,"delete")}catch(m){if(!b(m).includes("failed with status 404"))throw m}let l=await _e(s,{method:"PUT",headers:d,body:{vectors:{size:n,distance:"Cosine"}}},a,c,"upsert");return Dt(l)}let o=t.map(i=>i.trim()).filter(i=>i.length>0);return o.length===0?{status:"ok"}:await Ge(e,o,r)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4b3ad5fc-0f86-5f20-a23b-19d447cb0973")}catch{}})();function Ye(e,t){let r=w(e),n=w(t);return!r||!n?null:{provider:r,model:n}}function Pr(e){if(e==null)return null;if(typeof e!="object"||Array.isArray(e))throw new Error("Vectorization embedding metadata must be an object when set");let t=Ye(e.provider,e.model),r=e.vector_dimension;if(!t||typeof r!="number"||!Number.isInteger(r)||r<=0)throw new Error("Vectorization embedding metadata must include provider, model, and positive vector_dimension");return{...t,vector_dimension:r}}function Ot(e,t){if(!Number.isInteger(t)||t<=0)throw new Error("Vectorization embedding metadata requires a positive vector dimension");return{provider:e.provider,model:e.model,vector_dimension:t}}function Pt(e,t){return!e||e.provider!==t.provider||e.model!==t.model}function $t(e,t){return!!(e&&e.vector_dimension!==t)}function Ft(e,t){if(e.length===0)throw new Error(`${t} returned no vectors`);let n=e[0].length;if(!Number.isInteger(n)||n<=0)throw new Error(`${t} returned an empty vector`);for(let o=1;o<e.length;o+=1)if(e[o]?.length!==n)throw new Error(`${t} returned mixed vector dimensions`);return n}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7939a590-3662-5c66-99aa-3835a0dbaecc")}catch{}})();var Fr="search/vectorization-status.json";function we(e){return[...new Set([...e].map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function zr(e){return typeof e=="string"&&e.trim().length>0&&Number.isFinite(Date.parse(e))}function Ur(e){let t=new Map;for(let[r,n]of Object.entries(e)){let o=r.trim();o.length===0||!zr(n)||t.set(o,n)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}async function Vr(e){let t=$r.join(e,Fr),r=await T(t);if(r===null||r.trim().length===0)return{entries:{},embedding:null,warnings:[]};let n;try{n=JSON.parse(r)}catch{return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]}}if(typeof n!="object"||n===null||n.version!==1||!Array.isArray(n.items))return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]};let o=new Map;for(let s of n.items){if(typeof s!="object"||s===null)return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]};let a=s.id,c=s.updated_at;if(typeof a!="string"||a.trim().length===0||!zr(c))return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]};o.set(a.trim(),c)}let i=null;try{i=Pr(n.embedding)}catch{return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]}}return{entries:Object.fromEntries([...o.entries()].sort((s,a)=>s[0].localeCompare(a[0]))),embedding:i,warnings:[]}}async function jr(e,t,r){let n=Ur(t),o=$r.join(e,Fr),i=`${JSON.stringify({version:1,generated_at:v(),...r?{embedding:r}:{},items:Object.entries(n).map(([s,a])=>({id:s,updated_at:a}))},null,2)}
11
- `;await S(o,i)}function ms(e){return{id:e.id,type:e.type,status:e.status,priority:e.priority,updated_at:e.updated_at}}function ps(e){let t=Ye(e.name,e.model);if(!t)throw new Error("Embedding provider must include a provider name and model");return t}function ge(e,t){return{refreshed:[],skipped:e,warnings:[t]}}async function hs(e,t,r){if(!r.settings&&!await P(rt(e)))return ge(t,"search_semantic_refresh_skipped:settings_not_initialized");let n;try{if(r.settings)n=r.settings;else{let a=await Ce(e),c=a.warnings.find(d=>d.startsWith("settings_read_"));if(c)return ge(t,`search_semantic_refresh_skipped:settings_read_failed:${c}`);n=a.settings}}catch(a){return ge(t,`search_semantic_refresh_skipped:settings_read_failed:${b(a)}`)}let o=r.apply_runtime_defaults?ze(n).settings:n,i=Et(o).active;if(!i)return ge(t,"search_semantic_refresh_skipped:provider_unconfigured");let s=Mt(o,e).active;return s?{settings:o,provider:i,vectorStore:s}:ge(t,"search_semantic_refresh_skipped:vector_store_unconfigured")}async function _s(e,t,r,n,o,i){let s=[],a=new Set,c=new Set,d=[];for(let l of n){let m=await B(e,l,t,r,o);if(!m){c.add(l);continue}try{let h=await G(m,{schema:i});d.push({id:h.document.metadata.id,document:h.document})}catch(h){a.add(m.id),s.push(`search_semantic_refresh_item_read_failed:${m.id}:${b(h)}`)}}return d.sort((l,m)=>l.id.localeCompare(m.id)),{documents:d,missingIds:we(c),skippedIds:we(a),warnings:s}}async function ys(e,t,r){let n=re(t.name,e.search.embedding_corpus_max_characters).maxCharacters,o=bt(e),i=r.map(a=>Tt(a.document,{providerName:t.name,maxCharacters:n,fields:o})),s=await xt(t,e,i);return{vectors:s.vectors,vector_dimension:Ft(s.vectors,"Semantic refresh embedding"),warnings:s.warnings}}async function gs(e,t,r){return await Nt(e,t.map((n,o)=>({id:n.id,vector:r[o],payload:ms(n.document.metadata)}))),{refreshed:t.map(n=>n.id),skipped:[],warnings:[]}}async function ws(e,t){if(t.length===0)return{refreshed:[],skipped:[],warnings:[]};try{return await Ge(e,t),{refreshed:[],skipped:[],warnings:[]}}catch(r){return{refreshed:[],skipped:t,warnings:[`search_semantic_refresh_delete_failed:${b(r)}`]}}}async function ml(e,t,r={}){let n=we(t);if(n.length===0)return{refreshed:[],skipped:[],warnings:[]};let o=await hs(e,n,r);if(!("settings"in o))return o;let i=F(o.settings,ce()),s=await _s(e,o.settings.id_prefix,o.settings.item_format,n,i.type_to_folder,o.settings.schema),a=s.documents.length>0||s.missingIds.length>0?await Vr(e):{entries:{},embedding:null,warnings:[]},c=ps(o.provider),d=a.entries,l={refreshed:[],skipped:[],warnings:[]},m=a.embedding;if(s.documents.length>0)if(a.embedding&&Pt(a.embedding,c))l={refreshed:[],skipped:s.documents.map(g=>g.id),warnings:["search_semantic_refresh_requires_reindex:embedding_identity_changed"]};else try{let g=await ys(o.settings,o.provider,s.documents);if($t(a.embedding,g.vector_dimension))l={refreshed:[],skipped:s.documents.map(E=>E.id),warnings:[...g.warnings,"search_semantic_refresh_requires_reindex:vector_dimension_changed"]};else{m=Ot(c,g.vector_dimension);let E=await gs(o.vectorStore,s.documents,g.vectors);l={refreshed:E.refreshed,skipped:E.skipped,warnings:[...g.warnings,...E.warnings]}}}catch(g){l={refreshed:[],skipped:s.documents.map(E=>E.id),warnings:[`search_semantic_refresh_failed:${b(g)}`]}}let h=await ws(o.vectorStore,s.missingIds),p=new Set(l.refreshed),_=Object.fromEntries(s.documents.filter(g=>p.has(g.id)).map(g=>[g.id,g.document.metadata.updated_at])),y=[];if(Object.keys(_).length>0||s.missingIds.length>0){let g={...d,...Ur(_)};for(let E of s.missingIds)delete g[E];try{await jr(e,g,m)}catch(E){y.push(`search_vectorization_status_ledger_write_failed:${b(E)}`)}y.push(...a.warnings)}return{refreshed:we([...l.refreshed,...h.refreshed]),skipped:we([...s.skippedIds,...l.skipped,...h.skipped]),warnings:[...s.warnings,...l.warnings,...h.warnings,...y]}}import{createRequire as bs}from"node:module";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8eb48648-6e55-5710-990e-6471c7cdcde0")}catch{}})();var Ss=/(?:token|secret|password|passwd|api[_-]?key|apikey|authorization|cookie|credentials|bearer|dsn)/i,yl=new RegExp(`\\b(${Ss.source})\\s*[:=]\\s*([^\\s,;]+)`,"giu");var gl=bs(import.meta.url);(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]="e896db69-ed90-53f1-a227-e3d061b3bc8d")}catch{}})();var bl=new Map([[u.USAGE,"invalid_command_usage"],[u.NOT_FOUND,"item_not_found"],[u.CONFLICT,"lock_conflict"],[u.DEPENDENCY_FAILED,"dependency_failed"]]);(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]="5e6ba316-b067-51df-abeb-c3e3488a504d")}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]="c43dd9f2-78ac-5c22-970a-0016a06b87b3")}catch{}})();var Rl=Object.freeze({"&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&amp;":"&"});(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]="0ce743d1-917a-5c96-b038-c95e3922bc48")}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]="868dfae8-2575-5d5f-8425-c7e68aefdc84")}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]="4ecab833-db06-5baa-bfe6-d28b4c97f85a")}catch{}})();function Is(e,t){if(e==null)return[];let r=t?.separators??/,/,o=e.split(r).map(a=>a.trim()).filter(a=>a.length>0),s=t?.unique!==!1?Array.from(new Set(o)):o;return t?.sort===!0?[...s].sort():s}import qr from"node:fs/promises";import We from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4baf0ef3-2412-51cf-9ade-18b5c6e610d1")}catch{}})();function xs(e){return"json_markdown"}function Br(e,t){return We.relative(e,t).replaceAll("\\","/")}function As(e){return String(e).replaceAll(/[^a-zA-Z0-9._-]+/g,"_").slice(0,120)}async function vs(e,t,r="item_format:migrate",n=et,o){if(t!=="toon")throw new Error("Only toon item-format migration targets are supported. Markdown item files are legacy read-only input.");let i=new Set,s=new Set,a=[],c=0,d=xs(t),l=Object.entries(n);for(let[m,h]of l){let p=We.join(e,h),_=[];try{_=await qr.readdir(p)}catch{continue}let y=new Map;for(let E of _){let x=We.join(p,E),I=Kt(x);if(!I)continue;let A=We.extname(E),V=E.slice(0,E.length-A.length).trim();if(V.length===0)continue;let O=y.get(V)??{};O[I]=x,y.set(V,O)}let g=[...y.keys()].sort((E,x)=>E.localeCompare(x));for(let E of g){let x=y.get(E);c+=1;let I=x[d];if(!I)continue;let A=x[t]??I,V=A===x[t]?t:d;try{let O=await qr.readFile(A,"utf8"),Je=it(O,{format:V,schema:o,onWarning:j=>a.push(`item_format_migration_parse_warning:${E}:${j}`)}),J=se(e,m,E,t,n),Ee=le(Je,{format:t,schema:o});await T(J)!==Ee&&(await S(J,Ee),a.push(...await q({path:J,scope:"project",op:r})),i.add(E)),await be(I),s.add(Br(e,I)),a.push(...await q({path:I,scope:"project",op:`${r}:remove`})),i.add(E)}catch(O){a.push(`item_format_migration_skipped:${Br(e,A)}:${As(O)}`)}}}return{target_format:t,scanned:c,migrated:[...i].sort((m,h)=>m.localeCompare(h)),removed:[...s].sort((m,h)=>m.localeCompare(h)),warnings: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]="f280c1df-b134-57c3-91f6-cbf5a37e6e31")}catch{}})();var Cs=new Set(["completed","superseded"]);function Rs(e){return e!==void 0&&Cs.has(e)}function ks(e){if(e.type.trim().toLowerCase()!=="plan")return!1;let t=e.plan_steps??[];return t.length>0&&t.every(r=>r.status==="completed")}import ql from"node:readline/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6783b122-a1a8-5f86-9ac5-2c3e811622ed")}catch{}})();import Vt from"node:crypto";import{mkdirSync as Zl,rmSync as Ms,statSync as eu}from"node:fs";import{mkdir as zt,readdir as Ns,rm as jt,stat as Jr}from"node:fs/promises";import{request as Os}from"node:http";import{request as Ps}from"node:https";import k 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]="26ea62d9-874d-5826-9822-83c5523b673b")}catch{}})();var $s=k.join("runtime","telemetry","events.jsonl"),Fs=k.join("runtime","telemetry","state.json"),zs=k.join("runtime","telemetry","otel-spans.jsonl"),Us=8,Gr=500,Vs=1;var js=100,Hs=36e5,qs=3e4,Yr=2e4,Bs=1e3,Gs=25e3,Ys=864e5,Zr=65536;var en=15;var tn=[25,50,100,200],Ws=3600*1e3,Ks=6e4;var Xs="PM_TELEMETRY_DISABLED",Qs="PM_NO_TELEMETRY",Wr=new Set(["1","true","yes","on"]);var Js="PM_TELEMETRY_HTTP_TIMEOUT_MS",Zs=globalThis.fetch,ea=["user","automation","test","dogfood"],mu=Promise.resolve(),Kr=Promise.resolve();var pu=new Set(ea);var hu=Vt.randomUUID();var rn="(?:token|secret|password|passwd|api[_-]?key|apikey|authorization|cookie|session|credentials|bearer|literals?|regex(?:es)?|replacements?)",ta=new RegExp(`\\b(${rn})\\s*([:=])\\s*([^\\s,;]+)`,"giu"),ra=new RegExp(`(--${rn})(=|\\s+)([^\\s,;]+)`,"giu"),na=/(^|[\s"'`(=])\/(?:[^\s"'`),;]+)/g,oa=/bearer\s+[a-z0-9._=-]+/giu,ia=/\b(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g;function Xe(e){return k.join(e,$s)}function Ht(e){return k.join(e,zs)}function sa(e){return k.dirname(Xe(e))}function nn(e){return k.join(e,Fs)}function on(e){return k.join(e,"runtime","telemetry","flush.lock")}function aa(e){return k.join(e,"runtime","telemetry","flush.spawn.lock")}async function ca(e){let t=await T(nn(e));if(!t||t.trim().length===0)return{};try{let r=JSON.parse(t);return typeof r!="object"||r===null||Array.isArray(r)?{}:r}catch{return{}}}async function N(e,t){try{let n={...await ca(e),...t},o=Object.fromEntries(Object.entries(n).filter(([,i])=>i!==void 0).sort((i,s)=>i[0].localeCompare(s[0])));await S(nn(e),`${JSON.stringify(o,null,2)}
9
+ `));return r.length>0?r.join(","):""}function Co(e){if(e===void 0)return;if(typeof e=="number")return Number.isFinite(e)?String(e):"";if(Array.isArray(e))return vo(e);if(typeof e!="string")return"";let t=yt(e);return t.length>0?t.join(","):""}(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]="19ff592c-0746-54e8-a304-2006f4845da2")}catch{}})();function _r(e){return e.replaceAll("~1","/").replaceAll("~0","~")}function gt(e){if(e==="/body"||e.startsWith("/body/"))return"body";if(e==="/metadata"||e.startsWith("/metadata/")||e==="/front_matter"||e.startsWith("/front_matter/")){let r=e.replace(/^\/(?:metadata|front_matter)\/?/,"").split("/")[0];return r?_r(r):"metadata"}let t=e.replace(/^\//,"").split("/")[0];return t?_r(t):"root"}function $e(e,t){return t==="body"?e.body:t==="metadata"?e.metadata:t==="root"?e:e.metadata[t]}function Ro(e,t){let r=t?.windowStartIndex??0,n=t?.field;if(e.length===0||r>=e.length)return[];let o=Zt(),i=[];for(let s=0;s<e.length;s+=1){let a=e[s],c=o,d=ve(o,a.patch),l;d.ok?(l=d.document,o=l):l=c;let m=new Set;for(let p of a.patch)m.add(gt(p.path)),p.from!==void 0&&m.add(gt(p.from));let h=[...m].sort((p,_)=>p.localeCompare(_));if(s>=r)if(n!==void 0){if(!m.has(n))continue;let p={field:n,before:$e(c,n),after:$e(l,n)};i.push({index:s+1,ts:a.ts,op:a.op,author:a.author,patch_ops:a.patch.length,changed_fields:[n],changes:[p]})}else{let p=h.map(_=>({field:_,before:$e(c,_),after:$e(l,_)}));i.push({index:s+1,ts:a.ts,op:a.op,author:a.author,patch_ops:a.patch.length,changed_fields:h,changes:p})}}return i}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a97ee152-4d20-54f1-add9-fdb991ab6b33")}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]="4a376062-2e23-5991-80a5-27183909caf3")}catch{}})();var ko=new Set(["none","null","undefined"]);function Qc(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="warn"||t==="strict_error")return t;if(t==="strict")return"strict_error";throw new f("Config set parent-reference-policy requires --policy with one of: warn, strict_error (alias: strict)",u.USAGE)}function Do(e){if(typeof e!="string")throw new f("--parent must be a string. Use --unset parent to clear this field.",u.USAGE);let t=e.trim();if(t.length===0)throw new f("--parent must not be empty. Use --parent none to unset.",u.USAGE);if(yr(t))throw new f(`--parent must not use placeholder token "${t}". Use --unset parent to clear this field.`,u.USAGE);return t}function yr(e){return ko.has(e.trim().toLowerCase())}function Lo(e,t){if(t==="strict_error")throw new f(`Parent item "${e}" was not found. Create it first or use --parent none.`,u.USAGE);return{warnings:[`validation_warning:parent_reference_missing:${e}`]}}function Mo(e,t,r){let n=re(e,r),o=re(t,r);if(n!==o)return;let i=t!==o||e!==n?` (normalized from parent "${t}" and item "${e}")`:"";throw new f(`Parent item "${o}" cannot be the same as item "${n}"${i}. Use --unset parent to clear this field.`,u.USAGE)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="806bf35f-dc7e-55a8-9bb9-64be87111c22")}catch{}})();var wt={critical:0,high:1,medium:2,low:3,minimal:4},No=Object.keys(wt),Oo=`numbers 0..4 (0=critical, 1=high, 2=medium, 3=low, 4=minimal) or names (${No.join(", ")}), case-insensitive`;function Fe(e){return new f(`Invalid priority "${e}". Accepted values: ${Oo}.`,u.USAGE)}function Po(e){if(typeof e=="number"){if(Number.isInteger(e)&&e>=0&&e<=4)return e;throw Fe(String(e))}if(typeof e!="string")throw Fe(String(e));let t=e.trim();if(t.length===0)throw Fe(e);let r=t.toLowerCase();if(Object.prototype.hasOwnProperty.call(wt,r))return wt[r];if(/^[0-4]$/.test(t))return Number(t);throw Fe(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]="bf76a01e-7292-59df-94ca-1e41aaff7365")}catch{}})();var $o=/^[A-Za-z0-9][A-Za-z0-9._/-]*$/,Fo=64;function od(e){let t=e?.trim().toLowerCase().replaceAll("-","_");if(t==="warn"||t==="strict_error")return t;if(t==="strict")return"strict_error";throw new f("Config set sprint-release-format-policy requires --policy with one of: warn, strict_error (alias: strict)",u.USAGE)}function zo(e,t,r){let n=t.trim();if(n.length===0)throw new f(`--${e} must not be empty. Use --${e} none to unset.`,u.USAGE);if(n.length<=Fo&&$o.test(n))return{value:n,warnings:[]};let i="Expected 1-64 characters matching [A-Za-z0-9][A-Za-z0-9._/-]* (no spaces).";if(r==="strict_error")throw new f(`Invalid --${e} value "${n}". ${i}`,u.USAGE);return{value:n,warnings:[`validation_warning:${e}_format:${n}`]}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d0e997bc-8bdb-5602-8606-73ecf77b2a35")}catch{}})();var gr={open:"open_status",closed:"close_status",canceled:"canceled_status",cancelled:"canceled_status"},wr="all";function ld(e){if(typeof e!="string")return!1;let t=e.split(",").map(r=>r.trim().toLowerCase()).filter(r=>r.length>0);return t.length===1&&t[0]===wr}function Uo(e,t){let r=e.trim().toLowerCase();if(r.length===0)return;let n=gr[r];return n?t[n]:de(e,t)}function Vo(e){let t=new Set(Object.keys(gr));for(let r of e.definitions){t.add(r.id);for(let n of r.aliases)t.add(n)}return[...t]}function jo(e,t){let r=e.trim().toLowerCase(),n,o=Number.POSITIVE_INFINITY;for(let i of Vo(t)){let s=Ze(r,i.toLowerCase(),2);s!==null&&s<o&&(n=i,o=s)}return n}function Ho(e,t,r){if(typeof e!="string")return;let n=r?.strict===!0,o=r?.flagLabel??"--status",i=e.split(",").map(c=>c.trim()).filter(c=>c.length>0);if(i.length===0)return;if(i.filter(c=>c.trim().toLowerCase()===wr).length>0){if(i.length===1)return;throw new f(`Invalid ${o} value "all". Use it by itself, or omit ${o} to search every status.`,u.USAGE)}let a=[];for(let c of i){let d=Uo(c,t);if(d===void 0){if(n){let l=jo(c,t);throw new f(`Invalid ${o} value "${c}". Use open|closed|canceled or a configured status id${l?`. Did you mean "${l}"?`:"."}`,u.USAGE)}a.push(c);continue}a.push(d)}return[...new Set(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]="b7a167e0-3041-5056-a672-ea0a054ed8df")}catch{}})();var qo={bug:"Issue",bugfix:"Issue",defect:"Issue",incident:"Issue",enhancement:"Feature",story:"Feature",userstory:"Feature","user-story":"Feature","user story":"Feature",change:"Chore",ticket:"Task",todo:"Task"};function Bo(e){if(e!==void 0)return qo[e.trim().toLowerCase()]}(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]="6d11dc0f-e313-5b39-965d-6bc84ad52966")}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]="43a56374-808c-5fa6-bd6c-5d93175df0d2")}catch{}})();function Er(e,t){return nt(e,t)}function Go(e,t,r){let n={};for(let o of t.command_to_fields.get(r)??[]){let i=Qt(e,o);i!==void 0&&(n[o.metadata_key]=Jt(o,i))}return n}function Yo(e,t){for(let[r,n]of Object.entries(t)){let o=e[r];if(Array.isArray(n)){if(Array.isArray(o)){let i=o.map(a=>String(a));if(!n.map(a=>String(a)).every(a=>i.includes(a)))return!1;continue}if(!Er(o,n[n.length-1]))return!1;continue}if(!Er(o,n))return!1}return!0}import{spawnSync as Sr}from"node:child_process";(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]="12bfc6e7-8979-58e8-8276-98cc859f3e32")}catch{}})();var Wo="PM_DISABLE_OLLAMA_AUTO_DEFAULTS",Ko="PM_OLLAMA_MODEL",Xo="http://localhost:11434",Qo="qwen3-embedding:0.6b",Jo=".agents/pm/search/lancedb/",Zo=1500,ei=2500,ti=/qwen.*(?:embed|embedding)|(?:embed|embedding).*qwen/i,ri=/embed|embedding/i,D=w;function ni(){let e=D(process.env[Wo]);if(!e)return!1;let t=e.toLowerCase();return t==="1"||t==="true"||t==="yes"}function br(e){return e.some(t=>D(t)!==null)}function oi(e){let t=D(e);return!!(t&&t.toLowerCase()!=="ollama")}function ii(e){let t=D(e);return!!(t&&t.toLowerCase()!=="lancedb")}function si(e){return oi(e.search?.provider)||ii(e.vector_store?.adapter)||br([e.providers?.openai?.base_url,e.providers?.openai?.model,e.providers?.openai?.api_key])?!0:br([e.vector_store?.qdrant?.url,e.vector_store?.qdrant?.api_key])}function ai(){let e=Sr("ollama",["--version"],{encoding:"utf8",timeout:Zo});return e.error?!1:e.status===0}function ci(e){let t=e.split(/\r?\n/).map(i=>i.trim()).filter(i=>i.length>0);if(t.length===0)return null;let r=t.map(i=>i.split(/\s+/)[0]?.trim()).filter(i=>!!(i&&i.length>0)).filter(i=>i.toUpperCase()!=="NAME");if(r.length===0)return null;let n=r.find(i=>ti.test(i));return n||(r.find(i=>ri.test(i))??null)}function di(e){let t=D(e.providers?.ollama?.model);if(t)return t;let r=D(process.env[Ko]);if(r)return r;let n=Sr("ollama",["list"],{encoding:"utf8",timeout:ei});if(!n.error&&n.status===0){let o=ci(typeof n.stdout=="string"?n.stdout:"");if(o)return o}return null}function li(e){return{baseUrl:D(e.providers?.ollama?.base_url)===null,model:D(e.providers?.ollama?.model)===null,lancedbPath:D(e.vector_store?.lancedb?.path)===null,embeddingModel:D(e.search?.embedding_model)===null}}function ui(e){return e.baseUrl||e.model||e.lancedbPath||e.embeddingModel}function fi(e,t,r){if(!t.baseUrl&&!t.model)return;let n=e.providers??={},o=n.ollama??={};t.baseUrl&&(o.base_url=Xo),t.model&&(o.model=r)}function mi(e,t){if(!t.lancedbPath)return;let r=e.vector_store??={},n=r.lancedb??={};n.path=Jo}function pi(e,t,r){if(!t.embeddingModel)return;let n=e.search??={};n.embedding_model=r}function ze(e){let t={settings:e,auto_ollama_defaults_applied:!1};if(ni()||si(e))return t;let r=li(e);if(!ui(r)||r.model&&!ai())return t;let n=structuredClone(e),o=di(n);return o?(fi(n,r,o),mi(n,r),pi(n,r,o),{settings:n,auto_ollama_defaults_applied:!0}):{...t,auto_ollama_defaults_skipped_reason:"no_installed_embedding_model",auto_ollama_defaults_remediation:`Run ollama pull ${Qo} or configure providers.ollama.model explicitly (and search.embedding_model if you need an override).`}}(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]="d8d5f7e9-5293-564b-bc44-f5ba30336893")}catch{}})();var hi="reindex";import $r 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]="b5ce7132-0024-5d42-9cb8-585933beb7c7")}catch{}})();var _i=3e4;function W(e,t,r=_i){let n=e??r;if(!Number.isFinite(n)||n<=0)throw new Error(`${t} timeout must be a positive finite number`);return Math.floor(n)}function K(e,t){if(e)return e;if(typeof globalThis.fetch=="function")return globalThis.fetch.bind(globalThis);throw new Error(`${t} execution requires a fetch implementation`)}async function yi(e){try{return(await e.text()).replaceAll(/\s+/g," ").trim()}catch(t){return`(failed to read response body: ${b(t)})`}}async function Ue(e){let t=new AbortController,r=setTimeout(()=>{t.abort()},e.timeoutMs);try{let n;try{n=await e.fetcher(e.endpoint,{method:e.method,headers:e.headers,body:JSON.stringify(e.body),signal:t.signal})}catch(o){throw o instanceof Error&&o.name==="AbortError"?new Error(`${e.requestLabel} timed out after ${e.timeoutMs}ms`):new Error(`${e.requestLabel} execution failed: ${b(o)}`)}if(!n.ok){let o=await yi(n),i=o.length>0?`: ${o}`:"";throw new Error(`${e.requestLabel} failed with status ${n.status} ${n.statusText}${i}`)}try{return await n.json()}catch(o){throw new Error(`${e.responseLabel} JSON parse failed: ${b(o)}`)}}finally{clearTimeout(r)}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="af754be6-8026-530a-8a20-b03d4ed742e1")}catch{}})();function Ld(e,t){let r=w(e);if(!r)return"unconfigured";let n=w(t);return n&&n.toLowerCase()===r.toLowerCase()?"configured":"auto-detected"}function gi(e){let t=ae(e),r=t.toLowerCase();return r.endsWith("/embeddings")?t:r.endsWith("/v1")?`${t}/embeddings`:`${t}/v1/embeddings`}function xr(e){let t=e.search?.embedding_model;return w(t)||null}function wi(e){let t=w(e.providers?.openai?.base_url),r=w(e.providers?.openai?.model);if(!t||!r)return null;let n=xr(e),o=w(e.providers?.openai?.api_key);return{name:"openai",base_url:t,model:n??r,...o?{api_key:o}:{}}}function Ei(e){let t=w(e.providers?.ollama?.base_url),r=w(e.providers?.ollama?.model);if(!t||!r)return null;let n=xr(e);return{name:"ollama",base_url:t,model:n??r}}function Ar(e){let t=(Array.isArray(e)?e:[e]).map(r=>r.trim()).filter(r=>r.length>0);if(t.length===0)throw new Error("Embedding input must include at least one non-empty string");return t}function bi(e){let t=[],r=[],n=new Map;for(let o of e){let i=n.get(o);if(i===void 0){let s=t.length;t.push(o),n.set(o,s),r.push(s);continue}r.push(i)}return{uniqueInputs:t,originalToUniqueIndex:r}}function Si(e){let t=e.map((n,o)=>({embedding:n.embedding,index:n.index,position:o}));if(t.some(n=>n.index!==void 0)){for(let n of t)if(!Number.isInteger(n.index))throw new TypeError(`OpenAI embedding response entry at position ${n.position} is missing a valid integer index`);return[...t].sort((n,o)=>{let i=n.index-o.index;return i!==0?i:n.position-o.position})}return t}function Et(e){let t=wi(e),r=Ei(e),n=[t,r].filter(a=>a!==null),o=w(e.search?.provider),i=o?o.toLowerCase():null;return{active:(i?n.find(a=>a.name===i):void 0)??n[0]??null,available:n}}function Ir(e){let t=ae(e.base_url);return e.name==="openai"?{provider:"openai",endpoint:gi(t),model:e.model}:{provider:"ollama",endpoint:`${t}/api/embed`,model:e.model}}function Ti(e,t){let r=Ar(t);return e.name==="openai"?{target:Ir(e),method:"POST",headers:{"content-type":"application/json",...e.api_key?{authorization:`Bearer ${e.api_key}`}:{}},body:{model:e.model,input:r.length===1?r[0]:r}}:{target:Ir(e),method:"POST",headers:{"content-type":"application/json"},body:{model:e.model,input:r}}}function Ii(e,t){if(e.name==="openai"){let o=t.data;if(!Array.isArray(o)||o.length===0)throw new Error("OpenAI embedding response must include a non-empty data array");return Si(o).map((s,a)=>{let c=s.embedding;if(!ee(c))throw new Error(`OpenAI embedding response entry at index ${a} is missing a numeric embedding vector`);return[...c]})}let r=t.embedding;if(ee(r))return[[...r]];let n=t.embeddings;if(Array.isArray(n)&&n.length>0)return n.map((o,i)=>{if(!ee(o))throw new Error(`Ollama embedding response entry at index ${i} is missing a numeric embedding vector`);return[...o]});throw new Error("Ollama embedding response must include embedding or embeddings vectors")}async function vr(e,t,r={}){let n=W(r.timeout_ms,"Embedding request"),o=K(r.fetcher,"Embedding request"),i=Ar(t),s=bi(i),a=Ti(e,s.uniqueInputs),c=await Ue({endpoint:a.target.endpoint,method:a.method,headers:a.headers,body:a.body,timeoutMs:n,fetcher:o,requestLabel:"Embedding request",responseLabel:"Embedding response"}),d=Ii(e,c);if(d.length!==s.uniqueInputs.length)throw new Error(`Embedding response cardinality mismatch: expected ${s.uniqueInputs.length} vector(s), received ${d.length}`);return s.originalToUniqueIndex.map(l=>[...d[l]])}(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]="61c0153b-8fa5-5c26-aa88-ca9807f2d160")}catch{}})();var Ve=["title","description","tags","status","type","priority","assignee","parent","goal","value","why_now","risk","confidence","estimated_minutes","acceptance_criteria","resolution","expected_result","actual_result","body","comments","notes","learnings","reminders","events","dependencies","plan"];function bt(e){let t=e?.search?.corpus_fields;if(!Array.isArray(t))return[...Ve];let r=new Set(Ve),n=Array.from(new Set(t.filter(o=>typeof o=="string").map(o=>o.trim()).filter(o=>o.length>0&&r.has(o))));return n.length>0?n:[...Ve]}var xi=8e3,St=3200,X="...[semantic corpus truncated]",Ai="search_embedding_corpus_max_characters_invalid:using_provider_default";function M(e){return e.map(t=>t==null?"":String(t).trim()).filter(t=>t.length>0).join(" ")}function vi(e){return(e.reminders??[]).map(t=>M([t.at,t.text]))}function Ci(e){return(e.events??[]).map(t=>M([t.start_at,t.end_at,t.title,t.description,t.location,t.all_day===!0?"all day":void 0,t.timezone,t.recurrence?.freq,t.recurrence?.interval,t.recurrence?.count,t.recurrence?.until,t.recurrence?.by_weekday?.join(" "),t.recurrence?.by_month_day?.join(" "),t.recurrence?.exdates?.join(" ")]))}function Ri(e,t){e.push(t.title,t.body,t.status,t.owner,t.evidence,t.blocked_reason,t.superseded_by);for(let r of t.linked_items??[])e.push(`${r.kind} ${r.id}`,r.note);for(let r of t.files??[])e.push(r.path,r.note);for(let r of t.tests??[])e.push(r.command,r.path,r.note);for(let r of t.docs??[])e.push(r.path,r.note)}function ki(e,t){for(let r of t.plan_decisions??[])e.push(r.decision,r.rationale,r.evidence);for(let r of t.plan_discoveries??[])e.push(r.text);for(let r of t.plan_validation??[])e.push(r.text,r.command,r.expected)}function Od(e){let t=[];t.push(e.plan_mode,e.plan_scope,e.plan_harness,e.plan_resume_context);for(let r of e.plan_steps??[])Ri(t,r);return ki(t,e),t.filter(r=>typeof r=="string"&&r.length>0).join(" ")}function Di(e){let t=(e.plan_steps??[]).map(s=>M([s.order,s.id,s.title,s.body,s.status,s.owner,s.evidence,s.blocked_reason,s.superseded_by,(s.linked_items??[]).map(a=>M([a.kind,a.id,a.note])).join(" "),(s.files??[]).map(a=>M([a.path,a.note])).join(" "),(s.tests??[]).map(a=>M([a.command,a.path,a.note])).join(" "),(s.docs??[]).map(a=>M([a.path,a.note])).join(" ")])),r=(e.plan_decisions??[]).map(s=>M([s.decision,s.rationale,s.evidence,s.step_id])),n=(e.plan_discoveries??[]).map(s=>M([s.text,s.step_id])),o=(e.plan_validation??[]).map(s=>M([s.text,s.command,s.expected]));if([e.plan_mode,e.plan_scope,e.plan_harness,e.plan_resume_context,...t,...r,...n,...o].some(s=>s!==void 0))return{mode:e.plan_mode,scope:e.plan_scope,harness:e.plan_harness,resume_context:e.plan_resume_context,steps:t,decisions:r,discoveries:n,validation:o}}function L(e){return typeof e=="string"&&e.trim().length>0}var Li={title:e=>e.metadata.title,description:e=>e.metadata.description,tags:e=>e.metadata.tags,status:e=>e.metadata.status,type:e=>e.metadata.type,priority:e=>typeof e.metadata.priority=="number"?e.metadata.priority:void 0,assignee:e=>L(e.metadata.assignee)?e.metadata.assignee:void 0,parent:e=>L(e.metadata.parent)?e.metadata.parent:void 0,goal:e=>L(e.metadata.goal)?e.metadata.goal:void 0,value:e=>L(e.metadata.value)?e.metadata.value:void 0,why_now:e=>L(e.metadata.why_now)?e.metadata.why_now:void 0,risk:e=>L(e.metadata.risk)?e.metadata.risk:void 0,confidence:e=>e.metadata.confidence!==void 0&&e.metadata.confidence!==null?e.metadata.confidence:void 0,estimated_minutes:e=>typeof e.metadata.estimated_minutes=="number"?e.metadata.estimated_minutes:void 0,acceptance_criteria:e=>L(e.metadata.acceptance_criteria)?e.metadata.acceptance_criteria:void 0,resolution:e=>L(e.metadata.resolution)?e.metadata.resolution:void 0,expected_result:e=>L(e.metadata.expected_result)?e.metadata.expected_result:void 0,actual_result:e=>L(e.metadata.actual_result)?e.metadata.actual_result:void 0,body:e=>e.body,comments:e=>(e.metadata.comments??[]).map(t=>t.text),notes:e=>(e.metadata.notes??[]).map(t=>t.text),learnings:e=>(e.metadata.learnings??[]).map(t=>t.text),reminders:e=>vi(e.metadata),events:e=>Ci(e.metadata),dependencies:e=>(e.metadata.dependencies??[]).map(t=>({id:t.id,kind:t.kind})),plan:e=>Di(e.metadata)};function Cr(e,t={}){let r=t.fields??Ve,n={};for(let o of r){let i=Li[o];if(!i)continue;let s=i(e);s!==void 0&&(n[o]=s)}return n}function Mi(e){return e?.trim().toLowerCase()==="ollama"?St:xi}function ne(e,t){let r=Mi(e),n=Xt(t);return n!==null?{maxCharacters:n,warning:null}:{maxCharacters:r,warning:t==null?null:Ai}}function Tt(e,t={}){let r=JSON.stringify(Cr(e,{fields:t.fields})),n=ne(t.providerName,t.maxCharacters).maxCharacters;if(r.length<=n)return r;if(n<=X.length)return X.slice(0,n);let o=Math.max(0,n-X.length);return`${r.slice(0,o)}${X}`}(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]="2c518b97-bc75-5e3f-91e8-d6779d565558")}catch{}})();function Ni(e,t){let r=e.search.embedding_batch_size,n=e.search.embedding_timeout_ms,o=e.search.scanner_max_batch_retries,i=Number.isFinite(r)&&r>0?Math.floor(r):1,s=Number.isFinite(n)&&n>0?Math.floor(n):3e4,a=Number.isFinite(o)&&o>=0?Math.floor(o):0;return{batchSize:i,timeoutMs:s,maxRetries:a,maxBatchInputCharacters:Number.POSITIVE_INFINITY,maxInputCharacters:t}}function Oi(e,t,r){let n=[],o=[],i=0;for(let s of e){let a=o.length>=t,c=o.length>0&&Number.isFinite(r)&&i+s.length>r;(a||c)&&(n.push(o),o=[],i=0),o.push(s),i+=s.length}return n.push(o),n}function Pi(e,t){return e.name!=="ollama"?t:{...t,maxBatchInputCharacters:St}}function $i(e,t){if(!Number.isFinite(t)||t<=0||e.length<=t)return e;let r=Math.max(0,t-X.length);return`${e.slice(0,r)}${X}`.slice(0,t)}function Rr(e){let t=b(e).toLowerCase();return t.includes("timed out")||t.includes("timeout")}function Fi(e,t,r,n,o,i){let s=`Embedding batch ${t} failed after ${o} attempt(s): ${b(i)}`,a=`provider=${e.name} model=${e.model} batch_size=${r} timeout_ms=${n}`;return Rr(i)?`${s} (${a}; guidance=check provider availability or lower search.embedding_batch_size, raise search.embedding_timeout_ms, or run keyword search while semantic indexing catches up)`:`${s} (${a})`}async function It(e,t,r,n,o,i){let s=null;for(let a=0;a<=o;a+=1)try{let c=await vr(e,t,{timeout_ms:n});return a>0&&i.push(`search_embedding_batch_retry_succeeded:batch=${r}:attempt=${a+1}:size=${t.length}`),c}catch(c){if(s=c,Rr(c)&&t.length>1){let d=Math.ceil(t.length/2),l=t.slice(0,d),m=t.slice(d);return i.push(`search_embedding_batch_split_after_timeout:batch=${r}:size=${t.length}:parts=${l.length}|${m.length}`),[...await It(e,l,`${r}.1`,n,o,i),...await It(e,m,`${r}.2`,n,o,i)]}if(a<o){let d=Math.min(1e3*2**a,8e3);await new Promise(l=>setTimeout(l,d))}}throw new Error(Fi(e,r,t.length,n,o+1,s))}async function xt(e,t,r,n={}){if(r.length===0)return{vectors:[],warnings:[]};let o=[],i=ne(e.name,t.search.embedding_corpus_max_characters);i.warning&&o.push(i.warning);let s=Pi(e,Ni(t,i.maxCharacters)),a=0,c=r.map(h=>{let p=$i(h,s.maxInputCharacters);return p.length<h.length&&(a+=1),p});a>0&&o.push(`search_embedding_input_truncated:count=${a}:max_characters=${s.maxInputCharacters}`);let d=Oi(c,s.batchSize,s.maxBatchInputCharacters),l=[],m=0;for(let h=0;h<d.length;h+=1){let p=d[h];n.onProgress?.({batch_index:h+1,batch_total:d.length,batch_size:p.length,completed_inputs:m,total_inputs:c.length,phase:"start"}),l.push(...await It(e,p,String(h+1),s.timeoutMs,s.maxRetries,o)),m+=p.length,n.onProgress?.({batch_index:h+1,batch_total:d.length,batch_size:p.length,completed_inputs:m,total_inputs:c.length,phase:"complete"})}return{vectors:l,warnings:o}}import{mkdir as zi,readFile as Ui,stat as Ct,unlink as Vi}from"node:fs/promises";import{basename as kr,dirname as At,isAbsolute as ji,join as Hi,resolve as Rt}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]="98c8d03c-bdde-5ac4-b80d-395d885f7442")}catch{}})();var kt="pm_items",qi=/[^a-zA-Z0-9_-]/g,Bi=128,Gi=".pm-cli-local-vectors",vt=1,Q=new Map;function ye(e){return(w(e.collection_name)??kt).replaceAll(qi,"_").slice(0,Bi)}function je(e){if(!ee(e)||e.length===0)throw new Error("Vector values must be a non-empty numeric array");return[...e]}function Lr(e){if(!Number.isFinite(e)||e<=0)throw new Error("Vector query limit must be a positive number");return Math.floor(e)}function Yi(e){let t=e.result;if(!Array.isArray(t))throw new TypeError("Qdrant query response must include a result array");let r=t.map((n,o)=>{let i=n.id,s=typeof i=="number"?String(i):i,a=w(s);if(!a)throw new Error(`Qdrant query response entry at index ${o} is missing a non-empty id`);let c=n.score;if(typeof c!="number"||!Number.isFinite(c))throw new TypeError(`Qdrant query response entry at index ${o} is missing a finite numeric score`);let d=n.payload;if(d!==void 0&&(typeof d!="object"||d===null||Array.isArray(d)))throw new Error(`Qdrant query response entry at index ${o} must provide payload as an object when set`);return{id:a,score:c,...d?{payload:d}:{}}});return r.sort((n,o)=>n.score!==o.score?o.score-n.score:n.id.localeCompare(o.id)),r}function Dt(e){let t=w(e.result?.status);if(t)return{status:t};let r=w(e.status);if(r)return{status:r};throw new Error("Qdrant upsert response must include status metadata")}async function _e(e,t,r,n,o){return await Ue({endpoint:e,method:t.method,headers:t.headers,body:t.body,timeoutMs:r,fetcher:n,requestLabel:`Vector ${o} request`,responseLabel:`Vector ${o} response`})}function Wi(e){let t=w(e.vector_store?.qdrant?.url);if(!t)return null;let r=w(e.vector_store?.collection_name),n=w(e.vector_store?.qdrant?.api_key);return{name:"qdrant",url:t,...r&&r!==kt?{collection_name:r}:{},...n?{api_key:n}:{}}}function Ki(e){let t=Rt(e),r=At(t);return kr(t)==="pm"&&kr(r)===".agents"?At(r):t}function Xi(e,t){return!t||ji(e)?e:Rt(Ki(t),e)}function Qi(e,t){let r=w(e.vector_store?.lancedb?.path);if(!r)return null;let n=w(e.vector_store?.collection_name);return{name:"lancedb",path:Xi(r,t),...n&&n!==kt?{collection_name:n}:{}}}function Ji(e){if(!Array.isArray(e)||e.length===0)throw new Error("Vector upsert records must include at least one entry");return e.map((t,r)=>{let n=w(t.id);if(!n)throw new Error(`Vector upsert record at index ${r} is missing a non-empty id`);let o=je(t.vector),i=t.payload;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw new Error(`Vector upsert record at index ${r} must provide payload as an object when set`);return{id:n,vector:o,...i?{payload:i}:{}}})}function Zi(e){if(!Array.isArray(e)||e.length===0)throw new Error("Vector delete ids must include at least one entry");let t=e.map((n,o)=>{let i=w(n);if(!i)throw new Error(`Vector delete id at index ${o} is missing a non-empty value`);return i}).sort((n,o)=>n.localeCompare(o)),r=[];for(let n of t)r.at(-1)!==n&&r.push(n);return r}function es(e){return e.replace(/\/points\?wait=true$/,"/points/delete?wait=true")}function ts(e){return e.replace(/\/points\?wait=true$/,"")}function He(e){return{"content-type":"application/json",...e.api_key?{"api-key":e.api_key}:{}}}function qe(e,t){return oe(e,t)}function oe(e,t){return Hi(Rt(e),Gi,`${t}.json`)}function rs(e,t,r){let n=w(e.id);if(!n)throw new Error(`LanceDB local snapshot '${r}' record at index ${t} is missing a non-empty id`);let o=je(e.vector),i=e.payload;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw new Error(`LanceDB local snapshot '${r}' record '${n}' must provide payload as an object when set`);return{id:n,vector:o,...i?{payload:i}:{}}}function ns(e,t,r){let n;try{n=JSON.parse(r)}catch(c){throw new Error(`LanceDB local snapshot at '${e}' is not valid JSON: ${b(c)}`)}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error(`LanceDB local snapshot at '${e}' must be a JSON object`);if(n.version!==vt)throw new Error(`LanceDB local snapshot at '${e}' must include version=${vt}`);let i=w(n.table);if(!i)throw new Error(`LanceDB local snapshot at '${e}' must include a non-empty table value`);if(i!==t)throw new Error(`LanceDB local snapshot at '${e}' table mismatch: expected '${t}', received '${i}'`);let s=n.records;if(!Array.isArray(s))throw new TypeError(`LanceDB local snapshot at '${e}' must include a records array`);let a=new Map;for(let c=0;c<s.length;c+=1){let d=rs(s[c],c,e);a.set(d.id,d)}return a}async function os(e){try{let t=await Ct(e);return{mtimeMs:t.mtimeMs,size:t.size}}catch(t){if(!Z(t))throw t;return null}}function is(e,t){if(!t)return null;if(t.mtimeMs===null&&t.size===null&&t.records.size===0)return t.records;let r=new Map;return Q.set(e,{records:r,mtimeMs:null,size:null}),r}function ss(e,t){return e!==void 0&&t!==null&&e.mtimeMs===t.mtimeMs&&e.size===t.size}async function Lt(e,t){let r=qe(e,t),n=oe(e,t),o=await os(n),i=Q.get(r);if(!o){let a=is(r,i);if(a)return a}if(ss(i,o))return i.records;let s=new Map;try{let a=await Ui(n,"utf8");s=ns(n,t,a)}catch(a){if(!Z(a))throw a}return Q.set(r,{records:s,mtimeMs:o?.mtimeMs??null,size:o?.size??null}),s}function as(e){let t=[...e.values()];return t.sort((r,n)=>r.id.localeCompare(n.id)),t.map(r=>({id:r.id,vector:[...r.vector],...r.payload?{payload:r.payload}:{}}))}async function Mr(e){try{await Vi(e)}catch(t){if(!Z(t))throw new Error(`LanceDB local snapshot delete failed at '${e}': ${b(t)}`)}}async function Nr(e,t,r){let n=oe(e,t);if(r.size===0){await Mr(n);return}let o=At(n);try{await zi(o,{recursive:!0})}catch(s){throw new Error(`LanceDB local snapshot directory create failed at '${o}': ${b(s)}`)}let i=`${JSON.stringify({version:vt,table:t,records:as(r)})}
10
+ `;try{await S(n,i)}catch(s){throw new Error(`LanceDB local snapshot write failed at '${n}': ${b(s)}`)}}async function cs(e,t){let r=qe(e,t),n=oe(e,t);await Mr(n),Q.delete(r)}function Dr(e){let t=0;for(let r=0;r<e.length;r+=1)t+=e[r]*e[r];return Math.sqrt(t)}function ds(e,t){let r=0;for(let i=0;i<e.length;i+=1)r+=e[i]*t[i];let n=Dr(e),o=Dr(t);return n===0||o===0?0:r/(n*o)}function Mt(e,t){let r=Wi(e),n=Qi(e,t),o=[r,n].filter(c=>c!==null),i=w(e.vector_store?.adapter),s=i?i.toLowerCase():null;return{active:(s?o.find(c=>c.name===s):void 0)??o[0]??null,available:o}}function Be(e){let t=ye(e);if(e.name==="qdrant"){let o=ae(e.url),i=encodeURIComponent(t);return{store:"qdrant",query_target:`${o}/collections/${i}/points/search`,upsert_target:`${o}/collections/${i}/points?wait=true`}}let r=encodeURIComponent(e.path),n=encodeURIComponent(t);return{store:"lancedb",query_target:`lancedb://${r}#${n}`,upsert_target:`lancedb://${r}#${n}`}}function ls(e,t,r){let n=Be(e),o=je(t),i=Lr(r);return e.name==="qdrant"?{target:n,method:"POST",headers:He(e),body:{vector:o,limit:i,with_payload:!0}}:{target:n,method:"LOCAL",headers:{},body:{table:ye(e),vector:o,limit:i}}}function us(e,t){let r=Be(e),n=Ji(t);return e.name==="qdrant"?{target:r,method:"POST",headers:He(e),body:{points:n}}:{target:r,method:"LOCAL",headers:{},body:{table:ye(e),records:n}}}function fs(e,t){let r=Be(e),n=Zi(t);return e.name==="qdrant"?{target:r,method:"POST",headers:He(e),body:{points:n}}:{target:r,method:"LOCAL",headers:{},body:{table:ye(e),ids:n}}}async function Gd(e,t,r,n={}){let o=ls(e,t,r);if(o.method==="LOCAL"){let c=e,d=o.body,l=await Lt(c.path,d.table);if(l.size===0)return[];let m=je(d.vector),h=Lr(d.limit),p=[],_=0;for(let y of l.values()){if(y.vector.length!==m.length){_++;continue}p.push({id:y.id,score:ds(m,y.vector),...y.payload?{payload:y.payload}:{}})}return _>0&&n.warnings&&n.warnings.push(`vector_dimension_mismatch:${_} records skipped (expected ${m.length} dimensions)`),p.sort((y,g)=>y.score!==g.score?g.score-y.score:y.id.localeCompare(g.id)),p.slice(0,h)}let i=W(n.timeout_ms,"Vector request"),s=K(n.fetcher,"Vector request"),a=await _e(o.target.query_target,{method:"POST",headers:o.headers,body:o.body},i,s,"query");return Yi(a)}async function Nt(e,t,r={}){let n=us(e,t);if(n.method==="LOCAL"){let a=e,c=n.body,d=qe(a.path,c.table),l=await Lt(a.path,c.table);for(let p of c.records)l.set(p.id,p);await Nr(a.path,c.table,l);let m=oe(a.path,c.table),h=await Ct(m);return Q.set(d,{records:l,mtimeMs:h.mtimeMs,size:h.size}),{status:"ok"}}let o=W(r.timeout_ms,"Vector request"),i=K(r.fetcher,"Vector request"),s=await _e(n.target.upsert_target,{method:"POST",headers:n.headers,body:n.body},o,i,"upsert");return Dt(s)}async function Ge(e,t,r={}){let n=fs(e,t);if(n.method==="LOCAL"){let a=e,c=n.body,d=qe(a.path,c.table),l=await Lt(a.path,c.table);if(l.size===0)return{status:"ok"};for(let m of c.ids)l.delete(m);if(await Nr(a.path,c.table,l),l.size===0)Q.delete(d);else{let m=oe(a.path,c.table),h=await Ct(m);Q.set(d,{records:l,mtimeMs:h.mtimeMs,size:h.size})}return{status:"ok"}}let o=W(r.timeout_ms,"Vector request"),i=K(r.fetcher,"Vector request"),s=await _e(es(n.target.upsert_target),{method:"POST",headers:n.headers,body:n.body},o,i,"delete");return Dt(s)}async function Or(e,t=[],r={},n){if(e.name==="lancedb")return await cs(e.path,ye(e)),{status:"ok"};if(n!==void 0){if(!Number.isInteger(n)||n<=0)throw new Error("Vector reset dimension must be a positive integer when provided");let i=Be(e),s=ts(i.upsert_target),a=W(r.timeout_ms,"Vector request"),c=K(r.fetcher,"Vector request"),d=He(e);try{await _e(s,{method:"DELETE",headers:d,body:{}},a,c,"delete")}catch(m){if(!b(m).includes("failed with status 404"))throw m}let l=await _e(s,{method:"PUT",headers:d,body:{vectors:{size:n,distance:"Cosine"}}},a,c,"upsert");return Dt(l)}let o=t.map(i=>i.trim()).filter(i=>i.length>0);return o.length===0?{status:"ok"}:await Ge(e,o,r)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4b3ad5fc-0f86-5f20-a23b-19d447cb0973")}catch{}})();function Ye(e,t){let r=w(e),n=w(t);return!r||!n?null:{provider:r,model:n}}function Pr(e){if(e==null)return null;if(typeof e!="object"||Array.isArray(e))throw new Error("Vectorization embedding metadata must be an object when set");let t=Ye(e.provider,e.model),r=e.vector_dimension;if(!t||typeof r!="number"||!Number.isInteger(r)||r<=0)throw new Error("Vectorization embedding metadata must include provider, model, and positive vector_dimension");return{...t,vector_dimension:r}}function Ot(e,t){if(!Number.isInteger(t)||t<=0)throw new Error("Vectorization embedding metadata requires a positive vector dimension");return{provider:e.provider,model:e.model,vector_dimension:t}}function Pt(e,t){return!e||e.provider!==t.provider||e.model!==t.model}function $t(e,t){return!!(e&&e.vector_dimension!==t)}function Ft(e,t){if(e.length===0)throw new Error(`${t} returned no vectors`);let n=e[0].length;if(!Number.isInteger(n)||n<=0)throw new Error(`${t} returned an empty vector`);for(let o=1;o<e.length;o+=1)if(e[o]?.length!==n)throw new Error(`${t} returned mixed vector dimensions`);return n}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="7939a590-3662-5c66-99aa-3835a0dbaecc")}catch{}})();var Fr="search/vectorization-status.json";function we(e){return[...new Set([...e].map(t=>t.trim()).filter(t=>t.length>0))].sort((t,r)=>t.localeCompare(r))}function zr(e){return typeof e=="string"&&e.trim().length>0&&Number.isFinite(Date.parse(e))}function Ur(e){let t=new Map;for(let[r,n]of Object.entries(e)){let o=r.trim();o.length===0||!zr(n)||t.set(o,n)}return Object.fromEntries([...t.entries()].sort((r,n)=>r[0].localeCompare(n[0])))}async function Vr(e){let t=$r.join(e,Fr),r=await T(t);if(r===null||r.trim().length===0)return{entries:{},embedding:null,warnings:[]};let n;try{n=JSON.parse(r)}catch{return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]}}if(typeof n!="object"||n===null||n.version!==1||!Array.isArray(n.items))return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]};let o=new Map;for(let s of n.items){if(typeof s!="object"||s===null)return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]};let a=s.id,c=s.updated_at;if(typeof a!="string"||a.trim().length===0||!zr(c))return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]};o.set(a.trim(),c)}let i=null;try{i=Pr(n.embedding)}catch{return{entries:{},embedding:null,warnings:["search_vectorization_status_ledger_invalid"]}}return{entries:Object.fromEntries([...o.entries()].sort((s,a)=>s[0].localeCompare(a[0]))),embedding:i,warnings:[]}}async function jr(e,t,r){let n=Ur(t),o=$r.join(e,Fr),i=`${JSON.stringify({version:1,generated_at:v(),...r?{embedding:r}:{},items:Object.entries(n).map(([s,a])=>({id:s,updated_at:a}))},null,2)}
11
+ `;await S(o,i)}function ms(e){return{id:e.id,type:e.type,status:e.status,priority:e.priority,updated_at:e.updated_at}}function ps(e){let t=Ye(e.name,e.model);if(!t)throw new Error("Embedding provider must include a provider name and model");return t}function ge(e,t){return{refreshed:[],skipped:e,warnings:[t]}}async function hs(e,t,r){if(!r.settings&&!await P(rt(e)))return ge(t,"search_semantic_refresh_skipped:settings_not_initialized");let n;try{if(r.settings)n=r.settings;else{let a=await Ce(e),c=a.warnings.find(d=>d.startsWith("settings_read_"));if(c)return ge(t,`search_semantic_refresh_skipped:settings_read_failed:${c}`);n=a.settings}}catch(a){return ge(t,`search_semantic_refresh_skipped:settings_read_failed:${b(a)}`)}let o=r.apply_runtime_defaults?ze(n).settings:n,i=Et(o).active;if(!i)return ge(t,"search_semantic_refresh_skipped:provider_unconfigured");let s=Mt(o,e).active;return s?{settings:o,provider:i,vectorStore:s}:ge(t,"search_semantic_refresh_skipped:vector_store_unconfigured")}async function _s(e,t,r,n,o,i){let s=[],a=new Set,c=new Set,d=[];for(let l of n){let m=await B(e,l,t,r,o);if(!m){c.add(l);continue}try{let h=await G(m,{schema:i});d.push({id:h.document.metadata.id,document:h.document})}catch(h){a.add(m.id),s.push(`search_semantic_refresh_item_read_failed:${m.id}:${b(h)}`)}}return d.sort((l,m)=>l.id.localeCompare(m.id)),{documents:d,missingIds:we(c),skippedIds:we(a),warnings:s}}async function ys(e,t,r){let n=ne(t.name,e.search.embedding_corpus_max_characters).maxCharacters,o=bt(e),i=r.map(a=>Tt(a.document,{providerName:t.name,maxCharacters:n,fields:o})),s=await xt(t,e,i);return{vectors:s.vectors,vector_dimension:Ft(s.vectors,"Semantic refresh embedding"),warnings:s.warnings}}async function gs(e,t,r){return await Nt(e,t.map((n,o)=>({id:n.id,vector:r[o],payload:ms(n.document.metadata)}))),{refreshed:t.map(n=>n.id),skipped:[],warnings:[]}}async function ws(e,t){if(t.length===0)return{refreshed:[],skipped:[],warnings:[]};try{return await Ge(e,t),{refreshed:[],skipped:[],warnings:[]}}catch(r){return{refreshed:[],skipped:t,warnings:[`search_semantic_refresh_delete_failed:${b(r)}`]}}}async function ml(e,t,r={}){let n=we(t);if(n.length===0)return{refreshed:[],skipped:[],warnings:[]};let o=await hs(e,n,r);if(!("settings"in o))return o;let i=F(o.settings,ce()),s=await _s(e,o.settings.id_prefix,o.settings.item_format,n,i.type_to_folder,o.settings.schema),a=s.documents.length>0||s.missingIds.length>0?await Vr(e):{entries:{},embedding:null,warnings:[]},c=ps(o.provider),d=a.entries,l={refreshed:[],skipped:[],warnings:[]},m=a.embedding;if(s.documents.length>0)if(a.embedding&&Pt(a.embedding,c))l={refreshed:[],skipped:s.documents.map(g=>g.id),warnings:["search_semantic_refresh_requires_reindex:embedding_identity_changed"]};else try{let g=await ys(o.settings,o.provider,s.documents);if($t(a.embedding,g.vector_dimension))l={refreshed:[],skipped:s.documents.map(E=>E.id),warnings:[...g.warnings,"search_semantic_refresh_requires_reindex:vector_dimension_changed"]};else{m=Ot(c,g.vector_dimension);let E=await gs(o.vectorStore,s.documents,g.vectors);l={refreshed:E.refreshed,skipped:E.skipped,warnings:[...g.warnings,...E.warnings]}}}catch(g){l={refreshed:[],skipped:s.documents.map(E=>E.id),warnings:[`search_semantic_refresh_failed:${b(g)}`]}}let h=await ws(o.vectorStore,s.missingIds),p=new Set(l.refreshed),_=Object.fromEntries(s.documents.filter(g=>p.has(g.id)).map(g=>[g.id,g.document.metadata.updated_at])),y=[];if(Object.keys(_).length>0||s.missingIds.length>0){let g={...d,...Ur(_)};for(let E of s.missingIds)delete g[E];try{await jr(e,g,m)}catch(E){y.push(`search_vectorization_status_ledger_write_failed:${b(E)}`)}y.push(...a.warnings)}return{refreshed:we([...l.refreshed,...h.refreshed]),skipped:we([...s.skippedIds,...l.skipped,...h.skipped]),warnings:[...s.warnings,...l.warnings,...h.warnings,...y]}}import{createRequire as bs}from"node:module";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8eb48648-6e55-5710-990e-6471c7cdcde0")}catch{}})();var Ss=/(?:token|secret|password|passwd|api[_-]?key|apikey|authorization|cookie|credentials|bearer|dsn)/i,yl=new RegExp(`\\b(${Ss.source})\\s*[:=]\\s*([^\\s,;]+)`,"giu");var gl=bs(import.meta.url);(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]="e896db69-ed90-53f1-a227-e3d061b3bc8d")}catch{}})();var bl=new Map([[u.USAGE,"invalid_command_usage"],[u.NOT_FOUND,"item_not_found"],[u.CONFLICT,"lock_conflict"],[u.DEPENDENCY_FAILED,"dependency_failed"]]);(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]="5e6ba316-b067-51df-abeb-c3e3488a504d")}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]="c43dd9f2-78ac-5c22-970a-0016a06b87b3")}catch{}})();var Rl=Object.freeze({"&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&amp;":"&"});(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]="0ce743d1-917a-5c96-b038-c95e3922bc48")}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]="868dfae8-2575-5d5f-8425-c7e68aefdc84")}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]="4ecab833-db06-5baa-bfe6-d28b4c97f85a")}catch{}})();function Is(e,t){if(e==null)return[];let r=t?.separators??/,/,o=e.split(r).map(a=>a.trim()).filter(a=>a.length>0),s=t?.unique!==!1?Array.from(new Set(o)):o;return t?.sort===!0?[...s].sort():s}import qr from"node:fs/promises";import We from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4baf0ef3-2412-51cf-9ade-18b5c6e610d1")}catch{}})();function xs(e){return"json_markdown"}function Br(e,t){return We.relative(e,t).replaceAll("\\","/")}function As(e){return String(e).replaceAll(/[^a-zA-Z0-9._-]+/g,"_").slice(0,120)}async function vs(e,t,r="item_format:migrate",n=et,o){if(t!=="toon")throw new Error("Only toon item-format migration targets are supported. Markdown item files are legacy read-only input.");let i=new Set,s=new Set,a=[],c=0,d=xs(t),l=Object.entries(n);for(let[m,h]of l){let p=We.join(e,h),_=[];try{_=await qr.readdir(p)}catch{continue}let y=new Map;for(let E of _){let x=We.join(p,E),I=Kt(x);if(!I)continue;let A=We.extname(E),V=E.slice(0,E.length-A.length).trim();if(V.length===0)continue;let O=y.get(V)??{};O[I]=x,y.set(V,O)}let g=[...y.keys()].sort((E,x)=>E.localeCompare(x));for(let E of g){let x=y.get(E);c+=1;let I=x[d];if(!I)continue;let A=x[t]??I,V=A===x[t]?t:d;try{let O=await qr.readFile(A,"utf8"),Je=it(O,{format:V,schema:o,onWarning:j=>a.push(`item_format_migration_parse_warning:${E}:${j}`)}),J=se(e,m,E,t,n),Ee=le(Je,{format:t,schema:o});await T(J)!==Ee&&(await S(J,Ee),a.push(...await q({path:J,scope:"project",op:r})),i.add(E)),await be(I),s.add(Br(e,I)),a.push(...await q({path:I,scope:"project",op:`${r}:remove`})),i.add(E)}catch(O){a.push(`item_format_migration_skipped:${Br(e,A)}:${As(O)}`)}}}return{target_format:t,scanned:c,migrated:[...i].sort((m,h)=>m.localeCompare(h)),removed:[...s].sort((m,h)=>m.localeCompare(h)),warnings: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]="f280c1df-b134-57c3-91f6-cbf5a37e6e31")}catch{}})();var Cs=new Set(["completed","superseded"]);function Rs(e){return e!==void 0&&Cs.has(e)}function ks(e){if(e.type.trim().toLowerCase()!=="plan")return!1;let t=e.plan_steps??[];return t.length>0&&t.every(r=>r.status==="completed")}import ql from"node:readline/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6783b122-a1a8-5f86-9ac5-2c3e811622ed")}catch{}})();import Vt from"node:crypto";import{mkdirSync as Zl,rmSync as Ms,statSync as eu}from"node:fs";import{mkdir as zt,readdir as Ns,rm as jt,stat as Jr}from"node:fs/promises";import{request as Os}from"node:http";import{request as Ps}from"node:https";import k 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]="26ea62d9-874d-5826-9822-83c5523b673b")}catch{}})();var $s=k.join("runtime","telemetry","events.jsonl"),Fs=k.join("runtime","telemetry","state.json"),zs=k.join("runtime","telemetry","otel-spans.jsonl"),Us=8,Gr=500,Vs=1;var js=100,Hs=36e5,qs=3e4,Yr=2e4,Bs=1e3,Gs=25e3,Ys=864e5,Zr=65536;var en=15;var tn=[25,50,100,200],Ws=3600*1e3,Ks=6e4;var Xs="PM_TELEMETRY_DISABLED",Qs="PM_NO_TELEMETRY",Wr=new Set(["1","true","yes","on"]);var Js="PM_TELEMETRY_HTTP_TIMEOUT_MS",Zs=globalThis.fetch,ea=["user","automation","test","dogfood"],mu=Promise.resolve(),Kr=Promise.resolve();var pu=new Set(ea);var hu=Vt.randomUUID();var rn="(?:token|secret|password|passwd|api[_-]?key|apikey|authorization|cookie|session|credentials|bearer|literals?|regex(?:es)?|replacements?)",ta=new RegExp(`\\b(${rn})\\s*([:=])\\s*([^\\s,;]+)`,"giu"),ra=new RegExp(`(--${rn})(=|\\s+)([^\\s,;]+)`,"giu"),na=/(^|[\s"'`(=])\/(?:[^\s"'`),;]+)/g,oa=/bearer\s+[a-z0-9._=-]+/giu,ia=/\b(?:10\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|172\.(?:1[6-9]|2\d|3[01])\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)|192\.168\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.(?:25[0-5]|2[0-4]\d|[01]?\d?\d))\b/g;function Xe(e){return k.join(e,$s)}function Ht(e){return k.join(e,zs)}function sa(e){return k.dirname(Xe(e))}function nn(e){return k.join(e,Fs)}function on(e){return k.join(e,"runtime","telemetry","flush.lock")}function aa(e){return k.join(e,"runtime","telemetry","flush.spawn.lock")}async function ca(e){let t=await T(nn(e));if(!t||t.trim().length===0)return{};try{let r=JSON.parse(t);return typeof r!="object"||r===null||Array.isArray(r)?{}:r}catch{return{}}}async function N(e,t){try{let n={...await ca(e),...t},o=Object.fromEntries(Object.entries(n).filter(([,i])=>i!==void 0).sort((i,s)=>i[0].localeCompare(s[0])));await S(nn(e),`${JSON.stringify(o,null,2)}
12
12
  `)}catch{}}function sn(e){return e.replaceAll(ta,(r,n,o)=>`${n}${o}[redacted]`).replaceAll(ra,(r,n,o)=>`${n}${o}[redacted]`)}function an(e){return e.replaceAll(na,(t,r)=>`${r}[redacted_path]`)}function cn(e){let t=e>=65&&e<=90,r=e>=97&&e<=122,n=e>=48&&e<=57;return t||r||n}function dn(e){if(!e)return!1;let t=e.charCodeAt(0);return cn(t)?!0:e==="."||e==="_"||e==="%"||e==="+"||e==="-"}function ln(e){if(!e)return!1;let t=e.charCodeAt(0);return cn(t)?!0:e==="."||e==="-"}function da(e){let t=e.indexOf("@");if(t<=0||t!==e.lastIndexOf("@")||t===e.length-1)return!1;let r=e.slice(0,t),n=e.slice(t+1),o=n.lastIndexOf(".");if(o<=0||o===n.length-1||n.length-(o+1)<2)return!1;for(let i of r)if(!dn(i))return!1;for(let i of n)if(!ln(i))return!1;return!0}function la(e){let t="",r=0;for(;r<e.length;){let n=e.indexOf("@",r);if(n<0){t+=e.slice(r);break}let o=n-1;for(;o>=r&&dn(e[o]);)o-=1;o+=1;let i=n+1;for(;i<e.length&&ln(e[i]);)i+=1;let s=e.slice(o,i);if(da(s)){t+=e.slice(r,o),t+="[redacted_email]",r=i;continue}t+=e.slice(r,n+1),r=n+1}return t}function un(e){return la(e).replaceAll(oa,"bearer [redacted_token]").replaceAll(ia,"[redacted_ip]")}function ua(e){let t=un(e),r=sn(t),n=an(r),o=n.trim();return o.startsWith("/")&&o.length>1?"[redacted_path]":n.length>512?`${n.slice(0,509)}...`:n}function fa(e){let t=un(e),r=sn(t),n=an(r),o=n.trim();return o.startsWith("/")&&o.length>1?"[redacted_path]":n.length>2048?`${n.slice(0,2045)}...`:n}function Ut(e,t="redacted"){return t==="max"?fa(e):ua(e)}function Xr(){let e=process.env[Js]?.trim();if(!e)return Yr;let t=Number(e);return Number.isFinite(t)?Math.min(Gs,Math.max(Bs,Math.trunc(t))):Yr}async function fn(e,t,r){let n=new URL(e);if(globalThis.fetch!==Zs){let i=new AbortController,s,a=new Promise((c,d)=>{s=setTimeout(()=>{i.abort(),d(new Error("telemetry_http_timeout"))},Xr())});try{return(await Promise.race([globalThis.fetch(e,{method:"POST",headers:t,body:r,signal:i.signal}),a])).status}finally{clearTimeout(s)}}let o=n.protocol==="https:"?Ps:n.protocol==="http:"?Os:void 0;if(!o)throw new Error(`telemetry_http_protocol_unsupported_${n.protocol}`);return new Promise((i,s)=>{let a=Xr(),c={method:"POST",headers:{...t,"content-length":Buffer.byteLength(r)},signal:AbortSignal.timeout(a),autoSelectFamilyAttemptTimeout:Math.min(5e3,a)},d=o(n,c,l=>{l.once("error",s),l.once("end",()=>i(l.statusCode)),l.resume()});d.once("error",s),d.end(r)})}function ma(){return Wr.has((process.env[Xs]??"").trim().toLowerCase())||Wr.has((process.env[Qs]??"").trim().toLowerCase())}async function pa(e){let t=await C(e),r=!1;return t.telemetry.installation_id.trim().length===0&&(t.telemetry.installation_id=Vt.randomUUID(),r=!0),r&&await Re(e,t,"telemetry:install_id"),{installationId:t.telemetry.installation_id,endpoint:t.telemetry.endpoint,retentionDays:Math.max(1,Math.trunc(t.telemetry.retention_days))}}function mn(e){let t=[];for(let r of e.split(`
13
13
  `)){let n=r.trim();if(n.length!==0)try{let o=JSON.parse(n);o&&typeof o=="object"&&o.event&&typeof o.event=="object"&&typeof o.attempts=="number"&&(o.client_schema_version===void 0||typeof o.client_schema_version=="number"&&Number.isFinite(o.client_schema_version))&&t.push(o)}catch{}}return t}function pn(e){let t=Math.min(qs*2**Math.max(e-1,0),Hs);return new Date(Date.now()+t).toISOString()}function hn(e){if(typeof e!="string"||e.trim().length===0)return!0;let t=Date.parse(e);return Number.isNaN(t)?!0:t<=Date.now()}function ha(e){return hn(e.next_attempt_after)}function _n(e){let t=Number.isFinite(e)?Math.max(1,Math.trunc(e)):1;return Date.now()-t*Ys}function _a(e,t){let r=e.event?.occurred_at;if(typeof r!="string"||r.trim().length===0)return!1;let n=Date.parse(r);return Number.isNaN(n)?!1:n<t}function qt(e,t){let r=_n(t),n=[],o=0;for(let i of e){if(JSON.stringify(i).length>Zr||_a(i,r)||i.attempts>=en){o+=1;continue}n.push(i)}return{entries:n,prunedCount:o}}async function Ke(e,t){let r=t.map(o=>JSON.stringify(o)).join(`
14
14
  `),n=r.length>0?`${r}
15
15
  `:"";for(let o=0;;o+=1)try{await S(Xe(e),n);return}catch(i){let s=tn[o];if(s===void 0||!yn(i))throw i;await gn(s)}}function yn(e){if(typeof e!="object"||e===null||!("code"in e))return!1;let t=e.code;return t==="EACCES"||t==="EBUSY"||t==="EPERM"}function gn(e){return new Promise(t=>{setTimeout(t,e)})}function ya(e){let t=JSON.stringify([e.endpoint,e.enqueued_at,e.payload]);return Vt.createHash("sha256").update(t).digest("hex").slice(0,32)}function wn(e){let t=[];for(let r of e.split(`
16
16
  `)){let n=r.trim();if(n.length!==0)try{let o=JSON.parse(n);o&&typeof o=="object"&&typeof o.endpoint=="string"&&o.endpoint.trim().length>0&&"payload"in o&&typeof o.attempts=="number"&&Number.isFinite(o.attempts)&&((typeof o.id!="string"||o.id.length===0)&&(o.id=ya(o)),t.push(o))}catch{}}return t}function ga(e,t){if(typeof e.enqueued_at!="string"||e.enqueued_at.trim().length===0)return!1;let r=Date.parse(e.enqueued_at);return Number.isNaN(r)?!1:r<t}function En(e,t){let r=_n(t),n=[],o=0;for(let i of e){if(JSON.stringify(i).length>Zr||ga(i,r)||i.attempts>=en){o+=1;continue}n.push(i)}if(n.length>Gr){let i=n.length-Gr;return o+=i,{entries:n.slice(i),prunedCount:o}}return{entries:n,prunedCount:o}}async function wa(e,t){let r=t.map(o=>JSON.stringify(o)).join(`
17
17
  `),n=r.length>0?`${r}
18
- `:"";for(let o=0;;o+=1)try{await S(Ht(e),n);return}catch(i){let s=tn[o];if(s===void 0||!yn(i))throw i;await gn(s)}}async function Qr(e,t,r,n){return Bt(async()=>{let o=await T(Ht(e)),i=o===null?[]:wn(o),s=[];for(let c of i){if(r.has(c.id))continue;let d=n.get(c.id);s.push(d?{...c,attempts:d.attempts,next_attempt_after:d.next_attempt_after}:c)}let{entries:a}=En(s,t);return await wa(e,a),a.length})}async function Ea(e,t){let r=await T(Ht(e));if(r===null||r.trim().length===0){await N(e,{pending_otel_spans:0});return}let n=wn(r),{entries:o,prunedCount:i}=En(n,t),s=o.filter(_=>hn(_.next_attempt_after)).slice(0,Us);if(s.length===0){let _=i>0?await Qr(e,t,new Set,new Map):o.length;await N(e,{pending_otel_spans:_});return}let a=v(),c=new Set,d=new Map,l=0,m;await Promise.all(s.map(async _=>{try{let y=await fn(_.endpoint,{"content-type":"application/json"},JSON.stringify(_.payload));if(y<200||y>=300)throw new Error(`local_otel_export_http_${y}`);c.add(_.id),l+=1}catch(y){m=y instanceof Error?Ut(y.message,"redacted"):"local_otel_export_failed";let g=_.attempts+1;d.set(_.id,{attempts:g,next_attempt_after:pn(g)})}}));let h=await Qr(e,t,c,d),p={pending_otel_spans:h,last_otel_attempt_at:a};l>0&&(p.last_otel_success_at=a),m!==void 0?(p.last_otel_failure_at=a,p.last_otel_failure_error=m):h===0&&(p.last_otel_failure_at=void 0,p.last_otel_failure_error=void 0),await N(e,p)}async function ba(e,t,r){try{await xa(e,t,r)}catch{}try{await Ea(e,r)}catch{}}async function Sa(e,t=Ws){try{let r=sa(e),n=await Ns(r,{withFileTypes:!0}),o=Date.now()-Math.max(0,t);await Promise.all(n.filter(i=>i.isFile()&&/^\.events\.jsonl\.\d+\.\d+\.[a-f0-9]+\.tmp$/.test(i.name)).map(async i=>{let s=k.join(r,i.name);(await Jr(s)).mtimeMs<o&&await jt(s,{force:!0})}))}catch{}}async function Bt(e){let t=Kr.catch(()=>{}).then(e);return Kr=t.catch(()=>{}),t}async function Gt(e){let t=await T(Xe(e));return t===null||t.trim().length===0?[]:mn(t)}async function Ta(e,t,r){return Bt(async()=>{let n=await Gt(e),{entries:o}=qt(n,r),i=o.filter(s=>!t.has(s.event.event_id));return await Ke(e,i),i})}async function Ia(e,t,r,n){return Bt(async()=>{let o=await Gt(e),{entries:i}=qt(o,n),s=i.map(a=>{if(!t.has(a.event.event_id))return a;let c=a.attempts+1;return{...a,attempts:c,last_attempt_at:r,next_attempt_after:pn(c)}});return await Ke(e,s),s})}async function xa(e,t,r){await Sa(e);let n=t.trim();if(n.length===0)return;let o=await T(Xe(e));if(o===null||o.trim().length===0){await N(e,{endpoint:n,queue_entries:0});return}let i=mn(o);if(i.length===0){await N(e,{endpoint:n,queue_entries:0});return}let{entries:s,prunedCount:a}=qt(i,r);if(s.length===0){await Ke(e,[]),await N(e,{endpoint:n,queue_entries:0});return}let c=s.filter(p=>ha(p)).slice(0,js);if(c.length===0){a>0&&await Ke(e,s),await N(e,{endpoint:n,queue_entries:s.length});return}let d=new Set(c.map(p=>p.event.event_id)),l=v(),m={"content-type":"application/json"},h=process.env.PM_TELEMETRY_INGEST_KEY?.trim();h&&(m["x-pm-telemetry-key"]=h);try{let p=await fn(n,m,JSON.stringify({schema_version:Vs,events:c.map(_=>_.event)}));if(p<200||p>=300)throw new Error(`telemetry_flush_http_${p}`)}catch(p){let _=await Ia(e,d,l,r),y=p instanceof Error?Ut(p.message,"redacted"):"telemetry_flush_failed";await N(e,{endpoint:n,queue_entries:_.length,last_attempted_flush_at:l,last_failed_flush_at:l,last_failed_flush_error:y});return}try{let p=await Ta(e,d,r);await N(e,{endpoint:n,queue_entries:p.length,last_attempted_flush_at:l,last_successful_flush_at:l,last_failed_flush_at:void 0,last_failed_flush_error:void 0})}catch(p){let _=p instanceof Error?Ut(p.message,"redacted"):"telemetry_flush_failed",y=await Gt(e).catch(()=>s);await N(e,{endpoint:n,queue_entries:y.length,last_attempted_flush_at:l,last_failed_flush_at:l,last_failed_flush_error:_})}}async function Aa(e){let t=on(e);await zt(k.dirname(t),{recursive:!0});try{return await zt(t),!0}catch(r){if(typeof r!="object"||r===null||!("code"in r)||r.code!=="EEXIST")throw r}try{let r=await Jr(t);return Date.now()-r.mtimeMs<Ks?!1:(await jt(t,{recursive:!0,force:!0}),await zt(t),!0)}catch{return!1}}function va(e){try{Ms(e,{recursive:!0,force:!0})}catch{}}function Ca(e){va(aa(e))}async function Ra(e,t,r){let n=await Aa(e);if(Ca(e),!!n)try{await ba(e,t,r)}finally{try{await jt(on(e),{recursive:!0,force:!0})}catch{}}}async function _u(e=tt(process.cwd())){if(!ma())try{if(!(await C(e)).telemetry.enabled)return;let{endpoint:r,retentionDays:n}=await pa(e);await Ra(e,r,n)}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]="be6f7869-f197-5d38-b8d9-faf8f390cd56")}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]="13c02696-29a7-598e-888a-3502fd88bfbe")}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]="33a43890-abcf-58fc-bf9d-bf2619d4cf35")}catch{}})();var ka=3,bn=20,Da=.8,La=100,Sn=1e3,Tn=1e6;function Dh(e){return e===void 0?[]:[`likely_duplicates:${e.result.items.map(t=>t.id).join(",")}`,`likely_duplicate_recovery:${e.recovery.action}:${e.recovery.item_id}`]}async function Ma(e,t){let r=e.items[0],n=H(t.cwd??process.cwd(),t.pmRoot),o=Te((await C(n)).schema);return ot(r.status,o)?{action:"reopen",item_id:r.id,command:`pm item reopen ${r.id} "<recurrence reason>"`,args:["item","reopen",r.id,"<recurrence reason>"]}:{action:"reuse",item_id:r.id,command:`pm get ${r.id} --full`,args:["get",r.id,"--full"]}}function In(e){let t=e.limit??ka,r=e.threshold??Da;if(!Number.isSafeInteger(t)||t<0||t>bn)throw new f(`Similarity limit must be an integer from 0 to ${bn}.`,u.USAGE);if(!Number.isFinite(r)||r<0||r>1)throw new f("Similarity threshold must be a number from 0 to 1.",u.USAGE);return{limit:t,threshold:r}}function Na(e){let t=e.limit??La;if(!Number.isSafeInteger(t)||t<0||t>Sn)throw new f(`Duplicate cluster limit must be an integer from 0 to ${Sn}.`,u.USAGE);let r=e.since===void 0?void 0:new Date(e.since);if(r&&Number.isNaN(r.getTime()))throw new f("Duplicate cluster --since must be a valid ISO timestamp.",u.USAGE);return{limit:t,since:r}}async function Oa(e,t){let r=H(e.cwd??process.cwd(),e.pmRoot),n=await C(r),o=F(n),i=e.statuses?.map(m=>m.trim().toLowerCase()).filter(Boolean);if(e.statuses!==void 0&&i?.length===0)throw new f("Duplicate cluster statuses must include at least one lifecycle status or all.",u.USAGE);let s=Te(n.schema),a=i?.map(m=>{if(m==="all")return m;let h=de(m,s);if(!h)throw new f(`Unknown duplicate-cluster status "${m}". Allowed: all, ${s.definitions.map(p=>p.id).join(", ")}.`,u.USAGE);return h}),c=a?.includes("all")===!0;if(c&&a?.some(m=>m!=="all"))throw new f('The "all" status cannot be combined with other statuses.',u.USAGE);let d=c?void 0:a,l=d?new Set(d):void 0;return{items:(await ke(r,n.item_format,o.type_to_folder,void 0,n.schema)).filter(m=>(!l||l.has(m.status))&&(!t||new Date(m.created_at).getTime()>=t.getTime())).sort((m,h)=>m.id.localeCompare(h.id)).map(m=>({item:m,prepared:pe(m.title)})),statuses:d}}function xn(e,t=Tn){let r=new Set,n=[new Map,new Map,new Map];for(let[o,i]of e.entries()){let s=[[i.prepared.normalized],i.prepared.issueCodes,i.prepared.tokens];for(let[a,c]of s.entries())for(let d of c){let l=n[a].get(d)??[];for(let m of l)r.add(`${m}:${o}`);if(r.size>t)throw new f(`Duplicate sweep exceeded ${Tn} candidate pairs; narrow it with statuses or since.`,u.CONFLICT,{code:"duplicate_sweep_cost_limit",required:"Narrow the batch duplicate query until its deterministic candidate set fits the disclosed safety bound."});l.push(o),n[a].set(d,l)}}return r}var Lh={buildDuplicateClusters:vn,collectDuplicateCandidatePairs:xn,createDuplicateUnionFind:An};function An(e){let t=Array.from({length:e},(n,o)=>o);return{parent:t,findRoot:n=>{let o=n;for(;t[o]!==o;)o=t[o];for(;t[n]!==n;){let i=t[n];t[n]=o,n=i}return o}}}function Pa(e,t,r,n){let o=[];for(let i of t){let[s,a]=i.split(":").map(m=>Number.parseInt(m,10)),c=Me(e[s].prepared,e[a].prepared);if(c.score<r)continue;let d=n.findRoot(s),l=n.findRoot(a);d!==l&&(n.parent[l]=d),o.push({left_id:e[s].item.id,right_id:e[a].item.id,...c})}return o}function vn(e,t,r,n){let o=new Map;for(let i of e.keys()){let s=r.findRoot(i),a=o.get(s)??[];a.push(i),o.set(s,a)}return[...o.values()].filter(i=>i.length>1).map(i=>{let s=new Set(i.map(c=>e[c].item.id)),a=t.filter(c=>s.has(c.left_id)&&s.has(c.right_id)).sort((c,d)=>d.score-c.score||c.left_id.localeCompare(d.left_id)||c.right_id.localeCompare(d.right_id));return{id:e[i[0]].item.id,items:i.map(c=>{let d=e[c].item;return{id:d.id,title:d.title,status:d.status,type:d.type}}),matches:a,max_score:a[0]?.score??0}}).sort((i,s)=>s.max_score-i.max_score||i.id.localeCompare(s.id)).slice(0,n)}function $a(e,t,r,n,o){return t.filter(i=>!r.has(i.id)).map(i=>({id:i.id,title:i.title,status:i.status,type:i.type,...Le(e,i.title)})).filter(i=>i.score>=n).sort((i,s)=>s.score-i.score||i.id.localeCompare(s.id)).slice(0,o)}async function Fa(e,t={}){let r=e.title.trim();if(r.length===0)throw new f("Similarity candidate title must not be empty.",u.USAGE);let{limit:n,threshold:o}=In(t),i=H(t.cwd??process.cwd(),t.pmRoot),s=await C(i),a=F(s),c=await ft(i,Object.values(a.type_to_folder)),d=he(r),l=c&&d.length>0?await lt({pmRoot:i,expectedSourceCursor:c.source_cursor,query:d.map(p=>`"${p.replaceAll('"','""')}"`).join(" OR "),limit:Math.max(n*10,50)}):null,m=l===null?await ke(i,s.item_format,a.type_to_folder,void 0,s.schema):l.items,h=$a(r,m,new Set(e.excludeIds??[]),o,n);return{items:h,count:h.length,threshold:o,source:l?"persistent_index":"metadata_fallback"}}async function Mh(e={}){let{threshold:t}=In({...e,limit:void 0}),{limit:r,since:n}=Na(e),{items:o,statuses:i}=await Oa(e,n),s=xn(o),a=An(o.length),c=Pa(o,s,t,a),d=vn(o,c,a,r);return{clusters:d,count:d.length,threshold:t,source:"metadata_scan",filters:{statuses:i??null,since:e.since??null},cost:{item_count:o.length,candidate_pairs:s.size,scored_pairs:s.size}}}async function Nh(e,t){if(t.mode==="off")return;let r=await Fa(e,t);if(r.count===0)return;let n=await Ma(r,t),o=t.mode==="strict"&&t.allowDuplicate===!0;if(t.mode==="strict"&&!o){let i=r.items.map(a=>`${a.id} (${a.status}): ${a.title}`).join("; "),s=n.action==="reopen"?"Reopen the canonical item":"Reuse the canonical item";throw new f(`Likely duplicate item(s) found: ${i}. ${s} or pass --allow-duplicate with explicit intent.`,u.CONFLICT,{code:"likely_duplicate",required:`${s}, or explicitly acknowledge the duplicate with --allow-duplicate.`,recovery:{suggested_flags:["--allow-duplicate"],suggested_retry:n.command,suggested_retry_args:n.args}})}return{mode:t.mode,bypassed:o,result:r,recovery:n}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="47c087c2-124a-58b7-a5c9-09403235f4a2")}catch{}})();function za(e,t){let r=-1;return e.forEach((n,o)=>{let i=Date.parse(n.ts);if(!Number.isFinite(i))throw new f(`History for this item contains invalid timestamp at entry ${o+1}.`,u.GENERIC_FAILURE);i<=t&&(r=o)}),r}function Ua(e){let t=e[0]?.ts??null,r=e.at(-1)?.ts??null,n={code:"history_target_out_of_range",required:"Choose a target within the available item history.",why:"Point-in-time reads and restores can only reconstruct recorded versions.",examples:[],nextSteps:["Run pm history <id> to inspect available versions and timestamps."],valid_range:{first_version:null,last_version:null,first_timestamp:t,last_timestamp:r}};return r!==null&&(n.examples=["1",String(e.length),r],n.valid_range.first_version=1,n.valid_range.last_version=e.length),{guidance:n,lastTimestamp:r}}function Va(e,t){let r={};if(t instanceof Error&&t.message.trim().length>0&&(r.reason=t.message.trim()),typeof t!="object"||t===null)return r;let n=t;if(typeof n.index=="number"&&Number.isInteger(n.index)&&n.index>=0&&(r.patchIndex=n.index),typeof n.operation=="object"&&n.operation!==null){let o=n.operation;Object.assign(r,Object.fromEntries(["op","path","from"].flatMap(i=>{let s=o[i];return typeof s=="string"?[[i,s]]:[]})))}if(r.patchIndex!==void 0){let o=e[r.patchIndex];o&&(r.op??=o.op,r.path??=o.path,r.from??=o.from)}return r}function Uh(e,t,r={}){let n=e.trim(),o=r.errorSubject??"history",i=o==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=Ua(t);if(!n)throw new f(`Missing ${o} target. Use a timestamp or version number.`,u.USAGE,s);if(/^\d+$/.test(n)){let l=Number(n);if(!Number.isSafeInteger(l)||l<1||l>t.length)throw new f(`${i} version must be between 1 and ${t.length} for this item.`,u.USAGE,s);return{kind:"version",raw:n,historyIndex:l-1}}let c=Date.parse(n);if(!Number.isFinite(c))throw new f(`Invalid ${o} target "${e}". Use a positive version number or ISO timestamp.`,u.USAGE,s);let d=za(t,c);if(d<0||r.allowFutureTimestamp!==!0&&c>Date.parse(a))throw new f(o==="restore"?`No history entries exist at or before timestamp ${n}.`:`No history entry exists at timestamp ${n}.`,u.USAGE,s);return{kind:"timestamp",raw:n,historyIndex:d}}function Qe(e,t,r,n){let o=ve(e,t);if(o.ok)return o.document;let i=Va(t,o.error),s=[`history_op=${n}`,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 f(`Failed to apply history patch at entry ${r} (${s.join(", ")}). ${i.reason??String(o.error)}`,u.GENERIC_FAILURE)}function Vh(e,t){let r=structuredClone(fe);for(let n=0;n<=t;n+=1){let o=e[n];if(!o)throw new f(`History target entry ${n+1} does not exist.`,u.USAGE);if(z(r)!==o.before_hash)throw new f(`History hash mismatch before replay at entry ${n+1}.`,u.GENERIC_FAILURE);if(r=Qe(r,o.patch,n+1,o.op),z(r)!==o.after_hash)throw new f(`History hash mismatch after replay at entry ${n+1}.`,u.GENERIC_FAILURE)}return r}function jh(e,t){if(Object.keys(e.metadata).length>0)return e;throw new f(`History target ${t.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,u.USAGE)}import Yt from"node:fs/promises";import ja from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a2ec9f1a-aae2-59d5-8c9a-7acd8bf5a7a2")}catch{}})();function Ha(e){if(!e.itemDocument)return[];let t=e.itemDocument.metadata?.assignee?.trim();if(!t||t===e.author||e.force)return[];let r=tr(e.settings);if(r.ownership_enforcement==="strict")throw new f(`Item ${e.subjectId} is assigned to ${t}. Use --force to override.`,u.CONFLICT);return r.ownership_enforcement==="warn"?[`ownership_warning:assignee_conflict:${e.subjectId}:${t}`]:[]}async function qa(e){let t=await T(e.subject.historyPath);if(t!==e.historyRawBeforeLock)throw new f(`History for ${e.subject.id} changed while waiting for lock; retry ${e.operation}.`,u.CONFLICT);let r=await B(e.pmRoot,e.subject.id,e.settings.id_prefix,e.settings.item_format,e.typeRegistry.type_to_folder),n=r?await G(r,{schema:e.settings.schema}):null;if((n?.raw??null)!==(e.currentItemRawBeforeLock??null))throw new f(`Item ${e.subject.id} changed while waiting for lock; retry ${e.operation}.`,u.CONFLICT);return{historyRawUnderLock:t,locatedUnderLock:r,loadedItemUnderLock:n}}async function Jh(e){let t=e.writeHistoryRaw??S;try{await t(e.historyPath,e.nextHistoryRaw),await ee(e.historyPath)}catch(r){try{e.historyRawUnderLock===null?await ja.rm(e.historyPath,{force:!0}):await t(e.historyPath,e.historyRawUnderLock),await ee(e.historyPath)}catch(n){throw new AggregateError([r,n],`History rewrite failed and rollback also failed: ${String(r)}`)}throw r}}async function Cn(e){let t=[...Ha({itemDocument:e.itemDocument,subjectId:e.subject.id,author:e.author,force:e.force,settings:e.settings})],r=await xe(e.pmRoot,e.subject.id,e.settings.locks.ttl_seconds,e.author,!!e.force,e.settings.governance.force_required_for_stale_lock,e.settings.locks.wait_ms);try{let n=await qa({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:e.operation});return await e.applyRewrite(n),e.applyPostRewrite&&t.push(...await e.applyPostRewrite(n)),t}finally{await r()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="05b945f2-4f96-5f88-98ff-84cc856d0d57")}catch{}})();function Rn(e){return Array.isArray(e)?e:typeof e=="string"?[e]:[]}function Ba(e){let t=[];for(let r of e)t.includes(r)||t.push(r);return t.includes("g")||t.push("g"),t.join("")}function Ga(e){let t=e.trim();if(t.length===0)throw new f("history-redact --regex requires a non-empty pattern.",u.USAGE);let r=t,n="g";if(t.startsWith("/")&&t.length>1){let o=t.lastIndexOf("/");o>0&&(r=t.slice(1,o),n=Ba(t.slice(o+1)))}if(r.length===0)throw new f("history-redact --regex cannot use an empty pattern.",u.USAGE);try{new RegExp(r,n)}catch{throw new f("Invalid --regex value; provide a valid JavaScript regular expression.",u.USAGE)}return{kind:"regex",source:r,flags:n}}function Ya(e,t){let r=[...new Set(Rn(e).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),n=[...new Set(Rn(t).map(i=>i.trim()))].filter(i=>i.length>0).map(Ga),o=[...r,...n];if(o.length===0)throw new f("history-redact requires at least one matcher via --literal or --regex.",u.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 Wa(e,t,r){if(t.length===0)return{value:e,replacements:0};let n=0,o=0;for(;n<=e.length;){let i=e.indexOf(t,n);if(i===-1)break;o+=1,n=i+Math.max(1,t.length)}return o===0?{value:e,replacements:0}:{value:e.split(t).join(r),replacements:o}}function Ka(e,t,r){let n=new RegExp(t.source,t.flags),o=[...e.matchAll(n)];return o.length===0?{value:e,replacements:0}:{value:e.replace(n,r),replacements:o.length}}function kn(e,t,r){let n=e,o=0;for(let i of t){let s=i.kind==="literal"?Wa(n,i.value,r):Ka(n,i,r);n=s.value,o+=s.replacements}return{value:n,replacements:o}}function Wt(e,t,r){if(typeof e=="string")return kn(e,t,r);if(Array.isArray(e)){let n=0;return{value:e.map(i=>{let s=Wt(i,t,r);return n+=s.replacements,s.value}),replacements:n}}if(typeof e=="object"&&e!==null){let n=0,o={};for(let[i,s]of Object.entries(e)){let a=Wt(s,t,r);n+=a.replacements,o[i]=a.value}return{value:o,replacements:n}}return{value:e,replacements:0}}function Xa(e){let t=structuredClone(fe),r=0,n=0;for(let o=0;o<e.length;o+=1){let i=e[o];z(t)!==i.before_hash&&(r+=1),t=Qe(t,i.patch,o+1,i.op),z(t)!==i.after_hash&&(n+=1)}return{hashMismatchesBefore:r,hashMismatchesAfter:n,finalDocument:t}}function Qa(e,t,r){let n=0,o=!1,i=e.message;if(typeof e.message=="string"){let a=kn(e.message,t,r);i=a.value,n+=a.replacements,a.replacements>0&&(o=!0)}let s=e.patch.map(a=>{if(!Object.prototype.hasOwnProperty.call(a,"value"))return a;let c=Wt(a.value,t,r);return n+=c.replacements,c.replacements>0?(o=!0,{...a,value:c.value}):a});return{entry:{...e,message:i,patch:s},replacements:n,changed:o}}function Ja(e,t,r){let n=structuredClone(fe),o=0,i=0,s=[];for(let a=0;a<e.length;a+=1){let c=Qa(e[a],t,r);i+=c.replacements,c.changed&&(o+=1);let d=z(n);n=Qe(n,c.entry.patch,a+1,c.entry.op);let l=z(n);s.push({...c.entry,before_hash:d,after_hash:l})}return{entries:s,finalDocument:n,entriesChanged:o,replacements:i}}function Za(e){return Object.keys(e.metadata).length>0}async function ec(e,t){let r=e.located?.itemPath??null;if(!e.located)return{raw:null,path:r,document:null};let n=await G(e.located,{schema:t.schema});return{raw:n.raw,path:r,document:n.document}}function tc(e){if(!Za(e.finalDocument))return{raw:null,path:null,document:null};let t=st(Ae(e.finalDocument),{schema:e.settings.schema});if(t.metadata.id!==e.subject.id)throw new f("history-redact would change the item id; narrow your patterns.",u.USAGE);return{document:t,path:se(e.pmRoot,t.metadata.type,e.subject.id,"toon",e.typeToFolder),raw:le(t,{format:"toon",schema:e.settings.schema})}}function rc(e,t){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-redact replaced ${t.replacements} match(es) across ${t.entriesChanged} entr${t.entriesChanged===1?"y":"ies"}.`}function nc(e){let t=[...e.rewritten.entries];if(e.dryRun||!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let r=e.nextItemDocument??Ae(e.rewritten.finalDocument);return t.push(at({nowIso:v(),author:e.author,op:"history_redact",before:r,after:r,message:e.message})),{rewrittenEntries:t,auditEntryAdded:!0}}async function oc(e){let t=[];return Cn({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItem.raw,operation:"history-redact",author:e.author,force:e.force,itemDocument:e.currentItem.document,applyRewrite:async({historyRawUnderLock:r})=>{let n=await ut(e.pmRoot,e.author),o=new Set;e.currentItem.path&&o.add(e.currentItem.path),e.nextItem.path&&o.add(e.nextItem.path);let i=new Map;e.currentItem.path&&e.currentItem.raw!==null&&i.set(e.currentItem.path,e.currentItem.raw);let s=()=>{};try{try{e.nextItem.path&&e.nextItem.raw!==null&&e.nextItem.raw!==e.currentItem.raw&&await S(e.nextItem.path,e.nextItem.raw),e.currentItem.path&&(!e.nextItem.path||e.nextItem.path!==e.currentItem.path)&&await Yt.rm(e.currentItem.path,{force:!0}),await S(e.subject.historyPath,er(e.rewrittenEntries))}catch(c){try{await ic(e.subject.historyPath,r,o,i)}finally{await ee(e.subject.historyPath)}throw c}await ee(e.subject.historyPath);let a=e.nextItem.path??e.currentItem.path;a&&(t=await mt({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:e.typeRegistry.type_to_folder,schema:e.settings.schema,itemPath:a,...e.currentItem.path?{previousItemPath:e.currentItem.path}:{},document:e.nextItem.document}))}finally{await n().catch(a=>{s=()=>{throw a}})}s()},applyPostRewrite:async()=>[...t,...await sc(e.subject.historyPath,[e.nextItem.path,e.currentItem.path])]})}async function ic(e,t,r,n){t===null?await Yt.rm(e,{force:!0}):await S(e,t);for(let o of r){let i=n.get(o);i===void 0?await Yt.rm(o,{force:!0}):await S(o,i)}}async function sc(e,t){let r=[],n=new Set(t.filter(o=>o!==null));for(let o of n)r.push(...await q({path:o,scope:"project",op:"history_redact"}));return r.push(...await q({path:e,scope:"project",op:"history_redact:history"})),r}async function ac(e,t,r,n){let o=await B(e,t,r.id_prefix,r.item_format,n);if(o)return{id:o.id,historyPath:Se(e,o.id),located:o};let i=te(t,r.id_prefix),s=dt(t),a=i===s?[i]:[i,s];for(let c of a){let d=Se(e,c);if(await P(d))return{id:c,historyPath:d,located:null}}throw new f(`Item ${t} not found`,u.NOT_FOUND)}async function b_(e,t,r){let n=H(process.cwd(),r.path);await rr(n);let o=await C(n),i=F(o,ce()),s=t.replacement??"",a=s.length===0,c=a?"[redacted]":s,d=Ya(t.literal,t.regex),l=await ac(n,e,o,i.type_to_folder);if(!await P(l.historyPath))throw new f(`No history stream exists for ${l.id}.`,u.NOT_FOUND);let m=await T(l.historyPath),h=await ue(l.historyPath,l.id);if(h.length===0)throw new f(`No history entries exist for ${l.id}; nothing to redact.`,u.USAGE);let p=Xa(h),_=Ja(h,d,c),y=p.hashMismatchesBefore+p.hashMismatchesAfter,g=!!t.dryRun,E=_.replacements>0,x=[];y>0&&x.push(`history_redact_preexisting_hash_mismatches:${y}`),E||x.push("history_redact_no_matches");let I=await ec(l,o),A=tc({pmRoot:n,subject:l,settings:o,typeToFolder:i.type_to_folder,finalDocument:_.finalDocument}),V=(I.path??null)!==(A.path??null)||(I.raw??null)!==(A.raw??null),O=Ie(t.author,o.author_default),Je=rc(t,_),{rewrittenEntries:J,auditEntryAdded:Ee}=nc({rewritten:_,dryRun:g,changed:E,nextItemDocument:A.document,author:O,message:Je}),oe=ct(J);if(!oe.ok)throw new f(`history-redact produced an invalid rewritten chain (${oe.errors.join(", ")}).`,u.GENERIC_FAILURE);return!g&&E&&x.push(...await oc({pmRoot:n,subject:l,settings:o,typeRegistry:i,historyRawBeforeLock:m,currentItem:I,nextItem:A,author:O,force:t.force,rewrittenEntries:J})),{id:l.id,dry_run:g,changed:E,patterns:{literal_count:d.filter(j=>j.kind==="literal").length,regex_count:d.filter(j=>j.kind==="regex").length,total_count:d.length,replacement_is_default:a},history:{path:l.historyPath,entries_scanned:h.length,entries_changed:_.entriesChanged,replacements:_.replacements,hash_mismatches_before:p.hashMismatchesBefore,hash_mismatches_after:p.hashMismatchesAfter,preexisting_hash_mismatches:y,audit_entry_added:Ee,verify_ok:oe.ok,verify_errors:oe.errors},item:{existed_before:I.path!==null,exists_after:A.path!==null,path_before:I.path,path_after:A.path,changed:V},warnings:[...new Set(x)].sort((j,Dn)=>j.localeCompare(Dn)),generated_at:v()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="412fc2d2-daee-5d87-82ab-5411a1503087")}catch{}})();function T_(e,t){let r=t??{};return e.filter(n=>r[n.id]!==n.updated_at).map(n=>n.id).sort((n,o)=>n.localeCompare(o))}export{Uh as a,Qe as b,Vh as c,jh as d,Jh as e,Cn as f,ac as g,b_ as h,Qn as i,Jn as j,eo as k,to as l,Dc as m,ro as n,no as o,lr as p,oo as q,io as r,so as s,ao as t,ho as u,go as v,wo as w,hr as x,bo as y,So as z,Oc as A,To as B,Oe as C,Pc as D,Pe as E,xo as F,Ao as G,yt as H,Co as I,gt as J,Ro as K,Qc as L,Do as M,yr as N,Lo as O,Mo as P,Po as Q,od as R,zo as S,ld as T,Ho as U,Bo as V,Ln as W,Go as X,Yo as Y,ze as Z,hi as _,Ld as $,Et as aa,vr as ba,bt as ca,vi as da,Ci as ea,Od as fa,Cr as ga,re as ha,Tt as ia,xt as ja,Mt as ka,Gd as la,Nt as ma,Ge as na,Or as oa,Ye as pa,Ot as qa,Pt as ra,$t as sa,Ft as ta,Vr as ua,jr as va,ml as wa,Fn as xa,or as ya,Un as za,Vn as Aa,jn as Ba,mc as Ca,hc as Da,me as Ea,De as Fa,he as Ga,pe as Ha,Le as Ia,Me as Ja,ir as Ka,Yn as La,Is as Ma,vs as Na,Rs as Oa,ks as Pa,Vs as Qa,en as Ra,ea as Sa,_u as Ta,T_ as Ua,Dh as Va,Lh as Wa,Fa as Xa,Mh as Ya,Nh as Za};
19
- //# sourceMappingURL=chunk-ONYQCALA.js.map
18
+ `:"";for(let o=0;;o+=1)try{await S(Ht(e),n);return}catch(i){let s=tn[o];if(s===void 0||!yn(i))throw i;await gn(s)}}async function Qr(e,t,r,n){return Bt(async()=>{let o=await T(Ht(e)),i=o===null?[]:wn(o),s=[];for(let c of i){if(r.has(c.id))continue;let d=n.get(c.id);s.push(d?{...c,attempts:d.attempts,next_attempt_after:d.next_attempt_after}:c)}let{entries:a}=En(s,t);return await wa(e,a),a.length})}async function Ea(e,t){let r=await T(Ht(e));if(r===null||r.trim().length===0){await N(e,{pending_otel_spans:0});return}let n=wn(r),{entries:o,prunedCount:i}=En(n,t),s=o.filter(_=>hn(_.next_attempt_after)).slice(0,Us);if(s.length===0){let _=i>0?await Qr(e,t,new Set,new Map):o.length;await N(e,{pending_otel_spans:_});return}let a=v(),c=new Set,d=new Map,l=0,m;await Promise.all(s.map(async _=>{try{let y=await fn(_.endpoint,{"content-type":"application/json"},JSON.stringify(_.payload));if(y<200||y>=300)throw new Error(`local_otel_export_http_${y}`);c.add(_.id),l+=1}catch(y){m=y instanceof Error?Ut(y.message,"redacted"):"local_otel_export_failed";let g=_.attempts+1;d.set(_.id,{attempts:g,next_attempt_after:pn(g)})}}));let h=await Qr(e,t,c,d),p={pending_otel_spans:h,last_otel_attempt_at:a};l>0&&(p.last_otel_success_at=a),m!==void 0?(p.last_otel_failure_at=a,p.last_otel_failure_error=m):h===0&&(p.last_otel_failure_at=void 0,p.last_otel_failure_error=void 0),await N(e,p)}async function ba(e,t,r){try{await xa(e,t,r)}catch{}try{await Ea(e,r)}catch{}}async function Sa(e,t=Ws){try{let r=sa(e),n=await Ns(r,{withFileTypes:!0}),o=Date.now()-Math.max(0,t);await Promise.all(n.filter(i=>i.isFile()&&/^\.events\.jsonl\.\d+\.\d+\.[a-f0-9]+\.tmp$/.test(i.name)).map(async i=>{let s=k.join(r,i.name);(await Jr(s)).mtimeMs<o&&await jt(s,{force:!0})}))}catch{}}async function Bt(e){let t=Kr.catch(()=>{}).then(e);return Kr=t.catch(()=>{}),t}async function Gt(e){let t=await T(Xe(e));return t===null||t.trim().length===0?[]:mn(t)}async function Ta(e,t,r){return Bt(async()=>{let n=await Gt(e),{entries:o}=qt(n,r),i=o.filter(s=>!t.has(s.event.event_id));return await Ke(e,i),i})}async function Ia(e,t,r,n){return Bt(async()=>{let o=await Gt(e),{entries:i}=qt(o,n),s=i.map(a=>{if(!t.has(a.event.event_id))return a;let c=a.attempts+1;return{...a,attempts:c,last_attempt_at:r,next_attempt_after:pn(c)}});return await Ke(e,s),s})}async function xa(e,t,r){await Sa(e);let n=t.trim();if(n.length===0)return;let o=await T(Xe(e));if(o===null||o.trim().length===0){await N(e,{endpoint:n,queue_entries:0});return}let i=mn(o);if(i.length===0){await N(e,{endpoint:n,queue_entries:0});return}let{entries:s,prunedCount:a}=qt(i,r);if(s.length===0){await Ke(e,[]),await N(e,{endpoint:n,queue_entries:0});return}let c=s.filter(p=>ha(p)).slice(0,js);if(c.length===0){a>0&&await Ke(e,s),await N(e,{endpoint:n,queue_entries:s.length});return}let d=new Set(c.map(p=>p.event.event_id)),l=v(),m={"content-type":"application/json"},h=process.env.PM_TELEMETRY_INGEST_KEY?.trim();h&&(m["x-pm-telemetry-key"]=h);try{let p=await fn(n,m,JSON.stringify({schema_version:Vs,events:c.map(_=>_.event)}));if(p<200||p>=300)throw new Error(`telemetry_flush_http_${p}`)}catch(p){let _=await Ia(e,d,l,r),y=p instanceof Error?Ut(p.message,"redacted"):"telemetry_flush_failed";await N(e,{endpoint:n,queue_entries:_.length,last_attempted_flush_at:l,last_failed_flush_at:l,last_failed_flush_error:y});return}try{let p=await Ta(e,d,r);await N(e,{endpoint:n,queue_entries:p.length,last_attempted_flush_at:l,last_successful_flush_at:l,last_failed_flush_at:void 0,last_failed_flush_error:void 0})}catch(p){let _=p instanceof Error?Ut(p.message,"redacted"):"telemetry_flush_failed",y=await Gt(e).catch(()=>s);await N(e,{endpoint:n,queue_entries:y.length,last_attempted_flush_at:l,last_failed_flush_at:l,last_failed_flush_error:_})}}async function Aa(e){let t=on(e);await zt(k.dirname(t),{recursive:!0});try{return await zt(t),!0}catch(r){if(typeof r!="object"||r===null||!("code"in r)||r.code!=="EEXIST")throw r}try{let r=await Jr(t);return Date.now()-r.mtimeMs<Ks?!1:(await jt(t,{recursive:!0,force:!0}),await zt(t),!0)}catch{return!1}}function va(e){try{Ms(e,{recursive:!0,force:!0})}catch{}}function Ca(e){va(aa(e))}async function Ra(e,t,r){let n=await Aa(e);if(Ca(e),!!n)try{await ba(e,t,r)}finally{try{await jt(on(e),{recursive:!0,force:!0})}catch{}}}async function _u(e=tt(process.cwd())){if(!ma())try{if(!(await C(e)).telemetry.enabled)return;let{endpoint:r,retentionDays:n}=await pa(e);await Ra(e,r,n)}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]="d45775e5-6826-521b-80b3-429ed22947d9")}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]="13c02696-29a7-598e-888a-3502fd88bfbe")}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]="33a43890-abcf-58fc-bf9d-bf2619d4cf35")}catch{}})();var ka=3,bn=20,Da=.8,La=100,Sn=1e3,Tn=1e6;function Lh(e){return e===void 0?[]:[`likely_duplicates:${e.result.items.map(t=>t.id).join(",")}`,`likely_duplicate_recovery:${e.recovery.action}:${e.recovery.item_id}`]}async function Ma(e,t){let r=e.items[0],n=H(t.cwd??process.cwd(),t.pmRoot),o=Te((await C(n)).schema);return ot(r.status,o)?{action:"reopen",item_id:r.id,command:`pm item reopen ${r.id} "<recurrence reason>"`,args:["item","reopen",r.id,"<recurrence reason>"]}:{action:"reuse",item_id:r.id,command:`pm get ${r.id} --full`,args:["get",r.id,"--full"]}}function In(e){let t=e.limit??ka,r=e.threshold??Da;if(!Number.isSafeInteger(t)||t<0||t>bn)throw new f(`Similarity limit must be an integer from 0 to ${bn}.`,u.USAGE);if(!Number.isFinite(r)||r<0||r>1)throw new f("Similarity threshold must be a number from 0 to 1.",u.USAGE);return{limit:t,threshold:r}}function Na(e){let t=e.limit??La;if(!Number.isSafeInteger(t)||t<0||t>Sn)throw new f(`Duplicate cluster limit must be an integer from 0 to ${Sn}.`,u.USAGE);let r=e.since===void 0?void 0:new Date(e.since);if(r&&Number.isNaN(r.getTime()))throw new f("Duplicate cluster --since must be a valid ISO timestamp.",u.USAGE);return{limit:t,since:r}}async function Oa(e,t){let r=H(e.cwd??process.cwd(),e.pmRoot),n=await C(r),o=F(n),i=e.statuses?.map(m=>m.trim().toLowerCase()).filter(Boolean);if(e.statuses!==void 0&&i?.length===0)throw new f("Duplicate cluster statuses must include at least one lifecycle status or all.",u.USAGE);let s=Te(n.schema),a=i?.map(m=>{if(m==="all")return m;let h=de(m,s);if(!h)throw new f(`Unknown duplicate-cluster status "${m}". Allowed: all, ${s.definitions.map(p=>p.id).join(", ")}.`,u.USAGE);return h}),c=a?.includes("all")===!0;if(c&&a?.some(m=>m!=="all"))throw new f('The "all" status cannot be combined with other statuses.',u.USAGE);let d=c?void 0:a,l=d?new Set(d):void 0;return{items:(await ke(r,n.item_format,o.type_to_folder,void 0,n.schema)).filter(m=>(!l||l.has(m.status))&&(!t||new Date(m.created_at).getTime()>=t.getTime())).sort((m,h)=>m.id.localeCompare(h.id)).map(m=>({item:m,prepared:pe(m.title)})),statuses:d}}function xn(e,t=Tn){let r=new Set,n=[new Map,new Map,new Map];for(let[o,i]of e.entries()){let s=[[i.prepared.normalized],i.prepared.issueCodes,i.prepared.tokens];for(let[a,c]of s.entries())for(let d of c){let l=n[a].get(d)??[];for(let m of l)r.add(`${m}:${o}`);if(r.size>t)throw new f(`Duplicate sweep exceeded ${Tn} candidate pairs; narrow it with statuses or since.`,u.CONFLICT,{code:"duplicate_sweep_cost_limit",required:"Narrow the batch duplicate query until its deterministic candidate set fits the disclosed safety bound."});l.push(o),n[a].set(d,l)}}return r}var Mh={buildDuplicateClusters:vn,collectDuplicateCandidatePairs:xn,createDuplicateUnionFind:An};function An(e){let t=Array.from({length:e},(n,o)=>o);return{parent:t,findRoot:n=>{let o=n;for(;t[o]!==o;)o=t[o];for(;t[n]!==n;){let i=t[n];t[n]=o,n=i}return o}}}function Pa(e,t,r,n){let o=[];for(let i of t){let[s,a]=i.split(":").map(m=>Number.parseInt(m,10)),c=Me(e[s].prepared,e[a].prepared);if(c.score<r)continue;let d=n.findRoot(s),l=n.findRoot(a);d!==l&&(n.parent[l]=d),o.push({left_id:e[s].item.id,right_id:e[a].item.id,...c})}return o}function vn(e,t,r,n){let o=new Map;for(let i of e.keys()){let s=r.findRoot(i),a=o.get(s)??[];a.push(i),o.set(s,a)}return[...o.values()].filter(i=>i.length>1).map(i=>{let s=new Set(i.map(c=>e[c].item.id)),a=t.filter(c=>s.has(c.left_id)&&s.has(c.right_id)).sort((c,d)=>d.score-c.score||c.left_id.localeCompare(d.left_id)||c.right_id.localeCompare(d.right_id));return{id:e[i[0]].item.id,items:i.map(c=>{let d=e[c].item;return{id:d.id,title:d.title,status:d.status,type:d.type}}),matches:a,max_score:a[0]?.score??0}}).sort((i,s)=>s.max_score-i.max_score||i.id.localeCompare(s.id)).slice(0,n)}function $a(e,t,r,n,o){return t.filter(i=>!r.has(i.id)).map(i=>({id:i.id,title:i.title,status:i.status,type:i.type,...Le(e,i.title)})).filter(i=>i.score>=n).sort((i,s)=>s.score-i.score||i.id.localeCompare(s.id)).slice(0,o)}async function Fa(e,t={}){let r=e.title.trim();if(r.length===0)throw new f("Similarity candidate title must not be empty.",u.USAGE);let{limit:n,threshold:o}=In(t),i=H(t.cwd??process.cwd(),t.pmRoot),s=await C(i),a=F(s),c=await ft(i,Object.values(a.type_to_folder)),d=he(r),l=c&&d.length>0?await lt({pmRoot:i,expectedSourceCursor:c.source_cursor,query:d.map(p=>`"${p.replaceAll('"','""')}"`).join(" OR "),limit:Math.max(n*10,50)}):null,m=l===null?await ke(i,s.item_format,a.type_to_folder,void 0,s.schema):l.items,h=$a(r,m,new Set(e.excludeIds??[]),o,n);return{items:h,count:h.length,threshold:o,source:l?"persistent_index":"metadata_fallback"}}async function Nh(e={}){let{threshold:t}=In({...e,limit:void 0}),{limit:r,since:n}=Na(e),{items:o,statuses:i}=await Oa(e,n),s=xn(o),a=An(o.length),c=Pa(o,s,t,a),d=vn(o,c,a,r);return{clusters:d,count:d.length,threshold:t,source:"metadata_scan",filters:{statuses:i??null,since:e.since??null},cost:{item_count:o.length,candidate_pairs:s.size,scored_pairs:s.size}}}async function Oh(e,t){if(t.mode==="off")return;let r=await Fa(e,t);if(r.count===0)return;let n=await Ma(r,t),o=t.mode==="strict"&&t.allowDuplicate===!0;if(t.mode==="strict"&&!o){let i=r.items.map(a=>`${a.id} (${a.status}): ${a.title}`).join("; "),s=n.action==="reopen"?"Reopen the canonical item":"Reuse the canonical item";throw new f(`Likely duplicate item(s) found: ${i}. ${s} or pass --allow-duplicate with explicit intent.`,u.CONFLICT,{code:"likely_duplicate",required:`${s}, or explicitly acknowledge the duplicate with --allow-duplicate.`,recovery:{suggested_flags:["--allow-duplicate"],suggested_retry:n.command,suggested_retry_args:n.args}})}return{mode:t.mode,bypassed:o,result:r,recovery:n}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="47c087c2-124a-58b7-a5c9-09403235f4a2")}catch{}})();function za(e,t){let r=-1;return e.forEach((n,o)=>{let i=Date.parse(n.ts);if(!Number.isFinite(i))throw new f(`History for this item contains invalid timestamp at entry ${o+1}.`,u.GENERIC_FAILURE);i<=t&&(r=o)}),r}function Ua(e){let t=e[0]?.ts??null,r=e.at(-1)?.ts??null,n={code:"history_target_out_of_range",required:"Choose a target within the available item history.",why:"Point-in-time reads and restores can only reconstruct recorded versions.",examples:[],nextSteps:["Run pm history <id> to inspect available versions and timestamps."],valid_range:{first_version:null,last_version:null,first_timestamp:t,last_timestamp:r}};return r!==null&&(n.examples=["1",String(e.length),r],n.valid_range.first_version=1,n.valid_range.last_version=e.length),{guidance:n,lastTimestamp:r}}function Va(e,t){let r={};if(t instanceof Error&&t.message.trim().length>0&&(r.reason=t.message.trim()),typeof t!="object"||t===null)return r;let n=t;if(typeof n.index=="number"&&Number.isInteger(n.index)&&n.index>=0&&(r.patchIndex=n.index),typeof n.operation=="object"&&n.operation!==null){let o=n.operation;Object.assign(r,Object.fromEntries(["op","path","from"].flatMap(i=>{let s=o[i];return typeof s=="string"?[[i,s]]:[]})))}if(r.patchIndex!==void 0){let o=e[r.patchIndex];o&&(r.op??=o.op,r.path??=o.path,r.from??=o.from)}return r}function Vh(e,t,r={}){let n=e.trim(),o=r.errorSubject??"history",i=o==="restore"?"Restore":"History",{guidance:s,lastTimestamp:a}=Ua(t);if(!n)throw new f(`Missing ${o} target. Use a timestamp or version number.`,u.USAGE,s);if(/^\d+$/.test(n)){let l=Number(n);if(!Number.isSafeInteger(l)||l<1||l>t.length)throw new f(`${i} version must be between 1 and ${t.length} for this item.`,u.USAGE,s);return{kind:"version",raw:n,historyIndex:l-1}}let c=Date.parse(n);if(!Number.isFinite(c))throw new f(`Invalid ${o} target "${e}". Use a positive version number or ISO timestamp.`,u.USAGE,s);let d=za(t,c);if(d<0||r.allowFutureTimestamp!==!0&&c>Date.parse(a))throw new f(o==="restore"?`No history entries exist at or before timestamp ${n}.`:`No history entry exists at timestamp ${n}.`,u.USAGE,s);return{kind:"timestamp",raw:n,historyIndex:d}}function Qe(e,t,r,n){let o=ve(e,t);if(o.ok)return o.document;let i=Va(t,o.error),s=[`history_op=${n}`,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 f(`Failed to apply history patch at entry ${r} (${s.join(", ")}). ${i.reason??String(o.error)}`,u.GENERIC_FAILURE)}function jh(e,t){let r=structuredClone(fe);for(let n=0;n<=t;n+=1){let o=e[n];if(!o)throw new f(`History target entry ${n+1} does not exist.`,u.USAGE);if(z(r)!==o.before_hash)throw new f(`History hash mismatch before replay at entry ${n+1}.`,u.GENERIC_FAILURE);if(r=Qe(r,o.patch,n+1,o.op),z(r)!==o.after_hash)throw new f(`History hash mismatch after replay at entry ${n+1}.`,u.GENERIC_FAILURE)}return r}function Hh(e,t){if(Object.keys(e.metadata).length>0)return e;throw new f(`History target ${t.raw} resolves to a deleted state; choose a version or timestamp where the item exists.`,u.USAGE)}import Yt from"node:fs/promises";import ja from"node:fs/promises";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a2ec9f1a-aae2-59d5-8c9a-7acd8bf5a7a2")}catch{}})();function Ha(e){if(!e.itemDocument)return[];let t=e.itemDocument.metadata?.assignee?.trim();if(!t||t===e.author||e.force)return[];let r=tr(e.settings);if(r.ownership_enforcement==="strict")throw new f(`Item ${e.subjectId} is assigned to ${t}. Use --force to override.`,u.CONFLICT);return r.ownership_enforcement==="warn"?[`ownership_warning:assignee_conflict:${e.subjectId}:${t}`]:[]}async function qa(e){let t=await T(e.subject.historyPath);if(t!==e.historyRawBeforeLock)throw new f(`History for ${e.subject.id} changed while waiting for lock; retry ${e.operation}.`,u.CONFLICT);let r=await B(e.pmRoot,e.subject.id,e.settings.id_prefix,e.settings.item_format,e.typeRegistry.type_to_folder),n=r?await G(r,{schema:e.settings.schema}):null;if((n?.raw??null)!==(e.currentItemRawBeforeLock??null))throw new f(`Item ${e.subject.id} changed while waiting for lock; retry ${e.operation}.`,u.CONFLICT);return{historyRawUnderLock:t,locatedUnderLock:r,loadedItemUnderLock:n}}async function Zh(e){let t=e.writeHistoryRaw??S;try{await t(e.historyPath,e.nextHistoryRaw),await te(e.historyPath)}catch(r){try{e.historyRawUnderLock===null?await ja.rm(e.historyPath,{force:!0}):await t(e.historyPath,e.historyRawUnderLock),await te(e.historyPath)}catch(n){throw new AggregateError([r,n],`History rewrite failed and rollback also failed: ${String(r)}`)}throw r}}async function Cn(e){let t=[...Ha({itemDocument:e.itemDocument,subjectId:e.subject.id,author:e.author,force:e.force,settings:e.settings})],r=await xe(e.pmRoot,e.subject.id,e.settings.locks.ttl_seconds,e.author,!!e.force,e.settings.governance.force_required_for_stale_lock,e.settings.locks.wait_ms);try{let n=await qa({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:e.operation});return await e.applyRewrite(n),e.applyPostRewrite&&t.push(...await e.applyPostRewrite(n)),t}finally{await r()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="05b945f2-4f96-5f88-98ff-84cc856d0d57")}catch{}})();function Rn(e){return Array.isArray(e)?e:typeof e=="string"?[e]:[]}function Ba(e){let t=[];for(let r of e)t.includes(r)||t.push(r);return t.includes("g")||t.push("g"),t.join("")}function Ga(e){let t=e.trim();if(t.length===0)throw new f("history-redact --regex requires a non-empty pattern.",u.USAGE);let r=t,n="g";if(t.startsWith("/")&&t.length>1){let o=t.lastIndexOf("/");o>0&&(r=t.slice(1,o),n=Ba(t.slice(o+1)))}if(r.length===0)throw new f("history-redact --regex cannot use an empty pattern.",u.USAGE);try{new RegExp(r,n)}catch{throw new f("Invalid --regex value; provide a valid JavaScript regular expression.",u.USAGE)}return{kind:"regex",source:r,flags:n}}function Ya(e,t){let r=[...new Set(Rn(e).map(i=>i.trim()))].filter(i=>i.length>0).map(i=>({kind:"literal",value:i})),n=[...new Set(Rn(t).map(i=>i.trim()))].filter(i=>i.length>0).map(Ga),o=[...r,...n];if(o.length===0)throw new f("history-redact requires at least one matcher via --literal or --regex.",u.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 Wa(e,t,r){if(t.length===0)return{value:e,replacements:0};let n=0,o=0;for(;n<=e.length;){let i=e.indexOf(t,n);if(i===-1)break;o+=1,n=i+Math.max(1,t.length)}return o===0?{value:e,replacements:0}:{value:e.split(t).join(r),replacements:o}}function Ka(e,t,r){let n=new RegExp(t.source,t.flags),o=[...e.matchAll(n)];return o.length===0?{value:e,replacements:0}:{value:e.replace(n,r),replacements:o.length}}function kn(e,t,r){let n=e,o=0;for(let i of t){let s=i.kind==="literal"?Wa(n,i.value,r):Ka(n,i,r);n=s.value,o+=s.replacements}return{value:n,replacements:o}}function Wt(e,t,r){if(typeof e=="string")return kn(e,t,r);if(Array.isArray(e)){let n=0;return{value:e.map(i=>{let s=Wt(i,t,r);return n+=s.replacements,s.value}),replacements:n}}if(typeof e=="object"&&e!==null){let n=0,o={};for(let[i,s]of Object.entries(e)){let a=Wt(s,t,r);n+=a.replacements,o[i]=a.value}return{value:o,replacements:n}}return{value:e,replacements:0}}function Xa(e){let t=structuredClone(fe),r=0,n=0;for(let o=0;o<e.length;o+=1){let i=e[o];z(t)!==i.before_hash&&(r+=1),t=Qe(t,i.patch,o+1,i.op),z(t)!==i.after_hash&&(n+=1)}return{hashMismatchesBefore:r,hashMismatchesAfter:n,finalDocument:t}}function Qa(e,t,r){let n=0,o=!1,i=e.message;if(typeof e.message=="string"){let a=kn(e.message,t,r);i=a.value,n+=a.replacements,a.replacements>0&&(o=!0)}let s=e.patch.map(a=>{if(!Object.prototype.hasOwnProperty.call(a,"value"))return a;let c=Wt(a.value,t,r);return n+=c.replacements,c.replacements>0?(o=!0,{...a,value:c.value}):a});return{entry:{...e,message:i,patch:s},replacements:n,changed:o}}function Ja(e,t,r){let n=structuredClone(fe),o=0,i=0,s=[];for(let a=0;a<e.length;a+=1){let c=Qa(e[a],t,r);i+=c.replacements,c.changed&&(o+=1);let d=z(n);n=Qe(n,c.entry.patch,a+1,c.entry.op);let l=z(n);s.push({...c.entry,before_hash:d,after_hash:l})}return{entries:s,finalDocument:n,entriesChanged:o,replacements:i}}function Za(e){return Object.keys(e.metadata).length>0}async function ec(e,t){let r=e.located?.itemPath??null;if(!e.located)return{raw:null,path:r,document:null};let n=await G(e.located,{schema:t.schema});return{raw:n.raw,path:r,document:n.document}}function tc(e){if(!Za(e.finalDocument))return{raw:null,path:null,document:null};let t=st(Ae(e.finalDocument),{schema:e.settings.schema});if(t.metadata.id!==e.subject.id)throw new f("history-redact would change the item id; narrow your patterns.",u.USAGE);return{document:t,path:se(e.pmRoot,t.metadata.type,e.subject.id,"toon",e.typeToFolder),raw:le(t,{format:"toon",schema:e.settings.schema})}}function rc(e,t){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-redact replaced ${t.replacements} match(es) across ${t.entriesChanged} entr${t.entriesChanged===1?"y":"ies"}.`}function nc(e){let t=[...e.rewritten.entries];if(e.dryRun||!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let r=e.nextItemDocument??Ae(e.rewritten.finalDocument);return t.push(at({nowIso:v(),author:e.author,op:"history_redact",before:r,after:r,message:e.message})),{rewrittenEntries:t,auditEntryAdded:!0}}async function oc(e){let t=[];return Cn({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItem.raw,operation:"history-redact",author:e.author,force:e.force,itemDocument:e.currentItem.document,applyRewrite:async({historyRawUnderLock:r})=>{let n=await ut(e.pmRoot,e.author),o=new Set;e.currentItem.path&&o.add(e.currentItem.path),e.nextItem.path&&o.add(e.nextItem.path);let i=new Map;e.currentItem.path&&e.currentItem.raw!==null&&i.set(e.currentItem.path,e.currentItem.raw);let s=()=>{};try{try{e.nextItem.path&&e.nextItem.raw!==null&&e.nextItem.raw!==e.currentItem.raw&&await S(e.nextItem.path,e.nextItem.raw),e.currentItem.path&&(!e.nextItem.path||e.nextItem.path!==e.currentItem.path)&&await Yt.rm(e.currentItem.path,{force:!0}),await S(e.subject.historyPath,er(e.rewrittenEntries))}catch(c){try{await ic(e.subject.historyPath,r,o,i)}finally{await te(e.subject.historyPath)}throw c}await te(e.subject.historyPath);let a=e.nextItem.path??e.currentItem.path;a&&(t=await mt({pmRoot:e.pmRoot,preferredFormat:e.settings.item_format,typeToFolder:e.typeRegistry.type_to_folder,schema:e.settings.schema,itemPath:a,...e.currentItem.path?{previousItemPath:e.currentItem.path}:{},document:e.nextItem.document}))}finally{await n().catch(a=>{s=()=>{throw a}})}s()},applyPostRewrite:async()=>[...t,...await sc(e.subject.historyPath,[e.nextItem.path,e.currentItem.path])]})}async function ic(e,t,r,n){t===null?await Yt.rm(e,{force:!0}):await S(e,t);for(let o of r){let i=n.get(o);i===void 0?await Yt.rm(o,{force:!0}):await S(o,i)}}async function sc(e,t){let r=[],n=new Set(t.filter(o=>o!==null));for(let o of n)r.push(...await q({path:o,scope:"project",op:"history_redact"}));return r.push(...await q({path:e,scope:"project",op:"history_redact:history"})),r}async function ac(e,t,r,n){let o=await B(e,t,r.id_prefix,r.item_format,n);if(o)return{id:o.id,historyPath:Se(e,o.id),located:o};let i=re(t,r.id_prefix),s=dt(t),a=i===s?[i]:[i,s];for(let c of a){let d=Se(e,c);if(await P(d))return{id:c,historyPath:d,located:null}}throw new f(`Item ${t} not found`,u.NOT_FOUND)}async function S_(e,t,r){let n=H(process.cwd(),r.path);await rr(n);let o=await C(n),i=F(o,ce()),s=t.replacement??"",a=s.length===0,c=a?"[redacted]":s,d=Ya(t.literal,t.regex),l=await ac(n,e,o,i.type_to_folder);if(!await P(l.historyPath))throw new f(`No history stream exists for ${l.id}.`,u.NOT_FOUND);let m=await T(l.historyPath),h=await ue(l.historyPath,l.id);if(h.length===0)throw new f(`No history entries exist for ${l.id}; nothing to redact.`,u.USAGE);let p=Xa(h),_=Ja(h,d,c),y=p.hashMismatchesBefore+p.hashMismatchesAfter,g=!!t.dryRun,E=_.replacements>0,x=[];y>0&&x.push(`history_redact_preexisting_hash_mismatches:${y}`),E||x.push("history_redact_no_matches");let I=await ec(l,o),A=tc({pmRoot:n,subject:l,settings:o,typeToFolder:i.type_to_folder,finalDocument:_.finalDocument}),V=(I.path??null)!==(A.path??null)||(I.raw??null)!==(A.raw??null),O=Ie(t.author,o.author_default),Je=rc(t,_),{rewrittenEntries:J,auditEntryAdded:Ee}=nc({rewritten:_,dryRun:g,changed:E,nextItemDocument:A.document,author:O,message:Je}),ie=ct(J);if(!ie.ok)throw new f(`history-redact produced an invalid rewritten chain (${ie.errors.join(", ")}).`,u.GENERIC_FAILURE);return!g&&E&&x.push(...await oc({pmRoot:n,subject:l,settings:o,typeRegistry:i,historyRawBeforeLock:m,currentItem:I,nextItem:A,author:O,force:t.force,rewrittenEntries:J})),{id:l.id,dry_run:g,changed:E,patterns:{literal_count:d.filter(j=>j.kind==="literal").length,regex_count:d.filter(j=>j.kind==="regex").length,total_count:d.length,replacement_is_default:a},history:{path:l.historyPath,entries_scanned:h.length,entries_changed:_.entriesChanged,replacements:_.replacements,hash_mismatches_before:p.hashMismatchesBefore,hash_mismatches_after:p.hashMismatchesAfter,preexisting_hash_mismatches:y,audit_entry_added:Ee,verify_ok:ie.ok,verify_errors:ie.errors},item:{existed_before:I.path!==null,exists_after:A.path!==null,path_before:I.path,path_after:A.path,changed:V},warnings:[...new Set(x)].sort((j,Dn)=>j.localeCompare(Dn)),generated_at:v()}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="412fc2d2-daee-5d87-82ab-5411a1503087")}catch{}})();function I_(e,t){let r=t??{};return e.filter(n=>r[n.id]!==n.updated_at).map(n=>n.id).sort((n,o)=>n.localeCompare(o))}export{Vh as a,Qe as b,jh as c,Hh as d,Zh as e,Cn as f,ac as g,S_ as h,Qn as i,Jn as j,eo as k,to as l,Dc as m,ro as n,no as o,lr as p,oo as q,io as r,so as s,ao as t,ho as u,go as v,wo as w,hr as x,bo as y,So as z,Oc as A,To as B,Oe as C,Pc as D,Pe as E,xo as F,Ao as G,yt as H,Co as I,gt as J,Ro as K,Qc as L,Do as M,yr as N,Lo as O,Mo as P,Po as Q,od as R,zo as S,ld as T,Ho as U,Bo as V,Ln as W,Go as X,Yo as Y,ze as Z,hi as _,Ld as $,Et as aa,vr as ba,bt as ca,vi as da,Ci as ea,Od as fa,Cr as ga,ne as ha,Tt as ia,xt as ja,Mt as ka,Gd as la,Nt as ma,Ge as na,Or as oa,Ye as pa,Ot as qa,Pt as ra,$t as sa,Ft as ta,Vr as ua,jr as va,ml as wa,Fn as xa,or as ya,Un as za,Vn as Aa,jn as Ba,mc as Ca,hc as Da,me as Ea,De as Fa,he as Ga,pe as Ha,Le as Ia,Me as Ja,ir as Ka,Yn as La,Is as Ma,vs as Na,Rs as Oa,ks as Pa,Vs as Qa,en as Ra,ea as Sa,_u as Ta,I_ as Ua,Lh as Va,Mh as Wa,Fa as Xa,Nh as Ya,Oh as Za};
19
+ //# sourceMappingURL=chunk-YVVZ3LQ6.js.map