@unbrained/pm-cli 2026.10.2 → 2026.10.4

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 (104) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +31 -1
  3. package/dist/cli/error-guidance.js +1 -1
  4. package/dist/cli/runtime/invocation-options.js +1 -1
  5. package/dist/cli/runtime/selection.js +1 -1
  6. package/dist/cli/runtime-compatibility-boundary.d.ts +1 -1
  7. package/dist/cli/runtime-compatibility-boundary.js +3 -3
  8. package/dist/cli-bundle/bundle-manifest.json +149 -149
  9. package/dist/cli-bundle/chunks/{chunk-HY6M34B4.js → chunk-7CE2DJMA.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-WP6NRH72.js → chunk-7UVXKI7K.js} +2 -2
  11. package/dist/cli-bundle/chunks/{chunk-7FUEQOYG.js → chunk-D7Z2ZMJL.js} +2 -2
  12. package/dist/cli-bundle/chunks/{chunk-TRYXVQ7W.js → chunk-GZMWISWW.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-ZI7F3FVE.js → chunk-J52QIRRZ.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-R4TUD355.js → chunk-JDKD3WGG.js} +6 -6
  15. package/dist/cli-bundle/chunks/chunk-JQ7DW663.js +2 -0
  16. package/dist/cli-bundle/chunks/{chunk-SV7CZEVV.js → chunk-QXIDOOWT.js} +2 -2
  17. package/dist/cli-bundle/chunks/{chunk-XOUBIF6Z.js → chunk-SMKHR6BM.js} +49 -49
  18. package/dist/cli-bundle/chunks/{chunk-MTJMOI4I.js → chunk-V3U77H3V.js} +31 -31
  19. package/dist/cli-bundle/chunks/{chunk-Z2GYDSAO.js → chunk-XZDWAYJC.js} +2 -2
  20. package/dist/cli-bundle/chunks/{chunk-R7ULWMBG.js → chunk-Y6VRBTP3.js} +71 -71
  21. package/dist/cli-bundle/chunks/{chunk-CZLAWXDR.js → chunk-YAAFYFS4.js} +2 -2
  22. package/dist/cli-bundle/chunks/{register-list-query-R4PHNB7W.js → register-list-query-QBGXO5JJ.js} +2 -2
  23. package/dist/cli-bundle/chunks/{register-mutation-PDDAUDYV.js → register-mutation-53ZLT4RX.js} +2 -2
  24. package/dist/cli-bundle/chunks/{register-operations-A5HJT46K.js → register-operations-OBK2FXUU.js} +2 -2
  25. package/dist/cli-bundle/chunks/{register-setup-EZ2F25JI.js → register-setup-HM3OCBH2.js} +2 -2
  26. package/dist/cli-bundle/focused-chunks/{chunk-FKK2HI3S.js → chunk-2JFYR56O.js} +2 -2
  27. package/dist/cli-bundle/focused-chunks/{chunk-UTRSM3ZK.js → chunk-32EVUSS4.js} +2 -2
  28. package/dist/cli-bundle/focused-chunks/{chunk-DBD4W4QP.js → chunk-467EW5RL.js} +2 -2
  29. package/dist/cli-bundle/focused-chunks/{chunk-IR4UXLRP.js → chunk-5GUSO2P4.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/{chunk-GMYUNHST.js → chunk-6XBRADQQ.js} +2 -2
  31. package/dist/cli-bundle/focused-chunks/{chunk-EJN7DY3B.js → chunk-7O4NUJVO.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/{chunk-E754JDLY.js → chunk-CURTIIQT.js} +2 -2
  33. package/dist/cli-bundle/focused-chunks/{chunk-4FFPGNCJ.js → chunk-IJUWEEEB.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-XRSCIYHR.js → chunk-JCVMOSWQ.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-ZIXFMIUL.js → chunk-JMJK2L4Z.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-WCY6HRZO.js → chunk-KG3H4UZZ.js} +14 -14
  37. package/dist/cli-bundle/focused-chunks/{chunk-VVWYI2X7.js → chunk-MHQ2XICU.js} +2 -2
  38. package/dist/cli-bundle/focused-chunks/{chunk-3BIYG72P.js → chunk-Q6DJ5DFQ.js} +2 -2
  39. package/dist/cli-bundle/focused-chunks/{chunk-BLCTBSGT.js → chunk-RJV6QVJE.js} +26 -26
  40. package/dist/cli-bundle/focused-chunks/{chunk-GBD4EN6S.js → chunk-ZE2JZ7R6.js} +11 -11
  41. package/dist/cli-bundle/focused-chunks/chunk-ZLEN4HZD.js +165 -0
  42. package/dist/cli-bundle/main.js +22 -22
  43. package/dist/cli-bundle/sdk-authoring.js +1 -1
  44. package/dist/cli-bundle/sdk-contracts.js +1 -1
  45. package/dist/cli-bundle/sdk-core.js +31 -31
  46. package/dist/cli-bundle/sdk-governance.js +1 -1
  47. package/dist/cli-bundle/sdk-graph.js +1 -1
  48. package/dist/cli-bundle/sdk-merge.js +23 -23
  49. package/dist/cli-bundle/sdk-query.js +1 -1
  50. package/dist/cli-bundle/sdk-runtime.js +1 -1
  51. package/dist/cli-bundle/sdk-testing.js +1 -1
  52. package/dist/cli-bundle/sdk.js +1 -1
  53. package/dist/core/extensions/extension-types.d.ts +8 -1
  54. package/dist/core/extensions/extension-types.js +1 -1
  55. package/dist/core/shared/secret-rules.js +1 -1
  56. package/dist/core/shared/time.js +1 -1
  57. package/dist/core/store/settings.d.ts +11 -2
  58. package/dist/core/store/settings.js +2 -2
  59. package/dist/sdk/agent/subcommand-recovery.js +1 -1
  60. package/dist/sdk/cli-bootstrap.js +1 -1
  61. package/dist/sdk/context-intent-contracts.js +1 -1
  62. package/dist/sdk/extension-command-context.js +1 -1
  63. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  64. package/dist/sdk/item-transaction.js +1 -1
  65. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
  66. package/dist/sdk/lifecycle/task-composition.js +1 -1
  67. package/dist/sdk/linked-artifacts.d.ts +1 -1
  68. package/dist/sdk/linked-artifacts.js +1 -1
  69. package/dist/sdk/output-projection.js +1 -1
  70. package/dist/sdk/public-surface.json +1 -1
  71. package/dist/sdk/query/get.js +1 -1
  72. package/dist/sdk/query/search-pagination.d.ts +1 -1
  73. package/dist/sdk/query/search-pagination.js +1 -1
  74. package/dist/sdk/test/execution.js +2 -2
  75. package/dist/sdk/test/workspace-snapshot.d.ts +11 -0
  76. package/dist/sdk/test/workspace-snapshot.js +2 -0
  77. package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +109 -0
  78. package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +25 -0
  79. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +23 -0
  80. package/docs/SDK_AUDITED_MUTATIONS.md +35 -0
  81. package/docs/TESTING.md +40 -5
  82. package/docs/ecosystem-review-2026-09-28.json +2864 -3157
  83. package/marketplace.json +2 -2
  84. package/package.json +5 -4
  85. package/packages/pm-beads/package.json +1 -1
  86. package/packages/pm-calendar/package.json +1 -1
  87. package/packages/pm-command-kit/package.json +1 -1
  88. package/packages/pm-digital-twin/package.json +1 -1
  89. package/packages/pm-governance-audit/package.json +1 -1
  90. package/packages/pm-guide-shell/package.json +1 -1
  91. package/packages/pm-kanban/package.json +1 -1
  92. package/packages/pm-lifecycle-hooks/package.json +1 -1
  93. package/packages/pm-linked-test-adapters/package.json +1 -1
  94. package/packages/pm-search-advanced/package.json +1 -1
  95. package/packages/pm-templates/package.json +1 -1
  96. package/packages/pm-todos/package.json +1 -1
  97. package/packages/pm-vcs/package.json +1 -1
  98. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  99. package/plugins/pm-claude/package.json +2 -2
  100. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  101. package/plugins/pm-codex/package.json +2 -2
  102. package/plugins/pm-codex/plugin.json +1 -1
  103. package/dist/cli-bundle/chunks/chunk-7NL3A2BY.js +0 -2
  104. package/dist/cli-bundle/focused-chunks/chunk-YC32ZSLS.js +0 -165
@@ -1,2 +1,2 @@
1
- import{$a as we,Ub as ge,Vb as _e,Xb as C,_b as Ee,a as ee,ac as ve,bc as Se,xc as Te}from"./chunk-XOUBIF6Z.js";import{b as pe,c as N}from"./chunk-ZI7F3FVE.js";import{B,Cc as Z,Dc as Q,Fo as ye,Io as he,Lg as ie,Ml as fe,Ol as me,Tb as X,Ua as V,ba as K,bb as Y,dg as te,ea as v,fg as re,gg as ne,ha as J,hi as ae,jg as oe,kh as se,ma as q,mk as ue,na as p,pa as d,sk as le,vb as H,xi as ce,z as $,zi as de}from"./chunk-R7ULWMBG.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]="4175f7f5-a689-5d05-982a-f92e21bc83e7")}catch{}})();import Ve from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2b75ffc0-8175-58fc-8d63-98081a68dcb8")}catch{}})();var U=["op","id","reason","options"],Ae=[...U,"ref"],Re=["schema_version","mutations"],Ne="[a-z][a-z0-9._-]{0,63}",Ie=new RegExp(`^${Ne}$`,"u"),Ce=new RegExp(`(^|,)id=@(${Ne})(?=,|$)`,"gu"),be=e=>e.slice(2).replaceAll(/-([a-z])/gu,(t,n)=>n.toUpperCase()),T=["item","linked","schedule","claim_state","children","omission_receipt","row_contract","context_intent"],Ue=new Set(["created_at","updated_at","closed_at","version","format_version","path","author","collection_counts","notes_count","tests_count"]),Ye=new Set([...Ue,"completed_at","id"]),S=new Set(["id","title","description","type","status","priority","tags","body","deadline","estimated_minutes","acceptance_criteria","definition_of_ready","order","rank","assignee",...K,"affected_version","fixed_version","component","regression","customer_impact","close_reason","completed_at","dependencies","comments","notes","learnings","files","tests","docs","reminders","events","type_options"]),Oe={create:ye.map(e=>e.target),update:he.map(e=>e.target),close:ue.map(e=>be(e.flag)).filter(e=>e!=="reason"),release:le.map(e=>be(e.flag))};function hr(e){let t={},n=e.createCompensation;if(n!==void 0){if(n!=="close"&&n!=="delete")throw new d("createCompensation must be close or delete.",p.USAGE);t.createCompensation=n}for(let r of["lockTtlSeconds","lockWaitMs"]){let o=e[r];if(o===void 0)continue;let i=typeof o=="number"||typeof o=="string"&&o.trim().length>0?Number(o):Number.NaN;if(!Number.isSafeInteger(i)||i<=0)throw new d(`${r} must be a positive safe integer.`,p.USAGE);t[r]=i}return t}function m(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function A(e,t){let n=Math.max(1,Math.min(3,Math.floor(e.length/4)+1)),r;for(let o of t){let i=H(e,o,n);i!==null&&(r===void 0||i<r.distance)&&(r={key:o,distance:i})}return r?.key}function w(e,t,n){let r=A(t,n);return new d(r===void 0?`${e} does not recognize key "${t}". Allowed keys: ${n.join(", ")}.`:`${e} does not recognize key "${t}". Did you mean "${r}"?`,p.USAGE,{code:"stdin_json_unknown_key",required:`Use documented ${e} keys only.`,why:"Strict structured input prevents silent typos from creating incomplete or unintended mutations.",nextSteps:[r===void 0?`Remove or correct "${t}".`:`Replace "${t}" with "${r}".`]})}function D(e,t){try{return JSON.parse(e)}catch(n){let r=n instanceof Error?n.message:String(n);throw new d(`${t} must be valid JSON: ${r}`,p.USAGE,{code:"stdin_json_invalid",required:`Pipe one valid JSON ${t.toLowerCase()} into stdin.`,why:"Structured mutation input must parse deterministically before any tracker write begins."})}}function He(e,t){if(!m(e))throw new d(`Mutation ${t+1} must be an object.`,p.USAGE);for(let n of Object.keys(e))if(!U.includes(n))throw w(`mutation ${t+1}`,n,U);return e}function Xe(e,t,n){if(e!==void 0){if(!m(e))throw new d(`Mutation ${n+1} options must be an object.`,p.USAGE);for(let r of Object.keys(e))if(!Oe[t].includes(r))throw w(`mutation ${n+1} ${t} options`,r,Oe[t]);return e}}function Ze(e,t){let n=He(e,t),{op:r,id:o,reason:i}=n;if(r!=="create"&&r!=="update"&&r!=="close"&&r!=="release")throw new d(`Mutation ${t+1} op must be create, update, close, or release.`,p.USAGE);let s=Xe(n.options,r,t);if(typeof o!="string"||o.trim().length===0)throw new d(`Mutation ${t+1} requires a non-empty id.`,p.USAGE);let a=o.trim();if(r==="close"){if(typeof i!="string"||i.trim().length===0)throw new d(`Mutation ${t+1} close requires a non-empty reason.`,p.USAGE);return{op:r,id:a,reason:i.trim(),...s===void 0?{}:{options:s}}}if(r==="release")return{op:r,id:a,...s===void 0?{}:{options:s}};if(!m(s))throw new d(`Mutation ${t+1} ${r} requires an options object.`,p.USAGE);return{op:r,id:a,options:s}}function De(e){let t=D(e,"Mutation batch"),n=Array.isArray(t)?t:m(t)&&Array.isArray(t.mutations)?t.mutations:void 0;if(n===void 0||n.length===0)throw new d("Mutation batch must be a non-empty JSON array or an object with a non-empty mutations array.",p.USAGE);return n.map((r,o)=>{let i=Ze(r,o);return i.options!==void 0&&fe(i.options),i})}function Qe(e,t,n){let r=Ve.createHash("sha256").update(e).update("\0").update(t).digest("hex"),o=BigInt(`0x${r.slice(0,16)}`).toString(36).padStart(13,"0").slice(-12);return`${ce(n)}${o}`}function Me(e,t){if(typeof e!="string"||!e.startsWith("@"))return e;let n=e.slice(1),r=t[n];if(r===void 0)throw new d(`Unknown mutation reference "${e}".`,p.USAGE);return r}function ke(e,t){if(typeof e!="string")return e;let n=e.replace(Ce,(r,o,i)=>{let s=t[i];if(s===void 0)throw new d(`Unknown mutation reference "@${i}".`,p.USAGE);return`${o}id=${s}`});if(/(^|,)id=@/u.test(n))throw new d(`Malformed mutation reference in dependency "${e}".`,p.USAGE);return n}function et(e){return typeof e!="string"?[]:e.startsWith("@")?[e.slice(1)]:[...e.matchAll(Ce)].map(t=>t[1]).filter(t=>t!==void 0)}function tt(e){let t=new Map;for(let i of e){if(i.op!=="create"||typeof i.ref!="string")continue;let s=m(i.options)?i.options:{},a=Array.isArray(s.dep)?s.dep:s.dep===void 0?[]:[s.dep];t.set(i.ref,[s.parent,s.blockedBy,...a].flatMap(et))}let n=new Set,r=new Set,o=i=>{if(n.has(i))throw new d(`Mutation reference cycle includes "@${i}".`,p.USAGE);if(!r.has(i)){n.add(i);for(let s of t.get(i))t.has(s)&&o(s);n.delete(i),r.add(i)}};for(let i of t.keys())o(i)}function rt(e){let t=D(e,"Mutation document"),n=Array.isArray(t)?{schema_version:1,mutations:t}:t;if(!m(n))throw new d("Mutation document must be a JSON array or object.",p.USAGE);for(let r of Object.keys(n))if(!Re.includes(r))throw w("mutation document",r,Re);if(n.schema_version!==void 0&&n.schema_version!==1)throw new d("Mutation document schema_version must be 1.",p.USAGE);if(!Array.isArray(n.mutations)||n.mutations.length===0)throw new d("Mutation document requires a non-empty mutations array.",p.USAGE);return n.mutations.map((r,o)=>{if(!m(r))throw new d(`Mutation ${o+1} must be an object.`,p.USAGE);for(let i of Object.keys(r))if(!Ae.includes(i))throw w(`mutation ${o+1}`,i,Ae);return{...r}})}function nt(e,t){let n=Object.create(null);for(let[r,o]of e.entries())if(o.ref!==void 0){if(o.op!=="create")throw new d(`Mutation ${r+1} ref is only valid for create operations.`,p.USAGE);if(typeof o.ref!="string"||!Ie.test(o.ref))throw new d(`Mutation ${r+1} ref must match ${Ie.source}.`,p.USAGE);if(n[o.ref]!==void 0)throw new d(`Duplicate mutation ref "${o.ref}".`,p.USAGE);n[o.ref]=typeof o.id=="string"&&o.id.trim().length>0?de(o.id,t.idPrefix):Qe(t.transactionId,o.ref,t.idPrefix)}return n}function wr(e,t){let n=rt(e),r=nt(n,t);tt(n);let o=n.map(a=>{let c={...a},u=typeof c.ref=="string"?c.ref:void 0;if(delete c.ref,u!==void 0?c.id=r[u]:c.id=Me(c.id,r),m(c.options)){let f={...c.options};for(let y of["parent","blockedBy"])f[y]!==void 0&&(f[y]=Me(f[y],r));Array.isArray(f.dep)?f.dep=f.dep.map(y=>ke(y,r)):f.dep!==void 0&&(f.dep=ke(f.dep,r)),c.options=f}return c}),i=De(JSON.stringify(o)),s=i.filter(a=>a.op==="create").map(a=>a.id);if(new Set(s).size!==s.length)throw new d("Duplicate resolved create id in mutation document.",p.USAGE);return{schema_version:1,mutations:i,references:r}}function je(e,t){return t.filter(n=>e[n]!==void 0&&e[n]!==null).map(n=>{let r=String(e[n]);return`${n}=${/[",\n\r\\]/u.test(r)?JSON.stringify(r):r}`}).join(",")}function ot(e,t,n){if(e!==void 0){if(!Array.isArray(e)||!e.every(m))throw new d(`${n} must be an array of objects.`,p.USAGE);return e.map(r=>je(r,t))}}function it(e,t){return e==="tags"&&Array.isArray(t)&&t.every(n=>typeof n=="string")?JSON.stringify(t):typeof t=="number"||typeof t=="boolean"?String(t):t}function $e(e,t,n=!1){let r=[["dependencies","dep",["id","kind","created_at","author","source_kind"]],["comments","comment",["text","created_at","author"]],["notes","note",["text","created_at","author"]],["learnings","learning",["text","created_at","author"]],["files","file",["path","scope","note"]],["tests","test",["command","scope","timeout_seconds"]],["docs","doc",["path","scope","note"]],["reminders","reminder",["at","text","created_at"]],["events","event",["start_at","end_at","title","location"]],["type_options","typeOption",["key","value"]]];for(let[o,i,s]of r){let a=t[o],c=ot(n&&["comments","notes","learnings"].includes(o)&&Array.isArray(a)?a.filter(u=>!m(u)||u.created_at===void 0):a,s,o);c!==void 0&&c.length>0&&(e[i]=c)}}function st(e,t){for(let n of Object.keys(e)){if(t){if(!T.includes(n))throw w("item envelope",n,T);continue}if(!S.has(n)&&A(n,[...S])===void 0&&A(n,T)==="item")throw w("item envelope",n,T)}}function at(e){let t=Object.hasOwn(e,"item");st(e,t);let n=t?e.item:e;if(!m(n))throw new d("Item document item must be an object.",p.USAGE);return{item:n,...t&&m(e.linked)?{linked:e.linked}:{}}}function ct(e,t,n,r){if(!(r==="update"?Ye:Ue).has(t)){if(!S.has(t)){if(A(t,[...S])!==void 0)throw w("item document",t,[...S]);let s=Array.isArray(e.field)?e.field:[];s.push(je({key:t,value:typeof n=="string"?n:JSON.stringify(n)},["key","value"])),e.field=s;return}["dependencies","comments","notes","learnings","files","tests","docs","reminders","events","type_options"].includes(t)||(e[t.replaceAll(/_([a-z])/gu,(i,s)=>s.toUpperCase())]=it(t,n))}}function gr(e,t,n={}){let r=D(e,"Item document");if(!m(r))throw new d("Item document must be a JSON object.",p.USAGE);let{item:o,linked:i}=at(r),s={};for(let[a,c]of Object.entries(o))ct(s,a,c,t);if($e(s,o,t==="update"),i!==void 0&&$e(s,i),t==="update"){let a=Object.fromEntries(["comments","notes","learnings"].filter(c=>Object.hasOwn(o,c)).map(c=>[c,o[c].filter(u=>m(u)&&u.created_at!==void 0)]));Object.keys(a).length>0&&(s.documentAnnotationSnapshot=a)}return{...s,...Object.fromEntries(Object.entries(n).filter(([,a])=>a!==void 0)),stdinJson:void 0}}function _r(e){return De(JSON.stringify(e))}import L from"node:crypto";import{constants as j}from"node:fs";import{cp as dt,lstat as Pe,mkdir as pt,mkdtemp as ut,open as lt,readdir as ft,realpath as mt,rm as yt,stat as Ge,writeFile as Fe}from"node:fs/promises";import{tmpdir as ht}from"node:os";import l 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]="8862f134-7b3f-50c9-985d-6fa206688b29")}catch{}})();function b(e,t){let n={...e,...t};return e===void 0?n:me(e,n)}async function h(e,t){try{let r=(await we(t,{},{pmRoot:e})).item;return{id:r.id,closedAt:r.closed_at,updatedAt:r.updated_at,assignee:r.assignee,claimPrincipal:r.claim_principal}}catch(n){if(n instanceof d&&n.exitCode===p.NOT_FOUND)return;throw n}}function W(e,t){let n=e.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_"),r=L.createHash("sha256").update(X(e)).digest("hex").slice(0,12);return`${t+1}-${e.op}-${n}-${r}`}function wt(e,t){let n=e.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_");return`${t+1}-${e.op}-${n}`}function g(e,t,n){return`bulk-item-transaction ${e} ${t} ${n}`}async function O(e,t,n,r){let o=await se(l.join(e,"history",`${t}.jsonl`),t),i=g(n,r,"apply"),s=g(n,r,"compensate");for(let a=o.length-1;a>=0;a-=1){let c=o[a].message;if(c===i)return!0;if(c===s)return!1}return!1}async function x(e,t){let n=await h(e,t.id);if(n?.updatedAt===void 0)throw new d(`Bulk ${t.op} target ${t.id} does not exist or has no restorable version`,p.NOT_FOUND);return{target_updated_at:n.updatedAt}}async function M(e,t,n,r){let o=r!==null&&typeof r=="object"&&!Array.isArray(r)?r.target_updated_at:void 0;typeof o=="string"&&await h(e.pmRoot,t)!==void 0&&await Se(t,o,{force:!0,author:e.author,message:g(e.transactionId,n,"compensate")},{pmRoot:e.pmRoot})}function Le(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"create"}}},async apply(){let o=(await ge(b(t.options,{author:e.author,id:t.id}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"create"}},async compensate(){let r=await h(e.pmRoot,t.id);if(r!==void 0){if(e.createCompensation==="delete"){await ve(t.id,{force:!0,author:e.author,message:`Compensate interrupted bulk transaction ${e.transactionId}`},{pmRoot:e.pmRoot});return}r.closedAt===void 0&&await C(t.id,`Compensated: interrupted bulk transaction ${e.transactionId}`,{force:!0,author:e.author},{pmRoot:e.pmRoot})}}}}function gt(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:await O(e.pmRoot,r.id,e.transactionId,n)?{state:"applied",result:{id:r.id,op:"update"}}:{state:"pending"}},async prepareCompensation(){return x(e.pmRoot,t)},async apply(){let o=(await _e(t.id,b(t.options,{author:e.author,message:g(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"update"}},async compensate(r){await M(e,t.id,n,r)}}}function _t(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:await O(e.pmRoot,r.id,e.transactionId,n)?{state:"applied",result:{id:r.id,op:"close"}}:r.closedAt===void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"close"}}},async prepareCompensation(){return x(e.pmRoot,t)},async apply(){let o=(await C(t.id,t.reason,b(t.options,{author:e.author,message:g(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"close"}},async compensate(r){await M(e,t.id,n,r)}}}function Et(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:await O(e.pmRoot,r.id,e.transactionId,n)?{state:"applied",result:{id:r.id,op:"release"}}:r.assignee!==void 0||r.claimPrincipal!==void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"release"}}},async prepareCompensation(){return x(e.pmRoot,t)},async apply(){let o=(await Ee(t.id,b(t.options,{author:e.author,message:g(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"release"}},async compensate(r){await M(e,t.id,n,r)}}}function We(e,t,n){let r=W(t,n);switch(t.op){case"create":return Le(e,t,r);case"update":return gt(e,t,r);case"close":return _t(e,t,r);case"release":return Et(e,t,r)}}function xe(e,t){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError(`Bulk mutation ${t+1} must be an object`);if(!["create","update","close","release"].includes(e.op))throw new TypeError(`Bulk mutation ${t+1} op must be create, update, close, or release`);if(typeof e.id!="string"||e.id.trim().length===0)throw new TypeError(`Bulk mutation ${t+1} requires a non-empty id`);if(e.op==="close"&&(typeof e.reason!="string"||e.reason.trim().length===0))throw new TypeError(`Bulk close mutation ${t+1} requires a non-empty reason`)}async function P(e,t,n){try{return await n()}catch(r){throw r instanceof d?new d(r.message,r.exitCode,{...r.context,transaction_operation:{index:t,op:e.op,id:e.id}}):r}}function ze(e,t,n,r){let o=l.relative(e,t);return["locks","runtime","search"].includes(o.split(l.sep)[0])?r.some(i=>o===i||o.startsWith(`${i}${l.sep}`)||i.startsWith(`${o}${l.sep}`)):o===""||n===void 0||n.some(i=>o===i||o.startsWith(`${i}${l.sep}`)||i.startsWith(`${o}${l.sep}`))}async function I(e){let t=await Pe(e);if(t.isSymbolicLink())await Ge(e);else if(t.isDirectory()||t.isFile())return t;throw new TypeError(`Transaction preview requires regular files and directories: ${e}`)}async function vt(e){let t=await lt(e,j.O_RDONLY|j.O_NOFOLLOW|j.O_NONBLOCK);try{let n=await t.stat();if(!n.isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${e}`);let r=L.createHash("sha256");if(n.size>0)for await(let o of t.createReadStream({highWaterMark:64*1024,end:n.size-1,autoClose:!1}))r.update(o);return r.digest()}finally{await t.close()}}async function G(e,t,n){let r=L.createHash("sha256");async function o(i){for(let s of(await ft(i)).sort()){let a=l.join(i,s);ze(e,a,t,n)&&((await I(a)).isDirectory()?await o(a):(r.update(JSON.stringify(l.relative(e,a))),r.update(await vt(a))))}}return await o(e),r.digest("hex")}function F(){return new d("Tracker changed while preparing the transaction preview; retry against stable state.",p.CONFLICT,{code:"transaction_preview_snapshot_changed"})}async function Be(e){if(!$(e))return!1;let t=e.path;if(typeof t!="string")return!1;try{return await Pe(t),!1}catch(n){return $(n)}}async function R(e,t){let n=l.join(e,t);try{let r=e;for(let o of t.split(l.sep).slice(0,-1))r=l.join(r,o),await I(r);if(!(await I(n)).isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${n}`);return await B(n,`Transaction preview requires regular files and directories: ${n}`)}catch(r){if(await Be(r))return;throw r}}async function St(e,t,n){let r=new Map,o=await R(e,v);r.set(v,o);let i;try{i=JSON.parse(o??"null")}catch{i=null}let s=ae(i),a=s.success?s.data:void 0,c=re(a?.schema);for(let[E,qe]of Object.entries(c.files)){let _=l.relative(e,ne(e,qe,te[E]));if(_===""||!l.resolve(e,_).startsWith(l.join(e,l.sep)))throw new d("Transaction preview requires schema files inside the selected tracker root; relocate the configured schema file before retrying.",p.USAGE,{code:"transaction_preview_external_schema",field:`schema.files.${E}`});c.files[E]=_;let k=await R(e,_);if(r.set(_,k),k!==void 0){let z=l.join(t,_);await pt(l.dirname(z),{recursive:!0}),await Fe(z,k)}}let u=l.relative(e,ie(e));r.set(u,await R(e,u));let f=await oe(t,c),y=V({...q,item_types:{definitions:[...a?.item_types?.definitions??[],...f.type_definitions_from_file??[]]}},n),Ke=Y(e)===e?[...J.filter(Boolean),v,ee,"transactions",...y.folders,...r.keys()].map(E=>l.normalize(E)):void 0,Je=a===void 0?void 0:JSON.stringify({...i,schema:{...a.schema,files:c.files}});return{configuration:r,ownedPaths:Ke,stagedSettings:Je,registryFolders:y.folders}}async function Tt(e,t,n){await Ge(e);try{let r=await mt(e),o=await St(r,l.join(l.dirname(t),"configuration"),n),i=[...o.configuration.keys(),...o.registryFolders].map(u=>l.normalize(u)),s=await G(r,o.ownedPaths,i);await dt(r,t,{recursive:!0,dereference:!1,filter:async u=>ze(r,u,o.ownedPaths,i)?(await I(u),!0):!1});let[a,c]=await Promise.all([G(r,o.ownedPaths,i),G(t,o.ownedPaths,i)]);if(s!==a||s!==c)throw F();for(let[u,f]of o.configuration)if(await R(t,u)!==f)throw F();o.stagedSettings!==void 0&&await Fe(l.join(t,v),o.stagedSettings)}catch(r){throw await Be(r)?F():r}}async function Wr(e){let t=pe(e),n=[...e.mutations];if(n.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(let[s,a]of n.entries())xe(a,s);let r=Q(),o=await ut(l.join(ht(),"pm-transaction-preview-")),i=l.join(o,"tracker");try{await Tt(t.pmRoot,i,r);let s=!1;return await Te({path:i,noExtensions:!0},async()=>{Z(r);let a={...t,pmRoot:i,createCompensation:"close"},c=n.map((u,f)=>{let y=We(a,u,f);return{...y,inspect:()=>P(u,f,()=>y.inspect()),prepareCompensation:()=>P(u,f,async()=>y.prepareCompensation?.()),apply:()=>P(u,f,()=>y.apply())}});await N({...t,pmRoot:i,steps:c,onTransition:({transition:u})=>{u==="committed"&&(s=!0)}})}),{validated:s,state:s?"staged_snapshot":"replayed_committed_plan",unresolved_commit_constraints:["concurrent_tracker_changes","extension_mutation_guards_and_hooks"]}}finally{await yt(o,{recursive:!0,force:!0})}}async function At(e){let t=[...e.mutations];if(t.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(let[s,a]of t.entries())xe(a,s);let n=e.createCompensation??"close";if(!["close","delete"].includes(n))throw new TypeError("Bulk item transaction createCompensation must be close or delete");let r={pmRoot:e.pmRoot,author:e.author,transactionId:e.transactionId,createCompensation:n},o=await N({pmRoot:e.pmRoot,transactionId:e.transactionId,author:e.author,steps:t.map((s,a)=>We(r,s,a)),...e.lockTtlSeconds===void 0?{}:{lockTtlSeconds:e.lockTtlSeconds},...e.lockWaitMs===void 0?{}:{lockWaitMs:e.lockWaitMs},...e.onTransition===void 0?{}:{onTransition:e.onTransition}}),i={};for(let[s,a]of t.entries()){let c=W(a,s),u=o.results[c];i[wt(a,s)]=u}return{transactionId:o.transactionId,status:"committed",recovered:o.recovered,results:i}}function Rt(e){let t=[];return e.evidence!==void 0&&Object.keys(e.evidence).length>0&&t.push({op:"update",id:e.id,options:e.evidence}),t.push({op:"close",id:e.id,reason:e.reason,...e.closeOptions===void 0?{}:{options:e.closeOptions}},{op:"release",id:e.id,...e.releaseOptions===void 0?{}:{options:e.releaseOptions}}),t}function xr(e){return At({pmRoot:e.pmRoot,transactionId:e.transactionId,author:e.author,mutations:Rt(e),...e.lockTtlSeconds===void 0?{}:{lockTtlSeconds:e.lockTtlSeconds},...e.lockWaitMs===void 0?{}:{lockWaitMs:e.lockWaitMs},...e.onTransition===void 0?{}:{onTransition:e.onTransition}})}var zr={buildCreateStep:Le,bulkHistoryMarker:g,compensateByRestore:M,deriveStepId:W,isUpdateMarkerApplied:O,readItemSnapshot:h};export{hr as a,De as b,wr as c,gr as d,_r as e,Wr as f,At as g,Rt as h,xr as i,zr as j};
2
- //# sourceMappingURL=chunk-HY6M34B4.js.map
1
+ import{$a as we,Ub as ge,Vb as _e,Xb as C,_b as Ee,a as ee,ac as ve,bc as Se,xc as Te}from"./chunk-SMKHR6BM.js";import{b as pe,c as N}from"./chunk-J52QIRRZ.js";import{Ai as de,B,Cc as Z,Dc as Q,Go as ye,Jo as he,Lg as ie,Nl as fe,Pl as me,Tb as X,Ua as V,ba as K,bb as Y,dg as te,ea as v,fg as re,gg as ne,ha as J,hi as ae,jg as oe,kh as se,ma as q,na as p,nk as ue,pa as d,tk as le,vb as H,yi as ce,z as $}from"./chunk-Y6VRBTP3.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]="4175f7f5-a689-5d05-982a-f92e21bc83e7")}catch{}})();import Ve from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="2b75ffc0-8175-58fc-8d63-98081a68dcb8")}catch{}})();var U=["op","id","reason","options"],Ae=[...U,"ref"],Re=["schema_version","mutations"],Ne="[a-z][a-z0-9._-]{0,63}",Ie=new RegExp(`^${Ne}$`,"u"),Ce=new RegExp(`(^|,)id=@(${Ne})(?=,|$)`,"gu"),be=e=>e.slice(2).replaceAll(/-([a-z])/gu,(t,n)=>n.toUpperCase()),T=["item","linked","schedule","claim_state","children","omission_receipt","row_contract","context_intent"],Ue=new Set(["created_at","updated_at","closed_at","version","format_version","path","author","collection_counts","notes_count","tests_count"]),Ye=new Set([...Ue,"completed_at","id"]),S=new Set(["id","title","description","type","status","priority","tags","body","deadline","estimated_minutes","acceptance_criteria","definition_of_ready","order","rank","assignee",...K,"affected_version","fixed_version","component","regression","customer_impact","close_reason","completed_at","dependencies","comments","notes","learnings","files","tests","docs","reminders","events","type_options"]),Oe={create:ye.map(e=>e.target),update:he.map(e=>e.target),close:ue.map(e=>be(e.flag)).filter(e=>e!=="reason"),release:le.map(e=>be(e.flag))};function hr(e){let t={},n=e.createCompensation;if(n!==void 0){if(n!=="close"&&n!=="delete")throw new d("createCompensation must be close or delete.",p.USAGE);t.createCompensation=n}for(let r of["lockTtlSeconds","lockWaitMs"]){let o=e[r];if(o===void 0)continue;let i=typeof o=="number"||typeof o=="string"&&o.trim().length>0?Number(o):Number.NaN;if(!Number.isSafeInteger(i)||i<=0)throw new d(`${r} must be a positive safe integer.`,p.USAGE);t[r]=i}return t}function m(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function A(e,t){let n=Math.max(1,Math.min(3,Math.floor(e.length/4)+1)),r;for(let o of t){let i=H(e,o,n);i!==null&&(r===void 0||i<r.distance)&&(r={key:o,distance:i})}return r?.key}function w(e,t,n){let r=A(t,n);return new d(r===void 0?`${e} does not recognize key "${t}". Allowed keys: ${n.join(", ")}.`:`${e} does not recognize key "${t}". Did you mean "${r}"?`,p.USAGE,{code:"stdin_json_unknown_key",required:`Use documented ${e} keys only.`,why:"Strict structured input prevents silent typos from creating incomplete or unintended mutations.",nextSteps:[r===void 0?`Remove or correct "${t}".`:`Replace "${t}" with "${r}".`]})}function D(e,t){try{return JSON.parse(e)}catch(n){let r=n instanceof Error?n.message:String(n);throw new d(`${t} must be valid JSON: ${r}`,p.USAGE,{code:"stdin_json_invalid",required:`Pipe one valid JSON ${t.toLowerCase()} into stdin.`,why:"Structured mutation input must parse deterministically before any tracker write begins."})}}function He(e,t){if(!m(e))throw new d(`Mutation ${t+1} must be an object.`,p.USAGE);for(let n of Object.keys(e))if(!U.includes(n))throw w(`mutation ${t+1}`,n,U);return e}function Xe(e,t,n){if(e!==void 0){if(!m(e))throw new d(`Mutation ${n+1} options must be an object.`,p.USAGE);for(let r of Object.keys(e))if(!Oe[t].includes(r))throw w(`mutation ${n+1} ${t} options`,r,Oe[t]);return e}}function Ze(e,t){let n=He(e,t),{op:r,id:o,reason:i}=n;if(r!=="create"&&r!=="update"&&r!=="close"&&r!=="release")throw new d(`Mutation ${t+1} op must be create, update, close, or release.`,p.USAGE);let s=Xe(n.options,r,t);if(typeof o!="string"||o.trim().length===0)throw new d(`Mutation ${t+1} requires a non-empty id.`,p.USAGE);let a=o.trim();if(r==="close"){if(typeof i!="string"||i.trim().length===0)throw new d(`Mutation ${t+1} close requires a non-empty reason.`,p.USAGE);return{op:r,id:a,reason:i.trim(),...s===void 0?{}:{options:s}}}if(r==="release")return{op:r,id:a,...s===void 0?{}:{options:s}};if(!m(s))throw new d(`Mutation ${t+1} ${r} requires an options object.`,p.USAGE);return{op:r,id:a,options:s}}function De(e){let t=D(e,"Mutation batch"),n=Array.isArray(t)?t:m(t)&&Array.isArray(t.mutations)?t.mutations:void 0;if(n===void 0||n.length===0)throw new d("Mutation batch must be a non-empty JSON array or an object with a non-empty mutations array.",p.USAGE);return n.map((r,o)=>{let i=Ze(r,o);return i.options!==void 0&&fe(i.options),i})}function Qe(e,t,n){let r=Ve.createHash("sha256").update(e).update("\0").update(t).digest("hex"),o=BigInt(`0x${r.slice(0,16)}`).toString(36).padStart(13,"0").slice(-12);return`${ce(n)}${o}`}function Me(e,t){if(typeof e!="string"||!e.startsWith("@"))return e;let n=e.slice(1),r=t[n];if(r===void 0)throw new d(`Unknown mutation reference "${e}".`,p.USAGE);return r}function ke(e,t){if(typeof e!="string")return e;let n=e.replace(Ce,(r,o,i)=>{let s=t[i];if(s===void 0)throw new d(`Unknown mutation reference "@${i}".`,p.USAGE);return`${o}id=${s}`});if(/(^|,)id=@/u.test(n))throw new d(`Malformed mutation reference in dependency "${e}".`,p.USAGE);return n}function et(e){return typeof e!="string"?[]:e.startsWith("@")?[e.slice(1)]:[...e.matchAll(Ce)].map(t=>t[1]).filter(t=>t!==void 0)}function tt(e){let t=new Map;for(let i of e){if(i.op!=="create"||typeof i.ref!="string")continue;let s=m(i.options)?i.options:{},a=Array.isArray(s.dep)?s.dep:s.dep===void 0?[]:[s.dep];t.set(i.ref,[s.parent,s.blockedBy,...a].flatMap(et))}let n=new Set,r=new Set,o=i=>{if(n.has(i))throw new d(`Mutation reference cycle includes "@${i}".`,p.USAGE);if(!r.has(i)){n.add(i);for(let s of t.get(i))t.has(s)&&o(s);n.delete(i),r.add(i)}};for(let i of t.keys())o(i)}function rt(e){let t=D(e,"Mutation document"),n=Array.isArray(t)?{schema_version:1,mutations:t}:t;if(!m(n))throw new d("Mutation document must be a JSON array or object.",p.USAGE);for(let r of Object.keys(n))if(!Re.includes(r))throw w("mutation document",r,Re);if(n.schema_version!==void 0&&n.schema_version!==1)throw new d("Mutation document schema_version must be 1.",p.USAGE);if(!Array.isArray(n.mutations)||n.mutations.length===0)throw new d("Mutation document requires a non-empty mutations array.",p.USAGE);return n.mutations.map((r,o)=>{if(!m(r))throw new d(`Mutation ${o+1} must be an object.`,p.USAGE);for(let i of Object.keys(r))if(!Ae.includes(i))throw w(`mutation ${o+1}`,i,Ae);return{...r}})}function nt(e,t){let n=Object.create(null);for(let[r,o]of e.entries())if(o.ref!==void 0){if(o.op!=="create")throw new d(`Mutation ${r+1} ref is only valid for create operations.`,p.USAGE);if(typeof o.ref!="string"||!Ie.test(o.ref))throw new d(`Mutation ${r+1} ref must match ${Ie.source}.`,p.USAGE);if(n[o.ref]!==void 0)throw new d(`Duplicate mutation ref "${o.ref}".`,p.USAGE);n[o.ref]=typeof o.id=="string"&&o.id.trim().length>0?de(o.id,t.idPrefix):Qe(t.transactionId,o.ref,t.idPrefix)}return n}function wr(e,t){let n=rt(e),r=nt(n,t);tt(n);let o=n.map(a=>{let c={...a},l=typeof c.ref=="string"?c.ref:void 0;if(delete c.ref,l!==void 0?c.id=r[l]:c.id=Me(c.id,r),m(c.options)){let f={...c.options};for(let y of["parent","blockedBy"])f[y]!==void 0&&(f[y]=Me(f[y],r));Array.isArray(f.dep)?f.dep=f.dep.map(y=>ke(y,r)):f.dep!==void 0&&(f.dep=ke(f.dep,r)),c.options=f}return c}),i=De(JSON.stringify(o)),s=i.filter(a=>a.op==="create").map(a=>a.id);if(new Set(s).size!==s.length)throw new d("Duplicate resolved create id in mutation document.",p.USAGE);return{schema_version:1,mutations:i,references:r}}function je(e,t){return t.filter(n=>e[n]!==void 0&&e[n]!==null).map(n=>{let r=String(e[n]);return`${n}=${/[",\n\r\\]/u.test(r)?JSON.stringify(r):r}`}).join(",")}function ot(e,t,n){if(e!==void 0){if(!Array.isArray(e)||!e.every(m))throw new d(`${n} must be an array of objects.`,p.USAGE);return e.map(r=>je(r,t))}}function it(e,t){return e==="tags"&&Array.isArray(t)&&t.every(n=>typeof n=="string")?JSON.stringify(t):typeof t=="number"||typeof t=="boolean"?String(t):t}function $e(e,t,n=!1){let r=[["dependencies","dep",["id","kind","created_at","author","source_kind"]],["comments","comment",["text","created_at","author"]],["notes","note",["text","created_at","author"]],["learnings","learning",["text","created_at","author"]],["files","file",["path","scope","note"]],["tests","test",["command","scope","timeout_seconds"]],["docs","doc",["path","scope","note"]],["reminders","reminder",["at","text","created_at"]],["events","event",["start_at","end_at","title","location"]],["type_options","typeOption",["key","value"]]];for(let[o,i,s]of r){let a=t[o],c=ot(n&&["comments","notes","learnings"].includes(o)&&Array.isArray(a)?a.filter(l=>!m(l)||l.created_at===void 0):a,s,o);c!==void 0&&c.length>0&&(e[i]=c)}}function st(e,t){for(let n of Object.keys(e)){if(t){if(!T.includes(n))throw w("item envelope",n,T);continue}if(!S.has(n)&&A(n,[...S])===void 0&&A(n,T)==="item")throw w("item envelope",n,T)}}function at(e){let t=Object.hasOwn(e,"item");st(e,t);let n=t?e.item:e;if(!m(n))throw new d("Item document item must be an object.",p.USAGE);return{item:n,...t&&m(e.linked)?{linked:e.linked}:{}}}function ct(e,t,n,r){if(!(r==="update"?Ye:Ue).has(t)){if(!S.has(t)){if(A(t,[...S])!==void 0)throw w("item document",t,[...S]);let s=Array.isArray(e.field)?e.field:[];s.push(je({key:t,value:typeof n=="string"?n:JSON.stringify(n)},["key","value"])),e.field=s;return}["dependencies","comments","notes","learnings","files","tests","docs","reminders","events","type_options"].includes(t)||(e[t.replaceAll(/_([a-z])/gu,(i,s)=>s.toUpperCase())]=it(t,n))}}function gr(e,t,n={}){let r=D(e,"Item document");if(!m(r))throw new d("Item document must be a JSON object.",p.USAGE);let{item:o,linked:i}=at(r),s={};for(let[a,c]of Object.entries(o))ct(s,a,c,t);if($e(s,o,t==="update"),i!==void 0&&$e(s,i),t==="update"){let a=Object.fromEntries(["comments","notes","learnings"].filter(c=>Object.hasOwn(o,c)).map(c=>[c,o[c].filter(l=>m(l)&&l.created_at!==void 0)]));Object.keys(a).length>0&&(s.documentAnnotationSnapshot=a)}return{...s,...Object.fromEntries(Object.entries(n).filter(([,a])=>a!==void 0)),stdinJson:void 0}}function _r(e){return De(JSON.stringify(e))}import L from"node:crypto";import{constants as j}from"node:fs";import{cp as dt,lstat as Pe,mkdir as pt,mkdtemp as ut,open as lt,readdir as ft,realpath as mt,rm as yt,stat as Ge,writeFile as Fe}from"node:fs/promises";import{tmpdir as ht}from"node:os";import u 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]="89fdfa7e-1a96-5cca-9fe9-3399aa86a349")}catch{}})();function b(e,t){let n={...e,...t};return e===void 0?n:me(e,n)}async function h(e,t){try{let r=(await we(t,{},{pmRoot:e})).item;return{id:r.id,closedAt:r.closed_at,updatedAt:r.updated_at,assignee:r.assignee,claimPrincipal:r.claim_principal}}catch(n){if(n instanceof d&&n.exitCode===p.NOT_FOUND)return;throw n}}function W(e,t){let n=e.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_"),r=L.createHash("sha256").update(X(e)).digest("hex").slice(0,12);return`${t+1}-${e.op}-${n}-${r}`}function wt(e,t){let n=e.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_");return`${t+1}-${e.op}-${n}`}function g(e,t,n){return`bulk-item-transaction ${e} ${t} ${n}`}async function O(e,t,n,r){let o=await se(u.join(e,"history",`${t}.jsonl`),t),i=g(n,r,"apply"),s=g(n,r,"compensate");for(let a=o.length-1;a>=0;a-=1){let c=o[a].message;if(c===i)return!0;if(c===s)return!1}return!1}async function x(e,t){let n=await h(e,t.id);if(n?.updatedAt===void 0)throw new d(`Bulk ${t.op} target ${t.id} does not exist or has no restorable version`,p.NOT_FOUND);return{target_updated_at:n.updatedAt}}async function M(e,t,n,r){let o=r!==null&&typeof r=="object"&&!Array.isArray(r)?r.target_updated_at:void 0;typeof o=="string"&&await h(e.pmRoot,t)!==void 0&&await Se(t,o,{force:!0,author:e.author,message:g(e.transactionId,n,"compensate")},{pmRoot:e.pmRoot})}function Le(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"create"}}},async apply(){let o=(await ge(b(t.options,{author:e.author,id:t.id}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"create"}},async compensate(){let r=await h(e.pmRoot,t.id);if(r!==void 0){if(e.createCompensation==="delete"){await ve(t.id,{force:!0,author:e.author,message:`Compensate interrupted bulk transaction ${e.transactionId}`},{pmRoot:e.pmRoot});return}r.closedAt===void 0&&await C(t.id,`Compensated: interrupted bulk transaction ${e.transactionId}`,{force:!0,author:e.author},{pmRoot:e.pmRoot})}}}}function gt(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:await O(e.pmRoot,r.id,e.transactionId,n)?{state:"applied",result:{id:r.id,op:"update"}}:{state:"pending"}},async prepareCompensation(){return x(e.pmRoot,t)},async apply(){let o=(await _e(t.id,b(t.options,{author:e.author,message:g(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"update"}},async compensate(r){await M(e,t.id,n,r)}}}function _t(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:await O(e.pmRoot,r.id,e.transactionId,n)?{state:"applied",result:{id:r.id,op:"close"}}:r.closedAt===void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"close"}}},async prepareCompensation(){return x(e.pmRoot,t)},async apply(){let o=(await C(t.id,t.reason,b(t.options,{author:e.author,message:g(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"close"}},async compensate(r){await M(e,t.id,n,r)}}}function Et(e,t,n){return{id:n,async inspect(){let r=await h(e.pmRoot,t.id);return r===void 0?{state:"pending"}:await O(e.pmRoot,r.id,e.transactionId,n)?{state:"applied",result:{id:r.id,op:"release"}}:r.assignee!==void 0||r.claimPrincipal!==void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"release"}}},async prepareCompensation(){return x(e.pmRoot,t)},async apply(){let o=(await Ee(t.id,b(t.options,{author:e.author,message:g(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(o.id),op:"release"}},async compensate(r){await M(e,t.id,n,r)}}}function We(e,t,n){let r=W(t,n);switch(t.op){case"create":return Le(e,t,r);case"update":return gt(e,t,r);case"close":return _t(e,t,r);case"release":return Et(e,t,r)}}function xe(e,t){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError(`Bulk mutation ${t+1} must be an object`);if(!["create","update","close","release"].includes(e.op))throw new TypeError(`Bulk mutation ${t+1} op must be create, update, close, or release`);if(typeof e.id!="string"||e.id.trim().length===0)throw new TypeError(`Bulk mutation ${t+1} requires a non-empty id`);if(e.op==="close"&&(typeof e.reason!="string"||e.reason.trim().length===0))throw new TypeError(`Bulk close mutation ${t+1} requires a non-empty reason`)}async function P(e,t,n){try{return await n()}catch(r){throw r instanceof d?new d(r.message,r.exitCode,{...r.context,transaction_operation:{index:t,op:e.op,id:e.id}}):r}}function ze(e,t,n,r){let o=u.relative(e,t);return["locks","runtime","search"].includes(o.split(u.sep)[0])?r.some(i=>o===i||o.startsWith(`${i}${u.sep}`)||i.startsWith(`${o}${u.sep}`)):o===""||n===void 0||n.some(i=>o===i||o.startsWith(`${i}${u.sep}`)||i.startsWith(`${o}${u.sep}`))}async function I(e){let t=await Pe(e);if(t.isSymbolicLink())await Ge(e);else if(t.isDirectory()||t.isFile())return t;throw new TypeError(`Transaction preview requires regular files and directories: ${e}`)}async function vt(e){let t=await lt(e,j.O_RDONLY|j.O_NOFOLLOW|j.O_NONBLOCK);try{let n=await t.stat();if(!n.isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${e}`);let r=L.createHash("sha256");if(n.size>0)for await(let o of t.createReadStream({highWaterMark:64*1024,end:n.size-1,autoClose:!1}))r.update(o);return r.digest()}finally{await t.close()}}async function G(e,t,n){let r=L.createHash("sha256");async function o(i){for(let s of(await ft(i)).sort()){let a=u.join(i,s);ze(e,a,t,n)&&((await I(a)).isDirectory()?await o(a):(r.update(JSON.stringify(u.relative(e,a))),r.update(await vt(a))))}}return await o(e),r.digest("hex")}function F(){return new d("Tracker changed while preparing the transaction preview; retry against stable state.",p.CONFLICT,{code:"transaction_preview_snapshot_changed"})}async function Be(e){if(!$(e))return!1;let t=e.path;if(typeof t!="string")return!1;let n=u.resolve(t),r=n;for(;;)try{let o=await Pe(r);return r!==n&&o.isDirectory()}catch(o){if(!$(o))return!1;let i=u.dirname(r);if(i===r)return!1;r=i}}async function R(e,t){let n=u.join(e,t);try{let r=e;for(let o of t.split(u.sep).slice(0,-1))r=u.join(r,o),await I(r);if(!(await I(n)).isFile())throw new TypeError(`Transaction preview requires regular files and directories: ${n}`);return await B(n,`Transaction preview requires regular files and directories: ${n}`)}catch(r){if(await Be(r))return;throw r}}async function St(e,t,n){let r=new Map,o=await R(e,v);r.set(v,o);let i;try{i=JSON.parse(o??"null")}catch{i=null}let s=ae(i),a=s.success?s.data:void 0,c=re(a?.schema);for(let[E,qe]of Object.entries(c.files)){let _=u.relative(e,ne(e,qe,te[E]));if(_===""||!u.resolve(e,_).startsWith(u.join(e,u.sep)))throw new d("Transaction preview requires schema files inside the selected tracker root; relocate the configured schema file before retrying.",p.USAGE,{code:"transaction_preview_external_schema",field:`schema.files.${E}`});c.files[E]=_;let k=await R(e,_);if(r.set(_,k),k!==void 0){let z=u.join(t,_);await pt(u.dirname(z),{recursive:!0}),await Fe(z,k)}}let l=u.relative(e,ie(e));r.set(l,await R(e,l));let f=await oe(t,c),y=V({...q,item_types:{definitions:[...a?.item_types?.definitions??[],...f.type_definitions_from_file??[]]}},n),Ke=Y(e)===e?[...J.filter(Boolean),v,ee,"transactions",...y.folders,...r.keys()].map(E=>u.normalize(E)):void 0,Je=a===void 0?void 0:JSON.stringify({...i,schema:{...a.schema,files:c.files}});return{configuration:r,ownedPaths:Ke,stagedSettings:Je,registryFolders:y.folders}}async function Tt(e,t,n){await Ge(e);try{let r=await mt(e),o=await St(r,u.join(u.dirname(t),"configuration"),n),i=[...o.configuration.keys(),...o.registryFolders].map(l=>u.normalize(l)),s=await G(r,o.ownedPaths,i);await dt(r,t,{recursive:!0,dereference:!1,filter:async l=>ze(r,l,o.ownedPaths,i)?(await I(l),!0):!1});let[a,c]=await Promise.all([G(r,o.ownedPaths,i),G(t,o.ownedPaths,i)]);if(s!==a||s!==c)throw F();for(let[l,f]of o.configuration)if(await R(t,l)!==f)throw F();o.stagedSettings!==void 0&&await Fe(u.join(t,v),o.stagedSettings)}catch(r){throw await Be(r)?F():r}}async function Wr(e){let t=pe(e),n=[...e.mutations];if(n.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(let[s,a]of n.entries())xe(a,s);let r=Q(),o=await ut(u.join(ht(),"pm-transaction-preview-")),i=u.join(o,"tracker");try{await Tt(t.pmRoot,i,r);let s=!1;return await Te({path:i,noExtensions:!0},async()=>{Z(r);let a={...t,pmRoot:i,createCompensation:"close"},c=n.map((l,f)=>{let y=We(a,l,f);return{...y,inspect:()=>P(l,f,()=>y.inspect()),prepareCompensation:()=>P(l,f,async()=>y.prepareCompensation?.()),apply:()=>P(l,f,()=>y.apply())}});await N({...t,pmRoot:i,steps:c,onTransition:({transition:l})=>{l==="committed"&&(s=!0)}})}),{validated:s,state:s?"staged_snapshot":"replayed_committed_plan",unresolved_commit_constraints:["concurrent_tracker_changes","extension_mutation_guards_and_hooks"]}}finally{await yt(o,{recursive:!0,force:!0})}}async function At(e){let t=[...e.mutations];if(t.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(let[s,a]of t.entries())xe(a,s);let n=e.createCompensation??"close";if(!["close","delete"].includes(n))throw new TypeError("Bulk item transaction createCompensation must be close or delete");let r={pmRoot:e.pmRoot,author:e.author,transactionId:e.transactionId,createCompensation:n},o=await N({pmRoot:e.pmRoot,transactionId:e.transactionId,author:e.author,steps:t.map((s,a)=>We(r,s,a)),...e.lockTtlSeconds===void 0?{}:{lockTtlSeconds:e.lockTtlSeconds},...e.lockWaitMs===void 0?{}:{lockWaitMs:e.lockWaitMs},...e.onTransition===void 0?{}:{onTransition:e.onTransition}}),i={};for(let[s,a]of t.entries()){let c=W(a,s),l=o.results[c];i[wt(a,s)]=l}return{transactionId:o.transactionId,status:"committed",recovered:o.recovered,results:i}}function Rt(e){let t=[];return e.evidence!==void 0&&Object.keys(e.evidence).length>0&&t.push({op:"update",id:e.id,options:e.evidence}),t.push({op:"close",id:e.id,reason:e.reason,...e.closeOptions===void 0?{}:{options:e.closeOptions}},{op:"release",id:e.id,...e.releaseOptions===void 0?{}:{options:e.releaseOptions}}),t}function xr(e){return At({pmRoot:e.pmRoot,transactionId:e.transactionId,author:e.author,mutations:Rt(e),...e.lockTtlSeconds===void 0?{}:{lockTtlSeconds:e.lockTtlSeconds},...e.lockWaitMs===void 0?{}:{lockWaitMs:e.lockWaitMs},...e.onTransition===void 0?{}:{onTransition:e.onTransition}})}var zr={buildCreateStep:Le,bulkHistoryMarker:g,compensateByRestore:M,deriveStepId:W,isUpdateMarkerApplied:O,readItemSnapshot:h};export{hr as a,De as b,wr as c,gr as d,_r as e,Wr as f,At as g,Rt as h,xr as i,zr as j};
2
+ //# sourceMappingURL=chunk-7CE2DJMA.js.map
@@ -1,2 +1,2 @@
1
- import{Fa as p,Ga as i,Ha as v,Ia as _}from"./chunk-ZI7F3FVE.js";import{cb as h}from"./chunk-R7ULWMBG.js";import u from"node:fs/promises";import c from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="3425a1da-ef02-5235-a3b7-158d9efd12a2")}catch{}})();function f(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function b(e){return e!=="invalid"&&e!=="unreadable"}function j(e){let r=JSON.parse(e);if(typeof r!="object"||r===null||Array.isArray(r))throw new SyntaxError("Invalid settings object");let t=r.extensions;if(t===void 0)return{enabled:[],disabled:[]};if(typeof t!="object"||t===null||Array.isArray(t))throw new SyntaxError("Invalid extensions settings");let n=t;if(n.enabled!==void 0&&(!Array.isArray(n.enabled)||!n.enabled.every(a=>typeof a=="string"))||n.disabled!==void 0&&(!Array.isArray(n.disabled)||!n.disabled.every(a=>typeof a=="string")))throw new SyntaxError("Invalid extension enablement lists");return{enabled:n.enabled??[],disabled:n.disabled??[]}}async function S(e){let r;try{r=await u.readFile(e,"utf8")}catch(t){return f(t)?{status:"absent",enabled:[],disabled:[]}:{status:"unreadable",enabled:[],disabled:[],error:{code:"settings_unreadable",path:e}}}try{return{status:"ok",...j(r)}}catch{return{status:"invalid",enabled:[],disabled:[],error:{code:"settings_invalid",path:e}}}}async function A(e){let r;try{r=await u.readFile(e,"utf8")}catch(t){if(f(t))try{if((await u.stat(c.dirname(e))).isDirectory())return{status:"absent",entries:[]}}catch(n){if(f(n))return{status:"absent",entries:[]}}return{status:"unreadable",entries:[],error:{code:"managed_state_unreadable",path:e}}}try{let t=JSON.parse(r),n=_(t);if(!n||typeof t!="object"||t===null||!Array.isArray(t.entries)||n.entries.length!==t.entries.length)throw new SyntaxError("Invalid managed extension state");return{status:"ok",entries:n.entries}}catch{return{status:"invalid",entries:[],error:{code:"managed_state_invalid",path:e}}}}async function I(e){try{return{directories:(await u.readdir(e,{withFileTypes:!0})).filter(t=>t.isDirectory()).map(t=>t.name).sort((t,n)=>t.localeCompare(n))}}catch(r){return f(r)?{directories:[]}:{directories:[],error:{code:"extensions_unreadable",path:e}}}}async function D(e){let r;try{r=await u.readFile(e,"utf8")}catch(t){return f(t)?{manifest:null,error:{code:"manifest_invalid",path:e}}:{manifest:null,error:{code:"manifest_unreadable",path:e}}}try{let t=v(JSON.parse(r));return t?{manifest:t}:{manifest:null,error:{code:"manifest_invalid",path:e}}}catch{return{manifest:null,error:{code:"manifest_invalid",path:e}}}}function M(e){let r=e.manifest?.name??e.directory,t=new Set(p(e.settings.enabled)),n=new Set(p(e.settings.disabled)),a=!b(e.settings.status)||!e.manifest?null:!n.has(r)&&(t.size===0||t.has(r)),o=b(e.managed.status)?e.managed.entries.some(d=>i(d.name)===i(r)||i(d.directory)===i(e.directory)):null;return{name:r,directory:e.directory,scope:e.scope,installed:!0,status:e.manifest?a===!1?"inactive":"installed":"malformed_manifest",configured_enabled:a,managed:o,runtime_active:null,...e.manifest?{version:e.manifest.version}:{}}}async function R(e){let r=e.scope??"project",t=r==="global"?h(e.cwd??process.cwd()):e.pmRoot,n=c.join(t,"extensions"),a=await S(c.join(t,"settings.json")),o=await A(c.join(n,".managed-extensions.json")),d=await I(n),l=[];for(let s of[a,o,d])s.error&&l.push(s.error);let m=e.name?.trim(),y=[];for(let s of d.directories){let x=c.join(n,s,"manifest.json"),g=await D(x);g.error&&l.push(g.error);let w=M({directory:s,scope:r,manifest:g.manifest,settings:a,managed:o});m&&![w.name,s].some(E=>i(E)===i(m))||y.push(w)}return m&&y.length===0&&l.every(s=>s.code!=="extensions_unreadable")&&y.push({name:m,directory:null,scope:r,installed:!1,status:"absent",configured_enabled:b(a.status)?!1:null,managed:b(o.status)?!1:null,runtime_active:null}),{scope:r,complete:l.length===0,settings_status:a.status,managed_state_status:o.status,extensions:y,errors:l}}export{R as a};
2
- //# sourceMappingURL=chunk-WP6NRH72.js.map
1
+ import{Fa as p,Ga as i,Ha as v,Ia as _}from"./chunk-J52QIRRZ.js";import{cb as h}from"./chunk-Y6VRBTP3.js";import u from"node:fs/promises";import c from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="3425a1da-ef02-5235-a3b7-158d9efd12a2")}catch{}})();function f(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function b(e){return e!=="invalid"&&e!=="unreadable"}function j(e){let r=JSON.parse(e);if(typeof r!="object"||r===null||Array.isArray(r))throw new SyntaxError("Invalid settings object");let t=r.extensions;if(t===void 0)return{enabled:[],disabled:[]};if(typeof t!="object"||t===null||Array.isArray(t))throw new SyntaxError("Invalid extensions settings");let n=t;if(n.enabled!==void 0&&(!Array.isArray(n.enabled)||!n.enabled.every(a=>typeof a=="string"))||n.disabled!==void 0&&(!Array.isArray(n.disabled)||!n.disabled.every(a=>typeof a=="string")))throw new SyntaxError("Invalid extension enablement lists");return{enabled:n.enabled??[],disabled:n.disabled??[]}}async function S(e){let r;try{r=await u.readFile(e,"utf8")}catch(t){return f(t)?{status:"absent",enabled:[],disabled:[]}:{status:"unreadable",enabled:[],disabled:[],error:{code:"settings_unreadable",path:e}}}try{return{status:"ok",...j(r)}}catch{return{status:"invalid",enabled:[],disabled:[],error:{code:"settings_invalid",path:e}}}}async function A(e){let r;try{r=await u.readFile(e,"utf8")}catch(t){if(f(t))try{if((await u.stat(c.dirname(e))).isDirectory())return{status:"absent",entries:[]}}catch(n){if(f(n))return{status:"absent",entries:[]}}return{status:"unreadable",entries:[],error:{code:"managed_state_unreadable",path:e}}}try{let t=JSON.parse(r),n=_(t);if(!n||typeof t!="object"||t===null||!Array.isArray(t.entries)||n.entries.length!==t.entries.length)throw new SyntaxError("Invalid managed extension state");return{status:"ok",entries:n.entries}}catch{return{status:"invalid",entries:[],error:{code:"managed_state_invalid",path:e}}}}async function I(e){try{return{directories:(await u.readdir(e,{withFileTypes:!0})).filter(t=>t.isDirectory()).map(t=>t.name).sort((t,n)=>t.localeCompare(n))}}catch(r){return f(r)?{directories:[]}:{directories:[],error:{code:"extensions_unreadable",path:e}}}}async function D(e){let r;try{r=await u.readFile(e,"utf8")}catch(t){return f(t)?{manifest:null,error:{code:"manifest_invalid",path:e}}:{manifest:null,error:{code:"manifest_unreadable",path:e}}}try{let t=v(JSON.parse(r));return t?{manifest:t}:{manifest:null,error:{code:"manifest_invalid",path:e}}}catch{return{manifest:null,error:{code:"manifest_invalid",path:e}}}}function M(e){let r=e.manifest?.name??e.directory,t=new Set(p(e.settings.enabled)),n=new Set(p(e.settings.disabled)),a=!b(e.settings.status)||!e.manifest?null:!n.has(r)&&(t.size===0||t.has(r)),o=b(e.managed.status)?e.managed.entries.some(d=>i(d.name)===i(r)||i(d.directory)===i(e.directory)):null;return{name:r,directory:e.directory,scope:e.scope,installed:!0,status:e.manifest?a===!1?"inactive":"installed":"malformed_manifest",configured_enabled:a,managed:o,runtime_active:null,...e.manifest?{version:e.manifest.version}:{}}}async function R(e){let r=e.scope??"project",t=r==="global"?h(e.cwd??process.cwd()):e.pmRoot,n=c.join(t,"extensions"),a=await S(c.join(t,"settings.json")),o=await A(c.join(n,".managed-extensions.json")),d=await I(n),l=[];for(let s of[a,o,d])s.error&&l.push(s.error);let m=e.name?.trim(),y=[];for(let s of d.directories){let x=c.join(n,s,"manifest.json"),g=await D(x);g.error&&l.push(g.error);let w=M({directory:s,scope:r,manifest:g.manifest,settings:a,managed:o});m&&![w.name,s].some(E=>i(E)===i(m))||y.push(w)}return m&&y.length===0&&l.every(s=>s.code!=="extensions_unreadable")&&y.push({name:m,directory:null,scope:r,installed:!1,status:"absent",configured_enabled:b(a.status)?!1:null,managed:b(o.status)?!1:null,runtime_active:null}),{scope:r,complete:l.length===0,settings_status:a.status,managed_state_status:o.status,extensions:y,errors:l}}export{R as a};
2
+ //# sourceMappingURL=chunk-7UVXKI7K.js.map
@@ -1,3 +1,3 @@
1
- import{a as k,c as I,d as A,e as _,k as T,m as C}from"./chunk-R4TUD355.js";import{Db as b,Eb as v,Fb as R}from"./chunk-SV7CZEVV.js";import{Gc as E,Gn as H,Jf as D,Mf as m,Nf as y,Qo as f,To as g,Uo as a,Yl as x,lp as w,na as c,pa as p}from"./chunk-R7ULWMBG.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="631e56aa-4d7e-58b6-bbea-a0d320716b82")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="0bcdd63c-5fd3-585d-a6c5-9393029ef864")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="4dce4f19-071c-54a8-be0d-5975d9e3b34b")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="f330a0c5-a967-5383-9c27-efa4a39e0f0d")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="420952ed-9a04-55dd-bcb8-804d81582002")}catch{}})();function B(t,e){if(typeof t!="string")return;let o=Number.parseInt(t,10);if(!/^\d+$/.test(t.trim())||!Number.isSafeInteger(o))throw new p(`history-compact ${e} must be a non-negative integer.`,c.USAGE);return o}async function O(t,e,o){let r=f(o),n=Date.now(),i=await x(a(e,"ids")),l=i===void 0?void 0:H(i),d=B(e.allOver,"--all-over"),u=B(e.minEntries,"--min-entries");if(e.closed===!0&&e.allStreams===!0)throw new p("history-compact: --closed and --all-streams are mutually exclusive; pick one lifecycle scope.",c.USAGE);let s=e.closed===!0?"closed":e.allStreams===!0?"all-streams":void 0;if((l!==void 0||d!==void 0||s!==void 0)&&typeof e.before=="string")throw new p("history-compact: --before applies only in single-id mode (bulk mode always compacts full streams).",c.USAGE);if(I(t,{ids:l,allOver:d,scope:s}),t!==void 0&&u!==void 0)throw new p("history-compact: --min-entries applies only in bulk mode (single-id mode compacts the named stream).",c.USAGE);if(t===void 0){let h=await A({ids:l,scope:s,allOver:d,minEntries:u,dryRun:e.dryRun===!0,author:a(e,"author"),message:a(e,"message"),force:!!e.force},r);m(h,r),h.totals.items_errored>0&&(process.exitCode=c.GENERIC_FAILURE)}else{let h=await k(t,{before:a(e,"before"),dryRun:e.dryRun===!0,author:a(e,"author"),message:a(e,"message"),force:!!e.force},r);m(h,r)}r.profile&&y(`profile:command=history-compact took_ms=${Date.now()-n}`)}async function S(t,e,o,r){let n=f(r),i=Date.now(),l=await C(t,e,{author:a(o,"author"),message:a(o,"message"),force:!!o.force},n);await w(n,l),m(l,n),n.profile&&y(`profile:command=restore took_ms=${Date.now()-i}`)}async function N(t,e){let o=f(e),r=await T({verify:a(t,"verify"),output:a(t,"output"),hashAlgorithm:a(t,"hashAlgorithm")},o);"format"in r?(E(r),o.quiet||D(`${JSON.stringify(r,null,2)}
1
+ import{a as k,c as I,d as A,e as _,k as T,m as C}from"./chunk-JDKD3WGG.js";import{Db as b,Eb as v,Fb as R}from"./chunk-QXIDOOWT.js";import{Gc as E,Hn as H,Jf as D,Mf as m,Nf as y,Ro as f,Uo as g,Vo as a,Zl as x,mp as w,na as c,pa as p}from"./chunk-Y6VRBTP3.js";(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="631e56aa-4d7e-58b6-bbea-a0d320716b82")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="0bcdd63c-5fd3-585d-a6c5-9393029ef864")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="4dce4f19-071c-54a8-be0d-5975d9e3b34b")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="f330a0c5-a967-5383-9c27-efa4a39e0f0d")}catch{}})();(function(){try{var t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},e=new t.Error().stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="420952ed-9a04-55dd-bcb8-804d81582002")}catch{}})();function B(t,e){if(typeof t!="string")return;let o=Number.parseInt(t,10);if(!/^\d+$/.test(t.trim())||!Number.isSafeInteger(o))throw new p(`history-compact ${e} must be a non-negative integer.`,c.USAGE);return o}async function O(t,e,o){let r=f(o),n=Date.now(),i=await x(a(e,"ids")),l=i===void 0?void 0:H(i),d=B(e.allOver,"--all-over"),u=B(e.minEntries,"--min-entries");if(e.closed===!0&&e.allStreams===!0)throw new p("history-compact: --closed and --all-streams are mutually exclusive; pick one lifecycle scope.",c.USAGE);let s=e.closed===!0?"closed":e.allStreams===!0?"all-streams":void 0;if((l!==void 0||d!==void 0||s!==void 0)&&typeof e.before=="string")throw new p("history-compact: --before applies only in single-id mode (bulk mode always compacts full streams).",c.USAGE);if(I(t,{ids:l,allOver:d,scope:s}),t!==void 0&&u!==void 0)throw new p("history-compact: --min-entries applies only in bulk mode (single-id mode compacts the named stream).",c.USAGE);if(t===void 0){let h=await A({ids:l,scope:s,allOver:d,minEntries:u,dryRun:e.dryRun===!0,author:a(e,"author"),message:a(e,"message"),force:!!e.force},r);m(h,r),h.totals.items_errored>0&&(process.exitCode=c.GENERIC_FAILURE)}else{let h=await k(t,{before:a(e,"before"),dryRun:e.dryRun===!0,author:a(e,"author"),message:a(e,"message"),force:!!e.force},r);m(h,r)}r.profile&&y(`profile:command=history-compact took_ms=${Date.now()-n}`)}async function S(t,e,o,r){let n=f(r),i=Date.now(),l=await C(t,e,{author:a(o,"author"),message:a(o,"message"),force:!!o.force},n);await w(n,l),m(l,n),n.profile&&y(`profile:command=restore took_ms=${Date.now()-i}`)}async function N(t,e){let o=f(e),r=await T({verify:a(t,"verify"),output:a(t,"output"),hashAlgorithm:a(t,"hashAlgorithm")},o);"format"in r?(E(r),o.quiet||D(`${JSON.stringify(r,null,2)}
2
2
  `)):m(r,o),"ok"in r&&!r.ok&&(process.exitCode=c.GENERIC_FAILURE)}function ee(t,e){t.command(e?"attest":"history-attest",{hidden:!e}).summary("Export or verify history proof.").option("--verify <file>","Compare retained streams with a detached JSON proof").option("--output <file>","Create a proof file and return a compact receipt").option("--hash-algorithm <name>","Bundle digest algorithm: sha256 (default) or sha512").description("Export exact-byte history commitments, or verify an independently retained proof without tracker writes.").action(N),t.command("restore",{hidden:!e}).summary("Restore a version.").argument("<id>","Item id").argument("<target>","Restore target timestamp or version number").option("--author <value>","Mutation author").option("--message <value>","History message").option("--force","Force ownership/lock override").description("Restore an item to an earlier timestamp or version.").action(S),t.command(e?"redact":"history-redact",{hidden:!e}).summary("Redact sensitive values.").argument("<id>","Item id").option("--literal <value>","Literal string to redact (repeatable)",g).option("--regex <value>","Regex pattern to redact (repeatable; accepts /pattern/flags or raw pattern)",g).option("--replacement <value>",'Replacement string (default: "[redacted]")').option("--dry-run","Preview redaction impact without writing item/history files").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the redaction marker entry").option("--force","Force ownership/lock override").description("Redact sensitive literals/patterns from an item history stream and recompute hashes.").action(async(o,r,n)=>{let i=f(n),l=Date.now(),d=Array.isArray(r.literal)?r.literal:void 0,u=Array.isArray(r.regex)?r.regex:void 0,s=await _(o,{literal:d,regex:u,replacement:a(r,"replacement"),dryRun:r.dryRun===!0,author:a(r,"author"),message:a(r,"message"),force:!!r.force},i);s.changed&&!s.dry_run&&await w(i,s),m(s,i),i.profile&&y(`profile:command=history-redact took_ms=${Date.now()-l}`)}),t.command(e?"repair":"history-repair",{hidden:!e}).summary("Repair drift.").argument("[id]","Item id (omit with --all)").option("--salvage-tail","Recover invalid tail; requires verified prefix").option("--all","Scan every stream for drift and repair each drifted stream in one audited pass").option("--dry-run","Preview the re-anchor impact without writing the history file").option("--normalize-provenance","Remove invalid provenance; return aggregate-only evidence").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the repair marker entry").option("--force","Force ownership/lock override").description("Re-anchor a drifted item history chain (recompute hashes, reconcile with the on-disk item) and record an audit marker. Use --all to repair every drifted stream.").action(async(o,r,n)=>{let i=f(n),l=Date.now(),d=r.all===!0;v(o,d);let u={dryRun:r.dryRun===!0,author:a(r,"author"),message:a(r,"message"),force:!!r.force,normalizeProvenance:r.normalizeProvenance===!0,salvageTail:r.salvageTail===!0};if(d){let s=await R(u,i);m(s,i),s.totals.failed>0&&(process.exitCode=c.GENERIC_FAILURE)}else{let s=await b(o,u,i);m(s,i)}i.profile&&y(`profile:command=history-repair took_ms=${Date.now()-l}`)}),t.command(e?"compact":"history-compact",{hidden:!e}).summary("Compact streams.").argument("[id]","Item id (omit when using a bulk selector)").option("--before <value>","Compact entries strictly before this version number or ISO timestamp (single-id mode only)").option("--ids <value>","Bulk IDs: comma/newline text, - stdin, or @path file").option("--all-over <n>","Bulk: compact every stream with more than N entries").option("--closed","Bulk: compact only closed (terminal) items' streams").option("--all-streams","Bulk: compact every history stream regardless of lifecycle state").option("--min-entries <n>","Bulk: skip streams with at most N entries (already compact; default 3)").option("--dry-run","Preview compaction impact without writing the history file").option("--author <value>","Mutation author").option("--message <value>","Audit history message for the compaction marker entry").option("--force","Force ownership/lock override").description("Compact item history streams into a synthetic baseline plus retained tail entries. Pass an item id for one stream, or a bulk selector (--ids/--all-over/--closed/--all-streams) to compact many.").action(O)}export{ee as a};
3
- //# sourceMappingURL=chunk-7FUEQOYG.js.map
3
+ //# sourceMappingURL=chunk-D7Z2ZMJL.js.map
@@ -1,3 +1,3 @@
1
- import{aa as f,ba as _,da as p,fa as g}from"./chunk-SV7CZEVV.js";import{yf as c}from"./chunk-R7ULWMBG.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="d3714178-d64c-564c-a1bc-e5393fc57758")}catch{}})();var m="not-a-declared-intent",n="not-a-declared-field";function y(){let e={get:["pm-domain"],search:["Domain query"]},r=[...new Set(c.map(({command:o})=>o))].map(o=>{let i=c.filter(d=>d.command===o),s=i[0],u=e[s.command]??[];return{probe_id:`${s.command}-invalid-intent`,command:s.command,flag:"--for",rejected_value:m,refusal_args:[s.command,...u,"--for",m],allowed_values:i.map(({intent:d})=>d).sort(),suggested_retry_args:[s.command,...u,"--for",s.intent],error_code:"unknown_context_intent"}}),t=_(),l=Object.keys(f).map(o=>({probe_id:`${o}-invalid-field`,command:o,flag:"--fields",rejected_value:n,refusal_args:[o,"--fields",n],allowed_values:t,suggested_retry_args:[o,"--fields","id,title,status"],error_code:"unknown_field_projection"}));return[...r,...l,{probe_id:"get-invalid-field",command:"get",flag:"--fields",rejected_value:n,refusal_args:["get","pm-domain","--fields",n],allowed_values:p(),suggested_retry_args:["get","pm-domain","--fields","id,title,status"],error_code:"unknown_field_projection"},{probe_id:"list-mutually-exclusive-projection",command:"list",flag:"--projection",rejected_value:"--brief+--full",refusal_args:["list","--brief","--full"],allowed_values:[],suggested_retry_args:["list","--brief"],error_code:"projection_options_mutually_exclusive",allowed_values_required:!1},{probe_id:"get-mutually-exclusive-projection",command:"get",flag:"--projection",rejected_value:"--full+--fields",refusal_args:["get","pm-domain","--full","--fields","id"],allowed_values:[],suggested_retry_args:["get","pm-domain","--full"],error_code:"projection_options_mutually_exclusive",allowed_values_required:!1},{probe_id:"search-mutually-exclusive-projection",command:"search",flag:"--projection",rejected_value:"--full+--fields",refusal_args:["search","Domain query","--full","--fields","id"],allowed_values:[],suggested_retry_args:["search","Domain query","--full"],error_code:"projection_options_mutually_exclusive",allowed_values_required:!1},{probe_id:"package-upgrade-mutually-exclusive-modes",command:"package upgrade",flag:"--cli-only/--packages-only",rejected_value:"--cli-only+--packages-only",refusal_args:["package","upgrade","--cli-only","--packages-only","--dry-run"],allowed_values:[],suggested_retry_args:["package","upgrade","--packages-only","--dry-run"],error_code:"package_upgrade_modes_mutually_exclusive",allowed_values_required:!1},{probe_id:"search-invalid-field",command:"search",flag:"--fields",rejected_value:n,refusal_args:["search","Domain query","--fields",n],allowed_values:g(),suggested_retry_args:["search","Domain query","--fields","id,title,status,score"],error_code:"unknown_field_projection"}].sort((o,i)=>o.probe_id.localeCompare(i.probe_id))}function j(e,r){let t=y().find(o=>o.command===e&&o.flag===r);if(!t)return"No stable core values are declared.";let l=t.allowed_values.filter(o=>!o.startsWith("item.")),a=r==="--fields"?" item.<field> aliases and configured runtime metadata fields are also accepted.":" Configured package and workspace intents may extend this domain.";return`Allowed core values: ${l.join("|")}.${a}`}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="c56ec8fb-56b5-57a6-9d77-843c774dcc20")}catch{}})();function w(e){return e.map((r,t)=>{if(typeof r!="object"||r===null||Array.isArray(r))throw new TypeError(`NDJSON row ${t} must be a non-null object.`);let l=JSON.stringify(r);if(l===void 0)throw new TypeError(`NDJSON row ${t} must serialize to a non-null object.`);let a=JSON.parse(l);if(typeof a!="object"||a===null||Array.isArray(a))throw new TypeError(`NDJSON row ${t} must serialize to a non-null object.`);return l}).join(`
1
+ import{aa as f,ba as _,da as p,fa as g}from"./chunk-QXIDOOWT.js";import{yf as c}from"./chunk-Y6VRBTP3.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="d3714178-d64c-564c-a1bc-e5393fc57758")}catch{}})();var m="not-a-declared-intent",n="not-a-declared-field";function y(){let e={get:["pm-domain"],search:["Domain query"]},r=[...new Set(c.map(({command:o})=>o))].map(o=>{let i=c.filter(d=>d.command===o),s=i[0],u=e[s.command]??[];return{probe_id:`${s.command}-invalid-intent`,command:s.command,flag:"--for",rejected_value:m,refusal_args:[s.command,...u,"--for",m],allowed_values:i.map(({intent:d})=>d).sort(),suggested_retry_args:[s.command,...u,"--for",s.intent],error_code:"unknown_context_intent"}}),t=_(),l=Object.keys(f).map(o=>({probe_id:`${o}-invalid-field`,command:o,flag:"--fields",rejected_value:n,refusal_args:[o,"--fields",n],allowed_values:t,suggested_retry_args:[o,"--fields","id,title,status"],error_code:"unknown_field_projection"}));return[...r,...l,{probe_id:"get-invalid-field",command:"get",flag:"--fields",rejected_value:n,refusal_args:["get","pm-domain","--fields",n],allowed_values:p(),suggested_retry_args:["get","pm-domain","--fields","id,title,status"],error_code:"unknown_field_projection"},{probe_id:"list-mutually-exclusive-projection",command:"list",flag:"--projection",rejected_value:"--brief+--full",refusal_args:["list","--brief","--full"],allowed_values:[],suggested_retry_args:["list","--brief"],error_code:"projection_options_mutually_exclusive",allowed_values_required:!1},{probe_id:"get-mutually-exclusive-projection",command:"get",flag:"--projection",rejected_value:"--full+--fields",refusal_args:["get","pm-domain","--full","--fields","id"],allowed_values:[],suggested_retry_args:["get","pm-domain","--full"],error_code:"projection_options_mutually_exclusive",allowed_values_required:!1},{probe_id:"search-mutually-exclusive-projection",command:"search",flag:"--projection",rejected_value:"--full+--fields",refusal_args:["search","Domain query","--full","--fields","id"],allowed_values:[],suggested_retry_args:["search","Domain query","--full"],error_code:"projection_options_mutually_exclusive",allowed_values_required:!1},{probe_id:"package-upgrade-mutually-exclusive-modes",command:"package upgrade",flag:"--cli-only/--packages-only",rejected_value:"--cli-only+--packages-only",refusal_args:["package","upgrade","--cli-only","--packages-only","--dry-run"],allowed_values:[],suggested_retry_args:["package","upgrade","--packages-only","--dry-run"],error_code:"package_upgrade_modes_mutually_exclusive",allowed_values_required:!1},{probe_id:"search-invalid-field",command:"search",flag:"--fields",rejected_value:n,refusal_args:["search","Domain query","--fields",n],allowed_values:g(),suggested_retry_args:["search","Domain query","--fields","id,title,status,score"],error_code:"unknown_field_projection"}].sort((o,i)=>o.probe_id.localeCompare(i.probe_id))}function j(e,r){let t=y().find(o=>o.command===e&&o.flag===r);if(!t)return"No stable core values are declared.";let l=t.allowed_values.filter(o=>!o.startsWith("item.")),a=r==="--fields"?" item.<field> aliases and configured runtime metadata fields are also accepted.":" Configured package and workspace intents may extend this domain.";return`Allowed core values: ${l.join("|")}.${a}`}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},r=new e.Error().stack;r&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[r]="c56ec8fb-56b5-57a6-9d77-843c774dcc20")}catch{}})();function w(e){return e.map((r,t)=>{if(typeof r!="object"||r===null||Array.isArray(r))throw new TypeError(`NDJSON row ${t} must be a non-null object.`);let l=JSON.stringify(r);if(l===void 0)throw new TypeError(`NDJSON row ${t} must serialize to a non-null object.`);let a=JSON.parse(l);if(typeof a!="object"||a===null||Array.isArray(a))throw new TypeError(`NDJSON row ${t} must serialize to a non-null object.`);return l}).join(`
2
2
  `)}function S(e,r){if(r.count!==e.length)throw new TypeError(`NDJSON trailer count ${r.count} does not match ${e.length} ${e.length===1?"row":"rows"}.`);for(let[t,l]of e.entries())if(typeof l=="object"&&l!==null&&!Array.isArray(l)&&Reflect.get(l,"record_type")==="pm.stream.trailer")throw new TypeError(`NDJSON row ${t} uses reserved record_type pm.stream.trailer`);return w([...e,{...r,record_type:"pm.stream.trailer"}])}export{y as a,j as b,w as c,S as d};
3
- //# sourceMappingURL=chunk-TRYXVQ7W.js.map
3
+ //# sourceMappingURL=chunk-GZMWISWW.js.map
@@ -1,4 +1,4 @@
1
- import{$i as De,A as U,Bi as ci,C as ae,Ci as li,Dc as B,Di as Ie,E as V,Ei as di,Fi as pi,Gn as vi,Hb as Bo,I as ue,Jb as Ho,Ld as Dt,Mb as Ne,Mc as K,Md as Qo,N as Po,Nd as Sn,Od as En,Oi as ui,Pd as $n,Qf as Se,Rd as ei,Sa as jo,Sd as ti,Ta as Lo,U as Ro,Ua as z,Ui as mi,Vd as ni,X as Ct,Xi as Lt,Yi as Ft,ab as N,ae as oi,bb as Fo,bd as Zo,bi as In,ca as No,cb as Mo,cd as st,cg as I,db as Go,dg as Q,dh as ai,di as si,eg as ii,ei as He,ej as fi,ff as T,fg as Y,fj as An,gc as xn,gg as ie,ha as wn,hc as Ko,ic as Rt,ig as ri,ih as H,ja as Do,k as Co,kc as ke,kg as ct,li as se,ma as vn,mc as xe,mf as Z,mg as jt,na as h,om as gi,pa as f,pc as Vo,pi as A,pm as je,qi as Ee,qm as lt,rc as Nt,rm as yi,sc as Yo,sm as _i,ta as Pt,tb as Uo,tc as Xo,tm as ce,ua as bn,ub as zo,um as Ke,va as kn,vb as Jo,vm as wi,vo as Mt,wm as me,x,xi as $e,xl as hi,y as Ot,yb as qo,z as pe,zb as Wo}from"./chunk-R7ULWMBG.js";import{mkdir as tc,readFile as nc}from"node:fs/promises";import Ei 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]="d9ef3878-afce-5983-8fe9-8a896f82d0a7")}catch{}})();var Tn=class extends Error{constructor(t="Workspace transaction interrupted"){super(t),this.name="WorkspaceTransactionInterruptedError"}},oc="sdk-workspace-transaction",ic=/^[a-zA-Z0-9._-]+$/,rc=30,ac=3e3;function $i(e,t){if(typeof e!="string")throw new TypeError(`${t} must be a string`);let n=e.trim();if(!n||!ic.test(n))throw new TypeError(`${t} must match [a-zA-Z0-9._-]+`);return n}function bi(e,t){if(typeof e!="string")throw new TypeError(`${t} must be a string`);let n=e.trim();if(!n)throw new TypeError(`${t} must be non-empty`);return n}function sc(e){return{pmRoot:bi(e.pmRoot,"Transaction pmRoot"),transactionId:$i(e.transactionId,"Transaction id"),author:bi(e.author,"Transaction author")}}function ki(e,t,n){let o=e??t;if(!Number.isInteger(o)||o<=0)throw new TypeError(`${n} must be a positive integer`);return o}function Ii(e,t){return Ei.join(e,"transactions","sdk",`${t}.json`)}async function Ae(e,t){t.updatedAt=T();let n=Ii(e,t.transactionId);await tc(Ei.dirname(n),{recursive:!0}),await ae(n,`${JSON.stringify(t,null,2)}
1
+ import{A as U,C as ae,Ci as ci,Dc as B,Di as li,E as V,Ei as Ie,Fi as di,Gi as pi,Hb as Bo,Hn as vi,I as ue,Jb as Ho,Ld as Dt,Mb as Ne,Mc as K,Md as Qo,N as Po,Nd as Sn,Od as En,Pd as $n,Pi as ui,Qf as Se,Rd as ei,Sa as jo,Sd as ti,Ta as Lo,U as Ro,Ua as z,Vd as ni,Vi as mi,X as Ct,Yi as Lt,Zi as Ft,ab as N,ae as oi,aj as De,bb as Fo,bd as Zo,bi as In,ca as No,cb as Mo,cd as st,cg as I,db as Go,dg as Q,dh as ai,di as si,eg as ii,ei as He,ff as T,fg as Y,fj as fi,gc as xn,gg as ie,gj as An,ha as wn,hc as Ko,ic as Rt,ig as ri,ih as H,ja as Do,k as Co,kc as ke,kg as ct,li as se,ma as vn,mc as xe,mf as Z,mg as jt,na as h,pa as f,pc as Vo,pm as gi,qi as A,qm as je,rc as Nt,ri as Ee,rm as lt,sc as Yo,sm as yi,ta as Pt,tb as Uo,tc as Xo,tm as _i,ua as bn,ub as zo,um as ce,va as kn,vb as Jo,vm as Ke,wm as wi,wo as Mt,x,xm as me,y as Ot,yb as qo,yi as $e,yl as hi,z as pe,zb as Wo}from"./chunk-Y6VRBTP3.js";import{mkdir as tc,readFile as nc}from"node:fs/promises";import Ei 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]="d9ef3878-afce-5983-8fe9-8a896f82d0a7")}catch{}})();var Tn=class extends Error{constructor(t="Workspace transaction interrupted"){super(t),this.name="WorkspaceTransactionInterruptedError"}},oc="sdk-workspace-transaction",ic=/^[a-zA-Z0-9._-]+$/,rc=30,ac=3e3;function $i(e,t){if(typeof e!="string")throw new TypeError(`${t} must be a string`);let n=e.trim();if(!n||!ic.test(n))throw new TypeError(`${t} must match [a-zA-Z0-9._-]+`);return n}function bi(e,t){if(typeof e!="string")throw new TypeError(`${t} must be a string`);let n=e.trim();if(!n)throw new TypeError(`${t} must be non-empty`);return n}function sc(e){return{pmRoot:bi(e.pmRoot,"Transaction pmRoot"),transactionId:$i(e.transactionId,"Transaction id"),author:bi(e.author,"Transaction author")}}function ki(e,t,n){let o=e??t;if(!Number.isInteger(o)||o<=0)throw new TypeError(`${n} must be a positive integer`);return o}function Ii(e,t){return Ei.join(e,"transactions","sdk",`${t}.json`)}async function Ae(e,t){t.updatedAt=T();let n=Ii(e,t.transactionId);await tc(Ei.dirname(n),{recursive:!0}),await ae(n,`${JSON.stringify(t,null,2)}
2
2
  `)}function cc(e){return Number.isInteger(e.attempt)&&typeof e.author=="string"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string"}function Le(e){return Object.assign(Object.create(null),e)}function lc(e,t){try{let n=JSON.stringify(e,(o,i)=>{if(typeof i=="number"&&!Number.isFinite(i))throw new TypeError(`${t} contains a non-finite number`);if(i===void 0||typeof i=="function"||typeof i=="symbol")throw new TypeError(`${t} contains a non-JSON value`);return i});return JSON.parse(n)}catch(n){throw new TypeError(`${t} must be JSON serializable`,{cause:n})}}function On(e,t){return e===void 0?void 0:lc(e,t)}function Cn(e,t,n,o){let i=On(n,o);i===void 0?delete e[t]:e[t]=i}function xi(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Si(e,t){return Array.isArray(e)&&new Set(e).size===e.length&&e.every(n=>typeof n=="string"&&t.includes(n))}function dc(e,t){if(!Si(e.startedStepIds,t)||!Si(e.completedStepIds,t)||!xi(e.results)||!xi(e.compensationData))return!1;let n=e.startedStepIds,o=new Set(n),i=e.completedStepIds,r=new Set(i);return Object.keys(e.compensationData).some(a=>!o.has(a))||Object.keys(e.results).some(a=>!r.has(a))?!1:e.status==="committed"?t.every(a=>r.has(a)):e.status!=="compensated"||r.size===0&&o.size===0}function pc(e,t,n){let o;try{o=JSON.parse(e)}catch{throw new TypeError(`Workspace transaction ${t} journal is invalid JSON`)}if(!o||typeof o!="object"||Array.isArray(o))throw new TypeError(`Workspace transaction ${t} journal is invalid`);let i=o,r=i.schemaVersion===1&&i.transactionId===t,a=Array.isArray(i.stepIds)&&i.stepIds.length===n.length&&i.stepIds.every((d,p)=>d===n[p]),s=dc(i,n),c=cc(i),l=["applying","compensating","compensated","committed"].includes(String(i.status));if(!r||!a||!s||!c||!l)throw new TypeError(`Workspace transaction ${t} journal does not match the supplied plan`);return{...i,results:Le(i.results),compensationData:Le(i.compensationData)}}async function uc(e,t,n,o,i){let r=i,a=r!==void 0;if(r?.status==="compensating"&&await Ai(e,r),r===void 0||r.status==="compensated"){let s=T();r={schemaVersion:1,transactionId:t,author:n,status:"applying",attempt:(r?.attempt??0)+1,createdAt:r?.createdAt??s,updatedAt:s,stepIds:o,startedStepIds:[],completedStepIds:[],results:Le(),compensationData:Le()},await Ae(e.pmRoot,r),await ye(e,r,"prepared")}return{journal:r,recovered:a}}async function mc(e,t,n){try{await hc(t,e.steps),await Ae(e.pmRoot,t);let o=new Set(t.completedStepIds),i=new Set(t.startedStepIds);for(let r of e.steps){if(o.has(r.id))continue;let a=await r.inspect(),s=On(a.result,`Step ${r.id} result`);if(a.state!=="applied"){let c=await r.prepareCompensation?.();Cn(t.compensationData,r.id,c,`Step ${r.id} compensation data`),i.add(r.id),t.startedStepIds=e.steps.map(d=>d.id).filter(d=>i.has(d)),await Ae(e.pmRoot,t);let l=await r.apply();s=On(l,`Step ${r.id} result`)}await ye(e,t,"step_applied",r.id),o.add(r.id),t.completedStepIds=e.steps.map(c=>c.id).filter(c=>o.has(c)),Cn(t.results,r.id,s,`Step ${r.id} result`),await Ae(e.pmRoot,t),await ye(e,t,"step_recorded",r.id)}return await ye(e,t,"committing"),t.status="committed",await Ae(e.pmRoot,t),await ye(e,t,"committed"),{transactionId:t.transactionId,status:"committed",recovered:n,results:Le(t.results)}}catch(o){if(o instanceof Tn||t.status==="committed")throw o;try{await Ai(e,t)}catch(i){throw new AggregateError([o,i],`Workspace transaction failed and compensation failed: ${String(i)}`,{cause:i})}throw o}}async function fc(e,t,n){try{return pc(await nc(Ii(e,t),"utf8"),t,n)}catch(o){if(o!==null&&typeof o=="object"&&"code"in o&&pe(o))return;throw o}}async function ye(e,t,n,o){await e.onTransition?.({transactionId:t.transactionId,attempt:t.attempt,transition:n,...o===void 0?{}:{stepId:o}})}async function hc(e,t){let n=new Set,o=Le();for(let i of t){let r=await i.inspect();r.state==="applied"&&(n.add(i.id),Cn(o,i.id,r.result,`Step ${i.id} result`))}e.results=o,e.completedStepIds=t.map(i=>i.id).filter(i=>n.has(i))}async function Ai(e,t){t.status="compensating",await Ae(e.pmRoot,t),await ye(e,t,"compensating");let n=new Set(t.completedStepIds),o=new Set(t.startedStepIds);for(let i of[...e.steps].reverse()){if(!o.has(i.id)&&!n.has(i.id))continue;let r;try{r=o.has(i.id)&&(await i.inspect()).state==="applied"}catch{r=o.has(i.id)}r&&(await ye(e,t,"step_compensating",i.id),await i.compensate(t.compensationData[i.id])),n.delete(i.id),o.delete(i.id),t.completedStepIds=e.steps.map(a=>a.id).filter(a=>n.has(a)),t.startedStepIds=e.steps.map(a=>a.id).filter(a=>o.has(a)),delete t.results[i.id],delete t.compensationData[i.id],await Ae(e.pmRoot,t),await ye(e,t,"step_compensated",i.id)}t.status="compensated",await Ae(e.pmRoot,t),await ye(e,t,"compensated")}async function Ti(e){let{pmRoot:t,transactionId:n,author:o}=sc(e),i=ki(e.lockTtlSeconds,rc,"Transaction lock TTL"),r=ki(e.lockWaitMs,ac,"Transaction lock wait"),a=[...e.steps];if(a.length===0)throw new TypeError("Workspace transaction requires at least one step");let s=a.map(d=>{let p=$i(d.id,"Transaction step id");if(p!==d.id)throw new TypeError("Transaction step id must not contain surrounding whitespace");return p});if(new Set(s).size!==s.length)throw new TypeError("Workspace transaction step ids must be unique");let c={...e,pmRoot:t,transactionId:n,author:o,steps:a,lockTtlSeconds:i,lockWaitMs:r},l=await Z(t,oc,i,o,!1,!1,r);try{let d=await fc(t,n,s),p=d!==void 0;if(d?.status==="committed")return{transactionId:n,status:"committed",recovered:!0,results:Le(d.results)};let u=await uc(c,n,o,s,d);return await mc(c,u.journal,p||u.recovered)}finally{await l()}}import gc from"node:fs/promises";import yc 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]="c4dc16d1-672a-5b1c-b681-97a7b3febd69")}catch{}})();function Pn(e){return yc.join(e,"extension-migrations.json")}function Oi(e,t){let n=e.definition.id;return typeof n=="string"&&n.trim().length>0?n.trim():`migration-${String(t+1).padStart(3,"0")}`}function Ci(e,t){return`${e.layer}:${e.name}:${t}`}async function _c(e){let t=Pn(e);if(!await x(t))return{version:1,updated_at:"",entries:[]};let n=JSON.parse(await gc.readFile(t,"utf8"));return{version:1,updated_at:typeof n.updated_at=="string"?n.updated_at:"",entries:Array.isArray(n.entries)?n.entries.filter(o=>typeof o?.key=="string"&&(o.status==="applied"||o.status==="failed")):[]}}async function wc(e,t){let n=await _c(e),o=new Map(n.entries.map(i=>[i.key,i]));return t.forEach((i,r)=>{let a=Oi(i,r),s=o.get(Ci(i,a));s&&(i.definition.status=s.status,s.status==="failed"?i.definition.reason=s.error:(delete i.definition.reason,delete i.definition.error,delete i.definition.message))}),n}async function vc(e){let t=await wc(e.pmRoot,e.migrations),n=new Map(t.entries.map(d=>[d.key,d])),o=[],i=!1,r=e.migrations.map((d,p)=>({migration:d,index:p})).filter(({migration:d})=>e.scope===void 0||d.layer===e.scope);for(let{migration:d,index:p}of r){let u=Oi(d,p),g=Ci(d,u),y=n.get(g),w=String(d.definition.status??"pending").toLowerCase(),m=y?.status??(w==="applied"||w==="failed"?w:"pending");if(m==="applied"){o.push({key:g,layer:d.layer,extension:d.name,id:u,before:m,outcome:"skipped"});continue}if(e.dryRun===!0){o.push({key:g,layer:d.layer,extension:d.name,id:u,before:m,outcome:"pending"});continue}let _=d.runtime_definition?.run??d.definition.run;if(typeof _!="function"){o.push({key:g,layer:d.layer,extension:d.name,id:u,before:m,outcome:"pending"});continue}let v=new Date().toISOString();try{await Promise.resolve(_({id:u,command:"migration",layer:d.layer,extension:d.name,pm_root:e.pmRoot,status:m}));let k={key:g,layer:d.layer,extension:d.name,id:u,status:"applied",attempted_at:v};n.set(g,k),d.definition.status="applied",delete d.definition.reason,delete d.definition.error,delete d.definition.message,o.push({key:g,layer:d.layer,extension:d.name,id:u,before:m,outcome:"applied"}),i=!0}catch(k){let S=k instanceof Error?k.message:String(k),R={key:g,layer:d.layer,extension:d.name,id:u,status:"failed",attempted_at:v,error:S};n.set(g,R),d.definition.status="failed",d.definition.reason=S,o.push({key:g,layer:d.layer,extension:d.name,id:u,before:m,outcome:"failed",error:S}),i=!0}}if(i){let d=await A(e.pmRoot),p={version:1,updated_at:new Date().toISOString(),entries:[...n.values()].sort((u,g)=>u.key.localeCompare(g.key))};await He({pmRoot:e.pmRoot,filePath:Pn(e.pmRoot),raw:`${JSON.stringify(p,null,2)}
3
3
  `,op:"extension_migrations_apply",author:e.author,lockTtlSeconds:d.locks.ttl_seconds,lockWaitMs:d.locks.wait_ms})}let a=o.filter(d=>d.outcome==="pending").length,s=o.filter(d=>d.outcome==="applied").length,c=o.filter(d=>d.outcome==="skipped").length,l=o.filter(d=>d.outcome==="failed").length;return{ok:l===0,dry_run:e.dryRun===!0,state_path:Pn(e.pmRoot),total:o.length,pending_count:a,applied_count:s,skipped_count:c,failed_count:l,migrations:o}}async function Pi(e){let t=await A(e.resolvedRoots.settings_root),n=await ke({pmRoot:e.resolvedRoots.pm_root,settings:t,cwd:process.cwd(),noExtensions:e.global.noExtensions===!0}),o=await xe(n);e.warnings.push(...n.warnings,...o.warnings);let i=await vc({pmRoot:e.resolvedRoots.pm_root,migrations:o.registrations.migrations,author:typeof e.global.author=="string"&&e.global.author.trim().length>0?e.global.author.trim():"pm-extension-migration",dryRun:e.options.dryRun===!0,...e.scope==="global"?{scope:"global"}:{}});return e.withResult({migration:i,load_failure_count:n.failed.length,activation_failure_count:o.failed.length},i.ok)}import{readFile as bc,writeFile as kc}from"node:fs/promises";import dt 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]="5b131b40-e139-5a7d-a6ef-633fe2cbee64")}catch{}})();var Ni="# pm-cli:runtime-cache:start",Rn="# pm-cli:runtime-cache:end",Di=".agents/pm",xc=["runtime/","search/","locks/","transactions/","checkpoints/"],Sc=["search/eval-queries.json"];async function Ri(e){try{return await e()}catch(t){throw t instanceof Error&&"code"in t&&typeof t.code=="string"&&["EACCES","EPERM","EROFS"].includes(t.code)?new f("The workspace .gitignore is not writable.",h.GENERIC_FAILURE,{code:"init_gitignore_unwritable",reason:t.code.toLowerCase(),required:"Grant the current user read and write access to the workspace .gitignore before initialization.",why:"pm init must publish its managed runtime-cache ignore fence without replacing unrelated entries.",nextSteps:["Grant read and write access to the workspace .gitignore and rerun pm init.","If the workspace is intentionally read-only, initialize pm in a writable workspace or clone."]}):t}}function ji(e){return e.replaceAll("\\","/").replace(/^\.\/+/,"").replace(/\/+$/,"")}function Nn(e){let t=e.replaceAll("\\","/");return dt.isAbsolute(e)||t===".."||t.startsWith("../")}function Ec(e=Di){let t=ji(e);return[Ni,...xc.map(n=>n==="search/"?`${t}/${n}*`:`${t}/${n}`),...Sc.map(n=>`!${t}/${n}`),Rn].join(`
4
4
  `)}async function Li(e,t={}){let n=dt.join(e,".gitignore"),o=Di;if(t.pmRoot!==void 0){let d=ji(dt.relative(dt.resolve(e),dt.resolve(t.pmRoot)));if(Nn(d))return{path:n,changed:!1};d.length>0&&(o=d)}let i="";try{i=await Ri(()=>bc(n,"utf8"))}catch(d){if(!(d instanceof Error&&"code"in d&&pe(d)))throw d}let r=i.indexOf(Ni),a=i.indexOf(Rn),c=(r>=0&&a>=r?`${i.slice(0,r)}${i.slice(a+Rn.length)}`:i).trimEnd(),l=`${c.length>0?`${c}
@@ -77,4 +77,4 @@ Agent guidance check
77
77
  `),ee.write(`Telemetry helps improve reliability and can be disabled anytime via pm config.
78
78
  `);let c=t?"Y/n":"y/N",l=await n.question(`Enable telemetry for this project? [${c}] `),d=Us(l,t);return ee.write(`
79
79
  `),{prefix:i,preset:s,telemetry_enabled:d}}finally{n.close()}}function lf(e){return{presetFromOption:Io(e.preset),useDefaults:e.defaults===!0,authorFromOption:Ls(e.author),installBundledPackages:e.withPackages===!0,agentGuidanceMode:Gs(e.agentGuidance),typePreset:js(e.typePreset)}}function df(e){let t=[];return e.prefixArg!==void 0&&e.settings.id_prefix!==e.normalizedPrefix&&t.push("id_prefix"),e.presetFromOption!==void 0&&e.settings.governance.preset!==e.presetFromOption&&t.push("governance_preset"),e.authorFromOption!==void 0&&e.settings.author_default!==e.authorFromOption&&t.push("author_default"),t}function pf(e,t,n,o){if(t.length===0||n)return;let i=o.discovery==="ancestor";throw new f(`${i?`No tracker exists in ${o.requested_cwd}; pm init found an ancestor tracker at ${o.tracker_root}. `:""}Refusing to update existing tracker settings at ${e} without --force.`,h.USAGE,{code:"init_existing_settings_requires_force",type:"urn:pm-cli:error:init_existing_settings_requires_force",required:`--force for ${t.join(", ")}`,why:i?"Ancestor discovery is useful for normal commands, but init must make the selected existing workspace explicit before changing its identity or policy settings.":"pm init is safe to rerun, but changing id prefix, governance preset, or default author on an existing tracker can corrupt long-lived project context when an agent meant to initialize a sandbox path.",resolved_path:o.tracker_root,requested_path:o.requested_cwd,suggested_path:o.suggested_current_tracker_root,examples:["pm init --yes","pm init ./sandbox-pm --yes",...i?['pm init <name> --yes --pm-path "$PWD/.agents/pm"']:[],"pm init acme --yes --force"],nextSteps:[...i?['To create a new tracker in the current directory, rerun with --pm-path "$PWD/.agents/pm".']:[],"If you meant to initialize a sandbox tracker, pass a path-like positional such as ./sandbox-pm or /tmp/pm-test.","If you intentionally want to rewrite this existing tracker's init-managed settings, rerun with --force."]})}function uf(e){let t=!1;return e.prefixArg!==void 0&&e.settings.id_prefix!==e.normalizedPrefix&&(e.settings.id_prefix=e.normalizedPrefix,e.warnings.push(`updated:id_prefix:${e.normalizedPrefix}`),t=!0),e.presetFromOption!==void 0&&e.settings.governance.preset!==e.presetFromOption&&(Ao(e.settings,e.presetFromOption),e.warnings.push(`updated:governance_preset:${e.presetFromOption}`),t=!0),e.authorFromOption!==void 0&&e.settings.author_default!==e.authorFromOption&&(e.settings.author_default=e.authorFromOption,e.warnings.push(`updated:author_default:${e.authorFromOption}`),t=!0),t}async function mf(e){let t=await A(e.pmRoot);e.warnings.push(`already_exists:${e.settingsPath}`);let n=df({settings:t,normalizedPrefix:e.normalizedPrefix,prefixArg:e.prefixArg,presetFromOption:e.normalizedOptions.presetFromOption,authorFromOption:e.normalizedOptions.authorFromOption});return pf(e.settingsPath,n,e.options.force===!0,e.target),uf({settings:t,normalizedPrefix:e.normalizedPrefix,prefixArg:e.prefixArg,presetFromOption:e.normalizedOptions.presetFromOption,authorFromOption:e.normalizedOptions.authorFromOption,warnings:e.warnings})&&await Ee(e.pmRoot,t),{settings:t,normalizedPrefix:e.normalizedPrefix,chosenPreset:e.normalizedOptions.presetFromOption,wizardUsed:!1}}async function ff(e){let t=e.normalizedPrefix,n=e.normalizedOptions.presetFromOption,o,i=!1;if(e.normalizedOptions.presetFromOption===void 0&&!e.normalizedOptions.useDefaults&&process.stdin.isTTY===!0&&process.stdout.isTTY===!0){let c=await Hs(t,vn.telemetry.enabled);t=c.prefix,n=c.preset,o=c.telemetry_enabled,i=!0}let r=n??"minimal",a=af();a.id_prefix=t,Ao(a,r);let s=ai()?.trim()||void 0;return a.author_default=e.normalizedOptions.authorFromOption??s??"",o!==void 0&&(a.telemetry.enabled=o,a.telemetry.first_run_prompt_completed=!0),await Ee(e.pmRoot,a),{settings:a,normalizedPrefix:t,chosenPreset:n,wizardUsed:i}}async function Ps(e){return e.settingsExists?await mf(e):await ff({pmRoot:e.pmRoot,normalizedPrefix:e.normalizedPrefix,normalizedOptions:e.normalizedOptions})}async function hf(e){let t=await Cs({pm_root:e.pmRoot,cwd:e.cwd,mode:e.agentGuidanceMode,interactive:process.stdin.isTTY===!0&&process.stdout.isTTY===!0,settings:e.settings});return e.warnings.push(...t.warnings),t.settings_changed&&await Ee(e.pmRoot,e.settings),{...t.summary,next_steps:t.next_steps}}async function gf(e,t){let n=[],o=[],i=await ri(e,t.schema);for(let r of i.created_paths)n.push(r),o.push(...await K({path:r,scope:"project",op:"init:runtime_schema_file"}));return{createdDirs:n,warnings:o}}async function yf(e){if(e.typePreset===void 0)return;let t=await Js(e.pmRoot,e.settings,e.typePreset);return e.warnings.push(`registered_type_preset:${e.typePreset}`),e.warnings.push(...await K({path:t.file,scope:"project",op:"init:type_preset"})),t}async function _f(e){let n=z(e.settings,B()).folders.filter(i=>!wn.includes(i)),o=await Bs(e.pmRoot,n);e.createdDirs.push(...o.createdDirs),e.warnings.push(...o.warnings)}function wf(e){let t=L.resolve(e.tracker_root),n=L.dirname(t);return L.basename(t)==="pm"&&L.basename(n)===".agents"?L.dirname(n):e.workspace_root}async function vf(e,t,n,o){if(!e)return;let i=await _o("all",{install:!0,project:!0},{...t,path:n});o.push(...i.warnings);let r=zs(i),a=r.packages.filter(s=>!s.ok).map(s=>s.alias);if(!r.installed_all||a.length>0)throw new f(`pm init --with-packages did not install all bundled packages successfully${a.length>0?`: ${a.join(", ")}`:"."}`,h.GENERIC_FAILURE);return r}function Ks(e){let t=o=>st([...e.target.mode==="workspace-discovery"?[]:["--pm-path",e.target.tracker_root],...o]),n=[`Create your first item: ${t(["create","--type","Task","--title","<title>"])}`,`List active items: ${t(["list"])}`,`Get agent-friendly project context: ${t(["context"])}`];e.installBundledPackages?n.push(`Explore newly-available commands: ${t(["cal"])}, ${t(["templates"])}, ${t(["guide"])}`):(n.push(`Add optional packages for richer workflows: ${t(["install","calendar","--project"])}, ${t(["install","templates","--project"])}, ${t(["install","guide-shell","--project"])}`),n.push(`Or install everything bundled: ${t(["init","--with-packages"])} (idempotent on re-run)`)),e.registeredTypePreset&&n.push(`Inspect registered preset types: ${t(["schema","list"])}, ${t(["schema","show",e.registeredTypePreset.registered[0]??e.registeredTypePreset.updated[0]])}`),n.push("Supported agent harnesses are attributed automatically; use --author or PM_AUTHOR only when an explicit identity override is required.");for(let o of e.agentGuidanceNextSteps){let i=e.target.mode==="workspace-discovery"?o:o.replace(/\bpm (?=[a-z])/g,()=>`${t([])} `);n.includes(i)||n.push(i)}return n}async function Vs(e,t,n,o=Jn){if(t===null){n.push("merge_fence_skipped:not_git_repository:run pm merge install after moving the tracker into a Git repository");return}try{let i=await o({pmRoot:e,workspaceRoot:t});i.gitattributes.changed&&n.push(`updated:merge_fence:${i.gitattributes.path}`)}catch(i){if(!(i instanceof f))throw i;n.push(`merge_fence_skipped:install_failed:${i.context.code??"pm_error"}:${i.message}:run pm merge install after resolving the Git repository error`)}}async function bf(e,t,n,o){if(e==null||n==="status")return;let i=await Li(e,{pmRoot:t});i.changed&&o.push(`updated:gitignore:${i.path}`)}async function gb(e,t,n={}){let o=t[of],i=typeof o=="string"?o:process.cwd(),r=Fs(i,t,e,n.workspace),a=r.pmRoot;e=Ms(r.prefixArg,n.idPrefix);let s=lf(n);await Ws(a,r.target.mode==="tracker-path",n.force===!0);let c=[],l=[],d=L.join(a,"settings.json"),p=await x(d),u;p&&(u=await Ps({pmRoot:a,settingsPath:d,settingsExists:p,normalizedPrefix:$e(e),prefixArg:e,options:n,normalizedOptions:s,warnings:l,target:r.target}));let g=await Bs(a,wn);c.push(...g.createdDirs),l.push(...g.warnings),u??=await Ps({pmRoot:a,settingsPath:d,settingsExists:p,normalizedPrefix:$e(e),prefixArg:e,options:n,normalizedOptions:s,warnings:l,target:r.target});let{settings:y}=u,w=wf(r.target),m=await Wt(w??L.dirname(a)),_=w??m,v=await hf({pmRoot:a,cwd:_??i,agentGuidanceMode:s.agentGuidanceMode,settings:y,warnings:l}),k=await gf(a,y);c.push(...k.createdDirs),l.push(...k.warnings);let S=await yf({pmRoot:a,settings:y,typePreset:s.typePreset,warnings:l});S&&(y=await A(a)),await _f({pmRoot:a,settings:y,createdDirs:c,warnings:l}),await bf(_,a,s.agentGuidanceMode,l),!p&&n.mergeFence!==!1&&s.agentGuidanceMode!=="status"&&await Vs(a,m,l);let R=await vf(s.installBundledPackages,t,a,l),G=Ks({installBundledPackages:s.installBundledPackages,registeredTypePreset:S,agentGuidanceNextSteps:v.next_steps,target:r.target});return{ok:!0,path:a,target:r.target,settings:y,created_dirs:c,warnings:l,governance_preset:y.governance.preset,wizard_used:u.wizardUsed,...S?{registered_type_preset:S}:{},...R?{installed_packages:R}:{},next_steps:G,agent_guidance:v}}export{Tn as a,sc as b,Ti as c,Pn as d,_c as e,wc as f,vc as g,Pi as h,zp as i,Ni as j,Rn as k,xc as l,Ec as m,Li as n,Ve as o,Ic as p,Ac as q,Mi as r,Jt as s,Fe as t,Gt as u,Fn as v,Lc as w,Fc as x,Vf as y,qt as z,Bc as A,ut as B,Bi as C,Xc as D,Wt as E,zn as F,Zi as G,kh as H,xh as I,Qi as J,Sh as K,Jn as L,mr as M,et as N,tt as O,fr as P,dr as Q,Ze as R,Qe as S,pr as T,el as U,Ih as V,Ch as W,tr as X,ol as Y,Kh as Z,vr as _,Sr as $,zl as aa,Jl as ba,H_ as ca,Y_ as da,X_ as ea,Et as fa,Z_ as ga,Q_ as ha,ew as ia,tw as ja,nw as ka,ow as la,iw as ma,rw as na,aw as oa,sw as pa,cw as qa,lw as ra,dw as sa,pw as ta,uw as ua,mw as va,fw as wa,hw as xa,gw as ya,yw as za,_w as Aa,ww as Ba,vw as Ca,bw as Da,kw as Ea,te as Fa,b as Ga,Yn as Ha,ad as Ia,we as Ja,Kt as Ka,ql as La,ft as Ma,Vt as Na,Mr as Oa,Kr as Pa,co as Qa,ca as Ra,zy as Sa,du as Ta,za as Ua,Ja as Va,Wa,va as Xa,Gp as Ya,vu as Za,ka as _a,_o as $a,ws as ab,qv as bb,Cs as cb,of as db,fb as eb,hb as fb,gb};
80
- //# sourceMappingURL=chunk-ZI7F3FVE.js.map
80
+ //# sourceMappingURL=chunk-J52QIRRZ.js.map