@unbrained/pm-cli 2026.10.7 → 2026.10.8

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 (107) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +15 -0
  3. package/dist/cli-bundle/bundle-manifest.json +152 -152
  4. package/dist/cli-bundle/chunks/chunk-34L2BS2Z.js +3 -0
  5. package/dist/cli-bundle/chunks/chunk-FOLSEOJ2.js +20 -0
  6. package/dist/cli-bundle/chunks/{chunk-A4QWRU7D.js → chunk-HFCIAXLP.js} +5 -5
  7. package/dist/cli-bundle/chunks/chunk-JDTBPW4Y.js +2 -0
  8. package/dist/cli-bundle/chunks/{chunk-TG3IOQUG.js → chunk-K6E2FFUT.js} +2 -2
  9. package/dist/cli-bundle/chunks/{chunk-VU77O6HC.js → chunk-L7U5FSZ5.js} +2 -2
  10. package/dist/cli-bundle/chunks/{chunk-N2PFAWVV.js → chunk-MJVRF67I.js} +3 -3
  11. package/dist/cli-bundle/chunks/{chunk-GJ2OJKRM.js → chunk-OG66KEOF.js} +79 -79
  12. package/dist/cli-bundle/chunks/{chunk-MOXX7D3F.js → chunk-RCFZ6H2Y.js} +2 -2
  13. package/dist/cli-bundle/chunks/chunk-TNU56MZI.js +8 -0
  14. package/dist/cli-bundle/chunks/chunk-UGFN5NJ2.js +2 -0
  15. package/dist/cli-bundle/chunks/{chunk-TON7H63A.js → chunk-ZBVAZ7XX.js} +53 -52
  16. package/dist/cli-bundle/chunks/{chunk-DWH555SN.js → chunk-ZHIMZ65M.js} +16 -16
  17. package/dist/cli-bundle/chunks/{register-list-query-CBJELTDX.js → register-list-query-PYVSPGPV.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-mutation-JRH6EGSE.js → register-mutation-WXP3YLIN.js} +2 -2
  19. package/dist/cli-bundle/chunks/register-operations-WL25C3NP.js +2 -0
  20. package/dist/cli-bundle/chunks/register-setup-PFKYNEQI.js +2 -0
  21. package/dist/cli-bundle/focused-chunks/chunk-2KSPGWLH.js +20 -0
  22. package/dist/cli-bundle/focused-chunks/{chunk-PBNQZV33.js → chunk-6TKAFFEB.js} +2 -2
  23. package/dist/cli-bundle/focused-chunks/{chunk-EPOCI7ZX.js → chunk-A3W6HFFO.js} +2 -2
  24. package/dist/cli-bundle/focused-chunks/{chunk-2YICTWWA.js → chunk-BDT5EALU.js} +2 -2
  25. package/dist/cli-bundle/focused-chunks/{chunk-3BKRCR57.js → chunk-DRHJOG5X.js} +2 -2
  26. package/dist/cli-bundle/focused-chunks/{chunk-XIGFEA3W.js → chunk-EOUORVJA.js} +2 -2
  27. package/dist/cli-bundle/focused-chunks/chunk-F2ME5MJY.js +3 -0
  28. package/dist/cli-bundle/focused-chunks/{chunk-QY4Z23QC.js → chunk-L3CZNKZE.js} +11 -11
  29. package/dist/cli-bundle/focused-chunks/{chunk-QEYEDXRI.js → chunk-LZQGEVKT.js} +2 -2
  30. package/dist/cli-bundle/focused-chunks/{chunk-FWWFCLDM.js → chunk-MW2TQHZ3.js} +60 -59
  31. package/dist/cli-bundle/focused-chunks/{chunk-HMG5F5EC.js → chunk-OLCJ2PJS.js} +2 -2
  32. package/dist/cli-bundle/focused-chunks/{chunk-SIR5RFJX.js → chunk-OSKXYRYZ.js} +27 -27
  33. package/dist/cli-bundle/focused-chunks/{chunk-NRSA5ZB2.js → chunk-PBPPIGUL.js} +2 -2
  34. package/dist/cli-bundle/focused-chunks/{chunk-7X3QD5V4.js → chunk-PEBOVLEG.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-4FKCHJGV.js → chunk-V3EPBB6V.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/{chunk-3NSZ5C4A.js → chunk-XT7JAVHI.js} +2 -2
  37. package/dist/cli-bundle/main.js +2 -2
  38. package/dist/cli-bundle/sdk-authoring.js +1 -1
  39. package/dist/cli-bundle/sdk-contracts.js +1 -1
  40. package/dist/cli-bundle/sdk-core.js +2 -2
  41. package/dist/cli-bundle/sdk-governance.js +1 -1
  42. package/dist/cli-bundle/sdk-graph.js +1 -1
  43. package/dist/cli-bundle/sdk-merge.js +51 -50
  44. package/dist/cli-bundle/sdk-query.js +1 -1
  45. package/dist/cli-bundle/sdk-runtime.js +1 -1
  46. package/dist/cli-bundle/sdk-testing.js +1 -1
  47. package/dist/cli-bundle/sdk.js +4 -4
  48. package/dist/core/extensions/item-fields.d.ts +6 -1
  49. package/dist/core/extensions/item-fields.js +1 -1
  50. package/dist/core/fs/fs-utils.d.ts +19 -4
  51. package/dist/core/fs/fs-utils.js +2 -2
  52. package/dist/core/lock/lock.d.ts +9 -2
  53. package/dist/core/lock/lock.js +2 -2
  54. package/dist/core/store/settings.js +2 -2
  55. package/dist/core/telemetry/runtime.d.ts +1 -1
  56. package/dist/core/telemetry/runtime.js +4 -4
  57. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  58. package/dist/sdk/governance/health.js +2 -2
  59. package/dist/sdk/history-repair.js +1 -1
  60. package/dist/sdk/item-transaction.js +1 -1
  61. package/dist/sdk/merge/abandoned-receipts.js +1 -1
  62. package/dist/sdk/merge/driver.js +1 -1
  63. package/dist/sdk/merge/install.js +3 -2
  64. package/dist/sdk/merge/receipt-operation.d.ts +5 -5
  65. package/dist/sdk/merge/receipt-operation.js +1 -1
  66. package/dist/sdk/merge/receipts.d.ts +1 -1
  67. package/dist/sdk/merge/receipts.js +3 -3
  68. package/dist/sdk/merge/worktree-config.d.ts +2 -0
  69. package/dist/sdk/merge/worktree-config.js +1 -1
  70. package/dist/sdk/public-surface.json +1 -1
  71. package/docs/BUILD_AND_RELEASE_ACCEPTANCE.md +36 -100
  72. package/docs/MERGE_SAFETY.md +61 -6
  73. package/docs/PACKED_FIRST_RUN.md +26 -42
  74. package/docs/README.md +1 -0
  75. package/docs/SDK_AUDITED_MUTATIONS.md +18 -0
  76. package/docs/SDK_STORAGE_LIFECYCLE.md +35 -0
  77. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
  78. package/marketplace.json +2 -2
  79. package/package.json +1 -1
  80. package/packages/pm-beads/package.json +1 -1
  81. package/packages/pm-calendar/package.json +1 -1
  82. package/packages/pm-command-kit/package.json +1 -1
  83. package/packages/pm-digital-twin/package.json +1 -1
  84. package/packages/pm-governance-audit/package.json +1 -1
  85. package/packages/pm-guide-shell/package.json +1 -1
  86. package/packages/pm-kanban/package.json +1 -1
  87. package/packages/pm-lifecycle-hooks/package.json +1 -1
  88. package/packages/pm-linked-test-adapters/package.json +1 -1
  89. package/packages/pm-search-advanced/package.json +1 -1
  90. package/packages/pm-templates/package.json +1 -1
  91. package/packages/pm-todos/package.json +1 -1
  92. package/packages/pm-vcs/package.json +1 -1
  93. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  94. package/plugins/pm-claude/package.json +2 -2
  95. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  96. package/plugins/pm-codex/package.json +2 -2
  97. package/plugins/pm-codex/plugin.json +1 -1
  98. package/runtime-dependencies.json +2 -2
  99. package/dist/cli-bundle/chunks/chunk-754AV3DC.js +0 -8
  100. package/dist/cli-bundle/chunks/chunk-CEM35QB2.js +0 -2
  101. package/dist/cli-bundle/chunks/chunk-CMIU2NDK.js +0 -20
  102. package/dist/cli-bundle/chunks/chunk-GSQK3VUT.js +0 -2
  103. package/dist/cli-bundle/chunks/chunk-WUOFG4JY.js +0 -3
  104. package/dist/cli-bundle/chunks/register-operations-FYV7CUBF.js +0 -2
  105. package/dist/cli-bundle/chunks/register-setup-M5VO6JUH.js +0 -2
  106. package/dist/cli-bundle/focused-chunks/chunk-3RJ4VK7U.js +0 -3
  107. package/dist/cli-bundle/focused-chunks/chunk-H5VREEUE.js +0 -20
@@ -0,0 +1,2 @@
1
+ import{Rb as ge,Sb as Ee,Ub as U,Xb as Se,Ya as _e,Zb as ve,_b as Te,a as te,uc as Ae}from"./chunk-HFCIAXLP.js";import{b as le,c as C}from"./chunk-ZBVAZ7XX.js";import{Bi as pe,Dc as Q,Ec as ee,F as J,Ho as he,I as S,Ko as we,L as K,Mg as ae,Ol as fe,Q as V,Ql as ye,R as p,T as d,Ub as Z,Va as q,X as N,Z as Y,_ as v,cb as H,eg as re,gg as ne,hg as oe,ii as ce,kg as ie,lh as se,ok as ue,uk as me,wb as X,zi as de}from"./chunk-OG66KEOF.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 qe 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]="62e0ef49-30c8-56e0-985e-49c83d14695e")}catch{}})();var D=["op","id","reason","options"],Re=[...D,"ref"],Ie=["schema_version","mutations"],Ce="[a-z][a-z0-9._-]{0,63}",be=new RegExp(`^${Ce}$`,"u"),Ue=new RegExp(`(^|,)id=@(${Ce})(?=,|$)`,"gu"),Me=e=>e.slice(2).replaceAll(/-([a-z])/gu,(t,n)=>n.toUpperCase()),A=["item","linked","schedule","claim_state","children","omission_receipt","row_contract","context_intent"],De=new Set(["created_at","updated_at","closed_at","version","format_version","path","author","collection_counts","notes_count","tests_count"]),He=new Set([...De,"completed_at","id"]),T=new Set(["id","title","description","type","status","priority","tags","body","deadline","estimated_minutes","acceptance_criteria","definition_of_ready","order","rank","assignee",...J,"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:he.map(e=>e.target),update:we.map(e=>e.target),close:ue.map(e=>Me(e.flag)).filter(e=>e!=="reason"),release:me.map(e=>Me(e.flag))};function wr(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 f(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function R(e,t){let n=Math.max(1,Math.min(3,Math.floor(e.length/4)+1)),r;for(let o of t){let i=X(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=R(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 P(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 Xe(e,t){if(!f(e))throw new d(`Mutation ${t+1} must be an object.`,p.USAGE);for(let n of Object.keys(e))if(!D.includes(n))throw w(`mutation ${t+1}`,n,D);return e}function Ze(e,t,n){if(e!==void 0){if(!f(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 Qe(e,t){let n=Xe(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 a=Ze(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 s=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:s,reason:i.trim(),...a===void 0?{}:{options:a}}}if(r==="release")return{op:r,id:s,...a===void 0?{}:{options:a}};if(!f(a))throw new d(`Mutation ${t+1} ${r} requires an options object.`,p.USAGE);return{op:r,id:s,options:a}}function Pe(e){let t=P(e,"Mutation batch"),n=Array.isArray(t)?t:f(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=Qe(r,o);return i.options!==void 0&&fe(i.options),i})}function et(e,t,n){let r=qe.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`${de(n)}${o}`}function ke(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 $e(e,t){if(typeof e!="string")return e;let n=e.replace(Ue,(r,o,i)=>{let a=t[i];if(a===void 0)throw new d(`Unknown mutation reference "@${i}".`,p.USAGE);return`${o}id=${a}`});if(/(^|,)id=@/u.test(n))throw new d(`Malformed mutation reference in dependency "${e}".`,p.USAGE);return n}function tt(e){return typeof e!="string"?[]:e.startsWith("@")?[e.slice(1)]:[...e.matchAll(Ue)].map(t=>t[1]).filter(t=>t!==void 0)}function rt(e){let t=new Map;for(let i of e){if(i.op!=="create"||typeof i.ref!="string")continue;let a=f(i.options)?i.options:{},s=Array.isArray(a.dep)?a.dep:a.dep===void 0?[]:[a.dep];t.set(i.ref,[a.parent,a.blockedBy,...s].flatMap(tt))}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 a of t.get(i))t.has(a)&&o(a);n.delete(i),r.add(i)}};for(let i of t.keys())o(i)}function nt(e){let t=P(e,"Mutation document"),n=Array.isArray(t)?{schema_version:1,mutations:t}:t;if(!f(n))throw new d("Mutation document must be a JSON array or object.",p.USAGE);for(let r of Object.keys(n))if(!Ie.includes(r))throw w("mutation document",r,Ie);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(!f(r))throw new d(`Mutation ${o+1} must be an object.`,p.USAGE);for(let i of Object.keys(r))if(!Re.includes(i))throw w(`mutation ${o+1}`,i,Re);return{...r}})}function ot(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"||!be.test(o.ref))throw new d(`Mutation ${r+1} ref must match ${be.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?pe(o.id,t.idPrefix):et(t.transactionId,o.ref,t.idPrefix)}return n}function _r(e,t){let n=nt(e),r=ot(n,t);rt(n);let o=n.map(s=>{let c={...s},u=typeof c.ref=="string"?c.ref:void 0;if(delete c.ref,u!==void 0?c.id=r[u]:c.id=ke(c.id,r),f(c.options)){let m={...c.options};for(let y of["parent","blockedBy"])m[y]!==void 0&&(m[y]=ke(m[y],r));Array.isArray(m.dep)?m.dep=m.dep.map(y=>$e(y,r)):m.dep!==void 0&&(m.dep=$e(m.dep,r)),c.options=m}return c}),i=Pe(JSON.stringify(o)),a=i.filter(s=>s.op==="create").map(s=>s.id);if(new Set(a).size!==a.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 it(e,t,n){if(e!==void 0){if(!Array.isArray(e)||!e.every(f))throw new d(`${n} must be an array of objects.`,p.USAGE);return e.map(r=>je(r,t))}}function at(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 Ne(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,a]of r){let s=t[o],c=it(n&&["comments","notes","learnings"].includes(o)&&Array.isArray(s)?s.filter(u=>!f(u)||u.created_at===void 0):s,a,o);c!==void 0&&c.length>0&&(e[i]=c)}}function st(e,t){for(let n of Object.keys(e)){if(t){if(!A.includes(n))throw w("item envelope",n,A);continue}if(!T.has(n)&&R(n,[...T])===void 0&&R(n,A)==="item")throw w("item envelope",n,A)}}function ct(e){let t=Object.hasOwn(e,"item");st(e,t);let n=t?e.item:e;if(!f(n))throw new d("Item document item must be an object.",p.USAGE);return{item:n,...t&&f(e.linked)?{linked:e.linked}:{}}}function dt(e,t,n,r){if(!(r==="update"?He:De).has(t)){if(!T.has(t)){if(R(t,[...T])!==void 0)throw w("item document",t,[...T]);let o=Array.isArray(e.field)?e.field:[];o.push(je({key:t,value:typeof n=="string"?n:JSON.stringify(n)},["key","value"])),e.field=o;return}["dependencies","comments","notes","learnings","files","tests","docs","reminders","events","type_options"].includes(t)||(e[t.replaceAll(/_([a-z])/gu,(o,i)=>i.toUpperCase())]=at(t,n))}}function gr(e,t,n={}){let r=P(e,"Item document");if(!f(r))throw new d("Item document must be a JSON object.",p.USAGE);let{item:o,linked:i}=ct(r),a={};for(let[s,c]of Object.entries(o))dt(a,s,c,t);if(Ne(a,o,t==="update"),i!==void 0&&Ne(a,i),t==="update"){let s=Object.fromEntries(["comments","notes","learnings"].filter(c=>Object.hasOwn(o,c)).map(c=>[c,o[c].filter(u=>f(u)&&u.created_at!==void 0)]));Object.keys(s).length>0&&(a.documentAnnotationSnapshot=s)}return{...a,...Object.fromEntries(Object.entries(n).filter(([,s])=>s!==void 0)),stdinJson:void 0}}function Er(e){return Pe(JSON.stringify(e))}import W from"node:crypto";import{constants as j}from"node:fs";import{cp as pt,lstat as Fe,mkdir as lt,mkdtemp as ut,open as mt,readdir as ft,realpath as yt,rm as ht,stat as Ge,writeFile as Le}from"node:fs/promises";import{tmpdir as wt}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]="7ff78f44-c9db-5221-b09a-32b78876b461")}catch{}})();function M(e,t){let n={...e,...t};return e===void 0?n:ye(e,n)}async function h(e,t){try{let n=(await _e(t,{},{pmRoot:e})).item;return{id:n.id,closedAt:n.closed_at,updatedAt:n.updated_at,assignee:n.assignee,claimPrincipal:n.claim_principal}}catch(n){if(n instanceof d&&n.exitCode===p.NOT_FOUND)return;throw n}}function x(e,t){let n=e.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_"),r=W.createHash("sha256").update(Z(e)).digest("hex").slice(0,12);return`${t+1}-${e.op}-${n}-${r}`}function _t(e,t){let n=e.id.replaceAll(/[^a-zA-Z0-9._-]/gu,"_");return`${t+1}-${e.op}-${n}`}function _(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=_(n,r,"apply"),a=_(n,r,"compensate");for(let s=o.length-1;s>=0;s-=1){let c=o[s].message;if(c===i)return!0;if(c===a)return!1}return!1}async function z(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 k(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 Te(t,o,{force:!0,author:e.author,message:_(e.transactionId,n,"compensate")},{pmRoot:e.pmRoot})}function We(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 r=(await ge(M(t.options,{author:e.author,id:t.id}),{pmRoot:e.pmRoot})).item;return{id:String(r.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 U(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 z(e.pmRoot,t)},async apply(){let r=(await Ee(t.id,M(t.options,{author:e.author,message:_(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(r.id),op:"update"}},async compensate(r){await k(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:"close"}}:r.closedAt===void 0?{state:"pending"}:{state:"applied",result:{id:r.id,op:"close"}}},async prepareCompensation(){return z(e.pmRoot,t)},async apply(){let r=(await U(t.id,t.reason,M(t.options,{author:e.author,message:_(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(r.id),op:"close"}},async compensate(r){await k(e,t.id,n,r)}}}function St(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 z(e.pmRoot,t)},async apply(){let r=(await Se(t.id,M(t.options,{author:e.author,message:_(e.transactionId,n,"apply")}),{pmRoot:e.pmRoot})).item;return{id:String(r.id),op:"release"}},async compensate(r){await k(e,t.id,n,r)}}}function xe(e,t,n){let r=x(t,n);switch(t.op){case"create":return We(e,t,r);case"update":return gt(e,t,r);case"close":return Et(e,t,r);case"release":return St(e,t,r)}}function ze(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 F(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 Be(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 b(e){let t=await Fe(e);if(t.isSymbolicLink())await Ge(e);else if(t.isDirectory()||t.isFile())return t;throw v()}async function vt(e){let t=await mt(e,j.O_RDONLY|j.O_NOFOLLOW|j.O_NONBLOCK);try{let n=await t.stat();if(!n.isFile())throw v();let r=W.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=W.createHash("sha256");async function o(i){for(let a of(await ft(i)).sort()){let s=l.join(i,a);Be(e,s,t,n)&&((await b(s)).isDirectory()?await o(s):(r.update(JSON.stringify(l.relative(e,s))),r.update(await vt(s))))}}return await o(e),r.digest("hex")}function L(){return new d("Tracker changed while preparing the transaction preview; retry against stable state.",p.CONFLICT,{code:"transaction_preview_snapshot_changed"})}async function Je(e){if(!N(e))return!1;let t=e.path;if(typeof t!="string")return!1;let n=l.resolve(t),r=n;for(;;)try{let o=await Fe(r);return r!==n&&o.isDirectory()}catch(o){if(!N(o))return!1;let i=l.dirname(r);if(i===r)return!1;r=i}}async function I(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 b(r);if(!(await b(n)).isFile())throw v();return await Y(n,v())}catch(r){if(await Je(r))return;throw r}}async function Tt(e,t,n){let r=new Map,o=await I(e,S);r.set(S,o);let i;try{i=JSON.parse(o??"null")}catch{i=null}let a=ce(i),s=a.success?a.data:void 0,c=ne(s?.schema);for(let[E,Ye]of Object.entries(c.files)){let g=l.relative(e,oe(e,Ye,re[E]));if(g===""||!l.resolve(e,g).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]=g;let $=await I(e,g);if(r.set(g,$),$!==void 0){let B=l.join(t,g);await lt(l.dirname(B),{recursive:!0}),await Le(B,$)}}let u=l.relative(e,ae(e));r.set(u,await I(e,u));let m=await ie(t,c),y=q({...V,item_types:{definitions:[...s?.item_types?.definitions??[],...m.type_definitions_from_file??[]]}},n),Ke=H(e)===e?[...K.filter(Boolean),S,te,"transactions",...y.folders,...r.keys()].map(E=>l.normalize(E)):void 0,Ve=s===void 0?void 0:JSON.stringify({...i,schema:{...s.schema,files:c.files}});return{configuration:r,ownedPaths:Ke,stagedSettings:Ve,registryFolders:y.folders}}async function At(e,t,n){await Ge(e);try{let r=await yt(e),o=await Tt(r,l.join(l.dirname(t),"configuration"),n),i=[...o.configuration.keys(),...o.registryFolders].map(u=>l.normalize(u)),a=await G(r,o.ownedPaths,i);await pt(r,t,{recursive:!0,dereference:!1,filter:async u=>Be(r,u,o.ownedPaths,i)?(await b(u),!0):!1});let[s,c]=await Promise.all([G(r,o.ownedPaths,i),G(t,o.ownedPaths,i)]);if(a!==s||a!==c)throw L();for(let[u,m]of o.configuration)if(await I(t,u)!==m)throw L();o.stagedSettings!==void 0&&await Le(l.join(t,S),o.stagedSettings)}catch(r){throw await Je(r)?L():r}}async function xr(e){let t=le(e),n=[...e.mutations];if(n.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(let[a,s]of n.entries())ze(s,a);let r=ee(),o=await ut(l.join(wt(),"pm-transaction-preview-")),i=l.join(o,"tracker");try{await At(t.pmRoot,i,r);let a=!1;return await Ae({path:i,noExtensions:!0},async()=>{Q(r);let s={...t,pmRoot:i,createCompensation:"close"},c=n.map((u,m)=>{let y=xe(s,u,m);return{...y,inspect:()=>F(u,m,()=>y.inspect()),prepareCompensation:()=>F(u,m,async()=>y.prepareCompensation?.()),apply:()=>F(u,m,()=>y.apply())}});await C({...t,pmRoot:i,steps:c,onTransition:({transition:u})=>{u==="committed"&&(a=!0)}})}),{validated:a,state:a?"staged_snapshot":"replayed_committed_plan",unresolved_commit_constraints:["concurrent_tracker_changes","extension_mutation_guards_and_hooks"]}}finally{await ht(o,{recursive:!0,force:!0})}}async function Rt(e){let t=[...e.mutations];if(t.length===0)throw new TypeError("Bulk item transaction requires at least one mutation");for(let[a,s]of t.entries())ze(s,a);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 C({pmRoot:e.pmRoot,transactionId:e.transactionId,author:e.author,steps:t.map((a,s)=>xe(r,a,s)),...e.lockTtlSeconds===void 0?{}:{lockTtlSeconds:e.lockTtlSeconds},...e.lockWaitMs===void 0?{}:{lockWaitMs:e.lockWaitMs},...e.onTransition===void 0?{}:{onTransition:e.onTransition}}),i={};for(let[a,s]of t.entries()){let c=x(s,a),u=o.results[c];i[_t(s,a)]=u}return{transactionId:o.transactionId,status:"committed",recovered:o.recovered,results:i}}function It(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 zr(e){return Rt({pmRoot:e.pmRoot,transactionId:e.transactionId,author:e.author,mutations:It(e),...e.lockTtlSeconds===void 0?{}:{lockTtlSeconds:e.lockTtlSeconds},...e.lockWaitMs===void 0?{}:{lockWaitMs:e.lockWaitMs},...e.onTransition===void 0?{}:{onTransition:e.onTransition}})}var Br={buildCreateStep:We,bulkHistoryMarker:_,compensateByRestore:k,deriveStepId:x,isUpdateMarkerApplied:O,readItemSnapshot:h};export{wr as a,Pe as b,_r as c,gr as d,Er as e,xr as f,Rt as g,It as h,zr as i,Br as j};
2
+ //# sourceMappingURL=chunk-JDTBPW4Y.js.map
@@ -1,3 +1,3 @@
1
- import{e as k,g as I,h as A,i as _,o as T,q as C}from"./chunk-N2PFAWVV.js";import{Eb as b,Fb as v,Gb as R}from"./chunk-CMIU2NDK.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-GJ2OJKRM.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]="a178bd8b-fc53-5633-84d5-621b61930581")}catch{}})();function O(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 S(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=O(e.allOver,"--all-over"),u=O(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 N(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 B(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{e as k,g as I,h as A,i as _,o as T,q as C}from"./chunk-MJVRF67I.js";import{Eb as b,Fb as v,Gb as R}from"./chunk-FOLSEOJ2.js";import{Hc as E,In as H,Kf as D,Nf as m,Of as y,R as c,So as f,T as p,Vo as g,Wo as a,_l as x,np as w}from"./chunk-OG66KEOF.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]="a178bd8b-fc53-5633-84d5-621b61930581")}catch{}})();function O(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 S(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=O(e.allOver,"--all-over"),u=O(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 N(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 B(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 Z(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(B),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(N),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(S)}export{Z as a};
3
- //# sourceMappingURL=chunk-TG3IOQUG.js.map
3
+ //# sourceMappingURL=chunk-K6E2FFUT.js.map
@@ -1,2 +1,2 @@
1
- import{Fa as p,Ga as i,Ha as v,Ia as _}from"./chunk-TON7H63A.js";import{cb as h}from"./chunk-GJ2OJKRM.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:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="846100a9-4314-5f7c-b892-fa16e09bee5b")}catch{}})();function f(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function y(e){return e!=="invalid"&&e!=="unreadable"}function j(e){let t=JSON.parse(e);if(typeof t!="object"||t===null||Array.isArray(t))throw new SyntaxError("Invalid settings object");let r=t.extensions;if(r===void 0)return{enabled:[],disabled:[]};if(typeof r!="object"||r===null||Array.isArray(r))throw new SyntaxError("Invalid extensions settings");let n=r;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 t;try{t=await u.readFile(e,"utf8")}catch(r){return f(r)?{status:"absent",enabled:[],disabled:[]}:{status:"unreadable",enabled:[],disabled:[],error:{code:"settings_unreadable",path:e}}}try{return{status:"ok",...j(t)}}catch{return{status:"invalid",enabled:[],disabled:[],error:{code:"settings_invalid",path:e}}}}async function A(e){let t;try{t=await u.readFile(e,"utf8")}catch(r){if(f(r))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 r=JSON.parse(t),n=_(r);if(!n||typeof r!="object"||r===null||!Array.isArray(r.entries)||n.entries.length!==r.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,r)=>t.localeCompare(r))}}catch(t){return f(t)?{directories:[]}:{directories:[],error:{code:"extensions_unreadable",path:e}}}}async function D(e){let t;try{t=await u.readFile(e,"utf8")}catch(r){return f(r)?{manifest:null,error:{code:"manifest_invalid",path:e}}:{manifest:null,error:{code:"manifest_unreadable",path:e}}}try{let r=v(JSON.parse(t));return r?{manifest:r}:{manifest:null,error:{code:"manifest_invalid",path:e}}}catch{return{manifest:null,error:{code:"manifest_invalid",path:e}}}}function M(e){let t=e.manifest?.name??e.directory,r=new Set(p(e.settings.enabled)),n=new Set(p(e.settings.disabled)),a=!y(e.settings.status)||!e.manifest?null:!n.has(t)&&(r.size===0||r.has(t)),o=y(e.managed.status)?e.managed.entries.some(d=>i(d.name)===i(t)||i(d.directory)===i(e.directory)):null;return{name:t,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 t=e.scope??"project",r=t==="global"?h(e.cwd??process.cwd()):e.pmRoot,n=c.join(r,"extensions"),a=await S(c.join(r,"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(),b=[];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:t,manifest:g.manifest,settings:a,managed:o});m&&![w.name,s].some(E=>i(E)===i(m))||b.push(w)}return m&&b.length===0&&l.every(s=>s.code!=="extensions_unreadable")&&b.push({name:m,directory:null,scope:t,installed:!1,status:"absent",configured_enabled:y(a.status)?!1:null,managed:y(o.status)?!1:null,runtime_active:null}),{scope:t,complete:l.length===0,settings_status:a.status,managed_state_status:o.status,extensions:b,errors:l}}export{R as a};
2
- //# sourceMappingURL=chunk-VU77O6HC.js.map
1
+ import{Fa as p,Ga as i,Ha as v,Ia as _}from"./chunk-ZBVAZ7XX.js";import{db as h}from"./chunk-OG66KEOF.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:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="846100a9-4314-5f7c-b892-fa16e09bee5b")}catch{}})();function f(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code==="ENOENT"}function y(e){return e!=="invalid"&&e!=="unreadable"}function j(e){let t=JSON.parse(e);if(typeof t!="object"||t===null||Array.isArray(t))throw new SyntaxError("Invalid settings object");let r=t.extensions;if(r===void 0)return{enabled:[],disabled:[]};if(typeof r!="object"||r===null||Array.isArray(r))throw new SyntaxError("Invalid extensions settings");let n=r;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 t;try{t=await u.readFile(e,"utf8")}catch(r){return f(r)?{status:"absent",enabled:[],disabled:[]}:{status:"unreadable",enabled:[],disabled:[],error:{code:"settings_unreadable",path:e}}}try{return{status:"ok",...j(t)}}catch{return{status:"invalid",enabled:[],disabled:[],error:{code:"settings_invalid",path:e}}}}async function A(e){let t;try{t=await u.readFile(e,"utf8")}catch(r){if(f(r))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 r=JSON.parse(t),n=_(r);if(!n||typeof r!="object"||r===null||!Array.isArray(r.entries)||n.entries.length!==r.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,r)=>t.localeCompare(r))}}catch(t){return f(t)?{directories:[]}:{directories:[],error:{code:"extensions_unreadable",path:e}}}}async function D(e){let t;try{t=await u.readFile(e,"utf8")}catch(r){return f(r)?{manifest:null,error:{code:"manifest_invalid",path:e}}:{manifest:null,error:{code:"manifest_unreadable",path:e}}}try{let r=v(JSON.parse(t));return r?{manifest:r}:{manifest:null,error:{code:"manifest_invalid",path:e}}}catch{return{manifest:null,error:{code:"manifest_invalid",path:e}}}}function M(e){let t=e.manifest?.name??e.directory,r=new Set(p(e.settings.enabled)),n=new Set(p(e.settings.disabled)),a=!y(e.settings.status)||!e.manifest?null:!n.has(t)&&(r.size===0||r.has(t)),o=y(e.managed.status)?e.managed.entries.some(d=>i(d.name)===i(t)||i(d.directory)===i(e.directory)):null;return{name:t,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 t=e.scope??"project",r=t==="global"?h(e.cwd??process.cwd()):e.pmRoot,n=c.join(r,"extensions"),a=await S(c.join(r,"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(),b=[];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:t,manifest:g.manifest,settings:a,managed:o});m&&![w.name,s].some(E=>i(E)===i(m))||b.push(w)}return m&&b.length===0&&l.every(s=>s.code!=="extensions_unreadable")&&b.push({name:m,directory:null,scope:t,installed:!1,status:"absent",configured_enabled:y(a.status)?!1:null,managed:y(o.status)?!1:null,runtime_active:null}),{scope:t,complete:l.length===0,settings_status:a.status,managed_state_status:o.status,extensions:b,errors:l}}export{R as a};
2
+ //# sourceMappingURL=chunk-L7U5FSZ5.js.map