@unbrained/pm-cli 2026.8.13 → 2026.8.15
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.
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +165 -113
- package/dist/cli/commander-usage.js +17 -4
- package/dist/cli/error-guidance.d.ts +2 -0
- package/dist/cli/error-guidance.js +52 -25
- package/dist/cli/main.js +40 -3
- package/dist/cli/register-mutation.js +4 -2
- package/dist/cli/register-operations.js +5 -5
- package/dist/cli-bundle/bundle-manifest.json +146 -178
- package/dist/cli-bundle/chunks/{chunk-F7FJYGK3.js → chunk-24GAV7XL.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-AIM6VT2N.js +13 -0
- package/dist/cli-bundle/chunks/chunk-DSWDLTDR.js +197 -0
- package/dist/cli-bundle/chunks/{chunk-Q47C67TQ.js → chunk-J42EGKDK.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-KIEGUBYQ.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-3ZMOWAFM.js → chunk-KLKYLSDX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QGTUPEU5.js → chunk-LJHOAVGI.js} +59 -59
- package/dist/cli-bundle/chunks/chunk-MEM2ZS3O.js +5 -0
- package/dist/cli-bundle/chunks/chunk-QHPCJWEJ.js +35 -0
- package/dist/cli-bundle/chunks/{chunk-YLBAPY22.js → chunk-WLPDLNEZ.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-4HIZ7EA3.js → register-list-query-CT3LFDDN.js} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-W64FZ5HN.js → register-mutation-NWEVA5YS.js} +3 -3
- package/dist/cli-bundle/chunks/register-operations-AHIAG5KM.js +2 -0
- package/dist/cli-bundle/chunks/{register-setup-634MFRXU.js → register-setup-ZJZFVAKE.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-4X57RE4U.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-6XKF3PGV.js +18 -0
- package/dist/cli-bundle/focused-chunks/chunk-7NJ4QYQ2.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-I75MANL7.js → chunk-EXZA4257.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-ITAUHSO6.js +50 -0
- package/dist/cli-bundle/focused-chunks/{chunk-OOYYKQWX.js → chunk-KLVUMNXJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-2RI2FESN.js → chunk-KT5XMYSX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-E3AVJ655.js → chunk-KTKH4IMG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-M67F5AIN.js +8 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3DJSGWVB.js → chunk-NSPYTG6G.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-OKA6ELTL.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-PUISBOPP.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-QLNMCESQ.js +155 -0
- package/dist/cli-bundle/focused-chunks/{chunk-IIS2FRKL.js → chunk-SLKC6QLJ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-U65UC4G3.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-WTSER4WJ.js +16 -0
- package/dist/cli-bundle/focused-chunks/{chunk-2JP7W7GO.js → chunk-ZMFXQ7VF.js} +2 -2
- package/dist/cli-bundle/main.js +13 -13
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +41 -41
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +110 -1
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +2 -2
- package/dist/core/diagnostics/remediation.js +7 -2
- package/dist/core/extensions/reserved-host-flags.js +3 -2
- package/dist/core/history/drift-scan.d.ts +6 -0
- package/dist/core/history/drift-scan.js +74 -50
- package/dist/core/history/replay.d.ts +14 -1
- package/dist/core/history/replay.js +45 -8
- package/dist/core/history/workspace-history.d.ts +59 -0
- package/dist/core/history/workspace-history.js +197 -10
- package/dist/core/output/output.d.ts +2 -0
- package/dist/core/output/output.js +13 -4
- package/dist/core/shared/command-types.d.ts +2 -0
- package/dist/core/shared/command-types.js +2 -2
- package/dist/core/shared/errors.d.ts +12 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/mcp/tool-definitions.js +9 -5
- package/dist/sdk/agent/refusal-reachability.d.ts +61 -0
- package/dist/sdk/agent/refusal-reachability.js +91 -3
- package/dist/sdk/cli-bootstrap.d.ts +2 -0
- package/dist/sdk/cli-bootstrap.js +7 -2
- package/dist/sdk/cli-contracts/completeness.js +3 -2
- package/dist/sdk/cli-contracts/flag-contracts.js +3 -2
- package/dist/sdk/cli-contracts/registration-helpers.js +3 -2
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +11 -1
- package/dist/sdk/cli-contracts/runtime-contracts.js +176 -65
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +15 -5
- package/dist/sdk/cli-contracts/tool-schema.js +10 -3
- package/dist/sdk/cli-program.js +4 -3
- package/dist/sdk/context-relevance.js +12 -4
- package/dist/sdk/core.d.ts +2 -2
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +26 -2
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +50 -26
- package/dist/sdk/governance/assurance-action.d.ts +7 -1
- package/dist/sdk/governance/assurance-action.js +7 -6
- package/dist/sdk/governance/assurance-mutation-error.d.ts +42 -1
- package/dist/sdk/governance/assurance-mutation-error.js +27 -3
- package/dist/sdk/governance/assurance-runtime.js +12 -11
- package/dist/sdk/governance/assurance.d.ts +9 -0
- package/dist/sdk/governance/assurance.js +82 -16
- package/dist/sdk/governance/extension-host-version.d.ts +25 -0
- package/dist/sdk/governance/extension-host-version.js +105 -0
- package/dist/sdk/governance/health.d.ts +32 -1
- package/dist/sdk/governance/health.js +132 -28
- package/dist/sdk/governance/provenance-health.d.ts +27 -0
- package/dist/sdk/governance/provenance-health.js +95 -3
- package/dist/sdk/governance/validate-history-drift.d.ts +7 -0
- package/dist/sdk/governance/validate-history-drift.js +68 -0
- package/dist/sdk/governance/validate.js +9 -52
- package/dist/sdk/governance.d.ts +6 -0
- package/dist/sdk/governance.js +8 -2
- package/dist/sdk/graph/assembly.d.ts +23 -0
- package/dist/sdk/graph/assembly.js +54 -2
- package/dist/sdk/graph/durable-cache.js +50 -20
- package/dist/sdk/graph/governance-contracts.d.ts +1 -1
- package/dist/sdk/graph/governance-contracts.js +4 -2
- package/dist/sdk/graph/governance.d.ts +21 -1
- package/dist/sdk/graph/governance.js +94 -32
- package/dist/sdk/graph/index.d.ts +2 -2
- package/dist/sdk/graph/index.js +4 -4
- package/dist/sdk/graph/mutation-advisory.js +15 -7
- package/dist/sdk/graph/remediation.js +12 -2
- package/dist/sdk/history-read.d.ts +8 -0
- package/dist/sdk/history-read.js +2 -2
- package/dist/sdk/history-repair.d.ts +13 -1
- package/dist/sdk/history-repair.js +62 -18
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +3 -3
- package/dist/sdk/linked-artifacts.js +16 -5
- package/dist/sdk/pagination.d.ts +15 -0
- package/dist/sdk/pagination.js +9 -5
- package/dist/sdk/query/context.d.ts +5 -1
- package/dist/sdk/query/context.js +14 -5
- package/dist/sdk/query/history.js +20 -3
- package/dist/sdk/read-output/continuation.d.ts +11 -0
- package/dist/sdk/read-output/continuation.js +132 -0
- package/dist/sdk/read-output-budget.d.ts +3 -1
- package/dist/sdk/read-output-budget.js +24 -13
- package/dist/sdk/read-output-contracts.d.ts +127 -7
- package/dist/sdk/read-output-contracts.js +381 -35
- package/dist/sdk/read-output-rows.d.ts +13 -0
- package/dist/sdk/read-output-rows.js +60 -2
- package/dist/sdk/runtime-input.js +4 -2
- package/dist/sdk/runtime-primitives.d.ts +1 -1
- package/dist/sdk/runtime-primitives.js +3 -3
- package/dist/sdk/runtime.js +5 -3
- package/docs/ASSURANCE.md +68 -2
- package/docs/COMMANDS.md +39 -4
- package/docs/READ_OUTPUT_CONTRACTS.md +85 -8
- package/docs/RELATIONSHIP_GRAPH.md +20 -5
- package/docs/RELEASING.md +42 -5
- package/docs/SDK.md +12 -5
- package/docs/SDK_CONTEXT_INTEGRITY.md +94 -1
- package/docs/TESTING.md +23 -1
- package/docs/performance/sdk-entrypoint-import-costs.md +20 -13
- package/marketplace.json +2 -2
- package/package.json +7 -7
- package/packages/pm-beads/extensions/beads/index.ts +1 -0
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/extensions/calendar/index.ts +1 -0
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/extensions/digital-twin/index.ts +7 -0
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/extensions/governance-audit/index.ts +4 -0
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +5 -0
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +6 -0
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -0
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/extensions/templates/index.ts +4 -0
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/extensions/todos/index.ts +2 -0
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/extensions/vcs/index.ts +7 -0
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/scripts/bundle-cli.mjs +17 -4
- package/sdk/public-surface.json +1283 -157
- package/dist/cli-bundle/chunks/chunk-DEDU3DG7.js +0 -196
- package/dist/cli-bundle/chunks/chunk-DL5M5J3V.js +0 -13
- package/dist/cli-bundle/chunks/chunk-HIUZVCMN.js +0 -5
- package/dist/cli-bundle/chunks/chunk-IMGIN7R6.js +0 -2
- package/dist/cli-bundle/chunks/chunk-TF3TPKPR.js +0 -34
- package/dist/cli-bundle/chunks/register-operations-C44ET7R5.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-27N23W6M.js +0 -31
- package/dist/cli-bundle/focused-chunks/chunk-3BNVU6LC.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-6MLIRBLV.js +0 -5
- package/dist/cli-bundle/focused-chunks/chunk-6XYLENDV.js +0 -155
- package/dist/cli-bundle/focused-chunks/chunk-CP4K4WFS.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-EBTNSFYE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-HC2OL2H2.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-NFHFZH2Z.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-OGC4XSBC.js +0 -17
- package/dist/cli-bundle/focused-chunks/chunk-PKPOZXLL.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-QDZUABWL.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-QQX5TDFT.js +0 -16
- package/dist/cli-bundle/focused-chunks/chunk-TEZIXMTH.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-WEH6NSL6.js +0 -18
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{d as bt,e as L,g as wt,i as N}from"./chunk-HC2OL2H2.js";import{Ya as oe,Z as ie,ka as R,l as re,nb as mt,ob as yt,qb as ce,ta as je,wb as _t}from"./chunk-6XYLENDV.js";import{F as X,L as Y,O as Q,Ra as ee,da as x,ia as Z,p as J,r as Le,s as G,t as q,v as lt}from"./chunk-2RI2FESN.js";import{h as te,j as ne,l as Me,n as A,o as se,p as ft,q as pt,r as ht,s as gt}from"./chunk-EBTNSFYE.js";import{Y as _,Z as b,aa as B,la as Ne}from"./chunk-CP4K4WFS.js";import{constants as U}from"node:fs";import{lstat as vt,mkdir as $e,open as xt}from"node:fs/promises";import T from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="bb5dfa6f-b60f-55f2-ae17-3dbcaaff1b47")}catch{}})();function Pe(e,t){if(typeof e!="string"||e.trim().length===0)throw new TypeError(`Relationship event ${t} must be non-empty`);return e.trim()}function Fe(e,t){let s=t.require(e.kind),n=s.direction==="undirected"?[e.source,e.target].sort().join("\0"):`${e.source}\0${e.target}`;return`${s.kind}\0${n}`}function In(e){return Object.freeze({...e,...e.payload===void 0?{}:{payload:Object.freeze(structuredClone(e.payload))}})}function Tn(e,t,s,n){let r=s.require(e.kind),i=n.outgoingOne.get(`${r.kind}\0${e.source}`);if(i!==void 0&&i!==t)throw new TypeError(`Relationship outgoing cardinality exceeded for ${r.kind}`);let o=n.incomingOne.get(`${r.kind}\0${e.target}`);if(o!==void 0&&o!==t)throw new TypeError(`Relationship incoming cardinality exceeded for ${r.kind}`);let c=Fe(e,s),a=n.identities.get(c);if(a!==void 0&&a!==t)throw new TypeError(`Relationship edge already active: ${c}`)}function Sn(e){let t=new Map;for(let s of e)s.action==="remove"?t.delete(s.relationshipId):t.set(s.relationshipId,s.edge);return t}function Cn(e,t,s){if(e.expectedVersion!==void 0&&e.expectedVersion!==t)throw new TypeError(`Relationship event version conflict: expected ${e.expectedVersion}, current ${t}`);let n=Pe(e.eventId,"eventId");if(s.has(n))throw new TypeError(`Relationship event already exists: ${n}`);if(e.action!=="add"&&e.action!=="remove"&&e.action!=="supersede")throw new TypeError(`Unknown relationship event action: ${e.action}`);if(!Number.isFinite(Date.parse(e.timestamp)))throw new TypeError("Relationship event timestamp must be valid");return{eventId:n,relationshipId:Pe(e.relationshipId,"relationshipId"),author:Pe(e.author,"author"),timestamp:new Date(e.timestamp).toISOString()}}function Rn(e,t,s,n,r,i){let o=s.has(t);if(e.action==="add"&&o)throw new TypeError(`Relationship is already active: ${t}`);if(e.action!=="add"&&!o)throw new TypeError(`Relationship is not active: ${t}`);if(e.action==="remove")return;if(!e.edge)throw new TypeError(`Relationship ${e.action} event requires an edge`);let c=typeof e.edge.source=="string"?e.edge.source.trim():"",a=typeof e.edge.target=="string"?e.edge.target.trim():"";if(!n.has(c)||!n.has(a))throw new TypeError(`Relationship endpoint not found: ${c} -> ${a}`);let d=new Z([c,a],[e.edge],r).edges()[0];return Tn(d,t,r,i),In(d)}var Ge=class{#e;#n;#s=[];#i=new Set;#t=new Map;#r={identities:new Map,outgoingOne:new Map,incomingOne:new Map};constructor(t,s={}){this.#e=new Set([...t].filter(n=>typeof n=="string").map(n=>n.trim()).filter(Boolean)),this.#n=s.registry??x()}get version(){return this.#s.length}events(){return Object.freeze([...this.#s])}*stream(t={}){let s=t.fromVersion??1,n=t.toVersion??this.version,r=t.batchSize??100;if(!Number.isInteger(s)||s<1)throw new TypeError("Relationship event stream fromVersion must be positive");if(!Number.isInteger(n)||n<0||n>this.version)throw new TypeError(`Relationship event stream toVersion out of range: ${n}`);if(!Number.isInteger(r)||r<1)throw new TypeError("Relationship event stream batchSize must be positive");if(s>n+1)throw new TypeError("Relationship event stream fromVersion exceeds the selected prefix");for(let i=s-1;i<n;i+=r)yield Object.freeze(this.#s.slice(i,Math.min(i+r,n)))}project(t,s,n={}){if(typeof s!="function")throw new TypeError("Relationship event projection requires a reducer");let r=t,i=0,o;for(let c of this.stream({...n,batchSize:256}))for(let a of c)r=s(r,a),i+=1,o=a;return Object.freeze({state:r,version:o?.sequence??Math.max(0,(n.fromVersion??1)-1),processed:i,...o===void 0?{}:{asOf:o.timestamp}})}#o(t,s){let n=this.#n.require(s.kind);this.#r.identities.set(Fe(s,this.#n),t),n.outgoing==="one"&&this.#r.outgoingOne.set(`${n.kind}\0${s.source}`,t),n.incoming==="one"&&this.#r.incomingOne.set(`${n.kind}\0${s.target}`,t)}#c(t){let s=this.#n.require(t.kind);this.#r.identities.delete(Fe(t,this.#n)),s.outgoing==="one"&&this.#r.outgoingOne.delete(`${s.kind}\0${t.source}`),s.incoming==="one"&&this.#r.incomingOne.delete(`${s.kind}\0${t.target}`)}append(t){let s=Cn(t,this.version,this.#i),n=this.#t.get(s.relationshipId),r=Rn(t,s.relationshipId,this.#t,this.#e,this.#n,this.#r),i=Object.freeze({eventId:s.eventId,relationshipId:s.relationshipId,action:t.action,...r===void 0?{}:{edge:r},author:s.author,timestamp:s.timestamp,...t.reason?.trim()?{reason:t.reason.trim()}:{},sequence:this.version+1});return this.#s.push(i),this.#i.add(s.eventId),n&&this.#c(n),t.action==="remove"?this.#t.delete(s.relationshipId):(this.#t.set(s.relationshipId,r),this.#o(s.relationshipId,r)),i}snapshot(t={}){if(t.atVersion!==void 0&&t.atTimestamp!==void 0)throw new TypeError("Relationship snapshot accepts one target");let s;if(t.atTimestamp!==void 0){let i=Date.parse(t.atTimestamp);if(!Number.isFinite(i))throw new TypeError("Relationship snapshot timestamp must be valid");s=this.#s.filter(o=>Date.parse(o.timestamp)<=i)}else{let i=t.atVersion??this.version;if(!Number.isInteger(i)||i<0||i>this.version)throw new TypeError(`Relationship snapshot version out of range: ${i}`);s=this.#s.slice(0,i)}let n=Sn(s),r=new Z(this.#e,n.values(),this.#n);return Object.freeze({version:s.at(-1)?.sequence??0,...s.at(-1)?{asOf:s.at(-1).timestamp}:{},edges:r.edges(),graph:r})}page(t){if(!Number.isInteger(t.limit)||t.limit<1)throw new TypeError("Relationship event page limit must be positive");let s=A("relationship-events",{order:"append-sequence"}),n=t.cursor===void 0?this.version:Number(ft(t.cursor,s).snapshot);if(!Number.isSafeInteger(n)||n<0||n>this.version)throw new TypeError("Relationship event cursor snapshot version is invalid");let r=gt(this.#s.slice(0,n),{cursor:t.cursor,fingerprint:s,limit:t.limit,readId:i=>i.eventId,snapshot:String(n)});return{version:n,events:r.rows,hasMore:r.has_more,...r.next_cursor?{nextCursor:r.next_cursor}:{}}}},Dn="relationship-event-store",Et=U.O_NOFOLLOW;function ae(e){return ie(e,Dn,30,`relationship-store:${process.pid}`,!1,!1,3e3)}async function D(e,t="relationships/events.jsonl"){let s=T.resolve(e),n=T.resolve(s,t),r=T.relative(s,n);if(r.length===0)throw new TypeError("Relationship event path must name a file within the tracker root");if(r===".."||r.startsWith(`..${T.sep}`)||T.isAbsolute(r))throw new TypeError("Relationship event path must stay within the tracker root");if(await $e(s,{recursive:!0}),(await vt(s)).isSymbolicLink())throw new TypeError("Relationship event tracker root must not be a symbolic link");let o=s;for(let c of r.split(T.sep)){o=T.join(o,c);try{if((await vt(o)).isSymbolicLink())throw new TypeError("Relationship event path must not contain symbolic links")}catch(a){if(Le(a))break;throw a}}return n}async function de(e,t,s){let n=new Ge(t,{registry:s}),r,i;try{i=await xt(e,U.O_RDONLY|Et),r=await i.readFile("utf8")}catch(c){if(Le(c))return{log:n,raw:""};throw c}finally{await i?.close()}let o=r.split(`
|
|
2
|
-
`);for(let c=0;c<o.length;c+=1){let a=o[c].trim();if(!a)continue;let d;try{d=JSON.parse(a)}catch{throw new TypeError(`Invalid relationship event JSONL at line ${c+1}`)}if(d.sequence!==n.version+1)throw new TypeError(`Invalid relationship event sequence at line ${c+1}`);n.append({eventId:d.eventId,relationshipId:d.relationshipId,action:d.action,...d.edge===void 0?{}:{edge:d.edge},author:d.author,timestamp:d.timestamp,...d.reason===void 0?{}:{reason:d.reason},expectedVersion:n.version})}return{log:n,raw:r}}function On(e,t,s,n){let r=Date.parse(t.timestamp),i;return t.action!=="remove"&&t.edge!==void 0&&(i=new Z(s,[t.edge],n).edges()[0]),e.eventId===t.eventId.trim()&&e.relationshipId===t.relationshipId.trim()&&e.action===t.action&&e.author===t.author.trim()&&Number.isFinite(r)&&e.timestamp===new Date(r).toISOString()&&e.reason===(t.reason?.trim()||void 0)&&B(e.edge)===B(i)}var kt=class e{#e;#n;#s;#i;#t;constructor(t,s,n,r){this.#e=t.pmRoot,this.#n=s,this.#s=t.registry,this.#i=n,this.#t=r}static async open(t){let s=Object.freeze([...t.nodes]),n=await D(t.pmRoot,t.relativePath),r=await ae(t.pmRoot);try{await D(t.pmRoot,n);let{log:i}=await de(n,s,t.registry);return new e(t,s,n,i)}finally{await r()}}get path(){return this.#i}async currentVersion(){return this.#t=await this.#r(),this.#t.version}async append(t){let s=await ae(this.#e);try{let n=await D(this.#e,this.#i),{log:r}=await de(n,this.#n,this.#s),i=r.append(t);await $e(T.dirname(n),{recursive:!0}),await D(this.#e,n);let o=await xt(n,U.O_APPEND|U.O_CREAT|U.O_WRONLY|Et);try{await o.appendFile(`${JSON.stringify(i)}
|
|
3
|
-
`,"utf8")}finally{await o.close()}return this.#t=r,i}finally{await s()}}async appendBatch(t,s={}){let n=await ae(this.#e);try{let r=await D(this.#e,this.#i),{log:i,raw:o}=await de(r,this.#n,this.#s),c=i.version,a=new Map(i.events().map(f=>[f.eventId,f])),d=[],u=[];for(let f of t){let l=f.eventId.trim(),p=a.get(l);if(p!==void 0){if(s.existingEventPolicy==="skip_identical"&&On(p,f,this.#n,this.#s)){u.push(p.eventId);continue}if(s.existingEventPolicy==="skip_identical")throw new TypeError(`Relationship event id collision with different content: ${l}`)}let h=i.append(f);a.set(h.eventId,h),d.push(h)}if(d.length>0){let f=o.length===0||o.endsWith(`
|
|
4
|
-
`)?o:`${o}
|
|
5
|
-
`;await $e(T.dirname(r),{recursive:!0}),await D(this.#e,r),await q(r,`${f}${d.map(l=>JSON.stringify(l)).join(`
|
|
6
|
-
`)}
|
|
7
|
-
`)}return this.#t=i,Object.freeze({version_before:c,version_after:i.version,appended:Object.freeze(d),skipped_event_ids:Object.freeze(u)})}finally{await n()}}async snapshot(t={}){return this.#t=await this.#r(),this.#t.snapshot(t)}async page(t){return this.#t=await this.#r(),this.#t.page(t)}async*stream(t={}){this.#t=await this.#r(),yield*this.#t.stream(t)}async project(t,s,n={}){return this.#t=await this.#r(),this.#t.project(t,s,n)}async#r(){let t=await ae(this.#e);try{let s=await D(this.#e,this.#i);return(await de(s,this.#n,this.#s)).log}finally{await t()}}};(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="3a33af50-3d2c-57bb-884a-4d5394599ba2")}catch{}})();function An(e,t,s,n,r,i){if(e.seen.has(t))return"skip";if(e.cursorFound&&e.affected.length>=i)return"truncate";e.seen.add(t),e.parents.set(t,s.id);let o=s.depth+1;return e.queue.push({id:t,depth:o}),e.cursorFound?(e.affected.push({id:t,distance:o,path:Gn(n,t,e.parents)}),"continue"):(e.cursorFound=t===r,"skip")}function Ln(e,t,s,n){let r=A("graph impact",{root:e,direction:s,kinds:[...t.kinds??[]].sort(),max_depth:Number.isFinite(n)?n:"unbounded"});return{fingerprint:r,after:t.after===void 0?void 0:pt(t.after,r)}}function z(e,t,s){e.get(t).add(s)}function le(e){return new Map(e.map(t=>[t,new Set]))}function Tt(e){for(let t of e)t.sort();return e.sort((t,s)=>s.length-t.length||t[0].localeCompare(s[0]))}function ue(e){if(Array.isArray(e))return e.map(s=>ue(s));if(e===null||typeof e!="object")return e;let t=e.toJSON;return typeof t=="function"?ue(t.call(e)):Object.fromEntries(Object.entries(e).sort(([s],[n])=>s.localeCompare(n)).map(([s,n])=>[s,ue(n)]))}function It(e){return JSON.stringify(ue(e))}function Nn(e,t,s,n){let r=[{id:e,expanded:!1}];for(;r.length>0;){let i=r.pop();if(i.expanded){n.push(i.id);continue}if(s.has(i.id))continue;s.add(i.id),r.push({id:i.id,expanded:!0});let o=[...t.get(i.id)].sort().reverse();for(let c of o)s.has(c)||r.push({id:c,expanded:!1})}}function Mn(e,t){let s=new Set,n=[];for(let r of e)s.has(r)||Nn(r,t,s,n);return n}function jn(e,t){let s=new Set,n=[];for(let r of[...e].reverse()){if(s.has(r))continue;let i=[],o=[r];for(s.add(r);o.length>0;){let c=o.pop();i.push(c);for(let a of t.get(c))s.has(a)||(s.add(a),o.push(a))}n.push(i)}return Tt(n)}function St(e,t){let s=le(e);for(let[n,r]of t)for(let i of r)z(s,i,n);return jn(Mn(e,t),s)}function Pn(e,t){let s=le(e.nodes());for(let n of e.edges()){let r=t.require(n.kind);if(!r.ordering)continue;let i=(r.precedence??"source_before_target")==="source_before_target";z(s,i?n.source:n.target,i?n.target:n.source)}return s}function $n(e,t){let s=new Map(e.map(i=>[i,0]));for(let i of t.values())for(let o of i)s.set(o,s.get(o)+1);let n=e.filter(i=>s.get(i)===0).sort(),r=[];for(;n.length>0;){r.push(n);let i=[];for(let o of n)for(let c of t.get(o)){let a=s.get(c)-1;s.set(c,a),a===0&&i.push(c)}n=i.sort()}return r}function Fn(e,t){let s=new Map(e.map(o=>[o,0])),n=new Map;for(let o of e)for(let c of t.get(o)){if(!s.has(c))continue;let a=s.get(o)+1,d=n.get(c);(a>s.get(c)||a===s.get(c)&&(d===void 0||o.localeCompare(d)<0))&&(s.set(c,a),n.set(c,o))}let r=[...e].sort((o,c)=>s.get(c)-s.get(o)||o.localeCompare(c))[0],i=r===void 0?[]:[r];for(;i[0]!==void 0&&n.has(i[0]);)i.unshift(n.get(i[0]));return{depth:Object.fromEntries(s),path:i}}function Gn(e,t,s){let n=[t],r=t;for(;r!==e;)r=s.get(r),n.push(r);return n.reverse()}function fe(e,t={}){let s=t.registry??x(),n=[...e.nodes()],r=Pn(e,s),i=$n(n,r),o=i.flat(),c=o.length===n.length,a=c?[]:St(n,r).filter(u=>u.length>1||r.get(u[0]).has(u[0])),d=Fn(o,r);return{exact:!0,acyclic:c,order:o,layers:i,frontier:i[0]??[],depth:d.depth,criticalPath:d.path,criticalPathLength:Math.max(0,d.path.length-1),cycles:a,provenance:{algorithm:"kahn-longest-path",edgeFamily:"ordering"}}}function Ct(e,t,s={}){let n=s.direction??"outgoing",r=s.maxDepth??Number.POSITIVE_INFINITY,i=s.limit??Number.POSITIVE_INFINITY,{fingerprint:o,after:c}=Ln(t,s,n,r),a={queue:[{id:t,depth:0}],seen:new Set([t]),parents:new Map,affected:[],cursorFound:c===void 0||c===t},d=0,u=0,f=!1,l=!1;e:for(let p=0;p<a.queue.length;p+=1){s.signal?.throwIfAborted();let h=a.queue[p];d+=1;let g=e.adjacency(h.id,{direction:n,kinds:s.kinds,signal:s.signal});if(u+=g.meta.inspectedEdges,h.depth>=r){g.value.some(m=>!a.seen.has(m))&&(f=!0);continue}for(let m of g.value)if(An(a,m,h,t,c,i)==="truncate"){f=!0,l=!0;break e}}if(!a.cursorFound)throw new TypeError(`Unknown impact cursor item: ${c}`);return{root:t,affected:a.affected,exact:!0,truncated:f,...l?{nextCursor:se(o,a.affected.at(-1)?.id??t)}:{},cost:{visitedNodes:d,inspectedEdges:u}}}function Rt(e){let t=[...e.nodes()],s=le(t),n=le(t);for(let a of e.edges())z(s,a.source,a.target),z(s,a.target,a.source),z(n,a.source,a.target);let r=[],i=new Set;for(let a of t){if(i.has(a))continue;let d=[],u=[a];for(i.add(a);u.length>0;){let f=u.pop();d.push(f);for(let l of s.get(f))i.has(l)||(i.add(l),u.push(l))}r.push(d)}let o=t.map(a=>({id:a,degree:s.get(a).size})),c=Math.max(0,...o.map(({degree:a})=>a));return{components:Tt(r),stronglyConnected:St(t,n),orphans:o.filter(({degree:a})=>a===0).map(({id:a})=>a),hubs:o.filter(({degree:a})=>a>0&&a===c),exact:!0,provenance:{algorithm:"component-degree",edgeFamily:"all"}}}function yi(e,t){let s=new Map(e.edges.map(r=>[It(r),r])),n=new Map(t.edges.map(r=>[It(r),r]));return{fromVersion:e.version,toVersion:t.version,added:[...n].filter(([r])=>!s.has(r)).map(([,r])=>r),removed:[...s].filter(([r])=>!n.has(r)).map(([,r])=>r),unchangedCount:[...s.keys()].filter(r=>n.has(r)).length,exact:!0}}import{createHash as qn}from"node:crypto";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="dea35fb9-9f9f-56ce-afc0-f4dc993012c3")}catch{}})();var Bn=64,Un=8;function zn(e,t){let s=(e.dependencies??[]).map(n=>{if(typeof n!="object"||n===null)return"";let r=n;return`${typeof r.kind=="string"?r.kind:"related"}:${typeof r.id=="string"?r.id:""}`}).sort().join(",");return[e.id,e.title,e.status,t(e.status)?"1":"0",typeof e.type=="string"?e.type.trim():"",e.parent??"",e.blocked_by??"",s].join("\0")}function pe(e,t=n=>n==="closed"||n==="canceled",s=x()){let n=e.filter(i=>typeof i?.id=="string"&&i.id.trim().length>0).map(i=>zn(i,t)).sort(),r=s.list().map(i=>B(i)).sort();return qn("sha256").update(n.join("")).update("").update(r.join("")).digest("hex")}function Dt(e,t,s){let n=t??s;if(!Number.isInteger(n)||n<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`);return n}var qe=class{#e=new Map;#n;#s;constructor(t={}){this.#n=Dt("maxResultsPerWorkspace",t.maxResultsPerWorkspace,Bn),this.#s=Dt("maxWorkspaces",t.maxWorkspaces,Un)}lookup(t,s,n){let r=this.#e.get(t),i=!0;(r===void 0||r.fingerprint!==s)&&(r={fingerprint:s,assembly:n(),results:new Map},i=!1,!this.#e.has(t)&&this.#e.size>=this.#s&&this.#e.delete(this.#e.keys().next().value)),this.#e.delete(t),this.#e.set(t,r);let o=r,c=this.#n;return{assembly:o.assembly,assemblyReused:i,fingerprint:s,memoize(a,d){let u=o.results.get(a);if(u!==void 0||o.results.has(a))return o.results.delete(a),o.results.set(a,u),{value:structuredClone(u),reused:!0};let f=d();return o.results.size>=c&&o.results.delete(o.results.keys().next().value),o.results.set(a,structuredClone(f)),{value:f,reused:!1}}}}clear(){this.#e.clear()}},Ot=new qe;function he(){return Ot}function ki(){Ot.clear()}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="31a800f7-1374-5e7c-ad23-ae3d8ebcebe0")}catch{}})();var Kn=["prerequisite","dependent","ancestor","descendant","provenance","related"],Wn=new TextEncoder;function Be(e,t,s){let n=e??t;if(!Number.isInteger(n)||n<1)throw new TypeError(`Relationship context ${s} must be positive`);return n}function ge(e){return Math.max(1,Math.ceil(Wn.encode(JSON.stringify(e)).byteLength/4))}function Ue(e,t,s){let n=s.resolve(e.kind);if(n?.ordering){let i=(n.precedence??"source_before_target")==="source_before_target"?e.source:e.target;return t===i?"prerequisite":"dependent"}if(n?.hierarchy){let i=(n.hierarchyDirection??"source_parent")==="source_parent"?e.source:e.target;return t===i?"ancestor":"descendant"}return e.kind==="discovered_from"||e.kind==="incident_from"?"provenance":"related"}function Vn(e,t,s,n){let r=e.filter(i=>i.source===t&&i.target===s||i.target===t&&i.source===s).map(i=>Ue(i,s,n));return[...new Set(r)].sort()}function Hn(e){return Kn.find(t=>e.includes(t))}function Jn(e,t,s,n){let r=n.direction??"both",i=n.maxDepth??3;if(!Number.isInteger(i)||i<0)throw new TypeError("Relationship context maxDepth must be non-negative");let o=new Set([t]),c=[{id:t,distance:0}],a=[],d=0,u=!1;for(let f=0;f<c.length;f+=1){n.signal?.throwIfAborted();let l=c[f];if(l.distance>=i&&u)continue;let p=e.neighborEdges(l.id,{direction:r,kinds:n.kinds,signal:n.signal});if(d+=p.meta.inspectedEdges,l.distance>=i){p.value.some(h=>!o.has(h.id))&&(u=!0);continue}for(let{id:h,edge:g}of p.value){if(o.has(h))continue;o.add(h);let m={id:h,distance:l.distance+1,via:l.id,role:Ue(g,h,s)};a.push(m),c.push(m)}}return a.sort((f,l)=>f.distance-l.distance||f.id.localeCompare(l.id)),{rows:a,visitedNodes:c.length,inspectedEdges:d,depthTruncated:u}}function Xn(e,t,s,n){let r={prerequisite:0,dependent:0,ancestor:0,descendant:0,provenance:0,related:0},i=e.neighborEdges(t,{direction:n.direction??"both",kinds:n.kinds,signal:n.signal}).value;for(let{id:o,edge:c}of i)r[Ue(c,o,s)]+=1;return{directEdges:r,directTotal:i.length,rootEdges:i.map(({edge:o})=>o)}}function Yn(e){let t=[],s=e.initialTokens;for(let n of e.candidates){if(t.length>=e.nodeLimit)break;let r=n.distance===1?Vn(e.rootEdges,e.rootId,n.id,e.registry):[],i={...e.details.get(n.id)??{id:n.id},distance:n.distance,role:r.length>0?Hn(r):n.role,via:n.via,reasons:r.length>0?r:[`${n.role} via ${n.via} (depth ${n.distance})`]},o=ge(i);if(s+o>e.tokenBudget)break;t.push(i),s+=o}if(e.candidates.length>0&&t.length===0)throw new TypeError("Relationship context tokenBudget cannot fit one node");return{nodes:t,usedTokens:s}}function Qn(e){let t=e.options.kinds?new Set(e.options.kinds.map(i=>e.registry.require(i).kind)):void 0,s=e.graph.edges().filter(i=>{if(!e.included.has(i.source)||!e.included.has(i.target))return!1;if(t===void 0||t.has(i.kind))return!0;let o=e.registry.resolve(i.kind)?.inverse;return o!==void 0&&t.has(o)}),n=[],r=e.initialTokens;for(let i of s){if(n.length>=e.edgeLimit)break;let o=ge(i);if(r+o>e.tokenBudget)break;n.push(i),r+=o}return{edges:n,usedTokens:r,candidateCount:s.length}}function At(e,t,s,n={}){if(!e.nodes().includes(t))throw new TypeError(`Relationship node not found: ${t}`);let r=Be(n.nodeLimit,20,"nodeLimit"),i=Be(n.edgeLimit,40,"edgeLimit"),o=Be(n.tokenBudget,1200,"tokenBudget"),c=n.registry??x(),a=new Map(s.map(O=>[O.id,O])),d=a.get(t)??{id:t},{evidence:u=[],...f}=d,l=[...u],p=Jn(e,t,c,n),{rootEdges:h,...g}=Xn(e,t,c,n),m=A("relationship-context",{rootId:t,direction:n.direction??"both",kinds:[...n.kinds??[]].sort(),maxDepth:n.maxDepth??3}),y=ht(p.rows,n.cursor,m,({id:O})=>O),w=p.rows.slice(y),v=ge(f)+ge(l);if(v>o)throw new TypeError("Relationship context tokenBudget cannot fit root and evidence");let C=Yn({candidates:w,details:a,rootEdges:h,rootId:t,registry:c,nodeLimit:r,tokenBudget:o,initialTokens:v}),{nodes:k}=C,V=new Set([t,...k.map(({id:O})=>O)]),$=Qn({graph:e,included:V,options:n,registry:c,edgeLimit:i,tokenBudget:o,initialTokens:C.usedTokens}),{edges:F,usedTokens:xn}=$,H=y+k.length,Oe=H<p.rows.length,dt=k.at(-1),Ae=$.candidateCount-F.length,ut=p.depthTruncated||Oe||Ae>0,En={rootId:t,...f.status===void 0?{}:{rootStatus:f.status},...g,discoveredNodes:p.rows.length,returnedNodes:k.length,returnedEdges:F.length,omittedNodes:p.rows.length-H,omittedEdges:Ae,evidenceCount:l.length,hasMore:Oe};return{root:f,summary:En,nodes:k,edges:F,evidence:l,meta:{exact:!0,truncated:ut,completeness:ut?"truncated":"complete",nodeLimit:r,edgeLimit:i,tokenBudget:o,usedTokens:xn,visitedNodes:p.visitedNodes,inspectedEdges:p.inspectedEdges,omittedNodes:p.rows.length-H,omittedEdges:Ae,...Oe&&dt?{nextCursor:se(m,dt.id,H-1)}:{}}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="c0fb747e-1f9f-55c4-808b-b77d3a881f87")}catch{}})();var Zn=5,es=1e4,ts=8;function ze(e,t){if(!Number.isFinite(t)||!Number.isInteger(t)||t<0)throw new TypeError(`Invalid path ${e} bound: ${String(t)}`)}function me(e,t){return t.hierarchyDirection==="target_parent"?e.target:e.source}function K(e,t){return(t.precedence??"source_before_target")==="target_before_source"?e.target:e.source}function ye(e,t){let s=K(e,t);return{predecessor:s,successor:s===e.source?e.target:e.source}}function ns(e,t,s){if(t===void 0)return;let n=e.registry(),r=new Set;for(let i of t){let o=n.require(i);if(!o[s])throw new TypeError(`Relationship kind ${o.kind} is not a ${s} kind`);r.add(o.kind)}return r}function ss(e,t,s,n,r){let i=e.registry(),o=e.neighborEdges(t,{direction:"both",...s===void 0?{}:{kinds:[...s]}}),c=[],a=new Set;for(let d of o.value){let u=i.require(d.edge.kind);u[n]&&r(d,u,t)&&(a.has(d.id)||(a.add(d.id),c.push(d.id)))}return{neighbors:c,inspectedEdges:o.meta.inspectedEdges}}function rs(e,t,s,n,r,i){if(t>=s)return e.neighbors.some(o=>!i.seen.has(o))&&(i.truncated=!0),!1;for(let o of e.neighbors)if(!i.seen.has(o)){if(i.seen.add(o),i.queue.push({id:o,depth:t+1}),!i.resumed){o===r&&(i.resumed=!0);continue}if(i.value.length>=n)return i.truncated=!0,!0;i.value.push(o)}return!1}function _e(e,t,s,n,r){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`);let i=ns(e,s.kinds,n),o=s.limit??Number.POSITIVE_INFINITY,c=s.maxDepth??Number.POSITIVE_INFINITY,a=s.after,d={seen:new Set([t]),value:[],queue:[{id:t,depth:0}],resumed:a===void 0,truncated:!1},u=0,f=0;for(let l=0;l<d.queue.length;l+=1){s.signal?.throwIfAborted();let p=d.queue[l];u+=1;let h=ss(e,p.id,i,n,r);if(f+=h.inspectedEdges,rs(h,p.depth,c,o,a,d))break}if(!d.resumed)throw new TypeError(`Traversal cursor not found in sequence: ${a}`);return{value:d.value,meta:{visitedNodes:u,inspectedEdges:f,truncated:d.truncated,nextCursor:d.value.at(-1)}}}function Lt(e,t){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`)}function Nt(e,t,s,n,r){let i=e.neighborEdges(t.nodes.at(-1),{direction:n,...s.kinds===void 0?{}:{kinds:s.kinds}});return r.inspectedEdges+=i.meta.inspectedEdges,i.value.filter(o=>!t.nodeSet.has(o.id))}function is(e,t,s,n,r,i,o){for(let c of Nt(e,t,n,r,o)){let a=[...t.nodes,c.id],d=new Set(t.nodeSet).add(c.id),u=[...t.edges,c.edge];if(c.id===s){if(o.value.push({nodes:a,edges:u,length:u.length}),o.value.length>=i)return!0}else o.queue.push({nodes:a,nodeSet:d,edges:u})}return!1}function Mt(e,t,s={}){return _e(e,t,s,"hierarchy",(n,r)=>me(n.edge,r)===n.id)}function jt(e,t,s={}){return _e(e,t,s,"hierarchy",(n,r,i)=>me(n.edge,r)===i)}function Pt(e,t,s={}){return _e(e,t,s,"ordering",(n,r)=>K(n.edge,r)===n.id)}function $t(e,t,s={}){return _e(e,t,s,"ordering",(n,r,i)=>K(n.edge,r)===i)}function os(e,t,s,n,r,i,o,c){let a={value:[],queue:[{nodes:[t],nodeSet:new Set([t]),edges:[]}],inspectedEdges:0},d=0,u=!1,f=r+1;for(let l=0;l<a.queue.length;l+=1){if(n.signal?.throwIfAborted(),a.value.length>=f||d>=i){u=!0;break}let p=a.queue[l];if(d+=1,p.edges.length>=o){Nt(e,p,n,c,a).length>0&&(u=!0);continue}if(is(e,p,s,n,c,f,a)){u=!0;break}}return{value:a.value.slice(0,r),meta:{visitedNodes:d,inspectedEdges:a.inspectedEdges,truncated:u}}}function Ft(e,t,s,n={}){Lt(e,t),Lt(e,s);let r=n.maxPaths??Zn,i=n.maxVisitedPaths??es,o=n.maxDepth??ts;ze("maxPaths",r),ze("maxVisitedPaths",i),ze("maxDepth",o);let c=n.direction??"outgoing";n.signal?.throwIfAborted();for(let a of n.kinds??[])e.registry().require(a);return t===s?r===0?{value:[],meta:{visitedNodes:1,inspectedEdges:0,truncated:!0}}:{value:[{nodes:[t],edges:[],length:0}],meta:{visitedNodes:1,inspectedEdges:0,truncated:!1}}:os(e,t,s,n,r,i,o,c)}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="24898402-1568-5b05-9072-f89dd91f25a6")}catch{}})();var cs=16,as=2,ds=8;function be(e,t){if(!Number.isInteger(t)||t<1)throw new TypeError(`Invalid ${e} bound: ${String(t)}`)}function we(e,t,s){let n=e.registry(),r=t===void 0?void 0:new Set(t.map(i=>n.require(i).kind));for(let i of e.edges()){if(i.source===i.target)continue;let o=n.require(i.kind);r!==void 0&&!(r.has(o.kind)||o.inverse!==void 0&&r.has(o.inverse))||s(i,o)}}function us(e,t){let s=new Map;we(e,t,n=>{Gt(s,n.source,n.target),Gt(s,n.target,n.source)});for(let n of s.values())n.sort();return s}function Gt(e,t,s){let n=e.get(t);n===void 0?e.set(t,[s]):n.push(s)}function ls(e,t){let s=new Map;for(let i of e){let o=t.get(i);s.set(o,(s.get(o)??0)+1)}let n,r=0;for(let[i,o]of s)(o>r||o===r&&i<n)&&(n=i,r=o);return n}function fs(e,t){let s=new Map;for(let[r,i]of e){let o=s.get(i);o===void 0?s.set(i,[r]):o.push(r)}let n=[];for(let r of s.values())r.length<t||(r.sort(),n.push({representative:r[0],size:r.length,members:r}));return n.sort((r,i)=>i.size-r.size||r.representative.localeCompare(i.representative))}function qt(e,t={}){let s=t.maxIterations??cs,n=t.minSize??as;be("maxIterations",s),be("minSize",n);let r=us(e,t.kinds),i=e.nodes(),o=new Map(i.map(f=>[f,f])),c=0,a=!1,d=0,u=0;for(;c<s&&!a;){t.signal?.throwIfAborted(),c+=1,a=!0;for(let f of i){d+=1;let l=r.get(f);if(l===void 0)continue;u+=l.length;let p=ls(l,o);p!==o.get(f)&&(o.set(f,p),a=!1)}}return{value:{communities:fs(o,n),iterations:c,converged:a},meta:{visitedNodes:d,inspectedEdges:u,truncated:!a}}}function ve(e){return e.direction==="directed"&&(e.ordering||e.hierarchy)}function ke(e){return e.inverse!==void 0&&e.inverse<e.kind?e.inverse:e.kind}function xe(e,t){return(t.hierarchy?me(e,t):e.source===K(e,t)?e.target:e.source)===e.target?{from:e.source,to:e.target}:{from:e.target,to:e.source}}function ps(e,t){if(t===void 0)return;let s=e.registry(),n=new Set;for(let r of t){let i=s.require(r);if(!ve(i))throw new TypeError(`Relationship kind ${i.kind} is not a directed ordering or hierarchy kind`);n.add(ke(i))}return n}function hs(e,t){let s=e.registry(),n=new Map;for(let r of e.edges()){let i=s.require(r.kind);if(!ve(i))continue;let o=ke(i);if(t!==void 0&&!t.has(o))continue;let c=xe(r,i);if(c.from===c.to)continue;let a=n.get(o);a===void 0&&(a={adjacency:new Map,records:[]},n.set(o,a));let d=a.adjacency.get(c.from);d===void 0?a.adjacency.set(c.from,new Set([c.to])):d.add(c.to),a.records.push({...c,edge:r})}return n}function gs(e){let t=new Map;for(let[s,n]of e.adjacency)t.set(s,[...n].sort());return t}function ms(e,t,s,n){let r=[n];for(let i=s;i!==t;i=e.get(i))r.push(i);return r.push(t),r.reverse()}function ys(e,t,s,n,r,i){for(let o of e.get(s.id)??[])if(i.inspectedEdges+=1,!(s.depth===0&&o===t.to)&&!n.has(o)){if(n.set(o,s.id),o===t.to)return ms(n,t.from,s.id,o);r.push({id:o,depth:s.depth+1})}}function _s(e,t,s,n){let r=new Map([[t.from,t.from]]),i=[{id:t.from,depth:0}];for(let o=0;o<i.length;o+=1){let c=i[o];if(n.visitedNodes+=1,c.depth>=s)continue;let a=ys(e,t,c,r,i,n);if(a!==void 0)return a}}function Ee(e,t={}){let s=t.maxDepth??ds;be("maxDepth",s),t.limit!==void 0&&be("limit",t.limit);let n=t.limit??Number.POSITIVE_INFINITY,r=ps(e,t.kinds),i=hs(e,r),o=[],c={visitedNodes:0,inspectedEdges:0},a=!1;e:for(let d of[...i.keys()].sort()){let u=i.get(d),f=gs(u);for(let l of u.records){t.signal?.throwIfAborted();let p=_s(f,l,s,c);if(p!==void 0){if(o.length>=n){a=!0;break e}o.push({edge:l.edge,witness:p})}}}return{value:o,meta:{visitedNodes:c.visitedNodes,inspectedEdges:c.inspectedEdges,truncated:a}}}function bs(e,t,s,n,r){let i=new Set,o=[];for(let c of s){if(c.id===e||i.has(c.id))continue;if(!r.seen.has(c.id)){if(t>=n){r.truncated=!0;continue}r.seen.add(c.id),r.queue.push({id:c.id,depth:t+1})}i.add(c.id),o.push(c.id);let a=r.predecessors.get(c.id);a===void 0&&(a=new Set,r.predecessors.set(c.id,a)),a.add(e)}return o}function ws(e,t,s){let n=s.direction??"outgoing",r=s.maxDepth??Number.POSITIVE_INFINITY,i=[],o=new Map,c={seen:new Set([t]),queue:[{id:t,depth:0}],predecessors:new Map,truncated:!1},a=0;for(let d=0;d<c.queue.length;d+=1){s.signal?.throwIfAborted();let{id:u,depth:f}=c.queue[d];i.push(u);let l=e.neighborEdges(u,{direction:n,...s.kinds===void 0?{}:{kinds:s.kinds}});a+=l.meta.inspectedEdges,o.set(u,bs(u,f,l.value,r,c))}return{order:i,successors:o,predecessors:c.predecessors,inspectedEdges:a,truncated:c.truncated}}function vs(e,t){let s=[],n=new Set([t]),r=[{id:t,index:0}];for(;r.length>0;){let i=r.at(-1),o=e.successors.get(i.id);if(i.index<o.length){let c=o[i.index];i.index+=1,n.has(c)||(n.add(c),r.push({id:c,index:0}))}else s.push(i.id),r.pop()}return s.reverse()}function ks(e,t,s,n){let r=e,i=t;for(;r!==i;){for(;n.get(r)>n.get(i);)r=s.get(r);for(;n.get(i)>n.get(r);)i=s.get(i)}return r}function xs(e,t,s){let n;for(let r of[...e].sort())t.has(r)&&(n=n===void 0?r:ks(n,r,t,s));return n}function Es(e,t,s,n,r){let i=new Map([[t,t]]),o=!0;for(;o;){o=!1;for(let c of s){if(r?.throwIfAborted(),c===t)continue;let a=xs(e.predecessors.get(c),i,n);a!==void 0&&i.get(c)!==a&&(i.set(c,a),o=!0)}}return i}function Bt(e,t,s={}){if(!e.hasNode(t))throw new TypeError(`Relationship node not found: ${t}`);if(s.maxDepth!==void 0&&(!Number.isInteger(s.maxDepth)||s.maxDepth<0))throw new TypeError(`Invalid maxDepth bound: ${String(s.maxDepth)}`);let n=ws(e,t,s),r=vs(n,t),i=new Map(r.map((d,u)=>[d,u])),o=Es(n,t,r,i,s.signal),c=new Map(r.map(d=>[d,1]));for(let d=r.length-1;d>=0;d-=1){let u=r[d];if(u===t)continue;let f=o.get(u);c.set(f,c.get(f)+c.get(u))}let a=r.filter(d=>d!==t).map(d=>({id:d,idom:o.get(d),dominatedCount:c.get(d)-1})).sort((d,u)=>u.dominatedCount-d.dominatedCount||d.id.localeCompare(u.id));return{value:{root:t,reachableCount:n.order.length,rows:a},meta:{visitedNodes:n.order.length,inspectedEdges:n.inspectedEdges,truncated:n.truncated}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="348c9246-2fb9-529e-b627-f60c901a6cf2")}catch{}})();function Ut(e){return Math.round(e*1e6)/1e6}function zt(e,t,s){let n=e.get(t);n===void 0?e.set(t,new Set([s])):n.add(s)}function Kt(e,t){let s=new Map(e.nodes().map(r=>[r,new Set]));we(e,t,r=>{s.get(r.source).add(r.target),s.get(r.target).add(r.source)});let n=new Map;for(let[r,i]of s)n.set(r,[...i].sort());return n}function Is(e,t){let s=new Map,n=new Map;return we(e,t,(r,i)=>{if(!i.ordering)return;let{predecessor:o,successor:c}=ye(r,i);zt(n,o,c),zt(s,c,o)}),{incoming:s,outgoing:n}}function Ts(e,t,s){let n=new Map([[e,0]]),r=new Map([[e,1]]),i=new Map,o=[],c=[e],a=0,d=0;for(let u=0;u<c.length;u+=1){let f=c[u];s.visitedNodes+=1,o.push(f);let l=n.get(f);f!==e&&(a+=1,d+=l);for(let p of t.get(f))if(s.inspectedEdges+=1,n.has(p)||(n.set(p,l+1),c.push(p)),n.get(p)===l+1){r.set(p,(r.get(p)??0)+r.get(f));let h=i.get(p);h===void 0?i.set(p,[f]):h.push(f)}}return{stack:o,sigma:r,predecessors:i,reachableCount:a,distanceSum:d}}function Ss(e,t,s){let n=new Map;for(let r=e.stack.length-1;r>=0;r-=1){let i=e.stack[r],o=(1+(n.get(i)??0))/e.sigma.get(i);for(let c of e.predecessors.get(i)??[])n.set(c,(n.get(c)??0)+e.sigma.get(c)*o);i!==t&&s.set(i,(s.get(i)??0)+(n.get(i)??0))}}function Cs(e,t){return t<=1||e.reachableCount===0?0:e.reachableCount/(t-1)*(e.reachableCount/e.distanceSum)}function Rs(e,t,s,n,r){return{id:e,degree:t.get(e).length,inDegree:s.incoming.get(e)?.size??0,outDegree:s.outgoing.get(e)?.size??0,betweenness:Ut((n.get(e)??0)/2),closeness:Ut(r.get(e))}}function Wt(e,t={}){let s=Kt(e,t.kinds),n=Is(e,t.kinds),r=e.nodes(),i=new Map,o=new Map,c={visitedNodes:0,inspectedEdges:0};for(let u of r){t.signal?.throwIfAborted();let f=Ts(u,s,c);o.set(u,Cs(f,r.length)),Ss(f,u,i)}let a=0;for(let u of s.values())a+=u.length;let d=r.map(u=>Rs(u,s,n,i,o)).sort((u,f)=>f.betweenness-u.betweenness||f.degree-u.degree||u.id.localeCompare(f.id));return{value:{nodeCount:r.length,edgeCount:a/2,rows:d},meta:{visitedNodes:c.visitedNodes,inspectedEdges:c.inspectedEdges,truncated:!1}}}function Ds(e,t){return e<=t?{source:e,target:t}:{source:t,target:e}}function Os(e,t,s){let r=t.get(e.node)[e.neighborIndex];if(e.neighborIndex+=1,s.inspectedEdges+=1,r!==e.parent){if(s.discovery.has(r)){s.low.set(e.node,Math.min(s.low.get(e.node),s.discovery.get(r)));return}return e.children+=1,s.discovery.set(r,s.timer),s.low.set(r,s.timer),s.timer+=1,{node:r,parent:e.node,neighborIndex:0,children:0}}}function As(e,t,s){if(e.parent===null){e.children>1&&s.articulation.add(e.node);return}let n=e.parent,r=s.low.get(e.node);s.low.set(n,Math.min(s.low.get(n),r)),n!==t&&r>=s.discovery.get(n)&&s.articulation.add(n),r>s.discovery.get(n)&&s.bridges.push(Ds(n,e.node))}function Ls(e,t,s,n){s.discovery.set(e,s.timer),s.low.set(e,s.timer),s.timer+=1;let r=[{node:e,parent:null,neighborIndex:0,children:0}];for(;r.length>0;){n?.throwIfAborted();let i=r.at(-1);if(i.neighborIndex<t.get(i.node).length){let o=Os(i,t,s);o!==void 0&&r.push(o)}else As(i,e,s),r.pop()}}function Ie(e,t={}){let s=Kt(e,t.kinds),n={discovery:new Map,low:new Map,timer:0,articulation:new Set,bridges:[],inspectedEdges:0};for(let r of e.nodes())n.discovery.has(r)||Ls(r,s,n,t.signal);return{value:{articulationPoints:[...n.articulation].sort(),bridges:n.bridges.sort((r,i)=>r.source.localeCompare(i.source)||r.target.localeCompare(i.target))},meta:{visitedNodes:n.discovery.size,inspectedEdges:n.inspectedEdges,truncated:!1}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="f155ac72-64eb-5316-b016-954abd48c0e7")}catch{}})();function Ns(e){let t=e.registry(),s=new Map,n=new Set;for(let r of e.edges()){let i=t.require(r.kind);if(!i.ordering)continue;let{predecessor:o,successor:c}=ye(r,i);if(n.add(o),n.add(c),o===c)continue;let a=s.get(o);a===void 0?s.set(o,new Set([c])):a.add(c)}return{forward:s,participants:n}}function Ms(e,t,s,n){if(e===void 0)return n;let r=n;for(let i of e)t.has(i)&&(r=Math.min(r,s.get(i)));return r}function js(e,t,s){let n=s-t;return{id:e,earliestStart:t,earliestFinish:t+1,latestStart:s,latestFinish:s+1,slack:n,critical:n===0}}function Ps(e,t,s,n,r){let i=new Map;for(let o=e.length-1;o>=0;o-=1){let c=e[o],a=Ms(t.forward.get(c),n,i,r);i.set(c,a-1)}return e.map(o=>js(o,s[o],i.get(o))).sort((o,c)=>o.slack-c.slack||o.earliestStart-c.earliestStart||o.id.localeCompare(c.id))}function Vt(e,t={}){t.signal?.throwIfAborted();let s=fe(e,{registry:e.registry()}),n=Ns(e),r=new Set(s.order),i=s.order.filter(d=>n.participants.has(d)),o=i.reduce((d,u)=>Math.max(d,s.depth[u]+1),0),c=Ps(i,n,s.depth,r,o),a=c.length>0;return{exact:!0,acyclic:s.acyclic,makespan:o,scheduledCount:c.length,criticalPath:a?s.criticalPath:[],criticalPathLength:a?s.criticalPathLength:0,cycles:s.cycles,rows:c,provenance:{algorithm:"critical-path-method",edgeFamily:"ordering",weighting:"unit"}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="a2043b27-3dfe-5da8-a10f-d92ff33f3c28")}catch{}})();var Te=["missing_reference_active","missing_reference_terminal","legacy_no_blocker_sentinel","ordering_cycle","legacy_ordering_cycle","duplicate_edge","legacy_duplicate_edge","duplicate_dependency_row","legacy_duplicate_dependency_row","stale_lifecycle_block","isolated_active_node","sparse_active_node"];(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]="ab8a4904-0302-5e36-9963-750b3ba79876")}catch{}})();var $s=25,Fs="milestone",Gs="outcome milestone:",qs=new Set(["discovered_from","incident_from","supersedes","verifies"]);function Je(e){return qs.has(e)}var Ht={error:0,warning:1,info:2};function Ve(e,t,s,n,r,i,o){let c=[...r].sort((a,d)=>a.localeCompare(d));return{code:e,severity:t,policy:s,message:n(c.length),count:c.length,sample:c.slice(0,i),sample_truncated:c.length>i,remediation:o}}function Bs(e){let t=e.graph.registry(),s=new Map;for(let n of e.graph.edges()){let r=t.require(n.kind);if(!r.ordering)continue;let[i,o]=(r.precedence??"source_before_target")==="target_before_source"?[n.target,n.source]:[n.source,n.target],c=s.get(i);c?c.push(o):s.set(i,[o])}for(let n of s.values())n.sort((r,i)=>r.localeCompare(i));return s}function Xt(e,t){t.indexes.set(e,t.nextIndex),t.lowLinks.set(e,t.nextIndex),t.nextIndex+=1,t.stack.push(e),t.onStack.add(e)}function Us(e,t,s,n){let r=s.get(e.node)??[];if(e.neighborIndex>=r.length)return!1;let i=r[e.neighborIndex];return e.neighborIndex+=1,n.indexes.has(i)?n.onStack.has(i)&&n.lowLinks.set(e.node,Math.min(n.lowLinks.get(e.node),n.indexes.get(i))):(Xt(i,n),t.push({node:i,neighborIndex:0})),!0}function zs(e,t,s,n){t.pop();let r=t.at(-1);if(r&&n.lowLinks.set(r.node,Math.min(n.lowLinks.get(r.node),n.lowLinks.get(e.node))),n.lowLinks.get(e.node)!==n.indexes.get(e.node))return;let i=[];for(;;){let o=n.stack.pop();if(n.onStack.delete(o),i.push(o),o===e.node)break}(i.length>1||i.length===1&&s.get(i[0])?.includes(i[0]))&&n.components.push(i.sort((o,c)=>o.localeCompare(c)))}function Xe(e){let t={indexes:new Map,lowLinks:new Map,onStack:new Set,stack:[],components:[],nextIndex:0},s=[...e.keys()].sort((n,r)=>n.localeCompare(r));for(let n of s){if(t.indexes.has(n))continue;let r=[{node:n,neighborIndex:0}];for(Xt(n,t);r.length>0;){let i=r.at(-1);Us(i,r,e,t)||zs(i,r,e,t)}}return t.components.sort((n,r)=>n[0].localeCompare(r[0]))}function Ke(e){return`${e.holder_id} -> ${e.target_id} (${e.kind})`}function E(e,t,s,n,r,i,o,c){t.length!==0&&e.push(Ve(n,r,i,o,t,s,c))}function Ks(e,t,s){let n=[],r=[...e.dangling.active,...e.dangling.legacy_terminal].filter(i=>!i.no_active_blocker_sentinel);return E(n,r.filter(i=>!t(i.holder_status)).map(Ke),s,"missing_reference_active","error","Active items must not reference absent targets; missing prerequisites distort scheduling.",i=>`${i} active dangling reference(s) to absent items`,"Restore or re-create the referenced item, or remove/retype the reference on the holder."),E(n,r.filter(i=>t(i.holder_status)).map(Ke),s,"missing_reference_terminal","info","Terminal items may retain historical references, but absent targets remain unexplainable context.",i=>`${i} terminal dangling reference(s) to absent items`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),E(n,e.dangling.no_active_blocker_sentinels.map(Ke),s,"legacy_no_blocker_sentinel","info","The pre-structured-dependency no-active-blocker sentinel is retired; real edges carry blocker state.",i=>`${i} legacy no-active-blocker sentinel reference(s)`,"Delete the sentinel reference; blocker state is derived from blocked_by edges."),n}function He(e,t){let s=t.get(e);return s?!s.terminal:!0}function Ws(e,t,s,n){let r=[],i=Bs(e);for(let a of Xe(i)){let d=a.some(u=>He(u,t));r.push(d?Ve("ordering_cycle","error","Order-bearing relationship kinds must stay acyclic; a cycle makes every member unschedulable.",u=>`execution-order cycle across ${u} item(s)`,a,n,"Remove or retype one ordering edge inside the cycle, or split the work so precedence is linear."):Ve("legacy_ordering_cycle","info","Ordering cycles between exclusively terminal items are historical contradictions with no scheduling effect.",u=>`terminal-only execution-order cycle across ${u} item(s)`,a,n,"Leave as history debt, or clean up in a dedicated changelog-safe closed-item batch; never repair closed items ad hoc."))}let o=new Map;for(let[a,d]of i)for(let u of d){let f=o.get(u);f?f.push(a):o.set(u,[a])}let c=[...t.values()].filter(a=>!a.missing&&!a.terminal&&s(a.status)&&!(o.get(a.id)??[]).some(d=>{let u=t.get(d);return u===void 0||!u.terminal})).map(a=>a.id);return E(r,c,n,"stale_lifecycle_block","warning","A blocked lifecycle status must be backed by at least one open ordering predecessor.",a=>`${a} status-blocked item(s) with no open blocker edge`,'Add a local blocker edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status.'),r}function Se(e){let t=e.edges.map(s=>s.kind).sort((s,n)=>s.localeCompare(n));return`${e.from} -> ${e.to} (${t.join(" + ")})`}function Ye(e){let t=e.graph.registry(),s=new Map;for(let r of e.graph.edges()){let i=t.require(r.kind);if(!ve(i))continue;let o=xe(r,i);if(o.from===o.to)continue;let c=`${ke(i)}::${o.from}::${o.to}`,a=s.get(c);a?a.edges.push(r):s.set(c,{...o,edges:[r]})}let n=[...s.values()].filter(r=>r.edges.length>=2);for(let r of n)r.edges.sort((i,o)=>i.kind.localeCompare(o.kind));return n.sort((r,i)=>r.from.localeCompare(i.from)||r.to.localeCompare(i.to))}function Vs(e,t,s){let n=[],r=[];for(let o of Ye(e))(He(o.from,t)||He(o.to,t)?n:r).push(Se(o));let i=[];return E(i,n,s,"duplicate_edge","info","One semantic relationship should be stored once; parallel same-family spellings (reciprocal inverse pairs included) add no information and skew degree metrics.",o=>`${o} duplicated relationship(s) between active endpoints`,"Remove all but one stored spelling of the relationship; keep the canonical direction the holder declared first."),E(i,r,s,"legacy_duplicate_edge","info","Duplicated spellings between exclusively terminal items are historical noise with no scheduling effect.",o=>`${o} duplicated relationship(s) between terminal endpoints`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),i}function Hs(e,t){let s=[],n=[];for(let i of e.duplicateRows??[])(i.legacy_terminal?n:s).push(`${i.holder_id} -> ${i.target_id} (${i.kind} x${i.occurrences})`);let r=[];return E(r,s,t,"duplicate_dependency_row","warning","One dependency row must be stored once per holder; identical repeated rows are a storage-layer defect invisible to the assembled graph.",i=>`${i} exactly duplicated stored dependency row(s) on active holder(s)`,"Remove the repeated rows so the dependency is stored exactly once; graph semantics are unchanged."),E(r,n,t,"legacy_duplicate_dependency_row","info","Identical repeated dependency rows on terminal holders are historical storage noise with no scheduling effect.",i=>`${i} exactly duplicated stored dependency row(s) on terminal holder(s)`,"Leave as history debt or clean up in a dedicated changelog-safe closed-item batch."),r}function Js(e,t){let s=new Map;for(let n of e.graph.edges()){t?.throwIfAborted();let r=e.graph.registry().require(n.kind),i;if(r.hierarchy?i=xe(n,r):r.kind==="implements"&&(i={from:n.source,to:n.target}),i===void 0)continue;let o=s.get(i.to)??new Set;o.add(i.from),s.set(i.to,o)}return s}function Xs(e,t,s){let n=new Set(e),r=[...e].sort();for(let i=0;i<r.length;i+=1){s?.throwIfAborted();for(let o of[...t.get(r[i])??[]].sort())n.has(o)||(n.add(o),r.push(o))}return n}function Ys(e,t,s,n){let r=0,i=0,o=0,c=0;for(let p of e.values())if(n?.throwIfAborted(),!t.has(p.id)&&!(p.missing||p.status==="external")){if(p.terminal){o+=1,s.has(p.id)&&(c+=1);continue}s.has(p.id)?r+=1:i+=1}let a=r+i,d=o-c,u=r+c,f=i+d,l=u+f;return{active_outcome_reachable_nodes:r,active_outcome_unreachable_nodes:i,active_outcome_reachability_basis_points:a===0?0:Math.floor(r*1e4/a),terminal_nodes:o,terminal_outcome_reachable_nodes:c,terminal_outcome_unreachable_nodes:d,terminal_outcome_reachability_basis_points:o===0?0:Math.floor(c*1e4/o),outcome_reachable_nodes:u,outcome_unreachable_nodes:f,outcome_reachability_basis_points:l===0?0:Math.floor(u*1e4/l)}}function Qs(e,t,s){let n=new Set(e.details.filter(i=>i.type?.toLowerCase()===Fs&&i.title.trim().toLowerCase().startsWith(Gs)).map(i=>i.id)),r=Xs(n,Js(e,s),s);return{outcome_nodes:n.size,...Ys(t,n,r,s)}}function Zs(e,t,s,n,r){e.active+=1;let i=t.type??"(untyped)",o=e.byType.get(i);o||(o={active:0,isolated:0,degree_leq_one:0},e.byType.set(i,o)),o.active+=1,!(s>1)&&(e.degreeLeqOne+=1,o.degree_leq_one+=1,s===0&&(e.isolated+=1,o.isolated+=1),!(n.has(t.id.toLowerCase())||r.has(i.toLowerCase()))&&(s===0?e.isolates.push(t.id):e.sparse.push(t.id)))}function er(e,t,s,n,r,i,o){let c={active:0,missing:0,isolated:0,degreeLeqOne:0,isolates:[],sparse:[],byType:new Map};for(let m of e.graph.nodes()){o?.throwIfAborted();let y=t.get(m);if(y){if(y.missing){c.missing+=1;continue}y.terminal||Zs(c,y,e.graph.incidentEdges(m).length,s,n)}}let{isolates:a,sparse:d}=c,u=[];E(u,a,r,"isolated_active_node","warning","Active work should be reachable from the graph unless explicitly declared a valid isolate.",m=>`${m} active item(s) with no relationships`,"Link the item to its parent, prerequisite, or origin \u2014 or register it as an exempt isolate."),E(u,d,r,"sparse_active_node","info","Active items with a single edge often miss an honest semantic partner; sparse is not automatically defective.",m=>`${m} active item(s) with exactly one relationship`,"Investigate for an honest second edge (story->task, defect family, cross-epic complement); do not fabricate one.");let f=e.graph.edges().length,l=Object.fromEntries(Object.entries(i).sort(([m],[y])=>m.localeCompare(y))),p=Object.entries(l).reduce((m,[y,w])=>m+(Je(y)?w:0),0),h=Ie(e.graph,{signal:o}).value,g=Qs(e,t,o);return{findings:u,profile:{nodes:e.graph.nodes().length,edges:f,edge_basis:"deduplicated_directed",edges_by_kind:l,edge_share_by_kind:Object.fromEntries(Object.entries(l).map(([m,y])=>[m,y/f])),semantic_edges:p,semantic_edge_share:f===0?0:p/f,active_nodes:c.active,missing_nodes:c.missing,isolated_active_nodes:c.isolated,degree_leq_one_active_nodes:c.degreeLeqOne,coverage_by_type:Object.fromEntries([...c.byType.entries()].sort(([m],[y])=>m<y?-1:1)),articulation_points:h.articulationPoints.length,bridge_edges:h.bridges.length,...g,finding_subjects_by_code:Object.fromEntries(Te.map(m=>[m,0]))}}}function Ce(e,t={}){let s=t.isTerminal??(l=>l==="closed"||l==="canceled"),n=t.isBlocked??(l=>l==="blocked"),r=t.maxSampleSize??$s;if(!Number.isInteger(r)||r<1)throw new TypeError(`Invalid audit sample bound: ${String(t.maxSampleSize)}`);let i=new Set((t.exemptIsolates??[]).filter(l=>typeof l=="string").map(l=>l.trim().toLowerCase())),o=new Set((t.isolateExemptTypes??[]).filter(l=>typeof l=="string").map(l=>l.trim().toLowerCase())),c=new Map(e.details.map(l=>[l.id,{id:l.id,status:l.status,missing:e.missingIdSet.has(l.id.toLowerCase()),terminal:s(l.status),...l.type===void 0?{}:{type:l.type}}]));t.signal?.throwIfAborted();let a={};for(let l of e.graph.edges())a[l.kind]=(a[l.kind]??0)+1;let d=Ks(e,s,r);t.signal?.throwIfAborted(),d.push(...Ws(e,c,n,r)),t.signal?.throwIfAborted(),d.push(...Vs(e,c,r),...Hs(e,r)),t.signal?.throwIfAborted();let u=er(e,c,i,o,r,a,t.signal);d.push(...u.findings),d.sort((l,p)=>Ht[l.severity]-Ht[p.severity]||l.code.localeCompare(p.code)||l.sample[0].localeCompare(p.sample[0]));let f=u.profile.finding_subjects_by_code;for(let l of d)f[l.code]+=l.count;return{findings:d,profile:{...u.profile,finding_subjects_by_code:f}}}function We(e,t){let s=[...new Set([...Object.keys(e),...Object.keys(t)])].sort(),n={};for(let r of s){let i=(t[r]??0)-(e[r]??0);i!==0&&(n[r]=i)}return n}function Jt(e){return e.profile.coverage_by_type??{}}function Yt(e,t){let s={},n=Jt(e),r=Jt(t),i=[...new Set([...Object.keys(n),...Object.keys(r)])].sort();for(let l of i){let p=Object.assign({active:0,isolated:0,degree_leq_one:0},n[l]),h=Object.assign({active:0,isolated:0,degree_leq_one:0},r[l]),g={active:h.active-p.active,isolated:h.isolated-p.isolated,degree_leq_one:h.degree_leq_one-p.degree_leq_one};Object.values(g).some(m=>m!==0)&&(s[l]=g)}let{edge_share_by_kind:o={},semantic_edges:c=0,semantic_edge_share:a=0}=e.profile,{edge_share_by_kind:d={},semantic_edges:u=0,semantic_edge_share:f=0}=t.profile;return{baseline_saved_at:e.saved_at,same_snapshot:e.fingerprint===t.fingerprint,affected_subjects_by_code:We(e.affected_subjects_by_code,t.affected_subjects_by_code),profile:{nodes:t.profile.nodes-e.profile.nodes,edges:t.profile.edges-e.profile.edges,active_nodes:t.profile.active_nodes-e.profile.active_nodes,missing_nodes:t.profile.missing_nodes-e.profile.missing_nodes,isolated_active_nodes:t.profile.isolated_active_nodes-e.profile.isolated_active_nodes,degree_leq_one_active_nodes:t.profile.degree_leq_one_active_nodes-e.profile.degree_leq_one_active_nodes,edges_by_kind:We(e.profile.edges_by_kind,t.profile.edges_by_kind),edge_share_by_kind:We(o,d),semantic_edges:u-c,semantic_edge_share:f-a,coverage_by_type:s}}}import Qt 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]="2f7f14e3-6d41-5f45-a560-ebfbb8aa5828")}catch{}})();var Zt=1,Qe=500,tr=64,nr="graph-durable-cache";function en(e){return ie(e,nr,30,`graph-cache:${process.pid}`,!1,!1,3e3)}function W(e){return Qt.join(e,"runtime","graph-cache.json")}function tn(e){return Qt.join(e,"runtime","graph-audit-baseline.json")}function Ze(e){if(e!==null)try{let t=JSON.parse(e);return typeof t!="object"||t===null||t.version!==Zt||typeof t.fingerprint!="string"||typeof t.saved_at!="string"||typeof t.results!="object"||t.results===null||Array.isArray(t.results)?void 0:t}catch{return}}async function et(e,t){let s=await G(W(e)),n=Ze(s),r=n?.fingerprint===t;return{exists:s!==null,fresh:r,results:r?n.results:{}}}async function tt(e,t,s,n,r){let i=await en(e);try{let o=Ze(await G(W(e))),c=o?.fingerprint===t?o.results:{};delete c[n],c[n]=r;let a=Object.keys(c);for(let d of a.slice(0,Math.max(0,a.length-tr)))delete c[d];await q(W(e),JSON.stringify({version:Zt,fingerprint:t,saved_at:new Date().toISOString(),results:c})),s.results=c}finally{await i()}}async function nt(e){let t=await en(e);try{await lt(W(e))}finally{await t()}}async function nn(e,t){let s=W(e),n=await G(s),r=Ze(n);return r===void 0?{exists:n!==null,fresh:!1,entry_count:0}:{exists:!0,fresh:r.fingerprint===t,entry_count:Object.keys(r.results).length,fingerprint:r.fingerprint.slice(0,12),saved_at:r.saved_at,bytes:Buffer.byteLength(n,"utf8")}}function st(e,t){return t||e>=Qe}function Re(e){return M(e)&&Object.values(e).every(j)}function M(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function j(e){return Number.isInteger(e)&&Number(e)>=0}function sn(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0&&e<=1}function rn(e,t){return e===void 0||t(e)}function sr(e){return M(e)&&Object.values(e).every(sn)}function rr(e){return M(e)?Object.values(e).every(t=>M(t)&&[t.active,t.isolated,t.degree_leq_one].every(j)):!1}function ir(e,t){let s=["articulation_points","bridge_edges","outcome_nodes","active_outcome_reachable_nodes","active_outcome_unreachable_nodes","terminal_nodes","terminal_outcome_reachable_nodes","terminal_outcome_unreachable_nodes","outcome_reachable_nodes","outcome_unreachable_nodes"],n=["active_outcome_reachability_basis_points","terminal_outcome_reachability_basis_points","outcome_reachability_basis_points"],r=[...s,...n,"finding_subjects_by_code"],i=r.filter(d=>e[d]!==void 0).length;if(i!==0&&i!==r.length)return;let o=s.every(d=>e[d]===void 0||j(e[d])),c=n.every(d=>e[d]===void 0||j(e[d])&&Number(e[d])<=1e4);if(!o||!c||e.edge_basis!==void 0&&e.edge_basis!=="deduplicated_directed"||!rn(e.finding_subjects_by_code,Re))return;let a=Re(e.finding_subjects_by_code)?e.finding_subjects_by_code:{};return{edge_basis:"deduplicated_directed",...Object.fromEntries(s.map(d=>[d,e[d]??0])),...Object.fromEntries(n.map(d=>[d,e[d]??0])),finding_subjects_by_code:Object.fromEntries(Te.map(d=>[d,a[d]??t[d]??0]))}}function or(e,t,s,n,r){let i=[s,n,r],o=i.filter(d=>d!==void 0).length;if(o===0)return{edge_share_by_kind:{},semantic_edges:0,semantic_edge_share:0};if(o!==i.length||!sr(s)||!j(n)||!sn(r))return;let c=Object.entries(t);if(c.reduce((d,[,u])=>d+u,0)!==e||Object.keys(s).length!==c.length||c.some(([d,u])=>s[d]!==(e===0?0:u/e)))return;let a=c.reduce((d,[u,f])=>d+(Je(u)?f:0),0);if(!(n!==a||r!==(e===0?0:a/e)))return{edge_share_by_kind:s,semantic_edges:n,semantic_edge_share:r}}function cr(e){if(e!==null)try{let t=JSON.parse(e);if(!M(t))return;let s=t,n=s.profile;if(typeof s.saved_at!="string"||typeof s.fingerprint!="string")return;let r=s.affected_subjects_by_code;if(!Re(r)||!M(n)||![n.nodes,n.edges,n.active_nodes,n.missing_nodes,n.isolated_active_nodes,n.degree_leq_one_active_nodes].every(j)||!Re(n.edges_by_kind)||!rn(n.coverage_by_type,rr))return;let i=or(n.edges,n.edges_by_kind,n.edge_share_by_kind,n.semantic_edges,n.semantic_edge_share);if(i===void 0)return;let o=ir(n,r);if(o===void 0)return;let{coverage_by_type:c={}}=n;return{...s,profile:{...n,...i,...o,coverage_by_type:c}}}catch{return}}async function on(e){return cr(await G(tn(e)))}async function cn(e,t){await q(tn(e),JSON.stringify(t))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="9b8e22ad-6268-515d-994e-6b98a062ba93")}catch{}})();var ar={missing_reference_active:{op:"investigate",confidence:"medium",rationale:"Restore or re-create the referenced item, or remove/retype the reference on the active holder; the correct fix depends on why the target is absent."},missing_reference_terminal:{op:"waive",confidence:"high",rationale:"Terminal-holder reference to an absent item is historical debt; waive it or clean it up only in a dedicated changelog-safe closed-item batch."},legacy_no_blocker_sentinel:{op:"remove",confidence:"high",rationale:"The pre-structured-dependency no-active-blocker sentinel is retired and carries no information; blocker state derives from blocked_by edges."},ordering_cycle:{op:"investigate",confidence:"low",rationale:"Every cycle member is unschedulable until one ordering edge is removed or retyped; the planner never chooses which edge to cut."},legacy_ordering_cycle:{op:"waive",confidence:"high",rationale:"Terminal-only ordering cycles have no scheduling effect; repairing them would mutate closed history (changelog drag)."},duplicate_edge:{op:"remove",confidence:"high",rationale:"Parallel same-family spellings state one relationship twice; remove all but one stored spelling, keeping the holder's canonical direction."},legacy_duplicate_edge:{op:"waive",confidence:"high",rationale:"Duplicated spellings between terminal items are historical noise; waive or batch changelog-safe cleanup."},duplicate_dependency_row:{op:"remove",confidence:"high",rationale:"The identical dependency row is stored more than once on the holder; drop the repeats so the row exists exactly once \u2014 graph semantics are unchanged."},legacy_duplicate_dependency_row:{op:"waive",confidence:"high",rationale:"Repeated identical rows on terminal holders are storage noise; waive or clean up only in a changelog-safe closed-item batch."},stale_lifecycle_block:{op:"investigate",confidence:"medium",rationale:`Add a local ordering edge, declare an external blocker with --dep "id=<external-ref>,kind=blocked_by,source_kind=external", or move the item back to an active status; only the holder's owner knows which is true.`},isolated_active_node:{op:"investigate",confidence:"medium",rationale:"Link the item to its parent, prerequisite, or origin \u2014 or register it as an explicitly exempt isolate; the audit never fabricates an edge."},sparse_active_node:{op:"investigate",confidence:"low",rationale:"Investigate for an honest second edge (story-to-task, defect family, cross-epic complement); sparse is not automatically defective."}};function an(e){return`${e.source} -${e.kind}-> ${e.target}`}function dr(e){let[t,...s]=e.edges;return s.map(n=>({op:"remove",code:"duplicate_edge",subject:an(n),rationale:"This stored spelling restates the kept canonical edge of the same semantic family; removing it leaves the relationship stated exactly once.",evidence:[`keep: ${an(t)}`,`group: ${Se(e)}`],confidence:"high"}))}function ur(e,t){if(e.code==="duplicate_edge")return e.sample.flatMap(n=>dr(t.get(n)));let s=ar[e.code];return e.sample.map(n=>({op:s.op,code:e.code,subject:n,rationale:s.rationale,evidence:[e.policy],confidence:s.confidence}))}function dn(e,t={}){let{redundancyLimit:s,...n}=t,r=Ce(e,n),i=new Map(Ye(e).map(d=>[Se(d),d])),o=r.findings.flatMap(d=>ur(d,i)),c=r.findings.some(d=>d.sample_truncated);t.signal?.throwIfAborted();let a=Ee(e.graph,{limit:s??t.maxSampleSize??25,...t.signal===void 0?{}:{signal:t.signal}});for(let d of a.value)o.push({op:"remove",code:"redundant_edge",subject:`${d.edge.source} -> ${d.edge.target} (${d.edge.kind})`,rationale:"The stored edge is implied by a longer same-family witness path; shortcut edges are sometimes deliberate emphasis, so confirm intent before removing.",evidence:[`witness: ${d.witness.join(" -> ")}`],confidence:"medium"});return c=c||a.meta.truncated,{steps:o,report:r,truncated:c,cost:{visitedNodes:a.meta.visitedNodes,inspectedEdges:a.meta.inspectedEdges}}}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="ee0547d9-ae0f-5762-8bff-e25f0a3cd4d5")}catch{}})();var lr=["tree","graph","context"],fr=["none","repeated"],pr=["outgoing","incoming","both"],hr=32,gr=200,mr=400,yr=16e3;function _r(e){let t=e?.trim().toLowerCase()??"tree";if(lr.includes(t))return t;throw new b(`Invalid --format value "${e}". Use "tree", "graph", or "context".`,_.USAGE)}function I(e,t){if(e===void 0)return;let s=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(s)||s<1)throw new b(`Invalid --${t} value "${e}". Use a positive integer.`,_.USAGE);return s}function De(e){if(e===void 0)return;let t=typeof e=="number"?e:Number(e.trim());if(!Number.isInteger(t)||t<0)throw new b(`Invalid --max-depth value "${e}". Use a non-negative integer.`,_.USAGE);return t}function br(e){let t=e?.trim().toLowerCase()??"none";if(fr.includes(t))return t;throw new b(`Invalid --collapse value "${e}". Use "none" or "repeated".`,_.USAGE)}function it(e){let t=e?.trim().toLowerCase()??"both";if(pr.includes(t))return t;throw new b(`Invalid --direction value "${e}". Use "outgoing", "incoming", or "both".`,_.USAGE)}function ot(e,t=x()){if(e===void 0)return;let s=(Array.isArray(e)?e:[e]).flatMap(r=>r.split(",")).map(r=>r.trim()).filter(r=>r.length>0);if(s.length===0)return;let n=new Set;for(let r of s){let i=t.resolve(r);if(!i){let o=t.list().map(c=>c.kind).join(", ");throw new b(`Invalid --kind value "${r}". Registered kinds: ${o}.`,_.USAGE)}n.add(i.kind)}return[...n].sort()}function wr(e){if(!e||e.length===0)return[];let t=e.map(({id:n,kind:r})=>({id:n.trim(),kind:r.trim().toLowerCase()})).sort((n,r)=>{let i=n.kind.localeCompare(r.kind);return i!==0?i:n.id.localeCompare(r.id)}),s=new Map;for(let n of t){let r=`${n.kind.toLowerCase()}::${n.id.toLowerCase()}`;s.has(r)||s.set(r,{id:n.id,kind:n.kind})}return[...s.values()]}function vr(e){return{id:e.id,title:e.title,type:e.type,status:e.status,dependencies:wr(e.dependencies)}}function kr(e){return te(new TextEncoder().encode(JSON.stringify({...e,dependencies:void 0})).byteLength)}function xr(e,t,s,n,r,i,o,c,a){for(let d of t.dependencies){let u=Math.max(1,Math.ceil(JSON.stringify({from:e.id,to:d.id,kind:d.kind}).length/3));if(c.nodes>=c.nodeLimit){e.truncated=!0,c.reasons.add("node_limit");break}if(c.edges>=c.edgeLimit){e.truncated=!0,c.reasons.add("edge_limit");break}if(c.estimatedTokens+u>=c.tokenBudget){e.truncated=!0,c.reasons.add("token_budget");break}c.edges+=1,c.estimatedTokens+=u,e.dependencies.push(ln(d.id,s,n,r,i,o,c,a+1,d.kind))}}function Er(e,t,s,n,r,i,o,c){return o.estimatedTokens>=o.tokenBudget&&t?.dependencies.length?(e.truncated=!0,o.reasons.add("token_budget"),!0):!t||e.cycle?!0:n!==void 0&&c>=n?(t.dependencies.length>0&&(e.truncated=!0,o.reasons.add("max_depth")),!0):r==="repeated"&&i.has(s)?(e.collapsed=!0,!0):!1}function ln(e,t,s,n,r,i,o,c=0,a){let d=e.trim().toLowerCase(),u=t.get(d),f={id:u?.id??e,title:u?.title,type:u?.type,status:u?.status,via:a,missing:!u,cycle:s.has(d),dependencies:[]};if(o.nodes+=1,o.estimatedTokens+=kr(f),Er(f,u,d,n,r,i,o,c))return f;r==="repeated"&&i.add(d);let l=new Set(s);return l.add(d),xr(f,u,t,l,n,r,i,o,c),f}function un(e,t){return!e||e.missing&&!t.missing?t:{...e,title:e.title??t.title,type:e.type??t.type,status:e.status??t.status}}function Ir(e){let t=new Map,s=new Map,n=[e];for(;n.length>0;){let c=n.pop();t.set(c.id,un(t.get(c.id),{id:c.id,title:c.title,type:c.type,status:c.status,missing:c.missing}));for(let a of c.dependencies){t.set(a.id,un(t.get(a.id),{id:a.id,title:a.title,type:a.type,status:a.status,missing:a.missing}));let d=a.via??"related",u=`${c.id}::${a.id}::${d}`;s.has(u)||s.set(u,{from:c.id,to:a.id,kind:d}),a.cycle||n.push(a)}}let r=[...t.values()].sort((c,a)=>c.id.localeCompare(a.id)),i=[...s.values()].sort((c,a)=>{let d=c.from.localeCompare(a.from);if(d!==0)return d;let u=c.to.localeCompare(a.to);return u!==0?u:c.kind.localeCompare(a.kind)}),o=r.filter(c=>c.missing).map(c=>c.id);return{root_id:e.id,nodes:r,edges:i,missing_ids:o}}function fn(e,t,s){let n=new Set,r=new Set,i=new Set,o=new Set,c=[{id:e,depth:0}],a=0;for(;a<c.length;){let d=c[a++],u=d.id.trim().toLowerCase();n.add(u);let f=t.get(u);if(!f){i.add(u);continue}if(!(s!==void 0&&d.depth>=s)&&!o.has(u)){o.add(u);for(let l of f.dependencies)r.add(`${u}::${l.id.trim().toLowerCase()}::${l.kind}`),c.push({id:l.id,depth:d.depth+1})}}return{node_count:n.size,edge_count:r.size,edge_basis:"deduplicated_directed",missing_count:i.size}}function Tr(e,t=x()){let s=De(e.maxDepth),n=I(e.nodeLimit,"node-limit"),r=I(e.edgeLimit,"edge-limit"),i=I(e.tokenBudget,"token-budget"),o=ot(e.kind,t);return{direction:it(e.direction),...o===void 0?{}:{kinds:o},...s===void 0?{}:{maxDepth:s},...n===void 0?{}:{nodeLimit:n},...r===void 0?{}:{edgeLimit:r},...i===void 0?{}:{tokenBudget:i},...e.cursor?.trim()?{cursor:e.cursor.trim()}:{}}}function Sr(e,t,s,n){return At(e.graph,t,e.details.map(r=>r.id===t&&n.length>0?{...r,evidence:n}:r),s)}function rt(e,t,s,n){for(let r of s.slice(0,n)){let i=r?.trim();i&&e.push(`${t}:${i}`)}}async function Cr(e,t,s,n){let r=await mt(e,t,s.id_prefix,s.item_format,n);if(!r)return[];let{document:i}=await yt(r,{schema:s.schema}),o=i.metadata,c=o.files??[],a=o.tests??[],d=o.docs??[],u=[["files",c.length],["tests",a.length],["docs",d.length],["comments",(o.comments??[]).length],["notes",(o.notes??[]).length],["learnings",(o.learnings??[]).length]];if(u.every(([,l])=>l===0))return[];let f=[`linked:${u.map(([l,p])=>`${l}=${p}`).join(",")}`];return rt(f,"file",c.map(l=>l.path),3),rt(f,"test",a.map(l=>l.command??l.path),2),rt(f,"doc",d.map(l=>l.path),2),f}function Rr(e){let{canonicalId:t,context:s,missingCount:n,missingReferences:r,referenceLimit:i,summaryOnly:o}=e;return{id:t,format:"context",node_count:s.nodes.length+1,edge_count:s.edges.length,edge_basis:"deduplicated_directed",missing_count:n,missing_scope:"traversal",missing_reference_count:r.length,...o?{}:{missing_references:r.slice(0,i),context:s}}}function Dr(e){let{row:t,missingReachableSet:s,packetIds:n,filteredKinds:r,registry:i}=e;if(t.no_active_blocker_sentinel||!s.has(t.target_id.trim().toLowerCase())||!n.has(t.holder_id))return!1;if(r===void 0)return!0;let o=i.resolve(t.kind);return o!==void 0&&(r.has(o.kind)||o.inverse!==void 0&&r.has(o.inverse))}function pn(e,t,s){let n;for(;;){let r=te(new TextEncoder().encode(je(Me("deps",e),t)).byteLength);if(r===n)return r;s(r),n=r}}function Or(e){return e instanceof TypeError&&e.message.startsWith("Relationship context tokenBudget cannot fit ")}function Ar(e){try{return Sr(e.assembly,e.canonicalId,{...e.contextOptions,...e.internalTokenBudget===void 0?{}:{tokenBudget:e.internalTokenBudget}},e.rootEvidence)}catch(t){if(e.smallestResult!==void 0&&Or(t))return e.smallestResult;throw t}}function Lr(e){let{assembly:t,canonicalId:s,contextOptions:n,rootEvidence:r,summaryOnly:i,outputFormat:o,missingCount:c,missingReferences:a}=e,u=n.edgeLimit??40,f=n.tokenBudget,l,p;for(;;){let h=Ar({assembly:t,canonicalId:s,contextOptions:n,internalTokenBudget:f,rootEvidence:r,smallestResult:p});if("format"in h)return h;let g=h;l??=g.meta.tokenBudget,f??=l;let m=Rr({canonicalId:s,context:g,missingCount:c,missingReferences:a,referenceLimit:u,summaryOnly:i});if(p=m,i||(g.meta.tokenBudget=l,g.meta.usedTokens=pn(P(m,!1),o,v=>{g.meta.usedTokens=v}),g.meta.usedTokens<=l))return m;if(u>0){u-=1;continue}let y=f,w=y*l/g.meta.usedTokens;f=Math.min(y-1,Math.max(1,Math.floor(w*.9)))}}function Nr(e){let{assembly:t,canonicalId:s,options:n,rootEvidence:r,summaryOnly:i,outputFormat:o}=e,c=Tr(n,t.graph.registry()),a=t.graph.closure(s,{direction:c.direction,...c.kinds===void 0?{}:{kinds:c.kinds},maxDepth:c.maxDepth??3}),d=a.value.filter(g=>t.missingIdSet.has(g.toLowerCase())),u=new Set(d.map(g=>g.toLowerCase())),f=t.graph.registry(),l=c.kinds?new Set(c.kinds.map(g=>f.require(g).kind)):void 0,p=new Set([s,...a.value]),h=[...t.dangling.active,...t.dangling.legacy_terminal].filter(g=>Dr({row:g,missingReachableSet:u,packetIds:p,filteredKinds:l,registry:f}));return Lr({assembly:t,canonicalId:s,contextOptions:c,rootEvidence:r,summaryOnly:i,outputFormat:o,missingCount:d.length,missingReferences:h})}function Mr(e){let t=[e],s;for(;t.length>0;){let n=t.pop();n.dependencies.length>0&&(s=n,t.push(...n.dependencies))}return s?(s.dependencies.pop(),s.truncated=!0,!0):!1}function jr(e,t,s,n,r,i,o){let c=r??hr,a=I(s.nodeLimit,"node-limit")??gr,d=I(s.edgeLimit,"edge-limit")??mr,u=I(s.tokenBudget,"token-budget")??yr,f={nodeLimit:a,edgeLimit:d,tokenBudget:u,nodes:0,edges:0,estimatedTokens:0,reasons:new Set},l=ln(e,n,new Set,c,t==="graph"?"repeated":i,new Set,f),p=fn(e,n,void 0),h;for(;;){let g=Ir(l),m=f.reasons.size===0?void 0:{reasons:[...f.reasons].sort(),limits:{max_depth:c,node_limit:a,edge_limit:d,token_budget:u},estimated_tokens:0,total_node_count:p.node_count,total_edge_count:p.edge_count,omitted_node_count:Math.max(0,p.node_count-g.nodes.length),omitted_edge_count:Math.max(0,p.edge_count-g.edges.length)},y={id:e,format:t,node_count:g.nodes.length,edge_count:g.edges.length,edge_basis:"deduplicated_directed",missing_count:g.missing_ids.length,...m?{truncation:m}:{}};if(h=t==="tree"?{...y,tree:l}:{...y,graph:g},(h.truncation===void 0?te(new TextEncoder().encode(je(Me("deps",P(h,!1)),o)).byteLength):pn(P(h,!1),o,v=>{h.truncation.estimated_tokens=v}))<=u)return h;if(!Mr(l))return f.reasons.add("token_budget"),h;f.reasons.add("token_budget")}}function P(e,t,s={}){let n={name:e.format==="tree"?"dependency_tree":e.format==="graph"?"dependency_graph":"relationship_context",restore_with:"--full"};return{...e,legacy_alias_counts:s,projection:{mode:t?"summary":"full",declared_field_groups:[n],included_field_groups:t?[]:[n.name]}}}async function ho(e,t,s){let n=Y(process.cwd(),s.path);if(!await J(Q(n)))throw new b(`Tracker is not initialized at ${n}. Run pm init first.`,_.NOT_FOUND);let r=_r(t.format),i=De(t.maxDepth),o=br(t.collapse);ne(t.summary===!0,t.full===!0,"--summary");let c=t.summary===!0,a=await oe(n),d=X(a,re()),u=await ce(n,a.item_format,d.type_to_folder,void 0,a.schema),f=ee(a.schema),l=new Map(u.map(h=>[h.id.trim().toLowerCase(),vr(h)])),p=wt(u,h=>R(h,f));for(let h of[...p.active,...p.legacy_terminal]){let g=l.get(h.holder_id.trim().toLowerCase()),m=h.kind.trim().toLowerCase();g&&!g.dependencies.some(y=>y.id.trim().toLowerCase()===h.target_id.trim().toLowerCase()&&y.kind===m)&&g.dependencies.push({id:h.target_id,kind:m})}if(!l.has(e.trim().toLowerCase()))throw new b(`Item ${e} not found`,_.NOT_FOUND);if(r==="context"){let h=l.get(e.trim().toLowerCase()).id,g=c?[]:await Cr(n,h,a,d.type_to_folder),m=v=>R(v,f),y=L(),w=he().lookup(n,pe(u,m,y),()=>N(u,m,y));return P(Nr({assembly:w.assembly,canonicalId:h,options:t,rootEvidence:g,summaryOnly:c,outputFormat:s.json===!0?"json":"toon"}),c,w.assembly.legacyAliasCounts)}return c?P({id:e,format:r,...fn(e,l,i)},!0,Object.fromEntries(Object.entries(N(u,h=>R(h,f)).legacyAliasCounts))):P(jr(e,r,t,l,i,o,s.json===!0?"json":"toon"),!1,Object.fromEntries(Object.entries(N(u,h=>R(h,f)).legacyAliasCounts)))}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="6c8bfb7a-687a-5fbb-b408-ffdbab1187a9")}catch{}})();var yn=new Set(["ancestors","descendants","predecessors","successors","paths","impact","dominators"]),S=10;function hn(e,t,s){return{...e,projection:{mode:t?"summary":"full",declared_field_groups:s===void 0?[]:[{name:s,restore_with:"--full"}],included_field_groups:s===void 0||t?[]:[s]}}}function gn(e){return e===void 0?[]:(Array.isArray(e)?e:[e]).flatMap(t=>t.split(",")).map(t=>t.trim()).filter(t=>t.length>0)}function Pr(e,t,s){let n=e.trim().toLowerCase();if(!Ne.includes(n))throw _t({command_path:"graph",token:n||"<empty>",allowed:Ne});let r=n;if(yn.has(r)&&!t?.trim())throw new b(`graph ${r} requires an item id.`,_.USAGE);if(r==="paths"&&!s?.trim())throw new b("graph paths requires a source and a target item id.",_.USAGE);return r}function ct(e){throw e instanceof TypeError?new b(e.message,_.USAGE):e}function at(e){return{truncated:e.truncated,cost:{visited_nodes:e.visitedNodes,inspected_edges:e.inspectedEdges}}}function mn(e,t){let s=t.trim().toLowerCase();for(let n of e.details)if(n.id.trim().toLowerCase()===s&&!e.missingIdSet.has(n.id.toLowerCase()))return n.id;throw new b(`Item ${t} not found`,_.NOT_FOUND)}function $r(e,t,s){let n={ancestors:Mt,descendants:jt,predecessors:Pt,successors:$t}[e],r;try{r=n(s.assembly.graph,t,{...s.kinds===void 0?{}:{kinds:s.kinds},...s.maxDepth===void 0?{}:{maxDepth:s.maxDepth},...s.limit===void 0?{}:{limit:s.limit},...s.after===void 0?{}:{after:s.after}})}catch(o){ct(o)}let i=at(r.meta);return{subcommand:e,root:t,count:r.value.length,...i,...r.meta.nextCursor===void 0?{}:{next_cursor:r.meta.nextCursor},...s.summary?{}:{ids:r.value}}}function Fr(e,t,s){let n=Ft(s.assembly.graph,e,t,{direction:s.direction,...s.kinds===void 0?{}:{kinds:s.kinds},...s.maxDepth===void 0?{}:{maxDepth:s.maxDepth},...s.maxPaths===void 0?{}:{maxPaths:s.maxPaths}});return{subcommand:"paths",root:e,target:t,direction:s.direction,count:n.value.length,...at(n.meta),...s.summary?{}:{paths:n.value.map(r=>({nodes:r.nodes,kinds:r.edges.map(i=>i.kind),length:r.length}))}}}function Gr(e,t){let s;try{s=Ct(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth},...t.unbounded?{}:{limit:t.limit??S},...t.after===void 0?{}:{after:t.after}})}catch(n){ct(n)}return{subcommand:"impact",root:e,direction:t.direction,count:s.affected.length,truncated:s.truncated,...s.nextCursor===void 0?{}:{next_cursor:s.nextCursor},cost:{visited_nodes:s.cost.visitedNodes,inspected_edges:s.cost.inspectedEdges},...t.summary?{}:{affected:s.affected}}}function qr(e){let t=e.assembly.graph,s=e.limit??S,n=fe(t,{registry:t.registry()}),r=Rt(t);return{subcommand:"analyze",node_count:t.nodes().length,edge_count:t.edges().length,edge_basis:"deduplicated_directed",sample_limit:s,execution:{acyclic:n.acyclic,ordered_node_count:n.order.length,layer_count:n.layers.length,frontier_count:n.frontier.length,critical_path_length:n.criticalPathLength,cycle_count:n.cycles.length,...e.summary?{}:{frontier:n.frontier.slice(0,s),critical_path:n.criticalPath.slice(0,s),cycles:n.cycles.slice(0,s)}},knowledge:{component_count:r.components.length,largest_component_size:r.components[0]?.length??0,orphan_count:r.orphans.length,...e.summary?{}:{orphans:r.orphans.slice(0,s),hubs:r.hubs.slice(0,s)}}}}function Br(e,t){let s=Ce(e.assembly,{isTerminal:t,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),n={},r={},i={},o={};for(let c of s.findings)n[c.severity]=(n[c.severity]??0)+1,r[c.code]=(r[c.code]??0)+1,i[c.severity]=(i[c.severity]??0)+c.count,o[c.code]=(o[c.code]??0)+c.count;return{subcommand:"audit",finding_count:s.findings.length,findings_by_severity:n,findings_by_code:r,affected_subjects_by_severity:i,affected_subjects_by_code:o,profile:s.profile,legacy_alias_counts:e.assembly.legacyAliasCounts,...e.summary?{}:{findings:s.findings}}}function Ur(e){let t=e.limit??S,s={};e.kinds!==void 0&&(s.kinds=e.kinds);let n=qt(e.assembly.graph,s),r=n.value;return{subcommand:"communities",community_count:r.communities.length,largest_community_size:r.communities[0]?.size??0,iterations:r.iterations,converged:r.converged,truncated:!r.converged||r.communities.length>t,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...e.summary?{}:{communities:r.communities.slice(0,t).map(i=>({representative:i.representative,size:i.size,members:i.members.slice(0,t)}))}}}function zr(e){let t;try{t=Ee(e.assembly.graph,{...e.kinds===void 0?{}:{kinds:e.kinds},...e.maxDepth===void 0?{}:{maxDepth:e.maxDepth},...e.limit===void 0?{}:{limit:e.limit}})}catch(s){ct(s)}return{subcommand:"redundancy",redundant_count:t.value.length,...at(t.meta),...e.summary?{}:{redundant:t.value.map(s=>({source:s.edge.source,target:s.edge.target,kind:s.edge.kind,witness:s.witness}))}}}function Kr(e,t){let s=t.limit??S,n=Bt(t.assembly.graph,e,{direction:t.direction,...t.kinds===void 0?{}:{kinds:t.kinds},...t.maxDepth===void 0?{}:{maxDepth:t.maxDepth}}),r=n.value.rows.filter(i=>i.dominatedCount>0);return{subcommand:"dominators",root:e,direction:t.direction,reachable_count:n.value.reachableCount,bottleneck_count:r.length,truncated:n.meta.truncated||r.length>s,cost:{visited_nodes:n.meta.visitedNodes,inspected_edges:n.meta.inspectedEdges},...t.summary?{}:{bottlenecks:r.slice(0,s).map(i=>({id:i.id,idom:i.idom,dominated_count:i.dominatedCount}))}}}function Wr(e){let t=e.limit??S,s=Vt(e.assembly.graph),n=s.rows.filter(r=>r.critical).length;return{subcommand:"slack",acyclic:s.acyclic,makespan:s.makespan,scheduled_count:s.scheduledCount,critical_count:n,critical_path_length:s.criticalPathLength,cycle_count:s.cycles.length,truncated:s.rows.length>t,...e.summary?{}:{critical_path:s.criticalPath,rows:s.rows.slice(0,t).map(r=>({id:r.id,earliest_start:r.earliestStart,latest_start:r.latestStart,slack:r.slack,critical:r.critical}))}}}function Vr(e){let t=e.limit??S,s=Wt(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),n=s.value;return{subcommand:"centrality",node_count:n.nodeCount,edge_count:n.edgeCount,edge_basis:"simple_undirected",truncated:n.rows.length>t,cost:{visited_nodes:s.meta.visitedNodes,inspected_edges:s.meta.inspectedEdges},...e.summary?{}:{rows:n.rows.slice(0,t).map(r=>({id:r.id,degree:r.degree,in_degree:r.inDegree,out_degree:r.outDegree,betweenness:r.betweenness,closeness:r.closeness}))}}}function Hr(e){let t=e.limit??S,s=Ie(e.assembly.graph,e.kinds===void 0?{}:{kinds:e.kinds}),{articulationPoints:n,bridges:r}=s.value;return{subcommand:"articulation",articulation_count:n.length,bridge_count:r.length,truncated:n.length>t||r.length>t,cost:{visited_nodes:s.meta.visitedNodes,inspected_edges:s.meta.inspectedEdges},...e.summary?{}:{articulation_points:n.slice(0,t),bridges:r.slice(0,t)}}}function Jr(e,t){let s=e.limit??S,n=dn(e.assembly,{isTerminal:t,redundancyLimit:s,...e.sample===void 0?{}:{maxSampleSize:e.sample},...e.exemptIsolates.length===0?{}:{exemptIsolates:e.exemptIsolates},...e.exemptIsolateTypes.length===0?{}:{isolateExemptTypes:e.exemptIsolateTypes}}),r={},i={};for(let o of n.steps)r[o.op]=(r[o.op]??0)+1,i[o.code]=(i[o.code]??0)+1;return{subcommand:"plan",step_count:n.steps.length,steps_by_op:r,steps_by_code:i,finding_count:n.report.findings.length,truncated:n.truncated||n.steps.length>s,cost:{visited_nodes:n.cost.visitedNodes,inspected_edges:n.cost.inspectedEdges},...e.summary?{}:{steps:n.steps.slice(0,s)}}}function _n(e,t,s,n){return JSON.stringify({subcommand:e,root:t??null,target:s??null,kinds:n.kinds??null,maxDepth:n.maxDepth??null,limit:n.limit??null,after:n.after??null,direction:n.direction,maxPaths:n.maxPaths??null,sample:n.sample??null,exemptIsolates:[...new Set(n.exemptIsolates.map(r=>r.toLowerCase()))].sort(),exemptIsolateTypes:[...new Set(n.exemptIsolateTypes.map(r=>r.toLowerCase()))].sort(),summary:n.summary,unbounded:n.unbounded})}function bn(e,t,s,n,r){return e==="analyze"?qr(n):e==="audit"?Br(n,r):e==="plan"?Jr(n,r):e==="communities"?Ur(n):e==="redundancy"?zr(n):e==="dominators"?Kr(t,n):e==="slack"?Wr(n):e==="centrality"?Vr(n):e==="articulation"?Hr(n):e==="paths"?Fr(t,s,n):e==="impact"?Gr(t,n):$r(e,t,n)}function Xr(e,t){if(e!=="index"&&(t.rebuild===!0||t.clear===!0))throw new b("--rebuild and --clear apply only to graph index.",_.USAGE);if(e!=="audit"&&t.saveBaseline===!0)throw new b("--save-baseline applies only to graph audit.",_.USAGE);if(e==="slack"&&t.kind!==void 0)throw new b("graph slack analyzes every ordering kind; --kind is not supported.",_.USAGE);if(t.rebuild===!0&&t.clear===!0)throw new b("graph index accepts either --rebuild or --clear, not both.",_.USAGE);if(e==="impact"&&t.full===!0&&t.limit!==void 0)throw new b("graph impact accepts either --full or --limit, not both.",_.USAGE)}async function Yr(e,t,s,n,r,i){let o="status";if(i.clear===!0&&(await nt(e),o="cleared"),i.rebuild===!0){await nt(e);let a=await et(e,t),d={assembly:s.assembly,direction:"both",exemptIsolates:[],exemptIsolateTypes:[],saveBaseline:!1,summary:!0,unbounded:!1};for(let u of["analyze","audit"])await tt(e,t,a,_n(u,void 0,void 0,d),bn(u,void 0,void 0,d,r));o="rebuilt"}let c=await nn(e,t);return{subcommand:"index",action:o,state:c.exists?c.fresh?"fresh":"stale":"absent",entry_count:c.entry_count,item_count:n,min_items_threshold:Qe,persist_enabled:st(n,c.exists),current_fingerprint:t.slice(0,12),...c.saved_at===void 0?{}:{saved_at:c.saved_at},...c.bytes===void 0?{}:{bytes:c.bytes}}}async function Qr(e,t,s,n){let r={saved_at:new Date().toISOString(),fingerprint:t,affected_subjects_by_code:s.affected_subjects_by_code,profile:s.profile},i=await on(e);return n&&await cn(e,r),i===void 0?s:{...s,baseline:Yt(i,r)}}async function Zr(e,t,s,n,r){try{await tt(e,t,s,n,r)}catch{}}async function Go(e,t,s,n,r){let i=Pr(e,t,s);ne(n.summary===!0,n.full===!0,"--summary");let o=Y(process.cwd(),r.path);if(!await J(Q(o)))throw new b(`Tracker is not initialized at ${o}. Run pm init first.`,_.NOT_FOUND);let c=await oe(o),a=X(c,re()),d=await ce(o,c.item_format,a.type_to_folder,void 0,c.schema),u=ee(c.schema),f=F=>R(F,u);Xr(i,n);let l=L(),p=ot(n.kind,l),h=he().lookup(o,pe(d,f,l),()=>N(d,f,l)),g={assembly:h.assembly,...p===void 0?{}:{kinds:p},maxDepth:De(n.maxDepth),limit:I(n.limit,"limit"),after:n.after?.trim()||void 0,direction:it(n.direction),maxPaths:I(n.maxPaths,"max-paths"),sample:I(n.sample,"sample"),exemptIsolates:gn(n.exemptIsolate),exemptIsolateTypes:gn(n.exemptIsolateType),saveBaseline:n.saveBaseline===!0,summary:n.summary===!0,unbounded:n.full===!0};if(i==="index")return hn(await Yr(o,h.fingerprint,g,d.length,f,n),!1);let m=yn.has(i)?mn(g.assembly,t):void 0,y=i==="paths"?mn(g.assembly,s):void 0,w=_n(i,m,y,g),v=await et(o,h.fingerprint),C=v.results[w],k=h.memoize(w,()=>C!==void 0?structuredClone(C):bn(i,m,y,g,f)),V=st(d.length,v.exists);!k.reused&&C===void 0&&V&&await Zr(o,h.fingerprint,v,w,k.value);let $=k.value.subcommand==="audit"?await Qr(o,h.fingerprint,k.value,g.saveBaseline):k.value;return $.cache={fingerprint:h.fingerprint.slice(0,12),assembly:h.assemblyReused?"hit":"miss",result:k.reused?"hit":"miss",durable:C!==void 0?"hit":V?"miss":"off"},hn($,g.summary,"result_rows")}(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="4198a3b2-2541-50eb-bec5-93ac58601f40")}catch{}})();function wn(e){return[...e].sort().join("\0")}function ei(e,t,s){let n=e.successors.get(t);n?n.push(s):e.successors.set(t,[s]);let r=e.predecessors.get(s);r?r.push(t):e.predecessors.set(s,[t])}function vn(e,t,s,n,r){let i=t.resolve(r);if(i?.ordering!==!0)return;let o=bt(n),c=o===void 0?void 0:e.canonicalIds.get(o.toLowerCase());if(c===void 0)return;let a=(i.precedence??"source_before_target")==="source_before_target";ei(e,a?s:c,a?c:s)}function ti(e,t){let s={successors:new Map,predecessors:new Map,canonicalIds:new Map},n=e.filter(r=>typeof r?.id=="string"&&r.id.trim().length>0);for(let r of n){let i=r.id.trim();s.canonicalIds.set(i.toLowerCase(),i)}for(let r of n){let i=r.id.trim();vn(s,t,i,r.blocked_by,"blocked_by");for(let o of r.dependencies??[])typeof o!="object"||o===null||vn(s,t,i,o.id,typeof o.kind=="string"?o.kind:"related")}for(let r of[s.successors,s.predecessors])for(let i of r.values())i.sort();return s}function ni(e,t){let s=new Set([t]),n=[t];for(;n.length>0;){let r=n.pop();for(let i of[e.successors,e.predecessors])for(let o of i.get(r)??[])s.has(o)||(s.add(o),n.push(o))}return s}function si(e,t){let s=new Map;for(let n of t){let r=(e.successors.get(n)??[]).filter(i=>t.has(i));r.length>0&&s.set(n,r)}return s}function kn(e,t,s){let n=ti(e,t),r=n.canonicalIds.get(s.trim().toLowerCase());if(r===void 0)return{cycles:[],successors:new Map,canonical:s};let i=si(n,ni(n,r));return{cycles:Xe(i).filter(o=>o.includes(r)),successors:i,canonical:r}}function ri(e,t,s){let n=new Set(t),r=n.has(s)?s:t[0];if(e.get(r)?.includes(r))return[r,r];for(let i of e.get(r)??[]){if(!n.has(i))continue;let o=ii(e,n,r,i);if(o)return o}return[...t,t[0]]}function ii(e,t,s,n){let r=[[n]],i=new Set([s,n]);for(;r.length>0;){let o=r.shift(),c=o.at(-1);for(let a of e.get(c)??[]){if(a===s)return[s,...o,s];!t.has(a)||i.has(a)||(i.add(a),r.push([...o,a]))}}}function zo(e,t,s){let n=L(),r=kn(e,n,s),i=kn(t,n,s),o=new Set(r.cycles.map(wn));return i.cycles.filter(c=>!o.has(wn(c))).map(c=>`ordering_cycle_created:${ri(i.successors,c,i.canonical).join(" -> ")}:items_will_not_be_ready:run_pm_graph_audit`)}export{Ge as a,kt as b,fe as c,Ct as d,Rt as e,yi as f,pe as g,qe as h,he as i,ki as j,At as k,ho as l,Mt as m,jt as n,Pt as o,$t as p,Ft as q,we as r,qt as s,Ee as t,Bt as u,Wt as v,Ie as w,Vt as x,Xe as y,Se as z,Ye as A,Ce as B,Yt as C,Zt as D,Qe as E,W as F,tn as G,et as H,tt as I,nt as J,nn as K,st as L,on as M,cn as N,dn as O,Pr as P,Go as Q,zo as R};
|
|
8
|
-
//# sourceMappingURL=chunk-3BNVU6LC.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{Aa as we,V as $,W as pe,X as ye,Y as ge,Z as _e,b as he}from"./chunk-OGC4XSBC.js";import{e as ue,f as fe,g as me}from"./chunk-PKPOZXLL.js";import{h as L}from"./chunk-WEH6NSL6.js";import{Fa as A,Ia as ae,Ja as ce,Ma as U,Na as M,Oa as b,U as te,V as C,W as D,Ya as x,l as T,la as j,na as re,o as ee,oa as ne,ob as de,pa as ie,qa as oe,rb as le,va as se}from"./chunk-6XYLENDV.js";import{F as B,L as k,O as F,h as Y,p as O,s as Z}from"./chunk-2RI2FESN.js";import{Y as g,Z as _,aa as R}from"./chunk-CP4K4WFS.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]="3c9d6924-ae7c-57c3-a346-1e2189c532fa")}catch{}})();function J(e,t){let n=j(e);if(n)throw new _(`History merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,g.GENERIC_FAILURE);let r=[];for(let[o,s]of e.split(/\r?\n/).entries()){let i=s.trim();if(i)try{let c=JSON.parse(i);if(typeof c!="object"||c===null||Array.isArray(c))throw new TypeError("history entry must be an object");r.push(c)}catch{throw new _(`History merge input (${t}) contains invalid JSON at line ${o+1}.`,g.GENERIC_FAILURE)}}return r}function I(e){return R({ts:e.ts,author:e.author,op:e.op,patch:e.patch,message:e.message??null})}function Pe(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&I(e[r])===I(t[r]);)r+=1;return r}function Re(e,t,n){J(e,"base");let r=J(t,"ours"),o=J(n,"theirs"),s=Pe(r,o);if(s===r.length&&s===o.length)return{merged:b(r),strategy:"identical",common_entries:s,entries_from_ours:0,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(s===o.length)return{merged:b(r),strategy:"fast_forward_ours",common_entries:s,entries_from_ours:r.length-s,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(s===r.length)return{merged:b(o),strategy:"fast_forward_theirs",common_entries:s,entries_from_ours:0,entries_from_theirs:o.length-s,entries_total:o.length,reanchored:!1};let i=r.slice(s),c=new Set(i.map(I)),d=o.slice(s).filter(l=>!c.has(I(l))),u=[...i,...d].sort((l,m)=>{let f=D(l.ts,m.ts);if(f!==0)return f;let h=c.has(I(l)),y=c.has(I(m));return h!==y?Number(y)-Number(h):I(l).localeCompare(I(m))}),a=M([...r.slice(0,s),...u]);return{merged:b(a.entries),strategy:"union_reanchor",common_entries:s,entries_from_ours:i.length,entries_from_theirs:d.length,entries_total:a.entries.length,reanchored:!0}}function G(e,t){let n=j(e);if(n)throw new _(`Relationship merge input (${t}) contains unresolved conflict markers at line ${n.line}. Merge drivers must receive clean per-side versions.`,g.GENERIC_FAILURE);let r=[];for(let[o,s]of e.split(/\r?\n/).entries()){let i=s.trim();if(!i)continue;let c;try{c=JSON.parse(i)}catch{throw new _(`Relationship merge input (${t}) contains invalid JSON at line ${o+1}.`,g.GENERIC_FAILURE)}if(typeof c!="object"||c===null||Array.isArray(c)||typeof c.eventId!="string"||typeof c.sequence!="number")throw new _(`Relationship merge input (${t}) line ${o+1} is not a relationship event (eventId + sequence required).`,g.GENERIC_FAILURE);r.push(c)}return r}function H(e){return e.length===0?"":`${e.map(t=>JSON.stringify(t)).join(`
|
|
2
|
-
`)}
|
|
3
|
-
`}function De(e){return e.map((t,n)=>({...t,sequence:n+1}))}function ve(e,t,n){G(e,"base");let r=G(t,"ours"),o=G(n,"theirs"),s=Math.min(r.length,o.length),i=0;for(;i<s&&r[i].eventId===o[i].eventId;)i+=1;if(i===r.length&&i===o.length)return{merged:H(r),strategy:"identical",common_entries:i,entries_from_ours:0,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(i===o.length)return{merged:H(r),strategy:"fast_forward_ours",common_entries:i,entries_from_ours:r.length-i,entries_from_theirs:0,entries_total:r.length,reanchored:!1};if(i===r.length)return{merged:H(o),strategy:"fast_forward_theirs",common_entries:i,entries_from_ours:0,entries_from_theirs:o.length-i,entries_total:o.length,reanchored:!1};let c=r.slice(i),d=new Set(c.map(m=>m.eventId)),u=o.slice(i).filter(m=>!d.has(m.eventId)),a=[...c,...u].sort((m,f)=>{if(m.timestamp!==void 0&&f.timestamp!==void 0){let p=D(m.timestamp,f.timestamp);if(p!==0)return p}else{if(m.timestamp===void 0&&f.timestamp!==void 0)return 1;if(m.timestamp!==void 0)return-1}let h=d.has(m.eventId),y=d.has(f.eventId);return h!==y?Number(y)-Number(h):0}),l=De([...r.slice(0,i),...a]);return{merged:H(l),strategy:"union_reanchor",common_entries:i,entries_from_ours:c.length,entries_from_theirs:u.length,entries_total:l.length,reanchored:!0}}var je=["tags","dependencies","comments","notes","learnings","files","tests","test_runs","docs","reminders","events"],Me=["updated_at"];function E(e,t){return R(e??null)===R(t??null)}function Le(e,t,n){let r=a=>Array.isArray(a)?a:[],o=new Set(r(e).map(a=>R(a))),s=r(t),i=new Set(s.map(a=>R(a))),c=r(n),d=new Set(c.map(a=>R(a))),u=s.filter(a=>{let l=R(a);return!o.has(l)||d.has(l)});for(let a of c){let l=R(a);!i.has(l)&&!o.has(l)&&u.push(a)}return u}function He(e,t){return D(String(e),String(t))>=0?e:t}function Ie(e,t,n,r){return E(t,n)?{value:t,from_theirs:!1,conflict:!1}:E(e,t)?{value:n,from_theirs:!0,conflict:!1}:E(e,n)?{value:t,from_theirs:!1,conflict:!1}:{value:r==="theirs"?n:t,from_theirs:r==="theirs",conflict:!0}}function be(e,t,n,r,o){let s=Ie(e,t,n,r);if(!s.conflict||o==="preferred_side")return s;let i=R(n).localeCompare(R(t))<0;return{value:i?n:t,from_theirs:i,conflict:!0}}function z(e){return{...e.metadata}}function V(e,t,n){try{return ie(re(e,n),n)}catch(r){throw new _(`Item merge input (${t}) is not a readable item document: ${String(r)}`,g.GENERIC_FAILURE)}}function Be(e,t,n,r,o){let s=new Set(je),i=new Set(Me),c=[...new Set([...Object.keys(t),...Object.keys(n)])].sort((u,a)=>u.localeCompare(a)),d={merged:{},conflictFields:[],fieldsFromTheirs:[],unionFields:[],conflictDecisions:[]};for(let u of c){let a=e[u],l=t[u],m=n[u];if(s.has(u)){let h=Le(a,l,m);d.merged[u]=h,E(h,l)||d.unionFields.push(u);continue}if(i.has(u)){d.merged[u]=He(l,m);continue}let f=be(a,l,m,r,o);f.value!==void 0&&(d.merged[u]=f.value),f.conflict?(d.conflictFields.push(u),d.conflictDecisions.push({field:u,base:a,ours:l,theirs:m,retained:f.value,discarded:f.from_theirs?l:m})):f.from_theirs&&d.fieldsFromTheirs.push(u)}return d}function Ee(e,t,n,r={}){let o=r.preferred??"ours",s=r.conflictResolution??"preferred_side",i=e.trim().length>0,c=V(t,"ours",r),d=V(n,"theirs",r),u=i?V(e,"base",r):c,a=i?z(u):{},l=z(c),m=z(d),{merged:f,conflictFields:h,fieldsFromTheirs:y,unionFields:p,conflictDecisions:w}=Be(a,l,m,o,s),v=be(i?u.body:"",c.body,d.body,o,s);return v.conflict?(h.push("body"),w.push({field:"body",base:i?u.body:"",ours:c.body,theirs:d.body,retained:v.value,discarded:v.from_theirs?c.body:d.body})):v.from_theirs&&y.push("body"),{merged:ne({metadata:f,body:v.value},r),conflict_fields:h,fields_from_theirs:y,union_fields:p,conflict_decisions:w,requested_preference:o,conflict_resolution:s}}function W(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function q(e,t){let n=j(e);if(n)throw new _(`JSON merge input (${t}) contains unresolved conflict markers at line ${n.line}.`,g.GENERIC_FAILURE);if(e.trim().length!==0)try{return JSON.parse(e)}catch{throw new _(`JSON merge input (${t}) is not valid JSON.`,g.GENERIC_FAILURE)}}function Ue(e,t,n){if(!Array.isArray(e)||!Array.isArray(t)||!Array.isArray(n))return null;let r=u=>{let a=new Map;for(let l of u){let m=R(l);a.set(m,(a.get(m)??0)+1)}return a},o=r(e),s=r(t),i=r(n);for(let[u,a]of o)if((s.get(u)??0)<a||(i.get(u)??0)<a)return null;let c=new Map(s),d=[];for(let u of n){let a=R(u),l=c.get(a)??0;l>0?c.set(a,l-1):d.push(u)}return{merged:[...t,...d],acceptedTheirs:d.length>0}}function Je(e,t,n,r,o,s,i){if(!W(t)||!W(n))return null;let c=W(e)?e:{},d={},u=[...new Set([...Object.keys(t),...Object.keys(n)])].sort((a,l)=>a.localeCompare(l));for(let a of u){let l=o.length>0?`${o}.${a}`:a,m=Ge(c,t,n,a,r,l,s,i);m!==void 0&&(d[a]=m)}return d}function Se(e,t,n,r,o,s,i){if(E(t,n))return t;let c=Ue(e,t,n);if(c!==null)return c.acceptedTheirs&&i.push(o),c.merged;let d=Je(e,t,n,r,o,s,i);if(d!==null)return d;let u=Ie(e,t,n,r);return u.conflict?s.push(o):u.from_theirs&&i.push(o),u.value}function Ge(e,t,n,r,o,s,i,c){let d=Object.prototype.hasOwnProperty.call(t,r),u=Object.prototype.hasOwnProperty.call(n,r),a=Object.prototype.hasOwnProperty.call(e,r);if(d&&u)return Se(e[r],t[r],n[r],o,s,i,c);if(d){if(a&&E(e[r],t[r])){c.push(s);return}return a?(i.push(s),o==="theirs"?void 0:t[r]):t[r]}if(!(a&&E(e[r],n[r])))return a?(i.push(s),o==="theirs"?n[r]:void 0):(c.push(s),n[r])}function Oe(e,t,n,r={}){let o=r.preferred??"ours",s=q(e,"base"),i=q(t,"ours"),c=q(n,"theirs"),d=[],u=[],a=Se(s,i,c,o,"",d,u);return{merged:`${JSON.stringify(a??null,null,2)}
|
|
4
|
-
`,conflict_paths:d,paths_from_theirs:u,preferred:o}}import{readFile as ze,writeFile as Ve}from"node:fs/promises";import We from"node:path";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="8d79e3a4-6104-5855-837f-69a041b87b27")}catch{}})();var Ce=["item","history","relationship","json"];function qe(e){let t=e.trim().toLowerCase();if(Ce.includes(t))return t;throw new _(`Unknown merge artifact "${e}". Supported values: ${Ce.join(", ")}.`,g.USAGE)}function Xe(e){if(e===void 0)return"ours";let t=e.trim().toLowerCase();if(t==="ours"||t==="theirs")return t;throw new _(`Unknown --prefer value "${e}". Supported values: ours, theirs.`,g.USAGE)}async function X(e,t){try{return await ze(e,"utf8")}catch{throw new _(`Cannot read merge ${t} file at ${e}.`,g.NOT_FOUND)}}async function Ke(e){let t=k(process.cwd(),e.path);return await O(F(t))?x(t):null}function Qe(e,t){return e.endsWith(".md")?"json_markdown":e.endsWith(".toon")?"toon":t?.item_format??"toon"}async function Et(e,t){let n=qe(e.artifact),r=Xe(e.prefer),o=We.resolve(e.outputPath??e.oursPath),[s,i,c]=await Promise.all([X(e.basePath,"base"),X(e.oursPath,"ours"),X(e.theirsPath,"theirs")]),d,u,a=[],l={};if(n==="history"){let f=Re(s,i,c);d=f.merged,l.history={strategy:f.strategy,common_entries:f.common_entries,entries_from_ours:f.entries_from_ours,entries_from_theirs:f.entries_from_theirs,entries_total:f.entries_total,reanchored:f.reanchored}}else if(n==="relationship"){let f=ve(s,i,c);d=f.merged,l.relationship={strategy:f.strategy,common_entries:f.common_entries,entries_from_ours:f.entries_from_ours,entries_from_theirs:f.entries_from_theirs,entries_total:f.entries_total,reanchored:f.reanchored}}else if(n==="item"){let f=await Ke(t),h=Ee(s,i,c,{format:Qe(e.itemPath??o,f),schema:f?.schema,extensionFieldNames:Y(T()),preferred:r,conflictResolution:"stable_value_order"});d=h.merged,a.push(...h.conflict_fields),l.item={fields_from_theirs:h.fields_from_theirs,union_fields:h.union_fields,conflict_resolution:"stable_value_order"},e.itemPath!==void 0&&(u={cwd:process.cwd(),itemPath:e.itemPath,preferred:r,conflictResolution:"stable_value_order",fieldsFromTheirs:h.fields_from_theirs,unionFields:h.union_fields,decisions:h.conflict_decisions})}else{let f=Oe(s,i,c,{preferred:r});d=f.merged,a.push(...f.conflict_paths),l.json={paths_from_theirs:f.paths_from_theirs}}if(await Ve(o,d,"utf8"),u!==void 0){let f=await pe(u);f!==null&&(l.receipt=$(f))}let m=[];if(a.length>0){let f=l.receipt===void 0?'Run "pm merge report" to inspect clone-local merge evidence.':`Run "pm merge report" and correlate receipt ${l.receipt.receipt_id} with item ${l.receipt.item_id}; clone-local discarded values are never copied into this result.`;m.push(`Both branches changed ${a.join(", ")}; the item driver kept the direction-independent stable value. ${f} Review the merged file, re-apply the discarded change if needed, then "git add" it.`)}return n==="history"&&l.history?.reanchored&&m.push('The merged history chain was re-anchored. Run "pm merge reconcile --dry-run" to inspect the complete post-merge repair, then "pm merge reconcile" to apply it; use --force only after explicitly accepting reported discards.'),{ok:a.length===0,artifact:n,output_path:o,requested_preference:r,conflicts:a,...l,guidance:m,generated_at:C()}}import Fe from"fast-json-patch";(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]="dd5ab9c3-bc6f-59f1-be89-ad0ab2abe7b5")}catch{}})();function Ae(e,t){return t==="body"?e.body:e.metadata[t]}function K(e,t){if(e===void 0||Object.is(e,t))return!0;if(Array.isArray(e)){if(!Array.isArray(t))return!1;let r=new Set;return e.every(o=>{let s=t.findIndex((i,c)=>!r.has(c)&&K(o,i));return s<0?!1:(r.add(s),!0)})}if(e===null||t===null||typeof e!="object"||typeof t!="object"||Array.isArray(t))return!1;let n=t;return Object.entries(e).every(([r,o])=>Object.hasOwn(n,r)&&K(o,n[r]))}function ke(e,t){let n=new Set(t),r=[];for(let o=e.length-1;o>=0&&n.size>0;o-=1){let s=e[o],i=new Set;for(let d of ce(s.patch))i.add(L(d.path)),d.from&&i.add(L(d.from));let c=[...n].filter(d=>i.has(d));if(c.length!==0){for(let d of c)n.delete(d);r.push({index:o+1,ts:s.ts,author:s.author,op:s.op,fields:c.sort((d,u)=>d.localeCompare(u))})}}return r.reverse()}function Ye(e,t,n){let r=Fe.compare(t,n);if(r.length===0)return;let o=new Set;for(let h of r)o.add(L(h.path));let s=new Set([...o].filter(h=>K(Ae(t,h),Ae(n,h)))),i=new Set([...o].filter(h=>!s.has(h))),c=ke(e,i),d=ke(e,s),u=[...o].sort((h,y)=>h.localeCompare(y)),a=[...i].sort((h,y)=>h.localeCompare(y)),l=[...s].sort((h,y)=>h.localeCompare(y)),m=[...new Set(c.map(h=>h.author))].sort((h,y)=>h.localeCompare(y)),f=[...new Set(d.map(h=>h.author))].sort((h,y)=>h.localeCompare(y));return{reconciled_field_count:o.size,reconciled_fields:u,reverted_field_count:i.size,reverted_fields:a,discarded_events:c,discarded_authors:m,preserved_field_count:s.size,preserved_fields:l,preserved_events:d,preserved_authors:f,recovery_hint:c.length>0?"Reconciliation keeps the on-disk item and overwrites these replayed mutations. To recover one, inspect it with pm history <id> --diff --field <field>, then re-apply the lost value with pm update.":null}}async function Ze(e,t,n){let r=e.located?.itemPath??null,o=e.located?await de(e.located,{schema:t.schema}):null;if(!o)return{currentItemReplay:null,currentItemPath:r,matchedChainBefore:null,currentItemRawBeforeLock:null,loadedItem:null};let s=ae(o.document),i=n[n.length-1]?.after_hash;return{currentItemReplay:s,currentItemPath:r,matchedChainBefore:A(s)===i,currentItemRawBeforeLock:o.raw,loadedItem:o}}function et(e){return typeof e.message=="string"&&e.message.trim().length>0?e.message:`history-repair re-anchored ${e.entriesRehashed} entr${e.entriesRehashed===1?"y":"ies"}${e.entriesPatchRepaired>0?`, repaired ${e.entriesPatchRepaired} patch(es)`:""}${e.reconcileNeeded?", reconciled chain with on-disk item":""}.`}function tt(e){let t=[...e.reanchorEntries];if(!e.changed)return{rewrittenEntries:t,auditEntryAdded:!1};let n=e.reconcileNeeded&&e.currentItemReplay?e.currentItemReplay:e.finalReplay;return t.push({ts:C(),author:e.author,op:e.auditOperation,patch:e.reconcileNeeded&&e.currentItemReplay?Fe.compare(e.finalReplay,e.currentItemReplay):[],before_hash:A(e.finalReplay),after_hash:A(n),message:e.message,...e.auditContext===void 0?{}:{context:e.auditContext}}),{rewrittenEntries:t,auditEntryAdded:!0}}function rt(e,t){let n=[];return e||n.push("history_repair_no_changes"),t>0&&n.push(`history_repair_skipped_unresolvable_ops:${t}`),n}async function nt(e){return fe({pmRoot:e.pmRoot,subject:e.subject,settings:e.settings,typeRegistry:e.typeRegistry,historyRawBeforeLock:e.historyRawBeforeLock,currentItemRawBeforeLock:e.currentItemRawBeforeLock,operation:"history-repair",author:e.author,force:e.force,itemDocument:e.loadedItem?.document??null,applyRewrite:async({historyRawUnderLock:t})=>ue({historyPath:e.historyPath,nextHistoryRaw:b(e.rewrittenEntries),historyRawUnderLock:t}),applyPostRewrite:async()=>ee({path:e.historyPath,scope:"project",op:"history_repair:history"})})}async function Q(e,t,n){let r=k(process.cwd(),n.path);if(!await O(F(r)))throw new _(`Tracker is not initialized at ${r}. Run pm init first.`,g.NOT_FOUND);let o=await x(r),s=B(o,T()),i=await me(r,e,o,s.type_to_folder);if(!await O(i.historyPath))throw new _(`No history stream exists for ${i.id}.`,g.NOT_FOUND);let c=await Z(i.historyPath),d=await oe(i.historyPath,i.id);if(d.length===0)throw new _(`No history entries exist for ${i.id}; nothing to repair.`,g.USAGE);let u=U(d),a=M(d),l=await Ze(i,o,d),m=a.finalDocument,f=l.currentItemReplay!==null&&A(m)!==A(l.currentItemReplay),h=f&&l.currentItemReplay?Ye(a.entries,m,l.currentItemReplay):void 0,y=[a.entriesRehashed>0,a.entriesPatchRepaired>0,f,t.forceAuditEntry===!0].some(Boolean),p=te(t.author,o.author_default),w=!!t.dryRun,v=et({message:t.message,entriesRehashed:a.entriesRehashed,entriesPatchRepaired:a.entriesPatchRepaired,reconcileNeeded:f}),{rewrittenEntries:S,auditEntryAdded:xe}=tt({reanchorEntries:a.entries,changed:y,reconcileNeeded:f,currentItemReplay:l.currentItemReplay,finalReplay:m,author:p,message:v,auditOperation:t.auditOperation??"history_repair",auditContext:t.auditContext}),N=U(S);if(!N.ok)throw new _(`history-repair produced an invalid rewritten chain (${N.errors.join(", ")}).`,g.GENERIC_FAILURE);let P=rt(y,a.skippedOps);return h&&h.discarded_events.length>0&&(P.push(`history_repair_reconcile_discards_events:${h.discarded_events.length}`),P.push(`history_repair_discarded_authors:${h.discarded_authors.join(",")}`)),y&&!w&&P.push(...await nt({pmRoot:r,subject:i,settings:o,typeRegistry:s,historyRawBeforeLock:c,currentItemRawBeforeLock:l.currentItemRawBeforeLock,author:p,force:t.force,loadedItem:l.loadedItem,historyPath:i.historyPath,rewrittenEntries:S})),{id:i.id,dry_run:w,changed:y,history:{path:i.historyPath,entries_scanned:d.length,chain_drift_before:!u.ok,entries_rehashed:a.entriesRehashed,entries_patch_repaired:a.entriesPatchRepaired,converted_replace_to_add:a.convertedReplaceToAdd,skipped_ops:a.skippedOps,reconciled_with_item:f,audit_entry_added:xe,verify_ok:N.ok,verify_errors:N.errors},item:{exists:l.currentItemPath!==null,path:l.currentItemPath,matched_chain_before:l.matchedChainBefore},...h?{reconciliation:h}:{},warnings:[...new Set(P)].sort(($e,Ne)=>$e.localeCompare(Ne)),generated_at:C()}}function Gt(e,t){if(t&&e!==void 0)throw new _("history-repair: <id> and --all are mutually exclusive; pass an item id to repair one stream or --all to repair every drifted stream.",g.USAGE);if(!t&&e===void 0)throw new _("history-repair: provide an item <id> or pass --all to repair every drifted stream.",g.USAGE)}async function Te(e,t){let n=k(process.cwd(),t.path);if(!await O(F(n)))throw new _(`Tracker is not initialized at ${n}. Run pm init first.`,g.NOT_FOUND);let r=await x(n),o=B(r,T()),s=[],i=await le(n,r.item_format,o.type_to_folder,s,r.schema,{forceSourceScan:!0}),c=await he(n,i),d=[],u=[],a={repaired:0,skipped_clean:0,failed:0};for(let l of c.driftedItems)try{let m=await Q(l,{...e,auditContext:e.auditContextById?.[l],auditContextById:void 0},t),f=m.changed?"repaired":"skipped_clean";a[f]+=1,u.push(...m.warnings.map(h=>`${l}:${h}`)),d.push({id:l,outcome:f,entries_rehashed:m.history.entries_rehashed,entries_patch_repaired:m.history.entries_patch_repaired,reconciled_with_item:m.history.reconciled_with_item,...m.reconciliation?{reconciliation:m.reconciliation}:{},warnings:m.warnings})}catch(m){a.failed+=1,d.push({id:l,outcome:"failed",error:m instanceof Error?m.message:String(m)})}return e.dryRun||await se(n),{all:!0,dry_run:!!e.dryRun,scanned_streams:i.length,drifted_streams:c.driftedItems.length,streams:d,totals:a,warnings:[...new Set([...s,...u])].sort((l,m)=>l.localeCompare(m)),generated_at:C()}}(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]="c5620467-6c8c-5702-b742-57fba9e302c5")}catch{}})();async function Qt(e,t){let n=e.dryRun===!0,r=await ye(process.cwd(),{includeLossless:!0}),{pendingDecisions:o}=ge(r);if(!n&&e.force!==!0&&o.length>0)throw new _(`Merge reconciliation would accept ${o.length} receipt(s) containing discarded scalar values. Review pm merge report and rerun with --force only after deciding which values to retain or re-apply.`,g.CONFLICT,{code:"merge_reconcile_discards_require_acceptance",required:"Explicitly review every discarded field before accepting reconciliation.",nextSteps:o.map(p=>`Review receipt ${p.id} for ${p.item_id}: ${p.decisions.map(w=>w.field).join(", ")}.`),recovery:{suggested_retry:"pm merge reconcile --dry-run"}});let s=r.reduce((p,w)=>((p[w.item_id]??=[]).push(w),p),{}),i=Object.fromEntries(Object.entries(s).map(([p,w])=>[p,{merge:{receipts:w.map($)}}])),c=await Te({dryRun:n,author:e.author??t.author,message:e.message??"post-merge reconciliation of field-aware tracker history",force:e.force,auditOperation:"merge_reconcile",auditContextById:i},t),d=new Set(c.streams.map(p=>p.id)),u=Object.keys(s).filter(p=>!d.has(p));(await Promise.allSettled(u.map(p=>Q(p,{dryRun:n,author:e.author??t.author,message:e.message??"record field-aware branch merge provenance",force:e.force,auditOperation:"merge_reconcile",auditContext:i[p],forceAuditEntry:!0},t)))).forEach((p,w)=>{let v=u[w];if(p.status==="fulfilled"){let S=p.value.changed?"repaired":"skipped_clean";c.streams.push({id:v,outcome:S,entries_rehashed:p.value.history.entries_rehashed,entries_patch_repaired:p.value.history.entries_patch_repaired,reconciled_with_item:p.value.history.reconciled_with_item,warnings:p.value.warnings}),c.totals[S]+=1}else c.streams.push({id:v,outcome:"failed",error:p.reason instanceof Error?p.reason.message:String(p.reason)}),c.totals.failed+=1});let l=0;!n&&c.totals.failed===0&&(await Promise.all(r.map(p=>_e(process.cwd(),p))),l=r.length);let m=await we({checkHistoryDrift:!0,checkStorageIntegrity:!0},t),f=m.checks.every(p=>p.status==="ok"),h=c.totals.failed===0&&f,y=n?["Review repair.streams, then rerun pm merge reconcile without --dry-run to apply audited repairs.","No Git hook is installed automatically; invoke this command from an explicit post-merge hook only when your repository policy opts in."]:h?["Reconciliation is complete; commit changed history streams with the merge result.","Rerun pm merge reconcile --dry-run after future tracker-data merges as a non-mutating integrity check."]:["Reconciliation remains incomplete; inspect repair failures and non-green validation checks before retrying.","Do not commit repaired history streams as reconciled until pm merge reconcile returns ok=true."];return{ok:h,dry_run:n,repair:c,receipts:{pending_before:r.length,reconciled:l,summaries:r.map($)},validation:m,guidance:y,generated_at:m.generated_at}}export{Re as a,ve as b,je as c,Me as d,Ee as e,Oe as f,Ce as g,Et as h,Q as i,Gt as j,Te as k,Qt as l};
|
|
5
|
-
//# sourceMappingURL=chunk-6MLIRBLV.js.map
|